WHAT GETS BUILT

Ten modules. Five blocks. One motor.

Each module is a working component. Together they compose a complete growth infrastructure — designed once, built in 8–10 weeks, owned by you forever.

 

M
Block 01 · Map

Strategic clarity

Where you compete, who you serve, and the message that makes your project the obvious choice.

M1Positioning & Message Architecture. Buyer personas, competitive differentiation, and the message that runs through every asset.

 

E
Block 02 · Emotion

The buyer’s first experience

The moment a prospect lands, the emotional arc of your project takes over — before any salesperson speaks.

M2Conversion-Optimized Digital Presence. Your site rebuilt as a sales engine. Buyer-segment pages, lead capture wired to CRM, SEO foundation.
M3Interactive Community Experience. Aerial map of your inventory with filters, photos, virtual tours. Buyers explore on their own time, in their own way.

 

R
Block 03 · Route

How buyers find you

The pathways from a stranger’s first Google search to a qualified conversation with your sales team.

M6Automated Nurture Sequences. 180-day email + SMS sequences calibrated to the real estate consideration cycle. The right message, right moment, automatic.
M7Paid Traffic Campaigns. Google + Meta, geo-targeted, conversion-tracked. Same playbook that beat Pulte’s impression share at Heartwood.

 

C
Block 04 · Conversion

Turning interest into contracts

The systems that respond, qualify, score, and route every lead to the right next step — 24/7, with no manual lift.

M4AI Sales Assistant. A 24/7 first responder that engages every lead in 60 seconds, qualifies intent, and hands the warmest ones to your team.
M5HubSpot CRM Implementation. Pipeline architecture, lead scoring, deal stages, contact properties — set up the way HubSpot is supposed to be set up.
M8Sales Team Tooling. Daily AI-generated briefings: who to call, what to ask, what they care about. Your team stops chasing, starts closing.

 

9
Module 09 · The Spine

Performance & Attribution Dashboard

The single screen that shows you what’s working — across every block, every channel, every dollar. The dashboard your CFO will check every Monday.

M9Custom Dashboard. Leads by source, cost-per-qualified-lead, pipeline velocity, revenue attribution. Real numbers. Live data. Always on.

 

A
Block 05 · Amplification

Where the motor compounds

Most systems stop at the closing. Ours starts there. Every homeowner becomes a marketing asset that lowers your acquisition cost every quarter.

M10Homeowner Amplification System. NPS capture, structured referral program, auto-generated case studies, resident-generated content. Your year-3 cost per sale drops because of what you build today.

MODULE 03 · INTERACTIVE COMMUNITY EXPERIENCE

Buyers explore your inventory before they call.

An aerial, filterable map of every available unit — replacing the static “Available Lots” PDF that nobody downloads. Click a pin, see the home, get the price, request a tour.

  • Filter by price, beds, square feet, availability
  • Live status: Available · Pending · Reserved · Sold
  • Photo gallery + 3D tour + similar homes per unit
  • Tour requests flow directly into your HubSpot pipeline
  • Average session time: 4× a static listings page
12 OF 47 UNITS SHOWN
LAKE
A1
A2
B1
B2
C1
C2
D1
D2
E1
M
Murphy · Riverside Homes
ONLINE NOW · REPLIES IN ~30s
Hi! I'm Murphy, the AI assistant for Riverside Homes. I can help you find a home, check availability, or schedule a tour. What's on your mind?
Looking for a 4 bedroom in the Magnolia area. Budget around $500K.
Great fit — we have 3 homes available in that range right now. Magnolia models start at $489K with 4 BD / 3.5 BA / 2,800+ SF. Are you looking to move within the next 6 months, or is this longer-term planning?
Within 90 days — selling our current home now.
Perfect timing. I can have our sales team prep a personalized walkthrough video for you tomorrow morning. What's the best email to send it to?

MODULE 04 · AI SALES ASSISTANT

Your 24/7 first responder. Trained on your project.

A lead lands at 10pm on a Friday. Within 60 seconds, the AI is asking the right questions — timeline, budget, household, must-haves. It tags them in HubSpot with a score, and your sales team wakes up Monday with three warm conversations ready to go.

93%

 

Response within 1 minute
3.4×

 

Higher conversion vs. form-only

MODULES 05 + 06 · CRM & NURTURE

One system. Five steps. Zero manual handoffs.

The same lead, captured at 10pm on a Friday, moves through five automated stages before your sales team sees it on Monday morning — fully qualified, fully tagged, fully briefed.

Capture

Form, chat, or ad click. Every channel feeds one pipeline.

Qualify

AI asks the right questions. Scores intent. Tags by segment.

Route

Hot leads to sales. Warm leads to nurture. Cold leads to long-cycle.

Nurture

180-day sequence. Personalized to segment, timeline, budget.

Attribute

Every closed deal traced to source. Every dollar accounted.

MODULE 05 · HUBSPOT IMPLEMENTATION

Your pipeline, finally legible.

Every lead. Every conversation. Every dollar of attributed revenue. In one view. Update once, applies everywhere.

  • Custom pipeline stages built for the real estate cycle
  • Lead scoring by intent, timeline, and budget fit
  • Auto-tagging by segment, source, and behavior
  • Native integration with your map, chat, ads, and email
  • Reports your CFO will actually open
Riverside Homes · Sales Pipeline
23 ACTIVE · $11.2M TOTAL VALUE
New 8
Sarah M.
$425K · 4BD · 90d
Web Form
Robert & Jen K.
$510K · 3BD · 6mo
Google Ads
Marcus T.
$380K · 4BD · 4mo
Map
Qualified 7
The Patel Family
$575K · 5BD · 60d
Warm82
Daniel R.
$450K · 4BD · 90d
Warm76
Anita & Mike H.
$495K · 4BD · 75d
Warm71
Touring 5
Wilson Family
$620K · 5BD · 30d
Hot94
Carlos V.
$540K · 4BD · 45d
Hot89
Contract 3
The Garcias
$465K · 4BD · Closing 5/15
Hot98
J. Andrews
$510K · 3BD · Closing 5/22
Hot96

MODULE 09 · PERFORMANCE DASHBOARD

The single screen your CFO opens every Monday.

Most marketing reports tell you what happened. This one tells you what’s working — by source, by stage, by dollar attributed. Live data. Always on.

Growth Dashboard · Riverside Homes
APR 2026 · LAST 30 DAYS
186
New Leads
↑ 24% vs Mar
$142
Cost / Qual Lead
↓ 18% vs Mar
12
Tours Booked
↑ 33% vs Mar
$2.1M
Pipeline Value
↑ 41% vs Mar
Leads by source · last 30 days
GOOGLE
META
ORGANIC
REF
DIRECT
EMAIL
Pipeline distribution
New 42%
Qualified 28%
Touring 20%
Contract 10%

SEE IT IN ACTION

Want to see what we’d build specifically for your project?

Fill out the form. Our AI analyzes your inputs against the same playbook that runs Heartwood — and sends you a one-page custom report with the modules we’d prioritize, an estimated investment range, and the specific results you could expect in 90 days.

 

No sales call. No commitment. The report arrives in your inbox in under three minutes — and the act of receiving it is a demonstration of the AI workflow we’d build for your buyers.

<!– ────────────────────────────────────────────────────────────────────
FORM OPTIONS — pick ONE of the two approaches below.

OPTION A (recommended if you have HubSpot for WordPress plugin):
Replace the

block below with this single line:

OPTION B (HTML form using HubSpot Forms API v3 — no plugin needed):

Keep the block. In its decoded HTML, replace:

HUBSPOT_PORTAL_ID → your numeric portal ID

HUBSPOT_FORM_ID → the form GUID

Create a non-styled form in HubSpot with these field internal names:

firstname, company, email, homes_per_year,

leads_per_month, biggest_challenge

Submissions land directly in your CRM via api.hsforms.com.

──────────────────────────────────────────────────────────────────── -->[/fusion_text]PHN0eWxlPgo6cm9vdHsKICAtLWluazojMEIxRjNCOy0taW5rLTI6IzE0MmE0YTstLWluay0zOiMxZDM3NjA7CiAgLS1nb2xkOiNDNUE0NkQ7LS1nb2xkLXNvZnQ6I2Q4YmY5NDstLWdvbGQtZGVlcDojOWQ4MDUwOwogIC0tY2hhcjojMkIyQjJCOy0tcGFwZXI6I0Y1RjVGNTstLXBhcGVyLXdhcm06I2ZhZjhmMzsKICAtLWdyYXk6I0Q5RDlEOTstLWdyYXktc29mdDojZThlNmUxOy0tbGluZTojZGFkNmNkOwogIC0tZ29vZDojNGE3YTRhOy0taG90OiNjNDUyM2E7LS13YXJtOiNiODhhM2E7CiAgLS1zZXJpZjonSUJNIFBsZXggU2VyaWYnLEdlb3JnaWEsc2VyaWY7CiAgLS1zYW5zOidJQk0gUGxleCBTYW5zJyxzeXN0ZW0tdWksc2Fucy1zZXJpZjsKICAtLW1vbm86J0lCTSBQbGV4IE1vbm8nLG1vbm9zcGFjZTsKfQo8L3N0eWxlPgo8c3R5bGU+Ci5yZWdzLWZvcm17YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MTRweDtwYWRkaW5nOjIuMjVyZW07Ym94LXNoYWRvdzowIDI0cHggNjRweCByZ2JhKDExLDMxLDU5LC4xKTtib3JkZXI6MXB4IHNvbGlkICNkYWQ2Y2Q7Zm9udC1mYW1pbHk6dmFyKC0tc2Fucyl9Ci5yZWdzLWZvcm0gaDN7Zm9udC1mYW1pbHk6dmFyKC0tc2VyaWYpO2ZvbnQtc2l6ZToxLjM1cmVtO2NvbG9yOiMwQjFGM0I7bWFyZ2luOjAgMCAuNHJlbSAwO2ZvbnQtd2VpZ2h0OjUwMH0KLnJlZ3MtZm9ybSAuc3Vie2ZvbnQtc2l6ZTouODhyZW07Y29sb3I6IzY2NjttYXJnaW4tYm90dG9tOjEuNXJlbX0KLnJlZ3MtZm9ybSAuZmllbGR7bWFyZ2luLWJvdHRvbToxcmVtfQoucmVncy1mb3JtIGxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC1mYW1pbHk6dmFyKC0tbW9ubyk7Zm9udC1zaXplOi43MnJlbTtsZXR0ZXItc3BhY2luZzouMDhlbTtjb2xvcjojNjY2O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW4tYm90dG9tOi4zNXJlbTtmb250LXdlaWdodDo1MDB9Ci5yZWdzLWZvcm0gaW5wdXQsLnJlZ3MtZm9ybSBzZWxlY3QsLnJlZ3MtZm9ybSB0ZXh0YXJlYXt3aWR0aDoxMDAlO3BhZGRpbmc6LjdyZW0gLjg1cmVtO2JvcmRlcjoxcHggc29saWQgI2RhZDZjZDtib3JkZXItcmFkaXVzOjVweDtmb250LWZhbWlseTp2YXIoLS1zYW5zKTtmb250LXNpemU6LjkycmVtO2NvbG9yOiMyQjJCMkI7YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveH0KLnJlZ3MtZm9ybSBpbnB1dDpmb2N1cywucmVncy1mb3JtIHNlbGVjdDpmb2N1cywucmVncy1mb3JtIHRleHRhcmVhOmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6I0M1QTQ2RH0KLnJlZ3MtZm9ybSAucm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6Ljc1cmVtfQoucmVncy1mb3JtIC5jdGF7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiMwQjFGM0I7Y29sb3I6I0Y1RjVGNTtib3JkZXI6bm9uZTtwYWRkaW5nOjFyZW07Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1mYW1pbHk6dmFyKC0tc2Fucyk7Zm9udC1zaXplOi45NXJlbTtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7bGV0dGVyLXNwYWNpbmc6LjAyZW07bWFyZ2luLXRvcDouNXJlbTt0cmFuc2l0aW9uOmFsbCAuMnN9Ci5yZWdzLWZvcm0gLmN0YTpob3ZlcntiYWNrZ3JvdW5kOiNDNUE0NkQ7Y29sb3I6IzBCMUYzQn0KLnJlZ3MtZm9ybSAuZmluZXtmb250LWZhbWlseTp2YXIoLS1tb25vKTtmb250LXNpemU6LjdyZW07Y29sb3I6Izg4ODt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOi44NXJlbTtsZXR0ZXItc3BhY2luZzouMDRlbX0KLnJlZ3MtZm9ybSAucHJldmlld3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGFkNmNkO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MS4yNXJlbTttYXJnaW4tdG9wOjEuNXJlbTtmb250LXNpemU6Ljc4cmVtO2NvbG9yOiM1NTU7cG9zaXRpb246cmVsYXRpdmV9Ci5yZWdzLWZvcm0gLnByZXZpZXc6OmJlZm9yZXtjb250ZW50OiJQUkVWSUVXIE9GIFdIQVQgWU9VJ0xMIFJFQ0VJVkUiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotOXB4O2xlZnQ6MXJlbTtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzowIC41NXJlbTtmb250LWZhbWlseTp2YXIoLS1tb25vKTtmb250LXNpemU6LjYycmVtO2xldHRlci1zcGFjaW5nOi4xZW07Y29sb3I6IzlkODA1MDtmb250LXdlaWdodDo2MDB9Ci5yZWdzLWZvcm0gLnB2e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOi40cmVtIDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RhZDZjZDtmb250LWZhbWlseTp2YXIoLS1tb25vKTtmb250LXNpemU6Ljc0cmVtfQoucmVncy1mb3JtIC5wdjpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nLXRvcDouNnJlbTtjb2xvcjojMEIxRjNCO2ZvbnQtd2VpZ2h0OjYwMH0KLnJlZ3MtZm9ybSAucHYgc3BhbjpmaXJzdC1jaGlsZHtjb2xvcjojNzc3fQo8L3N0eWxlPgo8Zm9ybSBjbGFzcz0icmVncy1mb3JtIiBpZD0icmVncy1wcm9wb3NhbC1mb3JtIgogICAgICBkYXRhLWhzLXBvcnRhbD0iSFVCU1BPVF9QT1JUQUxfSUQiCiAgICAgIGRhdGEtaHMtZm9ybT0iSFVCU1BPVF9GT1JNX0lEIgogICAgICBvbnN1Ym1pdD0icmV0dXJuIHJlZ3NTdWJtaXRQcm9wb3NhbChldmVudCkiPgogIDxoMz5HZW5lcmF0ZSBteSBjdXN0b20gb25lLXBhZ2VyPC9oMz4KICA8cCBjbGFzcz0ic3ViIj5QZXJzb25hbGl6ZWQgdG8geW91ciBwcm9qZWN0LiBEZWxpdmVyZWQgaW4gdW5kZXIgMyBtaW51dGVzLjwvcD4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InJncy1mbiI+WW91ciBuYW1lPC9sYWJlbD48aW5wdXQgaWQ9InJncy1mbiIgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSmFuZSBTbWl0aCIgcmVxdWlyZWQ+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0icmdzLWNvIj5Db21wYW55PC9sYWJlbD48aW5wdXQgaWQ9InJncy1jbyIgbmFtZT0iY29tcGFueSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlJpdmVyc2lkZSBIb21lcyIgcmVxdWlyZWQ+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InJncy1lbSI+V29yayBlbWFpbDwvbGFiZWw+PGlucHV0IGlkPSJyZ3MtZW0iIG5hbWU9ImVtYWlsIiB0eXBlPSJlbWFpbCIgcGxhY2Vob2xkZXI9ImphbmVAcml2ZXJzaWRlaG9tZXMuY29tIiByZXF1aXJlZD48L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InJncy1ocCI+SG9tZXMgLyBsb3RzIHBlciB5ZWFyPC9sYWJlbD4KICAgICAgPHNlbGVjdCBpZD0icmdzLWhwIiBuYW1lPSJob21lc19wZXJfeWVhciIgcmVxdWlyZWQ+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgcmFuZ2XigKY8L29wdGlvbj48b3B0aW9uPlVuZGVyIDI1PC9vcHRpb24+PG9wdGlvbj4yNeKAkzc1PC9vcHRpb24+PG9wdGlvbj43NeKAkzE1MDwvb3B0aW9uPjxvcHRpb24+MTUw4oCTMzAwPC9vcHRpb24+PG9wdGlvbj4zMDArPC9vcHRpb24+CiAgICAgIDwvc2VsZWN0PjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InJncy1sbSI+TGVhZHMgLyBtb250aCAocm91Z2gpPC9sYWJlbD4KICAgICAgPHNlbGVjdCBpZD0icmdzLWxtIiBuYW1lPSJsZWFkc19wZXJfbW9udGgiIHJlcXVpcmVkPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IHJhbmdl4oCmPC9vcHRpb24+PG9wdGlvbj5VbmRlciAyMDwvb3B0aW9uPjxvcHRpb24+MjDigJM1MDwvb3B0aW9uPjxvcHRpb24+NTDigJMxMDA8L29wdGlvbj48b3B0aW9uPjEwMOKAkzIwMDwvb3B0aW9uPjxvcHRpb24+MjAwKyAvIG5vdCB0cmFja2VkPC9vcHRpb24+CiAgICAgIDwvc2VsZWN0PjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJyZ3MtcG4iPldoYXQncyB5b3VyIHNpbmdsZSBiaWdnZXN0IG1hcmtldGluZyBjaGFsbGVuZ2UgcmlnaHQgbm93PzwvbGFiZWw+CiAgICA8dGV4dGFyZWEgaWQ9InJncy1wbiIgbmFtZT0iYmlnZ2VzdF9jaGFsbGVuZ2UiIHJvd3M9IjIiIHBsYWNlaG9sZGVyPSJMZWFkIHF1YWxpdHksIGF0dHJpYnV0aW9uLCBhZ2VuY3kgZmF0aWd1ZSwgc2NhbGluZyBhIG5ldyBjb21tdW5pdHksIGV0Yy4iIHJlcXVpcmVkPjwvdGV4dGFyZWE+PC9kaXY+CiAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJjdGEiPkdlbmVyYXRlIG15IGN1c3RvbSBwcm9wb3NhbCDihpI8L2J1dHRvbj4KICA8cCBjbGFzcz0iZmluZSI+Tm8gc2FsZXMgY2FsbCDCtyBObyBzcGFtIMK3IFVuc3Vic2NyaWJlIGluIG9uZSBjbGljazwvcD4KICA8ZGl2IGNsYXNzPSJwcmV2aWV3Ij4KICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OnZhcigtLXNlcmlmKTtjb2xvcjojMEIxRjNCO2ZvbnQtd2VpZ2h0OjUwMDttYXJnaW4tYm90dG9tOi41cmVtO2ZvbnQtc2l6ZTouOTVyZW0iPlNhbXBsZSBvdXRwdXQgwrcgUml2ZXJzaWRlIEhvbWVzPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwdiI+PHNwYW4+UmVjb21tZW5kZWQgbW9kdWxlczwvc3Bhbj48c3Bhbj5NMiwgTTQsIE01LCBNNiwgTTk8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwdiI+PHNwYW4+QnVpbGQgdGltZWxpbmU8L3NwYW4+PHNwYW4+OSB3ZWVrczwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InB2Ij48c3Bhbj5Fc3RpbWF0ZWQgaW52ZXN0bWVudDwvc3Bhbj48c3Bhbj4kOC41SyDigJMgJDExSzwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InB2Ij48c3Bhbj5Qcm9qZWN0ZWQgbGVhZHMgLyBtbyAobTTigJM2KTwvc3Bhbj48c3Bhbj4xNDDigJMxODA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwdiI+PHNwYW4+UHJvamVjdGVkIENQTCBpbXByb3ZlbWVudDwvc3Bhbj48c3Bhbj7ihpMgMzXigJM1NSU8L3NwYW4+PC9kaXY+CiAgPC9kaXY+CjwvZm9ybT4KPHNjcmlwdD4KZnVuY3Rpb24gcmVnc1N1Ym1pdFByb3Bvc2FsKGUpewogIGUucHJldmVudERlZmF1bHQoKTsKICB2YXIgZj1lLnRhcmdldCwgYnRuPWYucXVlcnlTZWxlY3RvcignLmN0YScpOwogIGJ0bi50ZXh0Q29udGVudD0n4pyTIEdlbmVyYXRpbmcgeW91ciByZXBvcnTigKYnOyBidG4uZGlzYWJsZWQ9dHJ1ZTsKICB2YXIgcG9ydGFsPWYuZGF0YXNldC5oc1BvcnRhbCwgZm9ybUlkPWYuZGF0YXNldC5oc0Zvcm07CiAgaWYoIXBvcnRhbHx8cG9ydGFsPT09J0hVQlNQT1RfUE9SVEFMX0lEJyl7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YnRuLnRleHRDb250ZW50PSfinJMgQWxtb3N0IHRoZXJlIOKAlCBjb25uZWN0IEh1YlNwb3QgdG8gZmluaXNoJzt9LDYwMCk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIHZhciBmaWVsZHM9WydmaXJzdG5hbWUnLCdjb21wYW55JywnZW1haWwnLCdob21lc19wZXJfeWVhcicsJ2xlYWRzX3Blcl9tb250aCcsJ2JpZ2dlc3RfY2hhbGxlbmdlJ10KICAgIC5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHtuYW1lOm4sdmFsdWU6KGYuZWxlbWVudHNbbl18fHt9KS52YWx1ZXx8Jyd9fSk7CiAgZmV0Y2goJ2h0dHBzOi8vYXBpLmhzZm9ybXMuY29tL3N1Ym1pc3Npb25zL3YzL2ludGVncmF0aW9uL3N1Ym1pdC8nK3BvcnRhbCsnLycrZm9ybUlkLHsKICAgIG1ldGhvZDonUE9TVCcsaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSwKICAgIGJvZHk6SlNPTi5zdHJpbmdpZnkoe2ZpZWxkczpmaWVsZHMsY29udGV4dDp7cGFnZVVyaTpsb2NhdGlvbi5ocmVmLHBhZ2VOYW1lOmRvY3VtZW50LnRpdGxlfX0pCiAgfSkudGhlbihmdW5jdGlvbihyKXsKICAgIGlmKHIub2spe2J0bi50ZXh0Q29udGVudD0n4pyTIFNlbnQg4oCUIGNoZWNrIHlvdXIgaW5ib3ggaW4gfjMgbWluJzt9CiAgICBlbHNle2J0bi50ZXh0Q29udGVudD0n4pqgIFNvbWV0aGluZyB3ZW50IHdyb25nIOKAlCB0cnkgYWdhaW4nO2J0bi5kaXNhYmxlZD1mYWxzZTt9CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXtidG4udGV4dENvbnRlbnQ9J+KaoCBOZXR3b3JrIGVycm9yIOKAlCB0cnkgYWdhaW4nO2J0bi5kaXNhYmxlZD1mYWxzZTt9KTsKICByZXR1cm4gZmFsc2U7Cn0KPC9zY3JpcHQ+Cg==