1
0
Fork 0
mirror of synced 2024-08-04 21:02:01 +12:00
budibase/packages/standard-components/dist/generators.js
2020-01-24 14:51:28 +00:00

208 lines
20 KiB
JavaScript

const headers = () => [
{
name: "common/H1",
description: "Header 1",
inherits: "@budibase/standard-components/text",
props: {
font: "20pt",
}
},
{
name: "common/H2",
description: "Header 2",
inherits: "@budibase/standard-components/text",
props: {
font: "15pt",
}
},
{
name: "common/H3",
description: "Header 3",
inherits: "@budibase/standard-components/text",
props: {
font: "12pt bold",
}
},
{
name: "common/H4",
description: "Header 4",
inherits: "@budibase/standard-components/text",
props: {
font: "10pt bold",
}
}
];
const forms = ({records, indexes}) =>
[...headers(),
...records.map(root)];
const root = record => ({
name: `${record.name} Form`,
description: `All fields on record '${record.nodeKey()}' `,
inherits: "@budibase/standard-components/stackpanel",
props: {
direction: "vertical",
children: [
{
control: {
_component: "common/H1",
value: `Edit ${record.name}`,
}
},
form(record),
saveCancelButtons(record)
]
}
});
const form = record => ({
control: {
_component: "@budibase/standard-components/form",
formControls:
record.fields.map(f => ({
label: f.label,
control: {
_component: "@budibase/standard-components/textbox",
value: {
"##bbstate":`current${record.name}.${f.name}`,
"##bbsource":"store"
}
}
}))
}
});
const saveCancelButtons = (record) => ({
control: {
_component: "@budibase/standard-components/stackpanel",
direction: "horizontal",
children: [
paddedPanelForButton({
_component: "common/Primary Button",
contentText: `Save ${record.name}`,
onClick: [
{
"##eventHandlerType": "Save Record",
parameters: {
statePath: `current${record.name}`,
}
}
]
}),
paddedPanelForButton({
_component: "common/Secondary Button",
contentText: `Cancel`,
onClick: [
{
"##eventHandlerType": "Save Record",
parameters: {
statePath: `current${record.name}`,
}
}
]
})
]
}
});
const paddedPanelForButton = (button) => ({
control: {
_component: "@budibase/standard-components/panel",
padding: "20px",
component: button
}
});
const indexTables = ({indexes, helpers}) =>
indexes.filter(i => i.parent().type === "root")
.map(i => indexTable(i, helpers));
const indexTableProps = (index, helpers) => ({
data: {
"##bbstate":index.nodeKey(),
"##bbsource":"store"
},
columns: helpers.indexSchema(index).map(column)
});
const indexTable = (index, helpers) => ({
name: `tables/${index.name} Table`,
inherits: "@budibase/standard-components/table",
props: indexTableProps(index, helpers)
});
const column = (col) => ({
title: col.name,
value: {
"##bbstate": col.name,
"##bbsource":"context"
}
});
const nav = ({records, indexes, helpers}) => [
{
name: "Application Root",
inherits: "@budibase/standard-components/nav",
props: {
items: indexes
.filter(i => i.parent().type === "root")
.map(navItem),
selectedItem: {
"##bbstate": "selectedNav",
"##bbstatefallback": records[0].collectionName,
"##bbsource":"store"
}
},
},
...indexTables({records, indexes, helpers})
];
const navItem = (index) => ({
title: index.name,
component : {
_component: `tables/${index.name} Table`
}
});
const app = (params) => {
return [
...nav(params),
...forms(params)
];
};
const buttons = () => [
{
name: "common/Primary Button",
description: "a styled button",
inherits: "@budibase/standard-components/button",
props: {
padding: "5px 7px",
border: "1px solid #EEE",
color: "#5F6368",
background: "##f2f2f2",
hoverColor: "black",
hoverBackground: "#cccccc"
}
},
{
name: "common/Secondary Button",
description: "a styled button",
inherits: "@budibase/standard-components/button",
props: {
padding: "5px 7px",
border: "1px solid #EEE",
color: "#5F6368",
background: "##f2f2f2",
hoverColor: "black",
hoverBackground: "#cccccc"
}
}
];
export { app, buttons, forms, headers, indexTables, nav };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9ycy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2dlbmVyYXRvcnMvaGVhZGVyc0dlbmVyYXRvci5qcyIsIi4uL3NyYy9nZW5lcmF0b3JzL2Zvcm1zR2VuZXJhdG9yLmpzIiwiLi4vc3JjL2dlbmVyYXRvcnMvaW5kZXhUYWJsZXNHZW5lcmF0b3IuanMiLCIuLi9zcmMvZ2VuZXJhdG9ycy9uYXZHZW5lcmF0b3IuanMiLCIuLi9zcmMvZ2VuZXJhdG9ycy9hcHBHZW5lcmF0b3IuanMiLCIuLi9zcmMvZ2VuZXJhdG9ycy9idXR0b25zR2VuZXJhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBoZWFkZXJzID0gKCkgPT4gW1xuICAgIHtcbiAgICAgICAgbmFtZTogXCJjb21tb24vSDFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSGVhZGVyIDFcIixcbiAgICAgICAgaW5oZXJpdHM6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvdGV4dFwiLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZm9udDogXCIyMHB0XCIsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogXCJjb21tb24vSDJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSGVhZGVyIDJcIixcbiAgICAgICAgaW5oZXJpdHM6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvdGV4dFwiLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZm9udDogXCIxNXB0XCIsXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogXCJjb21tb24vSDNcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSGVhZGVyIDNcIixcbiAgICAgICAgaW5oZXJpdHM6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvdGV4dFwiLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZm9udDogXCIxMnB0IGJvbGRcIixcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiBcImNvbW1vbi9INFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZWFkZXIgNFwiLFxuICAgICAgICBpbmhlcml0czogXCJAYnVkaWJhc2Uvc3RhbmRhcmQtY29tcG9uZW50cy90ZXh0XCIsXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmb250OiBcIjEwcHQgYm9sZFwiLFxuICAgICAgICB9XG4gICAgfVxuXSIsImltcG9ydCB7aGVhZGVyc30gZnJvbSBcIi4vaGVhZGVyc0dlbmVyYXRvclwiO1xuXG5leHBvcnQgY29uc3QgZm9ybXMgPSAoe3JlY29yZHMsIGluZGV4ZXN9KSA9PiBcbiAgICBbLi4uaGVhZGVycyh7cmVjb3JkcywgaW5kZXhlc30pLFxuICAgIC4uLnJlY29yZHMubWFwKHJvb3QpXTtcblxuY29uc3Qgcm9vdCA9IHJlY29yZCA9PiAoe1xuICAgIG5hbWU6IGAke3JlY29yZC5uYW1lfSBGb3JtYCxcbiAgICBkZXNjcmlwdGlvbjogYEFsbCBmaWVsZHMgb24gcmVjb3JkICcke3JlY29yZC5ub2RlS2V5KCl9JyBgLFxuICAgIGluaGVyaXRzOiBcIkBidWRpYmFzZS9zdGFuZGFyZC1jb21wb25lbnRzL3N0YWNrcGFuZWxcIixcbiAgICBwcm9wczoge1xuICAgICAgICBkaXJlY3Rpb246IFwidmVydGljYWxcIixcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250cm9sOiB7XG4gICAgICAgICAgICAgICAgICAgIF9jb21wb25lbnQ6IFwiY29tbW9uL0gxXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBgRWRpdCAke3JlY29yZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvcm0ocmVjb3JkKSxcbiAgICAgICAgICAgIHNhdmVDYW5jZWxCdXR0b25zKHJlY29yZClcbiAgICAgICAgXVxuICAgIH1cbn0pIFxuXG5jb25zdCBmb3JtID0gcmVjb3JkID0+ICh7XG4gICAgY29udHJvbDoge1xuICAgICAgICBfY29tcG9uZW50OiBcIkBidWRpYmFzZS9zdGFuZGFyZC1jb21wb25lbnRzL2Zvcm1cIixcbiAgICAgICAgZm9ybUNvbnRyb2xzOiBcbiAgICAgICAgICAgIHJlY29yZC5maWVsZHMubWFwKGYgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZi5sYWJlbCxcbiAgICAgICAgICAgICAgICBjb250cm9sOiB7XG4gICAgICAgICAgICAgICAgICAgIF9jb21wb25lbnQ6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvdGV4dGJveFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIjI2Jic3RhdGVcIjpgY3VycmVudCR7cmVjb3JkLm5hbWV9LiR7Zi5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiMjYmJzb3VyY2VcIjpcInN0b3JlXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKVxuICAgIH1cbn0pXG5cbmNvbnN0IHNhdmVDYW5jZWxCdXR0b25zID0gKHJlY29yZCkgPT4gKHtcbiAgICBjb250cm9sOiB7XG4gICAgICAgIF9jb21wb25lbnQ6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvc3RhY2twYW5lbFwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgcGFkZGVkUGFuZWxGb3JCdXR0b24oe1xuICAgICAgICAgICAgICAgIF9jb21wb25lbnQ6IFwiY29tbW9uL1ByaW1hcnkgQnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgY29udGVudFRleHQ6IGBTYXZlICR7cmVjb3JkLm5hbWV9YCxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiBbICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiMjZXZlbnRIYW5kbGVyVHlwZVwiOiBcIlNhdmUgUmVjb3JkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVQYXRoOiBgY3VycmVudCR7cmVjb3JkLm5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcGFkZGVkUGFuZWxGb3JCdXR0b24oe1xuICAgICAgICAgICAgICAgIF9jb21wb25lbnQ6IFwiY29tbW9uL1NlY29uZGFyeSBCdXR0b25cIixcbiAgICAgICAgICAgICAgICBjb250ZW50VGV4dDogYENhbmNlbGAsXG4gICAgICAgICAgICAgICAgb25DbGljazogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiMjZXZlbnRIYW5kbGVyVHlwZVwiOiBcIlNhdmUgUmVjb3JkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVQYXRoOiBgY3VycmVudCR7cmVjb3JkLm5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9XG59KVxuXG5jb25zdCBwYWRkZWRQYW5lbEZvckJ1dHRvbiA9IChidXR0b24pID0+ICh7XG4gICAgY29udHJvbDoge1xuICAgICAgICBfY29tcG9uZW50OiBcIkBidWRpYmFzZS9zdGFuZGFyZC1jb21wb25lbnRzL3BhbmVsXCIsXG4gICAgICAgIHBhZGRpbmc6IFwiMjBweFwiLFxuICAgICAgICBjb21wb25lbnQ6IGJ1dHRvblxuICAgIH1cbn0pO1xuXG4iLCJleHBvcnQgY29uc3QgaW5kZXhUYWJsZXMgPSAoe2luZGV4ZXMsIGhlbHBlcnN9KSA9PiBcbiAgICBpbmRleGVzLmZpbHRlcihpID0+IGkucGFyZW50KCkudHlwZSA9PT0gXCJyb290XCIpXG4gICAgICAgICAgIC5tYXAoaSA9PiBpbmRleFRhYmxlKGksIGhlbHBlcnMpKTtcblxuZXhwb3J0IGNvbnN0IGluZGV4VGFibGVQcm9wcyA9IChpbmRleCwgaGVscGVycykgPT4gKHtcbiAgICBkYXRhOiB7XG4gICAgICAgIFwiIyNiYnN0YXRlXCI6aW5kZXgubm9kZUtleSgpLFxuICAgICAgICBcIiMjYmJzb3VyY2VcIjpcInN0b3JlXCJcbiAgICB9LFxuICAgIGNvbHVtbnM6IGhlbHBlcnMuaW5kZXhTY2hlbWEoaW5kZXgpLm1hcChjb2x1bW4pXG59KTtcblxuY29uc3QgaW5kZXhUYWJsZSA9IChpbmRleCwgaGVscGVycykgPT4gKHtcbiAgICBuYW1lOiBgdGFibGVzLyR7aW5kZXgubmFtZX0gVGFibGVgLFxuICAgIGluaGVyaXRzOiBcIkBidWRpYmFzZS9zdGFuZGFyZC1jb21wb25lbnRzL3RhYmxlXCIsXG4gICAgcHJvcHM6IGluZGV4VGFibGVQcm9wcyhpbmRleCwgaGVscGVycylcbn0pO1xuXG5jb25zdCBjb2x1bW4gPSAoY29sKSA9PiAoe1xuICAgIHRpdGxlOiBjb2wubmFtZSxcbiAgICB2YWx1ZToge1xuICAgICAgICBcIiMjYmJzdGF0ZVwiOiBjb2wubmFtZSxcbiAgICAgICAgXCIjI2Jic291cmNlXCI6XCJjb250ZXh0XCJcbiAgICB9XG59KSIsImltcG9ydCB7aW5kZXhUYWJsZXN9IGZyb20gXCIuL2luZGV4VGFibGVzR2VuZXJhdG9yXCI7XG5cbmV4cG9ydCBjb25zdCBuYXYgPSAoe3JlY29yZHMsIGluZGV4ZXMsIGhlbHBlcnN9KSA9PiBbXG4gICAge1xuICAgICAgICBuYW1lOiBcIkFwcGxpY2F0aW9uIFJvb3RcIixcbiAgICAgICAgaW5oZXJpdHM6IFwiQGJ1ZGliYXNlL3N0YW5kYXJkLWNvbXBvbmVudHMvbmF2XCIsXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBpdGVtczogaW5kZXhlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGkgPT4gaS5wYXJlbnQoKS50eXBlID09PSBcInJvb3RcIilcbiAgICAgICAgICAgICAgICAgICAgLm1hcChuYXZJdGVtKSxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbToge1xuICAgICAgICAgICAgICAgIFwiIyNiYnN0YXRlXCI6IFwic2VsZWN0ZWROYXZcIixcbiAgICAgICAgICAgICAgICBcIiMjYmJzdGF0ZWZhbGxiYWNrXCI6IHJlY29yZHNbMF0uY29sbGVjdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgXCIjI2Jic291cmNlXCI6XCJzdG9yZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICAuLi5pbmRleFRhYmxlcyh7cmVjb3JkcywgaW5kZXhlcywgaGVscGVyc30pXG5dXG5cblxuZXhwb3J0IGNvbnN0IG5hdkl0ZW0gPSAoaW5kZXgpID0+ICh7XG4gICAgdGl0bGU6IGluZGV4Lm5hbWUsXG4gICAgY29tcG9uZW50IDoge1xuICAgICAgICBfY29tcG9uZW50OiBgdGFibGVzLyR7aW5kZXgubmFtZX0gVGFibGVgXG4gICAgfVxufSlcblxuIiwiaW1wb3J0IHsgZm9ybXMgfSBmcm9tIFwiLi9mb3Jtc0dlbmVyYXRvclwiO1xuaW1wb3J0IHsgbmF2IH0gZnJvbSBcIi4vbmF2R2VuZXJhdG9yXCI7XG5cbmV4cG9ydCBjb25zdCBhcHAgPSAocGFyYW1zKSA9PiB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5uYXYocGFyYW1zKSxcbiAgICAgICAgLi4uZm9ybXMocGFyYW1zKVxuICAgIF07XG59XG5cbiIsImV4cG9ydCBjb25zdCBidXR0b25zID0gKCkgPT4gW1xuICAgIHtcbiAgICAgICAgbmFtZTogXCJjb21tb24vUHJpbWFyeSBCdXR0b25cIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiYSBzdHlsZWQgYnV0dG9uXCIsXG4gICAgICAgIGluaGVyaXRzOiBcIkBidWRpYmFzZS9zdGFuZGFyZC1jb21wb25lbnRzL2J1dHRvblwiLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcGFkZGluZzogXCI1cHggN3B4XCIsXG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNFRUVcIixcbiAgICAgICAgICAgIGNvbG9yOiBcIiM1RjYzNjhcIixcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIyNmMmYyZjJcIixcbiAgICAgICAgICAgIGhvdmVyQ29sb3I6IFwiYmxhY2tcIixcbiAgICAgICAgICAgIGhvdmVyQmFja2dyb3VuZDogXCIjY2NjY2NjXCJcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiBcImNvbW1vbi9TZWNvbmRhcnkgQnV0dG9uXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcImEgc3R5bGVkIGJ1dHRvblwiLFxuICAgICAgICBpbmhlcml0czogXCJAYnVkaWJhc2Uvc3RhbmRhcmQtY29tcG9uZW50cy9idXR0b25cIixcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IFwiNXB4IDdweFwiLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjRUVFXCIsXG4gICAgICAgICAgICBjb2xvcjogXCIjNUY2MzY4XCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMjZjJmMmYyXCIsXG4gICAgICAgICAgICBob3ZlckNvbG9yOiBcImJsYWNrXCIsXG4gICAgICAgICAgICBob3ZlckJhY2tncm91bmQ6IFwiI2NjY2NjY1wiXG4gICAgICAgIH1cbiAgICB9XG5dIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZLE1BQUMsT0FBTyxHQUFHLE1BQU07QUFDN0IsSUFBSTtBQUNKLFFBQVEsSUFBSSxFQUFFLFdBQVc7QUFDekIsUUFBUSxXQUFXLEVBQUUsVUFBVTtBQUMvQixRQUFRLFFBQVEsRUFBRSxvQ0FBb0M7QUFDdEQsUUFBUSxLQUFLLEVBQUU7QUFDZixZQUFZLElBQUksRUFBRSxNQUFNO0FBQ3hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSTtBQUNKLFFBQVEsSUFBSSxFQUFFLFdBQVc7QUFDekIsUUFBUSxXQUFXLEVBQUUsVUFBVTtBQUMvQixRQUFRLFFBQVEsRUFBRSxvQ0FBb0M7QUFDdEQsUUFBUSxLQUFLLEVBQUU7QUFDZixZQUFZLElBQUksRUFBRSxNQUFNO0FBQ3hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSTtBQUNKLFFBQVEsSUFBSSxFQUFFLFdBQVc7QUFDekIsUUFBUSxXQUFXLEVBQUUsVUFBVTtBQUMvQixRQUFRLFFBQVEsRUFBRSxvQ0FBb0M7QUFDdEQsUUFBUSxLQUFLLEVBQUU7QUFDZixZQUFZLElBQUksRUFBRSxXQUFXO0FBQzdCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSTtBQUNKLFFBQVEsSUFBSSxFQUFFLFdBQVc7QUFDekIsUUFBUSxXQUFXLEVBQUUsVUFBVTtBQUMvQixRQUFRLFFBQVEsRUFBRSxvQ0FBb0M7QUFDdEQsUUFBUSxLQUFLLEVBQUU7QUFDZixZQUFZLElBQUksRUFBRSxXQUFXO0FBQzdCLFNBQVM7QUFDVCxLQUFLO0FBQ0w7O0FDL0JZLE1BQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQ3hDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxBQUFrQixDQUFDO0FBQ25DLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUI7QUFDQSxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7QUFDeEIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQy9CLElBQUksV0FBVyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUM5RCxJQUFJLFFBQVEsRUFBRSwwQ0FBMEM7QUFDeEQsSUFBSSxLQUFLLEVBQUU7QUFDWCxRQUFRLFNBQVMsRUFBRSxVQUFVO0FBQzdCLFFBQVEsUUFBUSxFQUFFO0FBQ2xCLFlBQVk7QUFDWixnQkFBZ0IsT0FBTyxFQUFFO0FBQ3pCLG9CQUFvQixVQUFVLEVBQUUsV0FBVztBQUMzQyxvQkFBb0IsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRCxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN4QixZQUFZLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztBQUNyQyxTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGO0FBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLO0FBQ3hCLElBQUksT0FBTyxFQUFFO0FBQ2IsUUFBUSxVQUFVLEVBQUUsb0NBQW9DO0FBQ3hELFFBQVEsWUFBWTtBQUNwQixZQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSztBQUNwQyxnQkFBZ0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO0FBQzlCLGdCQUFnQixPQUFPLEVBQUU7QUFDekIsb0JBQW9CLFVBQVUsRUFBRSx1Q0FBdUM7QUFDdkUsb0JBQW9CLEtBQUssRUFBRTtBQUMzQix3QkFBd0IsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSx3QkFBd0IsWUFBWSxDQUFDLE9BQU87QUFDNUMscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixhQUFhLENBQUMsQ0FBQztBQUNmLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRjtBQUNBLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNLE1BQU07QUFDdkMsSUFBSSxPQUFPLEVBQUU7QUFDYixRQUFRLFVBQVUsRUFBRSwwQ0FBMEM7QUFDOUQsUUFBUSxTQUFTLEVBQUUsWUFBWTtBQUMvQixRQUFRLFFBQVEsRUFBRTtBQUNsQixZQUFZLG9CQUFvQixDQUFDO0FBQ2pDLGdCQUFnQixVQUFVLEVBQUUsdUJBQXVCO0FBQ25ELGdCQUFnQixXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELGdCQUFnQixPQUFPLEVBQUU7QUFDekIsb0JBQW9CO0FBQ3BCLHdCQUF3QixvQkFBb0IsRUFBRSxhQUFhO0FBQzNELHdCQUF3QixVQUFVLEVBQUU7QUFDcEMsNEJBQTRCLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYSxDQUFDO0FBQ2QsWUFBWSxvQkFBb0IsQ0FBQztBQUNqQyxnQkFBZ0IsVUFBVSxFQUFFLHlCQUF5QjtBQUNyRCxnQkFBZ0IsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3JDLGdCQUFnQixPQUFPLEVBQUU7QUFDekIsb0JBQW9CO0FBQ3BCLHdCQUF3QixvQkFBb0IsRUFBRSxhQUFhO0FBQzNELHdCQUF3QixVQUFVLEVBQUU7QUFDcEMsNEJBQTRCLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYSxDQUFDO0FBQ2QsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRjtBQUNBLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLE1BQU07QUFDMUMsSUFBSSxPQUFPLEVBQUU7QUFDYixRQUFRLFVBQVUsRUFBRSxxQ0FBcUM7QUFDekQsUUFBUSxPQUFPLEVBQUUsTUFBTTtBQUN2QixRQUFRLFNBQVMsRUFBRSxNQUFNO0FBQ3pCLEtBQUs7QUFDTCxDQUFDLENBQUMsQ0FBQzs7QUNqRlMsTUFBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFDOUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUNuRCxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsQUFBTyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLE1BQU07QUFDcEQsSUFBSSxJQUFJLEVBQUU7QUFDVixRQUFRLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQ25DLFFBQVEsWUFBWSxDQUFDLE9BQU87QUFDNUIsS0FBSztBQUNMLElBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0EsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxNQUFNO0FBQ3hDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3RDLElBQUksUUFBUSxFQUFFLHFDQUFxQztBQUNuRCxJQUFJLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0EsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU07QUFDekIsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUk7QUFDbkIsSUFBSSxLQUFLLEVBQUU7QUFDWCxRQUFRLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSTtBQUM3QixRQUFRLFlBQVksQ0FBQyxTQUFTO0FBQzlCLEtBQUs7QUFDTCxDQUFDOztFQUFDLEZDdEJVLE1BQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0FBQ3BELElBQUk7QUFDSixRQUFRLElBQUksRUFBRSxrQkFBa0I7QUFDaEMsUUFBUSxRQUFRLEVBQUUsbUNBQW1DO0FBQ3JELFFBQVEsS0FBSyxFQUFFO0FBQ2YsWUFBWSxLQUFLLEVBQUUsT0FBTztBQUMxQixxQkFBcUIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUM1RCxxQkFBcUIsR0FBRyxDQUFDLE9BQU8sQ0FBQztBQUNqQyxZQUFZLFlBQVksRUFBRTtBQUMxQixnQkFBZ0IsV0FBVyxFQUFFLGFBQWE7QUFDMUMsZ0JBQWdCLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0FBQzlELGdCQUFnQixZQUFZLENBQUMsT0FBTztBQUNwQyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvQyxFQUFDO0FBQ0Q7QUFDQTtBQUNBLEFBQU8sTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLE1BQU07QUFDbkMsSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7QUFDckIsSUFBSSxTQUFTLEdBQUc7QUFDaEIsUUFBUSxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDaEQsS0FBSztBQUNMLENBQUMsQ0FBQzs7QUN2QlUsTUFBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUs7QUFDL0I7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUN0QixRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN4QixLQUFLLENBQUM7QUFDTixDQUFDOztBQ1RXLE1BQUMsT0FBTyxHQUFHLE1BQU07QUFDN0IsSUFBSTtBQUNKLFFBQVEsSUFBSSxFQUFFLHVCQUF1QjtBQUNyQyxRQUFRLFdBQVcsRUFBRSxpQkFBaUI7QUFDdEMsUUFBUSxRQUFRLEVBQUUsc0NBQXNDO0FBQ3hELFFBQVEsS0FBSyxFQUFFO0FBQ2YsWUFBWSxPQUFPLEVBQUUsU0FBUztBQUM5QixZQUFZLE1BQU0sRUFBRSxnQkFBZ0I7QUFDcEMsWUFBWSxLQUFLLEVBQUUsU0FBUztBQUM1QixZQUFZLFVBQVUsRUFBRSxVQUFVO0FBQ2xDLFlBQVksVUFBVSxFQUFFLE9BQU87QUFDL0IsWUFBWSxlQUFlLEVBQUUsU0FBUztBQUN0QyxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUk7QUFDSixRQUFRLElBQUksRUFBRSx5QkFBeUI7QUFDdkMsUUFBUSxXQUFXLEVBQUUsaUJBQWlCO0FBQ3RDLFFBQVEsUUFBUSxFQUFFLHNDQUFzQztBQUN4RCxRQUFRLEtBQUssRUFBRTtBQUNmLFlBQVksT0FBTyxFQUFFLFNBQVM7QUFDOUIsWUFBWSxNQUFNLEVBQUUsZ0JBQWdCO0FBQ3BDLFlBQVksS0FBSyxFQUFFLFNBQVM7QUFDNUIsWUFBWSxVQUFVLEVBQUUsVUFBVTtBQUNsQyxZQUFZLFVBQVUsRUFBRSxPQUFPO0FBQy9CLFlBQVksZUFBZSxFQUFFLFNBQVM7QUFDdEMsU0FBUztBQUNULEtBQUs7QUFDTDs7OzsifQ==