Таблиці даних
Таблиця даних (data frame) – це більш широко використовуваний у порівнянні з матрицею об’єкт, оскільки різні стовпці можуть містити різні типи даних (числовий, текстовий та ін.). Таблиця даних – найбільш часто використовувана структура даних в R. Набір даних про пацієнтів (табл. 2.1) складається з числових і текстових даних. Ці дані потрібно представити у вигляді таблиці даних, а не матриці, оскільки таблиця містить у собі дані різних типів. Таблиця даних створюється з допомогою функції data.frame():
mydata <- data.frame(col1, col2, col3, ...)
де col1, col2, col3, ... – це вектори будь-якого типу (текстового, числового або логічного), які стануть стовпцями таблиці. Назви кожному стовпчику можна оголосити з допомогою функції names(). Проілюструємо сказане на прикладі програмного коду.
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes, status)
patientdata
Кожен стовпець повинен містити дані тільки одного типу, водночас в одній таблиці даних можуть бути стовпчики з даними різного типу. Оскільки таблиці даних дуже близькі до того, що аналітики називають наборами даних, під час обговоренні таблиць даних ми будемо використовувати терміни стовпці та змінні в якості синонімів.
Існує кілька способів позначити елементи таблиці даних. Можна використовувати індекси, як ми робили це раніше (наприклад, для матриць), або можна вказувати номери стовпців. Наведений нижче програмний код на прикладі створеної раніше таблиці даних patientdata демонструє обидва способи.
patientdata[1:2]
patientdata[c("diabetes", "status")]
patientdata$age
[1] 25 34 28 52
Знак $ з третього прикладу використовується для позначення певної змінної в таблиці даних. Наприклад, якщо вам потрібно створити зведену таблицю типів діабету залежно від стану хворого, ви можете використовувати такий програмний код:
table(patientdata$diabetes, patientdata$status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
Оскільки додавання patientdata$ перед назвою кожної змінної може швидко набриднути, наявні команди для швидкого виклику змінної. Для спрощення програмного коду можна використовувати функції attach() і detach() або with().
Attach(), detach() і with()
Функція attach() додає зазначену таблицю даних до шляху пошуку R. Коли вказується ім’я змінної, програма шукає цю змінну в таблицях даних, що входять у траєкторію пошуку. У якості прикладу розглянемо таблицю даних mtcars з глави 1, використовуючи такий програмний код, щоби дізнатися основні статистичні дані витрат палива (mpg), а також відобразити значення цієї змінної на діаграмі залежно від робочого об’єму циліндрів двигуна (disp) і ваги машини (wt).
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)
Це можна також записати у вигляді
attach(mtcars)
summary(mpg)
plot(mpg, disp)
plot(mpg, wt)
detach(mtcars)
Функція detach() видаляє таблицю даних зі шляху пошуку. Зазначимо, що ця функція нічого не робить із самим об’єктом. Введення цієї команди необов’язкове, але воно корисне в процесі програмуванні, і про нього не слід забувати.
Обмеження даного методу стає очевидним, якщо в нас є кілька об’єктів з однаковими назвами. Розглянемо такий програмний код:
mpg <- c(25, 36, 47)
attach(mtcars)
The following object is masked _by_ .GlobalEnv:
mpg
plot(mpg, wt)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
mpg
[1] 25 36 47
Коли ми додали до траєкторії пошуку таблицю даних mtcars, у робочому просторі вже був об’єкт із назвою mpg. У подібних випадках перевагу отримує об’єкт, який був створений першим, а це не те, чого ми хотіли. Команда plot() не виконується, тому що mpg тепер складається з трьох елементів, а disp – з 32 елементів. Функції attach() і detach() найкраще використовувати в процесі роботи з однією таблицею даних, і ймовірність того, що у вас буде кілька об’єктів з однаковими іменами, мала. У будь-якому випадку звертайте увагу на попередження щодо маскування об’єктів однойменними об’єктами (objects are masked); іншими словами, об’єкти стають недоступними для безпосереднього виклику.
Альтернативний підхід полягає у використанні функції with(). Попередній приклад можна записати так:
with(mtcars, {
summary(mpg, disp, wt)
plot(mpg, disp)
plot(mpg, wt)
})


В цьому випадку команди всередині фігурних дужок належать таблиці даних mtcars. Тепер нам не доведеться піклуватися про конфлікт назв. Якщо потрібно виконати тільки одну команду (наприклад, summary(mpg)), фігурні дужки необов’язкові.
Обмеження функції with() полягає в тому, що вона не діє за межами фігурних дужок. Розглянемо такий приклад:
with(mtcars, {
stats <- summary(mpg)
stats
})
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
stats
Error: object 'stats' not found
Якщо потрібно створити об’єкти, які перебуватимуть поза конструкцією with(), використовуйте спеціальний символ присвоєння <<- замість звичайного <-. Цей прийом дозволить зберегти створений об’єкт у робочому просторі поза конструкцією with(). Це можна показати на прикладі такого програмного коду:
with(mtcars, {
nokeepstats <- summary(mpg)
keepstats <<- summary(mpg)
})
nokeepstats
Error: object 'nokeepstats' not found
keepstats
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
Здебільшого у посібниках з R рекомендується використовувати with(), а не attach(), проте вибір залежить від індивідуальних переваг і повинен ґрунтуватися на тому, чого ви хочете досягти.
Назви рядків
У прикладі з даними про хворих стовпець patientID використовувався для позначення окремих людей у наборі даних. В R назви рядків можуть бути призначені з допомогою параметра rowname функції створення таблиці даних. Наприклад, програмний код
patientdata <- data.frame(patientID, age, diabetes,
status, row.names=patientID)
призначає patientID змінній, яка використовуватиметься для позначення рядків під час виведення даних і створення діаграм в R.
Фактори
Як ми вже дізналися, змінні бувають номінальними, порядковими або неперервними. Номінальні змінні – це категоріальні дані, які неможливо впорядкувати. Змінна Diabetes – це приклад номінальних даних. Навіть якщо ми позначимо Type 1 (тип 1) одиницею, а Type 2 (тип 2) – двійкою, однаково ці цифри неможливо порівнювати в термінах «більше – менше». Порядкові дані можна впорядкувати, але не оцінити кількісно. Змінна Status – хороший приклад порядкових даних. Зрозуміло, що у хворого з поганим (poor) самопочуттям справи йдуть не так добре, як у хворого, чий стан покращився (improved), але не ясно, наскільки. Неперервні змінні можуть приймати будь-яке значення в межах певного діапазону. Їхнє значення можна впорядкувати і зрозуміти, наскільки одне з них більше іншого. Вік, виражений у роках, є неперервною змінною й може приймати такі значення, як 14.5 або 22.8, а також будь-які значення між цими двома. Ви знаєте, що п’ятнадцятирічний підліток старше чотирнадцятирічного на один рік.
Категоріальні (номінальні й порядкові) дані називаються в R факторами. Фактори дуже важливі в R, оскільки вони визначають, як дані будуть проаналізовані і графічно представлені.
Функція factor() зберігає категоріальні дані у вигляді вектора з цілих чисел у діапазоні від одного до k (де k – число унікальних значень категоріальної змінної) й у вигляді внутрішнього вектора з ланцюжка символів (початкових значень змінної), що відповідають цим цілим числам.
Наприклад, уявіть, що у вас є вектор
diabetes <- c("Type1", "Type2", "Type1", "Type1").
Команда diabetes <- factor(diabetes) перетворює цей вектор в (1, 2, 1, 1) і встановлює внутрішню відповідність 1=Type 1 і 2=Type 2 (оголошення числових значень відбувається в алфавітному порядку). Будь-який аналіз, який ви проводитимете з вектором diabetes, сприйматиме цю змінну як номінальну й обиратиме статистичні методи, які підходять для цього типу даних.
При роботі з векторами, представленими порядковими даними, для функції factor() потрібно додавати параметр ordered=TRUE. Використана до вектора
status <- c("Poor", "Improved", "Excellent", "Poor")
команда status <- factor(status, ordered=TRUE) перетворить цей вектор у вигляд (3, 2, 1, 3) і встановить внутрішню відповідність як 1=Excellent, 2=Improved, 3=Poor. Під час будь-якої обробки цього вектора він буде сприйнятий як порядкова змінна із застосуванням відповідних статистичних методів.
За замовчуванням рівні фактора оголошуються значенням вектора в алфавітному порядку. Це спрацювало для фактора status, оскільки порядок "Excellent", "Improved", "Poor" має сенс. Якби замість "Poor" стояло "Ailing", то виникли б труднощі, оскільки тоді порядок був би таким: "Ailing", "Excellent", "Improved". Схожа проблема виникла б, якби нам був потрібен такий порядок: "Poor", "Improved", "Excellent". Для впорядкованих факторів зрідка підходить алфавітний порядок рівнів, що пропонується за замовчуванням. Порядок можна змінити з допомогою параметра levels. Наприклад,
status <- factor(status, order=TRUE,
levels=c("Poor", "Improved", "Excellent"))
присвоїть рівні значень вектора у такий спосбі: 1=Poor, 2=Improved, 3=Excellent. Перевірте, що всі присвоєні рівні відповідають реальним значенням даних. Усі значення даних, які не були зазначені, будуть позначені як відсутні.
Наведений нижче програмний код показує, як призначення факторів і впорядкованих факторів впливає на аналіз даних.
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
diabetes <- factor(diabetes)
status <- factor(status, order=TRUE)
patientdata <- data.frame(patientID, age, diabetes, status)
str(patientdata)
'data.frame': 4 obs. of 4 variables:
$ patientID: num 1 2 3 4
$ age : num 25 34 28 52
$ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
summary(patientdata)
patientID age diabetes status
Min. :1.00 Min. :25.00 Type1:3 Excellent:1
1st Qu.:1.75 1st Qu.:27.25 Type2:1 Improved :1
Median :2.50 Median :31.00 Poor :2
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
Спочатку ви вводите дані, як вектори. Потім ви вказуєте, що diabetes – це фактор, а status – це впорядкований фактор. Нарешті, ви об’єднуєте дані в таблицю. Функція str(object) виводить інформацію про об’єкт (в нашому випадку – таблиця даних). Ясно видно, що diabetes – це фактор, а status – це впорядкований фактор; також зазначено, як він закодований усередині програми. Зверніть увагу, що функція summary() обробляє змінні усіляко. Для неперервної змінної age обчислено мінімум (minimum, min.), максимум (maximum, max.), середнє (mean) і квартили (first and third quartiles: 1st Qu., 3rd Qu.), а для категоріальних змінних diabetes і status підрахована частота зустрічі кожного значення.
Списки
Списки – це найскладніший тип даних в R. Фактично список – це впорядкований набір об’єктів (компонентів). Список може об’єднувати різні (можливо, не пов’язані між собою) об’єкти під одним ім’ям. Наприклад, список може бути поєднанням векторів, матриць, таблиць даних або інших списків.
Список можна створити з допомогою функції list():
mylist <- list(object_1, object_2, ...)
де об’єкти – це будь-які структури даних, що обговорювалися до цього. Об’єктам у списку можна присвоювати імена:
mylist <- list(name_1=object_1, name_2=object_2, ...).
Приклад роботи зі списками наведено нижче.
g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow=5)
k <- c("one", "two", "three")
mylist <- list(title=g, ages=h, j, k)
mylist
$title
[1] "My First List"
$ages
[1] 25 26 18 39
[[3]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[4]]
[1] "one" "two" "three"
mylist[[2]]
[1] 25 26 18 39
mylist[["ages"]]
[1] 25 26 18 39
У наведеному прикладі ми створили список із чотирьох компонентів: тестовий рядок, числовий вектор, матриця й текстовий вектор. У вигляді списку можна зберігати будь-яке число об’єктів.
Можна позначати елементи списку, вказавши їхній номер або назву всередині подвійних квадратних дужок. У цьому прикладі і mylist[[2]], і mylist[["ages"]] позначають один і той же числовий вектор із чотирьох елементів. Списки – це важливий тип структури даних в R з двох причин. По-перше, вони дозволяють вам без проблем впорядкувати і викликати на екран розрізнену інформацію. По-друге, результати виконання багатьох команд є списками. У цьому випадку користувач отримує з таких списків потрібну інформацію. Ви зможете побачити численні приклади функцій, що повертають списки, у наступних лекціях.
Відзначимо кілька особливостей мови R, про які вам слід пам’ятати: * точка (.) у назвах об’єктів не має ніякого спеціального значення. Однак знак долара ($) має приблизно таке ж значення, як точка в інших мовах програмування, позначаючи частину об’єкта. Наприклад, A$x позначає змінну x в таблиці даних A; * в R немає можливості створювати багаторядкові або блокові коментарі. Кожен рядок коментаря потрібно починати знаком #. Під час налагодження програмного коду можна укладати ділянку коду, що повинна бути пропущеною програмним інтерпретатором, всередину конструкції if (FALSE) {...}. Заміна FALSE на TRUE зробить можливим виконання коду; * присвоєння значень неіснуючого елементу вектора, матриці, масиву даних або списку розширить наявний об’єкт задля вміщення нового значення. Розглянемо приклад:
x <- c(8, 6, 4)
x[7] <- 10
x
[1] 8 6 4 NA NA NA 10
В результаті привласнення розмір вектора x збільшився з трьох до семи елементів; * в R немає скалярів. Вони представлені у вигляді вектора, що складається з одного елемента; * нумерація в R починається з 1, а не з 0. У наведеному вище векторі елемент x[1] – це 8.
LS0tDQp0aXRsZTogItCb0LXQutGG0ZbRjyA0LiDQotCw0LHQu9C40YbRliDQtNCw0L3QuNGFINGC0LAg0YHQv9C40YHQutC4Ig0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICBjb2RlX2ZvbGRpbmc6IG5vbmUNCi0tLQ0KPHN0eWxlPg0KYm9keSB7DQp0ZXh0LWFsaWduOiBqdXN0aWZ5fQ0KPC9zdHlsZT4NCg0KIyMj0KLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhQ0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCi0LDQsdC70LjRhtGPINC00LDQvdC40YUgKGRhdGEgZnJhbWUpIOKAkyDRhtC1INCx0ZbQu9GM0Ygg0YjQuNGA0L7QutC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0L3QuNC5INGDINC/0L7RgNGW0LLQvdGP0L3QvdGWINC3INC80LDRgtGA0LjRhtC10Y4g0L7QseKAmdGU0LrRgiwg0L7RgdC60ZbQu9GM0LrQuCDRgNGW0LfQvdGWINGB0YLQvtCy0L/RhtGWINC80L7QttGD0YLRjCDQvNGW0YHRgtC40YLQuCDRgNGW0LfQvdGWINGC0LjQv9C4INC00LDQvdC40YUgKNGH0LjRgdC70L7QstC40LksINGC0LXQutGB0YLQvtCy0LjQuSDRgtCwINGW0L0uKS4g0KLQsNCx0LvQuNGG0Y8g0LTQsNC90LjRhSDigJMg0L3QsNC50LHRltC70YzRiCDRh9Cw0YHRgtC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0L3QsCDRgdGC0YDRg9C60YLRg9GA0LAg0LTQsNC90LjRhSDQsiBSLiDQndCw0LHRltGAINC00LDQvdC40YUg0L/RgNC+INC/0LDRhtGW0ZTQvdGC0ZbQsiAoKirRgtCw0LHQuy4gMi4xKiopINGB0LrQu9Cw0LTQsNGU0YLRjNGB0Y8g0Lcg0YfQuNGB0LvQvtCy0LjRhSDRliDRgtC10LrRgdGC0L7QstC40YUg0LTQsNC90LjRhS4g0KbRliDQtNCw0L3RliDQv9C+0YLRgNGW0LHQvdC+INC/0YDQtdC00YHRgtCw0LLQuNGC0Lgg0YMg0LLQuNCz0LvRj9C00ZYg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhSwg0LAg0L3QtSDQvNCw0YLRgNC40YbRliwg0L7RgdC60ZbQu9GM0LrQuCDRgtCw0LHQu9C40YbRjyDQvNGW0YHRgtC40YLRjCDRgyDRgdC+0LHRliDQtNCw0L3RliDRgNGW0LfQvdC40YUg0YLQuNC/0ZbQsi4g0KLQsNCx0LvQuNGG0Y8g0LTQsNC90LjRhSDRgdGC0LLQvtGA0Y7RlNGC0YzRgdGPINC3INC00L7Qv9C+0LzQvtCz0L7RjiDRhNGD0L3QutGG0ZbRlyBgZGF0YS5mcmFtZSgpYDoNCg0KYGBge3J9DQpteWRhdGEgPC0gZGF0YS5mcmFtZShjb2wxLCBjb2wyLCBjb2wzLCAuLi4pDQpgYGANCg0K0LTQtSBgY29sMSwgY29sMiwgY29sMywgLi4uYCDigJMg0YbQtSDQstC10LrRgtC+0YDQuCDQsdGD0LTRjC3Rj9C60L7Qs9C+INGC0LjQv9GDICjRgtC10LrRgdGC0L7QstC+0LPQviwg0YfQuNGB0LvQvtCy0L7Qs9C+INCw0LHQviDQu9C+0LPRltGH0L3QvtCz0L4pLCDRj9C60ZYg0YHRgtCw0L3Rg9GC0Ywg0YHRgtC+0LLQv9GG0Y/QvNC4INGC0LDQsdC70LjRhtGWLiDQndCw0LfQstC4INC60L7QttC90L7QvNGDINGB0YLQvtCy0L/Rh9C40LrRgyDQvNC+0LbQvdCwINC+0LPQvtC70L7RgdC40YLQuCDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0YTRg9C90LrRhtGW0ZcgYG5hbWVzKClgLiDQn9GA0L7RltC70Y7RgdGC0YDRg9GU0LzQviDRgdC60LDQt9Cw0L3QtSDQvdCwINC/0YDQuNC60LvQsNC00ZYg0L/RgNC+0LPRgNCw0LzQvdC+0LPQviDQutC+0LTRgy4NCg0KYGBge3J9DQpwYXRpZW50SUQgPC0gYygxLCAyLCAzLCA0KQ0KYWdlIDwtIGMoMjUsIDM0LCAyOCwgNTIpDQpkaWFiZXRlcyA8LSBjKCJUeXBlMSIsICJUeXBlMiIsICJUeXBlMSIsICJUeXBlMSIpDQpzdGF0dXMgPC0gYygiUG9vciIsICJJbXByb3ZlZCIsICJFeGNlbGxlbnQiLCAiUG9vciIpDQpwYXRpZW50ZGF0YSA8LSBkYXRhLmZyYW1lKHBhdGllbnRJRCwgYWdlLCBkaWFiZXRlcywgc3RhdHVzKQ0KcGF0aWVudGRhdGENCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCa0L7QttC10L0g0YHRgtC+0LLQv9C10YbRjCDQv9C+0LLQuNC90LXQvSDQvNGW0YHRgtC40YLQuCDQtNCw0L3RliDRgtGW0LvRjNC60Lgg0L7QtNC90L7Qs9C+INGC0LjQv9GDLCDQstC+0LTQvdC+0YfQsNGBINCyINC+0LTQvdGW0Lkg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhSDQvNC+0LbRg9GC0Ywg0LHRg9GC0Lgg0YHRgtC+0LLQv9GH0LjQutC4INC3INC00LDQvdC40LzQuCDRgNGW0LfQvdC+0LPQviDRgtC40L/Rgy4g0J7RgdC60ZbQu9GM0LrQuCDRgtCw0LHQu9C40YbRliDQtNCw0L3QuNGFINC00YPQttC1INCx0LvQuNC30YzQutGWINC00L4g0YLQvtCz0L4sINGJ0L4g0LDQvdCw0LvRltGC0LjQutC4INC90LDQt9C40LLQsNGO0YLRjCDQvdCw0LHQvtGA0LDQvNC4INC00LDQvdC40YUsINC/0ZbQtCDRh9Cw0YEg0L7QsdCz0L7QstC+0YDQtdC90L3RliDRgtCw0LHQu9C40YbRjCDQtNCw0L3QuNGFINC80Lgg0LHRg9C00LXQvNC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRgtC10YDQvNGW0L3QuCDRgdGC0L7QstC/0YbRliDRgtCwINC30LzRltC90L3RliDQsiDRj9C60L7RgdGC0ZYg0YHQuNC90L7QvdGW0LzRltCyLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCG0YHQvdGD0ZQg0LrRltC70YzQutCwINGB0L/QvtGB0L7QsdGW0LIg0L/QvtC30L3QsNGH0LjRgtC4INC10LvQtdC80LXQvdGC0Lgg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhS4g0JzQvtC20L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0ZbQvdC00LXQutGB0LgsINGP0Log0LzQuCDRgNC+0LHQuNC70Lgg0YbQtSDRgNCw0L3RltGI0LUgKNC90LDQv9GA0LjQutC70LDQtCwg0LTQu9GPINC80LDRgtGA0LjRhtGMKSwg0LDQsdC+INC80L7QttC90LAg0LLQutCw0LfRg9Cy0LDRgtC4INC90L7QvNC10YDQuCDRgdGC0L7QstC/0YbRltCyLiDQndCw0LLQtdC00LXQvdC40Lkg0L3QuNC20YfQtSDQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQg0L3QsCDQv9GA0LjQutC70LDQtNGWINGB0YLQstC+0YDQtdC90L7RlyDRgNCw0L3RltGI0LUg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhSBgcGF0aWVudGRhdGFgINC00LXQvNC+0L3RgdGC0YDRg9GUINC+0LHQuNC00LLQsCDRgdC/0L7RgdC+0LHQuC4NCg0KYGBge3J9DQpwYXRpZW50ZGF0YVsxOjJdDQpgYGANCg0KYGBge3J9DQpwYXRpZW50ZGF0YVtjKCJkaWFiZXRlcyIsICJzdGF0dXMiKV0NCmBgYA0KDQpgYGB7cn0NCnBhdGllbnRkYXRhJGFnZQ0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0JfQvdCw0LogYCRgINC3INGC0YDQtdGC0YzQvtCz0L4g0L/RgNC40LrQu9Cw0LTRgyDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtNC70Y8g0L/QvtC30L3QsNGH0LXQvdC90Y8g0L/QtdCy0L3QvtGXINC30LzRltC90L3QvtGXINCyINGC0LDQsdC70LjRhtGWINC00LDQvdC40YUuINCd0LDQv9GA0LjQutC70LDQtCwg0Y/QutGJ0L4g0LLQsNC8INC/0L7RgtGA0ZbQsdC90L4g0YHRgtCy0L7RgNC40YLQuCDQt9Cy0LXQtNC10L3RgyDRgtCw0LHQu9C40YbRjiDRgtC40L/RltCyINC00ZbQsNCx0LXRgtGDINC30LDQu9C10LbQvdC+INCy0ZbQtCDRgdGC0LDQvdGDINGF0LLQvtGA0L7Qs9C+LCDQstC4INC80L7QttC10YLQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0YLQsNC60LjQuSDQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQ6DQoNCmBgYHtyfQ0KdGFibGUocGF0aWVudGRhdGEkZGlhYmV0ZXMsIHBhdGllbnRkYXRhJHN0YXR1cykNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCe0YHQutGW0LvRjNC60Lgg0LTQvtC00LDQstCw0L3QvdGPIHBhdGllbnRkYXRhJCDQv9C10YDQtdC0INC90LDQt9Cy0L7RjiDQutC+0LbQvdC+0Zcg0LfQvNGW0L3QvdC+0Zcg0LzQvtC20LUg0YjQstC40LTQutC+INC90LDQsdGA0LjQtNC90YPRgtC4LCDQvdCw0Y/QstC90ZYg0LrQvtC80LDQvdC00Lgg0LTQu9GPINGI0LLQuNC00LrQvtCz0L4g0LLQuNC60LvQuNC60YMg0LfQvNGW0L3QvdC+0ZcuINCU0LvRjyDRgdC/0YDQvtGJ0LXQvdC90Y8g0L/RgNC+0LPRgNCw0LzQvdC+0LPQviDQutC+0LTRgyDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRhNGD0L3QutGG0ZbRlyBgYXR0YWNoKClgINGWIGBkZXRhY2goKWAg0LDQsdC+IGB3aXRoKClgLg0KDQojIyNBdHRhY2goKSwgZGV0YWNoKCkg0ZYgd2l0aCgpDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KTRg9C90LrRhtGW0Y8gYGF0dGFjaCgpYCDQtNC+0LTQsNGUINC30LDQt9C90LDRh9C10L3RgyDRgtCw0LHQu9C40YbRjiDQtNCw0L3QuNGFINC00L4g0YjQu9GP0YXRgyDQv9C+0YjRg9C60YMgUi4g0JrQvtC70Lgg0LLQutCw0LfRg9GU0YLRjNGB0Y8g0ZbQvOKAmdGPINC30LzRltC90L3QvtGXLCDQv9GA0L7Qs9GA0LDQvNCwINGI0YPQutCw0ZQg0YbRjiDQt9C80ZbQvdC90YMg0LIg0YLQsNCx0LvQuNGG0Y/RhSDQtNCw0L3QuNGFLCDRidC+INCy0YXQvtC00Y/RgtGMINGDINGC0YDQsNGU0LrRgtC+0YDRltGOINC/0L7RiNGD0LrRgy4g0KMg0Y/QutC+0YHRgtGWINC/0YDQuNC60LvQsNC00YMg0YDQvtC30LPQu9GP0L3QtdC80L4g0YLQsNCx0LvQuNGG0Y4g0LTQsNC90LjRhSBgbXRjYXJzYCDQtyAqKtCz0LvQsNCy0LggMSoqLCDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7Rh9C4INGC0LDQutC40Lkg0L/RgNC+0LPRgNCw0LzQvdC40Lkg0LrQvtC0LCDRidC+0LHQuCDQtNGW0LfQvdCw0YLQuNGB0Y8g0L7RgdC90L7QstC90ZYg0YHRgtCw0YLQuNGB0YLQuNGH0L3RliDQtNCw0L3RliDQstC40YLRgNCw0YIg0L/QsNC70LjQstCwIChgbXBnYCksINCwINGC0LDQutC+0LYg0LLRltC00L7QsdGA0LDQt9C40YLQuCDQt9C90LDRh9C10L3QvdGPINGG0ZbRlNGXINC30LzRltC90L3QvtGXINC90LAg0LTRltCw0LPRgNCw0LzRliDQt9Cw0LvQtdC20L3QviDQstGW0LQg0YDQvtCx0L7Rh9C+0LPQviDQvtCx4oCZ0ZTQvNGDINGG0LjQu9GW0L3QtNGA0ZbQsiDQtNCy0LjQs9GD0L3QsCAoYGRpc3BgKSDRliDQstCw0LPQuCDQvNCw0YjQuNC90LggKGB3dGApLg0KDQpgYGB7cn0NCnN1bW1hcnkobXRjYXJzJG1wZykNCnBsb3QobXRjYXJzJG1wZywgbXRjYXJzJGRpc3ApDQpwbG90KG10Y2FycyRtcGcsIG10Y2FycyR3dCkNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCm0LUg0LzQvtC20L3QsCDRgtCw0LrQvtC2INC30LDQv9C40YHQsNGC0Lgg0YMg0LLQuNCz0LvRj9C00ZYNCg0KYGBge3J9DQphdHRhY2gobXRjYXJzKQ0KICBzdW1tYXJ5KG1wZykNCiAgcGxvdChtcGcsIGRpc3ApDQogIHBsb3QobXBnLCB3dCkNCmRldGFjaChtdGNhcnMpDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQpNGD0L3QutGG0ZbRjyBgZGV0YWNoKClgINCy0LjQtNCw0LvRj9GUINGC0LDQsdC70LjRhtGOINC00LDQvdC40YUg0LfRliDRiNC70Y/RhdGDINC/0L7RiNGD0LrRgy4g0JfQsNC30L3QsNGH0LjQvNC+LCDRidC+INGG0Y8g0YTRg9C90LrRhtGW0Y8g0L3RltGH0L7Qs9C+INC90LUg0YDQvtCx0LjRgtGMINGW0Lcg0YHQsNC80LjQvCDQvtCx4oCZ0ZTQutGC0L7QvC4g0JLQstC10LTQtdC90L3RjyDRhtGW0ZTRlyDQutC+0LzQsNC90LTQuCDQvdC10L7QsdC+0LLigJnRj9C30LrQvtCy0LUsINCw0LvQtSDQstC+0L3QviDQutC+0YDQuNGB0L3QtSDQsiDQv9GA0L7RhtC10YHRliDQv9GA0L7Qs9GA0LDQvNGD0LLQsNC90L3Rliwg0ZYg0L/RgNC+INC90YzQvtCz0L4g0L3QtSDRgdC70ZbQtCDQt9Cw0LHRg9Cy0LDRgtC4Lg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCe0LHQvNC10LbQtdC90L3RjyDQtNCw0L3QvtCz0L4g0LzQtdGC0L7QtNGDINGB0YLQsNGUINC+0YfQtdCy0LjQtNC90LjQvCwg0Y/QutGJ0L4g0LIg0L3QsNGBINGUINC60ZbQu9GM0LrQsCDQvtCx4oCZ0ZTQutGC0ZbQsiDQtyDQvtC00L3QsNC60L7QstC40LzQuCDQvdCw0LfQstCw0LzQuC4g0KDQvtC30LPQu9GP0L3QtdC80L4g0YLQsNC60LjQuSDQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQ6DQoNCmBgYHtyfQ0KbXBnIDwtIGMoMjUsIDM2LCA0NykNCmF0dGFjaChtdGNhcnMpDQoNCmBgYA0KYGBge3J9DQpwbG90KG1wZywgd3QpDQpgYGANCg0KYGBge3J9DQptcGcNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCa0L7Qu9C4INC80Lgg0LTQvtC00LDQu9C4INC00L4g0YLRgNCw0ZTQutGC0L7RgNGW0Zcg0L/QvtGI0YPQutGDINGC0LDQsdC70LjRhtGOINC00LDQvdC40YUgYG10Y2Fyc2AsINGDINGA0L7QsdC+0YfQvtC80YMg0L/RgNC+0YHRgtC+0YDRliDQstC20LUg0LHRg9CyINC+0LHigJnRlNC60YIg0ZbQtyDQvdCw0LfQstC+0Y4gYG1wZ2AuINCjINC/0L7QtNGW0LHQvdC40YUg0LLQuNC/0LDQtNC60LDRhSDQv9C10YDQtdCy0LDQs9GDINC+0YLRgNC40LzRg9GUINC+0LHigJnRlNC60YIsINGP0LrQuNC5INCx0YPQsiDRgdGC0LLQvtGA0LXQvdC40Lkg0L/QtdGA0YjQuNC8LCDQsCDRhtC1INC90LUg0YLQtSwg0YfQvtCz0L4g0LzQuCDRhdC+0YLRltC70LguINCa0L7QvNCw0L3QtNCwIGBwbG90KClgINC90LUg0LLQuNC60L7QvdGD0ZTRgtGM0YHRjywg0YLQvtC80YMg0YnQviBgbXBnYCDRgtC10L/QtdGAINGB0LrQu9Cw0LTQsNGU0YLRjNGB0Y8g0Lcg0YLRgNGM0L7RhSDQtdC70LXQvNC10L3RgtGW0LIsINCwIGBkaXNwYCDigJMg0LcgMzIg0LXQu9C10LzQtdC90YLRltCyLiDQpNGD0L3QutGG0ZbRlyBgYXR0YWNoKClgINGWIGBkZXRhY2goKWAg0L3QsNC50LrRgNCw0YnQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0LIg0L/RgNC+0YbQtdGB0ZYg0YDQvtCx0L7RgtC4INC3INC+0LTQvdGW0ZTRjiDRgtCw0LHQu9C40YbQtdGOINC00LDQvdC40YUsINGWINC50LzQvtCy0ZbRgNC90ZbRgdGC0Ywg0YLQvtCz0L4sINGJ0L4g0YMg0LLQsNGBINCx0YPQtNC1INC60ZbQu9GM0LrQsCDQvtCx4oCZ0ZTQutGC0ZbQsiDQtyDQvtC00L3QsNC60L7QstC40LzQuCDRltC80LXQvdCw0LzQuCwg0LzQsNC70LAuINCjINCx0YPQtNGMLdGP0LrQvtC80YMg0LLQuNC/0LDQtNC60YMg0LfQstC10YDRgtCw0LnRgtC1INGD0LLQsNCz0YMg0L3QsCDQv9C+0L/QtdGA0LXQtNC20LXQvdC90Y8g0YnQvtC00L4g0LzQsNGB0LrRg9Cy0LDQvdC90Y8g0L7QseKAmdGU0LrRgtGW0LIg0L7QtNC90L7QudC80LXQvdC90LjQvNC4INC+0LHigJnRlNC60YLQsNC80LggKGBvYmplY3RzIGFyZSBtYXNrZWRgKTsg0ZbQvdGI0LjQvNC4INGB0LvQvtCy0LDQvNC4LCDQvtCx4oCZ0ZTQutGC0Lgg0YHRgtCw0Y7RgtGMINC90LXQtNC+0YHRgtGD0L/QvdC40LzQuCDQtNC70Y8g0LHQtdC30L/QvtGB0LXRgNC10LTQvdGM0L7Qs9C+INCy0LjQutC70LjQutGDLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCQ0LvRjNGC0LXRgNC90LDRgtC40LLQvdC40Lkg0L/RltC00YXRltC0INC/0L7Qu9GP0LPQsNGUINGDINCy0LjQutC+0YDQuNGB0YLQsNC90L3RliDRhNGD0L3QutGG0ZbRlyBgd2l0aCgpYC4g0J/QvtC/0LXRgNC10LTQvdGW0Lkg0L/RgNC40LrQu9Cw0LQg0LzQvtC20L3QsCDQt9Cw0L/QuNGB0LDRgtC4INGC0LDQujoNCg0KYGBge3J9DQp3aXRoKG10Y2Fycywgew0KICBzdW1tYXJ5KG1wZywgZGlzcCwgd3QpDQogIHBsb3QobXBnLCBkaXNwKQ0KICBwbG90KG1wZywgd3QpDQp9KQ0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0JIg0YbRjNC+0LzRgyDQstC40L/QsNC00LrRgyDQutC+0LzQsNC90LTQuCDQstGB0LXRgNC10LTQuNC90ZYg0YTRltCz0YPRgNC90LjRhSDQtNGD0LbQvtC6INC90LDQu9C10LbQsNGC0Ywg0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhSBgbXRjYXJzYC4g0KLQtdC/0LXRgCDQvdCw0Lwg0L3QtSDQtNC+0LLQtdC00LXRgtGM0YHRjyDQv9GW0LrQu9GD0LLQsNGC0LjRgdGPINC/0YDQviDQutC+0L3RhNC70ZbQutGCINC90LDQt9CyLiDQr9C60YnQviDQv9C+0YLRgNGW0LHQvdC+INCy0LjQutC+0L3QsNGC0Lgg0YLRltC70YzQutC4INC+0LTQvdGDINC60L7QvNCw0L3QtNGDICjQvdCw0L/RgNC40LrQu9Cw0LQsIGBzdW1tYXJ5KG1wZylgKSwg0YTRltCz0YPRgNC90ZYg0LTRg9C20LrQuCDQvdC10L7QsdC+0LLigJnRj9C30LrQvtCy0ZYuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J7QsdC80LXQttC10L3QvdGPINGE0YPQvdC60YbRltGXIGB3aXRoKClgINC/0L7Qu9GP0LPQsNGUINCyINGC0L7QvNGDLCDRidC+INCy0L7QvdCwINC90LUg0LTRltGUINC30LAg0LzQtdC20LDQvNC4INGE0ZbQs9GD0YDQvdC40YUg0LTRg9C20L7Qui4g0KDQvtC30LPQu9GP0L3QtdC80L4g0YLQsNC60LjQuSDQv9GA0LjQutC70LDQtDoNCg0KYGBge3J9DQp3aXRoKG10Y2Fycywgew0KICBzdGF0cyA8LSBzdW1tYXJ5KG1wZykNCiAgc3RhdHMNCn0pDQpgYGANCg0KYGBge3J9DQpzdGF0cw0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0K/QutGJ0L4g0L/QvtGC0YDRltCx0L3QviDRgdGC0LLQvtGA0LjRgtC4INC+0LHigJnRlNC60YLQuCwg0Y/QutGWINC/0LXRgNC10LHRg9Cy0LDRgtC40LzRg9GC0Ywg0L/QvtC30LAg0LrQvtC90YHRgtGA0YPQutGG0ZbRlNGOIGB3aXRoKClgLCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LnRgtC1INGB0L/QtdGG0ZbQsNC70YzQvdC40Lkg0YHQuNC80LLQvtC7INC/0YDQuNGB0LLQvtGU0L3QvdGPIGA8PC1gINC30LDQvNGW0YHRgtGMINC30LLQuNGH0LDQudC90L7Qs9C+IGA8LWAuINCm0LXQuSDQv9GA0LjQudC+0Lwg0LTQvtC30LLQvtC70LjRgtGMINC30LHQtdGA0LXQs9GC0Lgg0YHRgtCy0L7RgNC10L3QuNC5INC+0LHigJnRlNC60YIg0YMg0YDQvtCx0L7Rh9C+0LzRgyDQv9GA0L7RgdGC0L7RgNGWINC/0L7Qt9CwINC60L7QvdGB0YLRgNGD0LrRhtGW0ZTRjiBgd2l0aCgpYC4g0KbQtSDQvNC+0LbQvdCwINC/0L7QutCw0LfQsNGC0Lgg0L3QsCDQv9GA0LjQutC70LDQtNGWINGC0LDQutC+0LPQviDQv9GA0L7Qs9GA0LDQvNC90L7Qs9C+INC60L7QtNGDOg0KDQpgYGB7cn0NCndpdGgobXRjYXJzLCB7DQogIG5va2VlcHN0YXRzIDwtIHN1bW1hcnkobXBnKQ0KICBrZWVwc3RhdHMgPDwtIHN1bW1hcnkobXBnKQ0KfSkNCmBgYA0KDQpgYGB7cn0NCm5va2VlcHN0YXRzDQpgYGANCg0KYGBge3J9DQprZWVwc3RhdHMNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCX0LTQtdCx0ZbQu9GM0YjQvtCz0L4g0YMg0L/QvtGB0ZbQsdC90LjQutCw0YUg0LcgUiDRgNC10LrQvtC80LXQvdC00YPRlNGC0YzRgdGPINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCBgd2l0aCgpYCwg0LAg0L3QtSBgYXR0YWNoKClgLCDQv9GA0L7RgtC1INCy0LjQsdGW0YAg0LfQsNC70LXQttC40YLRjCDQstGW0LQg0ZbQvdC00LjQstGW0LTRg9Cw0LvRjNC90LjRhSDQv9C10YDQtdCy0LDQsyDRliDQv9C+0LLQuNC90LXQvSDSkdGA0YPQvdGC0YPQstCw0YLQuNGB0Y8g0L3QsCDRgtC+0LzRgywg0YfQvtCz0L4g0LLQuCDRhdC+0YfQtdGC0LUg0LTQvtGB0Y/Qs9GC0LguDQoNCiMjI9Cd0LDQt9Cy0Lgg0YDRj9C00LrRltCyDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KMg0L/RgNC40LrQu9Cw0LTRliDQtyDQtNCw0L3QuNC80Lgg0L/RgNC+INGF0LLQvtGA0LjRhSDRgdGC0L7QstC/0LXRhtGMIGBwYXRpZW50SURgINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0LLRgdGPINC00LvRjyDQv9C+0LfQvdCw0YfQtdC90L3RjyDQvtC60YDQtdC80LjRhSDQu9GO0LTQtdC5INGDINC90LDQsdC+0YDRliDQtNCw0L3QuNGFLiDQkiBSINC90LDQt9Cy0Lgg0YDRj9C00LrRltCyINC80L7QttGD0YLRjCDQsdGD0YLQuCDQv9GA0LjQt9C90LDRh9C10L3RliDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0L/QsNGA0LDQvNC10YLRgNCwIGByb3duYW1lYCDRhNGD0L3QutGG0ZbRlyDRgdGC0LLQvtGA0LXQvdC90Y8g0YLQsNCx0LvQuNGG0ZYg0LTQsNC90LjRhS4g0J3QsNC/0YDQuNC60LvQsNC0LCDQv9GA0L7Qs9GA0LDQvNC90LjQuSDQutC+0LQNCg0KYGBge3J9DQpwYXRpZW50ZGF0YSA8LSBkYXRhLmZyYW1lKHBhdGllbnRJRCwgYWdlLCBkaWFiZXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByb3cubmFtZXM9cGF0aWVudElEKQ0KYGBgDQoNCtC/0YDQuNC30L3QsNGH0LDRlCBgcGF0aWVudElEYCDQt9C80ZbQvdC90ZbQuSwg0Y/QutCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuNC80LXRgtGM0YHRjyDQtNC70Y8g0L/QvtC30L3QsNGH0LXQvdC90Y8g0YDRj9C00LrRltCyINC/0ZbQtCDRh9Cw0YEg0LLQuNCy0LXQtNC10L3QvdGPINC00LDQvdC40YUg0ZYg0YHRgtCy0L7RgNC10L3QvdGPINC00ZbQsNCz0YDQsNC8INCyIFIuDQoNCiMjI9Ck0LDQutGC0L7RgNC4DQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0K/QuiDQvNC4INCy0LbQtSDQtNGW0LfQvdCw0LvQuNGB0Y8sINC30LzRltC90L3RliDQsdGD0LLQsNGO0YLRjCDQvdC+0LzRltC90LDQu9GM0L3QuNC80LgsINC/0L7RgNGP0LTQutC+0LLQuNC80Lgg0LDQsdC+INC90LXQv9C10YDQtdGA0LLQvdC40LzQuC4g0J3QvtC80ZbQvdCw0LvRjNC90ZYg0LfQvNGW0L3QvdGWIOKAkyDRhtC1INC60LDRgtC10LPQvtGA0ZbQsNC70YzQvdGWINC00LDQvdGWLCDRj9C60ZYg0L3QtdC80L7QttC70LjQstC+INCy0L/QvtGA0Y/QtNC60YPQstCw0YLQuC4g0JfQvNGW0L3QvdCwIGBEaWFiZXRlc2Ag4oCTINGG0LUg0L/RgNC40LrQu9Cw0LQg0L3QvtC80ZbQvdCw0LvRjNC90LjRhSDQtNCw0L3QuNGFLiDQndCw0LLRltGC0Ywg0Y/QutGJ0L4g0LzQuCDQv9C+0LfQvdCw0YfQuNC80L4gYFR5cGUgMWAgKNGC0LjQvyAxKSDQvtC00LjQvdC40YbQtdGOLCDQsCBgVHlwZSAyYCAo0YLQuNC/IDIpIOKAkyDQtNCy0ZbQudC60L7Rjiwg0L7QtNC90LDQutC+0LLQviDRhtGWINGG0LjRhNGA0Lgg0L3QtdC80L7QttC70LjQstC+INC/0L7RgNGW0LLQvdGO0LLQsNGC0Lgg0LIg0YLQtdGA0LzRltC90LDRhSDCq9Cx0ZbQu9GM0YjQtSDigJMg0LzQtdC90YjQtcK7LiDQn9C+0YDRj9C00LrQvtCy0ZYg0LTQsNC90ZYg0LzQvtC20L3QsCDQstC/0L7RgNGP0LTQutGD0LLQsNGC0LgsINCw0LvQtSDQvdC1INC+0YbRltC90LjRgtC4INC60ZbQu9GM0LrRltGB0L3Qvi4g0JfQvNGW0L3QvdCwIGBTdGF0dXNgIOKAkyDRhdC+0YDQvtGI0LjQuSDQv9GA0LjQutC70LDQtCDQv9C+0YDRj9C00LrQvtCy0LjRhSDQtNCw0L3QuNGFLiDQl9GA0L7Qt9GD0LzRltC70L4sINGJ0L4g0YMg0YXQstC+0YDQvtCz0L4g0Lcg0L/QvtCz0LDQvdC40LwgKGBwb29yYCkg0YHQsNC80L7Qv9C+0YfRg9GC0YLRj9C8INGB0L/RgNCw0LLQuCDQudC00YPRgtGMINC90LUg0YLQsNC6INC00L7QsdGA0LUsINGP0Log0YMg0YXQstC+0YDQvtCz0L4sINGH0LjQuSDRgdGC0LDQvSDQv9C+0LrRgNCw0YnQuNCy0YHRjyAoYGltcHJvdmVkYCksINCw0LvQtSDQvdC1INGP0YHQvdC+LCDQvdCw0YHQutGW0LvRjNC60LguINCd0LXQv9C10YDQtdGA0LLQvdGWINC30LzRltC90L3RliDQvNC+0LbRg9GC0Ywg0L/RgNC40LnQvNCw0YLQuCDQsdGD0LTRjC3Rj9C60LUg0LfQvdCw0YfQtdC90L3RjyDQsiDQvNC10LbQsNGFINC/0LXQstC90L7Qs9C+INC00ZbQsNC/0LDQt9C+0L3Rgy4g0IfRhdC90ZQg0LfQvdCw0YfQtdC90L3RjyDQvNC+0LbQvdCwINCy0L/QvtGA0Y/QtNC60YPQstCw0YLQuCDRliDQt9GA0L7Qt9GD0LzRltGC0LgsINC90LDRgdC60ZbQu9GM0LrQuCDQvtC00L3QtSDQtyDQvdC40YUg0LHRltC70YzRiNC1INGW0L3RiNC+0LPQvi4g0JLRltC6LCDQstC40YDQsNC20LXQvdC40Lkg0YMg0YDQvtC60LDRhSwg0ZQg0L3QtdC/0LXRgNC10YDQstC90L7RjiDQt9C80ZbQvdC90L7RjiDQuSDQvNC+0LbQtSDQv9GA0LjQudC80LDRgtC4INGC0LDQutGWINC30L3QsNGH0LXQvdC90Y8sINGP0LogMTQuNSDQsNCx0L4gMjIuOCwg0LAg0YLQsNC60L7QtiDQsdGD0LTRjC3Rj9C60ZYg0LfQvdCw0YfQtdC90L3RjyDQvNGW0LYg0YbQuNC80Lgg0LTQstC+0LzQsC4g0JLQuCDQt9C90LDRlNGC0LUsINGJ0L4g0L/igJnRj9GC0L3QsNC00YbRj9GC0LjRgNGW0YfQvdC40Lkg0L/RltC00LvRltGC0L7QuiDRgdGC0LDRgNGI0LUg0YfQvtGC0LjRgNC90LDQtNGG0Y/RgtC40YDRltGH0L3QvtCz0L4g0L3QsCDQvtC00LjQvSDRgNGW0LouDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0JrQsNGC0LXQs9C+0YDRltCw0LvRjNC90ZYgKNC90L7QvNGW0L3QsNC70YzQvdGWINC5INC/0L7RgNGP0LTQutC+0LLRlikg0LTQsNC90ZYg0L3QsNC30LjQstCw0Y7RgtGM0YHRjyDQsiBSINGE0LDQutGC0L7RgNCw0LzQuC4g0KTQsNC60YLQvtGA0Lgg0LTRg9C20LUg0LLQsNC20LvQuNCy0ZYg0LIgUiwg0L7RgdC60ZbQu9GM0LrQuCDQstC+0L3QuCDQstC40LfQvdCw0YfQsNGO0YLRjCwg0Y/QuiDQtNCw0L3RliDQsdGD0LTRg9GC0Ywg0L/RgNC+0LDQvdCw0LvRltC30L7QstCw0L3RliDRliDQs9GA0LDRhNGW0YfQvdC+INC/0YDQtdC00YHRgtCw0LLQu9C10L3Rli4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQpNGD0L3QutGG0ZbRjyBgZmFjdG9yKClgINC30LHQtdGA0ZbQs9Cw0ZQg0LrQsNGC0LXQs9C+0YDRltCw0LvRjNC90ZYg0LTQsNC90ZYg0YMg0LLQuNCz0LvRj9C00ZYg0LLQtdC60YLQvtGA0LAg0Lcg0YbRltC70LjRhSDRh9C40YHQtdC7INGDINC00ZbQsNC/0LDQt9C+0L3RliDQstGW0LQg0L7QtNC90L7Qs9C+INC00L4gKmsqICjQtNC1ICprKiDigJMg0YfQuNGB0LvQviDRg9C90ZbQutCw0LvRjNC90LjRhSDQt9C90LDRh9C10L3RjCDQutCw0YLQtdCz0L7RgNGW0LDQu9GM0L3QvtGXINC30LzRltC90L3QvtGXKSDQuSDRgyDQstC40LPQu9GP0LTRliDQstC90YPRgtGA0ZbRiNC90YzQvtCz0L4g0LLQtdC60YLQvtGA0LAg0Lcg0LvQsNC90YbRjtC20LrQsCDRgdC40LzQstC+0LvRltCyICjQv9C+0YfQsNGC0LrQvtCy0LjRhSDQt9C90LDRh9C10L3RjCDQt9C80ZbQvdC90L7RlyksINGJ0L4g0LLRltC00L/QvtCy0ZbQtNCw0Y7RgtGMINGG0LjQvCDRhtGW0LvQuNC8INGH0LjRgdC70LDQvC4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQndCw0L/RgNC40LrQu9Cw0LQsINGD0Y/QstGW0YLRjCwg0YnQviDRgyDQstCw0YEg0ZQg0LLQtdC60YLQvtGADQoNCmBgYHtyfQ0KZGlhYmV0ZXMgPC0gYygiVHlwZTEiLCAiVHlwZTIiLCAiVHlwZTEiLCAiVHlwZTEiKS4NCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCa0L7QvNCw0L3QtNCwIGBkaWFiZXRlcyA8LSBmYWN0b3IoZGlhYmV0ZXMpYCDQv9C10YDQtdGC0LLQvtGA0Y7RlCDRhtC10Lkg0LLQtdC60YLQvtGAINCyIGAoMSwgMiwgMSwgMSlgINGWINCy0YHRgtCw0L3QvtCy0LvRjtGUINCy0L3Rg9GC0YDRltGI0L3RjiDQstGW0LTQv9C+0LLRltC00L3RltGB0YLRjCBgMT1UeXBlIDFgINGWIGAyPVR5cGUgMmAgKNC+0LPQvtC70L7RiNC10L3QvdGPINGH0LjRgdC70L7QstC40YUg0LfQvdCw0YfQtdC90Ywg0LLRltC00LHRg9Cy0LDRlNGC0YzRgdGPINCyINCw0LvRhNCw0LLRltGC0L3QvtC80YMg0L/QvtGA0Y/QtNC60YMpLiDQkdGD0LTRjC3Rj9C60LjQuSDQsNC90LDQu9GW0LcsINGP0LrQuNC5INCy0Lgg0L/RgNC+0LLQvtC00LjRgtC40LzQtdGC0LUg0Lcg0LLQtdC60YLQvtGA0L7QvCBgZGlhYmV0ZXNgLCDRgdC/0YDQuNC50LzQsNGC0LjQvNC1INGG0Y4g0LfQvNGW0L3QvdGDINGP0Log0L3QvtC80ZbQvdCw0LvRjNC90YMg0Lkg0L7QsdC40YDQsNGC0LjQvNC1INGB0YLQsNGC0LjRgdGC0LjRh9C90ZYg0LzQtdGC0L7QtNC4LCDRj9C60ZYg0L/RltC00YXQvtC00Y/RgtGMINC00LvRjyDRhtGM0L7Qs9C+INGC0LjQv9GDINC00LDQvdC40YUuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J/RgNC4INGA0L7QsdC+0YLRliDQtyDQstC10LrRgtC+0YDQsNC80LgsINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC80Lgg0L/QvtGA0Y/QtNC60L7QstC40LzQuCDQtNCw0L3QuNC80LgsINC00LvRjyDRhNGD0L3QutGG0ZbRlyBgZmFjdG9yKClgINC/0L7RgtGA0ZbQsdC90L4g0LTQvtC00LDQstCw0YLQuCDQv9Cw0YDQsNC80LXRgtGAIGBvcmRlcmVkPVRSVUVgLiDQktC40LrQvtGA0LjRgdGC0LDQvdCwINC00L4g0LLQtdC60YLQvtGA0LANCg0KYGBge3J9DQpzdGF0dXMgPC0gYygiUG9vciIsICJJbXByb3ZlZCIsICJFeGNlbGxlbnQiLCAiUG9vciIpDQpgYGANCg0K0LrQvtC80LDQvdC00LAgYHN0YXR1cyA8LSBmYWN0b3Ioc3RhdHVzLCBvcmRlcmVkPVRSVUUpYCDQv9C10YDQtdGC0LLQvtGA0LjRgtGMINGG0LXQuSDQstC10LrRgtC+0YAg0YMg0LLQuNCz0LvRj9C0IGAoMywgMiwgMSwgMylgINGWINCy0YHRgtCw0L3QvtCy0LjRgtGMINCy0L3Rg9GC0YDRltGI0L3RjiDQstGW0LTQv9C+0LLRltC00L3RltGB0YLRjCDRj9C6IGAxPUV4Y2VsbGVudGAsIGAyPUltcHJvdmVkYCwgYDM9UG9vcmAuINCf0ZbQtCDRh9Cw0YEg0LHRg9C00Ywt0Y/QutC+0Zcg0L7QsdGA0L7QsdC60Lgg0YbRjNC+0LPQviDQstC10LrRgtC+0YDQsCDQstGW0L0g0LHRg9C00LUg0YHQv9GA0LjQudC90Y/RgtC40Lkg0Y/QuiDQv9C+0YDRj9C00LrQvtCy0LAg0LfQvNGW0L3QvdCwINGW0Lcg0LfQsNGB0YLQvtGB0YPQstCw0L3QvdGP0Lwg0LLRltC00L/QvtCy0ZbQtNC90LjRhSDRgdGC0LDRgtC40YHRgtC40YfQvdC40YUg0LzQtdGC0L7QtNGW0LIuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0JfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgNGW0LLQvdGWINGE0LDQutGC0L7RgNCwINC+0LPQvtC70L7RiNGD0Y7RgtGM0YHRjyDQt9C90LDRh9C10L3QvdGP0Lwg0LLQtdC60YLQvtGA0LAg0LIg0LDQu9GE0LDQstGW0YLQvdC+0LzRgyDQv9C+0YDRj9C00LrRgy4g0KbQtSDRgdC/0YDQsNGG0Y7QstCw0LvQviDQtNC70Y8g0YTQsNC60YLQvtGA0LAgYHN0YXR1c2AsINC+0YHQutGW0LvRjNC60Lgg0L/QvtGA0Y/QtNC+0LogYCJFeGNlbGxlbnQiYCwgYCJJbXByb3ZlZCJgLCBgIlBvb3IiYCDQvNCw0ZQg0YHQtdC90YEuINCv0LrQsdC4INC30LDQvNGW0YHRgtGMIGAiUG9vciJgINGB0YLQvtGP0LvQviBgIkFpbGluZyJgLCDRgtC+INCy0LjQvdC40LrQu9C4INCxINGC0YDRg9C00L3QvtGJ0ZYsINC+0YHQutGW0LvRjNC60Lgg0YLQvtC00ZYg0L/QvtGA0Y/QtNC+0Log0LHRg9CyINCx0Lgg0YLQsNC60LjQvDogYCJBaWxpbmciYCwgYCJFeGNlbGxlbnQiYCwgYCJJbXByb3ZlZCJgLiDQodGF0L7QttCwINC/0YDQvtCx0LvQtdC80LAg0LLQuNC90LjQutC70LAg0LEsINGP0LrQsdC4INC90LDQvCDQsdGD0LIg0L/QvtGC0YDRltCx0LXQvSDRgtCw0LrQuNC5INC/0L7RgNGP0LTQvtC6OiBgIlBvb3IiYCwgYCJJbXByb3ZlZCJgLCBgIkV4Y2VsbGVudCJgLiDQlNC70Y8g0LLQv9C+0YDRj9C00LrQvtCy0LDQvdC40YUg0YTQsNC60YLQvtGA0ZbQsiDQt9GA0ZbQtNC60LAg0L/RltC00YXQvtC00LjRgtGMINCw0LvRhNCw0LLRltGC0L3QuNC5INC/0L7RgNGP0LTQvtC6INGA0ZbQstC90ZbQsiwg0YnQviDQv9GA0L7Qv9C+0L3Rg9GU0YLRjNGB0Y8g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvC4g0J/QvtGA0Y/QtNC+0Log0LzQvtC20L3QsCDQt9C80ZbQvdC40YLQuCDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0L/QsNGA0LDQvNC10YLRgNCwIGBsZXZlbHNgLiDQndCw0L/RgNC40LrQu9Cw0LQsDQoNCmBgYHtyfQ0Kc3RhdHVzIDwtIGZhY3RvcihzdGF0dXMsIG9yZGVyPVRSVUUsDQogICAgICAgICAgICAgICAgIGxldmVscz1jKCJQb29yIiwgIkltcHJvdmVkIiwgIkV4Y2VsbGVudCIpKQ0KYGBgDQoNCtC/0YDQuNGB0LLQvtGX0YLRjCDRgNGW0LLQvdGWINC30L3QsNGH0LXQvdGMINCy0LXQutGC0L7RgNCwINGDINGC0LDQutC40Lkg0YHQv9C+0YHQsdGWOiBgMT1Qb29yYCwgYDI9SW1wcm92ZWRgLCBgMz1FeGNlbGxlbnRgLiDQn9C10YDQtdCy0ZbRgNGC0LUsINGJ0L4g0LLRgdGWINC/0YDQuNGB0LLQvtGU0L3RliDRgNGW0LLQvdGWINCy0ZbQtNC/0L7QstGW0LTQsNGO0YLRjCDRgNC10LDQu9GM0L3QuNC8INC30L3QsNGH0LXQvdC90Y/QvCDQtNCw0L3QuNGFLiDQo9GB0ZYg0LfQvdCw0YfQtdC90L3RjyDQtNCw0L3QuNGFLCDRj9C60ZYg0L3QtSDQsdGD0LvQuCDQt9Cw0LfQvdCw0YfQtdC90ZYsINCx0YPQtNGD0YLRjCDQv9C+0LfQvdCw0YfQtdC90ZYg0Y/QuiDQstGW0LTRgdGD0YLQvdGWLg0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCd0LDQstC10LTQtdC90LjQuSDQvdC40LbRh9C1INC/0YDQvtCz0YDQsNC80L3QuNC5INC60L7QtCDQv9C+0LrQsNC30YPRlCwg0Y/QuiDQv9GA0LjQt9C90LDRh9C10L3QvdGPINGE0LDQutGC0L7RgNGW0LIg0ZYg0LLQv9C+0YDRj9C00LrQvtCy0LDQvdC40YUg0YTQsNC60YLQvtGA0ZbQsiDQstC/0LvQuNCy0LDRlCDQvdCwINCw0L3QsNC70ZbQtyDQtNCw0L3QuNGFLg0KDQpgYGB7cn0NCnBhdGllbnRJRCA8LSBjKDEsIDIsIDMsIDQpDQphZ2UgPC0gYygyNSwgMzQsIDI4LCA1MikNCmRpYWJldGVzIDwtIGMoIlR5cGUxIiwgIlR5cGUyIiwgIlR5cGUxIiwgIlR5cGUxIikNCnN0YXR1cyA8LSBjKCJQb29yIiwgIkltcHJvdmVkIiwgIkV4Y2VsbGVudCIsICJQb29yIikNCmRpYWJldGVzIDwtIGZhY3RvcihkaWFiZXRlcykNCnN0YXR1cyA8LSBmYWN0b3Ioc3RhdHVzLCBvcmRlcj1UUlVFKQ0KcGF0aWVudGRhdGEgPC0gZGF0YS5mcmFtZShwYXRpZW50SUQsIGFnZSwgZGlhYmV0ZXMsIHN0YXR1cykNCnN0cihwYXRpZW50ZGF0YSkNCmBgYA0KDQpgYGB7cn0NCnN1bW1hcnkocGF0aWVudGRhdGEpDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQodC/0L7Rh9Cw0YLQutGDINCy0Lgg0LLQstC+0LTQuNGC0LUg0LTQsNC90ZYsINGP0Log0LLQtdC60YLQvtGA0LguINCf0L7RgtGW0Lwg0LLQuCDQstC60LDQt9GD0ZTRgtC1LCDRidC+IGBkaWFiZXRlc2Ag4oCTINGG0LUg0YTQsNC60YLQvtGALCDQsCBgc3RhdHVzYCDigJMg0YbQtSDQstC/0L7RgNGP0LTQutC+0LLQsNC90LjQuSDRhNCw0LrRgtC+0YAuINCd0LDRgNC10YjRgtGWLCDQstC4INC+0LHigJnRlNC00L3Rg9GU0YLQtSDQtNCw0L3RliDQsiDRgtCw0LHQu9C40YbRji4g0KTRg9C90LrRhtGW0Y8gYHN0cihvYmplY3QpYCDQstC40LLQvtC00LjRgtGMINGW0L3RhNC+0YDQvNCw0YbRltGOINC/0YDQviDQvtCx4oCZ0ZTQutGCICjQsiDQvdCw0YjQvtC80YMg0LLQuNC/0LDQtNC60YMg4oCTINGC0LDQsdC70LjRhtGPINC00LDQvdC40YUpLiDQr9GB0L3QviDQstC40LTQvdC+LCDRidC+IGBkaWFiZXRlc2Ag4oCTINGG0LUg0YTQsNC60YLQvtGALCDQsCBgc3RhdHVzYCDigJMg0YbQtSDQstC/0L7RgNGP0LTQutC+0LLQsNC90LjQuSDRhNCw0LrRgtC+0YA7INGC0LDQutC+0LYg0LfQsNC30L3QsNGH0LXQvdC+LCDRj9C6INCy0ZbQvSDQt9Cw0LrQvtC00L7QstCw0L3QuNC5INGD0YHQtdGA0LXQtNC40L3RliDQv9GA0L7Qs9GA0LDQvNC4LiDQl9Cy0LXRgNC90ZbRgtGMINGD0LLQsNCz0YMsINGJ0L4g0YTRg9C90LrRhtGW0Y8gYHN1bW1hcnkoKWAg0L7QsdGA0L7QsdC70Y/RlCDQt9C80ZbQvdC90ZYg0YPRgdGW0LvRj9C60L4uINCU0LvRjyDQvdC10L/QtdGA0LXRgNCy0L3QvtGXINC30LzRltC90L3QvtGXIGBhZ2VgINC+0LHRh9C40YHQu9C10L3QviDQvNGW0L3RltC80YPQvCAobWluaW11bSwgbWluLiksINC80LDQutGB0LjQvNGD0LwgKG1heGltdW0sIG1heC4pLCDRgdC10YDQtdC00L3RlCAobWVhbikg0ZYg0LrQstCw0YDRgtC40LvQuCAoZmlyc3QgYW5kIHRoaXJkIHF1YXJ0aWxlczogMXN0IFF1LiwgM3JkIFF1LiksINCwINC00LvRjyDQutCw0YLQtdCz0L7RgNGW0LDQu9GM0L3QuNGFINC30LzRltC90L3QuNGFIGBkaWFiZXRlc2Ag0ZYgYHN0YXR1c2Ag0L/RltC00YDQsNGF0L7QstCw0L3QsCDRh9Cw0YHRgtC+0YLQsCDQt9GD0YHRgtGA0ZbRh9GWINC60L7QttC90L7Qs9C+INC30L3QsNGH0LXQvdC90Y8uDQoNCiMjI9Ch0L/QuNGB0LrQuA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCh0L/QuNGB0LrQuCDigJMg0YbQtSDQvdCw0LnRgdC60LvQsNC00L3RltGI0LjQuSDRgtC40L8g0LTQsNC90LjRhSDQsiBSLiDQpNCw0LrRgtC40YfQvdC+INGB0L/QuNGB0L7QuiDigJMg0YbQtSDQstC/0L7RgNGP0LTQutC+0LLQsNC90LjQuSDQvdCw0LHRltGAINC+0LHigJnRlNC60YLRltCyICjQutC+0LzQv9C+0L3QtdC90YLRltCyKS4g0KHQv9C40YHQvtC6INC80L7QttC1INC+0LHigJnRlNC00L3Rg9Cy0LDRgtC4INGA0ZbQt9C90ZYgKNC80L7QttC70LjQstC+LCDQvdC1INC/0L7QsuKAmdGP0LfQsNC90ZYg0LzRltC2INGB0L7QsdC+0Y4pINC+0LHigJnRlNC60YLQuCDQv9GW0LQg0L7QtNC90LjQvCDRltC84oCZ0Y/QvC4g0J3QsNC/0YDQuNC60LvQsNC0LCDRgdC/0LjRgdC+0Log0LzQvtC20LUg0LHRg9GC0Lgg0L/QvtGU0LTQvdCw0L3QvdGP0Lwg0LLQtdC60YLQvtGA0ZbQsiwg0LzQsNGC0YDQuNGG0YwsINGC0LDQsdC70LjRhtGMINC00LDQvdC40YUg0LDQsdC+INGW0L3RiNC40YUg0YHQv9C40YHQutGW0LIuDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0KHQv9C40YHQvtC6INC80L7QttC90LAg0YHRgtCy0L7RgNC40YLQuCDQtyDQtNC+0L/QvtC80L7Qs9C+0Y4g0YTRg9C90LrRhtGW0ZcgYGxpc3QoKWA6DQoNCmBgYHtyfQ0KbXlsaXN0IDwtIGxpc3Qob2JqZWN0XzEsIG9iamVjdF8yLCAuLi4pDQpgYGANCg0K0LTQtSDQvtCx4oCZ0ZTQutGC0Lgg4oCTINGG0LUg0LHRg9C00Ywt0Y/QutGWINGB0YLRgNGD0LrRgtGD0YDQuCDQtNCw0L3QuNGFLCDRidC+INC+0LHQs9C+0LLQvtGA0Y7QstCw0LvQuNGB0Y8g0LTQviDRhtGM0L7Qs9C+Lg0K0J7QseKAmdGU0LrRgtCw0Lwg0YMg0YHQv9C40YHQutGDINC80L7QttC90LAg0L/RgNC40YHQstC+0Y7QstCw0YLQuCDRltC80LXQvdCwOg0KDQpgYGB7cn0NCm15bGlzdCA8LSBsaXN0KG5hbWVfMT1vYmplY3RfMSwgbmFtZV8yPW9iamVjdF8yLCAuLi4pLg0KYGBgDQoNCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0K0J/RgNC40LrQu9Cw0LQg0YDQvtCx0L7RgtC4INC30ZYg0YHQv9C40YHQutCw0LzQuCDQvdCw0LLQtdC00LXQvdC+INC90LjQttGH0LUuDQoNCmBgYHtyfQ0KZyA8LSAiTXkgRmlyc3QgTGlzdCINCmggPC0gYygyNSwgMjYsIDE4LCAzOSkNCmogPC0gbWF0cml4KDE6MTAsIG5yb3c9NSkNCmsgPC0gYygib25lIiwgInR3byIsICJ0aHJlZSIpDQpteWxpc3QgPC0gbGlzdCh0aXRsZT1nLCBhZ2VzPWgsIGosIGspDQpteWxpc3QNCmBgYA0KDQpgYGB7cn0NCm15bGlzdFtbMl1dDQpteWxpc3RbWyJhZ2VzIl1dDQpgYGANCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQoyDQvdCw0LLQtdC00LXQvdC+0LzRgyDQv9GA0LjQutC70LDQtNGWINC80Lgg0YHRgtCy0L7RgNC40LvQuCDRgdC/0LjRgdC+0Log0ZbQtyDRh9C+0YLQuNGA0YzQvtGFINC60L7QvNC/0L7QvdC10L3RgtGW0LI6INGC0LXRgdGC0L7QstC40Lkg0YDRj9C00L7Quiwg0YfQuNGB0LvQvtCy0LjQuSDQstC10LrRgtC+0YAsINC80LDRgtGA0LjRhtGPINC5INGC0LXQutGB0YLQvtCy0LjQuSDQstC10LrRgtC+0YAuINCjINCy0LjQs9C70Y/QtNGWINGB0L/QuNGB0LrRgyDQvNC+0LbQvdCwINC30LHQtdGA0ZbQs9Cw0YLQuCDQsdGD0LTRjC3Rj9C60LUg0YfQuNGB0LvQviDQvtCx4oCZ0ZTQutGC0ZbQsi4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQnNC+0LbQvdCwINC/0L7Qt9C90LDRh9Cw0YLQuCDQtdC70LXQvNC10L3RgtC4INGB0L/QuNGB0LrRgywg0LLQutCw0LfQsNCy0YjQuCDRl9GF0L3RltC5INC90L7QvNC10YAg0LDQsdC+INC90LDQt9Cy0YMg0LLRgdC10YDQtdC00LjQvdGWINC/0L7QtNCy0ZbQudC90LjRhSDQutCy0LDQtNGA0LDRgtC90LjRhSDQtNGD0LbQvtC6LiDQoyDRhtGM0L7QvNGDINC/0YDQuNC60LvQsNC00ZYg0ZYgYG15bGlzdFtbMl1dYCwg0ZYgYG15bGlzdFtbImFnZXMiXV1gINC/0L7Qt9C90LDRh9Cw0Y7RgtGMINC+0LTQuNC9INGWINGC0L7QuSDQttC1INGH0LjRgdC70L7QstC40Lkg0LLQtdC60YLQvtGAINGW0Lcg0YfQvtGC0LjRgNGM0L7RhSDQtdC70LXQvNC10L3RgtGW0LIuINCh0L/QuNGB0LrQuCDigJMg0YbQtSDQstCw0LbQu9C40LLQuNC5INGC0LjQvyDRgdGC0YDRg9C60YLRg9GA0Lgg0LTQsNC90LjRhSDQsiBSINC3INC00LLQvtGFINC/0YDQuNGH0LjQvS4g0J/Qvi3Qv9C10YDRiNC1LCDQstC+0L3QuCDQtNC+0LfQstC+0LvRj9GO0YLRjCDQstCw0Lwg0LHQtdC3INC/0YDQvtCx0LvQtdC8INCy0L/QvtGA0Y/QtNC60YPQstCw0YLQuCDRliDQstC40LrQu9C40LrQsNGC0Lgg0L3QsCDQtdC60YDQsNC9INGA0L7Qt9GA0ZbQt9C90LXQvdGDINGW0L3RhNC+0YDQvNCw0YbRltGOLiDQn9C+LdC00YDRg9Cz0LUsINGA0LXQt9GD0LvRjNGC0LDRgtC4INCy0LjQutC+0L3QsNC90L3RjyDQsdCw0LPQsNGC0YzQvtGFINC60L7QvNCw0L3QtCDRlCDRgdC/0LjRgdC60LDQvNC4LiDQoyDRhtGM0L7QvNGDINCy0LjQv9Cw0LTQutGDINC60L7RgNC40YHRgtGD0LLQsNGHINC+0YLRgNC40LzRg9GUINC3INGC0LDQutC40YUg0YHQv9C40YHQutGW0LIg0L/QvtGC0YDRltCx0L3RgyDRltC90YTQvtGA0LzQsNGG0ZbRji4g0JLQuCDQt9C80L7QttC10YLQtSDQv9C+0LHQsNGH0LjRgtC4INGH0LjRgdC70LXQvdC90ZYg0L/RgNC40LrQu9Cw0LTQuCDRhNGD0L3QutGG0ZbQuSwg0YnQviDQv9C+0LLQtdGA0YLQsNGO0YLRjCDRgdC/0LjRgdC60LgsINGDINC90LDRgdGC0YPQv9C90LjRhSDQu9C10LrRhtGW0Y/RhS4NCg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQrQktGW0LTQt9C90LDRh9C40LzQviDQutGW0LvRjNC60LAg0L7RgdC+0LHQu9C40LLQvtGB0YLQtdC5INC80L7QstC4IFIsINC/0YDQviDRj9C60ZYg0LLQsNC8INGB0LvRltC0INC/0LDQvOKAmdGP0YLQsNGC0Lg6DQogICog0YLQvtGH0LrQsCAoYC5gKSDRgyDQvdCw0LfQstCw0YUg0L7QseKAmdGU0LrRgtGW0LIg0L3QtSDQvNCw0ZQg0L3RltGP0LrQvtCz0L4g0YHQv9C10YbRltCw0LvRjNC90L7Qs9C+INC30L3QsNGH0LXQvdC90Y8uINCe0LTQvdCw0Log0LfQvdCw0Log0LTQvtC70LDRgNCwIChgJGApINC80LDRlCDQv9GA0LjQsdC70LjQt9C90L4g0YLQsNC60LUg0LYg0LfQvdCw0YfQtdC90L3Rjywg0Y/QuiDRgtC+0YfQutCwINCyINGW0L3RiNC40YUg0LzQvtCy0LDRhSDQv9GA0L7Qs9GA0LDQvNGD0LLQsNC90L3Rjywg0L/QvtC30L3QsNGH0LDRjtGH0Lgg0YfQsNGB0YLQuNC90YMg0L7QseKAmdGU0LrRgtCwLiDQndCw0L/RgNC40LrQu9Cw0LQsIGBBJHhgINC/0L7Qt9C90LDRh9Cw0ZQg0LfQvNGW0L3QvdGDIGB4YCDQsiDRgtCw0LHQu9C40YbRliDQtNCw0L3QuNGFIGBBYDsNCiAgKiDQsiBSINC90LXQvNCw0ZQg0LzQvtC20LvQuNCy0L7RgdGC0ZYg0YHRgtCy0L7RgNGO0LLQsNGC0Lgg0LHQsNCz0LDRgtC+0YDRj9C00LrQvtCy0ZYg0LDQsdC+INCx0LvQvtC60L7QstGWINC60L7QvNC10L3RgtCw0YDRli4g0JrQvtC20LXQvSDRgNGP0LTQvtC6INC60L7QvNC10L3RgtCw0YDRjyDQv9C+0YLRgNGW0LHQvdC+INC/0L7Rh9C40L3QsNGC0Lgg0LfQvdCw0LrQvtC8IGAjYC4g0J/RltC0INGH0LDRgSDQvdCw0LvQsNCz0L7QtNC20LXQvdC90Y8g0L/RgNC+0LPRgNCw0LzQvdC+0LPQviDQutC+0LTRgyDQvNC+0LbQvdCwINGD0LrQu9Cw0LTQsNGC0Lgg0LTRltC70Y/QvdC60YMg0LrQvtC00YMsINGJ0L4g0L/QvtCy0LjQvdC90LAg0LHRg9GC0Lgg0L/RgNC+0L/Rg9GJ0LXQvdC+0Y4g0L/RgNC+0LPRgNCw0LzQvdC40Lwg0ZbQvdGC0LXRgNC/0YDQtdGC0LDRgtC+0YDQvtC8LCDQstGB0LXRgNC10LTQuNC90YMg0LrQvtC90YHRgtGA0YPQutGG0ZbRlyBgaWYgKEZBTFNFKSB7Li4ufWAuINCX0LDQvNGW0L3QsCBgRkFMU0VgINC90LAgYFRSVUVgINC30YDQvtCx0LjRgtGMINC80L7QttC70LjQstC40Lwg0LLQuNC60L7QvdCw0L3QvdGPINC60L7QtNGDOw0KICAqINC/0YDQuNGB0LLQvtGU0L3QvdGPINC30L3QsNGH0LXQvdGMINC90LXRltGB0L3Rg9GO0YfQvtCz0L4g0LXQu9C10LzQtdC90YLRgyDQstC10LrRgtC+0YDQsCwg0LzQsNGC0YDQuNGG0ZYsINC80LDRgdC40LLRgyDQtNCw0L3QuNGFINCw0LHQviDRgdC/0LjRgdC60YMg0YDQvtC30YjQuNGA0LjRgtGMINC90LDRj9Cy0L3QuNC5INC+0LHigJnRlNC60YIg0LfQsNC00LvRjyDQstC80ZbRidC10L3QvdGPINC90L7QstC+0LPQviDQt9C90LDRh9C10L3QvdGPLiDQoNC+0LfQs9C70Y/QvdC10LzQviDQv9GA0LjQutC70LDQtDoNCg0KYGBge3J9DQp4IDwtIGMoOCwgNiwgNCkNCnhbN10gPC0gMTANCngNCmBgYA0KDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCtCSINGA0LXQt9GD0LvRjNGC0LDRgtGWINC/0YDQuNCy0LvQsNGB0L3QtdC90L3RjyDRgNC+0LfQvNGW0YAg0LLQtdC60YLQvtGA0LAgeCDQt9Cx0ZbQu9GM0YjQuNCy0YHRjyDQtyDRgtGA0YzQvtGFINC00L4g0YHQtdC80Lgg0LXQu9C10LzQtdC90YLRltCyOw0KICAqINCyIFIg0L3QtdC80LDRlCDRgdC60LDQu9GP0YDRltCyLiDQktC+0L3QuCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90ZYg0YMg0LLQuNCz0LvRj9C00ZYg0LLQtdC60YLQvtGA0LAsINGJ0L4g0YHQutC70LDQtNCw0ZTRgtGM0YHRjyDQtyDQvtC00L3QvtCz0L4g0LXQu9C10LzQtdC90YLQsDsNCiAgKiDQvdGD0LzQtdGA0LDRhtGW0Y8g0LIgUiDQv9C+0YfQuNC90LDRlNGC0YzRgdGPINC3IDEsINCwINC90LUg0LcgMC4g0KMg0L3QsNCy0LXQtNC10L3QvtC80YMg0LLQuNGJ0LUg0LLQtdC60YLQvtGA0ZYg0LXQu9C10LzQtdC90YIgYHhbMV1gIOKAkyDRhtC1IDguDQo=