"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.indexUsers = exports.read_fragments = exports.imageName = exports.toHTML = exports.md_edit_wrap = exports.updateUsers = exports.importUsers = exports.mergeLatestUsersTest = exports.mergeLatestUsers = exports.importUser = exports.updateUser = exports.uploadAvatar = exports.createUser = exports.getForumUsers = exports._getForumUsers = exports.getUsers = exports.getUsersPath = exports.getDataPath = exports.get_user_display_name = exports.get_user_name = exports.oa_user_email = exports.filter_accepted = exports.filter_email_missing = exports.filter_invalid = exports.filter_email_only = exports.filter_valid = exports.read_users = void 0; const bluebird_1 = require("bluebird"); const lib_1 = require("./lib"); const utils_1 = require("@plastichub/core/utils"); const path = require("path"); const read_1 = require("@plastichub/fs/read"); const exists_1 = require("@plastichub/fs/exists"); const write_1 = require("@plastichub/fs/write"); const fs_1 = require("@plastichub/osr-cli-commons/fs"); const index_1 = require("../../index"); const slugify = require('slugify'); const core_1 = require("@plastichub/core"); const js_beautify_1 = require("js-beautify"); const dir_1 = require("@plastichub/fs/dir"); const osr_cli_commons_1 = require("@plastichub/osr-cli-commons"); const showdown_1 = require("showdown"); const URI = require("uri-js"); const constants_1 = require("../discourse/constants"); const filenamify = require('filenamify'); const fg = require('fast-glob'); const TEST = false; const read_users = (src) => { const raw = (0, read_1.sync)(src, 'json'); return raw.v3_mappins.filter((f) => f.data != null); }; exports.read_users = read_users; const filter_valid = (users) => { return users.filter((user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (!user.data.title) { return false; } if (!user.detail) { return false; } if (!user.detail.heroImageUrl) { return false; } if (user.data && user.data.jsError) { return false; } if (user.moderation !== 'accepted') { //return false } return true; }); }; exports.filter_valid = filter_valid; const filter_email_only = (users) => { return users.filter((user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (user.data && user.data.jsError) { return false; } if (!user.detail) { return false; } if (!user.detail.name) { return false; } if (user.data.urls.find((l) => l.name == 'Email') == undefined) { return false; } return true; }); }; exports.filter_email_only = filter_email_only; const filter_invalid = (users) => { return users.filter((user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (user.data && user.data.jsError) { return false; } if (!user.detail.name) { return true; } if (user.data.urls.find((l) => l.name == 'Email') == undefined) { return true; } if (user.moderation !== 'accepted') { return true; } return false; }); }; exports.filter_invalid = filter_invalid; const filter_email_missing = (users) => { return users.filter((user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (user.data && user.data.jsError) { return false; } if (!user.detail) { return false; } if (!user.detail.name) { return false; } if (user.moderation !== 'accepted') { return false; } if (!user.data.urls.find((l) => l.name == 'Email')) { return true; } return false; }); }; exports.filter_email_missing = filter_email_missing; const filter_accepted = (users) => { return users.filter((user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (!user.detail.heroImageUrl) { return false; } if (user.data && user.data.jsError) { return false; } if (user.moderation !== 'accepted') { return false; } return true; }); }; exports.filter_accepted = filter_accepted; const oa_user_email = (user) => { if (!user.data) { return false; } if (!user.geo) { return false; } if (!user.data.urls) { return false; } if (user.data && user.data.jsError) { return false; } let u = user.data.urls.find((l) => l.name == 'Email'); if (u) { return u.url.replace('mailto:', ''); } }; exports.oa_user_email = oa_user_email; const get_user_name = (user) => { let ret = (0, utils_1.replaceAll)('--', '-', (0, lib_1.sanitize)(filenamify(user._id)).replace(/^\-+/g, '').replace(/\-$/, '')); ret = ret.replace(/\-$/, ''); ret = ret.replace(/\_$/, ''); if (!(0, exports.oa_user_email)(user)) { ret += '-uc'; } return ret; }; exports.get_user_name = get_user_name; const get_user_display_name = (user) => (0, utils_1.replaceAll)('--', '-', (0, lib_1.sanitize)(filenamify(user.data.title)).replace(/^\-+/g, '').replace(/\-$/, '')); exports.get_user_display_name = get_user_display_name; const getDataPath = (_path = '') => path.resolve(path.join((0, fs_1.resolve)(constants_1.DATA_PATH), _path)); exports.getDataPath = getDataPath; const getUsersPath = () => path.resolve((0, fs_1.resolve)(TEST ? constants_1.LATEST_TEST : constants_1.LATEST_TRACK)); exports.getUsersPath = getUsersPath; const getUsers = () => (0, read_1.sync)(path.resolve((0, exports.getUsersPath)()), 'json') || []; exports.getUsers = getUsers; let uPage = 1; let usersAll = []; const _getForumUsers = async (d, page, detail) => { if (uPage == 1) { usersAll = []; } let users = await d.getUsers(page); if (users.length) { usersAll = usersAll.concat(users); uPage++; return (0, exports._getForumUsers)(d, uPage, detail); } else { uPage = 1; (0, write_1.sync)(path.resolve(constants_1.F_USERS_NOW), usersAll); let fUsers = (0, read_1.sync)(path.resolve(constants_1.F_USERS_ALL), 'json') || []; const add = async (u) => { return new Promise((resolve, reject) => { let fUser = fUsers.find((fu) => u.id == fu.id); if (!fUser) { fUsers.push(u); fUser = u; } if (!fUser.detail) { index_1.logger.debug('Retrieve User Detail ' + u.name); setTimeout(() => { d.getUser(fUser.id).then((detail) => { if (detail) { fUser.detail = detail; } (0, write_1.sync)(path.resolve('./fusers-all.json'), fUsers); resolve(fUser); }); }, 200); } else { resolve(fUser); } }); }; return await bluebird_1.Promise.resolve(usersAll).map((u) => { return add(u); }, { concurrency: 1 }); } }; exports._getForumUsers = _getForumUsers; const getForumUsers = async (d, detail) => { if (!constants_1.FETCH_DUSERS) { return (0, read_1.sync)((0, exports.getDataPath)(constants_1.F_USERS_ALL), 'json') || []; } return (0, exports._getForumUsers)(d, uPage, detail); }; exports.getForumUsers = getForumUsers; const createUser = async (discourse, oa_user) => { /* Bazar https://shop.osr-plastic.org Website website2 Instagram https://www.instagram.com/osr_plastic/ Directory / Map Url https://www.google.com/maps/contrib/117674167598277014013 OSR - Marketplace Url https://shop.osr-plastic.org/plastichub/ */ if (!oa_user.data.title) { return -120; } let name = (0, utils_1.replaceAll)('--', '-', (0, exports.get_user_display_name)(oa_user).replace(/^\-+/g, '').replace(/\-$/, '')); let user_name = (0, exports.get_user_name)(oa_user); name = user_name.replace(/\-$/, ''); name = user_name.replace(/\_$/, ''); let opts = { "name": name, "email": (0, exports.oa_user_email)(oa_user) || `${user_name}_uc@osr-plastic.org`, "password": (0, constants_1.DEFAULT_PASSWORD)(), "username": user_name, "active": true, "approved": true, "user_fields[1]": true }; let user = await discourse.createUser(opts); if (name.length < 4) { return -120; } if (user_name.length > 50) { return -120; } if (user && user.errors) { if (user.message === "Username must be no more than 50 characters" || user.message === 'Username must not contain a sequence of 2 or more special chars (.-_)') { return -120; } if (user.message === "Username must be unique" || user.message === "Primary email has already been taken") { return -100; } if (user.errors.email && user.errors.username) { user = await discourse.getUserByUsername(user_name); if (user && user.id && !oa_user._didSetGroup) { try { let gret = await discourse.updateGroup(user_name, constants_1.OA_USER_IMPORT_GROUP); } catch (e) { index_1.logger.error('error adding to group', user_name); } return user.id; } ; } index_1.logger.error('Error creating user ' + user_name, user.errors); } if (user && user.user_id) { try { await discourse.updateGroup(user_name, constants_1.OA_USER_IMPORT_GROUP); return user.user_id; } catch (e) { index_1.logger.error('error adding to group', user_name); return user.user_id; } } else { if (user && user.message && user.message == 'Username must be unique\nPrimary email has already been taken') { index_1.logger.error('already created', oa_user.detail.name); return -10; } else if (user && user.message && user.message == 'Your account is activated and ready to use.') { if (user.user_id) { return user.user_id; } return -10; } else { index_1.logger.debug('cant create user ' + oa_user.detail.name, user); } return null; } return null; }; exports.createUser = createUser; const uploadAvatar = async (discourse, name, filePath) => { const users = (0, exports.getUsers)(); const index = users.findIndex((u) => u.detail.name == name); try { const upped = await discourse.upload(1, filePath); const data = upped.data; if (data && data.id) { users[index].upload_id = data.id; index_1.logger.debug('uploaded avatar ' + name + ' ' + data.id); (0, write_1.sync)((0, exports.getUsersPath)(), users); } else { index_1.logger.error('upload - error', name); } return users; } catch (error) { users[index].upload_id = -1; index_1.logger.error('error uploading avatar', name); (0, write_1.sync)((0, exports.getUsersPath)(), users); } }; exports.uploadAvatar = uploadAvatar; const uploadAvatars = async (discourse, users) => { const toBeUploaded = users.filter((u) => { if (u.upload_id) { return false; } const hero = (0, lib_1.getImageName)(u.detail.heroImageUrl); const avatar = findAvatar(u, hero); if (!avatar) { index_1.logger.error('cant find avatar : ', u._id, hero); return false; } u.avatar = avatar; return true; }); return await bluebird_1.Promise.resolve(toBeUploaded).map((u) => { if (!u.detail.name) { return; } index_1.logger.debug('upload avatar : ' + u._id); const t = (0, exports.uploadAvatar)(discourse, u.detail.name, u.avatar); return t; }, { concurrency: 1 }); }; const findAvatar = (user, filename) => { const root = path.resolve((0, fs_1.resolve)(constants_1.DATA_PATH)); const _path = path.resolve(`${root}/${user._id}/${filename}`); if ((0, exists_1.sync)(_path)) { return _path; } const files = fg.sync('**/**/*' + filename + '*', { dot: true, cwd: root, absolute: true }); if (files.length == 0) { return false; } return files[0]; }; ///////////////////////////////////////////////////// // // users // const updateUser = async (discorse, oa_user) => { const users = (0, exports.getUsers)(); const index = users.findIndex((u) => u.detail.name == oa_user.detail.name); const user_name = (0, utils_1.replaceAll)('--', '-', (0, exports.get_user_name)(oa_user).replace(/^\-+/g, '').replace(/\-$/, '')); let ret = null; try { ret = await discorse.updateUser(user_name, { name: oa_user.data.title }); try { let location; if (oa_user.geo) { location = `${oa_user.geo.continent} / ${oa_user.geo.countryName} / ${oa_user.geo.city} `; } let website; if (oa_user.data) { website = oa_user.data.urls.find((l) => l.name == 'Website'); if (website) { website = website.url; } } let description; if (oa_user.data) { if (oa_user.data.description) { description += oa_user.data.description; } description += '\n'; if (oa_user.data.services) { let services = `### Services \n`; let hasServices = false; for (let s in oa_user.data.services[0]) { if (oa_user.data.services[0][s]) { services += `- [x] ${(0, utils_1.capitalize)(s)}\n`; hasServices = true; } } if (hasServices) { description += services; } } } let links = ''; if (oa_user.data.urls) { links = oa_user.data.urls.filter((r) => r.name !== 'Bazar' && r.name !== 'sponsor the work').map((l) => { let label = '' + l.name; if (label === 'Social media') { if (l.url.indexOf('facebook') !== -1) { label = 'Facebook'; } if (l.url.indexOf('instagram') !== -1) { label = 'Instagram'; } } label += " - " + l.url; label = label.replace("https://", ""); label = label.replace("http://", ""); label = label.replace("mailto:", ""); return `${label}`; }).join("
\n"); description += '\n### Links\n'; description += links; } if (oa_user.location) { description += `\n\n Get Directions\n`; } let updatePrefs = await discorse.updateUserProfile(user_name, { bio_raw: (0, utils_1.replaceAll)('undefined', '', description), location, website }); } catch (error) { index_1.logger.error(`Error updating user prefs : ${user_name}`); } } catch (error) { index_1.logger.error('error updating user', oa_user._id, error.message); return; } if (ret.status === 200) { users[index].didUpdateName = true; index_1.logger.debug('did update user', oa_user._id, ' # ', oa_user.data.title); (0, write_1.sync)((0, exports.getUsersPath)(), users); } else { index_1.logger.error('did update user failed ', oa_user._id); } }; exports.updateUser = updateUser; const importUser = async (discorse, oa_user) => { const users = (0, exports.getUsers)(); const index = users.findIndex((u) => u._id == oa_user._id); let user = null; try { user = await (0, exports.createUser)(discorse, oa_user); } catch (error) { debugger; index_1.logger.error('error creating user', error); return false; } if (user === -100) { users[index].alreadyExists = true; (0, write_1.sync)((0, exports.getUsersPath)(), users); return; } if (user === -120) { users[index].invalidData = true; (0, write_1.sync)((0, exports.getUsersPath)(), users); return; } if (user && users[index].upload_id && !users[index]._didSetAvatar) { try { await discorse.setUserAvatar((0, exports.get_user_name)(oa_user), users[index].upload_id); } catch (e) { index_1.logger.error('error setting avatar', (0, exports.get_user_name)(oa_user)); } } const _t = users[index]; if (user > 0) { users[index].f_id = user; users[index]._didSetAvatar = true; users[index]._didSetGroup = true; index_1.logger.debug('\t created ' + oa_user.data.title); (0, write_1.sync)((0, exports.getUsersPath)(), users); } else { index_1.logger.error('cant create user - error', oa_user.detail.name, user); } return users[index]; }; exports.importUser = importUser; const mergeLatestUsers = (discorse, options, oa_users) => { const users = (0, exports.getUsers)(); oa_users.forEach((u) => { const tUser = users.find((tu) => { return tu._id === u._id; }); if (!tUser) { users.push(u); } }); index_1.logger.debug(`Merged users to ${(0, exports.getUsersPath)()}`); (0, write_1.sync)((0, exports.getUsersPath)(), users); return users; }; exports.mergeLatestUsers = mergeLatestUsers; const mergeLatestUsersTest = (discorse, options, oa_users) => { const users = ((0, read_1.sync)(constants_1.LATEST_TEST, 'json') || []); oa_users.forEach((u) => { const tUser = users.find((u) => { return u._id === u._id; }); if (!tUser) { users.push(u); } }); (0, write_1.sync)(options.track, users); return users; }; exports.mergeLatestUsersTest = mergeLatestUsersTest; const importUsers = async (discorse, options, oa_users) => { index_1.logger.debug('read users from ', path.resolve((0, exports.getUsersPath)())); let users = (0, exports.mergeLatestUsers)(discorse, options, oa_users); //const users = mergeLatestUsersTest(discorse, options, oa_users) users = users.filter((u) => { if (u.f_id || u.f_id < 0) { return false; } if (u.detail.name === 'plastichub' || u.detail.name === 'lu' || u.detail.name === 'timberstar' || u.detail.name === 'nickname') { return false; } if (u.alreadyExists || u.invalidData) { return false; } return true; }); index_1.logger.debug('Create Users ' + users.length + ' Total | Left: ' + users.length); await uploadAvatars(discorse, users); return await bluebird_1.Promise.resolve(users).map((u) => { index_1.logger.debug('import user ' + (0, exports.get_user_name)(u)); try { return new Promise((resolve, reject) => { setTimeout(() => { const d = (0, exports.importUser)(discorse, u); if (d) { d.then(resolve); } else { reject(); } }, 500); }); } catch (e) { debugger; index_1.logger.error('error creating user ' + u._id, e); } }, { concurrency: 1 }); }; exports.importUsers = importUsers; const updateUsers = async (discorse, options, oa_users) => { // https://forum.osr-plastic.org/u/easymoulds/preferences/profile const users = (0, exports.mergeLatestUsers)(discorse, options, oa_users); //const users = mergeLatestUsersTest(discorse, options, oa_users) let toBeCreated = users.filter((u) => { if (u.f_id || u.f_id < 0) { return true; } if (u.didUpdateName) { return false; } return true; }); const testUser = 'easymoulds'; const test = toBeCreated.find((u) => { return u._id === testUser; }); // toBeCreated = [test] return await bluebird_1.Promise.resolve(toBeCreated).map((u) => { /* if (u.didUpdateName) { return false } */ try { return new Promise((resolve, reject) => { setTimeout(() => { const d = (0, exports.updateUser)(discorse, u); if (d) { d.then(resolve); } else { reject(); } }, 200); }); } catch (e) { debugger; index_1.logger.error('error creating user ' + u._id, e); } }, { concurrency: 1 }); }; exports.updateUsers = updateUsers; const md_edit_wrap = (content, f, prefix = '', context = '') => { return (0, js_beautify_1.html_beautify)(`
${content}
`); }; exports.md_edit_wrap = md_edit_wrap; const toHTML = (path, markdown) => { const content = (0, read_1.sync)(path, 'string'); if (!markdown) { let converter = new showdown_1.Converter({ tables: true }); converter.setOption('literalMidWordUnderscores', 'true'); return converter.makeHtml(content); } else { return content; } }; exports.toHTML = toHTML; const imageName = (url) => { if (!url) { return ""; } try { const parsed = URI.parse(decodeURIComponent(url)); const pParsed = path.parse(parsed.path); return (0, lib_1.sanitize)(decodeURIComponent(pParsed.base)); } catch (error) { index_1.logger.error('error image name : ', url); return ""; } }; exports.imageName = imageName; const read_fragments = (src, config, prefix = '', context = '') => { if (!(0, exists_1.sync)(src)) { //debug.warn(`Create template folder ${src}`); (0, dir_1.sync)(src); } let fragments = (0, osr_cli_commons_1.files)(src, '*.html'); fragments.map((f) => { config[path.parse(f).name] = (0, exports.md_edit_wrap)((0, exports.toHTML)(f, true), f, prefix, context); }); fragments = (0, osr_cli_commons_1.files)(src, '*.md'); fragments.map((f) => { config[path.parse(f).name] = (0, exports.md_edit_wrap)((0, exports.toHTML)(f, false), f, prefix, context); }); return config; }; exports.read_fragments = read_fragments; const indexUsers = async (discorse, options, oa_users) => { let users = (0, exports.mergeLatestUsers)(discorse, options, oa_users); users = users.filter((u) => { if (u.f_id && u.data && u.geo) { return true; } return false; }); const continents = []; const countries = []; const navIndex = []; users.forEach((u) => { if (!u.geo || !u.data || u.data.jsError || !u.detail || !u.detail.heroImageUrl) { return; } if (!u.detail.heroImageUrl) { return; } let code = null; if (u.geo.continent && continents.indexOf(u.geo.continent) == -1) { continents.push(u.geo.continent); navIndex.push({ title: u.geo.continent, url: `/users/${slugify(u.geo.continent)}.html`, children: [], code: u.geo.continentCode // code:u.geo.continentCode }); } if (countries.indexOf(u.geo.countryName) == -1) { countries.push(u.geo.countryName); } const c = navIndex.find((c) => c.title === u.geo.continent); if (c) { const cc = c.children.find((i) => i.title == u.geo.countryName); if (!cc) { c.children.push({ title: u.geo.countryName, url: `/users/${slugify(c.title)}.html#${slugify(u.geo.countryName.toLocaleLowerCase())}`, postTitle: `Directory - ${u.geo.countryName}` }); } } }); navIndex.sort((a, b) => { if (a.title < b.title) { return -1; } if (a.title > b.title) { return 1; } return 0; }); navIndex.forEach((c) => { c.children.sort((a, b) => { if (a.title < b.title) { return -1; } if (a.title > b.title) { return 1; } return 0; }); }); const directoryRoot = path.resolve((0, fs_1.resolve)('${OSR_ROOT}/osr-directory/pp')); const createContinentPage = (continent) => { const templates_path = path.resolve(`${directoryRoot}/templates`); if (!(0, exists_1.sync)(templates_path)) { index_1.logger.error(`\t Cant find templates at ${templates_path}, path doesn't exists`); return; } const cPath = path.resolve(`${directoryRoot}/templates/config.json`); const config = (0, read_1.sync)(cPath, 'json'); let fragments = { ...config }; (0, exports.read_fragments)(templates_path, fragments, "product_rel_path_name", "machine"); let templateCountry = (0, read_1.sync)(path.resolve(`${templates_path}/country_users.md`), 'string'); const ccountries = {}; let code = null; users.forEach((u) => { if (!u.geo || !u.data || u.data.jsError || !u.detail || !u.detail.heroImageUrl) { return; } if (!u.detail.heroImageUrl) { return; } if (u.geo.continent && u.geo.continent === continent) { if (!code) { code = u.geo.continentCode; } if (!ccountries[u.geo.countryName]) { ccountries[u.geo.countryName] = []; } ccountries[u.geo.countryName].push(u); } }); if (continent === 'Africa') { //debugger; } let weight = 100; for (var country in ccountries) { let cPage = ""; if (country === 'Kenya') { //debugger; } cPage += `\n#### ${slugify(country)}\n\n`; if (country === 'undefined' || country === 'unknown' || !country) { return; } cPage += '
'; cPage += '
'; let cusers = ccountries[country]; cusers = cusers.sort((a, b) => a.type === b.type ? 1 : -1); const cUsersC = cusers.map((u) => { const prefix = u.moderation === 'rejected' ? "Censored" : ""; const image = `/users/${u._id}/${encodeURIComponent((0, lib_1.sanitize)((0, exports.imageName)(u.detail.heroImageUrl)))}`; const title = u.data && u.data.title ? u.data.title : u._id; const uUrl = `/directory/users/${u._id}`; let censored = u.moderation === 'rejected' ? 'Yes' : 'No'; return `
${title}
Type: ${u.type}
Censored: ${censored}
${u.geo.principalSubdivision} / ${u.geo.locality} - ${u.geo.principalSubdivisionCode} - ${u.geo.postcode}
`; }); cPage += cUsersC.join(''); cPage += '
'; country = country.replace(' (the)', ''); /* const cPagePath = path.resolve(`${kb}/src/directory/users_${sanitize(slugify(country))}-${code}.md`) const title = 'Users - ' + country; cPage = substitute(templateCountry, { ...fragments, title: title, keywords: 'Precious Plastic, Precious Plastic Users - ' + country, content: html_beautify(cPage), continent: slugify(continent), country: slugify(country), identifier: country + "-" + continent, weight: weight }); weight++; write(cPagePath, cPage); console.log('write ' + cPagePath); */ } /* content = substitute(template, { ...fragments, title: 'Precious Plastic - Users ' + continent, keywords: 'Precious Plastic, Precious Plastic Users - ' + continent, content: content, continent: slugify(continent) }); */ //const index_md = path.resolve(`${root}/_pages/users_${code}.md`); //write(index_md, content); }; const templates_path = path.resolve(`${directoryRoot}/templates`); const createCountryPages = async (index, indexPath) => { let i = 0; for await (const continent of index) { const countries = continent.children; for await (const country of countries) { const d = 0; } } }; await createCountryPages(navIndex, './'); const createIntroPage = async (users, index, dst) => { let template = (0, read_1.sync)(path.resolve(`${templates_path}/intro_users.md`)); let content = ""; const usersPerCountry = (country) => { return users.filter((u) => u.geo.countryName === country); }; index.forEach((i) => { const heading = `## ${i.title}`; let countries = ''; i.children.forEach((c) => { let title = c.title.replace(/ *\([^)]*\) */g, ""); const nb = usersPerCountry(c.title).length; title = `${title} \(${nb}\)`; const cPagePath = `/directory/users_${(0, lib_1.sanitize)(slugify(c.title))}-${i.code}`; countries += `- [${(title)}](${cPagePath.toLowerCase()})\n`; }); content += `${heading}\n ${countries}`; }); (0, write_1.sync)(dst, (0, core_1.substitute)(template, { content: content, /*hidden: data.v3_mappins.filter((u) => u.moderation !== "accepted").length, total: data.v3_mappins.length*/ })); let data; try { data = await discorse.updatePost(constants_1.OA_DIRECTORY_OVERVIEW_TOPIC, content); debugger; //logger.debug('update post : ' + options.title + ' : ' + data.id + ' | topic id ' + data.topic_id) } catch (e) { return false; } }; // await createIntroPage(users, navIndex, './index.md') /* return await BPromise.resolve(users).map((u: IImportUser) => { try { return new Promise((resolve, reject) => { setTimeout(() => { const d = updateUser(discorse, u) if (d) { d.then(resolve) } else { reject() } }, 200) }) } catch (e) { debugger; logger.error('error creating user ' + u._id, e) } }, { concurrency: 1 }) */ }; exports.indexUsers = indexUsers; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL29hL3VzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUE4QztBQUs5QywrQkFBOEM7QUFFOUMsa0RBQXdFO0FBQ3hFLDZCQUE0QjtBQUM1Qiw4Q0FBa0Q7QUFDbEQsa0RBQXNEO0FBQ3RELGdEQUFvRDtBQUVwRCx1REFBd0Q7QUFFeEQsdUNBQW9DO0FBRXBDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUVsQywyQ0FBNEQ7QUFFNUQsNkNBQTJDO0FBQzNDLDRDQUFrRDtBQUNsRCxpRUFBa0U7QUFDbEUsdUNBQW9DO0FBQ3BDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUU3QixzREFXK0I7QUFLL0IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUcvQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUE7QUFJWCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBZ0IsRUFBRTtJQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFBLFdBQUksRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFRLENBQUE7SUFDcEMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQTtBQUN2RCxDQUFDLENBQUE7QUFIWSxRQUFBLFVBQVUsY0FHdEI7QUFFTSxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUNqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUE7U0FDZjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsQixPQUFPLEtBQUssQ0FBQTtTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQTtTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsT0FBTyxLQUFLLENBQUE7U0FDZjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDaEMsY0FBYztTQUNqQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBbkNZLFFBQUEsWUFBWSxnQkFtQ3hCO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO0lBQzlDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQTtTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDNUQsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQTVCWSxRQUFBLGlCQUFpQixxQkE0QjdCO0FBRU0sTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUUzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWCxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUdELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQTtTQUNkO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQS9CWSxRQUFBLGNBQWMsa0JBK0IxQjtBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWCxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsT0FBTyxLQUFLLENBQUE7U0FDZjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQTtTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBL0JZLFFBQUEsb0JBQW9CLHdCQStCaEM7QUFFTSxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUE7U0FDZjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUMzQixPQUFPLEtBQUssQ0FBQTtTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQTFCWSxRQUFBLGVBQWUsbUJBMEIzQjtBQUVNLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFO0lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1osT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNYLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELElBQUksQ0FBQyxFQUFFO1FBQ0gsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUE7S0FDdEM7QUFFTCxDQUFDLENBQUE7QUFsQlksUUFBQSxhQUFhLGlCQWtCekI7QUFFTSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBRTtJQUMvQyxJQUFJLEdBQUcsR0FBRyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFBLGNBQVEsRUFBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFdkcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUU1QixJQUFJLENBQUMsSUFBQSxxQkFBYSxFQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLEdBQUcsSUFBSSxLQUFLLENBQUE7S0FDZjtJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBWFksUUFBQSxhQUFhLGlCQVd6QjtBQUVNLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFBLGNBQVEsRUFBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQXBKLFFBQUEscUJBQXFCLHlCQUErSDtBQUUxSixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLFlBQU8sRUFBQyxxQkFBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUFoRixRQUFBLFdBQVcsZUFBcUU7QUFFdEYsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLFlBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUFXLENBQUMsQ0FBQyxDQUFDLHdCQUFZLENBQUMsQ0FBQyxDQUFBO0FBQTdFLFFBQUEsWUFBWSxnQkFBaUU7QUFFbkYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUUsSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLG9CQUFZLEdBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBMEIsSUFBSSxFQUFFLENBQUE7QUFBM0YsUUFBQSxRQUFRLFlBQW1GO0FBRXhHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQTtBQUNiLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQTtBQUVWLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxDQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBRWhFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtRQUNaLFFBQVEsR0FBRyxFQUFFLENBQUE7S0FDaEI7SUFDRCxJQUFJLEtBQUssR0FBUSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFDUixPQUFPLElBQUEsc0JBQWMsRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzNDO1NBQU07UUFDSCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRVYsSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEdBQXFCLElBQUEsV0FBSSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQVMsQ0FBQztRQUVwRixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBaUIsRUFBRSxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ25DLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2QsS0FBSyxHQUFHLENBQUMsQ0FBQTtpQkFDWjtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDZixjQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDOUMsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDaEMsSUFBSSxNQUFNLEVBQUU7Z0NBQ1IsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7NkJBQ3hCOzRCQUNELElBQUEsWUFBSyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTs0QkFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO3dCQUNsQixDQUFDLENBQUMsQ0FBQTtvQkFDTixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7aUJBQ1Y7cUJBQU07b0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO2lCQUNqQjtZQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFBO1FBQ0QsT0FBTyxNQUFNLGtCQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQWlCLEVBQUUsRUFBRTtZQUM5RCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtLQUV6QjtBQUNMLENBQUMsQ0FBQTtBQTlDWSxRQUFBLGNBQWMsa0JBOEMxQjtBQUNNLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUE2QixFQUFFO0lBQ3hFLElBQUksQ0FBQyx3QkFBWSxFQUFFO1FBQ2YsT0FBTyxJQUFBLFdBQUksRUFBQyxJQUFBLG1CQUFXLEVBQUMsdUJBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQVMsQ0FBQTtLQUM3RDtJQUNELE9BQU8sSUFBQSxzQkFBYyxFQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDM0MsQ0FBQyxDQUFBO0FBTFksUUFBQSxhQUFhLGlCQUt6QjtBQUVNLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxTQUFxQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUM1RTs7Ozs7Ozs7Ozs7TUFXRTtJQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFBO0tBQ2Q7SUFFRCxJQUFJLElBQUksR0FBRyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFBLDZCQUFxQixFQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3hHLElBQUksU0FBUyxHQUFHLElBQUEscUJBQWEsRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUV0QyxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRW5DLElBQUksSUFBSSxHQUFHO1FBQ1AsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsSUFBQSxxQkFBYSxFQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsU0FBUyxxQkFBcUI7UUFDcEUsVUFBVSxFQUFFLElBQUEsNEJBQWdCLEdBQUU7UUFDOUIsVUFBVSxFQUFFLFNBQVM7UUFDckIsUUFBUSxFQUFFLElBQUk7UUFDZCxVQUFVLEVBQUUsSUFBSTtRQUNoQixnQkFBZ0IsRUFBRSxJQUFJO0tBQ3pCLENBQUE7SUFFRCxJQUFJLElBQUksR0FBUSxNQUFNLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFaEQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFBO0tBQ2Q7SUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUE7S0FDZDtJQUVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFHckIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLDZDQUE2QztZQUM5RCxJQUFJLENBQUMsT0FBTyxLQUFLLHVFQUF1RSxFQUFFO1lBQzFGLE9BQU8sQ0FBQyxHQUFHLENBQUE7U0FDZDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyx5QkFBeUIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLHNDQUFzQyxFQUFFO1lBQ3ZHLE9BQU8sQ0FBQyxHQUFHLENBQUE7U0FDZDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDM0MsSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ25ELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUMxQyxJQUFJO29CQUNBLElBQUksSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsZ0NBQW9CLENBQUMsQ0FBQztpQkFDM0U7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1IsY0FBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsQ0FBQTtpQkFDbkQ7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFBO2FBQ2pCO1lBQUEsQ0FBQztTQUNMO1FBQ0QsY0FBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0tBQ2hFO0lBQ0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUN0QixJQUFJO1lBQ0EsTUFBTSxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxnQ0FBb0IsQ0FBQyxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN2QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsY0FBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUNoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdkI7S0FFSjtTQUFNO1FBQ0gsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLCtEQUErRCxFQUFFO1lBQ3pHLGNBQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNwRCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ2Q7YUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksNkNBQTZDLEVBQUU7WUFDOUYsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN2QjtZQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDZDthQUFNO1lBQ0gsY0FBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUE7QUE1RlksUUFBQSxVQUFVLGNBNEZ0QjtBQUVNLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsR0FBRSxDQUFBO0lBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFBO0lBQzNELElBQUk7UUFDQSxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFFdkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNqQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7WUFDaEMsY0FBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN2RCxJQUFBLFlBQUssRUFBQyxJQUFBLG9CQUFZLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtTQUMvQjthQUFNO1lBQ0gsY0FBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUN2QztRQUNELE9BQU8sS0FBSyxDQUFBO0tBQ2Y7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDM0IsY0FBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1QyxJQUFBLFlBQUssRUFBQyxJQUFBLG9CQUFZLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUMvQjtBQUVMLENBQUMsQ0FBQTtBQXJCWSxRQUFBLFlBQVksZ0JBcUJ4QjtBQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxTQUFxQixFQUFFLEtBQW9CLEVBQUUsRUFBRTtJQUV4RSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDcEMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFO1lBQ2IsT0FBTyxLQUFLLENBQUE7U0FDZjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUEsa0JBQVksRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULGNBQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNoRCxPQUFPLEtBQUssQ0FBQTtTQUNmO1FBQ0QsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDakIsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sTUFBTSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRTtRQUMvRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsT0FBTTtTQUNUO1FBQ0QsY0FBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsTUFBTSxDQUFDLEdBQUcsSUFBQSxvQkFBWSxFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUUxQixDQUFDLENBQUE7QUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQWlCLEVBQUUsUUFBUSxFQUFFLEVBQUU7SUFFL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLFlBQU8sRUFBQyxxQkFBUyxDQUFDLENBQUMsQ0FBQTtJQUU3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUM3RCxJQUFJLElBQUEsYUFBTSxFQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsT0FBTyxLQUFLLENBQUE7S0FDZjtJQUNELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNuQixPQUFPLEtBQUssQ0FBQztLQUVoQjtJQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUMsQ0FBQTtBQUVELHFEQUFxRDtBQUNyRCxFQUFFO0FBQ0YsU0FBUztBQUNULEVBQUU7QUFDSyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsUUFBb0IsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFFM0UsTUFBTSxLQUFLLEdBQUcsSUFBQSxnQkFBUSxHQUFFLENBQUE7SUFFeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUUxRSxNQUFNLFNBQVMsR0FBRyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFBLHFCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFdkcsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDO0lBRXBCLElBQUk7UUFFQSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUN2QyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQzNCLENBQUMsQ0FBQTtRQUdGLElBQUk7WUFFQSxJQUFJLFFBQVEsQ0FBQTtZQUNaLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDYixRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFBO2FBQzVGO1lBR0QsSUFBSSxPQUFPLENBQUE7WUFDWCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQTtnQkFDNUQsSUFBSSxPQUFPLEVBQUU7b0JBQ1QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUE7aUJBQ3hCO2FBQ0o7WUFHRCxJQUFJLFdBQVcsQ0FBQTtZQUNmLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDZCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMxQixXQUFXLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUE7aUJBQzFDO2dCQUVELFdBQVcsSUFBSSxJQUFJLENBQUE7Z0JBRW5CLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3ZCLElBQUksUUFBUSxHQUFHLGlCQUFpQixDQUFDO29CQUNqQyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3hCLEtBQUssSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQzdCLFFBQVEsSUFBSSxTQUFTLElBQUEsa0JBQVUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFBOzRCQUN0QyxXQUFXLEdBQUcsSUFBSSxDQUFDO3lCQUN0QjtxQkFDSjtvQkFDRCxJQUFJLFdBQVcsRUFBRTt3QkFDYixXQUFXLElBQUksUUFBUSxDQUFBO3FCQUMxQjtpQkFDSjthQUNKO1lBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO1lBQ2QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDbkIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FFNUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBRTdELENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1IsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBRXhCLElBQUksS0FBSyxLQUFLLGNBQWMsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs0QkFDbEMsS0FBSyxHQUFHLFVBQVUsQ0FBQzt5QkFDdEI7d0JBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs0QkFDbkMsS0FBSyxHQUFHLFdBQVcsQ0FBQzt5QkFDdkI7cUJBQ0o7b0JBRUQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUVyQyxPQUFPLFlBQVksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQTtnQkFDNUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUVsQixXQUFXLElBQUksZUFBZSxDQUFBO2dCQUM5QixXQUFXLElBQUksS0FBSyxDQUFBO2FBQ3ZCO1lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNsQixXQUFXLElBQUksb0RBQW9ELE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyx3QkFBd0IsQ0FBQTthQUMxSTtZQUdELElBQUksV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtnQkFDMUQsT0FBTyxFQUFFLElBQUEsa0JBQVUsRUFBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQztnQkFDakQsUUFBUTtnQkFDUixPQUFPO2FBQ1YsQ0FBQyxDQUFBO1NBR0w7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLGNBQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLFNBQVMsRUFBRSxDQUFDLENBQUE7U0FDM0Q7S0FFSjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osY0FBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvRCxPQUFNO0tBQ1Q7SUFHRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ2pDLGNBQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RSxJQUFBLFlBQUssRUFBQyxJQUFBLG9CQUFZLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUMvQjtTQUFNO1FBQ0gsY0FBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDdkQ7QUFDTCxDQUFDLENBQUE7QUFwSFksUUFBQSxVQUFVLGNBb0h0QjtBQUNNLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxRQUFvQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUUzRSxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFRLEdBQUUsQ0FBQTtJQUV4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUE7SUFFZixJQUFJO1FBQ0EsSUFBSSxHQUFHLE1BQU0sSUFBQSxrQkFBVSxFQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtLQUM3QztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osUUFBUSxDQUFBO1FBQ1IsY0FBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBRUQsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7UUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUNqQyxJQUFBLFlBQUssRUFBQyxJQUFBLG9CQUFZLEdBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUM1QixPQUFNO0tBQ1Q7SUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNmLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQy9CLElBQUEsWUFBSyxFQUFDLElBQUEsb0JBQVksR0FBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzVCLE9BQU07S0FDVDtJQUdELElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFO1FBQy9ELElBQUk7WUFDQSxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBQSxxQkFBYSxFQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUMvRTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsY0FBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFBLHFCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtTQUMvRDtLQUNKO0lBRUQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhCLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtRQUNWLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ2hDLGNBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsSUFBQSxZQUFLLEVBQUMsSUFBQSxvQkFBWSxHQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7S0FDL0I7U0FBTTtRQUNILGNBQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7S0FDdEU7SUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFqRFksUUFBQSxVQUFVLGNBaUR0QjtBQUVNLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBaUIsRUFBRSxRQUFzQixFQUFpQixFQUFFO0lBQ25HLE1BQU0sS0FBSyxHQUFVLElBQUEsZ0JBQVEsR0FBRSxDQUFBO0lBQy9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDNUIsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtJQUVMLENBQUMsQ0FBQyxDQUFBO0lBQ0YsY0FBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBQSxvQkFBWSxHQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELElBQUEsWUFBSyxFQUFDLElBQUEsb0JBQVksR0FBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzVCLE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQWRZLFFBQUEsZ0JBQWdCLG9CQWM1QjtBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBaUIsRUFBRSxRQUFzQixFQUFpQixFQUFFO0lBQ3ZHLE1BQU0sS0FBSyxHQUFVLENBQUMsSUFBQSxXQUFJLEVBQUMsdUJBQVcsRUFBRSxNQUFNLENBQU8sSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM1RCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQzFCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7SUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUEsWUFBSyxFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDM0IsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQyxDQUFBO0FBWlksUUFBQSxvQkFBb0Isd0JBWWhDO0FBRU0sTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFpQixFQUFFLFFBQXNCLEVBQUUsRUFBRTtJQUVyRixjQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBQSxvQkFBWSxHQUFFLENBQUMsQ0FBQyxDQUFBO0lBRTlELElBQUksS0FBSyxHQUFHLElBQUEsd0JBQWdCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN6RCxpRUFBaUU7SUFFakUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN2QixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1SCxPQUFPLEtBQUssQ0FBQTtTQUNmO1FBQ0QsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDbEMsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUMsQ0FBQyxDQUFBO0lBRUYsY0FBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFL0UsTUFBTSxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRXBDLE9BQU8sTUFBTSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRTtRQUN4RCxjQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxJQUFBLHFCQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvQyxJQUFJO1lBQ0EsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDbkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixNQUFNLENBQUMsR0FBRyxJQUFBLGtCQUFVLEVBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNqQyxJQUFJLENBQUMsRUFBRTt3QkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO3FCQUNsQjt5QkFBTTt3QkFDSCxNQUFNLEVBQUUsQ0FBQTtxQkFDWDtnQkFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFFWCxDQUFDLENBQUMsQ0FBQTtTQUVMO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixRQUFRLENBQUM7WUFDVCxjQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDbEQ7SUFDTCxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUUxQixDQUFDLENBQUE7QUE3Q1ksUUFBQSxXQUFXLGVBNkN2QjtBQUVNLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBaUIsRUFBRSxRQUFzQixFQUFFLEVBQUU7SUFDckYsNkVBQTZFO0lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUEsd0JBQWdCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMzRCxpRUFBaUU7SUFFakUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2pDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFBO0lBRTdCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNoQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFBO0lBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUYsdUJBQXVCO0lBRXZCLE9BQU8sTUFBTSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRTtRQUM5RDs7OztVQUlFO1FBRUYsSUFBSTtZQUNBLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osTUFBTSxDQUFDLEdBQUcsSUFBQSxrQkFBVSxFQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsSUFBSSxDQUFDLEVBQUU7d0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtxQkFDbEI7eUJBQU07d0JBQ0gsTUFBTSxFQUFFLENBQUE7cUJBQ1g7Z0JBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBRVgsQ0FBQyxDQUFDLENBQUE7U0FFTDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsUUFBUSxDQUFDO1lBQ1QsY0FBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2xEO0lBQ0wsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDMUIsQ0FBQyxDQUFBO0FBaERZLFFBQUEsV0FBVyxlQWdEdkI7QUFFTSxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDbEUsT0FBTyxJQUFBLDJCQUFhLEVBQUMsZ0JBQWdCLE1BQU0sV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxPQUFPLHNCQUFzQixPQUFPLFFBQVEsQ0FBQyxDQUFDO0FBQ3hJLENBQUMsQ0FBQTtBQUZZLFFBQUEsWUFBWSxnQkFFeEI7QUFDTSxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFBLFdBQUksRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFXLENBQUM7SUFDL0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNYLElBQUksU0FBUyxHQUFHLElBQUksb0JBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3RDO1NBQU07UUFDSCxPQUFPLE9BQU8sQ0FBQztLQUNsQjtBQUNMLENBQUMsQ0FBQTtBQVRZLFFBQUEsTUFBTSxVQVNsQjtBQUNNLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNOLE9BQU8sRUFBRSxDQUFBO0tBQ1o7SUFDRCxJQUFJO1FBQ0EsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBQSxjQUFRLEVBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDckQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLGNBQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxFQUFFLENBQUE7S0FDWjtBQUNMLENBQUMsQ0FBQTtBQVpZLFFBQUEsU0FBUyxhQVlyQjtBQUNNLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUVyRSxJQUFJLENBQUMsSUFBQSxhQUFNLEVBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZCw4Q0FBOEM7UUFDOUMsSUFBQSxVQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7S0FDZDtJQUNELElBQUksU0FBUyxHQUFHLElBQUEsdUJBQUssRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsb0JBQVksRUFBQyxJQUFBLGNBQU0sRUFBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsR0FBRyxJQUFBLHVCQUFLLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLG9CQUFZLEVBQUMsSUFBQSxjQUFNLEVBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUE7QUFoQlksUUFBQSxjQUFjLGtCQWdCMUI7QUFFTSxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQWlCLEVBQUUsUUFBc0IsRUFBRSxFQUFFO0lBRXBGLElBQUksS0FBSyxHQUFHLElBQUEsd0JBQWdCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUV6RCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNwQixNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUE7SUFFMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUM1RSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWhCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzlELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVM7Z0JBQ3RCLEdBQUcsRUFBRSxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPO2dCQUM5QyxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhO2dCQUN6QiwyQkFBMkI7YUFDOUIsQ0FBQyxDQUFBO1NBQ0w7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckM7UUFDRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLEVBQUU7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ0wsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVztvQkFDeEIsR0FBRyxFQUFFLFVBQVUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxPQUFPLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFzQixDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRTtvQkFDcEcsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7aUJBQ2hELENBQUMsQ0FBQTthQUNMO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDckMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQztTQUFFO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUFFO1lBQ3JDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLFlBQU8sRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUE7SUFFM0UsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBRXRDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxhQUFhLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxJQUFBLGFBQU0sRUFBQyxjQUFjLENBQUMsRUFBRTtZQUN6QixjQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixjQUFjLHVCQUF1QixDQUFDLENBQUM7WUFDakYsT0FBTztTQUNWO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsd0JBQXdCLENBQUMsQ0FBQTtRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFBLFdBQUksRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFlLENBQUE7UUFDaEQsSUFBSSxTQUFTLEdBQVEsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFBO1FBRWxDLElBQUEsc0JBQWMsRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTlFLElBQUksZUFBZSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxjQUFjLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekYsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUdoQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFFaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUM1RSxPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNQLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztpQkFDOUI7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNoQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7aUJBQ3RDO2dCQUVELFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3hCLFdBQVc7U0FDZDtRQUVELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqQixLQUFLLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtZQUU1QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFZixJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQ3JCLFdBQVc7YUFDZDtZQUVELEtBQUssSUFBSSxVQUFVLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUM5RCxPQUFPO2FBQ1Y7WUFDRCxLQUFLLElBQUkseUJBQXlCLENBQUM7WUFDbkMsS0FBSyxJQUFJLDREQUE0RCxDQUFDO1lBRXRFLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFBLGNBQVEsRUFBQyxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQzVELE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2dCQUMxRixPQUFPOytCQUNRLElBQUk7NkNBQ1UsS0FBSzs7K0JBRW5CLElBQUksS0FBSyxLQUFLO2tDQUNYLENBQUMsQ0FBQyxJQUFJO3NDQUNGLFFBQVE7OzBEQUVZLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVE7O3VCQUV6SSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUE7WUFDRixLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixLQUFLLElBQUksMEJBQTBCLENBQUM7WUFFcEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBbUJFO1NBQ0w7UUFHRDs7Ozs7Ozs7VUFRRTtRQUVGLG1FQUFtRTtRQUNuRSwyQkFBMkI7SUFDL0IsQ0FBQyxDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsWUFBWSxDQUFDLENBQUM7SUFFbEUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsS0FBWSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLEtBQUssRUFBRSxNQUFNLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQTtZQUNwQyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sSUFBSSxTQUFnQixFQUFFO2dCQUMxQyxNQUFNLENBQUMsR0FBQyxDQUFDLENBQUE7YUFDWjtTQUVKO0lBQ0wsQ0FBQyxDQUFBO0lBRUQsTUFBTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFFdkMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFFL0QsSUFBSSxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGNBQWMsaUJBQWlCLENBQUMsQ0FBQyxDQUFBO1FBRXJFLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUVoQixNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDLENBQUE7UUFDN0QsQ0FBQyxDQUFBO1FBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQy9CLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQTtZQUNsQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDakQsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7Z0JBQzFDLEtBQUssR0FBRyxHQUFHLEtBQUssTUFBTSxFQUFFLElBQUksQ0FBQTtnQkFDNUIsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLElBQUEsY0FBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzVFLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUE7WUFDL0QsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksR0FBRyxPQUFPLE1BQU0sU0FBUyxFQUFFLENBQUE7UUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFBLFlBQUssRUFBQyxHQUFHLEVBQUUsSUFBQSxpQkFBVSxFQUFDLFFBQVEsRUFBRTtZQUM1QixPQUFPLEVBQUUsT0FBTztZQUNoQjsyQ0FDK0I7U0FDbEMsQ0FBQyxDQUFDLENBQUE7UUFFSCxJQUFJLElBQVMsQ0FBQTtRQUNiLElBQUk7WUFDQSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLHVDQUEyQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ3RFLFFBQVEsQ0FBQTtZQUNSLG9HQUFvRztTQUN2RztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxLQUFLLENBQUE7U0FDZjtJQUVMLENBQUMsQ0FBQTtJQUVGLHVEQUF1RDtJQUd0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXNCRTtBQUNOLENBQUMsQ0FBQTtBQTdRWSxRQUFBLFVBQVUsY0E2UXRCIn0=