diff --git a/CHANGELOG.md b/CHANGELOG.md index e3bdd4ebf..f1990f136 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,24 @@ follow semantic versioning; release dates are ISO 8601. colours the packaged marks come in, so a document chooses one deliberately rather than mixing navy and gold in a row by accident. +- **A photographic CV preset: `CharcoalGold`.** A one-page sheet in two columns: a + charcoal sidebar carrying a ringed photograph, the contact channels behind their + marks, rated skills, languages and degrees, beside a paper column carrying a two-tone + name — the given name in ink, the family name larger and in gold — the summary, the + roles held on a dated rail, a pair of credential columns divided by a hairline, and a + closing strip of tools. Ships as `cv.presets.CharcoalGold` on the existing + `CvDocument` model with **no model change at all**, porting the rendered layout of the + published standalone `charcoal-gold-cv` template. Unlike its ported siblings it leaves + the page size to the caller: the design is drawn on A4 and its geometry follows the + page's own width, so a different page rescales rather than breaks. Seven berths reach + their sections by title; credentials take the mark each entry names in + `CvEntry.icon()` from this preset's own set, every title it draws is a link when the + entry carries one, and a skill the document leaves unlevelled draws no rating rather + than five empty dots. Guarded by a smoke test (including the unknown-mark data error, + the missing portrait, the unlevelled skill, the link targets and the one-page limit), + an exact layout snapshot and a pixel-parity gate; the examples showcase gains + `cv-charcoal-gold-v2`. + - **A two-column editorial CV preset: `SerifHeadline`.** A one-page A4 sheet under a Volkhov masthead — the name in the display serif over its role and a short gold rule, the contact channels stacked opposite — then a two-column body: the roles held on a diff --git a/assets/readme/examples/cv-charcoal-gold-v2.pdf b/assets/readme/examples/cv-charcoal-gold-v2.pdf new file mode 100644 index 000000000..ae9b0340a Binary files /dev/null and b/assets/readme/examples/cv-charcoal-gold-v2.pdf differ diff --git a/docs/templates/v2-layered/using-templates.md b/docs/templates/v2-layered/using-templates.md index 60d109ec6..2d84290c0 100644 --- a/docs/templates/v2-layered/using-templates.md +++ b/docs/templates/v2-layered/using-templates.md @@ -234,13 +234,13 @@ whole or the paginator raises `AtomicNodeTooLargeException`. Lifting a cap without teaching the preset to pick its own page boundaries turns a CV that silently lost an entry into one that fails to render. -`ProfessionalSidebar.create()`, `NavySidebar.create()` and -`SerifHeadline.create()` are compositions for a fixed amount of content -that cap nothing: each reproduces a specific one-page sheet, so a CV -longer than that sheet raises `AtomicNodeTooLargeException` instead of -losing an entry to a cap. Size the document to them — roughly five or -six roles with three or four highlights each, alongside the other -blocks. +`ProfessionalSidebar.create()`, `NavySidebar.create()`, +`SerifHeadline.create()` and `CharcoalGold.create()` are compositions +for a fixed amount of content that cap nothing: each reproduces a +specific one-page sheet, so a CV longer than that sheet raises +`AtomicNodeTooLargeException` instead of losing an entry to a cap. Size +the document to them — roughly five or six roles with three or four +highlights each, alongside the other blocks. If the document's length is the author's rather than the template's, pick a preset that paginates — `TimelineMinimal` splits its own columns diff --git a/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java b/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java index 94855735c..6452c2d30 100644 --- a/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java +++ b/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java @@ -79,6 +79,7 @@ import com.demcha.examples.templates.coverletter.CvPanelLetterV2Example; import com.demcha.examples.templates.coverletter.CvSidebarPortraitLetterV2Example; import com.demcha.examples.templates.coverletter.CvTimelineMinimalLetterV2Example; +import com.demcha.examples.templates.cv.v2.CharcoalGoldExample; import com.demcha.examples.templates.cv.v2.CvBlueBannerExample; import com.demcha.examples.templates.cv.v2.CvBoxedV2Example; import com.demcha.examples.templates.cv.v2.CvCenteredHeadlineExample; @@ -151,6 +152,7 @@ public static void main(String[] args) throws Exception { System.out.println("Generated: " + NavySidebarExample.generate()); System.out.println("Generated: " + ProfessionalSidebarExample.generate()); System.out.println("Generated: " + SerifHeadlineExample.generate()); + System.out.println("Generated: " + CharcoalGoldExample.generate()); // Cover letters (v2 layered — 15 paired letters, one per CV preset) System.out.println("Generated: " + CvBlueBannerLetterV2Example.generate()); diff --git a/examples/src/main/java/com/demcha/examples/support/CharcoalGoldSampleData.java b/examples/src/main/java/com/demcha/examples/support/CharcoalGoldSampleData.java new file mode 100644 index 000000000..971fc1c6c --- /dev/null +++ b/examples/src/main/java/com/demcha/examples/support/CharcoalGoldSampleData.java @@ -0,0 +1,186 @@ +package com.demcha.examples.support; + +import com.demcha.compose.document.image.DocumentImageData; +import com.demcha.compose.document.templates.core.identity.Contact; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvSkill; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.util.List; +import java.util.Objects; + +/** + * Sample data for the Charcoal Gold CV example. + * + *

Sized to the design: the preset draws a fixed one-page sheet, and a CV + * much longer than this one does not compose at all — the two columns are a + * single atomic row, so it raises {@code AtomicNodeTooLargeException}.

+ * + *

The credential marks are this preset's own vocabulary — + * {@code certificate}, {@code trophy}, {@code growth}, {@code star} — and + * each entry names the one it wants. The portrait is a neutral silhouette + * rather than a photograph, because the example ships in the repository; a + * real CV passes the candidate's own image the same way.

+ */ +public final class CharcoalGoldSampleData { + + private static final String NEWLINE = String.valueOf((char) 10); + private static final String PORTRAIT = "/cv-portrait-placeholder.png"; + + private CharcoalGoldSampleData() { + } + + /** + * A delivery lead's one-page CV. + * + * @return the sample document + */ + public static CvDocument sample() { + return CvDocument.builder() + .identity(CvIdentity.builder() + .name("HELENA", "MARSH") + .jobTitle("DELIVERY LEAD") + .contact(new Contact("+44 161 496 0114", + "helena@example.com", + "Manchester, United Kingdom")) + .link(new Link("helenamarsh.co.uk", "https://helenamarsh.co.uk")) + .link(new Link("linkedin.com/in/hmarsh", + "https://www.linkedin.com/in/hmarsh")) + .portrait(portrait()) + .build()) + .section(new ParagraphSection("Summary", String.join(NEWLINE, + "Delivery lead with nine years running software programmes for" + + " regulated clients, from discovery through the audit that" + + " follows go-live.", + "Happiest with a small team, a short feedback loop, and a plan that" + + " survives contact with the first week."))) + .section(SkillsSection.of("SKILLS", new SkillGroup("Core", List.of( + CvSkill.of("Delivery Management", 1.0), + CvSkill.of("Stakeholder Management", 1.0), + CvSkill.of("Risk & Assurance", 1.0), + CvSkill.of("Budget Ownership", 0.8), + CvSkill.of("Agile Coaching", 0.8), + CvSkill.of("Vendor Management", 0.8), + CvSkill.of("Roadmapping", 1.0), + CvSkill.of("Jira / Confluence", 1.0), + CvSkill.of("Power BI", 0.6), + CvSkill.of("Public Speaking", 0.6))))) + .section(RowsSection.builder("LANGUAGES", RowStyle.PLAIN) + .row("English", "Native") + .row("Welsh", "Native") + .row("Spanish", "B2 – Upper Intermediate") + .row("Italian", "A2 – Basic") + .build()) + .section(EntriesSection.builder("EDUCATION") + .entry(CvEntry.builder("MSc Programme Management") + .subtitle("University of Manchester") + .date("2015 – 2016") + .build()) + .entry(CvEntry.builder("BA Economics") + .subtitle("University of Leeds") + .date("2012 – 2015") + .build()) + .build()) + .section(EntriesSection.builder("EXPERIENCE") + .entry(CvEntry.builder("Delivery Lead") + .subtitle("NORTHWALL GROUP") + .place("MANCHESTER, UK") + .date("2021 – Present") + .link("https://northwall.example.com") + .body(List.of( + "Runs a portfolio of four programmes worth £8M against" + + " a fixed regulatory deadline.", + "Rebuilt the intake process so a request is either" + + " scheduled or refused within a week.", + "Coaches three delivery managers and chairs the monthly" + + " assurance review.", + "Cut third-party spend by 18% by consolidating four" + + " vendor contracts into one.")) + .build()) + .entry(CvEntry.builder("Senior Project Manager") + .subtitle("BRIDGEMOOR CONSULTING") + .place("LEEDS, UK") + .date("2018 – 2021") + .body(List.of( + "Delivered fourteen client programmes across finance" + + " and public sector.", + "Owned budgets, timelines and the escalation path to" + + " the client's board.", + "Introduced the risk register the practice still uses.")) + .build()) + .entry(CvEntry.builder("Project Manager") + .subtitle("ALDGATE DIGITAL") + .place("LONDON, UK") + .date("2016 – 2018") + .body(List.of( + "Ran delivery for two product teams and the platform" + + " work beneath them.", + "Built the reporting pack the leadership team read" + + " weekly.")) + .build()) + .build()) + .section(EntriesSection.builder("CERTIFICATIONS") + .entry(CvEntry.builder("PMP® Certification") + .subtitle("Project Management Institute") + .date("2019") + .icon("certificate") + .build()) + .entry(CvEntry.builder("PRINCE2® Practitioner") + .subtitle("AXELOS") + .date("2018") + .icon("certificate") + .build()) + .entry(CvEntry.builder("Certified Scrum Professional") + .subtitle("Scrum Alliance") + .date("2017") + .icon("certificate") + .build()) + .build()) + .section(EntriesSection.builder("ACHIEVEMENTS") + .entry(CvEntry.builder("Programme of the Year") + .subtitle("Northwall Group") + .date("2024") + .icon("trophy") + .build()) + .entry(CvEntry.builder("Intake Redesign") + .subtitle("Lead time down 62%") + .date("2023") + .icon("growth") + .build()) + .entry(CvEntry.builder("Client Choice Award") + .subtitle("Bridgemoor Consulting") + .date("2020") + .icon("star") + .build()) + .build()) + .section(new ParagraphSection("TECHNICAL TOOLS", String.join(NEWLINE, + "Jira", "Confluence", "Miro", "Power BI", "Smartsheet", "Slack"))) + .build(); + } + + /** + * The packaged silhouette that stands in for a photograph. + * + * @return the portrait image data + */ + private static DocumentImageData portrait() { + try (InputStream in = Objects.requireNonNull( + CharcoalGoldSampleData.class.getResourceAsStream(PORTRAIT), + "cv-portrait-placeholder.png missing from examples/src/main/resources/")) { + return DocumentImageData.fromBytes(in.readAllBytes()); + } catch (IOException e) { + throw new UncheckedIOException("Failed to read the sample portrait", e); + } + } +} diff --git a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java index 6d893613e..f47ae6666 100644 --- a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java +++ b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java @@ -63,6 +63,7 @@ record Entry(String title, String description, List tags, String codeUrl cv("cv-professional-sidebar-v2", "ProfessionalSidebarExample", "Professional Sidebar", "Navy monogram plate over a pale sidebar of contact marks, skill meters, an education rail and language ratings, beside a white column of profile, roles and projects.", "sidebar", "navy"); cv("cv-navy-sidebar-v2", "NavySidebarExample", "Navy Sidebar", "Navy plate with a ringed portrait, contact marks, degrees, skills and languages, beside a white column of summary, badged sections and roles strung on a timeline rail.", "sidebar", "navy", "portrait"); cv("cv-serif-headline-v2", "SerifHeadlineExample", "Serif Headline", "Volkhov masthead over a two-column body: roles on a timeline rail and marked project cards beside degrees and skill meters, closing with full-width certification and achievement bands.", "serif", "two-column"); + cv("cv-charcoal-gold-v2", "CharcoalGoldExample", "Charcoal Gold", "Charcoal sidebar with a ringed photograph, rated skills and languages, beside a paper column with a two-tone name, a dated experience rail and paired credential columns.", "sidebar", "photo", "gold"); // ===== Templates / Cover Letter (v2 layered, paired 1:1 with CV) ===== // Registered directly: letter() points at the layered preset examples under diff --git a/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java new file mode 100644 index 000000000..db78ef2e2 --- /dev/null +++ b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CharcoalGoldExample.java @@ -0,0 +1,57 @@ +package com.demcha.examples.templates.cv.v2; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.presets.CharcoalGold; +import com.demcha.examples.support.CharcoalGoldSampleData; +import com.demcha.examples.support.ExampleOutputPaths; + +import java.nio.file.Path; + +/** + * Renders the layered {@code cv.v2} Charcoal Gold preset against the + * project-manager sample. + * + *

Output: + * {@code examples/target/generated-pdfs/templates/cv/cv-charcoal-gold-v2.pdf}.

+ * + *

Unlike its ported siblings this preset leaves the page to the caller, + * so the session sets A4 with no margin: both columns run to the paper edge + * and each carries its own padding.

+ */ +public final class CharcoalGoldExample { + + private CharcoalGoldExample() { + } + + /** + * @return absolute path of the rendered PDF + * @throws Exception if rendering fails + */ + public static Path generate() throws Exception { + Path outputFile = ExampleOutputPaths.prepare( + "templates/cv", "cv-charcoal-gold-v2.pdf"); + CvDocument doc = CharcoalGoldSampleData.sample(); + DocumentTemplate template = CharcoalGold.create(); + + try (DocumentSession document = GraphCompose.document(outputFile) + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + template.compose(document, doc); + document.buildPdf(); + } + return outputFile; + } + + /** + * @param args ignored + * @throws Exception if rendering fails + */ + public static void main(String[] args) throws Exception { + System.out.println("Generated: " + generate()); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java new file mode 100644 index 000000000..84b063386 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldFixtures.java @@ -0,0 +1,143 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.templates.core.identity.Contact; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvSkill; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.List; + +/** + * The canonical fixture for {@link CharcoalGold} — the document the design + * was drawn around, and the one both gates measure. + * + *

One fixture feeds the layout snapshot and the pixel baseline, so a + * change that moves the sheet moves both together instead of leaving one + * gate measuring a document the other no longer renders.

+ */ +public final class CharcoalGoldFixtures { + + private static final String NEWLINE = String.valueOf((char) 10); + + private CharcoalGoldFixtures() { + } + + /** + * The canonical CV: a photograph, five contact channels, ten rated + * skills, four languages, two degrees, three roles, three certifications, + * three achievements and a six-tool strip — one page. + * + * @return the fixture document + */ + public static CvDocument canonicalCv() { + return CvDocument.builder() + .identity(CvIdentity.builder() + .name("ANASTASIA", "SMITH") + .jobTitle("PROJECT MANAGER") + .contact(new Contact("+44 7700 900123", + "hello@anastasiasmith.com", + "London, United Kingdom")) + .link(new Link("anastasiasmith.com", + "https://anastasiasmith.com")) + .link(new Link("linkedin.com/in/anastasiasmith", + "https://www.linkedin.com/in/anastasiasmith")) + .portrait(CvFixturePortrait.silhouette()) + .build()) + .section(new ParagraphSection("Summary", String.join(NEWLINE, + "Results-driven Project Manager with 6+ years of experience leading cross-functional teams and delivering complex projects on time and within budget.", + "Skilled in agile and waterfall methodologies, process optimisation, and stakeholder management. Passionate about driving efficiency and creating value." + ))) + .section(SkillsSection.of("SKILLS", new SkillGroup("Core", List.of( + CvSkill.of("Project Management", 1.0), + CvSkill.of("Budgeting & Forecasting", 1.0), + CvSkill.of("Stakeholder Communication", 1.0), + CvSkill.of("Risk Management", 1.0), + CvSkill.of("Data Analysis", 0.8), + CvSkill.of("Process Improvement", 0.8), + CvSkill.of("Microsoft Excel", 1.0), + CvSkill.of("Power BI", 0.8), + CvSkill.of("Jira / Confluence", 1.0), + CvSkill.of("Agile Methodologies", 0.8) + )))) + .section(RowsSection.builder("LANGUAGES", RowStyle.PLAIN) + .row("English", "Native") + .row("Russian", "Native") + .row("French", "B2 – Upper Intermediate") + .row("German", "A2 – Basic") + .build()) + .section(EntriesSection.builder("EDUCATION") + .entry(CvEntry.builder("MSc Project Management") + .subtitle("University College London").date("2018 – 2019").build()) + .entry(CvEntry.builder("BSc Business Administration") + .subtitle("King's College London").date("2014 – 2017").build()) + .build()) + .section(EntriesSection.builder("EXPERIENCE") + .entry(CvEntry.builder("Senior Project Manager") + .subtitle("DIGITAL SOLUTIONS LTD") + .place("LONDON, UK") + .date("2021 – Present") + .body(List.of( + "Lead end-to-end delivery of enterprise software projects worth £1M–£3M.", + "Manage cross-functional teams of up to 15 members.", + "Implement agile practices that improved delivery speed by 25%.", + "Build strong client relationships and ensure stakeholder alignment." + )) + .build()) + .entry(CvEntry.builder("Project Manager") + .subtitle("INNOVATECH SYSTEMS") + .place("LONDON, UK") + .date("2019 – 2021") + .body(List.of( + "Delivered 12+ projects across IT and business transformation.", + "Monitored budgets, timelines, and resource allocation.", + "Identified risks and implemented mitigation strategies.", + "Achieved 98% on-time project delivery." + )) + .build()) + .entry(CvEntry.builder("Project Coordinator") + .subtitle("GLOBAL BUSINESS SERVICES") + .place("LONDON, UK") + .date("2017 – 2019") + .body(List.of( + "Supported project managers in planning and execution.", + "Prepared reports, dashboards, and documentation.", + "Coordinated meetings and tracked action items.", + "Improved internal processes and project templates." + )) + .build()) + .build()) + .section(EntriesSection.builder("CERTIFICATIONS") + .entry(CvEntry.builder("PMP® Certification") + .subtitle("Project Management Institute").date("2020").icon("certificate").build()) + .entry(CvEntry.builder("PRINCE2® Foundation") + .subtitle("AXELOS").date("2019").icon("certificate").build()) + .entry(CvEntry.builder("AgilePM® Foundation") + .subtitle("APMG International").date("2019").icon("certificate").build()) + .build()) + .section(EntriesSection.builder("ACHIEVEMENTS") + .entry(CvEntry.builder("Excellence in Delivery Award") + .subtitle("Digital Solutions Ltd").date("2023").icon("trophy").build()) + .entry(CvEntry.builder("Process Improvement Initiative") + .subtitle("Increased efficiency by 30%").date("2022").icon("growth").build()) + .entry(CvEntry.builder("Top Performer") + .subtitle("Innovatech Systems").date("2020").icon("star").build()) + .build()) + .section(new ParagraphSection("TECHNICAL TOOLS", String.join(NEWLINE, + "Microsoft 365", + "Jira", + "Confluence", + "Asana", + "Slack", + "Power BI" + ))) + .build(); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java new file mode 100644 index 000000000..61d7e67a5 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldLayoutSnapshotTest.java @@ -0,0 +1,36 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.templates.TemplateTestSupport; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Exact layout snapshot gate for {@link CharcoalGold} - freezes the resolved + * geometry of the canonical one-page CV. + * + *

This preset leaves the page to the caller, so the session sets A4 with + * no margin: both columns run to the paper edge and each carries its own + * padding.

+ * + *

Refresh with {@code -Dgraphcompose.updateSnapshots=true} after a + * deliberate layout change, and commit the JSON with the change.

+ */ +class CharcoalGoldLayoutSnapshotTest { + + @Test + void canonicalCvMatchesLayoutSnapshot() throws Exception { + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + CharcoalGold.create().compose(session, CharcoalGoldFixtures.canonicalCv()); + assertThat(session.layoutSnapshot().totalPages()).isEqualTo(1); + TemplateTestSupport.assertCanonicalSnapshot( + session, "charcoal_gold_layout", "cv-v2"); + } + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java new file mode 100644 index 000000000..975bce03f --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldSmokeTest.java @@ -0,0 +1,258 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.exceptions.AtomicNodeTooLargeException; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.core.identity.Contact; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.RowStyle; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.interactive.action.PDActionURI; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink; +import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Smoke test for {@link CharcoalGold} — proves the preset renders a + * {@link CvDocument} end-to-end with its packaged marks, reaches its + * channels and titles as PDF links, and pins the contracts the class + * documents: the credential marks are this preset's own vocabulary, an + * entry without one is drawn plain, a skill without a level draws no + * rating, and the sheet holds one page. + */ +class CharcoalGoldSmokeTest { + + private static byte[] render(CvDocument doc) throws Exception { + try (DocumentSession session = open()) { + CharcoalGold.create().compose(session, doc); + assertThat(session.roots()).isNotEmpty(); + byte[] pdfBytes = session.toPdfBytes(); + assertThat(pdfBytes).isNotEmpty(); + return pdfBytes; + } + } + + /** Both columns run to the paper edge, so the page carries no margin. */ + private static DocumentSession open() { + return GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create(); + } + + private static String textOf(byte[] pdfBytes) throws Exception { + try (PDDocument document = Loader.loadPDF(pdfBytes)) { + return new PDFTextStripper().getText(document); + } + } + + private static List linkUris(byte[] pdfBytes) throws Exception { + List uris = new ArrayList<>(); + try (PDDocument document = Loader.loadPDF(pdfBytes)) { + for (PDPage page : document.getPages()) { + for (PDAnnotation annotation : page.getAnnotations()) { + if (annotation instanceof PDAnnotationLink link + && link.getAction() instanceof PDActionURI action) { + uris.add(action.getURI()); + } + } + } + } + return uris; + } + + @Test + void exposesStableIdentity() { + DocumentTemplate template = CharcoalGold.create(); + assertThat(template.id()).isEqualTo(CharcoalGold.ID); + assertThat(template.displayName()).isEqualTo(CharcoalGold.DISPLAY_NAME); + } + + @Test + void canonicalRenderCarriesTheText() throws Exception { + String text = textOf(render(CharcoalGoldFixtures.canonicalCv())); + assertThat(text) + .contains("hello@anastasiasmith.com") + .contains("London, United Kingdom") + .contains("Results-driven Project Manager") + .contains("Project Management") + .contains("B2 – Upper Intermediate") + .contains("MSc Project Management") + .contains("Senior Project Manager") + .contains("DIGITAL SOLUTIONS LTD · LONDON, UK") + .contains("Lead end-to-end delivery of enterprise software projects") + .contains("PMP® Certification") + .contains("Excellence in Delivery Award") + .contains("Confluence"); + } + + @Test + void rendersOneCanonicalPage() throws Exception { + try (PDDocument document = + Loader.loadPDF(render(CharcoalGoldFixtures.canonicalCv()))) { + assertThat(document.getNumberOfPages()).isEqualTo(1); + } + } + + @Test + void channelsReachThePdfAsLinks() throws Exception { + // The dial and mail targets are built from the values. They are + // annotations, so they move no pixel and no layout node — which is + // why the parity gates cannot see them either. + assertThat(linkUris(render(CharcoalGoldFixtures.canonicalCv()))) + .contains("tel:+447700900123", + "mailto:hello@anastasiasmith.com", + "https://anastasiasmith.com", + "https://www.linkedin.com/in/anastasiasmith"); + } + + @Test + void aTitleWithALinkReachesThePdfAsOne() throws Exception { + byte[] pdf = render(CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Experience") + .entry(CvEntry.builder("Engineer") + .subtitle("Acme") + .date("2024") + .body("Shipped a thing.") + .link("https://acme.example.com") + .build()) + .build()) + .section(EntriesSection.builder("Certifications") + .entry(CvEntry.builder("Certified Something") + .subtitle("An Institute") + .date("2023") + .icon("certificate") + .link("https://example.com/cert") + .build()) + .build()) + .build()); + assertThat(linkUris(pdf)) + .contains("https://acme.example.com", "https://example.com/cert"); + } + + @Test + void rejectsAnUnknownCredentialMarkByName() { + CvDocument doc = CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Achievements") + .entry(CvEntry.builder("Award").icon("no-such-mark").build()) + .build()) + .build(); + try (DocumentSession session = open()) { + assertThatThrownBy(() -> CharcoalGold.create().compose(session, doc)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("no-such-mark") + .hasMessageContaining("trophy"); + } + } + + @Test + void drawsACredentialWithoutAMark() throws Exception { + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(EntriesSection.builder("Certifications") + .entry(CvEntry.builder("Certified Something") + .subtitle("An Institute") + .date("2023") + .build()) + .build()) + .build())); + assertThat(text).contains("Certified Something").contains("An Institute"); + } + + @Test + void drawsAnUnlevelledSkillWithoutARating() throws Exception { + // A rating needs a level; without one the row is the name and its + // bullet, not five empty dots that read as a score of zero. + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(SkillsSection.of("Skills", SkillGroup.of("Core", "Java", "Kotlin"))) + .build())); + assertThat(text).contains("Java").contains("Kotlin"); + } + + @Test + void rendersWithoutAPortrait() throws Exception { + // No photograph: the sidebar starts at the contact block rather than + // leaving a hole above it. + String text = textOf(render(CvDocument.builder() + .identity(CvIdentity.builder() + .name("Ada", "Lovelace") + .jobTitle("Analyst") + .contact(new Contact("+44 20 7946 0000", "ada@example.com", + "London, UK")) + .build()) + .build())); + assertThat(text).contains("ada@example.com"); + } + + @Test + void writesTheLanguageLevelTheDocumentCarries() throws Exception { + // Languages are rows rather than levelled skills precisely so the + // words survive; the row style is not read. + String text = textOf(render(CvDocument.builder() + .identity(identity()) + .section(RowsSection.builder("Languages", RowStyle.BULLETED_STACKED) + .row("Portuguese", "B1 – Intermediate") + .build()) + .build())); + assertThat(text).contains("Portuguese").contains("B1 – Intermediate"); + } + + @Test + void refusesACvLongerThanTheSheet() { + // The two columns are a single row, and a row is atomic. A CV past + // the sheet raises rather than flowing. + EntriesSection.Builder experience = EntriesSection.builder("Experience"); + for (int i = 0; i < 16; i++) { + experience.entry(CvEntry.builder("Role " + i) + .subtitle("Employer " + i) + .place("City") + .date("2010 - 2011") + .body(List.of( + "Did a substantial thing that took a full line of text here.", + "Did a second substantial thing, also a full line of text.", + "And a third, so each role occupies real vertical space.")) + .build()); + } + CvDocument doc = CvDocument.builder() + .identity(identity()) + .section(experience.build()) + .build(); + try (DocumentSession session = open()) { + CharcoalGold.create().compose(session, doc); + assertThatThrownBy(session::toPdfBytes) + .isInstanceOf(AtomicNodeTooLargeException.class) + .hasMessageContaining("Body"); + } + } + + private static CvIdentity identity() { + return CvIdentity.builder() + .name("Ada", "Lovelace") + .jobTitle("Analyst") + .contact(new Contact("+44 20 7946 0000", "ada@example.com", "London, UK")) + .link(new Link("linkedin.com/in/ada", "https://linkedin.com/in/ada")) + .portrait(CvFixturePortrait.silhouette()) + .build(); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java new file mode 100644 index 000000000..3a43c141a --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldVisualParityTest.java @@ -0,0 +1,45 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.testing.visual.PdfVisualRegression; +import org.junit.jupiter.api.Test; + +import java.nio.file.Path; + +/** + * Pixel-diff visual parity gate for {@link CharcoalGold} - the canonical + * one-page CV against a checked-in baseline. + * + *

Re-blessing baselines - after a deliberate visual + * change, re-run with {@code -Dgraphcompose.visual.approve=true} and commit + * the updated PNG with the change. Baselines live under + * {@code src/test/resources/visual-baselines/cv-v2-layered/}.

+ */ +class CharcoalGoldVisualParityTest { + + private static final Path BASELINE_ROOT = Path.of( + "src", "test", "resources", "visual-baselines", "cv-v2-layered"); + + private static final long PIXEL_DIFF_BUDGET = 50_000L; + private static final int PER_PIXEL_TOLERANCE = 8; + + @Test + void rendersWithinPixelDiffBudget() throws Exception { + byte[] pdfBytes; + try (DocumentSession document = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(0f, 0f, 0f, 0f) + .create()) { + CharcoalGold.create().compose(document, CharcoalGoldFixtures.canonicalCv()); + pdfBytes = document.toPdfBytes(); + } + + PdfVisualRegression.standard() + .baselineRoot(BASELINE_ROOT) + .perPixelTolerance(PER_PIXEL_TOLERANCE) + .mismatchedPixelBudget(PIXEL_DIFF_BUDGET) + .assertMatchesBaseline("charcoal_gold", pdfBytes); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java new file mode 100644 index 000000000..4b03a3504 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvFixturePortrait.java @@ -0,0 +1,55 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.image.DocumentImageData; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UncheckedIOException; + +import javax.imageio.ImageIO; + +/** + * The photograph the CV fixtures use. + * + *

It is drawn rather than committed: a real face in the repository would + * be a licensed asset guarding a layout, and what the gates need is only + * that the disc has something in it. It is deterministic, so the pixel + * baselines that include it are stable.

+ */ +final class CvFixturePortrait { + + private CvFixturePortrait() { + } + + /** + * A flat two-tone silhouette. + * + * @return the portrait image data + */ + static DocumentImageData silhouette() { + BufferedImage image = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB); + Graphics2D g = image.createGraphics(); + try { + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g.setColor(new Color(222, 226, 231)); + g.fillRect(0, 0, 512, 512); + g.setColor(new Color(150, 160, 173)); + g.fillOval(171, 102, 169, 169); + g.fillOval(67, 307, 379, 379); + } finally { + g.dispose(); + } + ByteArrayOutputStream png = new ByteArrayOutputStream(); + try { + ImageIO.write(image, "png", png); + } catch (IOException e) { + throw new UncheckedIOException("Failed to draw the fixture portrait", e); + } + return DocumentImageData.fromBytes(png.toByteArray()); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java index c5464103a..aeff9351d 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/NavySidebarFixtures.java @@ -14,15 +14,6 @@ import com.demcha.compose.document.templates.cv.data.SkillsSection; import com.demcha.compose.document.templates.cv.data.Slot; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.UncheckedIOException; - -import javax.imageio.ImageIO; /** * The canonical fixture for {@link NavySidebar} — the document the design was @@ -144,30 +135,11 @@ public static CvDocument canonicalCv() { } /** - * A flat two-tone silhouette, drawn at fixture time. + * The silhouette the CV fixtures share. * * @return the portrait image data */ static DocumentImageData portrait() { - BufferedImage image = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB); - Graphics2D g = image.createGraphics(); - try { - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - g.setColor(new Color(222, 226, 231)); - g.fillRect(0, 0, 512, 512); - g.setColor(new Color(150, 160, 173)); - g.fillOval(171, 102, 169, 169); - g.fillOval(67, 307, 379, 379); - } finally { - g.dispose(); - } - ByteArrayOutputStream png = new ByteArrayOutputStream(); - try { - ImageIO.write(image, "png", png); - } catch (IOException e) { - throw new UncheckedIOException("Failed to draw the fixture portrait", e); - } - return DocumentImageData.fromBytes(png.toByteArray()); + return CvFixturePortrait.silhouette(); } } diff --git a/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json b/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json new file mode 100644 index 000000000..7721c9f40 --- /dev/null +++ b/qa/src/test/resources/layout-snapshots/canonical-templates/cv-v2/charcoal_gold_layout.json @@ -0,0 +1,7457 @@ +{ + "formatVersion" : "2.0", + "canvas" : { + "pageWidth" : 595.276, + "pageHeight" : 841.89, + "innerWidth" : 595.276, + "innerHeight" : 841.89, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, + "totalPages" : 1, + "nodes" : [ { + "path" : "CharcoalGoldCv[0]", + "entityName" : "CharcoalGoldCv", + "entityKind" : "ContainerNode", + "parentPath" : null, + "childIndex" : 0, + "depth" : 1, + "layer" : 1, + "computedX" : 0.0, + "computedY" : 29.49, + "placementX" : 0.0, + "placementY" : 29.49, + "placementWidth" : 595.276, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 595.276, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]", + "entityName" : "Body", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]", + "childIndex" : 0, + "depth" : 2, + "layer" : 2, + "computedX" : 0.0, + "computedY" : 29.49, + "placementX" : 0.0, + "placementY" : 29.49, + "placementWidth" : 595.276, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 595.276, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "entityName" : "Sidebar", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]", + "childIndex" : 0, + "depth" : 3, + "layer" : 3, + "computedX" : 0.0, + "computedY" : 44.209, + "placementX" : 0.0, + "placementY" : 44.209, + "placementWidth" : 190.31, + "placementHeight" : 797.68, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 190.31, + "contentHeight" : 797.68, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 24.3, + "right" : 17.0, + "bottom" : 0.0, + "left" : 17.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]", + "entityName" : null, + "entityKind" : "Align", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 0, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 692.229, + "placementX" : 17.0, + "placementY" : 692.229, + "placementWidth" : 156.31, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]", + "entityName" : "ProfilePhoto", + "entityKind" : "ShapeContainerNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 32.475, + "computedY" : 692.229, + "placementX" : 32.475, + "placementY" : 692.229, + "placementWidth" : 125.36, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 125.36, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]/PortraitImage[0]", + "entityName" : "PortraitImage", + "entityKind" : "ImageNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Align[0]/ProfilePhoto[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 32.475, + "computedY" : 692.229, + "placementX" : 32.475, + "placementY" : 692.229, + "placementWidth" : 125.36, + "placementHeight" : 125.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 125.36, + "contentHeight" : 125.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "entityName" : "Contact", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 1, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 542.829, + "placementX" : 17.0, + "placementY" : 542.829, + "placementWidth" : 119.526, + "placementHeight" : 120.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 119.526, + "contentHeight" : 120.0, + "margin" : { + "top" : 29.4, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]", + "entityName" : "Heading_CONTACT", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 650.829, + "placementX" : 17.0, + "placementY" : 650.829, + "placementWidth" : 56.6, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 56.6, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]/HeadingText_CONTACT[0]", + "entityName" : "HeadingText_CONTACT", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Heading_CONTACT[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 650.829, + "placementX" : 26.0, + "placementY" : 650.829, + "placementWidth" : 47.6, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 47.6, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_0[1]", + "entityName" : "Contact_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 629.469, + "placementX" : 17.0, + "placementY" : 629.469, + "placementWidth" : 75.799, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 75.799, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_1[2]", + "entityName" : "Contact_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 610.269, + "placementX" : 17.0, + "placementY" : 610.269, + "placementWidth" : 102.616, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.616, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_2[3]", + "entityName" : "Contact_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 591.069, + "placementX" : 17.0, + "placementY" : 591.069, + "placementWidth" : 98.599, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 98.599, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_3[4]", + "entityName" : "Contact_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 571.869, + "placementX" : 17.0, + "placementY" : 571.869, + "placementWidth" : 79.512, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 79.512, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]/Contact_4[5]", + "entityName" : "Contact_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Contact[1]", + "childIndex" : 5, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 552.669, + "placementX" : 17.0, + "placementY" : 552.669, + "placementWidth" : 119.526, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 119.526, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 9.84, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterContact[2]", + "entityName" : "Divider_AfterContact", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 2, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 522.829, + "placementX" : 17.0, + "placementY" : 522.829, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "entityName" : "Skills", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 3, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 315.829, + "placementX" : 17.0, + "placementY" : 315.829, + "placementWidth" : 156.31, + "placementHeight" : 190.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 190.0, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]", + "entityName" : "Heading_SKILLS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 493.829, + "placementX" : 17.0, + "placementY" : 493.829, + "placementWidth" : 39.57, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 39.57, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]/HeadingText_SKILLS[0]", + "entityName" : "HeadingText_SKILLS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Heading_SKILLS[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 493.829, + "placementX" : 26.0, + "placementY" : 493.829, + "placementWidth" : 30.57, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 30.57, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]", + "entityName" : "Skill_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]", + "entityName" : "Skill_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "entityName" : "Skill_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillBullet_0[0]", + "entityName" : "SkillBullet_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 472.469, + "placementX" : 17.0, + "placementY" : 472.469, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillName_0[1]", + "entityName" : "SkillName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 472.469, + "placementX" : 26.5, + "placementY" : 472.469, + "placementWidth" : 71.682, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 71.682, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]/SkillRating_0[2]", + "entityName" : "SkillRating_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_0Stack[1]/Skill_0Layer[0]/Skill_0[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 472.469, + "placementX" : 132.203, + "placementY" : 472.469, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]", + "entityName" : "Skill_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]", + "entityName" : "Skill_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "entityName" : "Skill_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillBullet_1[0]", + "entityName" : "SkillBullet_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 455.869, + "placementX" : 17.0, + "placementY" : 455.869, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillName_1[1]", + "entityName" : "SkillName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 455.869, + "placementX" : 26.5, + "placementY" : 455.869, + "placementWidth" : 84.427, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 84.427, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]/SkillRating_1[2]", + "entityName" : "SkillRating_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_1Stack[2]/Skill_1Layer[0]/Skill_1[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 455.869, + "placementX" : 132.203, + "placementY" : 455.869, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]", + "entityName" : "Skill_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]", + "entityName" : "Skill_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "entityName" : "Skill_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillBullet_2[0]", + "entityName" : "SkillBullet_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 439.269, + "placementX" : 17.0, + "placementY" : 439.269, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillName_2[1]", + "entityName" : "SkillName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 439.269, + "placementX" : 26.5, + "placementY" : 439.269, + "placementWidth" : 97.032, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 97.032, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]/SkillRating_2[2]", + "entityName" : "SkillRating_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_2Stack[3]/Skill_2Layer[0]/Skill_2[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 439.269, + "placementX" : 132.203, + "placementY" : 439.269, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]", + "entityName" : "Skill_3Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]", + "entityName" : "Skill_3Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "entityName" : "Skill_3", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillBullet_3[0]", + "entityName" : "SkillBullet_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 422.669, + "placementX" : 17.0, + "placementY" : 422.669, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillName_3[1]", + "entityName" : "SkillName_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 422.669, + "placementX" : 26.5, + "placementY" : 422.669, + "placementWidth" : 61.316, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 61.316, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]/SkillRating_3[2]", + "entityName" : "SkillRating_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_3Stack[4]/Skill_3Layer[0]/Skill_3[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 422.669, + "placementX" : 132.203, + "placementY" : 422.669, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]", + "entityName" : "Skill_4Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 5, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]", + "entityName" : "Skill_4Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "entityName" : "Skill_4", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillBullet_4[0]", + "entityName" : "SkillBullet_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 406.069, + "placementX" : 17.0, + "placementY" : 406.069, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillName_4[1]", + "entityName" : "SkillName_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 406.069, + "placementX" : 26.5, + "placementY" : 406.069, + "placementWidth" : 46.488, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 46.488, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]/SkillRating_4[2]", + "entityName" : "SkillRating_4", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_4Stack[5]/Skill_4Layer[0]/Skill_4[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 406.069, + "placementX" : 132.203, + "placementY" : 406.069, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]", + "entityName" : "Skill_5Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 6, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]", + "entityName" : "Skill_5Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "entityName" : "Skill_5", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillBullet_5[0]", + "entityName" : "SkillBullet_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 389.469, + "placementX" : 17.0, + "placementY" : 389.469, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillName_5[1]", + "entityName" : "SkillName_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 389.469, + "placementX" : 26.5, + "placementY" : 389.469, + "placementWidth" : 74.623, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 74.623, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]/SkillRating_5[2]", + "entityName" : "SkillRating_5", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_5Stack[6]/Skill_5Layer[0]/Skill_5[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 389.469, + "placementX" : 132.203, + "placementY" : 389.469, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]", + "entityName" : "Skill_6Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 7, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]", + "entityName" : "Skill_6Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "entityName" : "Skill_6", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillBullet_6[0]", + "entityName" : "SkillBullet_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 372.869, + "placementX" : 17.0, + "placementY" : 372.869, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillName_6[1]", + "entityName" : "SkillName_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 372.869, + "placementX" : 26.5, + "placementY" : 372.869, + "placementWidth" : 53.524, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 53.524, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]/SkillRating_6[2]", + "entityName" : "SkillRating_6", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_6Stack[7]/Skill_6Layer[0]/Skill_6[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 372.869, + "placementX" : 132.203, + "placementY" : 372.869, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]", + "entityName" : "Skill_7Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 8, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]", + "entityName" : "Skill_7Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "entityName" : "Skill_7", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillBullet_7[0]", + "entityName" : "SkillBullet_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 356.269, + "placementX" : 17.0, + "placementY" : 356.269, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillName_7[1]", + "entityName" : "SkillName_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 356.269, + "placementX" : 26.5, + "placementY" : 356.269, + "placementWidth" : 31.426, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 31.426, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]/SkillRating_7[2]", + "entityName" : "SkillRating_7", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_7Stack[8]/Skill_7Layer[0]/Skill_7[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 356.269, + "placementX" : 132.203, + "placementY" : 356.269, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]", + "entityName" : "Skill_8Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 9, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]", + "entityName" : "Skill_8Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "entityName" : "Skill_8", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillBullet_8[0]", + "entityName" : "SkillBullet_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 339.669, + "placementX" : 17.0, + "placementY" : 339.669, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillName_8[1]", + "entityName" : "SkillName_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 339.669, + "placementX" : 26.5, + "placementY" : 339.669, + "placementWidth" : 58.64, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 58.64, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]/SkillRating_8[2]", + "entityName" : "SkillRating_8", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_8Stack[9]/Skill_8Layer[0]/Skill_8[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 339.669, + "placementX" : 132.203, + "placementY" : 339.669, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]", + "entityName" : "Skill_9Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]", + "childIndex" : 10, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.24, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]", + "entityName" : "Skill_9Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "entityName" : "Skill_9", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 156.31, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillBullet_9[0]", + "entityName" : "SkillBullet_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 323.069, + "placementX" : 17.0, + "placementY" : 323.069, + "placementWidth" : 9.5, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 9.5, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillName_9[1]", + "entityName" : "SkillName_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 26.5, + "computedY" : 323.069, + "placementX" : 26.5, + "placementY" : 323.069, + "placementWidth" : 70.582, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 70.582, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]/SkillRating_9[2]", + "entityName" : "SkillRating_9", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Skills[3]/Skill_9Stack[10]/Skill_9Layer[0]/Skill_9[0]", + "childIndex" : 2, + "depth" : 8, + "layer" : 8, + "computedX" : 132.203, + "computedY" : 323.069, + "placementX" : 132.203, + "placementY" : 323.069, + "placementWidth" : 41.107, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 41.107, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterSkills[4]", + "entityName" : "Divider_AfterSkills", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 4, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 295.829, + "placementX" : 17.0, + "placementY" : 295.829, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "entityName" : "Languages", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 5, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 187.229, + "placementX" : 17.0, + "placementY" : 187.229, + "placementWidth" : 156.31, + "placementHeight" : 91.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 91.6, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]", + "entityName" : "Heading_LANGUAGES", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 266.829, + "placementX" : 17.0, + "placementY" : 266.829, + "placementWidth" : 68.51, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 68.51, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]/HeadingText_LANGUAGES[0]", + "entityName" : "HeadingText_LANGUAGES", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Heading_LANGUAGES[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 266.829, + "placementX" : 26.0, + "placementY" : 266.829, + "placementWidth" : 59.51, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 59.51, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]", + "entityName" : "Language_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]", + "entityName" : "Language_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "entityName" : "Language_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]/LanguageName_0[0]", + "entityName" : "LanguageName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 243.909, + "placementX" : 17.0, + "placementY" : 243.909, + "placementWidth" : 28.419, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 28.419, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]/LanguageLevel_0[1]", + "entityName" : "LanguageLevel_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_0Stack[1]/Language_0Layer[0]/Language_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 243.909, + "placementX" : 73.271, + "placementY" : 243.909, + "placementWidth" : 26.426, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 26.426, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]", + "entityName" : "Language_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]", + "entityName" : "Language_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "entityName" : "Language_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]/LanguageName_1[0]", + "entityName" : "LanguageName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 227.009, + "placementX" : 17.0, + "placementY" : 227.009, + "placementWidth" : 30.449, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 30.449, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]/LanguageLevel_1[1]", + "entityName" : "LanguageLevel_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_1Stack[2]/Language_1Layer[0]/Language_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 227.009, + "placementX" : 73.271, + "placementY" : 227.009, + "placementWidth" : 26.426, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 26.426, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]", + "entityName" : "Language_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]", + "entityName" : "Language_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "entityName" : "Language_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]/LanguageName_2[0]", + "entityName" : "LanguageName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 210.109, + "placementX" : 17.0, + "placementY" : 210.109, + "placementWidth" : 27.773, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 27.773, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]/LanguageLevel_2[1]", + "entityName" : "LanguageLevel_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_2Stack[3]/Language_2Layer[0]/Language_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 210.109, + "placementX" : 73.271, + "placementY" : 210.109, + "placementWidth" : 99.636, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 99.636, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]", + "entityName" : "Language_3Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]", + "childIndex" : 4, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 5.98, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]", + "entityName" : "Language_3Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "entityName" : "Language_3", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 156.31, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]/LanguageName_3[0]", + "entityName" : "LanguageName_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 17.0, + "computedY" : 193.209, + "placementX" : 17.0, + "placementY" : 193.209, + "placementWidth" : 31.859, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 31.859, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]/LanguageLevel_3[1]", + "entityName" : "LanguageLevel_3", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Languages[5]/Language_3Stack[4]/Language_3Layer[0]/Language_3[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 73.271, + "computedY" : 193.209, + "placementX" : 73.271, + "placementY" : 193.209, + "placementWidth" : 42.26, + "placementHeight" : 10.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 42.26, + "contentHeight" : 10.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Divider_AfterLanguages[6]", + "entityName" : "Divider_AfterLanguages", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 6, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 167.229, + "placementX" : 17.0, + "placementY" : 167.229, + "placementWidth" : 156.31, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 156.31, + "contentHeight" : 1.0, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "entityName" : "Education", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]", + "childIndex" : 7, + "depth" : 4, + "layer" : 4, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 107.569, + "placementHeight" : 106.02, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 106.02, + "margin" : { + "top" : 17.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]", + "entityName" : "Heading_EDUCATION", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 138.229, + "placementX" : 17.0, + "placementY" : 138.229, + "placementWidth" : 67.56, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 67.56, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]/HeadingText_EDUCATION[0]", + "entityName" : "HeadingText_EDUCATION", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/Heading_EDUCATION[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 26.0, + "computedY" : 138.229, + "placementX" : 26.0, + "placementY" : 138.229, + "placementWidth" : 58.56, + "placementHeight" : 12.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 58.56, + "contentHeight" : 12.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "entityName" : "EducationEntry_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 92.069, + "placementX" : 17.0, + "placementY" : 92.069, + "placementWidth" : 102.95, + "placementHeight" : 34.16, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.95, + "contentHeight" : 34.16, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/Degree_0[0]", + "entityName" : "Degree_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 116.869, + "placementX" : 17.0, + "placementY" : 116.869, + "placementWidth" : 98.708, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 98.708, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "entityName" : "EducationDetail_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]", + "childIndex" : 1, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 92.069, + "placementX" : 17.0, + "placementY" : 92.069, + "placementWidth" : 102.95, + "placementHeight" : 21.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 102.95, + "contentHeight" : 21.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 12.4 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]/Institution_0[0]", + "entityName" : "Institution_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 104.469, + "placementX" : 29.4, + "placementY" : 104.469, + "placementWidth" : 90.55, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 90.55, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]/Period_0[1]", + "entityName" : "Period_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_0[1]/EducationDetail_0[1]", + "childIndex" : 1, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 92.069, + "placementX" : 29.4, + "placementY" : 92.069, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "entityName" : "EducationEntry_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 107.569, + "placementHeight" : 34.16, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 34.16, + "margin" : { + "top" : 13.7, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/Degree_1[0]", + "entityName" : "Degree_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 69.009, + "placementX" : 17.0, + "placementY" : 69.009, + "placementWidth" : 107.569, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 107.569, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "entityName" : "EducationDetail_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]", + "childIndex" : 1, + "depth" : 6, + "layer" : 6, + "computedX" : 17.0, + "computedY" : 44.209, + "placementX" : 17.0, + "placementY" : 44.209, + "placementWidth" : 88.349, + "placementHeight" : 21.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 88.349, + "contentHeight" : 21.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 12.4 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]/Institution_1[0]", + "entityName" : "Institution_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 56.609, + "placementX" : 29.4, + "placementY" : 56.609, + "placementWidth" : 75.949, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 75.949, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.04, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]/Period_1[1]", + "entityName" : "Period_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/Sidebar[0]/Education[7]/EducationEntry_1[2]/EducationDetail_1[1]", + "childIndex" : 1, + "depth" : 7, + "layer" : 7, + "computedX" : 29.4, + "computedY" : 44.209, + "placementX" : 29.4, + "placementY" : 44.209, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "entityName" : "MainColumn", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]", + "childIndex" : 1, + "depth" : 3, + "layer" : 3, + "computedX" : 190.31, + "computedY" : 29.49, + "placementX" : 190.31, + "placementY" : 29.49, + "placementWidth" : 404.966, + "placementHeight" : 812.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 404.966, + "contentHeight" : 812.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 25.7, + "right" : 28.8, + "bottom" : 0.0, + "left" : 23.7 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "entityName" : "Masthead", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 0, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 691.43, + "placementX" : 214.01, + "placementY" : 691.43, + "placementWidth" : 193.815, + "placementHeight" : 124.76, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 193.815, + "contentHeight" : 124.76, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/GivenName[0]", + "entityName" : "GivenName", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 773.35, + "placementX" : 214.01, + "placementY" : 773.35, + "placementWidth" : 193.815, + "placementHeight" : 42.84, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 193.815, + "contentHeight" : 42.84, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/FamilyName[1]", + "entityName" : "FamilyName", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 718.75, + "placementX" : 214.01, + "placementY" : 718.75, + "placementWidth" : 141.369, + "placementHeight" : 54.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.369, + "contentHeight" : 54.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/JobTitle[2]", + "entityName" : "JobTitle", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 704.83, + "placementX" : 214.01, + "placementY" : 704.83, + "placementWidth" : 152.099, + "placementHeight" : 13.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 152.099, + "contentHeight" : 13.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 12.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]/MastheadRule[3]", + "entityName" : "MastheadRule", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Masthead[0]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 691.43, + "placementX" : 214.01, + "placementY" : 691.43, + "placementWidth" : 32.779, + "placementHeight" : 1.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 32.779, + "contentHeight" : 1.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "entityName" : "Summary", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 1, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 627.19, + "placementX" : 214.01, + "placementY" : 627.19, + "placementWidth" : 336.736, + "placementHeight" : 46.44, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 336.736, + "contentHeight" : 46.44, + "margin" : { + "top" : 17.8, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]/Summary_0[0]", + "entityName" : "Summary_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 650.41, + "placementX" : 214.01, + "placementY" : 650.41, + "placementWidth" : 336.736, + "placementHeight" : 23.22, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 336.736, + "contentHeight" : 23.22, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]/Summary_1[1]", + "entityName" : "Summary_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Summary[1]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 627.19, + "placementX" : 214.01, + "placementY" : 627.19, + "placementWidth" : 327.09, + "placementHeight" : 23.22, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 327.09, + "contentHeight" : 23.22, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "entityName" : "Experience", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 2, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 324.58, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 324.58, + "margin" : { + "top" : 28.4, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]", + "entityName" : "Heading_EXPERIENCE", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 585.59, + "placementX" : 214.01, + "placementY" : 585.59, + "placementWidth" : 352.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]", + "entityName" : "HeadingRow_EXPERIENCEStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]", + "entityName" : "HeadingRow_EXPERIENCELayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "entityName" : "HeadingRow_EXPERIENCE", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]/HeadingText_EXPERIENCE[0]", + "entityName" : "HeadingText_EXPERIENCE", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 223.01, + "computedY" : 585.59, + "placementX" : 223.01, + "placementY" : 585.59, + "placementWidth" : 64.911, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 64.911, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]/HeadingRule_EXPERIENCE[1]", + "entityName" : "HeadingRule_EXPERIENCE", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/Heading_EXPERIENCE[0]/HeadingRow_EXPERIENCEStack[0]/HeadingRow_EXPERIENCELayer[0]/HeadingRow_EXPERIENCE[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 296.921, + "computedY" : 591.69, + "placementX" : 296.921, + "placementY" : 591.69, + "placementWidth" : 260.555, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 260.555, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]", + "entityName" : "ExperienceEntry_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 19.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]", + "entityName" : "ExperienceEntry_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "entityName" : "ExperienceEntry_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 455.41, + "placementX" : 214.01, + "placementY" : 455.41, + "placementWidth" : 352.466, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/Period_0[0]", + "entityName" : "Period_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 557.23, + "placementX" : 214.01, + "placementY" : 557.23, + "placementWidth" : 52.907, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 52.907, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "entityName" : "EntryBody_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 455.41, + "placementX" : 288.588, + "placementY" : 455.41, + "placementWidth" : 252.368, + "placementHeight" : 111.18, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 252.368, + "contentHeight" : 111.18, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 19.6, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "entityName" : "MarkerCap_0", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]", + "entityName" : "RoleLayer_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]/Role_0[0]", + "entityName" : "Role_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/RoleLayer_0[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 553.99, + "placementX" : 304.588, + "placementY" : 553.99, + "placementWidth" : 110.292, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 110.292, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]/MarkerRing_0[1]", + "entityName" : "MarkerRing_0", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/MarkerCap_0[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 560.39, + "placementX" : 285.488, + "placementY" : 560.39, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/Employer_0[1]", + "entityName" : "Employer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 542.71, + "placementX" : 304.588, + "placementY" : 542.71, + "placementWidth" : 137.903, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 137.903, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]/Highlights_0[2]", + "entityName" : "Highlights_0", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_0Stack[1]/ExperienceEntry_0Layer[0]/ExperienceEntry_0[0]/EntryBody_0[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 475.01, + "placementX" : 304.588, + "placementY" : 475.01, + "placementWidth" : 236.368, + "placementHeight" : 60.7, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 236.368, + "contentHeight" : 60.7, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]", + "entityName" : "ExperienceEntry_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 2, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]", + "entityName" : "ExperienceEntry_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "entityName" : "ExperienceEntry_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 355.01, + "placementX" : 214.01, + "placementY" : 355.01, + "placementWidth" : 352.466, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/Period_1[0]", + "entityName" : "Period_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 446.05, + "placementX" : 214.01, + "placementY" : 446.05, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "entityName" : "EntryBody_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 355.01, + "placementX" : 288.588, + "placementY" : 355.01, + "placementWidth" : 236.671, + "placementHeight" : 100.4, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 236.671, + "contentHeight" : 100.4, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 19.6, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "entityName" : "MarkerCap_1", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]", + "entityName" : "RoleLayer_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]/Role_1[0]", + "entityName" : "Role_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/RoleLayer_1[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 442.81, + "placementX" : 304.588, + "placementY" : 442.81, + "placementWidth" : 77.826, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 77.826, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]/MarkerRing_1[1]", + "entityName" : "MarkerRing_1", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/MarkerCap_1[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 449.21, + "placementX" : 285.488, + "placementY" : 449.21, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/Employer_1[1]", + "entityName" : "Employer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 431.53, + "placementX" : 304.588, + "placementY" : 431.53, + "placementWidth" : 133.729, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 133.729, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]/Highlights_1[2]", + "entityName" : "Highlights_1", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_1Stack[2]/ExperienceEntry_1Layer[0]/ExperienceEntry_1[0]/EntryBody_1[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 374.61, + "placementX" : 304.588, + "placementY" : 374.61, + "placementWidth" : 220.671, + "placementHeight" : 49.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 220.671, + "contentHeight" : 49.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]", + "entityName" : "ExperienceEntry_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]", + "childIndex" : 3, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]", + "entityName" : "ExperienceEntry_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "entityName" : "ExperienceEntry_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 274.21, + "placementX" : 214.01, + "placementY" : 274.21, + "placementWidth" : 352.466, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/Period_2[0]", + "entityName" : "Period_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 345.65, + "placementX" : 214.01, + "placementY" : 345.65, + "placementWidth" : 44.71, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 44.71, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "entityName" : "EntryBody_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 288.588, + "computedY" : 274.21, + "placementX" : 288.588, + "placementY" : 274.21, + "placementWidth" : 213.35, + "placementHeight" : 80.8, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 213.35, + "contentHeight" : 80.8, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 16.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "entityName" : "MarkerCap_2", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 3.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]", + "entityName" : "RoleLayer_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]/Role_2[0]", + "entityName" : "Role_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/RoleLayer_2[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 304.588, + "computedY" : 342.41, + "placementX" : 304.588, + "placementY" : 342.41, + "placementWidth" : 92.935, + "placementHeight" : 12.6, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.935, + "contentHeight" : 12.6, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]/MarkerRing_2[1]", + "entityName" : "MarkerRing_2", + "entityKind" : "EllipseNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/MarkerCap_2[0]", + "childIndex" : 1, + "depth" : 10, + "layer" : 10, + "computedX" : 285.488, + "computedY" : 348.81, + "placementX" : 285.488, + "placementY" : 348.81, + "placementWidth" : 6.2, + "placementHeight" : 6.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 6.2, + "contentHeight" : 6.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/Employer_2[1]", + "entityName" : "Employer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 331.13, + "placementX" : 304.588, + "placementY" : 331.13, + "placementWidth" : 149.93, + "placementHeight" : 8.28, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 149.93, + "contentHeight" : 8.28, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 7.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]/Highlights_2[2]", + "entityName" : "Highlights_2", + "entityKind" : "ListNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Experience[2]/ExperienceEntry_2Stack[3]/ExperienceEntry_2Layer[0]/ExperienceEntry_2[0]/EntryBody_2[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 304.588, + "computedY" : 274.21, + "placementX" : 304.588, + "placementY" : 274.21, + "placementWidth" : 197.35, + "placementHeight" : 49.92, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 197.35, + "contentHeight" : 49.92, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "entityName" : "Credentials", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 3, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 178.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 178.46, + "margin" : { + "top" : 18.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialsRule[0]", + "entityName" : "CredentialsRule", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 255.21, + "placementX" : 214.01, + "placementY" : 255.21, + "placementWidth" : 352.466, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]", + "entityName" : "CredentialColumnsStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 22.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]", + "entityName" : "CredentialColumnsLayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "entityName" : "CredentialColumns", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 352.466, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "entityName" : "Certifications", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 163.544, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 163.544, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 21.853, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]", + "entityName" : "Heading_CERTIFICATIONS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 220.01, + "placementX" : 214.01, + "placementY" : 220.01, + "placementWidth" : 96.054, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 96.054, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]/HeadingText_CERTIFICATIONS[0]", + "entityName" : "HeadingText_CERTIFICATIONS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Heading_CERTIFICATIONS[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 223.01, + "computedY" : 220.01, + "placementX" : 223.01, + "placementY" : 220.01, + "placementWidth" : 87.054, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 87.054, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]", + "entityName" : "Certification_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 17.3, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]", + "entityName" : "Certification_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "entityName" : "Certification_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 170.39, + "placementX" : 214.01, + "placementY" : 170.39, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]", + "entityName" : "CertificationIcon_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationIcon_0[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 187.71, + "placementX" : 214.01, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "entityName" : "CertificationText_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 170.39, + "placementX" : 233.846, + "placementY" : 170.39, + "placementWidth" : 103.648, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 103.648, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationName_0[0]", + "entityName" : "CertificationName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 193.35, + "placementX" : 233.846, + "placementY" : 193.35, + "placementWidth" : 68.741, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 68.741, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationIssuer_0[1]", + "entityName" : "CertificationIssuer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 181.87, + "placementX" : 233.846, + "placementY" : 181.87, + "placementWidth" : 103.648, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 103.648, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]/CertificationYear_0[2]", + "entityName" : "CertificationYear_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_0Stack[1]/Certification_0Layer[0]/Certification_0[0]/CertificationText_0[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 170.39, + "placementX" : 233.846, + "placementY" : 170.39, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/CertificationRule_0[2]", + "entityName" : "CertificationRule_0", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 162.89, + "placementX" : 214.01, + "placementY" : 162.89, + "placementWidth" : 141.691, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]", + "entityName" : "Certification_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 3, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]", + "entityName" : "Certification_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "entityName" : "Certification_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 124.07, + "placementX" : 214.01, + "placementY" : 124.07, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]", + "entityName" : "CertificationIcon_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationIcon_1[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 141.39, + "placementX" : 214.01, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "entityName" : "CertificationText_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 124.07, + "placementX" : 233.846, + "placementY" : 124.07, + "placementWidth" : 80.527, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 80.527, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationName_1[0]", + "entityName" : "CertificationName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 147.03, + "placementX" : 233.846, + "placementY" : 147.03, + "placementWidth" : 80.527, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 80.527, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationIssuer_1[1]", + "entityName" : "CertificationIssuer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 135.55, + "placementX" : 233.846, + "placementY" : 135.55, + "placementWidth" : 29.72, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 29.72, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]/CertificationYear_1[2]", + "entityName" : "CertificationYear_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_1Stack[3]/Certification_1Layer[0]/Certification_1[0]/CertificationText_1[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 124.07, + "placementX" : 233.846, + "placementY" : 124.07, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/CertificationRule_1[4]", + "entityName" : "CertificationRule_1", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 4, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 116.57, + "placementX" : 214.01, + "placementY" : 116.57, + "placementWidth" : 141.691, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]", + "entityName" : "Certification_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]", + "childIndex" : 5, + "depth" : 9, + "layer" : 9, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]", + "entityName" : "Certification_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "entityName" : "Certification_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 214.01, + "computedY" : 77.75, + "placementX" : 214.01, + "placementY" : 77.75, + "placementWidth" : 141.691, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 141.691, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]", + "entityName" : "CertificationIcon_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationIcon_2[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 214.01, + "computedY" : 95.07, + "placementX" : 214.01, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "entityName" : "CertificationText_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 233.846, + "computedY" : 77.75, + "placementX" : 233.846, + "placementY" : 77.75, + "placementWidth" : 78.008, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 78.008, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationName_2[0]", + "entityName" : "CertificationName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 100.71, + "placementX" : 233.846, + "placementY" : 100.71, + "placementWidth" : 78.008, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 78.008, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationIssuer_2[1]", + "entityName" : "CertificationIssuer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 89.23, + "placementX" : 233.846, + "placementY" : 89.23, + "placementWidth" : 69.481, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.481, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]/CertificationYear_2[2]", + "entityName" : "CertificationYear_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Certifications[0]/Certification_2Stack[5]/Certification_2Layer[0]/Certification_2[0]/CertificationText_2[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 233.846, + "computedY" : 77.75, + "placementX" : 233.846, + "placementY" : 77.75, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "entityName" : "Achievements", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]", + "childIndex" : 1, + "depth" : 8, + "layer" : 8, + "computedX" : 377.554, + "computedY" : 77.75, + "placementX" : 377.554, + "placementY" : 77.75, + "placementWidth" : 188.922, + "placementHeight" : 155.46, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 188.922, + "contentHeight" : 155.46, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 21.853 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]", + "entityName" : "Heading_ACHIEVEMENTS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 220.01, + "placementX" : 399.407, + "placementY" : 220.01, + "placementWidth" : 92.897, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 92.897, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]/HeadingText_ACHIEVEMENTS[0]", + "entityName" : "HeadingText_ACHIEVEMENTS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Heading_ACHIEVEMENTS[0]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 408.407, + "computedY" : 220.01, + "placementX" : 408.407, + "placementY" : 220.01, + "placementWidth" : 83.897, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 83.897, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]", + "entityName" : "Achievement_0Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 17.3, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]", + "entityName" : "Achievement_0Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "entityName" : "Achievement_0", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 170.39, + "placementX" : 399.407, + "placementY" : 170.39, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]", + "entityName" : "AchievementIcon_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementIcon_0[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 187.71, + "placementX" : 399.407, + "placementY" : 187.71, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "entityName" : "AchievementText_0", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 170.39, + "placementX" : 422.796, + "placementY" : 170.39, + "placementWidth" : 101.244, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 101.244, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementName_0[0]", + "entityName" : "AchievementName_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 193.35, + "placementX" : 422.796, + "placementY" : 193.35, + "placementWidth" : 101.244, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 101.244, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementIssuer_0[1]", + "entityName" : "AchievementIssuer_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 181.87, + "placementX" : 422.796, + "placementY" : 181.87, + "placementWidth" : 69.986, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.986, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]/AchievementYear_0[2]", + "entityName" : "AchievementYear_0", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_0Stack[1]/Achievement_0Layer[0]/Achievement_0[0]/AchievementText_0[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 170.39, + "placementX" : 422.796, + "placementY" : 170.39, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/AchievementRule_0[2]", + "entityName" : "AchievementRule_0", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 2, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 162.89, + "placementX" : 399.407, + "placementY" : 162.89, + "placementWidth" : 167.069, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]", + "entityName" : "Achievement_1Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 3, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]", + "entityName" : "Achievement_1Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "entityName" : "Achievement_1", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 124.07, + "placementX" : 399.407, + "placementY" : 124.07, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]", + "entityName" : "AchievementIcon_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementIcon_1[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 141.39, + "placementX" : 399.407, + "placementY" : 141.39, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "entityName" : "AchievementText_1", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 124.07, + "placementX" : 422.796, + "placementY" : 124.07, + "placementWidth" : 108.475, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 108.475, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementName_1[0]", + "entityName" : "AchievementName_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 147.03, + "placementX" : 422.796, + "placementY" : 147.03, + "placementWidth" : 108.475, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 108.475, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementIssuer_1[1]", + "entityName" : "AchievementIssuer_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 135.55, + "placementX" : 422.796, + "placementY" : 135.55, + "placementWidth" : 97.17, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 97.17, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]/AchievementYear_1[2]", + "entityName" : "AchievementYear_1", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_1Stack[3]/Achievement_1Layer[0]/Achievement_1[0]/AchievementText_1[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 124.07, + "placementX" : 422.796, + "placementY" : 124.07, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/AchievementRule_1[4]", + "entityName" : "AchievementRule_1", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 4, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 116.57, + "placementX" : 399.407, + "placementY" : 116.57, + "placementWidth" : 167.069, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 1.0, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]", + "entityName" : "Achievement_2Stack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]", + "childIndex" : 5, + "depth" : 9, + "layer" : 9, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 6.5, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]", + "entityName" : "Achievement_2Layer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]", + "childIndex" : 0, + "depth" : 10, + "layer" : 10, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "entityName" : "Achievement_2", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]", + "childIndex" : 0, + "depth" : 11, + "layer" : 11, + "computedX" : 399.407, + "computedY" : 77.75, + "placementX" : 399.407, + "placementY" : 77.75, + "placementWidth" : 167.069, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 167.069, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]", + "entityName" : "AchievementIcon_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "childIndex" : 0, + "depth" : 12, + "layer" : 12, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]", + "entityName" : "SvgIcon", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]/SvgLayer0[0]", + "entityName" : "SvgLayer0", + "entityKind" : "Path", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementIcon_2[0]/SvgIcon[0]", + "childIndex" : 0, + "depth" : 14, + "layer" : 14, + "computedX" : 399.407, + "computedY" : 95.07, + "placementX" : 399.407, + "placementY" : 95.07, + "placementWidth" : 15.0, + "placementHeight" : 15.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 15.0, + "contentHeight" : 15.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "entityName" : "AchievementText_2", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]", + "childIndex" : 1, + "depth" : 12, + "layer" : 12, + "computedX" : 422.796, + "computedY" : 77.75, + "placementX" : 422.796, + "placementY" : 77.75, + "placementWidth" : 69.441, + "placementHeight" : 32.32, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.441, + "contentHeight" : 32.32, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementName_2[0]", + "entityName" : "AchievementName_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 0, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 100.71, + "placementX" : 422.796, + "placementY" : 100.71, + "placementWidth" : 51.199, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 51.199, + "contentHeight" : 9.36, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementIssuer_2[1]", + "entityName" : "AchievementIssuer_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 1, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 89.23, + "placementX" : 422.796, + "placementY" : 89.23, + "placementWidth" : 69.441, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 69.441, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 2.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]/AchievementYear_2[2]", + "entityName" : "AchievementYear_2", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/Credentials[3]/CredentialColumnsStack[1]/CredentialColumnsLayer[0]/CredentialColumns[0]/Achievements[1]/Achievement_2Stack[5]/Achievement_2Layer[0]/Achievement_2[0]/AchievementText_2[1]", + "childIndex" : 2, + "depth" : 13, + "layer" : 13, + "computedX" : 422.796, + "computedY" : 77.75, + "placementX" : 422.796, + "placementY" : 77.75, + "placementWidth" : 18.328, + "placementHeight" : 9.48, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 18.328, + "contentHeight" : 9.48, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "entityName" : "TechnicalTools", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]", + "childIndex" : 4, + "depth" : 4, + "layer" : 4, + "computedX" : 214.01, + "computedY" : 29.49, + "placementX" : 214.01, + "placementY" : 29.49, + "placementWidth" : 352.466, + "placementHeight" : 34.56, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 34.56, + "margin" : { + "top" : 13.7, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]", + "entityName" : "Heading_TECHNICALTOOLS", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "childIndex" : 0, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 50.85, + "placementX" : 214.01, + "placementY" : 50.85, + "placementWidth" : 352.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]", + "entityName" : "HeadingRow_TECHNICALTOOLSStack", + "entityKind" : "LayerStackNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]", + "childIndex" : 0, + "depth" : 6, + "layer" : 6, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]", + "entityName" : "HeadingRow_TECHNICALTOOLSLayer", + "entityKind" : "SectionNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]", + "childIndex" : 0, + "depth" : 7, + "layer" : 7, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "entityName" : "HeadingRow_TECHNICALTOOLS", + "entityKind" : "RowNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]", + "childIndex" : 0, + "depth" : 8, + "layer" : 8, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 343.466, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 343.466, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]/HeadingText_TECHNICALTOOLS[0]", + "entityName" : "HeadingText_TECHNICALTOOLS", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "childIndex" : 0, + "depth" : 9, + "layer" : 9, + "computedX" : 223.01, + "computedY" : 50.85, + "placementX" : 223.01, + "placementY" : 50.85, + "placementWidth" : 99.11, + "placementHeight" : 13.2, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 99.11, + "contentHeight" : 13.2, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]/HeadingRule_TECHNICALTOOLS[1]", + "entityName" : "HeadingRule_TECHNICALTOOLS", + "entityKind" : "LineNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/Heading_TECHNICALTOOLS[0]/HeadingRow_TECHNICALTOOLSStack[0]/HeadingRow_TECHNICALTOOLSLayer[0]/HeadingRow_TECHNICALTOOLS[0]", + "childIndex" : 1, + "depth" : 9, + "layer" : 9, + "computedX" : 331.12, + "computedY" : 56.95, + "placementX" : 331.12, + "placementY" : 56.95, + "placementWidth" : 226.356, + "placementHeight" : 1.0, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 226.356, + "contentHeight" : 1.0, + "margin" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 9.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + }, { + "path" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]/ToolsStrip[1]", + "entityName" : "ToolsStrip", + "entityKind" : "ParagraphNode", + "parentPath" : "CharcoalGoldCv[0]/Body[0]/MainColumn[1]/TechnicalTools[4]", + "childIndex" : 1, + "depth" : 5, + "layer" : 5, + "computedX" : 214.01, + "computedY" : 29.49, + "placementX" : 214.01, + "placementY" : 29.49, + "placementWidth" : 352.466, + "placementHeight" : 9.36, + "startPage" : 0, + "endPage" : 0, + "contentWidth" : 352.466, + "contentHeight" : 9.36, + "margin" : { + "top" : 12.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + }, + "padding" : { + "top" : 0.0, + "right" : 0.0, + "bottom" : 0.0, + "left" : 0.0 + } + } ] +} diff --git a/qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png b/qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png new file mode 100644 index 000000000..cfdb34609 Binary files /dev/null and b/qa/src/test/resources/visual-baselines/cv-v2-layered/charcoal_gold-page-0.png differ diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java new file mode 100644 index 000000000..54938f986 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGold.java @@ -0,0 +1,235 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.api.PageBackgroundFill; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvDocument; +import com.demcha.compose.document.templates.cv.data.CvSection; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.List; +import java.util.Objects; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PAPER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_WEIGHT; + +/** + * Charcoal Gold — a one-page CV in two columns: a charcoal sidebar carrying + * a ringed photograph, the contact channels, rated skills, languages and + * degrees, beside a paper column carrying a two-tone name, the summary, the + * roles held on a dated rail, a pair of credential columns and a closing + * strip of tools. + * + *

The preset paints both columns as page backgrounds, so each reaches the + * foot of the sheet whatever it holds. It leaves the page size to the + * caller, unlike its ported siblings: the design is drawn on A4 and the + * geometry follows the page's own width, so a different page rescales rather + * than breaks.

+ * + *

One page, and what happens past it

+ * + *

The two columns are a single row, and a row is atomic — it cannot be + * split — so a CV longer than the sheet does not flow onto a second page: + * composing it raises {@code AtomicNodeTooLargeException}, naming the node + * and the height it needed. It draws no cap of its own, because a CV that + * quietly loses a job is worse than one that refuses to compose. + * {@link TimelineMinimal} is the preset in this package that splits its own + * columns across pages.

+ * + *

How a document reaches its berth

+ * + *

The columns are fixed, so the preset assigns each section a berth by + * title rather than reading {@link + * com.demcha.compose.document.templates.cv.data.Slot}. It has seven:

+ * + *
    + *
  • skills, a {@link SkillsSection}; languages, a {@link RowsSection}; + * and education, an {@link EntriesSection} — in the sidebar;
  • + *
  • the summary, a {@link ParagraphSection} of one paragraph per line, + * and experience, an {@link EntriesSection} — in the main column;
  • + *
  • certifications and achievements, {@link EntriesSection}s, as the + * credential pair;
  • + *
  • the tools, a {@link ParagraphSection} of one tool per line, as the + * closing strip.
  • + *
+ * + *

A section whose title matches no berth is not drawn, a berth with no + * section takes its heading and its divider with it, and a berth is filled + * by the first section that names it. Languages are rows rather than + * levelled skills because this design writes the level out — "Native", + * "B2 – Upper Intermediate" — which a number could not carry back; their + * {@code RowStyle} is not read.

+ * + *

The name, the photograph and the marks

+ * + *

The masthead changes colour halfway through the name: the given name in + * ink, the family name larger and in gold. It reads them from + * {@code CvName}, which is why this preset wants a structured name — nothing + * else could tell it where to change.

+ * + *

The photograph comes from {@code CvIdentity.portrait()} and is drawn to + * fill its disc, so a picture that is not square is cut rather than + * squeezed. An identity without one simply starts at the contact block.

+ * + *

Each credential takes the mark its entry names in + * {@code CvEntry.icon()}, from this preset's own vocabulary — + * {@code certificate}, {@code trophy}, {@code growth}, {@code star} — and an + * unknown token is reported as a data error naming the set. An entry with no + * token is drawn without a mark. Every title the preset draws — a role, a + * credential — becomes a link when its entry carries + * {@code CvEntry.link()}.

+ * + *

A skill's rating is drawn as five dots, of which its level fills the + * nearest whole number; a skill the document leaves unlevelled draws no + * rating rather than five empty dots. The phone, the email and each link are + * reachable from the PDF, with the {@code tel:} and {@code mailto:} targets + * built from the values.

+ * + *

Fonts

+ * + *

The sheet is set in Lato. The templates artifact does not carry it — + * register it on the session, or the engine substitutes and the measured + * geometry here no longer matches the type sitting in it.

+ * + *

Usage:

+ *
{@code
+ * DocumentTemplate template = CharcoalGold.create();
+ * template.compose(session, cv);
+ * }
+ */ +public final class CharcoalGold { + + /** Stable identifier of this preset. */ + public static final String ID = "charcoal-gold"; + + /** Human-readable name of this preset. */ + public static final String DISPLAY_NAME = "Charcoal Gold"; + + /** + * The margin this preset expects: none. Both columns run to the paper + * edge and each carries its own padding. + */ + public static final double RECOMMENDED_MARGIN = 0.0; + + private static final List SUMMARY_KEYS = + List.of("summary", "profile", "about"); + private static final List EXPERIENCE_KEYS = + List.of("experience", "employment", "work history", "career"); + private static final List EDUCATION_KEYS = + List.of("education", "qualifications"); + private static final List TOOL_KEYS = + List.of("tools", "stack", "software"); + private static final List SKILL_KEYS = + List.of("skills", "expertise", "competencies"); + private static final List LANGUAGE_KEYS = + List.of("languages", "language"); + private static final List CERTIFICATION_KEYS = + List.of("certifications", "certification", "licences", "licenses"); + private static final List ACHIEVEMENT_KEYS = + List.of("achievements", "achievement", "awards"); + + private CharcoalGold() { + } + + /** + * Creates the template. + * + * @return a template composing a {@link CvDocument} + */ + public static DocumentTemplate create() { + return new Template(); + } + + private record Template() implements DocumentTemplate { + + @Override + public String id() { + return ID; + } + + @Override + public String displayName() { + return DISPLAY_NAME; + } + + @Override + public void compose(DocumentSession document, CvDocument doc) { + Objects.requireNonNull(document, "document"); + Objects.requireNonNull(doc, "doc"); + List sections = doc.sections(); + + // Both fills are page backgrounds: a section is only as tall as + // what it holds, and each column has to reach the foot of the + // sheet whatever the other one carries. + document.pageBackgrounds(List.of( + PageBackgroundFill.leftColumn(SIDEBAR_WEIGHT, SIDEBAR), + PageBackgroundFill.rightColumn(MAIN_WEIGHT, PAPER))); + + SkillsSection skills = berth(sections, SkillsSection.class, SKILL_KEYS); + RowsSection languages = berth(sections, RowsSection.class, LANGUAGE_KEYS); + EntriesSection education = berth(sections, EntriesSection.class, EDUCATION_KEYS); + // Tools first: "Technical Tools" names no other berth, but the + // summary keys are broad and a document is free to title its + // closing strip loosely. + ParagraphSection tools = berth(sections, ParagraphSection.class, TOOL_KEYS); + ParagraphSection summary = berth(sections, ParagraphSection.class, SUMMARY_KEYS); + EntriesSection experience = berth(sections, EntriesSection.class, EXPERIENCE_KEYS); + EntriesSection certifications = + berth(sections, EntriesSection.class, CERTIFICATION_KEYS); + EntriesSection achievements = + berth(sections, EntriesSection.class, ACHIEVEMENT_KEYS); + + boolean hasCredentials = SectionLookup.hasContent(certifications) + || SectionLookup.hasContent(achievements); + boolean hasTools = SectionLookup.hasContent(tools); + + document.pageFlow(page -> page + .name("CharcoalGoldCv") + .spacing(0) + .addRow("Body", row -> { + row.name("Body"); + row.spacing(0); + row.weights(SIDEBAR_WEIGHT, MAIN_WEIGHT); + row.addSection("Sidebar", side -> + CharcoalGoldAside.compose(side, doc.identity(), + skills, languages, education)); + row.addSection("MainColumn", main -> { + CharcoalGoldMain.compose(main, doc.identity(), summary, experience); + if (hasCredentials) { + CharcoalGoldCredentials.renderCredentials(main, + certifications, achievements); + } + if (hasTools) { + CharcoalGoldCredentials.renderTools(main, tools); + } + }); + })); + } + + /** + * The first section of the wanted shape whose title names this berth, + * or {@code null} when the document fills no such berth. + */ + private static T berth(List sections, + Class type, + List keys) { + for (CvSection section : sections) { + if (!type.isInstance(section)) { + continue; + } + for (String key : keys) { + if (SectionLookup.titleContains(section.title(), key)) { + return type.cast(section); + } + } + } + return null; + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java new file mode 100644 index 000000000..b2d71ce73 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldAside.java @@ -0,0 +1,386 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.ImageBuilder; +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.dsl.ShapeContainerBuilder; +import com.demcha.compose.document.image.DocumentImageData; +import com.demcha.compose.document.image.DocumentImageFitMode; +import com.demcha.compose.document.node.DocumentLinkOptions; +import com.demcha.compose.document.node.DocumentNode; +import com.demcha.compose.document.node.HorizontalAlign; +import com.demcha.compose.document.node.InlineImageAlignment; +import com.demcha.compose.document.node.RowVerticalAlign; +import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.ClipPolicy; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.style.DocumentRowColumn; +import com.demcha.compose.document.style.DocumentStroke; +import com.demcha.compose.document.templates.core.identity.Link; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.CvRow; +import com.demcha.compose.document.templates.cv.data.CvSkill; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.RowsSection; +import com.demcha.compose.document.templates.cv.data.SkillGroup; +import com.demcha.compose.document.templates.cv.data.SkillsSection; + +import java.util.ArrayList; +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BLOCK_TO_DIVIDER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BODY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CONTACT_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DIVIDER_TO_HEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EDUCATION_LINE_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.LANGUAGE_NAME_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.LANGUAGE_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_RING_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PHOTO_TO_CONTACT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RATING_DOT_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RATING_EMPTY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_PAD; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_PAD_TOP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_BULLET_COLUMN; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_BULLET_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_NAME_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SKILL_PITCH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.gap; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.inlineGap; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.sidebarHeading; + +/** + * The charcoal left column: the ringed photograph, the contact channels + * behind their marks, the rated skills, the languages and the degrees, with + * a hairline between each block. + */ +final class CharcoalGoldAside { + + /** + * The contact heading. It is not read from the document because the + * channels are not a section — they come off the identity, which carries + * no title of its own. + */ + static final String CONTACT_HEADING = "CONTACT"; + + /** How many dots a skill rating is drawn out of. */ + static final int RATING_SCALE = 5; + + private CharcoalGoldAside() { + } + + static void compose(SectionBuilder side, + CvIdentity identity, + SkillsSection skills, + RowsSection languages, + EntriesSection education) { + side.name("Sidebar"); + side.spacing(0); + // No bottom padding: the sidebar's fill is a page background that + // already reaches the paper edge, so padding here would only shorten + // the column. + side.padding((float) SIDEBAR_PAD_TOP, (float) SIDEBAR_PAD, 0f, (float) SIDEBAR_PAD); + + identity.portrait().ifPresent(photo -> renderPhoto(side, photo)); + renderContact(side, identity, identity.portrait().isPresent()); + if (SectionLookup.hasContent(skills)) { + divider(side, "AfterContact"); + renderSkills(side, skills); + } + if (SectionLookup.hasContent(languages)) { + divider(side, "AfterSkills"); + renderLanguages(side, languages); + } + if (SectionLookup.hasContent(education)) { + divider(side, "AfterLanguages"); + renderEducation(side, education); + } + } + + private static void divider(SectionBuilder side, String name) { + side.addLine(line -> line + .name("Divider_" + name) + .fill() + .thickness(RULE_THICKNESS) + .color(SIDEBAR_RULE) + .margin(new DocumentInsets(BLOCK_TO_DIVIDER, 0, 0, 0))); + } + + // -- photograph ------------------------------------------------------ + + /** + * The photograph, clipped to a disc inside a pale ring. It is drawn with + * {@code COVER}, so a picture that is not square fills the circle and is + * cut rather than squeezed. + */ + private static void renderPhoto(SectionBuilder side, DocumentImageData photo) { + DocumentNode portrait = new ImageBuilder() + .name("PortraitImage") + .source(photo) + .size(PHOTO_DIAMETER, PHOTO_DIAMETER) + .fitMode(DocumentImageFitMode.COVER) + .build(); + DocumentNode circle = new ShapeContainerBuilder() + .name("ProfilePhoto") + .circle(PHOTO_DIAMETER) + .clipPolicy(ClipPolicy.CLIP_PATH) + .fillColor(SIDEBAR) + .stroke(DocumentStroke.of(RULE, PHOTO_RING_WIDTH)) + .center(portrait) + .build(); + side.addAligned(HorizontalAlign.CENTER, circle); + } + + // -- contact --------------------------------------------------------- + + /** + * The contact channels, in the order the design sets them: phone, email, + * address, then whatever links the identity carries. The phone and the + * email carry {@code tel:} and {@code mailto:} targets built from the + * values, and each link its own url. + */ + private static void renderContact(SectionBuilder side, CvIdentity identity, + boolean afterPhoto) { + side.addSection("Contact", block -> { + block.spacing(0); + block.margin(afterPhoto ? (float) PHOTO_TO_CONTACT : 0f, 0f, 0f, 0f); + sidebarHeading(block, CONTACT_HEADING); + List channels = channels(identity); + for (int i = 0; i < channels.size(); i++) { + Channel channel = channels.get(i); + boolean first = i == 0; + int index = i; + block.addParagraph(p -> { + p.name("Contact_" + index); + p.inlineSvgIcon(CharcoalGoldIcons.icon(channel.token()), + CharcoalGoldIcons.CONTACT_SIZE, InlineImageAlignment.CENTER); + inlineGap(p, textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + if (channel.href() == null) { + p.inlineText(channel.value(), textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + } else { + p.inlineText(channel.value(), textStyle(DETAIL_SIZE, SIDEBAR_INK, false), + new DocumentLinkOptions(channel.href())); + } + p.margin(first ? (float) HEADING_TO_BODY : 0f, 0f, + (float) gap(CONTACT_PITCH, DETAIL_SIZE), 0f); + }); + } + }); + } + + private static List channels(CvIdentity identity) { + List channels = new ArrayList<>(); + String phone = identity.contact().phone(); + channels.add(new Channel(CharcoalGoldIcons.PHONE, phone, telUri(phone))); + String email = identity.contact().email(); + channels.add(new Channel(CharcoalGoldIcons.EMAIL, email, "mailto:" + email)); + channels.add(new Channel(CharcoalGoldIcons.LOCATION, + identity.contact().address(), null)); + for (Link link : identity.links()) { + channels.add(new Channel(linkToken(link), link.label(), link.url())); + } + return channels; + } + + /** + * The dial target for a phone number: its digits, keeping a leading + * {@code +} so an international number stays international. + */ + private static String telUri(String phone) { + String digits = phone.replaceAll("[^0-9]", ""); + return digits.isEmpty() + ? null + : "tel:" + (phone.trim().startsWith("+") ? "+" : "") + digits; + } + + /** + * The mark for a link: the network's own when it names one, the globe + * otherwise. + */ + private static String linkToken(Link link) { + String haystack = SectionLookup.normalize(link.label() + " " + link.url()); + return haystack.contains("linkedin") + ? CharcoalGoldIcons.LINKEDIN + : CharcoalGoldIcons.WEBSITE; + } + + private record Channel(String token, String value, String href) { + } + + // -- skills ---------------------------------------------------------- + + /** + * Skill rows: a gold bullet, the name, and a rating drawn as five dots + * of which the level fills the nearest whole number. + * + *

A skill the document leaves unlevelled draws no rating at all, + * rather than five empty dots that read as a score of zero.

+ */ + private static void renderSkills(SectionBuilder side, SkillsSection skills) { + side.addSection("Skills", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, skills.title()); + List items = flatten(skills); + for (int i = 0; i < items.size(); i++) { + CvSkill skill = items.get(i); + boolean first = i == 0; + int index = i; + layeredRow(block, "Skill_" + index, + first ? HEADING_TO_BODY : 0.0, + gap(SKILL_PITCH, DETAIL_SIZE), + row -> { + row.verticalAlign(RowVerticalAlign.CENTER); + row.columns( + DocumentRowColumn.fixed(SKILL_BULLET_COLUMN), + DocumentRowColumn.weight(SKILL_NAME_WEIGHT), + DocumentRowColumn.weight(1.0 - SKILL_NAME_WEIGHT)); + row.addParagraph(p -> p + .name("SkillBullet_" + index) + .align(TextAlign.CENTER) + // Styled even though it holds no text: a + // paragraph takes its line box from its + // type whether or not a glyph uses it, and + // the default size would set the row's + // pitch instead of this one. + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false)) + .dot(SKILL_BULLET_DIAMETER, ACCENT)); + row.addParagraph(p -> p + .name("SkillName_" + index) + .text(skill.name()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false))); + row.addParagraph(p -> renderRating(p, index, skill)); + }); + } + }); + } + + private static void renderRating(ParagraphBuilder p, int index, CvSkill skill) { + p.name("SkillRating_" + index); + p.align(TextAlign.RIGHT); + if (skill.level().isEmpty()) { + return; + } + long filled = Math.round(Math.max(0.0, Math.min(1.0, skill.level().getAsDouble())) + * RATING_SCALE); + for (int d = 0; d < RATING_SCALE; d++) { + p.dot(RATING_DOT_DIAMETER, d < filled ? ACCENT : RATING_EMPTY); + if (d < RATING_SCALE - 1) { + p.inlineText(" ", textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + } + } + } + + /** + * The section's skills as one list. This design sets no group headings, + * so a document that groups its skills gets them in the order the groups + * were declared. + */ + private static List flatten(SkillsSection section) { + List out = new ArrayList<>(); + for (SkillGroup group : section.groups()) { + out.addAll(group.entries()); + } + return out; + } + + // -- languages ------------------------------------------------------- + + /** + * Language rows: the name and the level in two columns, so the levels + * line up whatever the names measure. + * + *

They are {@link CvRow}s rather than levelled skills because this + * design writes the level out — "Native", "B2 – Upper Intermediate" — + * which a number could not carry back. The {@code RowStyle} is not + * read.

+ */ + private static void renderLanguages(SectionBuilder side, RowsSection languages) { + side.addSection("Languages", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, languages.title()); + List items = languages.rows(); + for (int i = 0; i < items.size(); i++) { + CvRow language = items.get(i); + boolean first = i == 0; + int index = i; + layeredRow(block, "Language_" + index, + first ? HEADING_TO_BODY : 0.0, + gap(LANGUAGE_PITCH, BODY_SIZE), + row -> { + row.weights(LANGUAGE_NAME_WEIGHT, 1.0 - LANGUAGE_NAME_WEIGHT); + row.addParagraph(p -> p + .name("LanguageName_" + index) + .text(language.label()) + .textStyle(textStyle(BODY_SIZE, SIDEBAR_INK, false))); + row.addParagraph(p -> p + .name("LanguageLevel_" + index) + .text(language.body()) + .textStyle(textStyle(BODY_SIZE, SIDEBAR_INK, false))); + }); + } + }); + } + + // -- education ------------------------------------------------------- + + /** + * Each degree as three lines: the qualification behind a gold dot, then + * the institution and the years indented under it. + */ + private static void renderEducation(SectionBuilder side, EntriesSection education) { + side.addSection("Education", block -> { + block.spacing(0); + block.margin((float) DIVIDER_TO_HEADING, 0f, 0f, 0f); + sidebarHeading(block, education.title()); + List items = education.entries(); + for (int i = 0; i < items.size(); i++) { + CvEntry entry = items.get(i); + boolean first = i == 0; + int index = i; + block.addSection("EducationEntry_" + index, e -> { + e.spacing(0); + e.margin(first ? (float) HEADING_TO_BODY : (float) EDUCATION_ENTRY_GAP, + 0f, 0f, 0f); + e.addParagraph(p -> { + p.name("Degree_" + index); + p.dot(RATING_DOT_DIAMETER, ACCENT); + inlineGap(p, textStyle(DETAIL_SIZE, SIDEBAR_INK, false)); + p.inlineText(entry.title(), textStyle(DETAIL_SIZE, SIDEBAR_INK, true)); + p.margin(0f, 0f, (float) gap(EDUCATION_LINE_PITCH, DETAIL_SIZE), 0f); + }); + e.addSection("EducationDetail_" + index, d -> { + d.spacing(0); + d.padding(0f, 0f, 0f, (float) EDUCATION_INDENT); + d.addParagraph(p -> p + .name("Institution_" + index) + .text(entry.subtitle()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false)) + .margin(0f, 0f, + (float) gap(EDUCATION_LINE_PITCH, DETAIL_SIZE), 0f)); + d.addParagraph(p -> p + .name("Period_" + index) + .text(entry.date()) + .textStyle(textStyle(DETAIL_SIZE, SIDEBAR_INK, false))); + }); + }); + } + }); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java new file mode 100644 index 000000000..5331019bf --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldCredentials.java @@ -0,0 +1,170 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; + +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIALS_TO_TOOLS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_GUTTER_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_HALF_GUTTER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_ICON_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_LEFT_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_LINE_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.CREDENTIAL_RIGHT_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRIES_TO_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_TO_BODY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_TO_CREDENTIALS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SMALL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.TOOL_SEPARATOR; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.mainHeading; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.plainHeading; + +/** + * The two closing blocks: the credentials in a pair of columns divided by a + * hairline, and the tools strip beneath them. + */ +final class CharcoalGoldCredentials { + + private CharcoalGoldCredentials() { + } + + /** + * The credential pair. + * + *

Two cells, not three: the gutter is split down the middle and half + * given to each column, so the divider can be the right-hand column's own + * left border and take its height from that column's content. A third + * cell holding a line would need a height, and a height here could only + * be computed against today's text.

+ */ + static void renderCredentials(SectionBuilder main, + EntriesSection certifications, + EntriesSection achievements) { + boolean left = SectionLookup.hasContent(certifications); + boolean right = SectionLookup.hasContent(achievements); + main.addSection("Credentials", block -> { + block.spacing(0); + block.margin((float) ENTRIES_TO_RULE, 0f, 0f, 0f); + block.addLine(line -> line + .name("CredentialsRule") + .fill() + .thickness(RULE_THICKNESS) + .color(RULE)); + layeredRow(block, "CredentialColumns", RULE_TO_CREDENTIALS, 0.0, row -> { + row.spacing(0); + row.weights( + CREDENTIAL_LEFT_WEIGHT + CREDENTIAL_GUTTER_WEIGHT / 2.0, + CREDENTIAL_RIGHT_WEIGHT + CREDENTIAL_GUTTER_WEIGHT / 2.0); + row.addSection("Certifications", column -> { + column.padding(0f, (float) CREDENTIAL_HALF_GUTTER, 0f, 0f); + if (left) { + renderColumn(column, "Certification", certifications); + } + }); + row.addSection("Achievements", column -> { + // The divider is this column's left border, so it stops + // where the column's own content does. + column.accentLeft(RULE, RULE_THICKNESS); + column.padding(0f, 0f, 0f, (float) CREDENTIAL_HALF_GUTTER); + if (right) { + renderColumn(column, "Achievement", achievements); + } + }); + }); + }); + } + + /** One credential column: a plain heading, then a marked entry per row. */ + private static void renderColumn(SectionBuilder column, String prefix, + EntriesSection credentials) { + column.spacing(0); + column.keepTogether(); + plainHeading(column, credentials.title()); + List items = credentials.entries(); + for (int i = 0; i < items.size(); i++) { + CvEntry item = items.get(i); + boolean first = i == 0; + boolean last = i == items.size() - 1; + int index = i; + layeredRow(column, prefix + "_" + index, + first ? CREDENTIAL_HEADING_TO_BODY : CREDENTIAL_ENTRY_GAP, 0.0, + row -> { + row.spacing(0); + row.weights(CREDENTIAL_ICON_WEIGHT, 1.0 - CREDENTIAL_ICON_WEIGHT); + row.addSection(prefix + "Icon_" + index, cell -> { + cell.spacing(0); + if (!item.icon().isBlank()) { + cell.addSvgIcon(CharcoalGoldIcons.icon(item.icon()), + CharcoalGoldIcons.CREDENTIAL_SIZE); + } + }); + row.addSection(prefix + "Text_" + index, text -> { + text.spacing(0); + text.addParagraph(p -> { + p.name(prefix + "Name_" + index) + .textStyle(textStyle(DETAIL_SIZE, INK, true)); + CharcoalGoldText.title(p, item, + textStyle(DETAIL_SIZE, INK, true)); + p.margin(0f, 0f, (float) CREDENTIAL_LINE_GAP, 0f); + }); + text.addParagraph(p -> p + .name(prefix + "Issuer_" + index) + .text(item.subtitle()) + .textStyle(textStyle(SMALL_SIZE, INK, false)) + .margin(0f, 0f, (float) CREDENTIAL_LINE_GAP, 0f)); + text.addParagraph(p -> p + .name(prefix + "Year_" + index) + .text(item.date()) + .textStyle(textStyle(SMALL_SIZE, INK, false))); + }); + }); + if (!last) { + column.addLine(line -> line + .name(prefix + "Rule_" + index) + .fill() + .thickness(RULE_THICKNESS) + .color(RULE) + .margin(new DocumentInsets(CREDENTIAL_ENTRY_GAP, 0, 0, 0))); + } + } + } + + /** + * The closing strip: one line of tools, centred, with a pale pipe + * between neighbours. + */ + static void renderTools(SectionBuilder main, ParagraphSection tools) { + List items = CharcoalGoldText.lines(tools.body()); + main.addSection("TechnicalTools", block -> { + block.spacing(0); + block.margin((float) CREDENTIALS_TO_TOOLS, 0f, 0f, 0f); + block.keepWithNext(); + mainHeading(block, tools.title()); + block.addParagraph(p -> { + p.name("ToolsStrip"); + p.align(TextAlign.CENTER); + p.margin((float) HEADING_TO_BODY, 0f, 0f, 0f); + for (int i = 0; i < items.size(); i++) { + if (i > 0) { + p.inlineText(TOOL_SEPARATOR, textStyle(DETAIL_SIZE, RULE, false)); + } + p.inlineText(items.get(i), textStyle(DETAIL_SIZE, INK, false)); + } + }); + }); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java new file mode 100644 index 000000000..40627e8cf --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldIcons.java @@ -0,0 +1,89 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.svg.SvgIcon; + +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Classpath loader for the Charcoal Gold CV marks — the five contact glyphs + * in the sidebar and the four credential marks in the closing columns. + * + *

They ship inside the templates artifact under + * {@code templates/cv/charcoal-gold/icons/} as SVG, so they scale with the + * box they are drawn into rather than being resampled. Parsed icons are + * cached per token, so a sheet that repeats a mark reads each file once per + * JVM.

+ * + *

The credential marks are the vocabulary a document names through + * {@code CvEntry.icon()}. It is scoped to this preset — another preset + * packages its own set — so {@link #ENTRY_TOKENS} is the list a document can + * choose from here.

+ */ +final class CharcoalGoldIcons { + + static final String PHONE = "phone"; + static final String EMAIL = "email"; + static final String LOCATION = "location"; + static final String WEBSITE = "website"; + static final String LINKEDIN = "linkedin"; + + private static final String ICON_ROOT = "/templates/cv/charcoal-gold/icons/"; + + /** Contact glyphs are set at the size of the text beside them. */ + static final double CONTACT_SIZE = 9.0; + + /** A credential mark stands on its own, so it is drawn larger. */ + static final double CREDENTIAL_SIZE = 15.0; + + /** The marks a document may name on a credential entry. */ + static final Set ENTRY_TOKENS = + Set.of("certificate", "trophy", "growth", "star"); + + private static final Set TOKENS = + Set.of(PHONE, EMAIL, LOCATION, WEBSITE, LINKEDIN, + "certificate", "trophy", "growth", "star"); + + private static final Map CACHE = new ConcurrentHashMap<>(); + + private CharcoalGoldIcons() { + } + + /** + * Reads one mark. + * + * @param token one of the packaged tokens + * @return the parsed icon + * @throws IllegalArgumentException when the token names no packaged mark, + * listing the ones a document may choose — an icon token is data, + * so a wrong one is a data error + */ + static SvgIcon icon(String token) { + if (!TOKENS.contains(token)) { + throw new IllegalArgumentException( + "Unknown charcoal gold CV icon token '" + token + + "'. This preset packages " + ENTRY_TOKENS.stream().sorted().toList() + + " for a credential mark."); + } + return CACHE.computeIfAbsent(token, CharcoalGoldIcons::read); + } + + private static SvgIcon read(String token) { + String resourcePath = ICON_ROOT + token + ".svg"; + try (InputStream input = CharcoalGoldIcons.class.getResourceAsStream(resourcePath)) { + if (input == null) { + throw new IllegalStateException( + "Missing charcoal gold CV icon: " + resourcePath); + } + return SvgIcon.parse(new String(input.readAllBytes(), StandardCharsets.UTF_8)); + } catch (IOException e) { + throw new UncheckedIOException( + "Failed to read charcoal gold CV icon: " + resourcePath, e); + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java new file mode 100644 index 000000000..60ca50868 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldMain.java @@ -0,0 +1,233 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.LayerAlign; +import com.demcha.compose.document.node.ListMarker; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.templates.cv.components.SectionLookup; +import com.demcha.compose.document.templates.cv.data.CvEntry; +import com.demcha.compose.document.templates.cv.data.CvIdentity; +import com.demcha.compose.document.templates.cv.data.EntriesSection; +import com.demcha.compose.document.templates.cv.data.ParagraphSection; + +import java.util.List; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.BODY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DATE_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.DETAIL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EMPLOYER_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EMPLOYER_TO_HIGHLIGHTS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ENTRY_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.EXPERIENCE_TO_ENTRIES; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HIGHLIGHT_ITEM_GAP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HIGHLIGHT_LEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_LEFT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_RIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_PAD_TOP; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_WEIGHT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_RULE_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MASTHEAD_TO_TITLE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.NAME_FAMILY_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.NAME_GIVEN_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.JOB_TITLE_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ROLE_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ROLE_TO_EMPLOYER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_TO_SUMMARY; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SMALL_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SUMMARY_LEADING; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SUMMARY_TO_EXPERIENCE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.TITLE_TO_RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.tracked; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.layeredRow; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.mainHeading; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldWidgets.marker; + +/** + * The paper right column: the two-tone name over its tracked role, the + * summary, and the roles held on a dated rail. + */ +final class CharcoalGoldMain { + + private CharcoalGoldMain() { + } + + static void compose(SectionBuilder main, + CvIdentity identity, + ParagraphSection summary, + EntriesSection experience) { + main.name("MainColumn"); + main.spacing(0); + main.padding((float) MAIN_PAD_TOP, (float) MAIN_PAD_RIGHT, 0f, (float) MAIN_PAD_LEFT); + renderMasthead(main, identity); + if (SectionLookup.hasContent(summary)) { + renderSummary(main, summary); + } + if (SectionLookup.hasContent(experience)) { + renderExperience(main, experience); + } + } + + // -- masthead -------------------------------------------------------- + + /** + * The name in two tones and two sizes — the given name in ink, the + * family name larger and in gold — then the role tracked out, and the + * short gold rule that closes the block. + * + *

The two halves come from {@code CvName}, which is why this preset + * wants a structured name rather than one string: nothing else could + * tell it where to change colour.

+ */ + private static void renderMasthead(SectionBuilder main, CvIdentity identity) { + main.addSection("Masthead", block -> { + block.spacing(0); + block.addParagraph(p -> p + .name("GivenName") + .text(identity.name().first()) + .textStyle(textStyle(NAME_GIVEN_SIZE, INK, false)) + .lineSpacing(1.0)); + block.addParagraph(p -> p + .name("FamilyName") + .text(identity.name().last()) + .textStyle(textStyle(NAME_FAMILY_SIZE, ACCENT, false)) + .lineSpacing(1.0) + .margin(0f, 0f, (float) MASTHEAD_TO_TITLE, 0f)); + block.addParagraph(p -> p + .name("JobTitle") + .text(tracked(identity.jobTitle())) + .textStyle(textStyle(JOB_TITLE_SIZE, INK, false)) + .margin(0f, 0f, (float) TITLE_TO_RULE, 0f)); + block.addLine(line -> line + .name("MastheadRule") + .horizontal(MASTHEAD_RULE_WIDTH) + .thickness(MASTHEAD_RULE_THICKNESS) + .color(ACCENT)); + }); + } + + // -- summary --------------------------------------------------------- + + /** + * The opening block, one paragraph per line of the section's body. This + * design gives it no heading, so the section's title is not drawn. + */ + private static void renderSummary(SectionBuilder main, ParagraphSection summary) { + main.addSection("Summary", block -> { + block.spacing(0); + block.margin((float) RULE_TO_SUMMARY, 0f, 0f, 0f); + List paragraphs = CharcoalGoldText.lines(summary.body()); + for (int i = 0; i < paragraphs.size(); i++) { + int index = i; + block.addParagraph(p -> p + .name("Summary_" + index) + .text(paragraphs.get(index)) + .textStyle(textStyle(BODY_SIZE, INK, false)) + .lineSpacing(SUMMARY_LEADING)); + } + }); + } + + // -- experience ------------------------------------------------------ + + /** + * The roles held: the dates in gold at the left, and the entry itself + * behind a hairline rail with a ringed marker capping each role. + */ + private static void renderExperience(SectionBuilder main, EntriesSection experience) { + main.addSection("Experience", block -> { + block.spacing(0); + block.margin((float) SUMMARY_TO_EXPERIENCE, 0f, 0f, 0f); + block.keepTogether(); + mainHeading(block, experience.title()); + List entries = experience.entries(); + for (int i = 0; i < entries.size(); i++) { + CvEntry entry = entries.get(i); + boolean first = i == 0; + boolean last = i == entries.size() - 1; + int index = i; + layeredRow(block, "ExperienceEntry_" + index, + first ? EXPERIENCE_TO_ENTRIES : 0.0, 0.0, + row -> { + row.spacing(0); + // Two cells, not three. Giving the marker a column + // of its own would put it in a different node from + // the rail, leaving the rail free to paint straight + // through it; the date column carries that width + // instead, so the body's left border lands in + // exactly the same place. + row.weights(DATE_WEIGHT + MARKER_WEIGHT, ENTRY_WEIGHT); + row.addParagraph(p -> p + .name("Period_" + index) + .text(entry.date()) + .textStyle(textStyle(DETAIL_SIZE, ACCENT, false))); + row.addSection("EntryBody_" + index, body -> + renderEntryBody(body, entry, index, last)); + }); + } + }); + } + + private static void renderEntryBody(SectionBuilder body, CvEntry entry, + int index, boolean last) { + body.spacing(0); + body.accentLeft(RULE, RULE_THICKNESS); + body.padding(0f, 0f, last ? 0f : (float) ENTRY_GAP, (float) ENTRY_INDENT); + renderRoleWithMarker(body, entry, index); + body.addParagraph(p -> p + .name("Employer_" + index) + .text(employerLine(entry)) + .textStyle(textStyle(EMPLOYER_SIZE, INK, true)) + .margin(0f, 0f, (float) EMPLOYER_TO_HIGHLIGHTS, 0f)); + List highlights = CharcoalGoldText.lines(entry.body()); + if (!highlights.isEmpty()) { + body.addList(list -> list + .name("Highlights_" + index) + .items(highlights) + .marker(ListMarker.bullet()) + .textStyle(textStyle(SMALL_SIZE, INK, false)) + .itemSpacing(HIGHLIGHT_ITEM_GAP) + .lineSpacing(HIGHLIGHT_LEADING)); + } + } + + /** The employer, and the place beside it behind a raised dot. */ + private static String employerLine(CvEntry entry) { + return entry.place().isBlank() + ? entry.subtitle() + : entry.subtitle() + " · " + entry.place(); + } + + /** + * The role, with the ring positioned back over the rail beside it. + * + *

The marker is placed from the title's own layer stack rather than + * from the row, so it sits on the role's first line whatever the title + * measures — and half its diameter left of the body's border, which puts + * the ring centred on the rail.

+ */ + private static void renderRoleWithMarker(SectionBuilder body, CvEntry entry, int index) { + SectionBuilder titleLayer = new SectionBuilder(); + titleLayer.name("RoleLayer_" + index); + titleLayer.spacing(0); + titleLayer.addParagraph(p -> { + p.name("Role_" + index).textStyle(textStyle(ROLE_SIZE, INK, true)); + CharcoalGoldText.title(p, entry, textStyle(ROLE_SIZE, INK, true)); + }); + body.addLayerStack(stack -> stack + .name("MarkerCap_" + index) + .margin(new DocumentInsets(0, 0, ROLE_TO_EMPLOYER, 0)) + .layer(titleLayer.build(), LayerAlign.TOP_LEFT, 0) + .position(marker(index), + -(ENTRY_INDENT + MARKER_DIAMETER / 2.0), 0.0, + LayerAlign.TOP_LEFT, 1)); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java new file mode 100644 index 000000000..a8c3eda27 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldStyles.java @@ -0,0 +1,200 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.style.DocumentColor; +import com.demcha.compose.document.style.DocumentTextDecoration; +import com.demcha.compose.document.style.DocumentTextStyle; +import com.demcha.compose.document.templates.core.text.TextStyles; +import com.demcha.compose.font.FontName; + +/** + * The measured geometry, palette and type scale of the Charcoal Gold CV. + * + *

Vertical rhythm here is authored as a pitch — the distance + * from one line's top to the next — rather than as a margin, which is how + * the design was drawn. {@link #gap} turns a pitch into the margin to set, + * by subtracting the line box the type already occupies.

+ */ +final class CharcoalGoldStyles { + + private CharcoalGoldStyles() { + } + + // -- page ------------------------------------------------------------ + + static final double PAGE_WIDTH = 595.276; + + static final double SIDEBAR_WEIGHT = 0.3197; + static final double MAIN_WEIGHT = 1.0 - SIDEBAR_WEIGHT; + + static final double SIDEBAR_PAD = 17.0; + static final double SIDEBAR_PAD_TOP = 24.3; + static final double SIDEBAR_CONTENT_WIDTH = + PAGE_WIDTH * SIDEBAR_WEIGHT - 2.0 * SIDEBAR_PAD; + + static final double MAIN_PAD_LEFT = 23.7; + static final double MAIN_PAD_RIGHT = 28.8; + static final double MAIN_PAD_TOP = 25.7; + static final double MAIN_CONTENT_WIDTH = + PAGE_WIDTH * MAIN_WEIGHT - MAIN_PAD_LEFT - MAIN_PAD_RIGHT; + + // -- type ------------------------------------------------------------ + + static final FontName FONT = FontName.LATO; + + static final double BODY_SIZE = 9.1; + static final double NAME_GIVEN_SIZE = 35.7; + static final double NAME_FAMILY_SIZE = 45.5; + static final double JOB_TITLE_SIZE = 11.6; + static final double MAIN_HEADING_SIZE = 11.0; + static final double SIDEBAR_HEADING_SIZE = 10.0; + static final double ROLE_SIZE = 10.5; + static final double EMPLOYER_SIZE = 6.9; + static final double DETAIL_SIZE = 7.8; + static final double SMALL_SIZE = 7.9; + + /** The share of its type size a line box occupies at the default leading. */ + static final double LINE_FACTOR = 1.2; + + // -- palette --------------------------------------------------------- + + static final DocumentColor SIDEBAR = DocumentColor.rgb(39, 45, 50); + static final DocumentColor PAPER = DocumentColor.rgb(254, 254, 254); + static final DocumentColor ACCENT = DocumentColor.rgb(186, 148, 88); + static final DocumentColor INK = DocumentColor.rgb(39, 45, 50); + static final DocumentColor SIDEBAR_INK = DocumentColor.rgb(251, 251, 251); + static final DocumentColor RULE = DocumentColor.rgb(218, 218, 219); + static final DocumentColor SIDEBAR_RULE = DocumentColor.rgb(61, 67, 69); + static final DocumentColor RATING_EMPTY = DocumentColor.rgb(119, 122, 125); + + // -- ornaments ------------------------------------------------------- + + static final double ACCENT_BAR_WIDTH = 1.7; + static final double HEADING_INDENT = 9.0; + static final double RULE_THICKNESS = 0.6; + static final double MARKER_DIAMETER = 6.2; + static final double RATING_DOT_DIAMETER = 4.5; + static final double SKILL_BULLET_DIAMETER = 2.3; + + /** + * The bullet gets a column of its own rather than an inline run plus + * counted spaces: its width is the design's own name indent, so neither + * the mark nor the name depends on how wide a space happens to be. + */ + static final double SKILL_BULLET_COLUMN = 9.5; + + static final double PHOTO_RING_WIDTH = 1.2; + static final double PHOTO_DIAMETER = SIDEBAR_CONTENT_WIDTH * 0.802; + + // -- sidebar rhythm -------------------------------------------------- + + static final double PHOTO_TO_CONTACT = 29.4; + static final double HEADING_TO_BODY = 12.0; + static final double BLOCK_TO_DIVIDER = 19.0; + static final double DIVIDER_TO_HEADING = 17.0; + static final double CONTACT_PITCH = 19.2; + static final double SKILL_PITCH = 16.6; + static final double LANGUAGE_PITCH = 16.9; + static final double EDUCATION_LINE_PITCH = 12.4; + static final double EDUCATION_ENTRY_GAP = 13.7; + static final double EDUCATION_INDENT = 12.4; + + static final double LANGUAGE_NAME_WEIGHT = 0.36; + static final double SKILL_NAME_WEIGHT = 0.72; + + // -- main rhythm ----------------------------------------------------- + + static final double MASTHEAD_TO_TITLE = 0.0; + static final double TITLE_TO_RULE = 12.0; + static final double MASTHEAD_RULE_WIDTH = MAIN_CONTENT_WIDTH * 0.093; + static final double MASTHEAD_RULE_THICKNESS = 1.4; + static final double RULE_TO_SUMMARY = 17.8; + static final double SUMMARY_LEADING = 1.38; + static final double SUMMARY_TO_EXPERIENCE = 28.4; + static final double EXPERIENCE_TO_ENTRIES = 19.0; + static final double ENTRY_GAP = 19.6; + static final double ENTRIES_TO_RULE = 18.0; + static final double CREDENTIALS_TO_TOOLS = 13.7; + + static final double DATE_WEIGHT = 0.194; + static final double MARKER_WEIGHT = MARKER_DIAMETER / MAIN_CONTENT_WIDTH; + static final double ENTRY_WEIGHT = 1.0 - DATE_WEIGHT - MARKER_WEIGHT; + static final double ENTRY_INDENT = 16.0; + static final double ROLE_TO_EMPLOYER = 3.0; + static final double EMPLOYER_TO_HIGHLIGHTS = 7.0; + static final double HIGHLIGHT_ITEM_GAP = 4.0; + static final double HIGHLIGHT_LEADING = 1.3; + + // -- credentials ----------------------------------------------------- + + static final double CREDENTIAL_LEFT_WEIGHT = 0.402; + static final double CREDENTIAL_GUTTER_WEIGHT = 0.124; + static final double CREDENTIAL_RIGHT_WEIGHT = + 1.0 - CREDENTIAL_LEFT_WEIGHT - CREDENTIAL_GUTTER_WEIGHT; + static final double CREDENTIAL_ICON_WEIGHT = 0.14; + static final double CREDENTIAL_HALF_GUTTER = + MAIN_CONTENT_WIDTH * CREDENTIAL_GUTTER_WEIGHT / 2.0; + static final double RULE_TO_CREDENTIALS = 22.0; + static final double CREDENTIAL_ENTRY_GAP = 6.5; + static final double CREDENTIAL_HEADING_TO_BODY = 17.3; + static final double CREDENTIAL_LINE_GAP = 2.0; + + /** The separator between two tools on the closing strip. */ + static final String TOOL_SEPARATOR = " | "; + + // -- helpers --------------------------------------------------------- + + static DocumentTextStyle textStyle(double size, DocumentColor color, boolean bold) { + return TextStyles.of(FONT, size, + bold ? DocumentTextDecoration.BOLD : DocumentTextDecoration.DEFAULT, color); + } + + /** + * The margin that realises an authored pitch: the distance between two + * line tops, less the line box the type above already fills. + * + * @param pitch the distance the design draws between line tops + * @param size the type size of the line above + * @return the margin to set, never negative + */ + static double gap(double pitch, double size) { + return Math.max(0.0, pitch - size * LINE_FACTOR); + } + + /** + * Letter-spacing by spaces rather than by sized runs: a space between + * letters and three between words. + * + *

This design tracks only one line — the job title — and does it + * coarsely enough that real spaces reach it, which is simpler than the + * per-letter spacer runs the other ported sheets need.

+ * + * @param text the text to space out + * @return the spaced text + */ + static String tracked(String text) { + if (text == null || text.isEmpty()) { + return ""; + } + StringBuilder out = new StringBuilder(text.length() * 2); + boolean startOfWord = true; + for (int i = 0; i < text.length(); i++) { + char ch = text.charAt(i); + if (ch == ' ') { + out.append(" "); + startOfWord = true; + continue; + } + if (!startOfWord) { + out.append(' '); + } + out.append(ch); + startOfWord = false; + } + return out.toString(); + } + + /** Strips a title down to the letters and digits a node name can carry. */ + static String compact(String text) { + return text == null ? "" : text.replaceAll("[^A-Za-z0-9]", ""); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java new file mode 100644 index 000000000..71d29f2e1 --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldText.java @@ -0,0 +1,53 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.node.DocumentLinkOptions; +import com.demcha.compose.document.style.DocumentTextStyle; +import com.demcha.compose.document.templates.core.text.MarkdownInline; +import com.demcha.compose.document.templates.cv.data.CvEntry; + +import java.util.ArrayList; +import java.util.List; + +/** Turning model fields into the runs and lines this sheet draws. */ +final class CharcoalGoldText { + + private CharcoalGoldText() { + } + + /** + * One item per non-blank line — the family's way of carrying a list in a + * field the model types as a single string. The summary reads its own + * paragraphs this way too. + * + * @param body the field's text + * @return the lines, in order + */ + static List lines(String body) { + List out = new ArrayList<>(); + for (String line : body.split("\\R")) { + String clean = MarkdownInline.plainText(line).trim(); + if (!clean.isBlank()) { + out.add(clean); + } + } + return out; + } + + /** + * Writes an entry's title into a paragraph, as a link when the entry + * carries one. A link is an annotation rather than ink, so a linked + * title and a plain one are the same sheet. + * + * @param paragraph the paragraph being built + * @param entry the entry whose title and link to write + * @param style the style of the title + */ + static void title(ParagraphBuilder paragraph, CvEntry entry, DocumentTextStyle style) { + if (entry.link().isBlank()) { + paragraph.inlineText(entry.title(), style); + } else { + paragraph.inlineText(entry.title(), style, new DocumentLinkOptions(entry.link())); + } + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java new file mode 100644 index 000000000..8486ed15d --- /dev/null +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/CharcoalGoldWidgets.java @@ -0,0 +1,135 @@ +package com.demcha.compose.document.templates.cv.presets; + +import com.demcha.compose.document.dsl.EllipseBuilder; +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.dsl.RowBuilder; +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.node.DocumentNode; +import com.demcha.compose.document.node.LayerAlign; +import com.demcha.compose.document.node.RowVerticalAlign; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.style.DocumentRowColumn; +import com.demcha.compose.document.style.DocumentStroke; +import com.demcha.compose.document.style.DocumentTextStyle; + +import java.util.function.Consumer; + +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.ACCENT_BAR_WIDTH; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.HEADING_INDENT; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MAIN_HEADING_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.MARKER_DIAMETER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.PAPER; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.RULE_THICKNESS; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_HEADING_SIZE; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.SIDEBAR_INK; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.compact; +import static com.demcha.compose.document.templates.cv.presets.CharcoalGoldStyles.textStyle; + +/** + * The pieces this sheet repeats: the heading with its gold bar, the ringed + * marker that caps a role, the two-space inline gap after a mark, and the + * row wrapper every measured row is built on. + */ +final class CharcoalGoldWidgets { + + private CharcoalGoldWidgets() { + } + + /** A sidebar heading: pale text behind the gold bar. */ + static void sidebarHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> heading + .spacing(0) + .accentLeft(ACCENT, ACCENT_BAR_WIDTH) + .padding(0f, 0f, 0f, (float) HEADING_INDENT) + .addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(SIDEBAR_HEADING_SIZE, SIDEBAR_INK, false)))); + } + + /** + * A main-column heading: the same gold bar, with a hairline running from + * the words to the right edge. + * + *

The rule is a weighted cell beside an {@code auto} one, so it takes + * whatever the words leave — no measurement needed, unlike a rule that + * has to be given a width.

+ */ + static void mainHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> { + heading.spacing(0); + heading.accentLeft(ACCENT, ACCENT_BAR_WIDTH); + heading.padding(0f, 0f, 0f, (float) HEADING_INDENT); + layeredRow(heading, "HeadingRow_" + compact(text), 0.0, 0.0, row -> { + row.verticalAlign(RowVerticalAlign.CENTER); + row.columns(DocumentRowColumn.auto(), DocumentRowColumn.weight(1.0)); + row.addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(MAIN_HEADING_SIZE, INK, false))); + row.addLine(line -> line + .name("HeadingRule_" + compact(text)) + .fill() + .thickness(RULE_THICKNESS) + .color(RULE) + .margin(new DocumentInsets(0, 0, 0, HEADING_INDENT))); + }); + }); + } + + /** A main-column heading without the trailing rule, for the closing columns. */ + static void plainHeading(SectionBuilder block, String text) { + block.addSection("Heading_" + compact(text), heading -> heading + .spacing(0) + .accentLeft(ACCENT, ACCENT_BAR_WIDTH) + .padding(0f, 0f, 0f, (float) HEADING_INDENT) + .addParagraph(p -> p + .name("HeadingText_" + compact(text)) + .text(text) + .textStyle(textStyle(MAIN_HEADING_SIZE, INK, false)))); + } + + /** + * A row wrapped in a layer stack, which is where its vertical margins + * live. + * + *

A row carries no margin of its own, so every measured row on this + * sheet is placed by the stack around it. That also gives the marker + * somewhere to be positioned from.

+ * + * @param parent the host section + * @param name node-name stem for the stack, its layer and the row + * @param marginTop the gap above + * @param marginBottom the gap below + * @param spec builds the row + */ + static void layeredRow(SectionBuilder parent, String name, double marginTop, + double marginBottom, Consumer spec) { + SectionBuilder layer = new SectionBuilder(); + layer.name(name + "Layer"); + layer.spacing(0); + layer.addRow(name, spec); + parent.addLayerStack(stack -> stack + .name(name + "Stack") + .margin(new DocumentInsets(marginTop, 0, marginBottom, 0)) + .layer(layer.build(), LayerAlign.TOP_LEFT, 0)); + } + + /** The hollow ring that caps a role on the experience rail. */ + static DocumentNode marker(int index) { + return new EllipseBuilder() + .name("MarkerRing_" + index) + .circle(MARKER_DIAMETER) + .fillColor(PAPER) + .stroke(DocumentStroke.of(INK, 0.8)) + .build(); + } + + /** The two spaces this design leaves between a mark and the text after it. */ + static void inlineGap(ParagraphBuilder paragraph, DocumentTextStyle style) { + paragraph.inlineText(" ", style); + } +} diff --git a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java index d9f61ae7a..f07954f04 100644 --- a/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java +++ b/templates/src/main/java/com/demcha/compose/document/templates/cv/presets/package-info.java @@ -21,9 +21,9 @@ * fed a different theme.

* *

The package holds a second shape as well. A preset that reproduces a - * specific drawn sheet — {@code ProfessionalSidebar}, {@code NavySidebar} - * and {@code SerifHeadline} are the ones here — takes no - * {@code BrandTheme} and calls no shared + * specific drawn sheet — {@code ProfessionalSidebar}, {@code NavySidebar}, + * {@code SerifHeadline} and {@code CharcoalGold} are the ones here — takes + * no {@code BrandTheme} and calls no shared * renderer: its geometry, palette and type scale are measured constants of * its own, and it sets its own page. The data model is the same * {@code CvDocument}; what differs is that the cosmetics cannot be swapped, diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg new file mode 100644 index 000000000..70bfd06fe --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg new file mode 100644 index 000000000..cb7317e63 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg new file mode 100644 index 000000000..7cd08248b --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/growth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg new file mode 100644 index 000000000..e8bf28f95 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg new file mode 100644 index 000000000..936b3c22d --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg new file mode 100644 index 000000000..ebdaf0d64 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg new file mode 100644 index 000000000..4a012dbc6 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg new file mode 100644 index 000000000..12e9bcef6 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/trophy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg b/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg new file mode 100644 index 000000000..26d1e0bc8 --- /dev/null +++ b/templates/src/main/resources/templates/cv/charcoal-gold/icons/website.svg @@ -0,0 +1 @@ + \ No newline at end of file