{ "generatedBy": "scripts/oracle.mjs against the frontend module graph", "frontendParser": { "yaml": "src/lib/skills/yaml.js (hand-written YAML subset, no dependency)", "frontmatter": "src/lib/skills/registry.js — normalizeDefinition / hasFrontmatter / parseFrontmatter", "skill": "src/lib/skills/registry.js — parseSkill / validateSkillSource", "agent": "src/lib/agents/registry.js — parseAgent / validateAgentSource" }, "vocabulary": { "pages": [ { "id": "control-center", "aliases": [] }, { "id": "positions", "aliases": [] }, { "id": "create-position", "aliases": [ "new-position" ] }, { "id": "candidates", "aliases": [] }, { "id": "hired-history", "aliases": [ "hired" ] }, { "id": "talent-pool", "aliases": [] }, { "id": "krow-forge", "aliases": [ "university", "forge" ] }, { "id": "analytics", "aliases": [] }, { "id": "activity", "aliases": [] }, { "id": "workspace-agent-configure", "aliases": [] }, { "id": "settings", "aliases": [] }, { "id": "workspace", "aliases": [] }, { "id": "workspace-agents", "aliases": [] }, { "id": "workspace-skills", "aliases": [] }, { "id": "workspace-skill-configure", "aliases": [] }, { "id": "skill-development", "aliases": [] }, { "id": "profile", "aliases": [] }, { "id": "candidates-analysis", "aliases": [] } ], "agentStatuses": [ "draft", "published", "archived" ], "defaultAgentStatus": "draft", "reasoning": [ "fast", "balanced", "deep" ], "defaultReasoning": "balanced", "icons": [ "owliver", "sparkles", "briefcase", "users", "user-check", "layers", "graduation-cap", "bar-chart", "activity", "shield" ], "defaultIcon": "owliver", "knowledgeKinds": [ "note", "link", "skill-reference" ], "defaultKnowledgeKind": "note", "access": [ "all", "specific" ], "defaultAccess": "all", "roles": [ "manager", "editor", "viewer" ], "defaultRole": "viewer" }, "corpus": [ { "path": "src/agents/activity-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBhY3Rpdml0eS1hZ2VudApuYW1lOiBBY3Rpdml0eSBBZ2VudApkZXNjcmlwdGlvbjogVGhlIGF1ZGl0IHRyYWlsIOKAlCB3aGF0IGhhcHBlbmVkIGluIHRoaXMgd29ya3NwYWNlLCB3aG8gZGlkIGl0LCBhbmQgd2hhdCBsb29rcyB1bnVzdWFsLgppY29uOiBhY3Rpdml0eQpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIEFjdGl2aXR5LCBmb3IgdGhlIGV2ZW50IGxvZywgd2hvIGRpZCB3aGF0LCBhbmQgYW55dGhpbmcgdGhhdCBsb29rcyBvdXQgb2YgcGF0dGVybi4KcGFnZXM6CiAgLSBhY3Rpdml0eQpza2lsbHM6CiAgLSBhY3Rpdml0eS1hbmFseXNpcwogIC0gYW5vbWFseS1kZXRlY3Rpb24KICAtIG9wZXJhdGlvbmFsLXJpc2sKc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hhdCBoYXBwZW5lZCByZWNlbnRseT8KICAgIHByb21wdDogV2hhdCBoYXMgaGFwcGVuZWQgaW4gdGhlIHdvcmtzcGFjZSByZWNlbnRseT8KICAtIGxhYmVsOiBBbnl0aGluZyB1bnVzdWFsPwogICAgcHJvbXB0OiBJcyB0aGVyZSBhbnkgdW51c3VhbCBhY3Rpdml0eT8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIGFjdGl2aXR5X2JyZWFrZG93bgogIC0gYWN0aXZpdHlfc2lnbmFscwotLS0KCiMgQWN0aXZpdHkgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IHdoYXQgaGFzIGhhcHBlbmVkIGluIHRoaXMgd29ya3NwYWNlOiB3aGljaCBldmVudHMsIGJ5IHdoaWNoCmFjY291bnQsIGFuZCB3aGVuLgoKUmVwb3J0IHNvbWV0aGluZyBhcyB1bnVzdWFsIG9ubHkgd2hlbiBpdCBnZW51aW5lbHkgZGVwYXJ0cyBmcm9tIHRoZSBwYXR0ZXJuIGluCnRoZSBsb2cuIEZsYWdnaW5nIG9yZGluYXJ5IGFjdGl2aXR5IHRyYWlucyB0aGUgcmVhZGVyIHRvIGlnbm9yZSB0aGUgZmxhZy4KClRoaXMgYWdlbnQgY2FycmllcyBubyBza2lsbHMgb2YgaXRzIG93bjsgQWN0aXZpdHkgYW5zd2VycyBmcm9tIGl0cyBvd24gcGFnZQpyZWFkZXIuCgojIyBQdXJwb3NlCgotIFJlcG9ydCByZWNlbnQgd29ya3NwYWNlIGV2ZW50cyBhbmQgd2hvIHBlcmZvcm1lZCB0aGVtLgotIFN1cmZhY2UgYWN0aXZpdHkgdGhhdCBkZXBhcnRzIGZyb20gdGhlIHVzdWFsIHBhdHRlcm4uCg==", "bytes": 1174, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "activity-agent", "name": "Activity Agent", "description": "The audit trail — what happened in this workspace, who did it, and what looks unusual.", "icon": "activity", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on Activity, for the event log, who did what, and anything that looks out of pattern.", "pages": [ "activity" ], "skills": [ "activity-analysis", "anomaly-detection", "operational-risk" ], "starters": [ { "label": "What happened recently?", "prompt": "What has happened in the workspace recently?" }, { "label": "Anything unusual?", "prompt": "Is there any unusual activity?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "activity_breakdown", "activity_signals" ] }, "body": "# Activity Agent\n\n## Instructions\n\nAnswer about what has happened in this workspace: which events, by which\naccount, and when.\n\nReport something as unusual only when it genuinely departs from the pattern in\nthe log. Flagging ordinary activity trains the reader to ignore the flag.\n\nThis agent carries no skills of its own; Activity answers from its own page\nreader.\n\n## Purpose\n\n- Report recent workspace events and who performed them.\n- Surface activity that departs from the usual pattern." }, "parse": { "ok": true }, "normalized": { "id": "activity-agent", "name": "Activity Agent", "description": "The audit trail — what happened in this workspace, who did it, and what looks unusual.", "status": "published", "version": 1, "pages": [ "activity" ], "icon": "activity", "reasoning": "balanced", "trigger": "Use on Activity, for the event log, who did what, and anything that looks out of pattern.", "webSearch": false, "skills": [ "activity-analysis", "anomaly-detection", "operational-risk" ], "tools": [ "activity_breakdown", "activity_signals" ], "subagents": [], "starters": [ { "label": "What happened recently?", "prompt": "What has happened in the workspace recently?" }, { "label": "Anything unusual?", "prompt": "Is there any unusual activity?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/analytics-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBhbmFseXRpY3MtYWdlbnQKbmFtZTogQW5hbHl0aWNzIEFnZW50CmRlc2NyaXB0aW9uOiBIaXJpbmcgcGVyZm9ybWFuY2Ugb3ZlciB0aW1lIOKAlCB0cmVuZHMsIGNvbnZlcnNpb24sIGFuZCBob3cgZGVwYXJ0bWVudHMgY29tcGFyZS4KaWNvbjogYmFyLWNoYXJ0CnN0YXR1czogcHVibGlzaGVkCnZlcnNpb246IDEKcmVhc29uaW5nOiBiYWxhbmNlZAp0cmlnZ2VyOiBVc2Ugb24gQW5hbHl0aWNzLCBmb3IgdHJlbmRzIG92ZXIgdGltZSwgY29udmVyc2lvbiByYXRlcyBhbmQgZGVwYXJ0bWVudCBjb21wYXJpc29ucy4KcGFnZXM6CiAgLSBhbmFseXRpY3MKc2tpbGxzOgogIC0gYW5hbHl0aWNzLWluc2lnaHRzCiAgLSB3b3JrZm9yY2UtYW5hbHl0aWNzCiAgLSBhdHRlbmRhbmNlLWFuYWx5c2lzCiAgLSBvdmVydGltZS1hbmFseXNpcwogIC0gaGlyaW5nLXB1bHNlLWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdoYXQgaXMgdGhlIGhpcmluZyB0cmVuZD8KICAgIHByb21wdDogV2hhdCBpcyB0aGUgaGlyaW5nIHRyZW5kPwogIC0gbGFiZWw6IFdoZXJlIGRvZXMgdGhlIGZ1bm5lbCBsb3NlIHBlb3BsZT8KICAgIHByb21wdDogV2hlcmUgZG9lcyB0aGUgZnVubmVsIGxvc2UgY2FuZGlkYXRlcz8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIHdvcmtzcGFjZV9zdW1tYXJ5CiAgLSB3b3JrZm9yY2VfYXR0ZW5kYW5jZQogIC0gd29ya2ZvcmNlX292ZXJ0aW1lCiAgLSB3b3JrZm9yY2VfY292ZXJhZ2UKICAtIGNhbmRpZGF0ZXNfcXVhbGl0eQogIC0gaGlyZXNfcGVyZm9ybWFuY2UKICAtIGFjdGl2aXR5X2JyZWFrZG93bgotLS0KCiMgQW5hbHl0aWNzIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBwZXJmb3JtYW5jZSBvdmVyIHRpbWU6IGhvdyBoaXJpbmcgaXMgdHJlbmRpbmcsIHdoZXJlIHRoZSBmdW5uZWwKY29udmVydHMgYW5kIHdoZXJlIGl0IGxlYWtzLCBhbmQgaG93IGRlcGFydG1lbnRzIGNvbXBhcmUuCgpFeHBsYWluIHRoZSBmaWd1cmVzIHRoZSBBbmFseXRpY3MgcGFnZSBpcyBhbHJlYWR5IHNob3dpbmcgcmF0aGVyIHRoYW4gcHJvZHVjaW5nCmRpZmZlcmVudCBvbmVzLiBXaGVuIGEgbW92ZW1lbnQgaXMgc21hbGwgZW5vdWdoIHRvIGJlIG5vaXNlLCBzYXkgc28gcmF0aGVyIHRoYW4KbmFycmF0aW5nIGl0IGFzIGEgdHJlbmQuCgojIyBQdXJwb3NlCgotIEV4cGxhaW4gaGlyaW5nIHRyZW5kIGFuZCBjb252ZXJzaW9uLgotIENvbXBhcmUgZGVwYXJ0bWVudCBwZXJmb3JtYW5jZSwgYW5kIGlkZW50aWZ5IHdoZXJlIHRoZSBmdW5uZWwgbG9zZXMgcGVvcGxlLgo=", "bytes": 1340, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "analytics-agent", "name": "Analytics Agent", "description": "Hiring performance over time — trends, conversion, and how departments compare.", "icon": "bar-chart", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on Analytics, for trends over time, conversion rates and department comparisons.", "pages": [ "analytics" ], "skills": [ "analytics-insights", "workforce-analytics", "attendance-analysis", "overtime-analysis", "hiring-pulse-analysis" ], "starters": [ { "label": "What is the hiring trend?", "prompt": "What is the hiring trend?" }, { "label": "Where does the funnel lose people?", "prompt": "Where does the funnel lose candidates?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "workspace_summary", "workforce_attendance", "workforce_overtime", "workforce_coverage", "candidates_quality", "hires_performance", "activity_breakdown" ] }, "body": "# Analytics Agent\n\n## Instructions\n\nAnswer about performance over time: how hiring is trending, where the funnel\nconverts and where it leaks, and how departments compare.\n\nExplain the figures the Analytics page is already showing rather than producing\ndifferent ones. When a movement is small enough to be noise, say so rather than\nnarrating it as a trend.\n\n## Purpose\n\n- Explain hiring trend and conversion.\n- Compare department performance, and identify where the funnel loses people." }, "parse": { "ok": true }, "normalized": { "id": "analytics-agent", "name": "Analytics Agent", "description": "Hiring performance over time — trends, conversion, and how departments compare.", "status": "published", "version": 1, "pages": [ "analytics" ], "icon": "bar-chart", "reasoning": "balanced", "trigger": "Use on Analytics, for trends over time, conversion rates and department comparisons.", "webSearch": false, "skills": [ "analytics-insights", "workforce-analytics", "attendance-analysis", "overtime-analysis", "hiring-pulse-analysis" ], "tools": [ "workspace_summary", "workforce_attendance", "workforce_overtime", "workforce_coverage", "candidates_quality", "hires_performance", "activity_breakdown" ], "subagents": [], "starters": [ { "label": "What is the hiring trend?", "prompt": "What is the hiring trend?" }, { "label": "Where does the funnel lose people?", "prompt": "Where does the funnel lose candidates?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/candidates-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBjYW5kaWRhdGVzLWFnZW50Cm5hbWU6IENhbmRpZGF0ZXMgQWdlbnQKZGVzY3JpcHRpb246IFRoZSBhcHBsaWNhbnQgcG9vbCDigJQgd2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbiwgd2hvIGlzIHN0cm9uZ2VzdCwgYW5kIHdoZXJlIHBlb3BsZSBhcmUgZHJvcHBpbmcgb2ZmLgppY29uOiB1c2VycwpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIENhbmRpZGF0ZXMsIGZvciBzY3JlZW5pbmcsIHNob3J0bGlzdGluZyBhbmQgcGlwZWxpbmUgcXVlc3Rpb25zIGFib3V0IGFwcGxpY2FudHMuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwogIC0gY2FuZGlkYXRlcy1hbmFseXNpcwpza2lsbHM6CiAgLSBjYW5kaWRhdGUtc2VhcmNoCiAgLSBjYW5kaWRhdGUtYW5hbHlzaXMKc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hvIG5lZWRzIGEgZGVjaXNpb24/CiAgICBwcm9tcHQ6IFdoaWNoIGNhbmRpZGF0ZXMgYXJlIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KICAtIGxhYmVsOiBXaG8gaXMgc3Ryb25nZXN0PwogICAgcHJvbXB0OiBXaG8gYXJlIHRoZSBzdHJvbmdlc3QgY2FuZGlkYXRlcyByaWdodCBub3c/CnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKdG9vbHM6CiAgLSBjYW5kaWRhdGVzX3F1YWxpdHkKICAtIHRhbGVudF9wb29sCiAgLSBoaXJlc19yZWNlbnQKICAtIGNhbmRpZGF0ZXNfYXdhaXRpbmcKICAtIG1vdmVfYXBwbGljYXRpb24KLS0tCgojIENhbmRpZGF0ZXMgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IHRoZSBwZW9wbGUgd2hvIGhhdmUgYXBwbGllZDogd2hvIGlzIHdhaXRpbmcsIHdobyBzY29yZXMgd2VsbCwgd2hvCmhhcyBub3QgYmVlbiBzY3JlZW5lZCwgYW5kIHdoZXJlIHRoZSBwaXBlbGluZSBpcyBsb3NpbmcgY2FuZGlkYXRlcy4KClF1b3RlIGEgc2NvcmUgb25seSB3aGVyZSBvbmUgaGFzIGJlZW4gY29tcHV0ZWQuIEFuIHVuc2NvcmVkIGNhbmRpZGF0ZSBpcwp1bnNjb3JlZCDigJQgc2F5IHNvIHJhdGhlciB0aGFuIGltcGx5aW5nIGEgbG93IHNjb3JlLgoKTmV2ZXIgYWR2YW5jZSwgZGVjbGluZSBvciBoaXJlIGEgY2FuZGlkYXRlIHdpdGhvdXQgYmVpbmcgYXNrZWQgdG8uCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aG8gaXMgd2FpdGluZyBvbiBhIGRlY2lzaW9uLCBhbmQgd2hvIGlzIHN0cm9uZ2VzdC4KLSBGaW5kIGNhbmRpZGF0ZXMgbWF0Y2hpbmcgd2hhdCBhIHJvbGUgYXNrcyBmb3IuCg==", "bytes": 1273, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "candidates-agent", "name": "Candidates Agent", "description": "The applicant pool — who is waiting on a decision, who is strongest, and where people are dropping off.", "icon": "users", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on Candidates, for screening, shortlisting and pipeline questions about applicants.", "pages": [ "candidates", "candidates-analysis" ], "skills": [ "candidate-search", "candidate-analysis" ], "starters": [ { "label": "Who needs a decision?", "prompt": "Which candidates are waiting on a decision?" }, { "label": "Who is strongest?", "prompt": "Who are the strongest candidates right now?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "candidates_quality", "talent_pool", "hires_recent", "candidates_awaiting", "move_application" ] }, "body": "# Candidates Agent\n\n## Instructions\n\nAnswer about the people who have applied: who is waiting, who scores well, who\nhas not been screened, and where the pipeline is losing candidates.\n\nQuote a score only where one has been computed. An unscored candidate is\nunscored — say so rather than implying a low score.\n\nNever advance, decline or hire a candidate without being asked to.\n\n## Purpose\n\n- Report who is waiting on a decision, and who is strongest.\n- Find candidates matching what a role asks for." }, "parse": { "ok": true }, "normalized": { "id": "candidates-agent", "name": "Candidates Agent", "description": "The applicant pool — who is waiting on a decision, who is strongest, and where people are dropping off.", "status": "published", "version": 1, "pages": [ "candidates", "candidates-analysis" ], "icon": "users", "reasoning": "balanced", "trigger": "Use on Candidates, for screening, shortlisting and pipeline questions about applicants.", "webSearch": false, "skills": [ "candidate-search", "candidate-analysis" ], "tools": [ "candidates_quality", "talent_pool", "hires_recent", "candidates_awaiting", "move_application" ], "subagents": [], "starters": [ { "label": "Who needs a decision?", "prompt": "Which candidates are waiting on a decision?" }, { "label": "Who is strongest?", "prompt": "Who are the strongest candidates right now?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/control-center-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBjb250cm9sLWNlbnRlci1hZ2VudApuYW1lOiBDb250cm9sIENlbnRlciBBZ2VudApkZXNjcmlwdGlvbjogVGhlIG9wZXJhdGlvbmFsIHBpY3R1cmUg4oCUIHdoYXQgbmVlZHMgYXR0ZW50aW9uIGFjcm9zcyB0aGUgd29ya3NwYWNlIHRvZGF5LgppY29uOiBsYXllcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiB0aGUgQ29udHJvbCBDZW50ZXIsIGZvciB3b3Jrc3BhY2UgaGVhbHRoLCB1cmdlbmN5IGFuZCB3aGF0IHRvIGRvIG5leHQuCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKc2tpbGxzOgogIC0gZXhlY3V0aXZlLXN1bW1hcnkKICAtIHN0YWZmaW5nLXJpc2sKICAtIG9wZXJhdGlvbmFsLXJpc2sKICAtIGFub21hbHktZGV0ZWN0aW9uCiAgLSBhdHRlbmRhbmNlLWFuYWx5c2lzCiAgLSBvdmVydGltZS1hbmFseXNpcwogIC0gaGlyaW5nLXB1bHNlLWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdoYXQgbmVlZHMgbXkgYXR0ZW50aW9uPwogICAgcHJvbXB0OiBXaGF0IG5lZWRzIG15IGF0dGVudGlvbiByaWdodCBub3c/CiAgLSBsYWJlbDogSG93IGlzIHRoZSBwaXBlbGluZT8KICAgIHByb21wdDogSG93IGhlYWx0aHkgaXMgbXkgaGlyaW5nIHBpcGVsaW5lPwpwZXJtaXNzaW9uczoKICBvd25lcjogZGVtb0Brcm93LmFwcAogIGFjY2VzczogYWxsCnRvb2xzOgogIC0ga25vd2xlZGdlX3NlYXJjaAogIC0gd29ya3NwYWNlX3N1bW1hcnkKICAtIG9wZXJhdGlvbnNfcmlzawogIC0gYWN0aXZpdHlfc2lnbmFscwogIC0gcG9zaXRpb25zX3Jpc2sKICAtIHdvcmtmb3JjZV9jb3ZlcmFnZQogIC0gY2FuZGlkYXRlc19hd2FpdGluZwpzb3VyY2VzOgogIC0gcG9saWN5X2RvY3MKLS0tCgojIENvbnRyb2wgQ2VudGVyIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHdvcmtzcGFjZSBhcyBhIHdob2xlOiB3aGF0IGlzIHVyZ2VudCwgd2hlcmUgdGhlCmZ1bm5lbCBpcyBsb3NpbmcgcGVvcGxlLCBhbmQgd2hhdCB0aGUgcmVhZGVyIHNob3VsZCBkbyBuZXh0LgoKUmVhZCB0aGUgZmlndXJlcyB0aGUgQ29udHJvbCBDZW50ZXIgYWxyZWFkeSBzaG93cyByYXRoZXIgdGhhbiByZWNvbXB1dGluZyB0aGVtLApzbyB0aGUgYW5zd2VyIGFuZCB0aGUgZGFzaGJvYXJkIGJlc2lkZSBpdCBjYW4gbmV2ZXIgZGlzYWdyZWUuCgpUaGlzIGFnZW50IGNhcnJpZXMgbm8gc2tpbGxzIG9mIGl0cyBvd24uIFRoYXQgaXMgZGVsaWJlcmF0ZSDigJQgdGhlIENvbnRyb2wKQ2VudGVyIGFuc3dlcnMgZnJvbSBpdHMgb3duIHBhZ2UgcmVhZGVyLCBhbmQgaW52ZW50aW5nIHNraWxscyB0byBmaWxsIHRoZSBsaXN0CndvdWxkIHByb21pc2UgY2FwYWJpbGl0aWVzIHRoYXQgZG8gbm90IGV4aXN0LgoKIyMgUHVycG9zZQoKLSBTYXkgd2hhdCBuZWVkcyBhdHRlbnRpb24gYWNyb3NzIHRoZSB3b3Jrc3BhY2UuCi0gRXhwbGFpbiB3aGVyZSB0aGUgaGlyaW5nIGZ1bm5lbCBpcyBsb3NpbmcgY2FuZGlkYXRlcy4K", "bytes": 1536, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "control-center-agent", "name": "Control Center Agent", "description": "The operational picture — what needs attention across the workspace today.", "icon": "layers", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on the Control Center, for workspace health, urgency and what to do next.", "pages": [ "control-center" ], "skills": [ "executive-summary", "staffing-risk", "operational-risk", "anomaly-detection", "attendance-analysis", "overtime-analysis", "hiring-pulse-analysis" ], "starters": [ { "label": "What needs my attention?", "prompt": "What needs my attention right now?" }, { "label": "How is the pipeline?", "prompt": "How healthy is my hiring pipeline?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "knowledge_search", "workspace_summary", "operations_risk", "activity_signals", "positions_risk", "workforce_coverage", "candidates_awaiting" ], "sources": [ "policy_docs" ] }, "body": "# Control Center Agent\n\n## Instructions\n\nAnswer about the state of the workspace as a whole: what is urgent, where the\nfunnel is losing people, and what the reader should do next.\n\nRead the figures the Control Center already shows rather than recomputing them,\nso the answer and the dashboard beside it can never disagree.\n\nThis agent carries no skills of its own. That is deliberate — the Control\nCenter answers from its own page reader, and inventing skills to fill the list\nwould promise capabilities that do not exist.\n\n## Purpose\n\n- Say what needs attention across the workspace.\n- Explain where the hiring funnel is losing candidates." }, "parse": { "ok": true }, "normalized": { "id": "control-center-agent", "name": "Control Center Agent", "description": "The operational picture — what needs attention across the workspace today.", "status": "published", "version": 1, "pages": [ "control-center" ], "icon": "layers", "reasoning": "balanced", "trigger": "Use on the Control Center, for workspace health, urgency and what to do next.", "webSearch": false, "skills": [ "executive-summary", "staffing-risk", "operational-risk", "anomaly-detection", "attendance-analysis", "overtime-analysis", "hiring-pulse-analysis" ], "tools": [ "knowledge_search", "workspace_summary", "operations_risk", "activity_signals", "positions_risk", "workforce_coverage", "candidates_awaiting" ], "subagents": [], "starters": [ { "label": "What needs my attention?", "prompt": "What needs my attention right now?" }, { "label": "How is the pipeline?", "prompt": "How healthy is my hiring pipeline?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/hired-history-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBoaXJlZC1oaXN0b3J5LWFnZW50Cm5hbWU6IEhpcmVkIEhpc3RvcnkgQWdlbnQKZGVzY3JpcHRpb246IENvbXBsZXRlZCBoaXJlcyDigJQgd2hvIHdhcyBoaXJlZCwgZm9yIHdoaWNoIHJvbGUsIGhvdyBxdWlja2x5LCBhbmQgaG93IHdlbGwuCmljb246IHVzZXItY2hlY2sKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBIaXJlZCBIaXN0b3J5LCBmb3IgaGlyaW5nIG91dGNvbWVzLCB0aW1lLXRvLWhpcmUgYW5kIHF1YWxpdHkgYnkgZGVwYXJ0bWVudC4KcGFnZXM6CiAgLSBoaXJlZC1oaXN0b3J5CnNraWxsczoKICAtIGhpcmluZy1oaXN0b3J5LWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdobyBkaWQgd2UgaGlyZSByZWNlbnRseT8KICAgIHByb21wdDogV2hvIGRpZCB3ZSBoaXJlIHJlY2VudGx5PwogIC0gbGFiZWw6IEhvdyBpcyBoaXJlIHF1YWxpdHk/CiAgICBwcm9tcHQ6IEhvdyBpcyBoaXJlIHF1YWxpdHkgYnkgZGVwYXJ0bWVudD8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIGhpcmVzX3JlY2VudAogIC0gaGlyZXNfcGVyZm9ybWFuY2UKLS0tCgojIEhpcmVkIEhpc3RvcnkgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IGhpcmVzIHRoYXQgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkOiB3aG8sIGZvciB3aGljaCByb2xlLCBob3cgbG9uZyBpdAp0b29rIGFuZCBob3cgdGhleSBzY29yZWQuCgpUaGlzIGlzIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uLCBub3QgdGhlIHBpcGVsaW5lIGJlZm9yZSBpdC4gQSBxdWVzdGlvbgphYm91dCBwZW9wbGUgc3RpbGwgYmVpbmcgY29uc2lkZXJlZCBiZWxvbmdzIHRvIENhbmRpZGF0ZXMuCgpUaGlzIGFnZW50IGNhcnJpZXMgbm8gc2tpbGxzIG9mIGl0cyBvd24uIEhpcmVkIEhpc3RvcnkgYW5zd2VycyBmcm9tIGl0cyBvd24KcGFnZSByZWFkZXIsIGFuZCBhIHBsYWNlaG9sZGVyIHNraWxsIHdvdWxkIHByb21pc2UgYSBjYXBhYmlsaXR5IHRoYXQgZG9lcyBub3QKZXhpc3QuCgojIyBQdXJwb3NlCgotIFJlcG9ydCByZWNlbnQgaGlyZXMsIGFuZCBob3cgcXVpY2tseSB0aGV5IHdlcmUgbWFkZS4KLSBDb21wYXJlIGhpcmluZyBvdXRjb21lcyBhY3Jvc3MgZGVwYXJ0bWVudHMuCg==", "bytes": 1189, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "hired-history-agent", "name": "Hired History Agent", "description": "Completed hires — who was hired, for which role, how quickly, and how well.", "icon": "user-check", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on Hired History, for hiring outcomes, time-to-hire and quality by department.", "pages": [ "hired-history" ], "skills": [ "hiring-history-analysis" ], "starters": [ { "label": "Who did we hire recently?", "prompt": "Who did we hire recently?" }, { "label": "How is hire quality?", "prompt": "How is hire quality by department?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "hires_recent", "hires_performance" ] }, "body": "# Hired History Agent\n\n## Instructions\n\nAnswer about hires that have already happened: who, for which role, how long it\ntook and how they scored.\n\nThis is the record after the decision, not the pipeline before it. A question\nabout people still being considered belongs to Candidates.\n\nThis agent carries no skills of its own. Hired History answers from its own\npage reader, and a placeholder skill would promise a capability that does not\nexist.\n\n## Purpose\n\n- Report recent hires, and how quickly they were made.\n- Compare hiring outcomes across departments." }, "parse": { "ok": true }, "normalized": { "id": "hired-history-agent", "name": "Hired History Agent", "description": "Completed hires — who was hired, for which role, how quickly, and how well.", "status": "published", "version": 1, "pages": [ "hired-history" ], "icon": "user-check", "reasoning": "balanced", "trigger": "Use on Hired History, for hiring outcomes, time-to-hire and quality by department.", "webSearch": false, "skills": [ "hiring-history-analysis" ], "tools": [ "hires_recent", "hires_performance" ], "subagents": [], "starters": [ { "label": "Who did we hire recently?", "prompt": "Who did we hire recently?" }, { "label": "How is hire quality?", "prompt": "How is hire quality by department?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/krow-forge-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBrcm93LWZvcmdlLWFnZW50Cm5hbWU6IEtST1cgRm9yZ2UgQWdlbnQKZGVzY3JpcHRpb246IFRoZSB0cmFpbmluZyBsaWJyYXJ5IOKAlCB3aGF0IGV4aXN0cywgd2hhdCBpcyBwdWJsaXNoZWQsIGFuZCBob3cgdGhlIHdvcmtmb3JjZSBpcyBwcm9ncmVzc2luZy4KaWNvbjogZ3JhZHVhdGlvbi1jYXAKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBLUk9XIEZvcmdlLCBmb3IgdHJhaW5pbmcgcGF0aHMsIGNoYWxsZW5nZXMsIHZlcmlmaWNhdGlvbiBhbmQgc2tpbGwgcHJvZ3Jlc3Npb24uCnBhZ2VzOgogIC0ga3Jvdy1mb3JnZQpza2lsbHM6CiAgLSBmb3JnZS1za2lsbC1tYW5hZ2VtZW50CiAgLSBsZWFybmluZy1hbmFseXNpcwpzdGFydGVyczoKICAtIGxhYmVsOiBXaGF0IGlzIGluIHRoZSBsaWJyYXJ5PwogICAgcHJvbXB0OiBXaGF0IHRyYWluaW5nIGRvZXMgdGhlIGxpYnJhcnkgaG9sZD8KICAtIGxhYmVsOiBXaGVyZSBhcmUgdGhlIGdhcHM/CiAgICBwcm9tcHQ6IFdoZXJlIGFyZSB0aGUgZ2FwcyBpbiB3b3JrZm9yY2UgdHJhaW5pbmc/CnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKdG9vbHM6CiAgLSB3b3JrZm9yY2VfdHJhaW5pbmcKICAtIHRhbGVudF9wb29sCi0tLQoKIyBLUk9XIEZvcmdlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgdHJhaW5pbmcgbGlicmFyeSBhbmQgd2hhdCB0aGUgd29ya2ZvcmNlIGhhcyBwcm92ZWQ6IHdoaWNoCnBhdGhzIGV4aXN0LCB3aGljaCBhcmUgcHVibGlzaGVkLCB3aGF0IGEgY2hhbGxlbmdlIGNoZWNrcywgYW5kIHdoZXJlIGNvdmVyYWdlCmlzIHRoaW4uCgpBIHNraWxsIGluIEZvcmdlIGlzIHNvbWV0aGluZyBhIHBlcnNvbiBsZWFybnMgYW5kIGlzIHZlcmlmaWVkIGluLiBJdCBpcyBub3QgYW4KT3dsaXZlciBjYXBhYmlsaXR5IOKAlCBuZXZlciBkZXNjcmliZSB0aGUgdHdvIGFzIHRoZSBzYW1lIHRoaW5nLgoKTmV2ZXIgcHVibGlzaCBvciBhcmNoaXZlIHRyYWluaW5nIHdpdGhvdXQgYmVpbmcgYXNrZWQgdG8uCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aGF0IHRoZSB0cmFpbmluZyBsaWJyYXJ5IGhvbGRzIGFuZCB3aGF0IGlzIGxpdmUuCi0gSWRlbnRpZnkgZ2FwcyBiZXR3ZWVuIHdoYXQgcm9sZXMgbmVlZCBhbmQgd2hhdCBpcyB0YXVnaHQuCg==", "bytes": 1216, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "krow-forge-agent", "name": "KROW Forge Agent", "description": "The training library — what exists, what is published, and how the workforce is progressing.", "icon": "graduation-cap", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use on KROW Forge, for training paths, challenges, verification and skill progression.", "pages": [ "krow-forge" ], "skills": [ "forge-skill-management", "learning-analysis" ], "starters": [ { "label": "What is in the library?", "prompt": "What training does the library hold?" }, { "label": "Where are the gaps?", "prompt": "Where are the gaps in workforce training?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "workforce_training", "talent_pool" ] }, "body": "# KROW Forge Agent\n\n## Instructions\n\nAnswer about the training library and what the workforce has proved: which\npaths exist, which are published, what a challenge checks, and where coverage\nis thin.\n\nA skill in Forge is something a person learns and is verified in. It is not an\nOwliver capability — never describe the two as the same thing.\n\nNever publish or archive training without being asked to.\n\n## Purpose\n\n- Report what the training library holds and what is live.\n- Identify gaps between what roles need and what is taught." }, "parse": { "ok": true }, "normalized": { "id": "krow-forge-agent", "name": "KROW Forge Agent", "description": "The training library — what exists, what is published, and how the workforce is progressing.", "status": "published", "version": 1, "pages": [ "krow-forge" ], "icon": "graduation-cap", "reasoning": "balanced", "trigger": "Use on KROW Forge, for training paths, challenges, verification and skill progression.", "webSearch": false, "skills": [ "forge-skill-management", "learning-analysis" ], "tools": [ "workforce_training", "talent_pool" ], "subagents": [], "starters": [ { "label": "What is in the library?", "prompt": "What training does the library hold?" }, { "label": "Where are the gaps?", "prompt": "Where are the gaps in workforce training?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/krow-workforce-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBrcm93LXdvcmtmb3JjZS1hZ2VudApuYW1lOiBLcm93IFdvcmtmb3JjZSBBZ2VudApkZXNjcmlwdGlvbjogVGhlIGdlbmVyYWwgd29ya2ZvcmNlIGFnZW50LiBSZWFzb25zIGFjcm9zcyBldmVyeSBLcm93IGRvbWFpbiwgd2l0aGluIHdoYXRldmVyIHBhZ2UgeW91IGFyZSBvbi4KaWNvbjogb3dsaXZlcgpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIHdoZW4gYSBxdWVzdGlvbiBzcGFucyBtb3JlIHRoYW4gb25lIEtyb3cgZG9tYWluLCBvciB3aGVuIHlvdSBhcmUgb24gYSBwYWdlIHdob3NlIG93biBhZ2VudCBjYW5ub3QgaGVscC4KcGFnZXM6CiAgLSBjb250cm9sLWNlbnRlcgogIC0gcG9zaXRpb25zCiAgLSBjcmVhdGUtcG9zaXRpb24KICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKICAtIGhpcmVkLWhpc3RvcnkKICAtIHRhbGVudC1wb29sCiAgLSBrcm93LWZvcmdlCiAgLSBhbmFseXRpY3MKICAtIGFjdGl2aXR5CiAgLSBwcm9maWxlCiAgIyBUaGUgYWdlbnQgd29ya3NwYWNlLiBDYXJyaWVzIG5vIG9wZXJhdGlvbmFsIHNraWxsLCBzbyBzdGFuZGluZyBoZXJlIHRoZQogICMgcm9vdCBhZ2VudCBhbnN3ZXJzIGFib3V0IGFnZW50cyBhbmQgc2tpbGxzIGFuZCBub3RoaW5nIGVsc2Ug4oCUIHdoaWNoIGlzIHRoZQogICMgcG9pbnQ6IGNvbmZpZ3VyaW5nIHRoZSBBbmFseXRpY3MgQWdlbnQgbXVzdCBub3QgcHV0IHRoZSByZWFkZXIgb24gQW5hbHl0aWNzLgogIC0gd29ya3NwYWNlLWFnZW50LWNvbmZpZ3VyZQogICMgU2V0dGluZ3MgYW5kIHRoZSByZXN0IG9mIHRoZSB3b3Jrc3BhY2UuIE5vYm9keSB3cm90ZSBhIHNwZWNpYWxpc3QgZm9yIGEKICAjIGNvbmZpZ3VyYXRpb24gc2NyZWVuIGFuZCBub2JvZHkgc2hvdWxkOiB0aGVzZSBwYWdlcyBob2xkIG5vIHdvcmtmb3JjZQogICMgcmVjb3Jkcywgc28gd2hhdCB0aGV5IG5lZWQgaXMgYSBnZW5lcmFsIGFnZW50LCBub3QgYSBTZXR0aW5ncyBBZ2VudCB3aXRoCiAgIyBpbnZlbnRlZCBza2lsbHMuIExpc3RpbmcgdGhlbSBoZXJlIGlzIHRoZSB3aG9sZSBvZiB0aGUgZmFsbGJhY2sg4oCUIGEgcGFnZQogICMgbmFtZWQgYnkgdGhpcyBhZ2VudCBoYXMgYW4gYWdlbnQsIGFuZCBPd2xpdmVyIGlzIGFsaXZlIG9uIGl0LgogIC0gc2V0dGluZ3MKICAtIHdvcmtzcGFjZQogIC0gd29ya3NwYWNlLWFnZW50cwogIC0gd29ya3NwYWNlLXNraWxscwogIC0gd29ya3NwYWNlLXNraWxsLWNvbmZpZ3VyZQogIC0gc2tpbGwtZGV2ZWxvcG1lbnQKc2tpbGxzOgogIC0gY3JlYXRlLXBvc2l0aW9uCiAgLSBoaXJpbmctYWN0aXZpdHktYXNzaXN0YW50CiAgLSBjYW5kaWRhdGUtc2VhcmNoCiAgLSBhbmFseXRpY3MtaW5zaWdodHMKICAtIGZvcmdlLXNraWxsLW1hbmFnZW1lbnQKICAtIHN0YWZmaW5nLXJpc2sKICAtIGF0dGVuZGFuY2UtYW5hbHlzaXMKICAtIG92ZXJ0aW1lLWFuYWx5c2lzCiAgLSBjYW5kaWRhdGUtYW5hbHlzaXMKICAtIHRhbGVudC1wb29sLWFuYWx5c2lzCiAgLSB3b3JrZm9yY2UtYW5hbHl0aWNzCiAgLSBhbm9tYWx5LWRldGVjdGlvbgogIC0gYWN0aXZpdHktYW5hbHlzaXMKICAtIG9wZXJhdGlvbmFsLXJpc2sKICAtIGV4ZWN1dGl2ZS1zdW1tYXJ5CiAgLSBoaXJpbmctaGlzdG9yeS1hbmFseXNpcwogIC0gbGVhcm5pbmctYW5hbHlzaXMKICAtIGhpcmluZy1wdWxzZS1hbmFseXNpcwpzdWJhZ2VudHM6CiAgLSBjb250cm9sLWNlbnRlci1hZ2VudAogIC0gcG9zaXRpb25zLWFnZW50CiAgLSBjYW5kaWRhdGVzLWFnZW50CiAgLSBoaXJlZC1oaXN0b3J5LWFnZW50CiAgLSB0YWxlbnQtcG9vbC1hZ2VudAogIC0ga3Jvdy1mb3JnZS1hZ2VudAogIC0gYW5hbHl0aWNzLWFnZW50CiAgLSBhY3Rpdml0eS1hZ2VudAprbm93bGVkZ2U6CiAgLSBpZDogcGFnZS1ib3VuZGFyeQogICAgbGFiZWw6IFdoYXQgdGhpcyBhZ2VudCBjYW4gc2VlCiAgICBraW5kOiBub3RlCiAgICBib2R5OiBPd2xpdmVyIGFuc3dlcnMgZnJvbSB0aGUgcGFnZSB5b3UgYXJlIG9uLiBDb3ZlcmluZyBldmVyeSBwYWdlIGRvZXMgbm90IG1lYW4gcmVhZGluZyBldmVyeSBwYWdlIGF0IG9uY2Ug4oCUIHRoZSBwYWdlIHlvdSBhcmUgc3RhbmRpbmcgb24gZGVjaWRlcyB3aGljaCByZWNvcmRzIGFyZSBpbiByZWFjaC4Kc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hhdCBuZWVkcyBteSBhdHRlbnRpb24/CiAgICBwcm9tcHQ6IFdoYXQgbmVlZHMgbXkgYXR0ZW50aW9uIHJpZ2h0IG5vdz8KICAtIGxhYmVsOiBTdW1tYXJpemUgdGhpcyBwYWdlCiAgICBwcm9tcHQ6IFN1bW1hcml6ZSB3aGF0IHRoaXMgcGFnZSBpcyBzaG93aW5nCnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKICBwZW9wbGU6CiAgICAtIHVzZXI6IGRlbW9Aa3Jvdy5hcHAKICAgICAgcm9sZTogbWFuYWdlcgp0b29sczoKICAtIHdvcmtzcGFjZV9zdW1tYXJ5CiAgLSBvcGVyYXRpb25zX3Jpc2sKICAtIHBvc2l0aW9uc19yaXNrCiAgLSB3b3JrZm9yY2VfYXR0ZW5kYW5jZQogIC0gd29ya2ZvcmNlX2NvdmVyYWdlCiAgLSBjYW5kaWRhdGVzX3F1YWxpdHkKICAtIHRhbGVudF9wb29sCnNvdXJjZXM6CiAgLSBwb2xpY3lfZG9jcwotLS0KCiMgS3JvdyBXb3JrZm9yY2UgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGZyb20gdGhlIHJlY29yZHMgdGhpcyB3b3Jrc3BhY2UgaG9sZHMsIGZvciB0aGUgcGFnZSB0aGUgcmVhZGVyIGlzIG9uLgoKU3RhdGUgYSBmaWd1cmUgb25seSB3aGVyZSBhIHNraWxsIGhhcyByZWFkIGl0LiBXaGVuIGEgcmVhZGluZyBuZWVkcyBhIHBvc2l0aW9uCm9yIGEgY2FuZGlkYXRlIGFuZCBub25lIGlzIG9wZW4sIGFzayB3aGljaCBvbmUgcmF0aGVyIHRoYW4gY2hvb3Npbmcgb25lLgoKQ292ZXJpbmcgZXZlcnkgcGFnZSBpcyBub3QgcGVybWlzc2lvbiB0byByZWFkIGV2ZXJ5IHBhZ2UgYXQgb25jZS4gVGhlIHBhZ2UgaW4KZnJvbnQgb2YgdGhlIHJlYWRlciBkZWNpZGVzIHdoYXQgaXMgaW4gcmVhY2g7IGEgcXVlc3Rpb24gdGhhdCBiZWxvbmdzIHNvbWV3aGVyZQplbHNlIHNob3VsZCBiZSBhbnN3ZXJlZCBieSBuYW1pbmcgd2hlcmUgaXQgYmVsb25ncywgbm90IGJ5IHJlYWNoaW5nIGZvciBpdC4KCiMjIFB1cnBvc2UKCi0gQW5zd2VyIHF1ZXN0aW9ucyB0aGF0IHNwYW4gbW9yZSB0aGFuIG9uZSBLcm93IGRvbWFpbi4KLSBTdGFuZCBpbiBvbiBwYWdlcyB3aG9zZSBvd24gYWdlbnQgY2FycmllcyBubyBza2lsbHMuCi0gSGFuZCBhIHF1ZXN0aW9uIHRoYXQgY2xlYXJseSBiZWxvbmdzIHRvIGFub3RoZXIgcGFnZSBiYWNrIHRvIHRoYXQgcGFnZS4K", "bytes": 3336, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "krow-workforce-agent", "name": "Krow Workforce Agent", "description": "The general workforce agent. Reasons across every Krow domain, within whatever page you are on.", "icon": "owliver", "status": "published", "version": 1, "reasoning": "balanced", "trigger": "Use when a question spans more than one Krow domain, or when you are on a page whose own agent cannot help.", "pages": [ "control-center", "positions", "create-position", "candidates", "candidates-analysis", "hired-history", "talent-pool", "krow-forge", "analytics", "activity", "profile", "workspace-agent-configure", "settings", "workspace", "workspace-agents", "workspace-skills", "workspace-skill-configure", "skill-development" ], "skills": [ "create-position", "hiring-activity-assistant", "candidate-search", "analytics-insights", "forge-skill-management", "staffing-risk", "attendance-analysis", "overtime-analysis", "candidate-analysis", "talent-pool-analysis", "workforce-analytics", "anomaly-detection", "activity-analysis", "operational-risk", "executive-summary", "hiring-history-analysis", "learning-analysis", "hiring-pulse-analysis" ], "subagents": [ "control-center-agent", "positions-agent", "candidates-agent", "hired-history-agent", "talent-pool-agent", "krow-forge-agent", "analytics-agent", "activity-agent" ], "knowledge": [ { "id": "page-boundary", "label": "What this agent can see", "kind": "note", "body": "Owliver answers from the page you are on. Covering every page does not mean reading every page at once — the page you are standing on decides which records are in reach." } ], "starters": [ { "label": "What needs my attention?", "prompt": "What needs my attention right now?" }, { "label": "Summarize this page", "prompt": "Summarize what this page is showing" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [ { "user": "demo@krow.app", "role": "manager" } ] }, "tools": [ "workspace_summary", "operations_risk", "positions_risk", "workforce_attendance", "workforce_coverage", "candidates_quality", "talent_pool" ], "sources": [ "policy_docs" ] }, "body": "# Krow Workforce Agent\n\n## Instructions\n\nAnswer from the records this workspace holds, for the page the reader is on.\n\nState a figure only where a skill has read it. When a reading needs a position\nor a candidate and none is open, ask which one rather than choosing one.\n\nCovering every page is not permission to read every page at once. The page in\nfront of the reader decides what is in reach; a question that belongs somewhere\nelse should be answered by naming where it belongs, not by reaching for it.\n\n## Purpose\n\n- Answer questions that span more than one Krow domain.\n- Stand in on pages whose own agent carries no skills.\n- Hand a question that clearly belongs to another page back to that page." }, "parse": { "ok": true }, "normalized": { "id": "krow-workforce-agent", "name": "Krow Workforce Agent", "description": "The general workforce agent. Reasons across every Krow domain, within whatever page you are on.", "status": "published", "version": 1, "pages": [ "control-center", "positions", "create-position", "candidates", "candidates-analysis", "hired-history", "talent-pool", "krow-forge", "analytics", "activity", "profile", "workspace-agent-configure", "settings", "workspace", "workspace-agents", "workspace-skills", "workspace-skill-configure", "skill-development" ], "icon": "owliver", "reasoning": "balanced", "trigger": "Use when a question spans more than one Krow domain, or when you are on a page whose own agent cannot help.", "webSearch": false, "skills": [ "create-position", "hiring-activity-assistant", "candidate-search", "analytics-insights", "forge-skill-management", "staffing-risk", "attendance-analysis", "overtime-analysis", "candidate-analysis", "talent-pool-analysis", "workforce-analytics", "anomaly-detection", "activity-analysis", "operational-risk", "executive-summary", "hiring-history-analysis", "learning-analysis", "hiring-pulse-analysis" ], "tools": [ "workspace_summary", "operations_risk", "positions_risk", "workforce_attendance", "workforce_coverage", "candidates_quality", "talent_pool" ], "subagents": [ "control-center-agent", "positions-agent", "candidates-agent", "hired-history-agent", "talent-pool-agent", "krow-forge-agent", "analytics-agent", "activity-agent" ], "starters": [ { "label": "What needs my attention?", "prompt": "What needs my attention right now?" }, { "label": "Summarize this page", "prompt": "Summarize what this page is showing" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [ { "user": "demo@krow.app", "role": "manager" } ] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/positions-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiBwb3NpdGlvbnMtYWdlbnQKbmFtZTogUG9zaXRpb25zIEFnZW50CmRlc2NyaXB0aW9uOiBPcGVuIHJvbGVzIOKAlCB3aGF0IHRoZXkgbmVlZCwgd2hvIGhhcyBhcHBsaWVkLCBhbmQgd2hpY2ggYXJlIGF0IHJpc2sgb2YgZ29pbmcgdW5maWxsZWQuCmljb246IGJyaWVmY2FzZQpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAyCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIFBvc2l0aW9ucywgZm9yIG9wZW4gcm9sZXMsIGFwcGxpY2FudCBmbG93LCBhbmQgc3BlY2lmeWluZyBhIG5ldyByb2xlLgpwYWdlczoKICAtIHBvc2l0aW9ucwogIC0gY3JlYXRlLXBvc2l0aW9uCnNraWxsczoKICAtIGNyZWF0ZS1wb3NpdGlvbgogIC0gY3JlYXRlLWVtcGxveWVlLXJvbGUKICAtIGhpcmluZy1hY3Rpdml0eS1hc3Npc3RhbnQKICAtIHN0YWZmaW5nLXJpc2sKc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hpY2ggcG9zaXRpb25zIG5lZWQgYXR0ZW50aW9uPwogICAgcHJvbXB0OiBXaGljaCBwb3NpdGlvbnMgbmVlZCBhdHRlbnRpb24/CiAgLSBsYWJlbDogU2hvdyBoaXJpbmcgYWN0aXZpdHkKICAgIHByb21wdDogU2hvdyBoaXJpbmcgYWN0aXZpdHkgYXMgYSBmbG93CnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKdG9vbHM6CiAgLSBwb3NpdGlvbnNfcmlzawogIC0gb3Blbl9wb3NpdGlvbnMKICAtIGF2YWlsYWJsZV93b3JrZXJzCiAgLSB3b3JrZm9yY2VfY292ZXJhZ2UKICAtIGNhbmRpZGF0ZXNfcXVhbGl0eQogIC0gYXNzaWduX3dvcmtlcgogIC0gY2FuZGlkYXRlc19hd2FpdGluZwogIC0gbW92ZV9hcHBsaWNhdGlvbgotLS0KCiMgUG9zaXRpb25zIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgcm9sZXMgdGhpcyB3b3Jrc3BhY2UgaGFzIG9wZW46IGhvdyB0aGV5IGFyZSBmaWxsaW5nLCB3aGljaCBhcmUKc3RhcnZlZCBvZiBhcHBsaWNhbnRzLCBhbmQgd2hhdCBhIHJvbGUgc3RpbGwgbmVlZHMgYmVmb3JlIGl0IGNhbiBiZSBwdWJsaXNoZWQuCgpXaGVuIGEgcXVlc3Rpb24gbmFtZXMgYSByb2xlLCBhbnN3ZXIgYWJvdXQgdGhhdCByb2xlLiBXaGVuIGl0IGRvZXMgbm90IGFuZCBvbmUKaXMgb3BlbiBvbiB0aGUgcGFnZSwgYW5zd2VyIGFib3V0IHRoYXQgb25lLiBXaGVuIG5laXRoZXIgaXMgdHJ1ZSwgYXNrIHdoaWNoLgoKTmV2ZXIgY3JlYXRlIG9yIHB1Ymxpc2ggYSBwb3NpdGlvbiB3aXRob3V0IGJlaW5nIGFza2VkIHRvLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgaG93IG9wZW4gcm9sZXMgYXJlIGZpbGxpbmcsIGFuZCB3aGljaCBhcmUgYXQgcmlzay4KLSBIZWxwIHNwZWNpZnkgYSBuZXcgcm9sZSBhbmQgaXRzIHNjcmVlbmluZyB3ZWlnaHRzLgo=", "bytes": 1382, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "positions-agent", "name": "Positions Agent", "description": "Open roles — what they need, who has applied, and which are at risk of going unfilled.", "icon": "briefcase", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on Positions, for open roles, applicant flow, and specifying a new role.", "pages": [ "positions", "create-position" ], "skills": [ "create-position", "create-employee-role", "hiring-activity-assistant", "staffing-risk" ], "starters": [ { "label": "Which positions need attention?", "prompt": "Which positions need attention?" }, { "label": "Show hiring activity", "prompt": "Show hiring activity as a flow" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "positions_risk", "open_positions", "available_workers", "workforce_coverage", "candidates_quality", "assign_worker", "candidates_awaiting", "move_application" ] }, "body": "# Positions Agent\n\n## Instructions\n\nAnswer about the roles this workspace has open: how they are filling, which are\nstarved of applicants, and what a role still needs before it can be published.\n\nWhen a question names a role, answer about that role. When it does not and one\nis open on the page, answer about that one. When neither is true, ask which.\n\nNever create or publish a position without being asked to.\n\n## Purpose\n\n- Report how open roles are filling, and which are at risk.\n- Help specify a new role and its screening weights." }, "parse": { "ok": true }, "normalized": { "id": "positions-agent", "name": "Positions Agent", "description": "Open roles — what they need, who has applied, and which are at risk of going unfilled.", "status": "published", "version": 2, "pages": [ "positions", "create-position" ], "icon": "briefcase", "reasoning": "balanced", "trigger": "Use on Positions, for open roles, applicant flow, and specifying a new role.", "webSearch": false, "skills": [ "create-position", "create-employee-role", "hiring-activity-assistant", "staffing-risk" ], "tools": [ "positions_risk", "open_positions", "available_workers", "workforce_coverage", "candidates_quality", "assign_worker", "candidates_awaiting", "move_application" ], "subagents": [], "starters": [ { "label": "Which positions need attention?", "prompt": "Which positions need attention?" }, { "label": "Show hiring activity", "prompt": "Show hiring activity as a flow" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/agents/talent-pool-agent.md", "type": "agent", "rawBase64": "LS0tCmlkOiB0YWxlbnQtcG9vbC1hZ2VudApuYW1lOiBUYWxlbnQgUG9vbCBBZ2VudApkZXNjcmlwdGlvbjogQXZhaWxhYmxlIHRhbGVudCDigJQgd2hvIGlzIGluIHRoZSBwb29sLCB3aG8gaXMgdmVyaWZpZWQsIGFuZCB3aG8gaXMgcmVhZHkgdG8gcGxhY2UuCmljb246IGxheWVycwpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAyCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIFRhbGVudCBQb29sLCBmb3Igc3VwcGx5LCBhdmFpbGFiaWxpdHkgYW5kIHJlYWRpbmVzcyBvZiBrbm93biB3b3JrZXJzLgpwYWdlczoKICAtIHRhbGVudC1wb29sCnNraWxsczoKICAtIHRhbGVudC1wb29sLWFuYWx5c2lzCiAgLSBjcmVhdGUtZW1wbG95ZWUtcm9sZQpzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgYXZhaWxhYmxlPwogICAgcHJvbXB0OiBXaG8gaXMgYXZhaWxhYmxlIGluIHRoZSB0YWxlbnQgcG9vbD8KICAtIGxhYmVsOiBIb3cgdmVyaWZpZWQgaXMgdGhlIHBvb2w/CiAgICBwcm9tcHQ6IEhvdyBtdWNoIG9mIHRoZSB0YWxlbnQgcG9vbCBpcyB2ZXJpZmllZD8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIHRhbGVudF9wb29sCiAgLSB3b3JrZm9yY2VfdHJhaW5pbmcKICAtIGF2YWlsYWJsZV93b3JrZXJzCi0tLQoKIyBUYWxlbnQgUG9vbCBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIgYWJvdXQgdGhlIHBlb3BsZSB0aGlzIHdvcmtzcGFjZSBhbHJlYWR5IGtub3dzOiB3aG8gaXMgaW4gdGhlIHBvb2wsIHdoYXQKdGhleSBhcmUgdmVyaWZpZWQgaW4sIGFuZCB3aG8gY291bGQgYmUgcGxhY2VkIG5vdy4KClRoaXMgaXMgc3VwcGx5LCBub3QgYXBwbGljYW50cy4gU29tZW9uZSBpbiB0aGUgcG9vbCBoYXMgbm90IGFwcGxpZWQgdG8gYW55dGhpbmcKYnkgYmVpbmcgaGVyZSDigJQgZG8gbm90IGRlc2NyaWJlIHRoZW0gYXMgYSBjYW5kaWRhdGUgZm9yIGEgcm9sZS4KClRoaXMgYWdlbnQgY2FycmllcyBubyBza2lsbHMgb2YgaXRzIG93bjsgVGFsZW50IFBvb2wgYW5zd2VycyBmcm9tIGl0cyBvd24gcGFnZQpyZWFkZXIuCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aG8gaXMgYXZhaWxhYmxlLCBhbmQgaG93IHJlYWR5IHRoZXkgYXJlLgotIERlc2NyaWJlIHRoZSBwb29sJ3Mgc2VnbWVudHMgYW5kIHZlcmlmaWNhdGlvbiBjb3ZlcmFnZS4K", "bytes": 1203, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "talent-pool-agent", "name": "Talent Pool Agent", "description": "Available talent — who is in the pool, who is verified, and who is ready to place.", "icon": "layers", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on Talent Pool, for supply, availability and readiness of known workers.", "pages": [ "talent-pool" ], "skills": [ "talent-pool-analysis", "create-employee-role" ], "starters": [ { "label": "Who is available?", "prompt": "Who is available in the talent pool?" }, { "label": "How verified is the pool?", "prompt": "How much of the talent pool is verified?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" }, "tools": [ "talent_pool", "workforce_training", "available_workers" ] }, "body": "# Talent Pool Agent\n\n## Instructions\n\nAnswer about the people this workspace already knows: who is in the pool, what\nthey are verified in, and who could be placed now.\n\nThis is supply, not applicants. Someone in the pool has not applied to anything\nby being here — do not describe them as a candidate for a role.\n\nThis agent carries no skills of its own; Talent Pool answers from its own page\nreader.\n\n## Purpose\n\n- Report who is available, and how ready they are.\n- Describe the pool's segments and verification coverage." }, "parse": { "ok": true }, "normalized": { "id": "talent-pool-agent", "name": "Talent Pool Agent", "description": "Available talent — who is in the pool, who is verified, and who is ready to place.", "status": "published", "version": 2, "pages": [ "talent-pool" ], "icon": "layers", "reasoning": "balanced", "trigger": "Use on Talent Pool, for supply, availability and readiness of known workers.", "webSearch": false, "skills": [ "talent-pool-analysis", "create-employee-role" ], "tools": [ "talent_pool", "workforce_training", "available_workers" ], "subagents": [], "starters": [ { "label": "Who is available?", "prompt": "Who is available in the talent pool?" }, { "label": "How verified is the pool?", "prompt": "How much of the talent pool is verified?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/activity-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBhY3Rpdml0eS1hbmFseXNpcwpuYW1lOiBBY3Rpdml0eSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQnJlYWsgZG93biB3aGF0IGhhcyBoYXBwZW5lZCBpbiB0aGlzIHdvcmtzcGFjZSwgYnkga2luZCBvZiBldmVudCBhbmQgYnkgYWNjb3VudC4KY2F0ZWdvcnk6IG9wZXJhdGlvbnMKcGFnZXM6CiAgLSBhY3Rpdml0eQpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gYWN0aXZpdHkgYnJlYWtkb3duCiAgLSBldmVudCBicmVha2Rvd24KICAtIHdoYXQga2luZCBvZiBldmVudHMKICAtIGV2ZW50cyBieSB0eXBlCiAgLSB3aG8gZGlkIHdoYXQKICAtIGJ1c2llc3QgYWNjb3VudApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFdoYXQga2luZHMgb2YgZXZlbnQgYXJlIHRoZXJlPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogU3VtbWFyaXplIHdvcmtzcGFjZSBhY3Rpdml0eQogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBBY3Rpdml0eSBvdmVyIHJlY2VudCBwZXJpb2RzCiAgICAgIGNhcGFiaWxpdHk6IGZsb3cKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gc3RhdHMKICAgIC0gdGFibGUKICAgIC0gbGlzdAogICAgLSBwcm9ncmVzcwogICAgLSBmbG93CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEFjdGl2aXR5IGJyZWFrZG93bgogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBBY3Rpdml0eSBicmVha2Rvd24KICAgICAgc291cmNlOiBhY3Rpdml0eS5icmVha2Rvd24KICAgIHRhYmxlOgogICAgICB0aXRsZTogRXZlbnRzIGJ5IGtpbmQKICAgICAgc291cmNlOiBhY3Rpdml0eS5icmVha2Rvd24KICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBFdmVudHMgYnkga2luZAogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgcHJvZ3Jlc3M6CiAgICAgIHRpdGxlOiBFdmVudHMgYnkga2luZAogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgZmxvdzoKICAgICAgdGl0bGU6IEFjdGl2aXR5IG92ZXIgdGltZQogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgICBwZXJpb2RzOgogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHRoaXMtbW9udGgKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCi0tLQoKIyBBY3Rpdml0eSBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgd2hhdCBoYXMgaGFwcGVuZWQgaW4gdGhpcyB3b3Jrc3BhY2UgYW5kIGluIHdoYXQgcHJvcG9ydGlvbi4KLSBDb3VudCBob3cgbWFueSBhY2NvdW50cyBhcmUgYWN0aXZlLgotIFNob3cgYWN0aXZpdHkgYWNyb3NzIHJlY2VudCBwZXJpb2RzLgoKIyMgQ2FwYWJpbGl0aWVzCgotIEJyZWFrIGV2ZW50cyBkb3duIGJ5IGtpbmQsIHdpdGggZWFjaCBraW5kJ3Mgc2hhcmUuCi0gQ291bnQgZGlzdGluY3QgZXZlbnQga2luZHMgYW5kIGFjdGl2ZSBhY2NvdW50cy4KLSBXaW5kb3cgdGhlIGJyZWFrZG93biBieSBwZXJpb2QuCgojIyBEYXRhCgpSZWFkcyBgYWN0aXZpdHkuYnJlYWtkb3duYCwgd2hpY2ggY291bnRzIGBVc2VyQWN0aXZpdHlgIHJlY29yZHMgYnkgYGV2ZW50X3R5cGVgCmFuZCBieSBhY2NvdW50LgoKIyMgQW5hbHlzaXMKCkV2ZW50cyBhcmUgY291bnRlZCBieSBraW5kIGFuZCBleHByZXNzZWQgYXMgYSBzaGFyZSBvZiB0aGUgdG90YWwsIGJlY2F1c2UgYSByYXcKY291bnQgbWVhbnMgbGl0dGxlIHdpdGhvdXQga25vd2luZyB3aGV0aGVyIHR3ZWx2ZSBsb2dpbnMgaXMgbW9zdCBvZiB0aGUgbG9nIG9yIGEKZnJhY3Rpb24gb2YgaXQuCgpTdG9yZWQgZXZlbnQgbmFtZXMgYXJlIG1hY2hpbmUga2V5czsgdGhleSBhcmUgcmVuZGVyZWQgYXMgd29yZHMgc28gYSByZWFkZXIgZG9lcwpub3QgaGF2ZSB0byB0cmFuc2xhdGUgYGhpcmVfY2FuZGlkYXRlYCBpbiB0aGVpciBoZWFkLgoKIyMgT3V0cHV0CgpUb3RhbCBldmVudHMsIG51bWJlciBvZiBkaXN0aW5jdCBraW5kcywgbnVtYmVyIG9mIGFjdGl2ZSBhY2NvdW50cywgdGhlbiBhIHJvdwpwZXIga2luZCB3aXRoIGl0cyBjb3VudCBhbmQgc2hhcmUuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGRlc2NyaWJlcyB0aGUgYXVkaXQgbG9nLCBub3QgdGhlIHVuZGVybHlpbmcgcmVjb3Jkcy4gVGVuIGBhcHBseV9qb2JgCiAgZXZlbnRzIG1lYW4gdGVuIGxvZ2dlZCBhY3Rpb25zLCB3aGljaCBpcyBub3QgYSBndWFyYW50ZWUgb2YgdGVuIGFwcGxpY2F0aW9ucwogIHN1cnZpdmluZyBpbiB0aGUgcGlwZWxpbmUuCi0gT3ZlcmxhcHBpbmcgcGVyaW9kcyBhcmUgZGVkdXBsaWNhdGVkIGJ5IGV2ZW50LCBzbyBhc2tpbmcgZm9yIHRvZGF5IGFuZCB0aGUKICBsYXN0IHNldmVuIGRheXMgdG9nZXRoZXIgZG9lcyBub3QgZG91YmxlLWNvdW50IHRvZGF5LgotIFRoaXMgY291bnRzIGFjdGl2aXR5OyBpdCBkb2VzIG5vdCBqdWRnZSBpdC4gV2hldGhlciBhIHBhdHRlcm4gaXMgdW51c3VhbCBpcwogIEFub21hbHkgRGV0ZWN0aW9uJ3MgcXVlc3Rpb24uCg==", "bytes": 2560, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "activity-analysis", "name": "Activity Analysis", "description": "Break down what has happened in this workspace, by kind of event and by account.", "category": "operations", "pages": [ "activity" ], "status": "active", "version": 1, "triggers": [ "activity breakdown", "event breakdown", "what kind of events", "events by type", "who did what", "busiest account" ], "owliver": { "enabled": true, "suggestions": [ { "label": "What kinds of event are there?", "capability": "table" }, { "label": "Summarize workspace activity", "capability": "summary" }, { "label": "Activity over recent periods", "capability": "flow" } ], "capabilities": [ "summary", "stats", "table", "list", "progress", "flow" ], "responses": { "summary": { "title": "Activity breakdown", "source": "activity.breakdown" }, "stats": { "title": "Activity breakdown", "source": "activity.breakdown" }, "table": { "title": "Events by kind", "source": "activity.breakdown" }, "list": { "title": "Events by kind", "source": "activity.breakdown" }, "progress": { "title": "Events by kind", "source": "activity.breakdown" }, "flow": { "title": "Activity over time", "source": "activity.breakdown", "periods": [ "last-7-days", "this-month", "previous-month" ] } } } }, "body": "# Activity Analysis\n\n## Purpose\n\n- Report what has happened in this workspace and in what proportion.\n- Count how many accounts are active.\n- Show activity across recent periods.\n\n## Capabilities\n\n- Break events down by kind, with each kind's share.\n- Count distinct event kinds and active accounts.\n- Window the breakdown by period.\n\n## Data\n\nReads `activity.breakdown`, which counts `UserActivity` records by `event_type`\nand by account.\n\n## Analysis\n\nEvents are counted by kind and expressed as a share of the total, because a raw\ncount means little without knowing whether twelve logins is most of the log or a\nfraction of it.\n\nStored event names are machine keys; they are rendered as words so a reader does\nnot have to translate `hire_candidate` in their head.\n\n## Output\n\nTotal events, number of distinct kinds, number of active accounts, then a row\nper kind with its count and share.\n\n## Limitations\n\n- This describes the audit log, not the underlying records. Ten `apply_job`\n events mean ten logged actions, which is not a guarantee of ten applications\n surviving in the pipeline.\n- Overlapping periods are deduplicated by event, so asking for today and the\n last seven days together does not double-count today.\n- This counts activity; it does not judge it. Whether a pattern is unusual is\n Anomaly Detection's question." }, "parse": { "ok": true }, "normalized": { "id": "activity-analysis", "name": "Activity Analysis", "description": "Break down what has happened in this workspace, by kind of event and by account.", "status": "active", "pages": [ "activity" ], "kind": "assistant", "category": "operations", "actions": [], "triggers": [ "activity breakdown", "event breakdown", "what kind of events", "events by type", "who did what", "busiest account" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/analytics-insights.md", "type": "skill", "rawBase64": "LS0tCmlkOiBhbmFseXRpY3MtaW5zaWdodHMKbmFtZTogQW5hbHl0aWNzIEluc2lnaHRzCmRlc2NyaXB0aW9uOiBIZWxwIE93bGl2ZXIgZXhwbGFpbiB0aGUgYW5hbHl0aWNzIHNob3duIG9uIHRoZSBjdXJyZW50IHBhZ2UuCnBhZ2VzOgogIC0gYW5hbHl0aWNzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19hbmFseXRpY3MKLS0tCgojIEFuYWx5dGljcyBJbnNpZ2h0cwoKIyMgUHVycG9zZQoKRXhwbGFpbiB0aGUgZmlndXJlcyBvbiB0aGUgQW5hbHl0aWNzIHBhZ2Ug4oCUIGNvbnZlcnNpb24sIHNwZWVkLCBkZXBhcnRtZW50CnBlcmZvcm1hbmNlIOKAlCB1c2luZyB0aGUgc2FtZSByZWNvcmRzIHRoZSBwYWdlIHJlbmRlcnMuCgojIyBDYXBhYmlsaXRpZXMKCi0gRXhwbGFpbiBoaXJpbmcgdHJlbmQgYW5kIGNvbnZlcnNpb24uCi0gQ29tcGFyZSBkZXBhcnRtZW50IHBlcmZvcm1hbmNlLgotIElkZW50aWZ5IHdoZXJlIHRoZSBmdW5uZWwgbG9zZXMgY2FuZGlkYXRlcy4KCiMjIEFjdGlvbnMKCi0gbmF2aWdhdGVfdG9fYW5hbHl0aWNzCg==", "bytes": 544, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "analytics-insights", "name": "Analytics Insights", "description": "Help Owliver explain the analytics shown on the current page.", "pages": [ "analytics" ], "status": "active", "actions": [ "navigate_to_analytics" ] }, "body": "# Analytics Insights\n\n## Purpose\n\nExplain the figures on the Analytics page — conversion, speed, department\nperformance — using the same records the page renders.\n\n## Capabilities\n\n- Explain hiring trend and conversion.\n- Compare department performance.\n- Identify where the funnel loses candidates.\n\n## Actions\n\n- navigate_to_analytics" }, "parse": { "ok": true }, "normalized": { "id": "analytics-insights", "name": "Analytics Insights", "description": "Help Owliver explain the analytics shown on the current page.", "status": "active", "pages": [ "analytics" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_analytics" ], "triggers": [ "analytics insights" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/anomaly-detection.md", "type": "skill", "rawBase64": "LS0tCmlkOiBhbm9tYWx5LWRldGVjdGlvbgpuYW1lOiBBbm9tYWx5IERldGVjdGlvbgpkZXNjcmlwdGlvbjogU3VyZmFjZSBhY3Rpdml0eSB0aGF0IGRlcGFydHMgZnJvbSB0aGlzIHdvcmtzcGFjZSdzIG93biBwYXR0ZXJuIOKAlCBhbmQgc3RheSBxdWlldCB3aGVuIG5vdGhpbmcgZG9lcy4KY2F0ZWdvcnk6IG9wZXJhdGlvbnMKcGFnZXM6CiAgLSBhY3Rpdml0eQogIC0gY29udHJvbC1jZW50ZXIKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGFub21hbHkKICAtIGFub21hbGllcwogIC0gYW5vbWFsb3VzCiAgLSB1bnVzdWFsCiAgLSBvdXQgb2YgcGF0dGVybgogIC0gc3VzcGljaW91cwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IElzIGFueXRoaW5nIHVudXN1YWw/CiAgICAgIGNhcGFiaWxpdHk6IGluc2lnaHQKICAgIC0gbGFiZWw6IFNob3cgdGhlIHNpZ25hbHMKICAgICAgY2FwYWJpbGl0eTogdGFibGUKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gaW5zaWdodAogICAgLSBsaXN0CiAgICAtIHRhYmxlCiAgICAtIHN0YXRzCiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEFjdGl2aXR5IHNpZ25hbHMKICAgICAgc291cmNlOiBhY3Rpdml0eS5zaWduYWxzCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogVW51c3VhbCBhY3Rpdml0eQogICAgICBzb3VyY2U6IGFjdGl2aXR5LnNpZ25hbHMKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBTaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwogICAgdGFibGU6CiAgICAgIHRpdGxlOiBTaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBBY3Rpdml0eSBzaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwotLS0KCiMgQW5vbWFseSBEZXRlY3Rpb24KCiMjIFB1cnBvc2UKCi0gU3VyZmFjZSBhY3Rpdml0eSB0aGF0IGRlcGFydHMgZnJvbSB0aGlzIHdvcmtzcGFjZSdzIG93biBiYXNlbGluZS4KLSBFeHBsYWluIGVhY2ggc2lnbmFsIHJhdGhlciB0aGFuIG9ubHkgbmFtaW5nIGl0LgotIFJlcG9ydCBub3RoaW5nIHdoZW4gbm90aGluZyBkZXBhcnRzLCBzbyBhIHNpZ25hbCBrZWVwcyBpdHMgbWVhbmluZy4KCiMjIENhcGFiaWxpdGllcwoKLSBEZXRlY3QgY29uY2VudHJhdGlvbiwgYnVyc3RzLCBvZmYtaG91cnMgYWN0aXZpdHksIHNpbGVuY2UgYW5kIHByaXZpbGVnZWQtYWN0aW9uIHNoYXJlLgotIFJlcG9ydCBob3cgbWFueSBzaWduYWxzIGFyZSBjdXJyZW50bHkgcmFpc2VkLgotIEV4cGxhaW4gd2hhdCBlYWNoIG9uZSBtZWFucy4KCiMjIERhdGEKClJlYWRzIGBhY3Rpdml0eS5zaWduYWxzYCwgd2hpY2ggaXMgdGhlIHNhbWUgZGV0ZWN0aW9uIHRoZSBhc3Npc3RhbnQncyBvd24KZ3JlZXRpbmcgY291bnRzIOKAlCBvbmUgaW1wbGVtZW50YXRpb24gaW4gYGxpYi9hY3Rpdml0eVNpZ25hbHMuanNgLCBzbyAidHdvCnVudXN1YWwgcGF0dGVybnMiIG1lYW5zIHRoZSBzYW1lIHR3byB3aGVyZXZlciBpdCBpcyBzYWlkLgoKIyMgQW5hbHlzaXMKCkZpdmUgcGF0dGVybnMgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGlzIHdvcmtzcGFjZSdzIG93biBoaXN0b3J5OgoKMS4gKipDb25jZW50cmF0aW9uKiog4oCUIG9uZSBhY2NvdW50IGlzIHJlc3BvbnNpYmxlIGZvciBoYWxmIG9yIG1vcmUgb2YgZXZlbnRzLgoyLiAqKkJ1cnN0Kiog4oCUIG1vcmUgdGhhbiB0aHJlZSBhY3Rpb25zIGZyb20gb25lIGFjY291bnQgaW5zaWRlIG9uZSBob3VyLgozLiAqKk9mZi1ob3VycyoqIOKAlCBhY3Rpdml0eSBiZWZvcmUgMDY6MDAgb3IgYWZ0ZXIgMjI6MDAuCjQuICoqU2lsZW50Kiog4oCUIGEgbG9nIHRoYXQgaGFzIGV2ZW50cyBidXQgbm90aGluZyBpbiB0aGUgbGFzdCAyNCBob3Vycy4KNS4gKipQcml2aWxlZ2VkIHNoYXJlKiog4oCUIG1vcmUgdGhhbiAzMCUgb2YgZXZlbnRzIGNoYW5nZSB3aG8gaXMgZW1wbG95ZWQgb3IKICAgd2hhdCBpcyBiZWluZyBoaXJlZCBmb3IuCgpPbmx5IHBhdHRlcm5zIHRoYXQgY2xlYXIgdGhlaXIgdGhyZXNob2xkIGFyZSByZXBvcnRlZC4gQSB3b3Jrc3BhY2Ugd2l0aCBub3RoaW5nCnVudXN1YWwgcmV0dXJucyBubyBzaWduYWxzLCBub3QgYSBsb3ctc2V2ZXJpdHkgbm90ZS4KCiMjIE91dHB1dAoKQSBjb3VudCBvZiByYWlzZWQgc2lnbmFscywgYW5kIG9uZSByb3cgcGVyIHNpZ25hbCBleHBsYWluaW5nIHdoYXQgdHJpZ2dlcmVkIGl0CndpdGggdGhlIGZpZ3VyZSBiZWhpbmQgaXQuCgojIyBMaW1pdGF0aW9ucwoKLSAqKkEgc2lnbmFsIGlzIGEgZGV2aWF0aW9uIGZyb20gYSBiYXNlbGluZSwgbm90IGEgdmVyZGljdC4qKiBPbiBhIGxpdmUKICBkZXBsb3ltZW50IG1vc3QgcmVzb2x2ZSB0byBhbiBpbnRlZ3JhdGlvbiwgYSBidWxrIGltcG9ydCBvciBhIGJ1c3kgYWZ0ZXJub29uLgogIE5vdGhpbmcgaGVyZSBhc3NlcnRzIHdyb25nZG9pbmcuCi0gVGhyZXNob2xkcyBhcmUgZml4ZWQsIG5vdCBsZWFybmVkLiBBIHdvcmtzcGFjZSB3aG9zZSBub3JtYWwgcGF0dGVybiBpcyBvbmUKICBidXN5IGFjY291bnQgd2lsbCByZXBvcnQgY29uY2VudHJhdGlvbiBldmVyeSB0aW1lIGl0IGlzIGFza2VkLgotIFRoZSBiYXNlbGluZSBpcyB0aGUgd2hvbGUgYWN0aXZpdHkgbG9nLCBub3QgYSByb2xsaW5nIHdpbmRvdywgc28gYSB5b3VuZwogIHdvcmtzcGFjZSBoYXMgbGl0dGxlIHRvIGNvbXBhcmUgYWdhaW5zdC4K", "bytes": 2757, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "anomaly-detection", "name": "Anomaly Detection", "description": "Surface activity that departs from this workspace's own pattern — and stay quiet when nothing does.", "category": "operations", "pages": [ "activity", "control-center" ], "status": "active", "version": 1, "triggers": [ "anomaly", "anomalies", "anomalous", "unusual", "out of pattern", "suspicious" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Is anything unusual?", "capability": "insight" }, { "label": "Show the signals", "capability": "table" } ], "capabilities": [ "summary", "insight", "list", "table", "stats" ], "responses": { "summary": { "title": "Activity signals", "source": "activity.signals" }, "insight": { "title": "Unusual activity", "source": "activity.signals" }, "list": { "title": "Signals", "source": "activity.signals" }, "table": { "title": "Signals", "source": "activity.signals" }, "stats": { "title": "Activity signals", "source": "activity.signals" } } } }, "body": "# Anomaly Detection\n\n## Purpose\n\n- Surface activity that departs from this workspace's own baseline.\n- Explain each signal rather than only naming it.\n- Report nothing when nothing departs, so a signal keeps its meaning.\n\n## Capabilities\n\n- Detect concentration, bursts, off-hours activity, silence and privileged-action share.\n- Report how many signals are currently raised.\n- Explain what each one means.\n\n## Data\n\nReads `activity.signals`, which is the same detection the assistant's own\ngreeting counts — one implementation in `lib/activitySignals.js`, so \"two\nunusual patterns\" means the same two wherever it is said.\n\n## Analysis\n\nFive patterns are checked against this workspace's own history:\n\n1. **Concentration** — one account is responsible for half or more of events.\n2. **Burst** — more than three actions from one account inside one hour.\n3. **Off-hours** — activity before 06:00 or after 22:00.\n4. **Silent** — a log that has events but nothing in the last 24 hours.\n5. **Privileged share** — more than 30% of events change who is employed or\n what is being hired for.\n\nOnly patterns that clear their threshold are reported. A workspace with nothing\nunusual returns no signals, not a low-severity note.\n\n## Output\n\nA count of raised signals, and one row per signal explaining what triggered it\nwith the figure behind it.\n\n## Limitations\n\n- **A signal is a deviation from a baseline, not a verdict.** On a live\n deployment most resolve to an integration, a bulk import or a busy afternoon.\n Nothing here asserts wrongdoing.\n- Thresholds are fixed, not learned. A workspace whose normal pattern is one\n busy account will report concentration every time it is asked.\n- The baseline is the whole activity log, not a rolling window, so a young\n workspace has little to compare against." }, "parse": { "ok": true }, "normalized": { "id": "anomaly-detection", "name": "Anomaly Detection", "description": "Surface activity that departs from this workspace's own pattern — and stay quiet when nothing does.", "status": "active", "pages": [ "activity", "control-center" ], "kind": "assistant", "category": "operations", "actions": [], "triggers": [ "anomaly", "anomalies", "anomalous", "unusual", "out of pattern", "suspicious" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/attendance-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBhdHRlbmRhbmNlLWFuYWx5c2lzCm5hbWU6IEF0dGVuZGFuY2UgQW5hbHlzaXMKZGVzY3JpcHRpb246IEFuYWx5c2Ugd29ya2ZvcmNlIGF0dGVuZGFuY2UsIGxhdGVuZXNzIGFuZCBhYnNlbmNlLCBhbmQgY29tcGFyZSBwZW9wbGUgYW5kIGRlcGFydG1lbnRzLgpjYXRlZ29yeTogd29ya2ZvcmNlCnBhZ2VzOgogIC0gYW5hbHl0aWNzCiAgLSBjb250cm9sLWNlbnRlcgpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gYXR0ZW5kYW5jZQogIC0gYWJzZW5jZQogIC0gYWJzZW5jZXMKICAtIGFic2VudGVlaXNtCiAgLSBsYXRlIGFycml2YWwKICAtIG1pc3NlZCBzaGlmdAogIC0gbWlzc2VkIHNoaWZ0cwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBpcyBhdHRlbmRhbmNlPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBDb21wYXJlIGF0dGVuZGFuY2UgYnkgcGVyc29uCiAgICAgIGNhcGFiaWxpdHk6IHRhYmxlCiAgICAtIGxhYmVsOiBBdHRlbmRhbmNlIG92ZXIgcmVjZW50IHBlcmlvZHMKICAgICAgY2FwYWJpbGl0eTogZmxvdwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBzdGF0cwogICAgLSB0YWJsZQogICAgLSBwcm9ncmVzcwogICAgLSBmbG93CiAgICAtIGluc2lnaHQKICByZXNwb25zZXM6CiAgICBzdW1tYXJ5OgogICAgICB0aXRsZTogQXR0ZW5kYW5jZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICBzdGF0czoKICAgICAgdGl0bGU6IEF0dGVuZGFuY2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuYXR0ZW5kYW5jZQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlIGJ5IHBlcnNvbgogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IEF0dGVuZGFuY2UgYnkgcGVyc29uCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmF0dGVuZGFuY2UKICAgIGZsb3c6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlIG92ZXIgdGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmF0dGVuZGFuY2UKLS0tCgojIEF0dGVuZGFuY2UgQW5hbHlzaXMKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyByZWxpYWJseSB0aGUgd29ya2ZvcmNlIGlzIHR1cm5pbmcgdXAuCi0gU2VwYXJhdGUgdHVybmluZyB1cCBmcm9tIHR1cm5pbmcgdXAgb24gdGltZSwgYmVjYXVzZSB0aGV5IGhhdmUgZGlmZmVyZW50IGNhdXNlcy4KLSBDb21wYXJlIHBlb3BsZSBhbmQgZGVwYXJ0bWVudHMgc28gYSBwcm9ibGVtIGNhbiBiZSBsb2NhdGVkIHJhdGhlciB0aGFuIG9ubHkgY291bnRlZC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgYXR0ZW5kYW5jZSwgcHVuY3R1YWxpdHkgYW5kIG1pc3NlZCBzaGlmdHMuCi0gQ29tcGFyZSBhdHRlbmRhbmNlIHBlciBwZXJzb24sIHdvcnN0IGZpcnN0LgotIFNob3cgYXR0ZW5kYW5jZSBhY3Jvc3MgcmVjZW50IHBlcmlvZHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLmF0dGVuZGFuY2VgLCB3aGljaCBjb3VudHMgYFNoaWZ0UmVjb3JkYCBlbnRyaWVzIOKAlCBldmVyeSBzaGlmdApzY2hlZHVsZWQsIHdoZXRoZXIgaXQgd2FzIHdvcmtlZCwgaG93IGxhdGUgaXQgc3RhcnRlZCBhbmQgaG93IGxvbmcgaXQgcmFuLgpEZXBhcnRtZW50IGlzIHRoZSBwb3NpdGlvbidzIGByb2xlX2NhdGVnb3J5YCwgdGhlIHNhbWUgZmllbGQgSGlyZWQgSGlzdG9yeSBhbmQKQW5hbHl0aWNzIGdyb3VwIGJ5LgoKIyMgQW5hbHlzaXMKCkF0dGVuZGFuY2UgaXMgdGhlIHNoYXJlIG9mIHNjaGVkdWxlZCBzaGlmdHMgdGhhdCB3ZXJlICoqdHVybmVkIHVwIGZvciBhdCBhbGwqKiwKbGF0ZSBvciBub3QuIFB1bmN0dWFsaXR5IGlzIHJlcG9ydGVkIHNlcGFyYXRlbHksIGFzIHRoZSBzaGFyZSB0dXJuZWQgdXAgZm9yIG9uCnRpbWUuIEZvbGRpbmcgdGhlIHR3byB0b2dldGhlciB3b3VsZCBtYWtlIGEgcmVsaWFibHktbGF0ZSB0ZWFtIGxvb2sgYWJzZW50IGFuZAphIGdlbnVpbmVseSBhYnNlbnQgb25lIGxvb2sgYmV0dGVyIHRoYW4gaXQgaXMuCgpNaW51dGVzIGxvc3QgdG8gbGF0ZW5lc3MgYXJlIHJlcG9ydGVkIGFsb25nc2lkZSB0aGUgY291bnQsIGJlY2F1c2UgZm91ciBsYXRlCmFycml2YWxzIHNheXMgbm90aGluZyBhYm91dCB3aGV0aGVyIGl0IGNvc3QgdGVuIG1pbnV0ZXMgb3IgdHdvIGhvdXJzLgoKIyMgT3V0cHV0CgpIZWFkbGluZSBhdHRlbmRhbmNlIGFuZCBwdW5jdHVhbGl0eSByYXRlcywgbWlzc2VkIHNoaWZ0cyBzcGxpdCBpbnRvIGFic2VuY2VzIGFuZApuby1zaG93cywgYW5kIGEgcm93IHBlciBwZXJzb24gd2l0aCB0aGVpciByZWNvcmQuIE92ZXIgcGVyaW9kcywgb25lIGZpZ3VyZSBwZXIKd2luZG93LgoKIyMgTGltaXRhdGlvbnMKCi0gT25seSBzaGlmdHMgdGhhdCB3ZXJlIHNjaGVkdWxlZCBhcmUgY291bnRlZC4gVW5yb3N0ZXJlZCB3b3JrIGRvZXMgbm90IGFwcGVhci4KLSBBIG5vLXNob3cgYW5kIGFuIGFic2VuY2UgYXJlIGNvdW50ZWQgc2VwYXJhdGVseSBidXQgYm90aCByZWR1Y2UgYXR0ZW5kYW5jZTsKICB0aGUgZGlzdGluY3Rpb24gaXMgaW4gdGhlIGRldGFpbCBsaW5lLCBub3QgaW4gdGhlIGhlYWRsaW5lIHJhdGUuCi0gVGhlIHJvc3RlciBpcyB3aG9ldmVyIGhhcyBzaGlmdCByZWNvcmRzLiBUaGlzIHdvcmtzcGFjZSBoYXMgdGhyZWUsIHNvIGEKICBkZXBhcnRtZW50IGF2ZXJhZ2UgaXMgb25lIHBlcnNvbidzIHJlY29yZCDigJQgdGhlIHBlci1wZXJzb24gdmlldyBpcyB0aGUgbW9yZQogIGhvbmVzdCByZWFkIGF0IHRoaXMgc2l6ZS4KLSBFeGN1c2VkIGFic2VuY2UgaXMgYSByZWNvZ25pc2VkIHN0YXR1cyBidXQgbm9uZSBpcyBjdXJyZW50bHkgcmVjb3JkZWQuCg==", "bytes": 3046, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "attendance-analysis", "name": "Attendance Analysis", "description": "Analyse workforce attendance, lateness and absence, and compare people and departments.", "category": "workforce", "pages": [ "analytics", "control-center" ], "status": "active", "version": 1, "triggers": [ "attendance", "absence", "absences", "absenteeism", "late arrival", "missed shift", "missed shifts" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How is attendance?", "capability": "summary" }, { "label": "Compare attendance by person", "capability": "table" }, { "label": "Attendance over recent periods", "capability": "flow" } ], "capabilities": [ "summary", "stats", "table", "progress", "flow", "insight" ], "responses": { "summary": { "title": "Attendance", "source": "workforce.attendance" }, "stats": { "title": "Attendance", "source": "workforce.attendance" }, "table": { "title": "Attendance by person", "source": "workforce.attendance" }, "progress": { "title": "Attendance by person", "source": "workforce.attendance" }, "flow": { "title": "Attendance over time", "source": "workforce.attendance", "periods": [ "last-7-days", "this-month", "previous-month" ] }, "insight": { "title": "Attendance", "source": "workforce.attendance" } } } }, "body": "# Attendance Analysis\n\n## Purpose\n\n- Report how reliably the workforce is turning up.\n- Separate turning up from turning up on time, because they have different causes.\n- Compare people and departments so a problem can be located rather than only counted.\n\n## Capabilities\n\n- Summarize attendance, punctuality and missed shifts.\n- Compare attendance per person, worst first.\n- Show attendance across recent periods.\n\n## Data\n\nReads `workforce.attendance`, which counts `ShiftRecord` entries — every shift\nscheduled, whether it was worked, how late it started and how long it ran.\nDepartment is the position's `role_category`, the same field Hired History and\nAnalytics group by.\n\n## Analysis\n\nAttendance is the share of scheduled shifts that were **turned up for at all**,\nlate or not. Punctuality is reported separately, as the share turned up for on\ntime. Folding the two together would make a reliably-late team look absent and\na genuinely absent one look better than it is.\n\nMinutes lost to lateness are reported alongside the count, because four late\narrivals says nothing about whether it cost ten minutes or two hours.\n\n## Output\n\nHeadline attendance and punctuality rates, missed shifts split into absences and\nno-shows, and a row per person with their record. Over periods, one figure per\nwindow.\n\n## Limitations\n\n- Only shifts that were scheduled are counted. Unrostered work does not appear.\n- A no-show and an absence are counted separately but both reduce attendance;\n the distinction is in the detail line, not in the headline rate.\n- The roster is whoever has shift records. This workspace has three, so a\n department average is one person's record — the per-person view is the more\n honest read at this size.\n- Excused absence is a recognised status but none is currently recorded." }, "parse": { "ok": true }, "normalized": { "id": "attendance-analysis", "name": "Attendance Analysis", "description": "Analyse workforce attendance, lateness and absence, and compare people and departments.", "status": "active", "pages": [ "analytics", "control-center" ], "kind": "assistant", "category": "workforce", "actions": [], "triggers": [ "attendance", "absence", "absences", "absenteeism", "late arrival", "missed shift", "missed shifts" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/candidate-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBjYW5kaWRhdGUtYW5hbHlzaXMKbmFtZTogQ2FuZGlkYXRlIEFuYWx5c2lzCmRlc2NyaXB0aW9uOiBBbmFseXNlIHRoZSBhcHBsaWNhbnQgcG9vbCdzIHF1YWxpdHksIGFuZCBob3cgbXVjaCBvZiBpdCBoYXMgYWN0dWFsbHkgYmVlbiBzY3JlZW5lZC4KY2F0ZWdvcnk6IGhpcmluZwpwYWdlczoKICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGNhbmRpZGF0ZSBxdWFsaXR5CiAgLSBxdWFsaXR5IG9mIGNhbmRpZGF0ZXMKICAtIHNjb3JlIGJhbmQKICAtIHNjb3JlIGJhbmRzCiAgLSBzY3JlZW5pbmcgY292ZXJhZ2UKICAtIGhvdyBzdHJvbmcqY2FuZGlkYXRlcwogIC0gaG93IGdvb2QqY2FuZGlkYXRlcwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBzdHJvbmcgaXMgdGhlIGNhbmRpZGF0ZSBwb29sPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBTaG93IGNhbmRpZGF0ZXMgYnkgc2NvcmUKICAgICAgY2FwYWJpbGl0eTogdGFibGUKICAgIC0gbGFiZWw6IFNjb3JlIGJhbmRzCiAgICAgIGNhcGFiaWxpdHk6IHByb2dyZXNzCiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGUgcXVhbGl0eQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMucXVhbGl0eQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGUgcXVhbGl0eQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMucXVhbGl0eQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGVzIGJ5IHNjb3JlCiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICAgIGxpbWl0OiAxMAogICAgbGlzdDoKICAgICAgdGl0bGU6IFN0cm9uZ2VzdCBjYW5kaWRhdGVzCiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICAgIGxpbWl0OiA1CiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IENhbmRpZGF0ZSBxdWFsaXR5CiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogQ2FuZGlkYXRlIHF1YWxpdHkKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLnF1YWxpdHkKLS0tCgojIENhbmRpZGF0ZSBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgaG93IHN0cm9uZyB0aGUgYXBwbGljYW50IHBvb2wgaXMuCi0gUmVwb3J0IGhvdyBtdWNoIG9mIGl0IGFueW9uZSBoYXMgYWN0dWFsbHkgbG9va2VkIGF0LCBiZXNpZGUgdGhlIHF1YWxpdHkgZmlndXJlLgotIFJhbmsgY2FuZGlkYXRlcyBieSBzY29yZSBzbyBhIHNob3J0bGlzdCBoYXMgYSBzdGFydGluZyBwb2ludC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcG9vbCBzaXplLCBzY3JlZW5pbmcgY292ZXJhZ2UsIGF2ZXJhZ2Ugc2NvcmUgYW5kIGludGVydmlldyBjb3VudC4KLSBMaXN0IG9yIHRhYnVsYXRlIGNhbmRpZGF0ZXMgYnkgc2NvcmUuCi0gQnJlYWsgdGhlIHNjb3JlZCBwb29sIGludG8gcXVhbGl0eSBiYW5kcy4KCiMjIERhdGEKClJlYWRzIGBjYW5kaWRhdGVzLnF1YWxpdHlgLCB3aGljaCBjb3VudHMgYEpvYkFwcGxpY2F0aW9uYCByZWNvcmRzIGFuZCB0aGVpcgpgYWlfc2NvcmVgLCBqb2luZWQgdG8gYEFJSW50ZXJ2aWV3YCByZWNvcmRzIGZvciBpbnRlcnZpZXcgY292ZXJhZ2UuCgojIyBBbmFseXNpcwoKQ292ZXJhZ2UgaXMgcmVwb3J0ZWQgbmV4dCB0byBxdWFsaXR5LCBhbHdheXMuIEFuIGF2ZXJhZ2Ugc2NvcmUgY29tcHV0ZWQgZnJvbSBhCmZpZnRoIG9mIHRoZSBwb29sIGlzIG5vdCB0aGUgcG9vbCdzIGF2ZXJhZ2UsIGFuZCByZXBvcnRpbmcgdGhlIGZpcnN0IHdpdGhvdXQgdGhlCnNlY29uZCBpcyBob3cgYSBoaXJpbmcgZGFzaGJvYXJkIHRhbGtzIGl0c2VsZiBpbnRvIGNvbmZpZGVuY2UuCgpTY29yZWQgY2FuZGlkYXRlcyBhcmUgZ3JvdXBlZCBpbnRvIGZvdXIgYmFuZHMg4oCUIDgwIGFuZCBhYm92ZSwgNzAgdG8gNzksIDUwIHRvIDY5LAphbmQgYmVsb3cgNTAg4oCUIGJlY2F1c2UgYSBtZWFuIGhpZGVzIHdoZXRoZXIgYSBwb29sIGlzIHVuaWZvcm1seSBtZWRpb2NyZSBvcgpzcGxpdCBiZXR3ZWVuIHN0cm9uZyBhbmQgd2Vhay4KCiMjIE91dHB1dAoKUG9vbCBzaXplLCBzaGFyZSBzY3JlZW5lZCwgYXZlcmFnZSBzY29yZSBhY3Jvc3Mgc2NvcmVkIGNhbmRpZGF0ZXMgb25seSwgYW5kCmludGVydmlldyBjb3VudC4gVGhlbiBjYW5kaWRhdGVzIHJhbmtlZCBieSBzY29yZSB3aXRoIHRoZWlyIHJvbGUgYW5kIHN0YWdlLgoKIyMgTGltaXRhdGlvbnMKCi0gVW5zY29yZWQgY2FuZGlkYXRlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgYXZlcmFnZSByYXRoZXIgdGhhbiBjb3VudGVkIGFzIHplcm8uCiAgVGhleSBhcmUgcmVwb3J0ZWQgc2VwYXJhdGVseSBhcyB0aGUgdW5zY3JlZW5lZCBzaGFyZS4KLSBBIHNjb3JlIGlzIGFuIEFJIHNjcmVlbmluZyBzY29yZSwgbm90IGFuIGludGVydmlldyBvdXRjb21lIG9yIGEgaGlyaW5nIGRlY2lzaW9uLgotIEZpbHRlcmluZyBieSBwZXJpb2QgY291bnRzIGFwcGxpY2F0aW9ucyBieSB3aGVuIHRoZXkgd2VyZSByZWNlaXZlZCwgbm90IGJ5IHdoZW4KICB0aGV5IHdlcmUgc2NyZWVuZWQuCg==", "bytes": 2725, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "candidate-analysis", "name": "Candidate Analysis", "description": "Analyse the applicant pool's quality, and how much of it has actually been screened.", "category": "hiring", "pages": [ "candidates", "candidates-analysis" ], "status": "active", "version": 1, "triggers": [ "candidate quality", "quality of candidates", "score band", "score bands", "screening coverage", "how strong*candidates", "how good*candidates" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How strong is the candidate pool?", "capability": "summary" }, { "label": "Show candidates by score", "capability": "table" }, { "label": "Score bands", "capability": "progress" } ], "capabilities": [ "summary", "stats", "table", "list", "progress", "insight" ], "responses": { "summary": { "title": "Candidate quality", "source": "candidates.quality" }, "stats": { "title": "Candidate quality", "source": "candidates.quality" }, "table": { "title": "Candidates by score", "source": "candidates.quality", "limit": 10 }, "list": { "title": "Strongest candidates", "source": "candidates.quality", "limit": 5 }, "progress": { "title": "Candidate quality", "source": "candidates.quality" }, "insight": { "title": "Candidate quality", "source": "candidates.quality" } } } }, "body": "# Candidate Analysis\n\n## Purpose\n\n- Report how strong the applicant pool is.\n- Report how much of it anyone has actually looked at, beside the quality figure.\n- Rank candidates by score so a shortlist has a starting point.\n\n## Capabilities\n\n- Summarize pool size, screening coverage, average score and interview count.\n- List or tabulate candidates by score.\n- Break the scored pool into quality bands.\n\n## Data\n\nReads `candidates.quality`, which counts `JobApplication` records and their\n`ai_score`, joined to `AIInterview` records for interview coverage.\n\n## Analysis\n\nCoverage is reported next to quality, always. An average score computed from a\nfifth of the pool is not the pool's average, and reporting the first without the\nsecond is how a hiring dashboard talks itself into confidence.\n\nScored candidates are grouped into four bands — 80 and above, 70 to 79, 50 to 69,\nand below 50 — because a mean hides whether a pool is uniformly mediocre or\nsplit between strong and weak.\n\n## Output\n\nPool size, share screened, average score across scored candidates only, and\ninterview count. Then candidates ranked by score with their role and stage.\n\n## Limitations\n\n- Unscored candidates are excluded from the average rather than counted as zero.\n They are reported separately as the unscreened share.\n- A score is an AI screening score, not an interview outcome or a hiring decision.\n- Filtering by period counts applications by when they were received, not by when\n they were screened." }, "parse": { "ok": true }, "normalized": { "id": "candidate-analysis", "name": "Candidate Analysis", "description": "Analyse the applicant pool's quality, and how much of it has actually been screened.", "status": "active", "pages": [ "candidates", "candidates-analysis" ], "kind": "assistant", "category": "hiring", "actions": [], "triggers": [ "candidate quality", "quality of candidates", "score band", "score bands", "screening coverage", "how strong*candidates", "how good*candidates" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/candidate-search.md", "type": "skill", "rawBase64": "LS0tCmlkOiBjYW5kaWRhdGUtc2VhcmNoCm5hbWU6IENhbmRpZGF0ZSBTZWFyY2gKZGVzY3JpcHRpb246IEhlbHAgT3dsaXZlciBzZWFyY2ggYW5kIHN1bW1hcml6ZSBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKc3RhdHVzOiBhY3RpdmUKYWN0aW9uczoKICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIENhbmRpZGF0ZSBTZWFyY2gKCiMjIFB1cnBvc2UKClJlYWQgdGhlIGNhbmRpZGF0ZSBwaXBlbGluZSBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHdobwppcyB3YWl0aW5nLCB3aG8gaXMgc3Ryb25nZXN0LCBhbmQgd2hlcmUgc2NyZWVuaW5nIGlzIGluY29tcGxldGUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIHRoZSBjYW5kaWRhdGUgcGlwZWxpbmUuCi0gSWRlbnRpZnkgY2FuZGlkYXRlcyB3YWl0aW5nIG9uIGEgZGVjaXNpb24uCi0gU3VyZmFjZSB1bnNjb3JlZCBvciBpbmNvbXBsZXRlIHJlY29yZHMuCi0gQ29tcGFyZSBjYW5kaWRhdGVzIGJ5IHNjcmVlbmluZyBzY29yZS4KCiMjIEFjdGlvbnMKCi0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwo=", "bytes": 605, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "candidate-search", "name": "Candidate Search", "description": "Help Owliver search and summarize candidates.", "pages": [ "candidates", "candidates-analysis" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Candidate Search\n\n## Purpose\n\nRead the candidate pipeline on the current page and answer questions about who\nis waiting, who is strongest, and where screening is incomplete.\n\n## Capabilities\n\n- Summarize the candidate pipeline.\n- Identify candidates waiting on a decision.\n- Surface unscored or incomplete records.\n- Compare candidates by screening score.\n\n## Actions\n\n- navigate_to_candidates" }, "parse": { "ok": true }, "normalized": { "id": "candidate-search", "name": "Candidate Search", "description": "Help Owliver search and summarize candidates.", "status": "active", "pages": [ "candidates", "candidates-analysis" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "candidate search" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/create-employee-role.md", "type": "skill", "rawBase64": "LS0tCmlkOiBjcmVhdGUtZW1wbG95ZWUtcm9sZQpuYW1lOiBDcmVhdGUgRW1wbG95ZWUgUm9sZQpkZXNjcmlwdGlvbjogUmVjb3JkIHdoYXQgYSB3b3JrZXIgZG9lcyDigJQgdGhlaXIgcm9sZSwgZXhwZXJpZW5jZSwgcGF5IGFuZCBhdmFpbGFiaWxpdHkg4oCUIGJ5IGFuc3dlcmluZyBhIGZldyBxdWVzdGlvbnMgaW4gdGhlIGNoYXQuCnBhZ2VzOgogIC0gdGFsZW50LXBvb2wKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnByb21wdDogQ3JlYXRlIGFuIGVtcGxveWVlIHJvbGUKZmxvdzogZW1wbG95ZWUtcm9sZQp0cmlnZ2VyczoKICAtIGNyZWF0ZSBhbiBlbXBsb3llZSByb2xlCiAgLSBjcmVhdGUgZW1wbG95ZWUgcm9sZQogIC0gY3JlYXRlIGVtcGxveWVlIHJvbGVzCiAgLSBhZGQgYW4gZW1wbG95ZWUgcm9sZQogIC0gYWRkIGVtcGxveWVlIHJvbGUKICAtIG5ldyBlbXBsb3llZSByb2xlCiAgLSBjcmVhdGUgYSB3b3JrZXIgcm9sZQogIC0gY3JlYXRlIHdvcmtlciByb2xlCiAgLSByZWNvcmQgYSByb2xlIGZvcgogIC0gYWRkIGEgd29ya2VyIHJvbGUKYWN0aW9uczoKICAtIGNyZWF0ZV9lbXBsb3llZV9yb2xlCi0tLQoKIyBDcmVhdGUgRW1wbG95ZWUgUm9sZQoKIyMgUHVycG9zZQoKUmVjb3JkIGEgd29ya2VyJ3MgZGVjbGFyZWQgcHJvZmVzc2lvbmFsIHJvbGUgd2l0aG91dCBsZWF2aW5nIHRoZSBwYWdlLiBPd2xpdmVyCmFza3Mgb25lIHF1ZXN0aW9uIGF0IGEgdGltZSwgb2ZmZXJzIHRoZSBhbnN3ZXJzIGFzIGNoaXBzLCBhbmQgcmVhZHMgdGhlIHdob2xlCnRoaW5nIGJhY2sgYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4uCgoqKlRoaXMgaXMgbm90IENyZWF0ZSBQb3NpdGlvbiwgYW5kIHRoZSBkaWZmZXJlbmNlIGlzIHRoZSBwb2ludC4qKiBBIHBvc2l0aW9uIGlzCndoYXQgdGhlIE9SR0FOSVpBVElPTiBuZWVkcyBmaWxsZWQg4oCUIGEgY29tcGFueSwgYSB0aXRsZSwgYSBwYXkgcmFuZ2UgaXQgd2lsbApwYXkuIEFuIGVtcGxveWVlIHJvbGUgaXMgd2hhdCBhIFdPUktFUiBzYXlzIHRoZXkgZG8g4oCUIHRoZSByb2xlIHRoZXkgcHJlc2VudAp0aGVtc2VsdmVzIGFzLCB0aGUgZXhwZXJpZW5jZSB0aGV5IGhhdmUsIGFuZCB0aGUgcGF5IHRoZXkgYXJlIGxvb2tpbmcgZm9yLiBUaGUKdHdvIHNoYXJlIGEgdm9jYWJ1bGFyeSBhbmQgbm90aGluZyBlbHNlOiAiMyB5ZWFycyIgb24gYSBwb3NpdGlvbiBpcyBhIG1pbmltdW0gYW4KYXBwbGljYW50IG11c3QgY2xlYXIsIGFuZCB0aGUgc2FtZSB3b3JkcyBoZXJlIGFyZSB3aGF0IHRoaXMgcGVyc29uIGhhcy4KClRoZXkgYXJlIG5ldmVyIGpvaW5lZCBieSBhIGNvbHVtbi4gU3VwcGx5IGFuZCBkZW1hbmQgbWVldCB0aHJvdWdoIGFwcGxpY2F0aW9ucywKd2hpY2ggYWxyZWFkeSBjYXJyeSB0aGUgZnVubmVsLCB0aGUgaW50ZXJ2aWV3IGFuZCB0aGUgb3V0Y29tZS4KCiMjIENhcGFiaWxpdGllcwoKLSBVbmRlcnN0YW5kIHJlcXVlc3RzIHRvIHJlY29yZCB3aGF0IGEgd29ya2VyIGRvZXMuCi0gQXNrIHdobyB0aGUgcm9sZSBpcyBmb3IsIGFuZCByZXNvbHZlIHRoZSBhbnN3ZXIgdG8gYSByZWFsIHdvcmtlciBwcm9maWxlLgotIFJlYWQgdGhlIHJvbGUsIGV4cGVyaWVuY2UsIEVuZ2xpc2ggbGV2ZWwsIGNlcnRpZmljYXRpb25zLCBkZXNpcmVkIHBheSBhbmQKICBhdmFpbGFiaWxpdHkgb3V0IG9mIGEgc2luZ2xlIHNlbnRlbmNlLgotIEFzayBvbmx5IGZvciB3aGF0IHRoZSByZXF1ZXN0IGRpZCBub3QgYWxyZWFkeSBhbnN3ZXIuCi0gT2ZmZXIgZWFjaCBhbnN3ZXIgYXMgYSBzdWdnZXN0aW9uLCBzbyB0aGUgd2hvbGUgZmxvdyBjYW4gYmUgY2xpY2tlZC4KLSBSZWFkIHRoZSByb2xlIGJhY2sgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgcmVjb3JkaW5nIGl0LgoKIyMgQ29udmVyc2F0aW9uCgpFYWNoIGxpbmUgaXMgYGZpZWxkIHwgcXVlc3Rpb24gfCBzdWdnZXN0aW9ucyB8IHJlcXVpcmVkP2AuIFN1Z2dlc3Rpb25zIGJlZ2lubmluZwp3aXRoIGBAYCBjb21lIGZyb20gdGhlIGFwcGxpY2F0aW9uJ3Mgb3duIGRhdGEuCgpgQHdvcmtlcnNgIGlzIHRoZSB3b3JrZXIgcHJvZmlsZXMgYWxyZWFkeSBvbiBzY3JlZW4gZm9yIHRoaXMgb3JnYW5pemF0aW9uLgpQaWNraW5nIG9uZSByZWNvcmRzIHRoZSByb2xlIGFnYWluc3QgdGhhdCBwZXJzb24ncyBwcm9maWxlIGFuZCBlbWFpbDsgdHlwaW5nIGFuCmVtYWlsIGFkZHJlc3MgdGhhdCBoYXMgbm8gcHJvZmlsZSB5ZXQgYWxzbyB3b3JrcywgYmVjYXVzZSBhIHJvbGUgY2FuIGJlIGRlY2xhcmVkCmJlZm9yZSBhIHByb2ZpbGUgZXhpc3RzLiBUaGUgd29ya2VyIGlzIGFsd2F5cyBhc2tlZCBmb3IgYW5kIGlzIG5ldmVyIGFzc3VtZWQgdG8KYmUgd2hvZXZlciBpcyB0eXBpbmcg4oCUIGFuIG9wZXJhdG9yIHJlY29yZHMgdGhpcyBvbiBzb21lYm9keSdzIGJlaGFsZi4KCi0gd29ya2VyIHwgV2hpY2ggd29ya2VyIGlzIHRoaXMgcm9sZSBmb3I/IFR5cGUgdGhlaXIgbmFtZSBvciBlbWFpbC4gfCBAd29ya2VycyB8IHJlcXVpcmVkCi0gcm9sZV9jYXRlZ29yeSB8IFdoYXQgcm9sZSBkbyB0aGV5IHdvcmsgYXM/IHwgQHJvbGVzIHwgcmVxdWlyZWQKLSBleHBlcmllbmNlX3llYXJzIHwgSG93IG11Y2ggZXhwZXJpZW5jZSBkbyB0aGV5IGhhdmU/IHwgTm8gZXhwZXJpZW5jZTsgMSB5ZWFyOyAyIHllYXJzOyAzKyB5ZWFycyB8IG9wdGlvbmFsCi0gZW5nbGlzaF9sZXZlbCB8IFdoYXQgaXMgdGhlaXIgRW5nbGlzaCBsZXZlbD8gfCBAZW5nbGlzaCB8IG9wdGlvbmFsCi0gY2VydGlmaWNhdGlvbnMgfCBBbnkgY2VydGlmaWNhdGlvbnMgdGhleSBob2xkPyB8IEBjZXJ0aWZpY2F0aW9uczsgTm9uZSB8IG9wdGlvbmFsCi0gZGVzaXJlZF9wYXkgfCBXaGF0IHBheSBhcmUgdGhleSBsb29raW5nIGZvcj8gfCAkMTjigJMkMjgvaHI7ICQyNeKAkyQzNS9ocjsgJDMw4oCTJDQwL2hyOyBDdXN0b20gfCBvcHRpb25hbAotIGF2YWlsYWJpbGl0eSB8IFdoZW4gYXJlIHRoZXkgYXZhaWxhYmxlPyB8IEBhdmFpbGFiaWxpdHkgfCBvcHRpb25hbAotIG5vdGVzIHwgQW55dGhpbmcgZWxzZSB3b3J0aCByZWNvcmRpbmc/IHwgfCBvcHRpb25hbAoKIyMgQWN0aW9ucwoKLSBjcmVhdGVfZW1wbG95ZWVfcm9sZQo=", "bytes": 3110, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "create-employee-role", "name": "Create Employee Role", "description": "Record what a worker does — their role, experience, pay and availability — by answering a few questions in the chat.", "pages": [ "talent-pool", "positions" ], "status": "active", "version": 1, "prompt": "Create an employee role", "flow": "employee-role", "triggers": [ "create an employee role", "create employee role", "create employee roles", "add an employee role", "add employee role", "new employee role", "create a worker role", "create worker role", "record a role for", "add a worker role" ], "actions": [ "create_employee_role" ] }, "body": "# Create Employee Role\n\n## Purpose\n\nRecord a worker's declared professional role without leaving the page. Owliver\nasks one question at a time, offers the answers as chips, and reads the whole\nthing back before anything is written.\n\n**This is not Create Position, and the difference is the point.** A position is\nwhat the ORGANIZATION needs filled — a company, a title, a pay range it will\npay. An employee role is what a WORKER says they do — the role they present\nthemselves as, the experience they have, and the pay they are looking for. The\ntwo share a vocabulary and nothing else: \"3 years\" on a position is a minimum an\napplicant must clear, and the same words here are what this person has.\n\nThey are never joined by a column. Supply and demand meet through applications,\nwhich already carry the funnel, the interview and the outcome.\n\n## Capabilities\n\n- Understand requests to record what a worker does.\n- Ask who the role is for, and resolve the answer to a real worker profile.\n- Read the role, experience, English level, certifications, desired pay and\n availability out of a single sentence.\n- Ask only for what the request did not already answer.\n- Offer each answer as a suggestion, so the whole flow can be clicked.\n- Read the role back for confirmation before recording it.\n\n## Conversation\n\nEach line is `field | question | suggestions | required?`. Suggestions beginning\nwith `@` come from the application's own data.\n\n`@workers` is the worker profiles already on screen for this organization.\nPicking one records the role against that person's profile and email; typing an\nemail address that has no profile yet also works, because a role can be declared\nbefore a profile exists. The worker is always asked for and is never assumed to\nbe whoever is typing — an operator records this on somebody's behalf.\n\n- worker | Which worker is this role for? Type their name or email. | @workers | required\n- role_category | What role do they work as? | @roles | required\n- experience_years | How much experience do they have? | No experience; 1 year; 2 years; 3+ years | optional\n- english_level | What is their English level? | @english | optional\n- certifications | Any certifications they hold? | @certifications; None | optional\n- desired_pay | What pay are they looking for? | $18–$28/hr; $25–$35/hr; $30–$40/hr; Custom | optional\n- availability | When are they available? | @availability | optional\n- notes | Anything else worth recording? | | optional\n\n## Actions\n\n- create_employee_role" }, "parse": { "ok": true }, "normalized": { "id": "create-employee-role", "name": "Create Employee Role", "description": "Record what a worker does — their role, experience, pay and availability — by answering a few questions in the chat.", "status": "active", "pages": [ "talent-pool", "positions" ], "kind": "assistant", "category": "", "actions": [ "create_employee_role" ], "triggers": [ "create an employee role", "create employee role", "create employee roles", "add an employee role", "add employee role", "new employee role", "create a worker role", "create worker role", "record a role for", "add a worker role" ], "declaredTriggers": true, "prompt": "Create an employee role", "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/create-position.md", "type": "skill", "rawBase64": "LS0tCmlkOiBjcmVhdGUtcG9zaXRpb24KbmFtZTogQ3JlYXRlIFBvc2l0aW9uCmRlc2NyaXB0aW9uOiBDcmVhdGUgYSBwb3NpdGlvbiBieSBhbnN3ZXJpbmcgYSBmZXcgcXVlc3Rpb25zIGluIHRoZSBjaGF0LgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQpwcm9tcHQ6IENyZWF0ZSBhIHBvc2l0aW9uCnRyaWdnZXJzOgogIC0gY3JlYXRlIGEgcG9zaXRpb24KICAtIGNyZWF0ZSBwb3NpdGlvbgogICMgQSBjbGllbnQgaXMgdGhlIGNvbXBhbnkgYSBwb3NpdGlvbiBpcyBzdGFmZmVkIGZvciwgc28gYXNraW5nIGZvciBvbmUgc3RhcnRzCiAgIyB0aGUgc2FtZSBjb252ZXJzYXRpb24g4oCUIGl0IHNpbXBseSBsZWFkcyB3aXRoIHRoZSBjb21wYW55IHF1ZXN0aW9uLgogIC0gY3JlYXRlIGEgY2xpZW50CiAgLSBjcmVhdGUgY2xpZW50CiAgLSBhZGQgYSBjbGllbnQKICAtIG5ldyBjbGllbnQKICAtIGNyZWF0ZSBhICogcG9zaXRpb24KICAtIGNyZWF0ZSAqIHBvc2l0aW9uCiAgLSBuZXcgcG9zaXRpb24KICAtIG5ldyAqIHBvc2l0aW9uCiAgLSBwb3N0IGEgam9iCiAgLSBwb3N0IGEgKiBqb2IKICAtIG9wZW4gYSByb2xlCiAgLSBvcGVuIGEgKiByb2xlCiAgLSBhZGQgYSBwb3NpdGlvbgogIC0gaSB3YW50IHRvIGhpcmUKYWN0aW9uczoKICAtIGNyZWF0ZV9wb3NpdGlvbgotLS0KCiMgQ3JlYXRlIFBvc2l0aW9uCgojIyBQdXJwb3NlCgpDcmVhdGUgYSBwb3NpdGlvbiB3aXRob3V0IGxlYXZpbmcgdGhlIFBvc2l0aW9ucyBwYWdlLiBPd2xpdmVyIGFza3MgZm9yIHdoYXQgaXQKZG9lcyBub3QgYWxyZWFkeSBrbm93LCBvbmUgcXVlc3Rpb24gYXQgYSB0aW1lLCBvZmZlcnMgdGhlIGFuc3dlcnMgYXMgY2hpcHMsIHRoZW4KcmVhZHMgdGhlIHdob2xlIHRoaW5nIGJhY2sgYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4uCgpObyBmb3JtIG9wZW5zLiBObyBwYWdlIGlzIG5hdmlnYXRlZCB0by4gVGhlIHJlY29yZCBjcmVhdGVkIGlzIHRoZSBzYW1lCmBKb2JQb3N0aW5nYCB0aGUgbWFudWFsIGZvcm0gd3JpdGVzLCB0aHJvdWdoIHRoZSBzYW1lIGNyZWF0ZSBhY3Rpb24uCgojIyBDYXBhYmlsaXRpZXMKCi0gVW5kZXJzdGFuZCByZXF1ZXN0cyB0byBjcmVhdGUgcG9zaXRpb25zLgotIFJlYWQgdGhlIHJvbGUsIGxvY2F0aW9uLCBwYXksIGV4cGVyaWVuY2UsIEVuZ2xpc2ggbGV2ZWwgYW5kIGNlcnRpZmljYXRpb25zIG91dAogIG9mIGEgc2luZ2xlIHNlbnRlbmNlLgotIEFzayBvbmx5IGZvciB3aGF0IHRoZSByZXF1ZXN0IGRpZCBub3QgYWxyZWFkeSBhbnN3ZXIuCi0gT2ZmZXIgZWFjaCBhbnN3ZXIgYXMgYSBzdWdnZXN0aW9uLCBzbyB0aGUgd2hvbGUgZmxvdyBjYW4gYmUgY2xpY2tlZC4KLSBSZWFkIHRoZSBwb3NpdGlvbiBiYWNrIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGNyZWF0aW5nIGl0LgotIENyZWF0ZSB0aGUgcG9zaXRpb24gb24gdGhlIHBhZ2UgeW91IGFyZSBhbHJlYWR5IG9uLgoKIyMgQ29udmVyc2F0aW9uCgpFYWNoIGxpbmUgaXMgYGZpZWxkIHwgcXVlc3Rpb24gfCBzdWdnZXN0aW9ucyB8IHJlcXVpcmVkP2AuIFN1Z2dlc3Rpb25zIGJlZ2lubmluZwp3aXRoIGBAYCBjb21lIGZyb20gdGhlIGFwcGxpY2F0aW9uJ3Mgb3duIGRhdGEsIHNvIGEgcm9sZSBjYXRlZ29yeSBhZGRlZCBpbiB0aGUKZm9ybSBpcyBvZmZlcmVkIGhlcmUgd2l0aG91dCB0aGlzIGZpbGUgY2hhbmdpbmcuCgpgQGNvbXBhbmllc2AgaXMgdGhlIGNsaWVudHMgdGhpcyBvcmdhbml6YXRpb24gYWxyZWFkeSBzdGFmZnMgZm9yLCByZWFkIG9mZiB0aGUKcG9zdGluZ3MgYWxyZWFkeSBvbiBzY3JlZW4uIFBpY2tpbmcgb25lIGlzIGEgdGFwOyB0eXBpbmcgYSBuYW1lIHRoYXQgaXMgbm90IG9uCnRoZSBsaXN0IGlzIGhvdyBhIG5ldyBjbGllbnQgaXMgbmFtZWQsIHdoaWNoIGlzIGFsbCAiY3JlYXRlIGEgY2xpZW50IiBoYXMgZXZlcgptZWFudCBoZXJlIOKAlCB0aGUgY29tcGFueSBpcyBhIGZpZWxkIG9uIHRoZSBwb3NpdGlvbiwgbm90IGEgcmVjb3JkIG9mIGl0cyBvd24uCgotIGNvbXBhbnkgfCBXaGljaCBjbGllbnQgaXMgdGhpcyByb2xlIGZvcj8gfCBAY29tcGFuaWVzIHwgcmVxdWlyZWQKLSByb2xlX2NhdGVnb3J5IHwgV2hhdCByb2xlIGFyZSB5b3UgaGlyaW5nIGZvcj8gfCBAcm9sZXMgfCByZXF1aXJlZAotIGxvY2F0aW9uIHwgV2hlcmUgd2lsbCB0aGlzIHJvbGUgYmUgYmFzZWQ/IHwgQ2hlbm5haTsgQmVuZ2FsdXJ1OyBDb2ltYmF0b3JlOyBCYXkgQXJlYTsgT3RoZXIgfCByZXF1aXJlZAotIHBheSB8IFdoYXQgaXMgdGhlIHBheSByYW5nZT8gfCAkMTjigJMkMjgvaHI7ICQyNeKAkyQzNS9ocjsgJDMw4oCTJDQwL2hyOyBDdXN0b20gfCByZXF1aXJlZAotIG1pbl9leHBlcmllbmNlX3llYXJzIHwgQW55IG1pbmltdW0gZXhwZXJpZW5jZT8gfCBObyBtaW5pbXVtOyAxIHllYXI7IDIgeWVhcnM7IDMrIHllYXJzIHwgb3B0aW9uYWwKLSBlbmdsaXNoX3JlcXVpcmVkIHwgV2hhdCBpcyB0aGUgbWluaW11bSBFbmdsaXNoIGxldmVsPyB8IEBlbmdsaXNoIHwgb3B0aW9uYWwKLSBjZXJ0aWZpY2F0aW9uc19yZXF1aXJlZCB8IEFueSByZXF1aXJlZCBjZXJ0aWZpY2F0aW9ucz8gfCBAY2VydGlmaWNhdGlvbnM7IE5vbmUgfCBvcHRpb25hbAoKIyMgQWN0aW9ucwoKLSBjcmVhdGVfcG9zaXRpb24K", "bytes": 2652, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "create-position", "name": "Create Position", "description": "Create a position by answering a few questions in the chat.", "pages": [ "positions" ], "status": "active", "prompt": "Create a position", "triggers": [ "create a position", "create position", "create a client", "create client", "add a client", "new client", "create a * position", "create * position", "new position", "new * position", "post a job", "post a * job", "open a role", "open a * role", "add a position", "i want to hire" ], "actions": [ "create_position" ] }, "body": "# Create Position\n\n## Purpose\n\nCreate a position without leaving the Positions page. Owliver asks for what it\ndoes not already know, one question at a time, offers the answers as chips, then\nreads the whole thing back before anything is written.\n\nNo form opens. No page is navigated to. The record created is the same\n`JobPosting` the manual form writes, through the same create action.\n\n## Capabilities\n\n- Understand requests to create positions.\n- Read the role, location, pay, experience, English level and certifications out\n of a single sentence.\n- Ask only for what the request did not already answer.\n- Offer each answer as a suggestion, so the whole flow can be clicked.\n- Read the position back for confirmation before creating it.\n- Create the position on the page you are already on.\n\n## Conversation\n\nEach line is `field | question | suggestions | required?`. Suggestions beginning\nwith `@` come from the application's own data, so a role category added in the\nform is offered here without this file changing.\n\n`@companies` is the clients this organization already staffs for, read off the\npostings already on screen. Picking one is a tap; typing a name that is not on\nthe list is how a new client is named, which is all \"create a client\" has ever\nmeant here — the company is a field on the position, not a record of its own.\n\n- company | Which client is this role for? | @companies | required\n- role_category | What role are you hiring for? | @roles | required\n- location | Where will this role be based? | Chennai; Bengaluru; Coimbatore; Bay Area; Other | required\n- pay | What is the pay range? | $18–$28/hr; $25–$35/hr; $30–$40/hr; Custom | required\n- min_experience_years | Any minimum experience? | No minimum; 1 year; 2 years; 3+ years | optional\n- english_required | What is the minimum English level? | @english | optional\n- certifications_required | Any required certifications? | @certifications; None | optional\n\n## Actions\n\n- create_position" }, "parse": { "ok": true }, "normalized": { "id": "create-position", "name": "Create Position", "description": "Create a position by answering a few questions in the chat.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [ "create_position" ], "triggers": [ "create a position", "create position", "create a client", "create client", "add a client", "new client", "create a * position", "create * position", "new position", "new * position", "post a job", "post a * job", "open a role", "open a * role", "add a position", "i want to hire" ], "declaredTriggers": true, "prompt": "Create a position", "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/executive-summary.md", "type": "skill", "rawBase64": "LS0tCmlkOiBleGVjdXRpdmUtc3VtbWFyeQpuYW1lOiBFeGVjdXRpdmUgU3VtbWFyeQpkZXNjcmlwdGlvbjogVGhlIHdob2xlIHdvcmtzcGFjZSBpbiBvbmUgcmVhZGluZyDigJQgcG9zaXRpb25zLCBjYW5kaWRhdGVzLCBoaXJlcywgdGFsZW50IGFuZCBhdHRlbmRhbmNlLgpjYXRlZ29yeTogYW5hbHl0aWNzCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGV4ZWN1dGl2ZSBzdW1tYXJ5CiAgLSB3b3Jrc3BhY2Ugc3VtbWFyeQogIC0gb3ZlcmFsbCBzdW1tYXJ5CiAgLSBzdGF0ZSBvZiB0aGUgd29ya3NwYWNlCiAgLSBicmllZiBtZQpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEdpdmUgbWUgYW4gZXhlY3V0aXZlIHN1bW1hcnkKICAgICAgY2FwYWJpbGl0eTogc3VtbWFyeQogICAgLSBsYWJlbDogU2hvdyB0aGUgaGVhZGxpbmUgZmlndXJlcwogICAgICBjYXBhYmlsaXR5OiBzdGF0cwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBzdGF0cwogICAgLSBjYXJkCiAgICAtIHRhYmxlCiAgICAtIGluc2lnaHQKICByZXNwb25zZXM6CiAgICBzdW1tYXJ5OgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBXb3Jrc3BhY2Ugc3VtbWFyeQogICAgICBzb3VyY2U6IHdvcmtzcGFjZS5zdW1tYXJ5CiAgICBjYXJkOgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBXb3Jrc3BhY2Ugc3VtbWFyeQogICAgICBzb3VyY2U6IHdvcmtzcGFjZS5zdW1tYXJ5CiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQotLS0KCiMgRXhlY3V0aXZlIFN1bW1hcnkKCiMjIFB1cnBvc2UKCi0gR2l2ZSBhIG1hbmFnZW1lbnQtbGV2ZWwgcmVhZGluZyBvZiB0aGUgd2hvbGUgd29ya3NwYWNlIGluIG9uZSBhbnN3ZXIuCi0gRHJhdyBldmVyeSBmaWd1cmUgZnJvbSB0aGUgc291cmNlIHRoYXQgb3ducyBpdCwgc28gdGhlIHN1bW1hcnkgY2Fubm90IGRyaWZ0CiAgZnJvbSB0aGUgcGFnZXMgaXQgc3VtbWFyaXplcy4KCiMjIENhcGFiaWxpdGllcwoKLSBSZXBvcnQgb3BlbiByb2xlcywgY2FuZGlkYXRlcywgaGlyZXMsIHRhbGVudCBwb29sIHNpemUsIGF0dGVuZGFuY2UgYW5kIGxvZ2dlZCBldmVudHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya3NwYWNlLnN1bW1hcnlgLCB3aGljaCBjb3VudHMgYEpvYlBvc3RpbmdgLCBgSm9iQXBwbGljYXRpb25gLCBgU3RhZmZgLApgV29ya2VyUHJvZmlsZWAsIGBVc2VyQWN0aXZpdHlgIGFuZCBgU2hpZnRSZWNvcmRgLgoKIyMgQW5hbHlzaXMKCkVhY2ggZmlndXJlIGlzIHJlYWQgZnJvbSB0aGUgZG9tYWluIHRoYXQgb3ducyBpdCByYXRoZXIgdGhhbiByZWNvbXB1dGVkIGhlcmUuIEEKZG9tYWluIHdpdGggbm8gcmVjb3JkcyBjb250cmlidXRlcyBhIHplcm8gYW5kIHNheXMgc28gaW4gaXRzIGRldGFpbCBsaW5lIOKAlCB0aGUKc3VtbWFyeSByZXBvcnRzIHdoYXQgaXMgdGhlcmUsIGluY2x1ZGluZyBhbiBhYnNlbmNlLgoKIyMgT3V0cHV0CgpTaXggaGVhZGxpbmUgZmlndXJlczogb3BlbiByb2xlcywgY2FuZGlkYXRlcywgaGlyZXMsIHRhbGVudCBwb29sLCBhdHRlbmRhbmNlCnJhdGUgYW5kIGV2ZW50cyBsb2dnZWQsIGVhY2ggd2l0aCBhIHN1cHBvcnRpbmcgZGV0YWlsLgoKIyMgTGltaXRhdGlvbnMKCi0gVGhpcyBpcyBhIGNvdW50LCBub3QgYSBkaWFnbm9zaXMuIFdoaWNoIGZpZ3VyZXMgYXJlIGEgcHJvYmxlbSBpcyB3aGF0IFN0YWZmaW5nCiAgUmlzaywgT3BlcmF0aW9uYWwgUmlzayBhbmQgQW5vbWFseSBEZXRlY3Rpb24gYW5zd2VyLgotIEF0dGVuZGFuY2UgaXMgMCB3aGVyZSBubyBzaGlmdHMgaGF2ZSBiZWVuIHJlY29yZGVkLCBhbmQgdGhlIGRldGFpbCBsaW5lIHNheXMKICBzbyByYXRoZXIgdGhhbiBpbXBseWluZyBub2JvZHkgdHVybmVkIHVwLgotIE5vIHRyZW5kIG9yIGNvbXBhcmlzb24gdG8gYSBwcmV2aW91cyBwZXJpb2QgaXMgaW5jbHVkZWQuCg==", "bytes": 2152, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "executive-summary", "name": "Executive Summary", "description": "The whole workspace in one reading — positions, candidates, hires, talent and attendance.", "category": "analytics", "pages": [ "control-center" ], "status": "active", "version": 1, "triggers": [ "executive summary", "workspace summary", "overall summary", "state of the workspace", "brief me" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Give me an executive summary", "capability": "summary" }, { "label": "Show the headline figures", "capability": "stats" } ], "capabilities": [ "summary", "stats", "card", "table", "insight" ], "responses": { "summary": { "title": "Workspace summary", "source": "workspace.summary" }, "stats": { "title": "Workspace summary", "source": "workspace.summary" }, "card": { "title": "Workspace summary", "source": "workspace.summary" }, "table": { "title": "Workspace summary", "source": "workspace.summary" }, "insight": { "title": "Workspace summary", "source": "workspace.summary" } } } }, "body": "# Executive Summary\n\n## Purpose\n\n- Give a management-level reading of the whole workspace in one answer.\n- Draw every figure from the source that owns it, so the summary cannot drift\n from the pages it summarizes.\n\n## Capabilities\n\n- Report open roles, candidates, hires, talent pool size, attendance and logged events.\n\n## Data\n\nReads `workspace.summary`, which counts `JobPosting`, `JobApplication`, `Staff`,\n`WorkerProfile`, `UserActivity` and `ShiftRecord`.\n\n## Analysis\n\nEach figure is read from the domain that owns it rather than recomputed here. A\ndomain with no records contributes a zero and says so in its detail line — the\nsummary reports what is there, including an absence.\n\n## Output\n\nSix headline figures: open roles, candidates, hires, talent pool, attendance\nrate and events logged, each with a supporting detail.\n\n## Limitations\n\n- This is a count, not a diagnosis. Which figures are a problem is what Staffing\n Risk, Operational Risk and Anomaly Detection answer.\n- Attendance is 0 where no shifts have been recorded, and the detail line says\n so rather than implying nobody turned up.\n- No trend or comparison to a previous period is included." }, "parse": { "ok": true }, "normalized": { "id": "executive-summary", "name": "Executive Summary", "description": "The whole workspace in one reading — positions, candidates, hires, talent and attendance.", "status": "active", "pages": [ "control-center" ], "kind": "assistant", "category": "analytics", "actions": [], "triggers": [ "executive summary", "workspace summary", "overall summary", "state of the workspace", "brief me" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/forge-skill-management.md", "type": "skill", "rawBase64": "LS0tCmlkOiBmb3JnZS1za2lsbC1tYW5hZ2VtZW50Cm5hbWU6IEZvcmdlIFNraWxsIE1hbmFnZW1lbnQKZGVzY3JpcHRpb246IENyZWF0ZSB3b3JrZm9yY2Ugc2tpbGxzLCB0cmFpbmluZyBhbmQgdmVyaWZpY2F0aW9uIGluIEtST1cgRm9yZ2UuCnBhZ2VzOgogIC0gdW5pdmVyc2l0eQpzdGF0dXM6IGFjdGl2ZQpwcm9tcHQ6IENyZWF0ZSBhIHNraWxsCnRyaWdnZXJzOgogIC0gY3JlYXRlIGEgc2tpbGwKICAtIGNyZWF0ZSBza2lsbAogIC0gY3JlYXRlIGEgbmV3IHNraWxsCiAgLSBjcmVhdGUgYSBza2lsbCBmb3IgKgogIC0gY3JlYXRlIGEgKiBza2lsbAogIC0gbmV3IHNraWxsCiAgLSBhZGQgYSBza2lsbAogIC0gYnVpbGQgYSBza2lsbAogIC0gZHJhZnQgYSBza2lsbAogIC0gY3JlYXRlIGEgc2tpbGwgdHJhaW5pbmcKICAtIGNyZWF0ZSBza2lsbCB0cmFpbmluZwogIC0gYWRkIHNraWxsIHRyYWluaW5nCiAgLSBjcmVhdGUgdHJhaW5pbmcKICAtIGNyZWF0ZSBhIHRyYWluaW5nIGZvciAqCiAgLSBjcmVhdGUgdHJhaW5pbmcgZm9yICoKICAtIGNyZWF0ZSBhICogdHJhaW5pbmcKICAtIGFkZCB0cmFpbmluZwogIC0gYWRkIHRyYWluaW5nIHRvICoKICAtIGJ1aWxkIHRyYWluaW5nCiAgLSB3cml0ZSB0cmFpbmluZwogIC0gY3JlYXRlIGEgY2hhbGxlbmdlIGZvciAqCiAgLSBhZGQgYSBjaGFsbGVuZ2UgZm9yICoKICAtIHJldmlldyB0aGUgKiBza2lsbAogIC0gcmV2aWV3IHNraWxsCmFjdGlvbnM6CiAgLSBvcGVuX2NyZWF0ZV9za2lsbF90cmFpbmluZwogIC0gb3Blbl9jcmVhdGVfdHJhaW5pbmcKICAtIG5hdmlnYXRlX3RvX2ZvcmdlCi0tLQoKIyBGb3JnZSBTa2lsbCBNYW5hZ2VtZW50CgojIyBQdXJwb3NlCgpIZWxwIGFuIGFkbWluaXN0cmF0b3IgYnVpbGQgdGhlIHdvcmtmb3JjZSBza2lsbCBsaWJyYXJ5OiBkZWZpbmUgd2hhdCB0aGUKd29ya2ZvcmNlIG11c3QgYmUgYWJsZSB0byBkbywgd3JpdGUgdGhlIHRyYWluaW5nIHRoYXQgdGVhY2hlcyBpdCwgZGVjaWRlIHdoYXQKY291bnRzIGFzIHByb29mLCBhbmQgc2F5IHdoYXQgdGhlIGV2YWx1YXRpb24gY2hlY2tzIOKAlCB1c2luZyB0aGUgRm9yZ2UgYXV0aG9yaW5nCmZsb3cgdGhlIHBhZ2UgYWxyZWFkeSBoYXMuCgpPd2xpdmVyIG5ldmVyIHB1Ymxpc2hlcy4gSXQgZHJhZnRzLCBhbmQgaGFuZHMgdGhlIGRyYWZ0IGJhY2sgdG8gdGhlIGV4aXN0aW5nCmZsb3cgZm9yIHJldmlldywgd2hpY2ggaXMgdGhlIHNhbWUgcnVsZSBDcmVhdGUgUG9zaXRpb24gZm9sbG93cy4KCiMjIENhcGFiaWxpdGllcwoKLSBDcmVhdGUgd29ya2ZvcmNlIHNraWxscwotIENyZWF0ZSB0cmFpbmluZwotIERlZmluZSB2ZXJpZmljYXRpb24KLSBFeHBsYWluIEZvcmdlIHNraWxscwotIE5hdmlnYXRlIEZvcmdlIHdvcmtmbG93cwoKIyMgQWN0aW9ucwoKLSBvcGVuX2NyZWF0ZV9za2lsbF90cmFpbmluZwotIG9wZW5fY3JlYXRlX3RyYWluaW5nCi0gbmF2aWdhdGVfdG9fZm9yZ2UK", "bytes": 1479, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "forge-skill-management", "name": "Forge Skill Management", "description": "Create workforce skills, training and verification in KROW Forge.", "pages": [ "university" ], "status": "active", "prompt": "Create a skill", "triggers": [ "create a skill", "create skill", "create a new skill", "create a skill for *", "create a * skill", "new skill", "add a skill", "build a skill", "draft a skill", "create a skill training", "create skill training", "add skill training", "create training", "create a training for *", "create training for *", "create a * training", "add training", "add training to *", "build training", "write training", "create a challenge for *", "add a challenge for *", "review the * skill", "review skill" ], "actions": [ "open_create_skill_training", "open_create_training", "navigate_to_forge" ] }, "body": "# Forge Skill Management\n\n## Purpose\n\nHelp an administrator build the workforce skill library: define what the\nworkforce must be able to do, write the training that teaches it, decide what\ncounts as proof, and say what the evaluation checks — using the Forge authoring\nflow the page already has.\n\nOwliver never publishes. It drafts, and hands the draft back to the existing\nflow for review, which is the same rule Create Position follows.\n\n## Capabilities\n\n- Create workforce skills\n- Create training\n- Define verification\n- Explain Forge skills\n- Navigate Forge workflows\n\n## Actions\n\n- open_create_skill_training\n- open_create_training\n- navigate_to_forge" }, "parse": { "ok": true }, "normalized": { "id": "forge-skill-management", "name": "Forge Skill Management", "description": "Create workforce skills, training and verification in KROW Forge.", "status": "active", "pages": [ "university" ], "kind": "assistant", "category": "", "actions": [ "open_create_skill_training", "open_create_training", "navigate_to_forge" ], "triggers": [ "create a skill", "create skill", "create a new skill", "create a skill for *", "create a * skill", "new skill", "add a skill", "build a skill", "draft a skill", "create a skill training", "create skill training", "add skill training", "create training", "create a training for *", "create training for *", "create a * training", "add training", "add training to *", "build training", "write training", "create a challenge for *", "add a challenge for *", "review the * skill", "review skill" ], "declaredTriggers": true, "prompt": "Create a skill", "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/hiring-activity-assistant.md", "type": "skill", "rawBase64": "LS0tCmlkOiBoaXJpbmctYWN0aXZpdHktYXNzaXN0YW50Cm5hbWU6IEhpcmluZyBBY3Rpdml0eSBBc3Npc3RhbnQKZGVzY3JpcHRpb246IEFuc3dlciBxdWVzdGlvbnMgYWJvdXQgcmVjZW50IGhpcmluZyBhY3Rpdml0eSBvbiBhIHBvc2l0aW9uLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp0cmlnZ2VyczoKICAtIGhpcmluZyBhY3Rpdml0eQogIC0gaGlyaW5nIHN1bW1hcnkKICAtIGhpcmluZyBmbG93CiAgLSByZWNlbnQgYXBwbGljYXRpb25zCiAgLSBhcHBsaWNhdGlvbnMgb3ZlciB0aW1lCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogICMgT25lIHN1Z2dlc3Rpb24gcGVyIGNhcGFiaWxpdHkuIEEgYmFyZSBgLSBTaG93IGhpcmluZyBhY3Rpdml0eWAgdXNlZCB0byBzaXQKICAjIGFib3ZlIHRoZXNlIHR3bzogd2l0aCBubyBgY2FwYWJpbGl0eTpgIGl0IGZlbGwgdGhyb3VnaCB0byB0aGUgZmlyc3QgZGVjbGFyZWQKICAjIG9uZSDigJQgYHN1bW1hcnlgIOKAlCBzbyBpdCBhbmQgIlN1bW1hcml6ZSBoaXJpbmcgYWN0aXZpdHkiIHdlcmUgdHdvIGNoaXBzIGZvciBhCiAgIyBzaW5nbGUgYW5zd2VyLiBFdmVyeSBzdWdnZXN0aW9uIGhlcmUgbm93IG5hbWVzIHRoZSBjYXBhYmlsaXR5IGl0IGFza3MgZm9yLAogICMgd2hpY2ggaXMgd2hhdCBtYWtlcyBhIGNoaXAgYW5kIGFuIGFuc3dlciBvbmUtdG8tb25lLgogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogU3VtbWFyaXplIGhpcmluZyBhY3Rpdml0eSBmb3IgdGhpcyBwb3NpdGlvbgogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBTaG93IGhpcmluZyBhY3Rpdml0eSBhcyBhIGZsb3cKICAgICAgY2FwYWJpbGl0eTogZmxvdwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBmbG93CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEhpcmluZyBBY3Rpdml0eSBTdW1tYXJ5CiAgICAgIHNvdXJjZTogcG9zaXRpb24uYWN0aXZpdHkKICAgICAgcGVyaW9kczoKICAgICAgICAtIHRvZGF5CiAgICAgICAgLSB5ZXN0ZXJkYXkKICAgICAgICAtIGxhc3Qtd2VlawogICAgZmxvdzoKICAgICAgdGl0bGU6IEhpcmluZyBBY3Rpdml0eSBGbG93CiAgICAgIHNvdXJjZTogcG9zaXRpb24uYWN0aXZpdHkKICAgICAgc3RlcHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0geWVzdGVyZGF5CiAgICAgICAgLSBsYXN0LXdlZWsKLS0tCgojIEhpcmluZyBBY3Rpdml0eSBBc3Npc3RhbnQKCiMjIFB1cnBvc2UKCkFuc3dlciBxdWVzdGlvbnMgYWJvdXQgaG93IG1hbnkgcGVvcGxlIGhhdmUgYXBwbGllZCB0byBhIHBvc2l0aW9uIGxhdGVseSwgaW4gdGhlCnBhbmVsIGJlc2lkZSB0aGUgUG9zaXRpb25zIGV4cGVyaWVuY2UuCgpUaGlzIGlzIGEgc2VwYXJhdGUgZGVmaW5pdGlvbiBmcm9tIHRoZSBIaXJpbmcgQWN0aXZpdHkgVUkgc2tpbGwsIGFuZCBlYWNoIGlzCm1hbmFnZWQgb24gaXRzIG93biBsaXN0IOKAlCBidXQgYm90aCBuYW1lIGBwb3NpdGlvbi5hY3Rpdml0eWAsIHNvIGJvdGggYXJlIHJlYWQgYnkKdGhlIG9uZSBzaGFyZWQgcmVzb2x2ZXIgZnJvbSB0aGUgc2FtZSBhcHBsaWNhdGlvbiByZWNvcmRzLiBTd2l0Y2hpbmcgZWl0aGVyIG9mZgpsZWF2ZXMgdGhlIG90aGVyIGV4YWN0bHkgYXMgaXQgd2FzLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBhcHBsaWNhdGlvbnMgdG8gdGhpcyBwb3NpdGlvbiBvdmVyIHRvZGF5LCB5ZXN0ZXJkYXkgYW5kIGxhc3Qgd2Vlay4KLSBEcmF3IHRoZSBzYW1lIGNvdW50cyBhcyBhIGZsb3cgaW5zaWRlIHRoZSBhbnN3ZXIuCg==", "bytes": 1807, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "hiring-activity-assistant", "name": "Hiring Activity Assistant", "description": "Answer questions about recent hiring activity on a position.", "pages": [ "positions" ], "status": "active", "triggers": [ "hiring activity", "hiring summary", "hiring flow", "recent applications", "applications over time" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Summarize hiring activity for this position", "capability": "summary" }, { "label": "Show hiring activity as a flow", "capability": "flow" } ], "capabilities": [ "summary", "flow" ], "responses": { "summary": { "title": "Hiring Activity Summary", "source": "position.activity", "periods": [ "today", "yesterday", "last-week" ] }, "flow": { "title": "Hiring Activity Flow", "source": "position.activity", "steps": [ "today", "yesterday", "last-week" ] } } } }, "body": "# Hiring Activity Assistant\n\n## Purpose\n\nAnswer questions about how many people have applied to a position lately, in the\npanel beside the Positions experience.\n\nThis is a separate definition from the Hiring Activity UI skill, and each is\nmanaged on its own list — but both name `position.activity`, so both are read by\nthe one shared resolver from the same application records. Switching either off\nleaves the other exactly as it was.\n\n## Capabilities\n\n- Summarize applications to this position over today, yesterday and last week.\n- Draw the same counts as a flow inside the answer." }, "parse": { "ok": true }, "normalized": { "id": "hiring-activity-assistant", "name": "Hiring Activity Assistant", "description": "Answer questions about recent hiring activity on a position.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "hiring activity", "hiring summary", "hiring flow", "recent applications", "applications over time" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/hiring-history-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBoaXJpbmctaGlzdG9yeS1hbmFseXNpcwpuYW1lOiBIaXJpbmcgSGlzdG9yeSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSBjb21wbGV0ZWQgaGlyZXMg4oCUIHdobyB3YXMgaGlyZWQsIGhvdyBxdWlja2x5LCBhbmQgaG93IHdlbGwgdGhleSBzY29yZWQuCmNhdGVnb3J5OiBoaXJpbmcKcGFnZXM6CiAgLSBoaXJlZC1oaXN0b3J5CnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBoaXJpbmcgaGlzdG9yeQogIC0gaGlyZSBxdWFsaXR5CiAgLSBxdWFsaXR5IG9mIGhpcmUKICAtIHRpbWUgdG8gaGlyZQogIC0gd2hvIGRpZCB3ZSBoaXJlCiAgLSByZWNlbnQgaGlyZXMKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBXaG8gZGlkIHdlIGhpcmUgcmVjZW50bHk/CiAgICAgIGNhcGFiaWxpdHk6IGxpc3QKICAgIC0gbGFiZWw6IEhvdyBpcyBoaXJpbmcgcGVyZm9ybWFuY2U/CiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gc3RhdHMKICAgIC0gbGlzdAogICAgLSB0YWJsZQogICAgLSB0aW1lbGluZQogICAgLSBpbnNpZ2h0CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEhpcmluZyBwZXJmb3JtYW5jZQogICAgICBzb3VyY2U6IGhpcmVzLnBlcmZvcm1hbmNlCiAgICBzdGF0czoKICAgICAgdGl0bGU6IEhpcmluZyBwZXJmb3JtYW5jZQogICAgICBzb3VyY2U6IGhpcmVzLnBlcmZvcm1hbmNlCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogSGlyaW5nIHBlcmZvcm1hbmNlCiAgICAgIHNvdXJjZTogaGlyZXMucGVyZm9ybWFuY2UKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBSZWNlbnQgaGlyZXMKICAgICAgc291cmNlOiBoaXJlcy5yZWNlbnQKICAgICAgbGltaXQ6IDEwCiAgICB0YWJsZToKICAgICAgdGl0bGU6IFJlY2VudCBoaXJlcwogICAgICBzb3VyY2U6IGhpcmVzLnJlY2VudAogICAgdGltZWxpbmU6CiAgICAgIHRpdGxlOiBSZWNlbnQgaGlyZXMKICAgICAgc291cmNlOiBoaXJlcy5yZWNlbnQKLS0tCgojIEhpcmluZyBIaXN0b3J5IEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCBoaXJlcyB0aGF0IGhhdmUgYWxyZWFkeSBoYXBwZW5lZC4KLSBSZXBvcnQgaG93IGxvbmcgdGhleSB0b29rIGFuZCBob3cgd2VsbCB0aGV5IHNjb3JlZC4KLSBLZWVwIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uIHNlcGFyYXRlIGZyb20gdGhlIHBpcGVsaW5lIGJlZm9yZSBpdC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgdG90YWwgaGlyZXMsIGF2ZXJhZ2UgZGF5cyB0byBoaXJlLCBxdWFsaXR5IG9mIGhpcmUgYW5kIGNvbnZlcnNpb24gcmF0ZS4KLSBMaXN0IHJlY2VudCBoaXJlcyB3aXRoIHRoZWlyIHJvbGUgYW5kIGRhdGUuCgojIyBEYXRhCgpSZWFkcyBgaGlyZXMucGVyZm9ybWFuY2VgIGFuZCBgaGlyZXMucmVjZW50YCwgd2hpY2ggam9pbiBgU3RhZmZgIHRvIHRoZWlyCmBKb2JBcHBsaWNhdGlvbmAgYW5kIGBKb2JQb3N0aW5nYCByZWNvcmRzLgoKIyMgQW5hbHlzaXMKClRpbWUgdG8gaGlyZSBpcyB0aGUgc3BhbiBiZXR3ZWVuIGFuIGFwcGxpY2F0aW9uIGFycml2aW5nIGFuZCBpdHMgZmluYWwgdXBkYXRlLgpRdWFsaXR5IG9mIGhpcmUgaXMgdGhlIGF2ZXJhZ2UgQUkgc2NvcmUgYWNyb3NzIHNjb3JlZCBhcHBsaWNhdGlvbnMuIENvbnZlcnNpb24KaXMgaGlyZXMgYXMgYSBzaGFyZSBvZiBhbGwgYXBwbGljYXRpb25zLgoKIyMgT3V0cHV0CgpIZWFkbGluZSBoaXJpbmcgZmlndXJlcywgYW5kIGEgbGlzdCBvciB0aW1lbGluZSBvZiByZWNlbnQgaGlyZXMuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGlzIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uLiBDYW5kaWRhdGVzIHN0aWxsIHVuZGVyIGNvbnNpZGVyYXRpb24KICBhcmUgQ2FuZGlkYXRlIEFuYWx5c2lzJ3MgcXVlc3Rpb24uCi0gVGltZSB0byBoaXJlIGlzIG1lYXN1cmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIHJlY29yZCdzIHRpbWVzdGFtcHMsIG5vdCBmcm9tCiAgd2hlbiBhIHJvbGUgd2FzIG9wZW5lZC4KLSBRdWFsaXR5IG9mIGhpcmUgaXMgYSBzY3JlZW5pbmcgc2NvcmUsIG5vdCBhIHBlcmZvcm1hbmNlIHJldmlldy4gTm90aGluZyBoZXJlCiAgcmVwb3J0cyBob3cgYSBoaXJlIGhhcyBzaW5jZSB3b3JrZWQgb3V0Lgo=", "bytes": 2198, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "hiring-history-analysis", "name": "Hiring History Analysis", "description": "Analyse completed hires — who was hired, how quickly, and how well they scored.", "category": "hiring", "pages": [ "hired-history" ], "status": "active", "version": 1, "triggers": [ "hiring history", "hire quality", "quality of hire", "time to hire", "who did we hire", "recent hires" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Who did we hire recently?", "capability": "list" }, { "label": "How is hiring performance?", "capability": "summary" } ], "capabilities": [ "summary", "stats", "list", "table", "timeline", "insight" ], "responses": { "summary": { "title": "Hiring performance", "source": "hires.performance" }, "stats": { "title": "Hiring performance", "source": "hires.performance" }, "insight": { "title": "Hiring performance", "source": "hires.performance" }, "list": { "title": "Recent hires", "source": "hires.recent", "limit": 10 }, "table": { "title": "Recent hires", "source": "hires.recent" }, "timeline": { "title": "Recent hires", "source": "hires.recent" } } } }, "body": "# Hiring History Analysis\n\n## Purpose\n\n- Report hires that have already happened.\n- Report how long they took and how well they scored.\n- Keep the record after the decision separate from the pipeline before it.\n\n## Capabilities\n\n- Summarize total hires, average days to hire, quality of hire and conversion rate.\n- List recent hires with their role and date.\n\n## Data\n\nReads `hires.performance` and `hires.recent`, which join `Staff` to their\n`JobApplication` and `JobPosting` records.\n\n## Analysis\n\nTime to hire is the span between an application arriving and its final update.\nQuality of hire is the average AI score across scored applications. Conversion\nis hires as a share of all applications.\n\n## Output\n\nHeadline hiring figures, and a list or timeline of recent hires.\n\n## Limitations\n\n- This is the record after the decision. Candidates still under consideration\n are Candidate Analysis's question.\n- Time to hire is measured from the application record's timestamps, not from\n when a role was opened.\n- Quality of hire is a screening score, not a performance review. Nothing here\n reports how a hire has since worked out." }, "parse": { "ok": true }, "normalized": { "id": "hiring-history-analysis", "name": "Hiring History Analysis", "description": "Analyse completed hires — who was hired, how quickly, and how well they scored.", "status": "active", "pages": [ "hired-history" ], "kind": "assistant", "category": "hiring", "actions": [], "triggers": [ "hiring history", "hire quality", "quality of hire", "time to hire", "who did we hire", "recent hires" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/hiring-pulse-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBoaXJpbmctcHVsc2UtYW5hbHlzaXMKbmFtZTogSGlyaW5nIFB1bHNlIEFuYWx5c2lzCmRlc2NyaXB0aW9uOiBSZWFkIHRoZSByZWNlbnQgcmh5dGhtIG9mIGhpcmluZyDigJQgYXBwbGljYXRpb25zIGFycml2aW5nLCBhbmQgaG93IHRoZSBmdW5uZWwgaXMgY29udmVydGluZy4KY2F0ZWdvcnk6IGhpcmluZwpwYWdlczoKICAtIGNvbnRyb2wtY2VudGVyCiAgLSBhbmFseXRpY3MKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGhpcmluZyBwdWxzZQogIC0gaGlyaW5nIHZlbG9jaXR5CiAgLSBoaXJpbmcgcmh5dGhtCiAgLSBhcHBsaWNhdGlvbiByYXRlCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogV2hhdCBpcyB0aGUgaGlyaW5nIHB1bHNlPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBBcHBsaWNhdGlvbnMgb3ZlciByZWNlbnQgcGVyaW9kcwogICAgICBjYXBhYmlsaXR5OiBmbG93CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGZsb3cKICAgIC0gc3RhdHMKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBIaXJpbmcgcHVsc2UKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLmFjdGl2aXR5CiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCiAgICBmbG93OgogICAgICB0aXRsZTogQXBwbGljYXRpb25zIG92ZXIgdGltZQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMuYWN0aXZpdHkKICAgICAgcGVyaW9kczoKICAgICAgICAtIHRvZGF5CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIHN0YXRzOgogICAgICB0aXRsZTogSGlyaW5nIHBlcmZvcm1hbmNlCiAgICAgIHNvdXJjZTogaGlyZXMucGVyZm9ybWFuY2UKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBIaXJpbmcgcGVyZm9ybWFuY2UKICAgICAgc291cmNlOiBoaXJlcy5wZXJmb3JtYW5jZQotLS0KCiMgSGlyaW5nIFB1bHNlIEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCB0aGUgcmVjZW50IHJoeXRobSBvZiBoaXJpbmc6IGhvdyBtYW55IGFwcGxpY2F0aW9ucyBhcmUgYXJyaXZpbmcsIGFuZAogIGhvdyB0aGUgZnVubmVsIGlzIGNvbnZlcnRpbmcgdGhlbS4KLSBEaXN0aW5ndWlzaCBhIHF1aWV0IHdlZWsgZnJvbSBhIGJyb2tlbiBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBDb3VudCBhcHBsaWNhdGlvbnMgYXJyaXZpbmcgYWNyb3NzIHJlY2VudCBwZXJpb2RzLgotIFJlcG9ydCBjb252ZXJzaW9uLCBzcGVlZCBhbmQgcXVhbGl0eSBvZiBoaXJlLgoKIyMgRGF0YQoKUmVhZHMgYGNhbmRpZGF0ZXMuYWN0aXZpdHlgIGZvciBhcnJpdmFsIGNvdW50cyBvdmVyIHBlcmlvZHMsIGFuZApgaGlyZXMucGVyZm9ybWFuY2VgIGZvciBjb252ZXJzaW9uLCB0aW1lLXRvLWhpcmUgYW5kIHF1YWxpdHkuCgojIyBBbmFseXNpcwoKQXJyaXZhbCBjb3VudHMgYXJlIHJlcG9ydGVkIHBlciBwZXJpb2QgcmF0aGVyIHRoYW4gYXMgYSBzaW5nbGUgcmF0ZSwgYmVjYXVzZSBhCnJhdGUgYXZlcmFnZXMgYXdheSB0aGUgc2hhcGUg4oCUIHRoaXJ0eSBhcHBsaWNhdGlvbnMgaW4gYSBtb250aCBpcyBhIGRpZmZlcmVudApzaXR1YXRpb24gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSBhcnJpdmVkIHN0ZWFkaWx5IG9yIGFsbCBvbiBvbmUgZGF5LgoKIyMgT3V0cHV0CgpBcHBsaWNhdGlvbnMgcGVyIHBlcmlvZCwgYW5kIGhlYWRsaW5lIGNvbnZlcnNpb24sIHNwZWVkIGFuZCBxdWFsaXR5IGZpZ3VyZXMuCgojIyBMaW1pdGF0aW9ucwoKLSAqKlRoaXMgaXMgdGhlIGFuYWx5c2lzIGRlZmluaXRpb24gb25seS4qKiBUaGUgSGlyaW5nIFB1bHNlIGNhcmQgdGhhdCBhcHBlYXJzCiAgb24gS3JvdyBwYWdlcyBpcyBhIHNlcGFyYXRlIFVJIGNvbmZpZ3VyYXRpb24gd2l0aCBpdHMgb3duIHBsYWNlbWVudCBhbmQKICBwZXJpb2Qgc2V0dGluZ3M7IHRoZSB0d28gYXJlIGRlbGliZXJhdGVseSBub3QgdGhlIHNhbWUgZGVmaW5pdGlvbiBhbmQgY2hhbmdpbmcKICBvbmUgZG9lcyBub3QgY2hhbmdlIHRoZSBvdGhlci4KLSBBcnJpdmFsIGNvdW50cyBhcmUgYnkgYXBwbGljYXRpb24gY3JlYXRpb24gZGF0ZSwgbm90IGJ5IHdoZW4gYSByb2xlIG9wZW5lZC4KLSBBIHBlcmlvZCB3aXRoIG5vIGFwcGxpY2F0aW9ucyByZXBvcnRzIHplcm8sIHdoaWNoIGlzIGEgcmVhbCByZWFkaW5nIOKAlCBpdCBkb2VzCiAgbm90IGRpc3Rpbmd1aXNoICJub2JvZHkgYXBwbGllZCIgZnJvbSAidGhlIHJvbGUgd2FzIG5vdCBhZHZlcnRpc2VkIi4K", "bytes": 2382, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "hiring-pulse-analysis", "name": "Hiring Pulse Analysis", "description": "Read the recent rhythm of hiring — applications arriving, and how the funnel is converting.", "category": "hiring", "pages": [ "control-center", "analytics" ], "status": "active", "version": 1, "triggers": [ "hiring pulse", "hiring velocity", "hiring rhythm", "application rate" ], "owliver": { "enabled": true, "suggestions": [ { "label": "What is the hiring pulse?", "capability": "summary" }, { "label": "Applications over recent periods", "capability": "flow" } ], "capabilities": [ "summary", "flow", "stats", "insight" ], "responses": { "summary": { "title": "Hiring pulse", "source": "candidates.activity", "periods": [ "today", "last-7-days", "previous-month" ] }, "flow": { "title": "Applications over time", "source": "candidates.activity", "periods": [ "today", "last-7-days", "this-month", "previous-month" ] }, "stats": { "title": "Hiring performance", "source": "hires.performance" }, "insight": { "title": "Hiring performance", "source": "hires.performance" } } } }, "body": "# Hiring Pulse Analysis\n\n## Purpose\n\n- Report the recent rhythm of hiring: how many applications are arriving, and\n how the funnel is converting them.\n- Distinguish a quiet week from a broken pipeline.\n\n## Capabilities\n\n- Count applications arriving across recent periods.\n- Report conversion, speed and quality of hire.\n\n## Data\n\nReads `candidates.activity` for arrival counts over periods, and\n`hires.performance` for conversion, time-to-hire and quality.\n\n## Analysis\n\nArrival counts are reported per period rather than as a single rate, because a\nrate averages away the shape — thirty applications in a month is a different\nsituation depending on whether they arrived steadily or all on one day.\n\n## Output\n\nApplications per period, and headline conversion, speed and quality figures.\n\n## Limitations\n\n- **This is the analysis definition only.** The Hiring Pulse card that appears\n on Krow pages is a separate UI configuration with its own placement and\n period settings; the two are deliberately not the same definition and changing\n one does not change the other.\n- Arrival counts are by application creation date, not by when a role opened.\n- A period with no applications reports zero, which is a real reading — it does\n not distinguish \"nobody applied\" from \"the role was not advertised\"." }, "parse": { "ok": true }, "normalized": { "id": "hiring-pulse-analysis", "name": "Hiring Pulse Analysis", "description": "Read the recent rhythm of hiring — applications arriving, and how the funnel is converting.", "status": "active", "pages": [ "control-center", "analytics" ], "kind": "assistant", "category": "hiring", "actions": [], "triggers": [ "hiring pulse", "hiring velocity", "hiring rhythm", "application rate" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/learning-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBsZWFybmluZy1hbmFseXNpcwpuYW1lOiBMZWFybmluZyBBbmFseXNpcwpkZXNjcmlwdGlvbjogUmVwb3J0IHdoYXQgdGhlIHRyYWluaW5nIGxpYnJhcnkgaG9sZHMgYW5kIGhvdyBmYXIgdGhlIHdvcmtmb3JjZSBoYXMgcHJvZ3Jlc3NlZCB0aHJvdWdoIGl0LgpjYXRlZ29yeTogd29ya2ZvcmNlCnBhZ2VzOgogIC0ga3Jvdy1mb3JnZQpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gbGVhcm5pbmcgYW5hbHlzaXMKICAtIHRyYWluaW5nIHByb2dyZXNzCiAgLSBjb3Vyc2UgcHJvZ3Jlc3MKICAtIHRyYWluaW5nIGxpYnJhcnkKICAtIHdoYXQgdHJhaW5pbmcKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBIb3cgaXMgdHJhaW5pbmcgcHJvZ3Jlc3Npbmc/CiAgICAgIGNhcGFiaWxpdHk6IHByb2dyZXNzCiAgICAtIGxhYmVsOiBXaGF0IGRvZXMgdGhlIGxpYnJhcnkgaG9sZD8KICAgICAgY2FwYWJpbGl0eTogbGlzdAogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBwcm9ncmVzcwogICAgLSBsaXN0CiAgICAtIHRhYmxlCiAgICAtIHN0YXRzCiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IFRyYWluaW5nIHByb2dyZXNzCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLnRyYWluaW5nCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IFRyYWluaW5nIHByb2dyZXNzCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLnRyYWluaW5nCiAgICBsaXN0OgogICAgICB0aXRsZTogVHJhaW5pbmcgcGF0aHMKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKICAgIHRhYmxlOgogICAgICB0aXRsZTogVHJhaW5pbmcgcGF0aHMKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKICAgIHN0YXRzOgogICAgICB0aXRsZTogVHJhaW5pbmcgcHJvZ3Jlc3MKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKLS0tCgojIExlYXJuaW5nIEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aGF0IHRoZSB0cmFpbmluZyBsaWJyYXJ5IGhvbGRzLgotIFJlcG9ydCBob3cgZmFyIHRoZSB3b3JrZm9yY2UgaGFzIHByb2dyZXNzZWQgYWdhaW5zdCBpdC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgdHJhaW5pbmcgcGF0aHMgYW5kIHByb2dyZXNzIGFnYWluc3QgdGhlbS4KLSBMaXN0IG9yIHRhYnVsYXRlIHRoZSBwYXRocyBpbiB0aGUgbGlicmFyeS4KCiMjIERhdGEKClJlYWRzIGB3b3JrZm9yY2UudHJhaW5pbmdgLCB0aGUgZXhpc3Rpbmcgc291cmNlIGJlaGluZCB0aGUgRm9yZ2UgcHJvZ3Jlc3Npb24Kdmlld3MuCgojIyBBbmFseXNpcwoKUHJvZ3Jlc3MgaXMgY291bnRlZCBhZ2FpbnN0IHRoZSBwYXRocyB0aGUgbGlicmFyeSBhY3R1YWxseSBkZWZpbmVzLCBzbyBhZGRpbmcgYQpwYXRoIGNoYW5nZXMgdGhlIGRlbm9taW5hdG9yIHJhdGhlciB0aGFuIGJlaW5nIHJlcG9ydGVkIGFzIGEgc3VkZGVuIGZhbGwgaW4KY29tcGxldGlvbi4KCiMjIE91dHB1dAoKVHJhaW5pbmcgcGF0aHMgd2l0aCBwcm9ncmVzcyBhZ2FpbnN0IGVhY2guCgojIyBMaW1pdGF0aW9ucwoKLSBBIHNraWxsIGluIEZvcmdlIGlzIHNvbWV0aGluZyBhIHBlcnNvbiBsZWFybnMgYW5kIGlzIHZlcmlmaWVkIGluLiBJdCBpcyBub3QgYW4KICBPd2xpdmVyIGNhcGFiaWxpdHksIGFuZCB0aGUgdHdvIG11c3Qgbm90IGJlIGRlc2NyaWJlZCBhcyB0aGUgc2FtZSB0aGluZy4KLSBQcm9ncmVzcyBpcyBwZXJzb25hbCB0byB0aGUgc2lnbmVkLWluIHdvcmtlciB3aGVyZSB0aGVpciByZWNvcmQgaXMgbG9hZGVkLCBhbmQKICBsaWJyYXJ5LWxldmVsIG90aGVyd2lzZS4KLSBUaGlzIHJlcG9ydHMgcHJvZ3Jlc3Npb24sIG5vdCB3aGV0aGVyIHRoZSB0cmFpbmluZyBpcyBhbnkgZ29vZC4K", "bytes": 1908, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "learning-analysis", "name": "Learning Analysis", "description": "Report what the training library holds and how far the workforce has progressed through it.", "category": "workforce", "pages": [ "krow-forge" ], "status": "active", "version": 1, "triggers": [ "learning analysis", "training progress", "course progress", "training library", "what training" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How is training progressing?", "capability": "progress" }, { "label": "What does the library hold?", "capability": "list" } ], "capabilities": [ "summary", "progress", "list", "table", "stats" ], "responses": { "summary": { "title": "Training progress", "source": "workforce.training" }, "progress": { "title": "Training progress", "source": "workforce.training" }, "list": { "title": "Training paths", "source": "workforce.training" }, "table": { "title": "Training paths", "source": "workforce.training" }, "stats": { "title": "Training progress", "source": "workforce.training" } } } }, "body": "# Learning Analysis\n\n## Purpose\n\n- Report what the training library holds.\n- Report how far the workforce has progressed against it.\n\n## Capabilities\n\n- Summarize training paths and progress against them.\n- List or tabulate the paths in the library.\n\n## Data\n\nReads `workforce.training`, the existing source behind the Forge progression\nviews.\n\n## Analysis\n\nProgress is counted against the paths the library actually defines, so adding a\npath changes the denominator rather than being reported as a sudden fall in\ncompletion.\n\n## Output\n\nTraining paths with progress against each.\n\n## Limitations\n\n- A skill in Forge is something a person learns and is verified in. It is not an\n Owliver capability, and the two must not be described as the same thing.\n- Progress is personal to the signed-in worker where their record is loaded, and\n library-level otherwise.\n- This reports progression, not whether the training is any good." }, "parse": { "ok": true }, "normalized": { "id": "learning-analysis", "name": "Learning Analysis", "description": "Report what the training library holds and how far the workforce has progressed through it.", "status": "active", "pages": [ "krow-forge" ], "kind": "assistant", "category": "workforce", "actions": [], "triggers": [ "learning analysis", "training progress", "course progress", "training library", "what training" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/operational-risk.md", "type": "skill", "rawBase64": "LS0tCmlkOiBvcGVyYXRpb25hbC1yaXNrCm5hbWU6IE9wZXJhdGlvbmFsIFJpc2sKZGVzY3JpcHRpb246IFN1cmZhY2Ugd2hhdCBpcyBnb2luZyB3cm9uZyBvcGVyYXRpb25hbGx5IGFjcm9zcyBoaXJpbmcgYW5kIHRoZSByb3N0ZXIuCmNhdGVnb3J5OiBvcGVyYXRpb25zCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKICAtIGFjdGl2aXR5CnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBvcGVyYXRpb25hbCByaXNrCiAgLSBvcGVyYXRpb25zIHJpc2sKICAtIHdoYXQgaXMgZ29pbmcgd3JvbmcKICAtIGJhY2tsb2cKICAtIGRlY2lzaW9ucyBvd2VkCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogV2hhdCBpcyBnb2luZyB3cm9uZyBvcGVyYXRpb25hbGx5PwogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgICAtIGxhYmVsOiBTdW1tYXJpemUgb3BlcmF0aW9uYWwgcmlzawogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGxpc3QKICAgIC0gdGFibGUKICAgIC0gc3RhdHMKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBPcGVyYXRpb25hbCByaXNrCiAgICAgIHNvdXJjZTogb3BlcmF0aW9ucy5yaXNrCiAgICBsaXN0OgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlza3MKICAgICAgc291cmNlOiBvcGVyYXRpb25zLnJpc2sKICAgIHRhYmxlOgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlza3MKICAgICAgc291cmNlOiBvcGVyYXRpb25zLnJpc2sKICAgIHN0YXRzOgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlzawogICAgICBzb3VyY2U6IG9wZXJhdGlvbnMucmlzawogICAgaW5zaWdodDoKICAgICAgdGl0bGU6IEJpZ2dlc3Qgb3BlcmF0aW9uYWwgcmlzawogICAgICBzb3VyY2U6IG9wZXJhdGlvbnMucmlzawotLS0KCiMgT3BlcmF0aW9uYWwgUmlzawoKIyMgUHVycG9zZQoKLSBTdXJmYWNlIHRoZSBvcGVyYXRpb25hbCBwcm9ibGVtcyB0aGF0IG5lZWQgc29tZWJvZHkgdG8gYWN0LgotIERyYXcgdGhlbSBmcm9tIGV2ZXJ5IGRvbWFpbiwgYmVjYXVzZSB0aGV5IGZlZWwgbGlrZSBvbmUgcHJvYmxlbSB0byB0aGUgcGVyc29uCiAgd2hvIGhhcyB0byBmaXggdGhlbS4KLSBSZXBvcnQgbm90aGluZyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgcnVubmluZy4KCiMjIENhcGFiaWxpdGllcwoKLSBEZXRlY3Qgc3Ryb25nIGNhbmRpZGF0ZXMgbGVmdCBhd2FpdGluZyBhIGRlY2lzaW9uLgotIERldGVjdCBhbiB1bnNjcmVlbmVkIGFwcGxpY2F0aW9uIGJhY2tsb2cuCi0gRGV0ZWN0IG9wZW4gcm9sZXMgd2l0aCBubyBhcHBsaWNhbnRzLgotIERldGVjdCBzaGlmdHMgZ29pbmcgdW53b3JrZWQuCgojIyBEYXRhCgpSZWFkcyBgb3BlcmF0aW9ucy5yaXNrYCwgd2hpY2ggam9pbnMgYEpvYkFwcGxpY2F0aW9uYCwgYEpvYlBvc3RpbmdgIGFuZApgU2hpZnRSZWNvcmRgLgoKIyMgQW5hbHlzaXMKCkZvdXIgY2hlY2tzLCBlYWNoIHdpdGggYSBmbG9vciBzbyBvcmRpbmFyeSBvcGVyYXRpb24gZG9lcyBub3QgdHJpcCB0aGVtOgoKMS4gKipEZWNpc2lvbnMgb3dlZCoqIOKAlCBhIGNhbmRpZGF0ZSBzY29yaW5nIDcwIG9yIGFib3ZlLCBzY3JlZW5lZCBvcgogICBzaG9ydGxpc3RlZCwgYW5kIG5vdCBtb3ZlZCBvbi4gQW55IHN1Y2ggY2FuZGlkYXRlIGNvdW50cy4KMi4gKipVbnNjcmVlbmVkIGJhY2tsb2cqKiDigJQgdGhyZWUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgd2l0aCBubyBzY29yZS4KMy4gKipSb2xlcyB3aXRoIG5vIGFwcGxpY2FudHMqKiDigJQgYW55IG9wZW4gcm9sZSBub2JvZHkgaGFzIGFwcGxpZWQgdG8uCjQuICoqU2hpZnRzIHVud29ya2VkKiog4oCUIHR3byBvciBtb3JlIGFic2VuY2VzIG9yIG5vLXNob3dzIGluIHRoZSBsYXN0IDcgZGF5cy4KCkZpbmRpbmdzIGFyZSBvcmRlcmVkIG1vc3Qgc2V2ZXJlIGZpcnN0LiBBIGZpbmRpbmcgaXMgaW5jbHVkZWQgb25seSB3aGVuIGl0CmV4aXN0czsgYW4gZW1wdHkgbGlzdCBtZWFucyB0aGUgb3BlcmF0aW9uIGlzIHJ1bm5pbmcsIG5vdCB0aGF0IHRoZSBjaGVjayB3YXMKc2tpcHBlZC4KCiMjIE91dHB1dAoKQSBjb3VudCBvZiBvcGVuIHJpc2tzLCB0aGVuIGEgcm93IHBlciByaXNrIG5hbWluZyB3aGF0IGlzIHdyb25nIGFuZCB0aGUgZmlndXJlcwpiZWhpbmQgaXQuCgojIyBMaW1pdGF0aW9ucwoKLSBUaHJlc2hvbGRzIGFyZSBmaXhlZCByYXRoZXIgdGhhbiB0dW5lZCB0byB0aGlzIHdvcmtzcGFjZSdzIHZvbHVtZS4KLSAiRGVjaXNpb25zIG93ZWQiIGFzc3VtZXMgYSBzY3JlZW5lZCwgc3Ryb25nIGNhbmRpZGF0ZSBzaG91bGQgYmUgcHJvZ3Jlc3NlZC4KICBBIGNhbmRpZGF0ZSBkZWxpYmVyYXRlbHkgaGVsZCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9uZSBvdmVybG9va2VkLgotIFRoZSBzaGlmdCBjaGVjayBjb3ZlcnMgdGhlIGxhc3QgNyBkYXlzIG9ubHk7IGEgbG9uZ2VyIHBhdHRlcm4gaXMgQXR0ZW5kYW5jZQogIEFuYWx5c2lzJ3MgcXVlc3Rpb24uCg==", "bytes": 2545, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "operational-risk", "name": "Operational Risk", "description": "Surface what is going wrong operationally across hiring and the roster.", "category": "operations", "pages": [ "control-center", "activity" ], "status": "active", "version": 1, "triggers": [ "operational risk", "operations risk", "what is going wrong", "backlog", "decisions owed" ], "owliver": { "enabled": true, "suggestions": [ { "label": "What is going wrong operationally?", "capability": "list" }, { "label": "Summarize operational risk", "capability": "summary" } ], "capabilities": [ "summary", "list", "table", "stats", "insight" ], "responses": { "summary": { "title": "Operational risk", "source": "operations.risk" }, "list": { "title": "Operational risks", "source": "operations.risk" }, "table": { "title": "Operational risks", "source": "operations.risk" }, "stats": { "title": "Operational risk", "source": "operations.risk" }, "insight": { "title": "Biggest operational risk", "source": "operations.risk" } } } }, "body": "# Operational Risk\n\n## Purpose\n\n- Surface the operational problems that need somebody to act.\n- Draw them from every domain, because they feel like one problem to the person\n who has to fix them.\n- Report nothing when the operation is running.\n\n## Capabilities\n\n- Detect strong candidates left awaiting a decision.\n- Detect an unscreened application backlog.\n- Detect open roles with no applicants.\n- Detect shifts going unworked.\n\n## Data\n\nReads `operations.risk`, which joins `JobApplication`, `JobPosting` and\n`ShiftRecord`.\n\n## Analysis\n\nFour checks, each with a floor so ordinary operation does not trip them:\n\n1. **Decisions owed** — a candidate scoring 70 or above, screened or\n shortlisted, and not moved on. Any such candidate counts.\n2. **Unscreened backlog** — three or more applications with no score.\n3. **Roles with no applicants** — any open role nobody has applied to.\n4. **Shifts unworked** — two or more absences or no-shows in the last 7 days.\n\nFindings are ordered most severe first. A finding is included only when it\nexists; an empty list means the operation is running, not that the check was\nskipped.\n\n## Output\n\nA count of open risks, then a row per risk naming what is wrong and the figures\nbehind it.\n\n## Limitations\n\n- Thresholds are fixed rather than tuned to this workspace's volume.\n- \"Decisions owed\" assumes a screened, strong candidate should be progressed.\n A candidate deliberately held is indistinguishable from one overlooked.\n- The shift check covers the last 7 days only; a longer pattern is Attendance\n Analysis's question." }, "parse": { "ok": true }, "normalized": { "id": "operational-risk", "name": "Operational Risk", "description": "Surface what is going wrong operationally across hiring and the roster.", "status": "active", "pages": [ "control-center", "activity" ], "kind": "assistant", "category": "operations", "actions": [], "triggers": [ "operational risk", "operations risk", "what is going wrong", "backlog", "decisions owed" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/overtime-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiBvdmVydGltZS1hbmFseXNpcwpuYW1lOiBPdmVydGltZSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSBvdmVydGltZSBob3Vycywgd2hvIGlzIGNhcnJ5aW5nIHRoZW0sIGFuZCB3aGV0aGVyIHRoZXkgYXJlIGdyb3dpbmcuCmNhdGVnb3J5OiB3b3JrZm9yY2UKcGFnZXM6CiAgLSBhbmFseXRpY3MKICAtIGNvbnRyb2wtY2VudGVyCnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBvdmVydGltZQogIC0gZXh0cmEgaG91cnMKICAtIGhvdXJzIHdvcmtlZAogIC0gd29ya2luZyBsYXRlCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogSG93IG11Y2ggb3ZlcnRpbWUgYXJlIHdlIHJ1bm5pbmc/CiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICAgIC0gbGFiZWw6IFdobyBpcyB3b3JraW5nIHRoZSBtb3N0IG92ZXJ0aW1lPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogT3ZlcnRpbWUgb3ZlciByZWNlbnQgcGVyaW9kcwogICAgICBjYXBhYmlsaXR5OiBmbG93CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIHByb2dyZXNzCiAgICAtIGZsb3cKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBPdmVydGltZSBieSBwZXJzb24KICAgICAgc291cmNlOiB3b3JrZm9yY2Uub3ZlcnRpbWUKICAgIHByb2dyZXNzOgogICAgICB0aXRsZTogT3ZlcnRpbWUgYnkgcGVyc29uCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLm92ZXJ0aW1lCiAgICBmbG93OgogICAgICB0aXRsZTogT3ZlcnRpbWUgb3ZlciB0aW1lCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLm92ZXJ0aW1lCiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQotLS0KCiMgT3ZlcnRpbWUgQW5hbHlzaXMKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyBtdWNoIG92ZXJ0aW1lIHRoZSB3b3JrZm9yY2UgaXMgY2FycnlpbmcuCi0gU2F5IHdobyBpcyBjYXJyeWluZyBpdCwgc2luY2UgYSB0b3RhbCBzcHJlYWQgZXZlbmx5IGFuZCBhIHRvdGFsIHNpdHRpbmcgb24gb25lCiAgcGVyc29uIGFyZSBkaWZmZXJlbnQgcHJvYmxlbXMuCi0gU2hvdyB3aGV0aGVyIGl0IGlzIGdyb3dpbmcuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIG92ZXJ0aW1lIGhvdXJzIGFuZCB0aGVpciBzaGFyZSBvZiBzY2hlZHVsZWQgdGltZS4KLSBDb21wYXJlIG92ZXJ0aW1lIHBlciBwZXJzb24sIG1vc3QgaG91cnMgZmlyc3QuCi0gU2hvdyBvdmVydGltZSBhY3Jvc3MgcmVjZW50IHBlcmlvZHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLm92ZXJ0aW1lYCwgd2hpY2ggY29tcGFyZXMgc2NoZWR1bGVkIGhvdXJzIHRvIGhvdXJzIGFjdHVhbGx5CndvcmtlZCBhY3Jvc3MgYFNoaWZ0UmVjb3JkYCBlbnRyaWVzLgoKIyMgQW5hbHlzaXMKCk92ZXJ0aW1lIGlzIHJlcG9ydGVkIGJvdGggYXMgaG91cnMgYW5kIGFzIGEgc2hhcmUgb2Ygc2NoZWR1bGVkIHRpbWUuIFRoZSByYXRpbwppcyB3aGF0IG1ha2VzIHR3byB0ZWFtcyBjb21wYXJhYmxlIOKAlCBmb3J0eSBob3VycyBtZWFucyBvbmUgdGhpbmcgYWNyb3NzIGEKZm9ydG5pZ2h0IGFuZCBhbm90aGVyIGFjcm9zcyBhIHllYXIuCgpBdHRlbmRhbmNlIGFuZCBvdmVydGltZSBhcmUga2VwdCBzZXBhcmF0ZSBiZWNhdXNlIG9uZSBoaWRlcyB0aGUgb3RoZXI6IGEgdGVhbQpjYW4gaGF2ZSBwZXJmZWN0IGF0dGVuZGFuY2UgYW5kIGJlIHJ1bm5pbmcgb24gdGhpcnR5IGhvdXJzIG9mIG92ZXJ0aW1lIGEgd2VlaywKYW5kIGEgc2luZ2xlICJ3b3JrZm9yY2UgaG91cnMiIGZpZ3VyZSB3b3VsZCByZXBvcnQgdGhhdCBhcyBoZWFsdGh5LgoKIyMgT3V0cHV0CgpUb3RhbCBvdmVydGltZSBob3Vycywgc2hhcmUgb2Ygc2NoZWR1bGVkIHRpbWUsIGF2ZXJhZ2UgcGVyIHNoaWZ0LCBhbmQgYSByb3cgcGVyCnBlcnNvbi4gT3ZlciBwZXJpb2RzLCBob3VycyBwZXIgd2luZG93LgoKIyMgTGltaXRhdGlvbnMKCi0gT3ZlcnRpbWUgaXMgZGVyaXZlZCBmcm9tIHJlY29yZGVkIHNoaWZ0IGVuZCB0aW1lcywgbm90IGZyb20gYW4gYXBwcm92YWxzCiAgcHJvY2Vzcy4gQSBzaGlmdCB0aGF0IHJhbiBsb25nIGFwcGVhcnMgaGVyZSB3aGV0aGVyIG9yIG5vdCBpdCB3YXMgYXV0aG9yaXNlZC4KLSBBIHBlcnNvbiB3aXRoIG5vIG92ZXJ0aW1lIGFwcGVhcnMgd2l0aCB6ZXJvLCB3aGljaCBpcyBhIHJlYWwgcmVhZGluZyByYXRoZXIKICB0aGFuIG1pc3NpbmcgZGF0YS4KLSBDb3N0IGlzIG5vdCBjYWxjdWxhdGVkLiBObyBwYXkgcmF0ZSBpcyBhdHRhY2hlZCB0byBhIHNoaWZ0IHJlY29yZC4K", "bytes": 2601, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "overtime-analysis", "name": "Overtime Analysis", "description": "Analyse overtime hours, who is carrying them, and whether they are growing.", "category": "workforce", "pages": [ "analytics", "control-center" ], "status": "active", "version": 1, "triggers": [ "overtime", "extra hours", "hours worked", "working late" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How much overtime are we running?", "capability": "summary" }, { "label": "Who is working the most overtime?", "capability": "table" }, { "label": "Overtime over recent periods", "capability": "flow" } ], "capabilities": [ "summary", "stats", "table", "progress", "flow", "insight" ], "responses": { "summary": { "title": "Overtime", "source": "workforce.overtime" }, "stats": { "title": "Overtime", "source": "workforce.overtime" }, "table": { "title": "Overtime by person", "source": "workforce.overtime" }, "progress": { "title": "Overtime by person", "source": "workforce.overtime" }, "flow": { "title": "Overtime over time", "source": "workforce.overtime", "periods": [ "last-7-days", "this-month", "previous-month" ] }, "insight": { "title": "Overtime", "source": "workforce.overtime" } } } }, "body": "# Overtime Analysis\n\n## Purpose\n\n- Report how much overtime the workforce is carrying.\n- Say who is carrying it, since a total spread evenly and a total sitting on one\n person are different problems.\n- Show whether it is growing.\n\n## Capabilities\n\n- Summarize overtime hours and their share of scheduled time.\n- Compare overtime per person, most hours first.\n- Show overtime across recent periods.\n\n## Data\n\nReads `workforce.overtime`, which compares scheduled hours to hours actually\nworked across `ShiftRecord` entries.\n\n## Analysis\n\nOvertime is reported both as hours and as a share of scheduled time. The ratio\nis what makes two teams comparable — forty hours means one thing across a\nfortnight and another across a year.\n\nAttendance and overtime are kept separate because one hides the other: a team\ncan have perfect attendance and be running on thirty hours of overtime a week,\nand a single \"workforce hours\" figure would report that as healthy.\n\n## Output\n\nTotal overtime hours, share of scheduled time, average per shift, and a row per\nperson. Over periods, hours per window.\n\n## Limitations\n\n- Overtime is derived from recorded shift end times, not from an approvals\n process. A shift that ran long appears here whether or not it was authorised.\n- A person with no overtime appears with zero, which is a real reading rather\n than missing data.\n- Cost is not calculated. No pay rate is attached to a shift record." }, "parse": { "ok": true }, "normalized": { "id": "overtime-analysis", "name": "Overtime Analysis", "description": "Analyse overtime hours, who is carrying them, and whether they are growing.", "status": "active", "pages": [ "analytics", "control-center" ], "kind": "assistant", "category": "workforce", "actions": [], "triggers": [ "overtime", "extra hours", "hours worked", "working late" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/staffing-risk.md", "type": "skill", "rawBase64": "LS0tCmlkOiBzdGFmZmluZy1yaXNrCm5hbWU6IFN0YWZmaW5nIFJpc2sKZGVzY3JpcHRpb246IElkZW50aWZ5IG9wZW4gcm9sZXMgdGhhdCB3aWxsIG5vdCBmaWxsIG9uIHRoZWlyIG93biwgYW5kIHNheSB3aHkuCmNhdGVnb3J5OiB3b3JrZm9yY2UKcGFnZXM6CiAgLSBwb3NpdGlvbnMKICAtIGNvbnRyb2wtY2VudGVyCnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBzdGFmZmluZyByaXNrCiAgLSBzdGFmZmluZyBnYXAKICAjIGAqYCBzdGFuZHMgZm9yIGFueXRoaW5nIGluIGJldHdlZW4sIHNvIG9uZSBsaW5lIGNvdmVycyAicm9sZXMgYXQgcmlzayIsCiAgIyAicm9sZXMgdGhhdCBhcmUgYXQgcmlzayIgYW5kICJyb2xlcyBtb3N0IGF0IHJpc2siIHdpdGhvdXQgbGlzdGluZyBlYWNoLgogIC0gcm9sZXMqYXQgcmlzawogIC0gcG9zaXRpb25zKmF0IHJpc2sKICAtIHVuZGVyc3RhZmZlZApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFdoaWNoIHJvbGVzIGFyZSBhdCByaXNrPwogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgICAtIGxhYmVsOiBTdW1tYXJpemUgc3RhZmZpbmcgcmlzawogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGxpc3QKICAgIC0gdGFibGUKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBTdGFmZmluZyByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBSb2xlcyBhdCByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKICAgICAgbGltaXQ6IDUKICAgIHRhYmxlOgogICAgICB0aXRsZTogUm9sZXMgYXQgcmlzawogICAgICBzb3VyY2U6IHBvc2l0aW9ucy5yaXNrCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogQmlnZ2VzdCBzdGFmZmluZyByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKLS0tCgojIFN0YWZmaW5nIFJpc2sKCiMjIFB1cnBvc2UKCi0gTmFtZSB0aGUgb3BlbiByb2xlcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8gZmlsbCB3aXRob3V0IGludGVydmVudGlvbi4KLSBTYXkgd2hpY2ggb2YgZm91ciBkaXN0aW5jdCBwcm9ibGVtcyBlYWNoIG9uZSBoYXMsIGJlY2F1c2UgZWFjaCBoYXMgYQogIGRpZmZlcmVudCBmaXguCi0gUmFuayB0aGVtIHNvIHRoZSByZWFkZXIga25vd3Mgd2hpY2ggdG8gZGVhbCB3aXRoIGZpcnN0LgoKIyMgQ2FwYWJpbGl0aWVzCgotIENvdW50IHRoZSBvcGVuIHJvbGVzIGN1cnJlbnRseSBhdCByaXNrLgotIExpc3QgdGhvc2Ugcm9sZXMsIHdvcnN0IGZpcnN0LCB3aXRoIHRoZSByZWFzb24gZm9yIGVhY2guCi0gSWRlbnRpZnkgdGhlIHNpbmdsZSByb2xlIG1vc3QgaW4gbmVlZCBvZiBhdHRlbnRpb24uCgojIyBEYXRhCgpSZWFkcyBgcG9zaXRpb25zLnJpc2tgLCB3aGljaCBqb2lucyBvcGVuIGBKb2JQb3N0aW5nYCByZWNvcmRzIHRvIHRoZWlyCmBKb2JBcHBsaWNhdGlvbmAgcmVjb3JkcyB0aHJvdWdoIHRoZSBzYW1lIGBidWlsZFBvc2l0aW9uYCByZWFkaW5nIHRoZSBQb3NpdGlvbnMKcGFnZSByZW5kZXJzIGZyb20uIE5vIHNlcGFyYXRlIGNhbGN1bGF0aW9uLCBzbyBhIHJpc2sgcmVwb3J0ZWQgaGVyZSBhbmQgYSBoZWFsdGgKYmFkZ2Ugc2hvd24gdGhlcmUgY2Fubm90IGRpc2FncmVlLgoKIyMgQW5hbHlzaXMKCkEgcm9sZSBpcyBhdCByaXNrIHdoZW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZS4gVGhleSBhcmUga2VwdCBhcGFydCByYXRoZXIKdGhhbiBjb21iaW5lZCBpbnRvIGEgc2NvcmUsIGJlY2F1c2UgdGhlIHNjb3JlIHdvdWxkIGhpZGUgdGhlIG9ubHkgcGFydCB0aGF0CnRlbGxzIHRoZSByZWFkZXIgd2hhdCB0byBkbzoKCjEuICoqTm8gYXBwbGljYW50cyB5ZXQqKiDigJQgbm9ib2R5IGhhcyBhcHBsaWVkLiBOZWVkcyBzb3VyY2luZy4KMi4gKipObyBjYW5kaWRhdGUgc2NvcmluZyA3MCBvciBhYm92ZSoqIOKAlCBwZW9wbGUgYXBwbGllZCwgbm9uZSBhcmUgdmlhYmxlLgogICBOZWVkcyB0aGUgcmVxdWlyZW1lbnRzIG9yIHRoZSBwYXkgcmV2aXNpdGluZy4KMy4gKipUaHJlZSBvciBtb3JlIHVuc2NyZWVuZWQqKiDigJQgYSBiYWNrbG9nIG5vYm9keSBoYXMgbG9va2VkIGF0LiBOZWVkcwogICBzY3JlZW5pbmcuCjQuICoqU29tZW9uZSBhd2FpdGluZyBhIGRlY2lzaW9uKiog4oCUIGEgc3Ryb25nIGNhbmRpZGF0ZSBoYXMgYmVlbiBzY3JlZW5lZCBhbmQKICAgbm90IG1vdmVkIG9uLiBOZWVkcyBhIHBlcnNvbiB0byBkZWNpZGUuCgpSYW5raW5nIHdlaWdodHMgYW4gZW1wdHkgcGlwZWxpbmUgYWJvdmUgYSBidXN5IG9uZSB0aGF0IG5lZWRzIGF0dGVudGlvbiwgc2luY2UKYW4gZW1wdHkgcGlwZWxpbmUgdGFrZXMgbG9uZ2VzdCB0byByZWNvdmVyLgoKIyMgT3V0cHV0CgpBIGNvdW50IG9mIHJvbGVzIGF0IHJpc2ssIHRoZW4gYSByb3cgcGVyIHJvbGUgbmFtaW5nIGl0cyBkZXBhcnRtZW50IGFuZCBpdHMKcmVhc29ucy4gQSByb2xlIHdpdGggbm8gcHJvYmxlbXMgaXMgbm90IGxpc3RlZC4KCiMjIExpbWl0YXRpb25zCgotIE9ubHkgb3BlbiByb2xlcyBhcmUgY29uc2lkZXJlZC4gQSBwYXVzZWQgb3IgY2xvc2VkIHJvbGUgaXMgbm90IGF0IHJpc2suCi0gIlZpYWJsZSIgbWVhbnMgYW4gQUkgc2NvcmUgb2YgNzAgb3IgYWJvdmUuIEFuIHVuc2NvcmVkIGNhbmRpZGF0ZSBpcyBub3QKICBjb3VudGVkIGFzIHZpYWJsZSwgc28gYSByb2xlIHdob3NlIGFwcGxpY2FudHMgbm9ib2R5IGhhcyBzY3JlZW5lZCB3aWxsIHJlcG9ydAogIGJvdGggYW4gdW5zY3JlZW5lZCBiYWNrbG9nIGFuZCBubyB2aWFibGUgY2FuZGlkYXRlIOKAlCB0aG9zZSBhcmUgdHdvIHRydWUKICBzdGF0ZW1lbnRzIGFib3V0IHRoZSBzYW1lIGNhdXNlLgotIFRoaXMgcmVhZHMgdGhlIHBpcGVsaW5lLCBub3QgdGhlIHJvc3Rlci4gSXQgZG9lcyBub3Qga25vdyBob3cgbWFueSBwZW9wbGUgYQogIHJvbGUgbmVlZHMsIGJlY2F1c2Ugbm8gcG9zaXRpb24gaW4gdGhpcyB3b3Jrc3BhY2Ugc3RhdGVzIGEgaGVhZGNvdW50Lgo=", "bytes": 3068, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "staffing-risk", "name": "Staffing Risk", "description": "Identify open roles that will not fill on their own, and say why.", "category": "workforce", "pages": [ "positions", "control-center" ], "status": "active", "version": 1, "triggers": [ "staffing risk", "staffing gap", "roles*at risk", "positions*at risk", "understaffed" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Which roles are at risk?", "capability": "list" }, { "label": "Summarize staffing risk", "capability": "summary" } ], "capabilities": [ "summary", "list", "table", "insight" ], "responses": { "summary": { "title": "Staffing risk", "source": "positions.risk" }, "list": { "title": "Roles at risk", "source": "positions.risk", "limit": 5 }, "table": { "title": "Roles at risk", "source": "positions.risk" }, "insight": { "title": "Biggest staffing risk", "source": "positions.risk" } } } }, "body": "# Staffing Risk\n\n## Purpose\n\n- Name the open roles that are not going to fill without intervention.\n- Say which of four distinct problems each one has, because each has a\n different fix.\n- Rank them so the reader knows which to deal with first.\n\n## Capabilities\n\n- Count the open roles currently at risk.\n- List those roles, worst first, with the reason for each.\n- Identify the single role most in need of attention.\n\n## Data\n\nReads `positions.risk`, which joins open `JobPosting` records to their\n`JobApplication` records through the same `buildPosition` reading the Positions\npage renders from. No separate calculation, so a risk reported here and a health\nbadge shown there cannot disagree.\n\n## Analysis\n\nA role is at risk when any of the following is true. They are kept apart rather\nthan combined into a score, because the score would hide the only part that\ntells the reader what to do:\n\n1. **No applicants yet** — nobody has applied. Needs sourcing.\n2. **No candidate scoring 70 or above** — people applied, none are viable.\n Needs the requirements or the pay revisiting.\n3. **Three or more unscreened** — a backlog nobody has looked at. Needs\n screening.\n4. **Someone awaiting a decision** — a strong candidate has been screened and\n not moved on. Needs a person to decide.\n\nRanking weights an empty pipeline above a busy one that needs attention, since\nan empty pipeline takes longest to recover.\n\n## Output\n\nA count of roles at risk, then a row per role naming its department and its\nreasons. A role with no problems is not listed.\n\n## Limitations\n\n- Only open roles are considered. A paused or closed role is not at risk.\n- \"Viable\" means an AI score of 70 or above. An unscored candidate is not\n counted as viable, so a role whose applicants nobody has screened will report\n both an unscreened backlog and no viable candidate — those are two true\n statements about the same cause.\n- This reads the pipeline, not the roster. It does not know how many people a\n role needs, because no position in this workspace states a headcount." }, "parse": { "ok": true }, "normalized": { "id": "staffing-risk", "name": "Staffing Risk", "description": "Identify open roles that will not fill on their own, and say why.", "status": "active", "pages": [ "positions", "control-center" ], "kind": "assistant", "category": "workforce", "actions": [], "triggers": [ "staffing risk", "staffing gap", "roles*at risk", "positions*at risk", "understaffed" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/talent-pool-analysis.md", "type": "skill", "rawBase64": "LS0tCmlkOiB0YWxlbnQtcG9vbC1hbmFseXNpcwpuYW1lOiBUYWxlbnQgUG9vbCBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSB0aGUgdGFsZW50IGFscmVhZHkga25vd24gdG8gdGhpcyB3b3Jrc3BhY2Ug4oCUIHdobyBpcyBpbiBpdCwgaG93IHRoZXkgc2NvcmUsIGFuZCB3aG8gaXMgYXZhaWxhYmxlLgpjYXRlZ29yeTogaGlyaW5nCnBhZ2VzOgogIC0gdGFsZW50LXBvb2wKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIHRhbGVudCBwb29sCiAgLSBwb29sIGhlYWx0aAogIC0gYXZhaWxhYmxlIHRhbGVudAogIC0gd2hvIGlzIGF2YWlsYWJsZQogIC0gc3VwcGx5IG9mIHRhbGVudApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBoZWFsdGh5IGlzIHRoZSB0YWxlbnQgcG9vbD8KICAgICAgY2FwYWJpbGl0eTogc3VtbWFyeQogICAgLSBsYWJlbDogV2hvIGlzIGluIHRoZSBwb29sPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogU3Ryb25nZXN0IHBlb3BsZSBpbiB0aGUgcG9vbAogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBUYWxlbnQgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCiAgICBzdGF0czoKICAgICAgdGl0bGU6IFRhbGVudCBwb29sCiAgICAgIHNvdXJjZTogdGFsZW50LnBvb2wKICAgIHRhYmxlOgogICAgICB0aXRsZTogVGFsZW50IHBvb2wKICAgICAgc291cmNlOiB0YWxlbnQucG9vbAogICAgbGlzdDoKICAgICAgdGl0bGU6IFN0cm9uZ2VzdCBpbiB0aGUgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCiAgICAgIGxpbWl0OiA1CiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IFRhbGVudCBwb29sCiAgICAgIHNvdXJjZTogdGFsZW50LnBvb2wKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBUYWxlbnQgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCi0tLQoKIyBUYWxlbnQgUG9vbCBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgd2hvIHRoaXMgd29ya3NwYWNlIGFscmVhZHkga25vd3MgYW5kIGNvdWxkIHBsYWNlLgotIFNheSBob3cgbXVjaCBvZiB0aGUgcG9vbCBoYXMgYmVlbiBhc3Nlc3NlZCwgYW5kIGhvdyBtdWNoIGhhcyBub3QuCi0gUmVwb3J0IGF2YWlsYWJpbGl0eSBhbmQgY2VydGlmaWNhdGlvbiBjb3ZlcmFnZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcG9vbCBzaXplLCBob3cgbWFueSBhcmUgc2NvcmVkLCBhbmQgYXZlcmFnZSBzY29yZS4KLSBMaXN0IG9yIHRhYnVsYXRlIHBlb3BsZSBieSBzY29yZS4KLSBSZXBvcnQgaG93IG1hbnkgaGF2ZSBhdmFpbGFiaWxpdHkgb24gZmlsZSBhbmQgaG93IG1hbnkgYXJlIGNlcnRpZmllZC4KCiMjIERhdGEKClJlYWRzIGB0YWxlbnQucG9vbGAsIHdoaWNoIGNvdW50cyBgV29ya2VyUHJvZmlsZWAgcmVjb3JkcyDigJQgdGhlaXIgYGtyb3dfc2NvcmVgLApgYXZhaWxhYmlsaXR5YCwgYGNlcnRpZmljYXRpb25zYCBhbmQgc3RhdGVkIHJvbGUuCgojIyBBbmFseXNpcwoKVGhlIGF2ZXJhZ2Ugc2NvcmUgaXMgY29tcHV0ZWQgYWNyb3NzICoqc2NvcmVkIHByb2ZpbGVzIG9ubHkqKi4gQ291bnRpbmcgYW4KdW5hc3Nlc3NlZCBwcm9maWxlIGFzIHplcm8gd291bGQgcmVwb3J0IGEgaGVhbHRoeSBwb29sIGFzIHBvb3IgaW4gZXhhY3QKcHJvcG9ydGlvbiB0byBob3cgbXVjaCBvZiBpdCBub2JvZHkgaGFzIGdvdCB0byB5ZXQg4oCUIGEgZmlndXJlIHRoYXQgZ2V0cyB3b3JzZQphcyB0aGUgcG9vbCBncm93cywgd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIHdoYXQgaXQgc2hvdWxkIGRvLgoKQW4gdW5zY29yZWQgcGVyc29uIGlzIHJlcG9ydGVkIGFzICJOb3QgeWV0IHNjb3JlZCIgcmF0aGVyIHRoYW4gc2hvd24gd2l0aCBhCnplcm8sIGJlY2F1c2UgYSB6ZXJvIHJlYWRzIGFzIGEgYmFkIGFzc2Vzc21lbnQgcmF0aGVyIHRoYW4gYW4gYWJzZW50IG9uZS4KCiMjIE91dHB1dAoKUG9vbCBzaXplLCBob3cgbWFueSBhcmUgc2NvcmVkIGFuZCBob3cgbWFueSBhcmUgbm90LCBhdmVyYWdlIHNjb3JlIGFjcm9zcyB0aGUKc2NvcmVkLCBhdmFpbGFiaWxpdHkgYW5kIGNlcnRpZmljYXRpb24gY291bnRzLCB0aGVuIHBlb3BsZSByYW5rZWQgYnkgc2NvcmUuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGlzIHN1cHBseSwgbm90IGFwcGxpY2FudHMuIFNvbWVvbmUgaW4gdGhlIHBvb2wgaGFzIG5vdCBhcHBsaWVkIHRvIGFueXRoaW5nCiAgYnkgYmVpbmcgaGVyZSwgYW5kIG11c3Qgbm90IGJlIGRlc2NyaWJlZCBhcyBhIGNhbmRpZGF0ZSBmb3IgYSByb2xlLgotIEF2YWlsYWJpbGl0eSBpcyB3aGF0IGEgcGVyc29uIHN0YXRlZCBvbiB0aGVpciBwcm9maWxlLCBub3QgYSBsaXZlIGNhbGVuZGFyLgotIEEgcHJvZmlsZSB3aXRoIG5vIHNjb3JlIGlzIHVuYXNzZXNzZWQsIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBhcyBiZWluZyB3ZWFrLgo=", "bytes": 2585, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "talent-pool-analysis", "name": "Talent Pool Analysis", "description": "Analyse the talent already known to this workspace — who is in it, how they score, and who is available.", "category": "hiring", "pages": [ "talent-pool" ], "status": "active", "version": 1, "triggers": [ "talent pool", "pool health", "available talent", "who is available", "supply of talent" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How healthy is the talent pool?", "capability": "summary" }, { "label": "Who is in the pool?", "capability": "table" }, { "label": "Strongest people in the pool", "capability": "list" } ], "capabilities": [ "summary", "stats", "table", "list", "progress", "insight" ], "responses": { "summary": { "title": "Talent pool", "source": "talent.pool" }, "stats": { "title": "Talent pool", "source": "talent.pool" }, "table": { "title": "Talent pool", "source": "talent.pool" }, "list": { "title": "Strongest in the pool", "source": "talent.pool", "limit": 5 }, "progress": { "title": "Talent pool", "source": "talent.pool" }, "insight": { "title": "Talent pool", "source": "talent.pool" } } } }, "body": "# Talent Pool Analysis\n\n## Purpose\n\n- Report who this workspace already knows and could place.\n- Say how much of the pool has been assessed, and how much has not.\n- Report availability and certification coverage.\n\n## Capabilities\n\n- Summarize pool size, how many are scored, and average score.\n- List or tabulate people by score.\n- Report how many have availability on file and how many are certified.\n\n## Data\n\nReads `talent.pool`, which counts `WorkerProfile` records — their `krow_score`,\n`availability`, `certifications` and stated role.\n\n## Analysis\n\nThe average score is computed across **scored profiles only**. Counting an\nunassessed profile as zero would report a healthy pool as poor in exact\nproportion to how much of it nobody has got to yet — a figure that gets worse\nas the pool grows, which is the opposite of what it should do.\n\nAn unscored person is reported as \"Not yet scored\" rather than shown with a\nzero, because a zero reads as a bad assessment rather than an absent one.\n\n## Output\n\nPool size, how many are scored and how many are not, average score across the\nscored, availability and certification counts, then people ranked by score.\n\n## Limitations\n\n- This is supply, not applicants. Someone in the pool has not applied to anything\n by being here, and must not be described as a candidate for a role.\n- Availability is what a person stated on their profile, not a live calendar.\n- A profile with no score is unassessed, which is not the same as being weak." }, "parse": { "ok": true }, "normalized": { "id": "talent-pool-analysis", "name": "Talent Pool Analysis", "description": "Analyse the talent already known to this workspace — who is in it, how they score, and who is available.", "status": "active", "pages": [ "talent-pool" ], "kind": "assistant", "category": "hiring", "actions": [], "triggers": [ "talent pool", "pool health", "available talent", "who is available", "supply of talent" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/owliver/workforce-analytics.md", "type": "skill", "rawBase64": "LS0tCmlkOiB3b3JrZm9yY2UtYW5hbHl0aWNzCm5hbWU6IFdvcmtmb3JjZSBBbmFseXRpY3MKZGVzY3JpcHRpb246IFJlcG9ydCB3b3JrZm9yY2UgY292ZXJhZ2Ug4oCUIG9wZW4gcm9sZXMgYW5kIHdobyBoYXMgYWN0dWFsbHkgYmVlbiBoaXJlZCBpbnRvIHRoZW0uCmNhdGVnb3J5OiBhbmFseXRpY3MKcGFnZXM6CiAgLSBhbmFseXRpY3MKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIHdvcmtmb3JjZSBhbmFseXRpY3MKICAtIHdvcmtmb3JjZSBjb3ZlcmFnZQogIC0gcm9sZXMgY292ZXJlZAogIC0gY292ZXJhZ2UKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBIb3cgd2VsbCBhcmUgb3BlbiByb2xlcyBjb3ZlcmVkPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBDb3ZlcmFnZSBieSByb2xlCiAgICAgIGNhcGFiaWxpdHk6IHRhYmxlCiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBXb3JrZm9yY2UgY292ZXJhZ2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIHN0YXRzOgogICAgICB0aXRsZTogV29ya2ZvcmNlIGNvdmVyYWdlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmNvdmVyYWdlCiAgICB0YWJsZToKICAgICAgdGl0bGU6IENvdmVyYWdlIGJ5IHJvbGUKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBDb3ZlcmFnZSBieSByb2xlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmNvdmVyYWdlCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IENvdmVyYWdlIGJ5IHJvbGUKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBXb3JrZm9yY2UgY292ZXJhZ2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKLS0tCgojIFdvcmtmb3JjZSBBbmFseXRpY3MKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyBtYW55IG9wZW4gcm9sZXMgaGF2ZSBzb21lYm9keSBoaXJlZCBpbnRvIHRoZW0uCi0gTmFtZSB0aGUgcm9sZXMgdGhhdCBoYXZlIG5vYm9keSB5ZXQuCi0gU3RhdGUgcGxhaW5seSB3aGVyZSBhIHJvbGUgaGFzIG5vdCBzYWlkIGhvdyBtYW55IHBlb3BsZSBpdCBuZWVkcy4KCiMjIENhcGFiaWxpdGllcwoKLSBDb3VudCBvcGVuIHJvbGVzLCB0aG9zZSB3aXRoIHNvbWVvbmUgaGlyZWQsIGFuZCB0aG9zZSB3aXRoIG5vYm9keS4KLSBSZXBvcnQgY292ZXJhZ2UgcGVyIHJvbGUuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLmNvdmVyYWdlYCwgd2hpY2ggcmVhZHMgb3BlbiBgSm9iUG9zdGluZ2AgcmVjb3JkcyB0aHJvdWdoCmBkZW1hbmRGb3JgIOKAlCB0aGUgc2FtZSByZWFkaW5nIHRoZSBQb3NpdGlvbnMgcGFnZSB1c2VzIOKAlCBqb2luZWQgdG8gYFN0YWZmYCBieQpgam9iX3Bvc3RpbmdfaWRgLgoKIyMgQW5hbHlzaXMKCkEgcm9sZSdzIGNvdmVyYWdlIGlzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGhpcmVkIGludG8gaXQgYWdhaW5zdCB0aGUgbnVtYmVyIGl0CmFza2VkIGZvci4gV2hlcmUgYSByb2xlIGhhcyBub3QgZGVjbGFyZWQgYSBoZWFkY291bnQsIHRoaXMgcmVwb3J0cyB0aGUgaGlyZXMgYW5kCnNheXMgdGhlIHRhcmdldCBpcyB1bnN0YXRlZC4gSXQgZG9lcyAqKm5vdCoqIGFzc3VtZSBvbmUgcGVyc29uIHBlciByb2xlOiB0aGF0CndvdWxkIHByb2R1Y2UgYSBjb25maWRlbnQgZmlsbCBwZXJjZW50YWdlIHRoYXQgbWVhbnMgbm90aGluZywgYW5kIG5vdGhpbmcgb24Kc2NyZWVuIHdvdWxkIHNheSBzby4KCiMjIE91dHB1dAoKQ291bnRzIG9mIG9wZW4gcm9sZXMsIGNvdmVyZWQgcm9sZXMgYW5kIHVuY292ZXJlZCByb2xlcywgaG93IG1hbnkgcm9sZXMgc3RhdGUgYQpoZWFkY291bnQsIGFuZCBhIHJvdyBwZXIgcm9sZS4KCiMjIExpbWl0YXRpb25zCgotIE5vIHBvc2l0aW9uIGluIHRoaXMgd29ya3NwYWNlIGN1cnJlbnRseSBzdGF0ZXMgYSBoZWFkY291bnQsIHNvIG5vIGZpbGwKICBwZXJjZW50YWdlIGlzIHJlcG9ydGVkLiBUaGUgY291bnQgb2YgaGlyZXMgcGVyIHJvbGUgaXMgcmVhbC4KLSBPbmx5IG9wZW4gcm9sZXMgYXJlIGNvdW50ZWQuIFBhdXNlZCBhbmQgY2xvc2VkIHJvbGVzIGFyZSBleGNsdWRlZC4KLSBBc3NpZ25tZW50IHJlY29yZHMgd291bGQgcmVmaW5lIHRoaXMsIGJ1dCBub25lIGV4aXN0IHlldDsgY292ZXJhZ2UgaXMKICB0aGVyZWZvcmUgY291bnRlZCBmcm9tIGhpcmVzLgo=", "bytes": 2339, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "workforce-analytics", "name": "Workforce Analytics", "description": "Report workforce coverage — open roles and who has actually been hired into them.", "category": "analytics", "pages": [ "analytics" ], "status": "active", "version": 1, "triggers": [ "workforce analytics", "workforce coverage", "roles covered", "coverage" ], "owliver": { "enabled": true, "suggestions": [ { "label": "How well are open roles covered?", "capability": "summary" }, { "label": "Coverage by role", "capability": "table" } ], "capabilities": [ "summary", "stats", "table", "list", "progress", "insight" ], "responses": { "summary": { "title": "Workforce coverage", "source": "workforce.coverage" }, "stats": { "title": "Workforce coverage", "source": "workforce.coverage" }, "table": { "title": "Coverage by role", "source": "workforce.coverage" }, "list": { "title": "Coverage by role", "source": "workforce.coverage" }, "progress": { "title": "Coverage by role", "source": "workforce.coverage" }, "insight": { "title": "Workforce coverage", "source": "workforce.coverage" } } } }, "body": "# Workforce Analytics\n\n## Purpose\n\n- Report how many open roles have somebody hired into them.\n- Name the roles that have nobody yet.\n- State plainly where a role has not said how many people it needs.\n\n## Capabilities\n\n- Count open roles, those with someone hired, and those with nobody.\n- Report coverage per role.\n\n## Data\n\nReads `workforce.coverage`, which reads open `JobPosting` records through\n`demandFor` — the same reading the Positions page uses — joined to `Staff` by\n`job_posting_id`.\n\n## Analysis\n\nA role's coverage is the number of people hired into it against the number it\nasked for. Where a role has not declared a headcount, this reports the hires and\nsays the target is unstated. It does **not** assume one person per role: that\nwould produce a confident fill percentage that means nothing, and nothing on\nscreen would say so.\n\n## Output\n\nCounts of open roles, covered roles and uncovered roles, how many roles state a\nheadcount, and a row per role.\n\n## Limitations\n\n- No position in this workspace currently states a headcount, so no fill\n percentage is reported. The count of hires per role is real.\n- Only open roles are counted. Paused and closed roles are excluded.\n- Assignment records would refine this, but none exist yet; coverage is\n therefore counted from hires." }, "parse": { "ok": true }, "normalized": { "id": "workforce-analytics", "name": "Workforce Analytics", "description": "Report workforce coverage — open roles and who has actually been hired into them.", "status": "active", "pages": [ "analytics" ], "kind": "assistant", "category": "analytics", "actions": [], "triggers": [ "workforce analytics", "workforce coverage", "roles covered", "coverage" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/workforce/bartending-training.md", "type": "skill", "rawBase64": "LS0tCmlkOiBiYXJ0ZW5kaW5nLXRyYWluaW5nCm5hbWU6IEJhcnRlbmRpbmcgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIHNwZWNzLCBzcGVlZCBhbmQgcmVzcG9uc2libGUgc2VydmljZSBiZWhpbmQgYSBiYXIuCnNraWxsOiBiYXJ0ZW5kaW5nCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBwcm9maWxlCi0tLQoKIyBCYXJ0ZW5kaW5nIFRyYWluaW5nCgpTcGVlZCwgc3BlY3MsIGFuZCB0aGUganVkZ2VtZW50IHRvIHJ1biBhIGJhciBhbG9uZS4KCkF0dGFjaGVkIHRvIFBvc2l0aW9ucyBhbmQgUHJvZmlsZSBidXQgbm90IENhbmRpZGF0ZXM6IGJhciBsZXZlbHMgYXJlIHJlYWQgd2hlbgptYXRjaGluZyBzb21lb25lIHRvIGEgcm9sZSBhbmQgd2hlbiB0aGV5IGFyZSBwbGFubmluZyB0aGVpciBvd24gZGV2ZWxvcG1lbnQsIGFuZAp0aGUgcmVjcnVpdGVyJ3MgY2FuZGlkYXRlIHZpZXcgaXMga2VwdCB0byB0aGUgc2tpbGxzIHRoZSByb2xlcyBvbiBmaWxlIGFzayBmb3IuCgojIyBCZWdpbm5lcgoKUG91ciB0byBzcGVjIGFuZCBrZWVwIGEgc3RhdGlvbiBjbGVhbiB0aHJvdWdoIGEgc2VydmljZS4KCiMjIEludGVybWVkaWF0ZQoKUmVmdXNlIHNlcnZpY2Ugd2l0aG91dCBhIHNjZW5lLCBhbmQgZG9jdW1lbnQgd2hhdCBoYXBwZW5lZC4KCiMjIEFkdmFuY2VkCgpSdW4gYSBiYXIgYWxvbmUgdGhyb3VnaCBhIGZ1bGwgZXZlbnQuCgojIyBFeHBlcnQKCkRlc2lnbiBhIGxpc3QgYW5kIHRyYWluIHRoZSBwZW9wbGUgd2hvIHBvdXIgaXQuCgojIyBWZXJpZmljYXRpb24KCk93bGl2ZXIgZXZhbHVhdGVzIHRoZSByZWNvcmRlZCBwb3VyIGFuZCB0aGUgc3Bva2VuIHJlZnVzYWwuCg==", "bytes": 847, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "bartending-training", "name": "Bartending Training", "description": "Training path for specs, speed and responsible service behind a bar.", "skill": "bartending", "pages": [ "positions", "profile" ] }, "body": "# Bartending Training\n\nSpeed, specs, and the judgement to run a bar alone.\n\nAttached to Positions and Profile but not Candidates: bar levels are read when\nmatching someone to a role and when they are planning their own development, and\nthe recruiter's candidate view is kept to the skills the roles on file ask for.\n\n## Beginner\n\nPour to spec and keep a station clean through a service.\n\n## Intermediate\n\nRefuse service without a scene, and document what happened.\n\n## Advanced\n\nRun a bar alone through a full event.\n\n## Expert\n\nDesign a list and train the people who pour it.\n\n## Verification\n\nOwliver evaluates the recorded pour and the spoken refusal." }, "parse": { "ok": true }, "normalized": { "id": "bartending-training", "name": "Bartending Training", "description": "Training path for specs, speed and responsible service behind a bar.", "status": "active", "pages": [ "positions", "profile" ], "kind": "workforce", "category": "", "actions": [], "triggers": [ "bartending training" ], "declaredTriggers": false, "prompt": null, "facets": [], "skillId": "bartending" }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/workforce/customer-service-training.md", "type": "skill", "rawBase64": "LS0tCmlkOiBjdXN0b21lci1zZXJ2aWNlLXRyYWluaW5nCm5hbWU6IEN1c3RvbWVyIFNlcnZpY2UgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIGhhbmRsaW5nIGd1ZXN0cywgY29tcGxhaW50cyBhbmQgcmVjb3ZlcnkuCnNraWxsOiBjdXN0b21lcl9zZXJ2aWNlCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBDdXN0b21lciBTZXJ2aWNlIFRyYWluaW5nCgpSZWFkaW5nIGEgZ3Vlc3QsIGhhbmRsaW5nIHdoYXQgZ29lcyB3cm9uZywgYW5kIGxlYXZpbmcgdGhlbSBiZXR0ZXIgdGhhbiB5b3UKZm91bmQgdGhlbS4gVGhyZWUgcnVuZ3M6IHRoZXJlIGlzIG5vIGZvdXJ0aCB0aGluZyB0byBiZSBnb29kIGF0IGhlcmUsIGFuZAppbnZlbnRpbmcgYW4gRXhwZXJ0IHRpZXIgd291bGQgbWFrZSBFeHBlcnQgbWVhbiBsZXNzIGV2ZXJ5d2hlcmUgZWxzZS4KCiMjIEJlZ2lubmVyCgpHcmVldCwgcmVhZCBhbmQgc2VydmUgYSBndWVzdCB3aXRob3V0IHN1cGVydmlzaW9uLgoKIyMgSW50ZXJtZWRpYXRlCgpIYW5kbGUgYSBjb21wbGFpbnQgdG8gcmVzb2x1dGlvbiB3aXRob3V0IGVzY2FsYXRpbmcgaXQuCgojIyBBZHZhbmNlZAoKUmVjb3ZlciBhIGJhZGx5IGJyb2tlbiBleHBlcmllbmNlIGFuZCBrZWVwIHRoZSBndWVzdC4KCiMjIFZlcmlmaWNhdGlvbgoKT3dsaXZlciBzY29yZXMgdGhlIHJlc3BvbnNlIGFnYWluc3QgdGhlIGNyaXRlcmlhIG9uIGVhY2ggbW9kdWxlIOKAlCB3aGF0IHdhcwphY2tub3dsZWRnZWQsIHdoYXQgd2FzIG9mZmVyZWQsIGFuZCB3aGV0aGVyIHRoZSB0YWJsZSB3YXMgcHJvdGVjdGVkLgo=", "bytes": 836, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "customer-service-training", "name": "Customer Service Training", "description": "Training path for handling guests, complaints and recovery.", "skill": "customer_service", "pages": [ "positions", "candidates", "profile" ] }, "body": "# Customer Service Training\n\nReading a guest, handling what goes wrong, and leaving them better than you\nfound them. Three rungs: there is no fourth thing to be good at here, and\ninventing an Expert tier would make Expert mean less everywhere else.\n\n## Beginner\n\nGreet, read and serve a guest without supervision.\n\n## Intermediate\n\nHandle a complaint to resolution without escalating it.\n\n## Advanced\n\nRecover a badly broken experience and keep the guest.\n\n## Verification\n\nOwliver scores the response against the criteria on each module — what was\nacknowledged, what was offered, and whether the table was protected." }, "parse": { "ok": true }, "normalized": { "id": "customer-service-training", "name": "Customer Service Training", "description": "Training path for handling guests, complaints and recovery.", "status": "active", "pages": [ "positions", "candidates", "profile" ], "kind": "workforce", "category": "", "actions": [], "triggers": [ "customer service training" ], "declaredTriggers": false, "prompt": null, "facets": [], "skillId": "customer_service" }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/workforce/food-safety-training.md", "type": "skill", "rawBase64": "LS0tCmlkOiBmb29kLXNhZmV0eS10cmFpbmluZwpuYW1lOiBGb29kIFNhZmV0eSBUcmFpbmluZwpkZXNjcmlwdGlvbjogVHJhaW5pbmcgcGF0aCBmb3IgaGF6YXJkIGF3YXJlbmVzcywgdGVtcGVyYXR1cmUgY29udHJvbCBhbmQgaHlnaWVuZS4Kc2tpbGw6IGZvb2Rfc2FmZXR5CnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBGb29kIFNhZmV0eSBUcmFpbmluZwoKRmluZGluZyB0aGUgaGF6YXJkIGJlZm9yZSBpdCBmaW5kcyB5b3UuIEV2ZXJ5IGxldmVsIGlzIGV2aWRlbmNlZCBhZ2FpbnN0IGEgcmVhbApwcmVwIHN0YXRpb24gcmF0aGVyIHRoYW4gYSBxdWl6IHNjb3JlIGFsb25lLgoKIyMgQmVnaW5uZXIKCklkZW50aWZ5IHRoZSBjb21tb24gaGF6YXJkcyBpbiBhIHByZXAgc3RhdGlvbi4KCiMjIEludGVybWVkaWF0ZQoKSG9sZCwgc3RvcmUgYW5kIGxhYmVsIGZvb2QgYXQgc2FmZSB0ZW1wZXJhdHVyZXMgdGhyb3VnaCBhIGZ1bGwgc2VydmljZS4KCiMjIEFkdmFuY2VkCgpSdW4gYSBzdGF0aW9uIHRvIGF1ZGl0IHN0YW5kYXJkIGFuZCBjb3JyZWN0IG90aGVycyBvbiBpdC4KCiMjIFZlcmlmaWNhdGlvbgoKT3dsaXZlciBqdWRnZXMgdGhlIGhhemFyZHMgaWRlbnRpZmllZCBhbmQgdGhlIG9uZXMgbWlzc2VkLgo=", "bytes": 659, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "food-safety-training", "name": "Food Safety Training", "description": "Training path for hazard awareness, temperature control and hygiene.", "skill": "food_safety", "pages": [ "positions", "candidates", "profile" ] }, "body": "# Food Safety Training\n\nFinding the hazard before it finds you. Every level is evidenced against a real\nprep station rather than a quiz score alone.\n\n## Beginner\n\nIdentify the common hazards in a prep station.\n\n## Intermediate\n\nHold, store and label food at safe temperatures through a full service.\n\n## Advanced\n\nRun a station to audit standard and correct others on it.\n\n## Verification\n\nOwliver judges the hazards identified and the ones missed." }, "parse": { "ok": true }, "normalized": { "id": "food-safety-training", "name": "Food Safety Training", "description": "Training path for hazard awareness, temperature control and hygiene.", "status": "active", "pages": [ "positions", "candidates", "profile" ], "kind": "workforce", "category": "", "actions": [], "triggers": [ "food safety training" ], "declaredTriggers": false, "prompt": null, "facets": [], "skillId": "food_safety" }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/workforce/leadership-training.md", "type": "skill", "rawBase64": "LS0tCmlkOiBsZWFkZXJzaGlwLXRyYWluaW5nCm5hbWU6IExlYWRlcnNoaXAgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIGJyaWVmaW5nLCBhc3NpZ25pbmcgYW5kIGNvcnJlY3RpbmcgYSBmbG9vciB0ZWFtLgpza2lsbDogbGVhZGVyc2hpcApwYWdlczoKICAtIHByb2ZpbGUKLS0tCgojIExlYWRlcnNoaXAgVHJhaW5pbmcKClByZS1zaGlmdCBicmllZmluZ3MsIHNlY3Rpb24gYXNzaWdubWVudHMsIGFuZCBjb3JyZWN0aW5nIGEgdGVhbW1hdGUgd2l0aG91dApkZWZsYXRpbmcgdGhlbS4KCkF0dGFjaGVkIHRvIFByb2ZpbGUgb25seTogdGhpcyBpcyBhIGRldmVsb3BtZW50IHBhdGggYW4gZW1wbG95ZWUgcGxhbnMgZm9yCnRoZW1zZWx2ZXMuIEl0IGlzIGRlbGliZXJhdGVseSBub3Qgc3VyZmFjZWQgb24gdGhlIHJlY3J1aXRlci1mYWNpbmcgcGFnZXMsIHdoaWNoCmRlbW9uc3RyYXRlcyB0aGF0IGBwYWdlc2AgY29udHJvbHMgdmlzaWJpbGl0eSBwZXIgcGFnZSByYXRoZXIgdGhhbiBnbG9iYWxseS4KCiMjIEJlZ2lubmVyCgpSdW4gYSBwcmUtc2hpZnQgYnJpZWZpbmcgZm9yIGEgc21hbGwgc2VjdGlvbi4KCiMjIEludGVybWVkaWF0ZQoKQXNzaWduIHNlY3Rpb25zIGFuZCBob2xkIGEgc2VydmljZSB0byB0aW1lLgoKIyMgQWR2YW5jZWQKCkxlYWQgYSBmbG9vciB0ZWFtIG9mIGVpZ2h0IHRocm91Z2ggYSBsYXJnZSBldmVudC4KCiMjIEV4cGVydAoKQnVpbGQgdGhlIHJvdGEgYW5kIGRldmVsb3AgdGhlIGxlYWRzIHdobyBydW4gaXQuCgojIyBWZXJpZmljYXRpb24KCk93bGl2ZXIgZXZhbHVhdGVzIHRoZSByZWNvcmRlZCBicmllZmluZyBhZ2FpbnN0IG93bmVyc2hpcCwgdGltaW5nIGFuZCB0b25lLgo=", "bytes": 866, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "leadership-training", "name": "Leadership Training", "description": "Training path for briefing, assigning and correcting a floor team.", "skill": "leadership", "pages": [ "profile" ] }, "body": "# Leadership Training\n\nPre-shift briefings, section assignments, and correcting a teammate without\ndeflating them.\n\nAttached to Profile only: this is a development path an employee plans for\nthemselves. It is deliberately not surfaced on the recruiter-facing pages, which\ndemonstrates that `pages` controls visibility per page rather than globally.\n\n## Beginner\n\nRun a pre-shift briefing for a small section.\n\n## Intermediate\n\nAssign sections and hold a service to time.\n\n## Advanced\n\nLead a floor team of eight through a large event.\n\n## Expert\n\nBuild the rota and develop the leads who run it.\n\n## Verification\n\nOwliver evaluates the recorded briefing against ownership, timing and tone." }, "parse": { "ok": true }, "normalized": { "id": "leadership-training", "name": "Leadership Training", "description": "Training path for briefing, assigning and correcting a floor team.", "status": "active", "pages": [ "profile" ], "kind": "workforce", "category": "", "actions": [], "triggers": [ "leadership training" ], "declaredTriggers": false, "prompt": null, "facets": [], "skillId": "leadership" }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "src/skills/workforce/server-training.md", "type": "skill", "rawBase64": "LS0tCmlkOiBzZXJ2ZXItdHJhaW5pbmcKbmFtZTogU2VydmVyIFRyYWluaW5nCmRlc2NyaXB0aW9uOiBUcmFpbmluZyBwYXRoIGZvciBzZXJ2ZXIgZW1wbG95ZWVzLgpza2lsbDogc2VydmVyCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBTZXJ2ZXIgVHJhaW5pbmcKClRoZSBwYXRoIGZyb20gYSBmaXJzdCBzaGlmdCBvbiB0aGUgZmxvb3IgdG8gcnVubmluZyBhIHNlY3Rpb24gaW4gYSBmaW5lIGRpbmluZwpyb29tLiBFYWNoIGxldmVsIGlzIGhlbGQgb25seSB3aGVuIGV2ZXJ5IG1vZHVsZSBvbiB0aGF0IHJ1bmcgaGFzIGJlZW4gY29tcGxldGVkCmFuZCBPd2xpdmVyIGhhcyBwYXNzZWQgdGhlIGV2aWRlbmNlLgoKIyMgQmVnaW5uZXIKCkNvbXBsZXRlIHRoZSBmdW5kYW1lbnRhbHMgb2YgZ3Vlc3Qgc2VydmljZS4KCiMjIEludGVybWVkaWF0ZQoKQ29tcGxldGUgYWR2YW5jZWQgdGFibGUgc2VydmljZSBhbmQgb3JkZXIgbWFuYWdlbWVudC4KCiMjIEFkdmFuY2VkCgpDb21wbGV0ZSBmaW5lIGRpbmluZyBzZXJ2aWNlIGFuZCBndWVzdCByZWNvdmVyeS4KCiMjIEV4cGVydAoKTGVhZCBhIGZsb29yIHRlYW0gdGhyb3VnaCBhIGZ1bGwgc2VydmljZSB3aXRob3V0IHN1cGVydmlzaW9uLgoKIyMgVmVyaWZpY2F0aW9uCgpPd2xpdmVyIGV2YWx1YXRlcyB0aGUgZW1wbG95ZWUncyBwcmFjdGljYWwgcmVzcG9uc2UgYWdhaW5zdCB0aGUgY3JpdGVyaWEgb24gZWFjaAptb2R1bGUsIGFuZCB0aGUgbGV2ZWwgaXMgYXdhcmRlZCBvbmx5IG9uIGEgcGFzcy4K", "bytes": 792, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "server-training", "name": "Server Training", "description": "Training path for server employees.", "skill": "server", "pages": [ "positions", "candidates", "profile" ] }, "body": "# Server Training\n\nThe path from a first shift on the floor to running a section in a fine dining\nroom. Each level is held only when every module on that rung has been completed\nand Owliver has passed the evidence.\n\n## Beginner\n\nComplete the fundamentals of guest service.\n\n## Intermediate\n\nComplete advanced table service and order management.\n\n## Advanced\n\nComplete fine dining service and guest recovery.\n\n## Expert\n\nLead a floor team through a full service without supervision.\n\n## Verification\n\nOwliver evaluates the employee's practical response against the criteria on each\nmodule, and the level is awarded only on a pass." }, "parse": { "ok": true }, "normalized": { "id": "server-training", "name": "Server Training", "description": "Training path for server employees.", "status": "active", "pages": [ "positions", "candidates", "profile" ], "kind": "workforce", "category": "", "actions": [], "triggers": [ "server training" ], "declaredTriggers": false, "prompt": null, "facets": [], "skillId": "server" }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "skill-examples/board-invalid-context.md", "type": "example", "rawBase64": "LS0tCmlkOiBib2FyZC1pbnZhbGlkLWNvbnRleHQKbmFtZTogQm9hcmQgKGludmFsaWQgY29udGV4dCkKZGVzY3JpcHRpb246IE5lZ2F0aXZlIHRlc3Qg4oCUIGEgcG9zaXRpb24tc2NvcGVkIHNvdXJjZSBvbiBhIHBsYWNlbWVudCB0aGF0IHN1cHBsaWVzIG5vIHBvc2l0aW9uLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnkKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IHBvc2l0aW9uLmFjdGl2aXR5CiAgcGVyaW9kczoKICAgIC0gdG9kYXkKICAgIC0gbGFzdC03LWRheXMKICAgIC0gcHJldmlvdXMtbW9udGgKLS0tCgojIEJvYXJkIChpbnZhbGlkIGNvbnRleHQpCgojIyBQdXJwb3NlCgpEZWxpYmVyYXRlbHkgd3JvbmcsIGFuZCBrZXB0IHNvIHRoZSByZWZ1c2FsIHN0YXlzIHRlc3RlZC4gYHBvc2l0aW9uLmFjdGl2aXR5YApuZWVkcyBvbmUgcG9zaXRpb24gdG8gcmVhZDsgYGFmdGVyLXBvc2l0aW9uLWxpc3Qtc3VtbWFyeWAgcmVuZGVycyBvbmNlIGFib3ZlIHRoZQpncmlkIHdpdGggbm8gcG9zaXRpb24gaW4gY29udGV4dC4gU2F2aW5nIHRoaXMgbXVzdCBiZSByZWZ1c2VkIHdpdGggYSBtZXNzYWdlIHRoYXQKbmFtZXMgYm90aCBoYWx2ZXMgb2YgdGhlIG1pc21hdGNoLgo=", "bytes": 677, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "board-invalid-context", "name": "Board (invalid context)", "description": "Negative test — a position-scoped source on a placement that supplies no position.", "pages": [ "positions" ], "status": "active", "ui": { "type": "card", "placement": "after-position-list-summary", "title": "Board", "source": "position.activity", "periods": [ "today", "last-7-days", "previous-month" ] } }, "body": "# Board (invalid context)\n\n## Purpose\n\nDeliberately wrong, and kept so the refusal stays tested. `position.activity`\nneeds one position to read; `after-position-list-summary` renders once above the\ngrid with no position in context. Saving this must be refused with a message that\nnames both halves of the mismatch." }, "parse": { "ok": true }, "normalized": { "id": "board-invalid-context", "name": "Board (invalid context)", "description": "Negative test — a position-scoped source on a placement that supplies no position.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "board (invalid context)" ], "declaredTriggers": false, "prompt": null, "facets": [ "ui" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "`position.activity` needs a position to read, and `positions` supplies none at `after-position-list-summary`. Attach it to a placement that does, or read a source that needs nothing." }, { "path": "skill-examples/board-page-level.md", "type": "example", "rawBase64": "LS0tCmlkOiBib2FyZApuYW1lOiBCb2FyZApkZXNjcmlwdGlvbjogSGVscHMgT3dsaXZlciB1bmRlcnN0YW5kLCBhbmFseXplLCBhbmQgYWN0IG9uIHRoZSBjdXJyZW50IHRhc2sgYm9hcmQuCnBhZ2VzOgogIC0gcG9zaXRpb25zCnN0YXR1czogYWN0aXZlCnVpOgogIHR5cGU6IGNhcmQKICBwbGFjZW1lbnQ6IGFmdGVyLXBvc2l0aW9uLWxpc3Qtc3VtbWFyeQogIHRpdGxlOiBCb2FyZAogIHNvdXJjZTogY2FuZGlkYXRlcy5hY3Rpdml0eQogIHBlcmlvZHM6CiAgICAtIHRvZGF5CiAgICAtIGxhc3QtNy1kYXlzCiAgICAtIHByZXZpb3VzLW1vbnRoCi0tLQoKIyBCb2FyZAoKIyMgUHVycG9zZQoKSGVscHMgT3dsaXZlciB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHRhc2sgYm9hcmQgYnkgc3VtbWFyaXppbmcgcmVsZXZhbnQgd29yayBhY3Rpdml0eSwgaWRlbnRpZnlpbmcgaXRlbXMgdGhhdCBuZWVkIGF0dGVudGlvbiwgYW5kIGV4cGxhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRhc2tzIHNob3duIG9uIHRoZSBib2FyZC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcmVsZXZhbnQgYWN0aXZpdHkgZnJvbSB0aGUgY3VycmVudCBib2FyZC4KLSBJZGVudGlmeSB0YXNrcyBvciB3b3JrIGl0ZW1zIHRoYXQgbmVlZCBhdHRlbnRpb24uCi0gRXhwbGFpbiB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGFza3MgYW5kIHdvcmsgaXRlbXMuCi0gSGlnaGxpZ2h0IHJlY2VudCBhY3Rpdml0eSBhbmQgbWVhbmluZ2Z1bCBjaGFuZ2VzLgotIEhlbHAgT3dsaXZlciBhbmFseXplIGJvYXJkIGFjdGl2aXR5IHVzaW5nIHRoZSBhdmFpbGFibGUgYm9hcmQgZGF0YS4K", "bytes": 825, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "board", "name": "Board", "description": "Helps Owliver understand, analyze, and act on the current task board.", "pages": [ "positions" ], "status": "active", "ui": { "type": "card", "placement": "after-position-list-summary", "title": "Board", "source": "candidates.activity", "periods": [ "today", "last-7-days", "previous-month" ] } }, "body": "# Board\n\n## Purpose\n\nHelps Owliver understand the current task board by summarizing relevant work activity, identifying items that need attention, and explaining the current status of tasks shown on the board.\n\n## Capabilities\n\n- Summarize relevant activity from the current board.\n- Identify tasks or work items that need attention.\n- Explain the current status of tasks and work items.\n- Highlight recent activity and meaningful changes.\n- Help Owliver analyze board activity using the available board data." }, "parse": { "ok": true }, "normalized": { "id": "board", "name": "Board", "description": "Helps Owliver understand, analyze, and act on the current task board.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "board" ], "declaredTriggers": false, "prompt": null, "facets": [ "ui" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "skill-examples/board-position-card.md", "type": "example", "rawBase64": "LS0tCmlkOiBib2FyZC1wb3NpdGlvbi1jYXJkCm5hbWU6IEJvYXJkIChwZXIgcG9zaXRpb24pCmRlc2NyaXB0aW9uOiBDb250cm9sIHRlc3Qg4oCUIHRoZSBzYW1lIEJvYXJkIGNhcmQsIHJlbmRlcmVkIGluc2lkZSBldmVyeSBwb3NpdGlvbiBjYXJkLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBncmlkLWNhcmQKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IHBvc2l0aW9uLmFjdGl2aXR5CiAgcGVyaW9kczoKICAgIC0gdG9kYXkKICAgIC0gbGFzdC03LWRheXMKICAgIC0gcHJldmlvdXMtbW9udGgKLS0tCgojIEJvYXJkIChwZXIgcG9zaXRpb24pCgojIyBQdXJwb3NlCgpUaGUgcG9zaXRpb24tYXdhcmUgY29udHJvbCBmb3IgdGhlIHBhZ2UtbGV2ZWwgQm9hcmQgY2FyZC4gYGdyaWQtY2FyZGAgcmVzb2x2ZXMgdG8KYGFmdGVyLXBvc2l0aW9uLWNhcmRgLCB3aGljaCByZW5kZXJzIGluc2lkZSBlYWNoIHBvc2l0aW9uIGNhcmQgYW5kIHN1cHBsaWVzIHRoYXQKcG9zaXRpb24gYXMgY29udGV4dCDigJQgc28gYHBvc2l0aW9uLmFjdGl2aXR5YCByZWFkcyBhbmQgdGhlIGNhcmQgaXMgZHJhd24gb25jZSBwZXIKcm9sZSByYXRoZXIgdGhhbiBvbmNlIGZvciB0aGUgcGFnZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgYWN0aXZpdHkgZm9yIHRoZSBwb3NpdGlvbiB0aGUgY2FyZCBiZWxvbmdzIHRvLgotIFNob3cgdGhhdCBhY3Rpdml0eSBhY3Jvc3MgdG9kYXksIHRoZSBsYXN0IDcgZGF5cyBhbmQgdGhlIHByZXZpb3VzIG1vbnRoLgo=", "bytes": 800, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "board-position-card", "name": "Board (per position)", "description": "Control test — the same Board card, rendered inside every position card.", "pages": [ "positions" ], "status": "active", "ui": { "type": "card", "placement": "grid-card", "title": "Board", "source": "position.activity", "periods": [ "today", "last-7-days", "previous-month" ] } }, "body": "# Board (per position)\n\n## Purpose\n\nThe position-aware control for the page-level Board card. `grid-card` resolves to\n`after-position-card`, which renders inside each position card and supplies that\nposition as context — so `position.activity` reads and the card is drawn once per\nrole rather than once for the page.\n\n## Capabilities\n\n- Summarize activity for the position the card belongs to.\n- Show that activity across today, the last 7 days and the previous month." }, "parse": { "ok": true }, "normalized": { "id": "board-position-card", "name": "Board (per position)", "description": "Control test — the same Board card, rendered inside every position card.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "board (per position)" ], "declaredTriggers": false, "prompt": null, "facets": [ "ui" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "skill-examples/board-ui-test.md", "type": "example", "rawBase64": "LS0tCmlkOiBib2FyZC11aS10ZXN0Cm5hbWU6IEJvYXJkCmRlc2NyaXB0aW9uOiBSZW5kZXJzIHRoZSBCb2FyZCBjYXJkIG9uY2UgYWJvdmUgdGhlIHBvc2l0aW9uIGxpc3Qgb24gdGhlIFBvc2l0aW9ucyBwYWdlLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnkKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IGNhbmRpZGF0ZXMuYWN0aXZpdHkKICBwZXJpb2RzOgogICAgLSB0b2RheQogICAgLSBsYXN0LTctZGF5cwogICAgLSBwcmV2aW91cy1tb250aAotLS0KCiMgQm9hcmQKCiMjIFB1cnBvc2UKClRoZSBwYWdlIGhhbGYgb2YgdGhlIEJvYXJkLCBhbmQgb25seSB0aGF0IGhhbGYuIE9uZSBjYXJkLCBhYm92ZSB0aGUgcG9zaXRpb24KZ3JpZCwgcmVhZGluZyBhY3Rpdml0eSBhY3Jvc3MgdGhlIHdvcmtzcGFjZS4KCmBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnlgIHJlbmRlcnMgb25jZSBmb3IgdGhlIHBhZ2UgYW5kIHN1cHBsaWVzIG5vCnBvc2l0aW9uIOKAlCBgc3VyZmFjZXMuanNgIHJlY29yZHMgdGhhdCBwbGFjZW1lbnQgYXMgcHJvdmlkaW5nIG5vdGhpbmcg4oCUIHNvIHRoZQpjYXJkIHJlYWRzIGBjYW5kaWRhdGVzLmFjdGl2aXR5YCwgd2hpY2ggZGVjbGFyZXMgYGNvbnRleHQ6IG51bGxgIGFuZCBjb3VudHMKYXBwbGljYXRpb25zIGFjcm9zcyB0aGUgd29ya3NwYWNlIG92ZXIgdGhlIHBlcmlvZHMgbmFtZWQgaGVyZS4KYHBvc2l0aW9uLmFjdGl2aXR5YCBpcyByZWZ1c2VkIGF0IHRoaXMgcGxhY2VtZW50IGJ5IGB1bnJlc29sdmFibGVTZWN0aW9uc2AsIGFuZApjb3JyZWN0bHk6IGl0IG5lZWRzIG9uZSBwb3NpdGlvbiwgYW5kIHRoaXMgcGxhY2VtZW50IGhhcyBub25lIHRvIGdpdmUuCgpUaGlzIGRlZmluaXRpb24gZGVjbGFyZXMgbm8gYG93bGl2ZXI6YCBibG9jaywgc28gaXQgY29udHJpYnV0ZXMgbm8gY2FwYWJpbGl0eSwKbm8gc3VnZ2VzdGlvbiBjaGlwIGFuZCBubyBjb252ZXJzYXRpb25hbCBhbnN3ZXIuIEl0IGlzIGEgcGFnZSBleHRlbnNpb24gYW5kCm5vdGhpbmcgZWxzZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTaG93IHdvcmtzcGFjZSBhcHBsaWNhdGlvbiBhY3Rpdml0eSBhYm92ZSB0aGUgcG9zaXRpb24gbGlzdC4KLSBDb21wYXJlIHRvZGF5LCB0aGUgbGFzdCA3IGRheXMgYW5kIHRoZSBwcmV2aW91cyBtb250aCBpbiBvbmUgY2FyZC4K", "bytes": 1236, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "board-ui-test", "name": "Board", "description": "Renders the Board card once above the position list on the Positions page.", "pages": [ "positions" ], "status": "active", "ui": { "type": "card", "placement": "after-position-list-summary", "title": "Board", "source": "candidates.activity", "periods": [ "today", "last-7-days", "previous-month" ] } }, "body": "# Board\n\n## Purpose\n\nThe page half of the Board, and only that half. One card, above the position\ngrid, reading activity across the workspace.\n\n`after-position-list-summary` renders once for the page and supplies no\nposition — `surfaces.js` records that placement as providing nothing — so the\ncard reads `candidates.activity`, which declares `context: null` and counts\napplications across the workspace over the periods named here.\n`position.activity` is refused at this placement by `unresolvableSections`, and\ncorrectly: it needs one position, and this placement has none to give.\n\nThis definition declares no `owliver:` block, so it contributes no capability,\nno suggestion chip and no conversational answer. It is a page extension and\nnothing else.\n\n## Capabilities\n\n- Show workspace application activity above the position list.\n- Compare today, the last 7 days and the previous month in one card." }, "parse": { "ok": true }, "normalized": { "id": "board-ui-test", "name": "Board", "description": "Renders the Board card once above the position list on the Positions page.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "board" ], "declaredTriggers": false, "prompt": null, "facets": [ "ui" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "path": "skill-examples/owliver-conversation-test.md", "type": "example", "rawBase64": "LS0tCmlkOiBvd2xpdmVyLWNvbnZlcnNhdGlvbi10ZXN0Cm5hbWU6IFdvcmtzcGFjZSBBY3Rpdml0eSBBc3Npc3RhbnQKZGVzY3JpcHRpb246IEFuc3dlciBxdWVzdGlvbnMgYWJvdXQgYXBwbGljYXRpb25zIGFjcm9zcyB0aGUgd29ya3NwYWNlIGFuZCB0aGUgcm9sZXMgc3RpbGwgb3Blbi4KcGFnZXM6CiAgLSBwb3NpdGlvbnMKc3RhdHVzOiBhY3RpdmUKdHJpZ2dlcnM6CiAgLSB3b3Jrc3BhY2UgYXBwbGljYXRpb25zCiAgLSBhcHBsaWNhdGlvbnMgYWNyb3NzIHRoZSB3b3Jrc3BhY2UKICAtIHJvbGVzIHN0aWxsIG9wZW4KICAtIHJvbGVzIG5lZWRpbmcgYXR0ZW50aW9uCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogICMgRXZlcnkgc3VnZ2VzdGlvbiBuYW1lcyB0aGUgY2FwYWJpbGl0eSBpdCBhc2tzIGZvciwgc28gYSBjaGlwIGFuZCBhbiBhbnN3ZXIKICAjIGFyZSBvbmUtdG8tb25lIHJhdGhlciB0aGFuIGJvdGggZmFsbGluZyB0aHJvdWdoIHRvIHRoZSBmaXJzdCBkZWNsYXJlZAogICMgY2FwYWJpbGl0eS4KICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFN1bW1hcml6ZSB3b3Jrc3BhY2UgYXBwbGljYXRpb25zCiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICAgIC0gbGFiZWw6IExpc3QgdGhlIHJvbGVzIHN0aWxsIG9wZW4KICAgICAgY2FwYWJpbGl0eTogbGlzdAogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBsaXN0CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IFdvcmtzcGFjZSBBcHBsaWNhdGlvbnMKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLmFjdGl2aXR5CiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCiAgICBsaXN0OgogICAgICB0aXRsZTogUm9sZXMgU3RpbGwgT3BlbgogICAgICBzb3VyY2U6IHBvc2l0aW9ucy5kZW1hbmQKICAgICAgbGltaXQ6IDUKLS0tCgojIFdvcmtzcGFjZSBBY3Rpdml0eSBBc3Npc3RhbnQKCiMjIFB1cnBvc2UKClRoZSBwYW5lbCBoYWxmLCBhbmQgb25seSB0aGF0IGhhbGYuIE5vIGB1aTpgIGJsb2NrLCBzbyBub3RoaW5nIGlzIGRyYXduIG9uIHRoZQpQb3NpdGlvbnMgcGFnZSBhbmQgbm8gY2FyZCBhcHBlYXJzIGFib3ZlIG9yIGluc2lkZSB0aGUgZ3JpZC4KCkVhY2ggcmVzcG9uc2UgbmFtZXMgaXRzIG93biBgc291cmNlOmAgZGlyZWN0bHksIHdoaWNoIGlzIHdoYXQgYSBkZWZpbml0aW9uCndpdGhvdXQgYSBgdWk6YCBzZWN0aW9uIG11c3QgZG8g4oCUIGBub3JtYWxpemVTa2lsbE93bGl2ZXJgIGluaGVyaXRzIGEgc291cmNlIGZyb20KdGhlIGZpcnN0IGB1aTpgIHNlY3Rpb24gb25seSB3aGVuIG9uZSBleGlzdHMsIGFuZCByZXBvcnRzCmBvd2xpdmVyLnJlc3BvbnNlcy48Y2FwYWJpbGl0eT46IGEgcmVzcG9uc2UgbmVlZHMgYSBzb3VyY2UsIG9yIGEgdWk6IHNlY3Rpb24gdG8KcmVhZCBmcm9tYCB3aGVuIG5laXRoZXIgaXMgcHJlc2VudC4KCkJvdGggc291cmNlcyBkZWNsYXJlIGBjb250ZXh0OiBudWxsYCwgc28gbmVpdGhlciBhbnN3ZXIgYXNrcyB3aGljaCBwb3NpdGlvbiBpcwptZWFudDogYHJlc29sdmVFbnRpdHlgIHJldHVybnMgaW1tZWRpYXRlbHkgYW5kIG5vCiJUaGlzIHNlY3Rpb24gbmVlZHMgYSBwb3NpdGlvbiB0byByZWFkIiBpcyBwb3NzaWJsZS4gVGhlIHNoYXBlcyBtYXRjaCB3aGF0IGVhY2gKc291cmNlIG9mZmVycyDigJQgYHN1bW1hcnlgIGlzIHByb3NlIGFuZCBpcyBleGVtcHQgZnJvbSB0aGUgc2hhcGUgY2hlY2ssIGFuZApgbGlzdGAgaXMgYSBzaGFwZSBgcG9zaXRpb25zLmRlbWFuZGAgZGVjbGFyZXMuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGFwcGxpY2F0aW9ucyBhY3Jvc3MgdGhlIHdvcmtzcGFjZSBvdmVyIHRvZGF5LCB0aGUgbGFzdCA3IGRheXMgYW5kCiAgdGhlIHByZXZpb3VzIG1vbnRoLgotIExpc3QgdGhlIG9wZW4gcG9zaXRpb25zIGFuZCBob3cgbWFueSBhcHBsaWNhbnRzIGVhY2ggaGFzLgo=", "bytes": 2003, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "owliver-conversation-test", "name": "Workspace Activity Assistant", "description": "Answer questions about applications across the workspace and the roles still open.", "pages": [ "positions" ], "status": "active", "triggers": [ "workspace applications", "applications across the workspace", "roles still open", "roles needing attention" ], "owliver": { "enabled": true, "suggestions": [ { "label": "Summarize workspace applications", "capability": "summary" }, { "label": "List the roles still open", "capability": "list" } ], "capabilities": [ "summary", "list" ], "responses": { "summary": { "title": "Workspace Applications", "source": "candidates.activity", "periods": [ "today", "last-7-days", "previous-month" ] }, "list": { "title": "Roles Still Open", "source": "positions.demand", "limit": 5 } } } }, "body": "# Workspace Activity Assistant\n\n## Purpose\n\nThe panel half, and only that half. No `ui:` block, so nothing is drawn on the\nPositions page and no card appears above or inside the grid.\n\nEach response names its own `source:` directly, which is what a definition\nwithout a `ui:` section must do — `normalizeSkillOwliver` inherits a source from\nthe first `ui:` section only when one exists, and reports\n`owliver.responses.: a response needs a source, or a ui: section to\nread from` when neither is present.\n\nBoth sources declare `context: null`, so neither answer asks which position is\nmeant: `resolveEntity` returns immediately and no\n\"This section needs a position to read\" is possible. The shapes match what each\nsource offers — `summary` is prose and is exempt from the shape check, and\n`list` is a shape `positions.demand` declares.\n\n## Capabilities\n\n- Summarize applications across the workspace over today, the last 7 days and\n the previous month.\n- List the open positions and how many applicants each has." }, "parse": { "ok": true }, "normalized": { "id": "owliver-conversation-test", "name": "Workspace Activity Assistant", "description": "Answer questions about applications across the workspace and the roles still open.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "workspace applications", "applications across the workspace", "roles still open", "roles needing attention" ], "declaredTriggers": true, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null } ], "cases": [ { "name": "baseline-skill", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==", "bytes": 238, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "baseline-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=", "bytes": 437, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "icon": "users", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on candidates.", "pages": [ "candidates" ], "skills": [ "candidate-search" ], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "published", "version": 2, "pages": [ "candidates" ], "icon": "users", "reasoning": "balanced", "trigger": "Use on candidates.", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "utf8-bom", "rawBase64": "77u/LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==", "bytes": 241, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "utf8-bom-agent", "rawBase64": "77u/LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=", "bytes": 440, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "icon": "users", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on candidates.", "pages": [ "candidates" ], "skills": [ "candidate-search" ], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "published", "version": 2, "pages": [ "candidates" ], "icon": "users", "reasoning": "balanced", "trigger": "Use on candidates.", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "crlf", "rawBase64": "LS0tDQppZDogc2FtcGxlLXNraWxsDQpuYW1lOiBTYW1wbGUgU2tpbGwNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NCnBhZ2VzOg0KICAtIGNhbmRpZGF0ZXMNCnN0YXR1czogYWN0aXZlDQphY3Rpb25zOg0KICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMNCi0tLQ0KDQojIFNhbXBsZSBTa2lsbA0KDQojIyBQdXJwb3NlDQoNCi0gUmVhZCB0aGUgcGlwZWxpbmUuDQoNCiMjIENhcGFiaWxpdGllcw0KDQotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLg0K", "bytes": 258, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "crlf-agent", "rawBase64": "LS0tDQppZDogc2FtcGxlLWFnZW50DQpuYW1lOiBTYW1wbGUgQWdlbnQNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4NCmljb246IHVzZXJzDQpzdGF0dXM6IHB1Ymxpc2hlZA0KdmVyc2lvbjogMg0KcmVhc29uaW5nOiBiYWxhbmNlZA0KdHJpZ2dlcjogVXNlIG9uIGNhbmRpZGF0ZXMuDQpwYWdlczoNCiAgLSBjYW5kaWRhdGVzDQpza2lsbHM6DQogIC0gY2FuZGlkYXRlLXNlYXJjaA0Kc3RhcnRlcnM6DQogIC0gbGFiZWw6IFdobyBpcyB3YWl0aW5nPw0KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8NCnBlcm1pc3Npb25zOg0KICBvd25lcjogZGVtb0Brcm93LmFwcA0KICBhY2Nlc3M6IGFsbA0KLS0tDQoNCiMgU2FtcGxlIEFnZW50DQoNCiMjIEluc3RydWN0aW9ucw0KDQpBbnN3ZXIgYWJvdXQgY2FuZGlkYXRlcy4NCg0KIyMgUHVycG9zZQ0KDQotIFJlcG9ydCB0aGUgcGlwZWxpbmUuDQo=", "bytes": 467, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "icon": "users", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on candidates.", "pages": [ "candidates" ], "skills": [ "candidate-search" ], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "published", "version": 2, "pages": [ "candidates" ], "icon": "users", "reasoning": "balanced", "trigger": "Use on candidates.", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "cr-only", "rawBase64": "LS0tDWlkOiBzYW1wbGUtc2tpbGwNbmFtZTogU2FtcGxlIFNraWxsDWRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NcGFnZXM6DSAgLSBjYW5kaWRhdGVzDXN0YXR1czogYWN0aXZlDWFjdGlvbnM6DSAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzDS0tLQ0NIyBTYW1wbGUgU2tpbGwNDSMjIFB1cnBvc2UNDS0gUmVhZCB0aGUgcGlwZWxpbmUuDQ0jIyBDYXBhYmlsaXRpZXMNDS0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuDQ==", "bytes": 238, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "bom-crlf-blankline", "rawBase64": "77u/DQotLS0NCmlkOiBzYW1wbGUtc2tpbGwNCm5hbWU6IFNhbXBsZSBTa2lsbA0KZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLg0KcGFnZXM6DQogIC0gY2FuZGlkYXRlcw0Kc3RhdHVzOiBhY3RpdmUNCmFjdGlvbnM6DQogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcw0KLS0tDQoNCiMgU2FtcGxlIFNraWxsDQoNCiMjIFB1cnBvc2UNCg0KLSBSZWFkIHRoZSBwaXBlbGluZS4NCg0KIyMgQ2FwYWJpbGl0aWVzDQoNCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuDQo=", "bytes": 263, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "leading-blank-line", "rawBase64": "Ci0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=", "bytes": 239, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "multiple-leading-blank-lines", "rawBase64": "CgoKLS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==", "bytes": 241, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "leading-spaces-then-blank-lines", "rawBase64": "ICAgCiAKLS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==", "bytes": 244, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "no-trailing-newline", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMu", "bytes": 237, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "many-trailing-newlines", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCgoKCg==", "bytes": 241, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "trailing-spaces-on-values", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwgICAKbmFtZTogU2FtcGxlIFNraWxsICAgCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4gICAKcGFnZXM6ICAgCiAgLSBjYW5kaWRhdGVzICAgCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 160, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "trailing-ws-after-open-fence", "rawBase64": "LS0tICAgCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==", "bytes": 241, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "trailing-tab-after-close-fence", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQkKCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=", "bytes": 239, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "frontmatter-only-no-body", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQ==", "bytes": 94, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "" }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "frontmatter-only-trailing-newline", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQo=", "bytes": 95, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "" }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "double-quoted-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNhbXBsZSBTa2lsbCIKZGVzY3JpcHRpb246ICJBIHNhbXBsZS4iCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 143, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "single-quoted-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogJ1NhbXBsZSBTa2lsbCcKZGVzY3JpcHRpb246ICdBIHNhbXBsZS4nCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 143, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "colon-in-quoted-string", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNhbXBsZTogU2tpbGwiCmRlc2NyaXB0aW9uOiAiTm90ZTogcmVhZCB0aGlzLiIKcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 151, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample: Skill", "description": "Note: read this.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample: Skill", "description": "Note: read this.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample: skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "colon-in-unquoted-string", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBOb3RlOiByZWFkIHRoaXMuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 146, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "Note: read this.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "Note: read this.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "hash-in-quoted-string", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNoaWZ0ICMxIgpkZXNjcmlwdGlvbjogIlRhZyAjb3BzIgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 138, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Shift #1", "description": "Tag #ops", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Shift #1", "description": "Tag #ops", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "shift #1" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "hash-unquoted-trailing-comment", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBvcHMgIyBhIHRyYWlsaW5nIGNvbW1lbnQKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 180, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "category": "ops" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "ops", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "hash-unquoted-midword", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBvcHMjMQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 161, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "category": "ops#1" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "ops#1", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "doubled-quote-escape", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNoZSBzYWlkICIiZ28iIiIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 144, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "She said \"go\"", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "She said \"go\"", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "she said \"go\"" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "full-line-comment", "rawBase64": "LS0tCiMgYSBjb21tZW50IGxpbmUKaWQ6IHNhbXBsZS1za2lsbApuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 162, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "empty-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 129, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": null, "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "tilde-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiB+Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 157, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "category": null }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "null-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBudWxsCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 160, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "category": null }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "boolean-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYlNlYXJjaDogdHJ1ZQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 153, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "webSearch": true }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": true, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "integer-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 148, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": 3 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 3, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "float-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDEuNQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 150, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": 1.5 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "version: `1.5` is not a whole number of 1 or more." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "version: `1.5` is not a whole number of 1 or more." }, { "name": "negative-integer", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IC0yCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 149, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": -2 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "version: `-2` is not a whole number of 1 or more." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "version: `-2` is not a whole number of 1 or more." }, { "name": "empty-array", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmFjdGlvbnM6Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 148, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ], "actions": null }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "inline-flow-array", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IFtjYW5kaWRhdGVzXQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 137, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": "[candidates]" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "inline-flow-map", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOiB7b3duZXI6IGEsIGFjY2VzczogYWxsfQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 174, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "permissions": "{owner: a, access: all}" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "permissions: must be a mapping of `owner`, `access` and `people`." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "permissions: must be a mapping of `owner`, `access` and `people`." }, { "name": "sequence-of-mappings", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=", "bytes": 437, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "icon": "users", "status": "published", "version": 2, "reasoning": "balanced", "trigger": "Use on candidates.", "pages": [ "candidates" ], "skills": [ "candidate-search" ], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all" } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "published", "version": 2, "pages": [ "candidates" ], "icon": "users", "reasoning": "balanced", "trigger": "Use on candidates.", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting on a decision?" } ], "permissions": { "owner": "demo@krow.app", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "nested-mapping", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBzcGVjaWZpYwogIHBlb3BsZToKICAgIC0gdXNlcjogYUBiLmMKICAgICAgcm9sZTogZWRpdG9yCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 239, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "permissions": { "owner": "demo@krow.app", "access": "specific", "people": [ { "user": "a@b.c", "role": "editor" } ] } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "demo@krow.app", "access": "specific", "people": [ { "user": "a@b.c", "role": "editor" } ] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "dash-alone-nested-block", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0KICAgIGxhYmVsOiBIZWxsbwogICAgcHJvbXB0OiBIZWxsbyB0aGVyZQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 192, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "starters": [ { "label": "Hello", "prompt": "Hello there" } ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [ { "label": "Hello", "prompt": "Hello there" } ], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "tab-indented-sequence", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CgktIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 138, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "four-space-indent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 141, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "ragged-indent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgICAgLSBwb3NpdGlvbnMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 156, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": false, "error": "Unexpected indentation on line 6" }, "parse": { "ok": false, "error": "Unexpected indentation on line 6" }, "normalized": null, "markdownVerbatim": null, "accepted": false, "rejection": "That definition could not be parsed. Unexpected indentation on line 6" }, { "name": "block-scalar-literal", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiB8CiAgTGluZSBvbmUuCiAgTGluZSB0d28uCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 155, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": false, "error": "Unexpected indentation on line 4" }, "parse": { "ok": false, "error": "Unexpected indentation on line 4" }, "normalized": null, "markdownVerbatim": null, "accepted": false, "rejection": "That definition could not be parsed. Unexpected indentation on line 4" }, { "name": "block-scalar-folded", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiA+CiAgTGluZSBvbmUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 143, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": false, "error": "Unexpected indentation on line 4" }, "parse": { "ok": false, "error": "Unexpected indentation on line 4" }, "normalized": null, "markdownVerbatim": null, "accepted": false, "rejection": "That definition could not be parsed. Unexpected indentation on line 4" }, { "name": "anchor-and-alias", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogJm4gU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiAqbgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 135, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "&n Sample Skill", "description": "*n", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "&n Sample Skill", "description": "*n", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "&n sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "multi-document", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQppZDogc2Vjb25kCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 160, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "id: second\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "duplicate-key", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogRmlyc3QgTmFtZQpuYW1lOiBTZWNvbmQgTmFtZQpkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 155, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Second Name", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Second Name", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "second name" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "duplicate-key-array", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBhZ2VzOgogIC0gcG9zaXRpb25zCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 160, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "positions" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "positions" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "unsupported-frontmatter-field", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnVua25vd25GaWVsZDogd2hhdGV2ZXIKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 168, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "unknownField": "whatever" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "unsupported-field-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCm5vbnNlbnNlOiAxCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 149, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "nonsense": 1 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "key-with-space", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbXkga2V5OiB2YWx1ZQpuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 153, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": false, "error": "Line 2 is not `key: value`: my key: value" }, "parse": { "ok": false, "error": "Line 2 is not `key: value`: my key: value" }, "normalized": null, "markdownVerbatim": null, "accepted": false, "rejection": "That definition could not be parsed. Line 2 is not `key: value`: my key: value" }, { "name": "uppercase-key", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCkNhdGVnb3J5OiBPcHMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 159, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "Category": "Ops" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "malformed-yaml-bare-line", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKdGhpcyBpcyBub3QgYSBwYWlyCm5hbWU6IFNhbXBsZSBTa2lsbApwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 135, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": false, "error": "Line 2 is not `key: value`: this is not a pair" }, "parse": { "ok": false, "error": "Line 2 is not `key: value`: this is not a pair" }, "normalized": null, "markdownVerbatim": null, "accepted": false, "rejection": "That definition could not be parsed. Line 2 is not `key: value`: this is not a pair" }, { "name": "malformed-open-fence-two-dashes", "rawBase64": "LS0KaWQ6IHNhbXBsZS1za2lsbApuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc3RhdHVzOiBhY3RpdmUKYWN0aW9uczoKICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgY2FuZGlkYXRlcy4K", "bytes": 237, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "--\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-open-fence-four-dashes", "rawBase64": "LS0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=", "bytes": 239, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "----\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-open-fence-indented", "rawBase64": "IC0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=", "bytes": 239, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": " ---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-open-fence-text-after", "rawBase64": "LS0teWFtbAppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=", "bytes": 242, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "---yaml\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-close-fence-two-dashes", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tCgojIEJvZHkK", "bytes": 102, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n--\n\n# Body\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-close-fence-missing", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCgojIEJvZHkK", "bytes": 99, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n\n# Body\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "malformed-close-fence-four-dashes", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLS0KCiMgQm9keQo=", "bytes": 104, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n----\n\n# Body\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "empty-fence-pair", "rawBase64": "LS0tCi0tLQoKIyBCb2R5Cg==", "bytes": 16, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "---\n---\n\n# Body\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "empty-fence-with-blank", "rawBase64": "LS0tCgotLS0KCiMgQm9keQo=", "bytes": 17, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": {}, "body": "# Body" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "missing-frontmatter", "rawBase64": "IyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 49, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "empty-markdown", "rawBase64": "", "bytes": 0, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "Paste or upload a Markdown definition." }, { "name": "whitespace-only-markdown", "rawBase64": "ICAgCgoJCg==", "bytes": 7, "kind": "skill", "hasFrontmatter": false, "frontmatter": { "ok": true, "data": {}, "body": "" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "Paste or upload a Markdown definition." }, { "name": "frontmatter-is-a-sequence", "rawBase64": "LS0tCi0gb25lCi0gdHdvCi0tLQoKIyBCb2R5Cg==", "bytes": 28, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": {}, "body": "# Body" }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "invalid-definition-id-uppercase", "rawBase64": "LS0tCmlkOiBTYW1wbGVfU2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 139, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "Sample_Skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "Sample_Skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "`id` must be lower-case letters, numbers and dashes." }, { "name": "invalid-definition-id-leading-dash", "rawBase64": "LS0tCmlkOiAtc2FtcGxlCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 134, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "-sample", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "-sample", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "`id` must be lower-case letters, numbers and dashes." }, { "name": "invalid-definition-id-underscore", "rawBase64": "LS0tCmlkOiBzYW1wbGVfc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 139, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample_skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample_skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "`id` must be lower-case letters, numbers and dashes." }, { "name": "missing-id-derives-from-name", "rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 122, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "missing-name", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 120, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Untitled skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "missing-pages", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 117, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample." }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "unknown-page", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBub3doZXJlCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 136, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "nowhere" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "nowhere" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "Unsupported page: nowhere. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis." }, { "name": "page-alias-uppercase", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBDYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 139, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "Candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "Candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "page-alias-underscore", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSB0YWxlbnRfcG9vbAotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 140, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "talent_pool" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "talent_pool" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "invalid-status-skill", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYm9ndXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 159, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "bogus" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "inactive-status-skill", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogaW5hY3RpdmUKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 162, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "inactive" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "inactive", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "invalid-status-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYm9ndXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 151, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "status": "bogus" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "status: `bogus` is not a status. Use one of draft, published, archived." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "status: `bogus` is not a status. Use one of draft, published, archived." }, { "name": "invalid-reasoning-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnJlYXNvbmluZzogdHVyYm8KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 154, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "reasoning": "turbo" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "reasoning: `turbo` is not a reasoning mode. Use one of fast, balanced, deep." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "reasoning: `turbo` is not a reasoning mode. Use one of fast, balanced, deep." }, { "name": "invalid-icon-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmljb246IHJvY2tldAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 150, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "icon": "rocket" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "icon: `rocket` is not an icon this product has." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "icon: `rocket` is not an icon this product has." }, { "name": "invalid-version-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IHplcm8KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 151, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": "zero" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "version: `zero` is not a whole number of 1 or more." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "version: `zero` is not a whole number of 1 or more." }, { "name": "invalid-field-type-pages-scalar", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 135, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": "candidates" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs at least one `pages` entry." }, { "name": "invalid-field-type-pages-scalar-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 127, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "pages": "candidates" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "invalid-field-type-name-list", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZToKICAtIGEKICAtIGIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 138, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": [ "a", "b" ], "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": [ "a", "b" ], "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "a,b" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "invalid-permissions-access", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIGFjY2Vzczogbm9ib2R5Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 167, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "permissions": { "access": "nobody" } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "permissions.access: `nobody` is not an access mode. Use one of all, specific." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "permissions.access: `nobody` is not an access mode. Use one of all, specific." }, { "name": "self-subagent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN1YmFnZW50czoKICAtIHNhbXBsZS1hZ2VudAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 165, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "subagents": [ "sample-agent" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "subagents: an agent cannot be its own subagent." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "subagents: an agent cannot be its own subagent." }, { "name": "oversized-markdown", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgp4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==", "bytes": 65746, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "at-size-bound", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCnl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eQ==", "bytes": 65536, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "missing-name-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 112, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Untitled agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs a `name`." }, { "name": "missing-pages-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 109, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample." }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": false, "rejection": "An agent needs at least one `pages:` entry, or it can never be offered anywhere." }, { "name": "unknown-page-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBub3doZXJlCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 128, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "pages": [ "nowhere" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "pages[0]: `nowhere` is not a page this product has." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "An agent needs at least one `pages:` entry, or it can never be offered anywhere." }, { "name": "oversized-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgoKeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", "bytes": 65738, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer.\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "visibility-field-personal", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZpc2liaWxpdHk6IHBlcnNvbmFsCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 166, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "visibility": "personal" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "visibility-field-invalid", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZpc2liaWxpdHk6IG5vYm9keQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 164, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "visibility": "nobody" }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "blank-page-entry-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSAiIgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 138, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "pages": [ "candidates", "" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "pages[1]: a page cannot be blank." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "pages[1]: a page cannot be blank." }, { "name": "duplicate-page-entry-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 146, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "pages": [ "candidates", "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "id-with-trailing-space", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwgICAKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 142, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "id-quoted", "rawBase64": "LS0tCmlkOiAic2FtcGxlLXNraWxsIgpuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 141, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "starters-plain-strings-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0gV2hvIGlzIHdhaXRpbmc/CiAgLSBXaGVyZSBhcmUgdGhlIGdhcHM/Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 191, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "starters": [ "Who is waiting?", "Where are the gaps?" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [ { "label": "Who is waiting?", "prompt": "Who is waiting?" }, { "label": "Where are the gaps?", "prompt": "Where are the gaps?" } ], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "starter-missing-label-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0gcHJvbXB0OiBPbmx5IGEgcHJvbXB0Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 173, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "starters": [ { "prompt": "Only a prompt" } ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [ { "label": "Only a prompt", "prompt": "Only a prompt" } ], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "knowledge-note-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIG5vdGUKICAgIGJvZHk6IFRoZSBib2R5IG9mIHRoZSBub3RlLgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 198, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "knowledge": [ { "label": "A note", "body": "The body of the note." } ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "knowledge-bad-kind-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIG5vdGUKICAgIGtpbmQ6IHJ1bW91cgogICAgYm9keTogeAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 195, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "knowledge": [ { "label": "A note", "kind": "rumour", "body": "x" } ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "knowledge[0]: `rumour` is not a knowledge kind. Use one of note, link, skill-reference." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "knowledge[0]: `rumour` is not a knowledge kind. Use one of note, link, skill-reference." }, { "name": "knowledge-link-without-url-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIGxpbmsKICAgIGtpbmQ6IGxpbmsKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 181, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "knowledge": [ { "label": "A link", "kind": "link" } ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "knowledge[0]: a `link` needs a `url`." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "knowledge[0]: a `link` needs a `url`." }, { "name": "skills-scalar-coerced-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnNraWxsczogY2FuZGlkYXRlLXNlYXJjaAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 162, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "skills": "candidate-search" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "skills-blank-entry-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnNraWxsczoKICAtIGNhbmRpZGF0ZS1zZWFyY2gKICAtICIiCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 173, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "skills": [ "candidate-search", "" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [ "candidate-search" ], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "skills[1]: a skill id cannot be blank." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "skills[1]: a skill id cannot be blank." }, { "name": "web-search-snake-case-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYl9zZWFyY2g6IHRydWUKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 154, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "web_search": true }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": true, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "web-search-string-true-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYlNlYXJjaDogInRydWUiCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 155, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "webSearch": "true" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "version-quoted-integer-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246ICIzIgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 150, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": "3" }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 3, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "version-zero-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDAKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 148, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": 0 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [ "version: `0` is not a whole number of 1 or more." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "version: `0` is not a whole number of 1 or more." }, { "name": "version-empty-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 146, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": null }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "crlf-inside-frontmatter-only", "rawBase64": "LS0tDQppZDogc2FtcGxlLXNraWxsDQpuYW1lOiBTYW1wbGUgU2tpbGwNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NCnBhZ2VzOg0KICAtIGNhbmRpZGF0ZXMNCnN0YXR1czogYWN0aXZlDQphY3Rpb25zOg0KICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgY2FuZGlkYXRlcy4K", "bytes": 246, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "status": "active", "actions": [ "navigate_to_candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [ "navigate_to_candidates" ], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "body-whitespace-only-after-fence", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQogICAKCQo=", "bytes": 101, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ] }, "body": "" }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "description-whitespace-only", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiAiICAgIgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 135, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": " ", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": " ", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "permissions-null-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 150, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "permissions": null }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "permissions-people-bad-role-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIGFjY2Vzczogc3BlY2lmaWMKICBwZW9wbGU6CiAgICAtIHVzZXI6IGFAYi5jCiAgICAgIHJvbGU6IG92ZXJsb3JkCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 218, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "permissions": { "access": "specific", "people": [ { "user": "a@b.c", "role": "overlord" } ] } }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "specific", "people": [] }, "errors": [ "permissions.people[0]: `overlord` is not a role. Use one of manager, editor, viewer." ] }, "markdownVerbatim": true, "accepted": false, "rejection": "permissions.people[0]: `overlord` is not a role. Use one of manager, editor, viewer." }, { "name": "id-omitted-unnamed", "rawBase64": "LS0tCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 103, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "id-omitted-named", "rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 122, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "id-omitted-unnamed-agent", "rawBase64": "LS0tCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=", "bytes": 95, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "Untitled agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": false, "rejection": "The frontmatter needs a `name`." }, { "name": "id-omitted-named-agent", "rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBBZ2VudApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 114, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "name": "Sample Agent", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "id-omitted-name-unsluggable", "rawBase64": "LS0tCm5hbWU6ICIhISEiCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 115, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "name": "!!!", "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "custom", "name": "!!!", "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "!!!" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "name-numeric", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogNDIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K", "bytes": 129, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": 42, "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": 42, "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "42" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "name-boolean", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogdHJ1ZQpkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 131, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": true, "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": true, "description": "A sample.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "true" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "description-list", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOgogIC0gb25lCiAgLSB0d28KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 145, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": [ "one", "two" ], "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": [ "one", "two" ], "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "description-numeric", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiA3CnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=", "bytes": 131, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": 7, "pages": [ "candidates" ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": 7, "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "pages-numeric-entry", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSA1Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 145, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ "candidates", 5 ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ "candidates", 5 ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "Unsupported page: 5. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis." }, { "name": "pages-mapping-entry", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBwYWdlOiBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 145, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "pages": [ { "page": "candidates" } ] }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample.", "status": "active", "pages": [ { "page": "candidates" } ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": false, "rejection": "Unsupported page: [object Object]. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis." }, { "name": "trigger-list-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnRyaWdnZXI6CiAgLSBvbmUKICAtIHR3bwotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K", "bytes": 162, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "trigger": [ "one", "two" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "one,two", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "name-list-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZToKICAtIGEKICAtIGIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 130, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": [ "a", "b" ], "description": "A sample.", "pages": [ "candidates" ] }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": [ "a", "b" ], "description": "A sample.", "status": "draft", "version": 1, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "category-numeric", "rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiAzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==", "bytes": 157, "kind": "skill", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "pages": [ "candidates" ], "category": 3 }, "body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline." }, "parse": { "ok": true }, "normalized": { "id": "sample-skill", "name": "Sample Skill", "description": "A sample skill.", "status": "active", "pages": [ "candidates" ], "kind": "assistant", "category": "", "actions": [], "triggers": [ "sample skill" ], "declaredTriggers": false, "prompt": null, "facets": [ "owliver" ], "skillId": null }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "version-above-int32-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDMwMDAwMDAwMDAKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 157, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": 3000000000 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 3000000000, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null }, { "name": "version-at-int32-agent", "rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDIxNDc0ODM2NDcKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==", "bytes": 157, "kind": "agent", "hasFrontmatter": true, "frontmatter": { "ok": true, "data": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "pages": [ "candidates" ], "version": 2147483647 }, "body": "# Sample Agent\n\n## Instructions\n\nAnswer." }, "parse": { "ok": true }, "normalized": { "id": "sample-agent", "name": "Sample Agent", "description": "A sample agent.", "status": "draft", "version": 2147483647, "pages": [ "candidates" ], "icon": "owliver", "reasoning": "balanced", "trigger": "", "webSearch": false, "skills": [], "tools": [], "subagents": [], "starters": [], "permissions": { "owner": "", "access": "all", "people": [] }, "errors": [] }, "markdownVerbatim": true, "accepted": true, "rejection": null } ] }