A23_MAE118_BA22008

Ejercicio 1

1- Explique el análisis de conglomerados

Su aplicación consiste en agrupar datos que poseen similitudes entre sí, un ejemplo podría ser un proyecto de investigación el cual es asignado a un grupo de estudiantes y como líder o catedrático de grupo quieres organizarlos en grupos con el análisis de conglomerados podrías hacerlo, pero para mayor desarrollo podríamos aplicar este método a una tienda para conocer las preferencias de los clientes y agruparlos en base a lo que llegan a demandar, esto te ayudará a entender los datos que pueden parecer desordenados pero al aplicar este análisis tendrás una mayor visibilidad de ellos.

Fuente: [daysimaria2017]

Ejercicio 2 y 3

Cuadro Comparativo del Análisis Clustrer

 

 

Análisis de clúster

Técnicas disponibles

Ventajas

Desventajas

Jerárquico

Une y a la vez divide en base a las características que poseen los métodos a aplicarse, eso si que si se agrega una unidad a un grupo esta no se puede deshacer porque solo puede ser asignada una sola vez.

<![if !supportLists]>·         <![endif]>Aglomeración aglomerativa.

<![if !supportLists]>·         <![endif]>Dendograma.

<![if !supportLists]>·         <![endif]>Mapa de calor.

Explorar diversas estructuras jerárquicas, no requiere especificar el número de clúster, perfecto para conjunto de datos pequeños.

La interpretación del diagrama, las asignaciones de agrupamiento son secuenciales, errores que pueden propagarse y afectar la solución final

No jerárquico

Clasifican las observaciones en un conjunto de datos, estos se asignan de acuerdo a los parentescos o cosas en común que posean.

<![if !supportLists]>·         <![endif]>Agrupamiento de las k-medias.

<![if !supportLists]>·         <![endif]>Algoritmo PAM.

<![if !supportLists]>·         <![endif]>CLARA.

 

Calcular k-medias para un rango de k valores, el ritmo de algoritmos de las k-means varias veces y el PAM que es un valor poco sensible a los atípicos.

Los resultados finales son sensibles a la selección de los aleatoria inicial de los datos, también a los valores atípicos y por otro lado si reorganizas los datos puedes obtener una solución diferente.

 

 

 

Fuentes: [Alboukadel2017] [daysimaria2017]

Ejercicio 4

Capítulo 4: K-means Cluster

data("USArrests") # Loading the data set
df <- scale(USArrests) # Scaling the data
# View the firt 3 rows of the data
head(df, n = 3)
##             Murder   Assault   UrbanPop         Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska  0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona 0.07163341 1.4788032  0.9989801  1.042878388

4.3.3 Estimación del numero de clusters

library(factoextra)
fviz_nbclust(df, kmeans, method = "wss") +
geom_vline(xintercept = 4, linetype = 2)

Usaremos 4 clusters, k=4

4.3.4 Computamos K-mean

# Compute k-means with k = 4
set.seed(123)
km.res <- kmeans(df, 4, nstart = 25)
print(km.res)
## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
## 
## Cluster means:
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3 
## 
## Within cluster sum of squares by cluster:
## [1]  8.316061 11.952463 16.212213 19.922437
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

De que querer comparar las medias de cada variable por el cluster

aggregate(USArrests, by=list(cluster=km.res$cluster), mean)

Pero de querer añadir un punto de clasificacion

dd <- cbind(USArrests, cluster = km.res$cluster)
head(dd)

4.3.5 Accedemos a los resultado de la funcion de k-mean()

km.res$cluster ##Sacamos el numero de cluster para cada observacion
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3
head(km.res$cluster, 4) # Las primeras 4
##  Alabama   Alaska  Arizona Arkansas 
##        1        4        4        1
# Pedimos el tamaño
km.res$size
## [1]  8 13 16 13
# Y ahora pedimos la media
km.res$centers
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964

4.3.6 Ahora para visualizar el cluster k-mean

fviz_cluster(km.res, data = df,
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid", # Concentration ellipse
star.plot = TRUE, # Add segments from centroids to items
repel = TRUE, # Avoid label overplotting (slow)
ggtheme = theme_minimal()
)

Cápitulo 5: K-Medoids

# Datos
data("USArrests") # Load the data set
df <- scale(USArrests) # Scale the data
head(df, n = 3) # View the firt 3 rows of the data
##             Murder   Assault   UrbanPop         Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska  0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona 0.07163341 1.4788032  0.9989801  1.042878388

5.3.3 Estimamos el numero optimo de clusters

library(cluster)
library(factoextra)
fviz_nbclust(df, pam, method = "silhouette")+
theme_classic()

5.3.4 Computamos el PAM clustering

pam.res <- pam(df, 2)
print(pam.res)
## Medoids:
##            ID     Murder    Assault   UrbanPop       Rape
## New Mexico 31  0.8292944  1.3708088  0.3081225  1.1603196
## Nebraska   27 -0.8008247 -0.8250772 -0.2445636 -0.5052109
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              1              1              2              1 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              1              2              2              1              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              2              2              1              2              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              2              2              1              2              1 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              2              1              2              1              1 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              1              2              2 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              1              1              1              2              2 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              2              2              2              2              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              1              2              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              2              2              2              2              2 
## Objective function:
##    build     swap 
## 1.441358 1.368969 
## 
## Available components:
##  [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
##  [6] "clusinfo"   "silinfo"    "diss"       "call"       "data"

Para añadir un punto de clasificación a los datos originales

dd <- cbind(USArrests, cluster = pam.res$cluster)
head(dd, n = 3)

5.3.5 El acceso a los resultados de la funcion pam()

# Cluster medoids: New Mexico, Nebraska
pam.res$medoids
##                Murder    Assault   UrbanPop       Rape
## New Mexico  0.8292944  1.3708088  0.3081225  1.1603196
## Nebraska   -0.8008247 -0.8250772 -0.2445636 -0.5052109
# Cluster numbers
head(pam.res$clustering)
##    Alabama     Alaska    Arizona   Arkansas California   Colorado 
##          1          1          1          2          1          1

5.3.6 Visualizamos el cluster PAM

fviz_cluster(pam.res,
palette = c("#00AFBB", "#FC4E07"), # color palette
ellipse.type = "t", # Concentration ellipse
repel = TRUE, # Avoid label overplotting (slow)
ggtheme = theme_classic()
)

Cápitulo 6: CLARA- Conglomerando Grandes Aplicaciones

# El formato de los datos y su preparacion
set.seed(1234)
# Generate 500 objects, divided into 2 clusters.
df <- rbind(cbind(rnorm(200,0,8), rnorm(200,0,8)),
cbind(rnorm(300,50,8), rnorm(300,50,8)))
# Specify column and row names
colnames(df) <- c("x", "y")

rownames(df) <- paste0("S", 1:nrow(df))
# Previewing the data
head(df, nrow = 6)
##             x        y
## S1  -9.656526 3.881815
## S2   2.219434 5.574150
## S3   8.675529 1.484111
## S4 -18.765582 5.605868
## S5   3.432998 2.493448
## S6   4.048447 6.083699

6.3.3 Estimar el número de clusters optimos

library(cluster)
library(factoextra)
fviz_nbclust(df, clara, method = "silhouette")+
theme_classic()

6.3.4 Computamos CLARA

# Compute CLARA
clara.res <- clara(df, 2, samples = 50, pamLike = TRUE)
# Print components of clara.res
print(clara.res)
## Call:     clara(x = df, k = 2, samples = 50, pamLike = TRUE) 
## Medoids:
##              x         y
## S121 -1.531137  1.145057
## S455 48.357304 50.233499
## Objective function:   9.87862
## Clustering vector:    Named int [1:500] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "names")= chr [1:500] "S1" "S2" "S3" "S4" "S5" "S6" "S7" ...
## Cluster sizes:            200 300 
## Best sample:
##  [1] S37  S49  S54  S63  S68  S71  S76  S80  S82  S101 S103 S108 S109 S118 S121
## [16] S128 S132 S138 S144 S162 S203 S210 S216 S231 S234 S249 S260 S261 S286 S299
## [31] S304 S305 S312 S315 S322 S350 S403 S450 S454 S455 S456 S465 S488 S497
## 
## Available components:
##  [1] "sample"     "medoids"    "i.med"      "clustering" "objective" 
##  [6] "clusinfo"   "diss"       "call"       "silinfo"    "data"

Para añadir un punto de clasificacion en la data original

dd <- cbind(df, cluster = clara.res$cluster)
head(dd, n = 4)
##             x        y cluster
## S1  -9.656526 3.881815       1
## S2   2.219434 5.574150       1
## S3   8.675529 1.484111       1
## S4 -18.765582 5.605868       1

Para acceder a los resultados regresados por clara()

# Medoids
clara.res$medoids
##              x         y
## S121 -1.531137  1.145057
## S455 48.357304 50.233499
# Clustering
head(clara.res$clustering, 10)
##  S1  S2  S3  S4  S5  S6  S7  S8  S9 S10 
##   1   1   1   1   1   1   1   1   1   1

6.3.5 Visualizar el Cluster CLARA

fviz_cluster(clara.res,
palette = c("#00AFBB", "#FC4E07"), # color palette
ellipse.type = "t", # Concentration ellipse
geom = "point", pointsize = 1,
ggtheme = theme_classic()
)

Cápitulo 7: Conglomerados Aglomerativos

# Estructura de Datos y preparacion
# Load the data
data("USArrests")
# Standardize the data
df <- scale(USArrests)
# Show the first 6 rows
head(df, nrow = 6)
##                Murder   Assault   UrbanPop         Rape
## Alabama    1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska     0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona    0.07163341 1.4788032  0.9989801  1.042878388
## Arkansas   0.23234938 0.2308680 -1.0735927 -0.184916602
## California 0.27826823 1.2628144  1.7589234  2.067820292
## Colorado   0.02571456 0.3988593  0.8608085  1.864967207

7.2.2 Similitud de medidas

# Compute the dissimilarity matrix
# df = the standardized data
res.dist <- dist(df, method = "euclidean")

Para que enseñe las primeras 6 columnas y filas

as.matrix(res.dist)[1:6, 1:6]
##             Alabama   Alaska  Arizona Arkansas California Colorado
## Alabama    0.000000 2.703754 2.293520 1.289810   3.263110 2.651067
## Alaska     2.703754 0.000000 2.700643 2.826039   3.012541 2.326519
## Arizona    2.293520 2.700643 0.000000 2.717758   1.310484 1.365031
## Arkansas   1.289810 2.826039 2.717758 0.000000   3.763641 2.831051
## California 3.263110 3.012541 1.310484 3.763641   0.000000 1.287619
## Colorado   2.651067 2.326519 1.365031 2.831051   1.287619 0.000000

7.2.3 Enlazamiento

res.hc <- hclust(d = res.dist, method = "ward.D2")

7.2.4 Dendogramas

# cex: label size
library("factoextra")
fviz_dend(res.hc, cex = 0.5)

7.2.5 Verificamos el árbol Cluster

# Compute cophentic distance
res.coph <- cophenetic(res.hc)
# Correlation between cophenetic distance and
# the original distance
cor(res.dist, res.coph)
## [1] 0.6975266
res.hc2 <- hclust(res.dist, method = "average")
cor(res.dist, cophenetic(res.hc2))
## [1] 0.7180382

7.4 Cortamos el dendograma en diferentes partes

# Cut tree into 4 groups
grp <- cutree(res.hc, k = 4)
head(grp, n = 4)
##  Alabama   Alaska  Arizona Arkansas 
##        1        2        2        3
# Number of members in each cluster
table(grp)
## grp
##  1  2  3  4 
##  7 12 19 12
# Get the names for the members of cluster 1
rownames(df)[grp == 1]
## [1] "Alabama"        "Georgia"        "Louisiana"      "Mississippi"   
## [5] "North Carolina" "South Carolina" "Tennessee"
# Cut in 4 groups and color by groups
fviz_dend(res.hc, k = 4, # Cut in four groups
cex = 0.5, # label size
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE, # color labels by groups
rect = TRUE # Add rectangle around groups
)

Pero de preferirlo con el diagrama de dispersion usamos la función fviz_cluster()

fviz_cluster(list(data = df, cluster = grp),
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "convex", # Concentration ellipse
repel = TRUE, # Avoid label overplotting (slow)
show.clust.cent = FALSE, ggtheme = theme_minimal())

Capitulo 8: Comparación de Dendogramas

# Preparación de los datos
df <- scale(USArrests)
# Subset containing 10 rows
set.seed(123)
ss <- sample(1:50, 10)
df <- df[ss,]

8.2 Comparando dendogramas

library(dendextend)
# Compute distance matrix
res.dist <- dist(df, method = "euclidean")
# Compute 2 hierarchical clusterings
hc1 <- hclust(res.dist, method = "average")
hc2 <- hclust(res.dist, method = "ward.D2")
# Create two dendrograms
dend1 <- as.dendrogram (hc1)
dend2 <- as.dendrogram (hc2)
# Create a list to hold dendrograms
dend_list <- dendlist(dend1, dend2)

8.2.1 Comparación visual de los 2 dendogramas

tanglegram(dend1, dend2)

Se puede costumizar el tanglegrama

tanglegram(dend1, dend2,
highlight_distinct_edges = FALSE, # Turn-off dashed lines
common_subtrees_color_lines = FALSE, # Turn-off line colors
common_subtrees_color_branches = TRUE, # Color common branches
main = paste("entanglement =", round(entanglement(dend_list), 2))
)

8.2.2 La correlacion matriz entre una lista de dendogramas

Hay 2 métodos para la matriz de correlación entre las listas de arboles. El método Cophenetic y el metodo Baker

# Cophenetic correlation matrix
cor.dendlist(dend_list, method = "cophenetic")
##           [,1]      [,2]
## [1,] 1.0000000 0.9925544
## [2,] 0.9925544 1.0000000
# Baker correlation matrix
cor.dendlist(dend_list, method = "baker")
##           [,1]      [,2]
## [1,] 1.0000000 0.9895528
## [2,] 0.9895528 1.0000000

La Correlacion entre ambos se puede hacer de 2 maneras

# Cophenetic correlation coefficient
cor_cophenetic(dend1, dend2)
## [1] 0.9925544
# Baker correlation coefficient
cor_bakers_gamma(dend1, dend2)
## [1] 0.9895528

Es posible la comparación de multiples dendogramas y tambien es mas sencillo para simplificar el codigo

# Create multiple dendrograms by chaining
dend1 <- df %>% dist %>% hclust("complete") %>% as.dendrogram
dend2 <- df %>% dist %>% hclust("single") %>% as.dendrogram
dend3 <- df %>% dist %>% hclust("average") %>% as.dendrogram
dend4 <- df %>% dist %>% hclust("centroid") %>% as.dendrogram
# Compute correlation matrix
dend_list <- dendlist("Complete" = dend1, "Single" = dend2,
"Average" = dend3, "Centroid" = dend4)
cors <- cor.dendlist(dend_list)
# Print correlation matrix
round(cors, 2)
##          Complete Single Average Centroid
## Complete     1.00   0.46    0.45     0.30
## Single       0.46   1.00    0.23     0.17
## Average      0.45   0.23    1.00     0.31
## Centroid     0.30   0.17    0.31     1.00

Para visualizar la matriz de correlacion usando el paquete corrplot

# Visualize the correlation matrix using corrplot package
library(corrplot)
corrplot(cors, "pie", "lower")

Capítulo 9: Visualizando Dendogramas

# Load data
data(USArrests)
# Compute distances and hierarchical clustering
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")

9.1 Visualizando Dendogramas

Para crear un dendograma basico

library(factoextra)
fviz_dend(hc, cex = 0.5)

Se pueden usar los argumento de main, xlab, sub, y ylab para cambiar los nombres de los ejes

fviz_dend(hc, cex = 0.5,
main = "Dendrogram - ward.D2",
xlab = "Eje x", ylab = "Eje y", sub = "")

Para dibujar el dendograma en horizontal

fviz_dend(hc, cex = 0.5, horiz = TRUE)

De querer otro tipo de diseño también se puede usar el siguiente ejemplo

fviz_dend(hc, k = 4, # Cut in four groups
cex = 0.5, # label size
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE, # color labels by groups
ggtheme = theme_gray() # Change theme
)

###De querer otros colores, se puede usar los de “journal of clinical oncology” o “jco”###

fviz_dend(hc, cex = 0.5, k = 4, # Cut in four groups
k_colors = "jco")

Para dibujarlo en horizontal

fviz_dend(hc, k = 4, cex = 0.4, horiz = TRUE, k_colors = "jco",
rect = TRUE, rect_border = "jco", rect_fill = TRUE)

También lo podemos dibujar como un dendograma circular

fviz_dend(hc, cex = 0.5, k = 4,
k_colors = "jco", type = "circular")

Otro diseño es el estilo de árbol filogenetico

require("igraph")
fviz_dend(hc, k = 4, k_colors = "jco",
type = "phylogenic", repel = TRUE)

Para usar otro método y hacer arboles filigenticos se puede usar la libreria “igraoh”

require("igraph")
fviz_dend(hc, k = 4, # Cut in four groups
k_colors = "jco",
type = "phylogenic", repel = TRUE,
phylo_layout = "layout.gem")

9.2 En caso de dendogramas en gran escala

Podemos hacer zoom a los dendogramas

fviz_dend(hc, xlim = c(1, 20), ylim = c(1, 8))

9.2.2 Trazar un sub-árbol de Dendogramas

# Create a plot of the whole dendrogram,
# and extract the dendrogram data
dend_plot <- fviz_dend(hc, k = 4, # Cut in four groups
cex = 0.5, # label size
k_colors = "jco"
)
dend_data <- attr(dend_plot, "dendrogram") # Extract dendrogram data
# Cut the dendrogram at height h = 10
dend_cuts <- cut(dend_data, h = 10)
# Visualize the truncated version containing
# two branches
fviz_dend(dend_cuts$upper)

# Plot the whole dendrogram
print(dend_plot)

# Plot subtree 1
fviz_dend(dend_cuts$lower[[1]], main = "Subtree 1")

# Plot subtree 2
fviz_dend(dend_cuts$lower[[2]], main = "Subtree 2")

También podemos trazar arboles circulares como el siguiente:

fviz_dend(dend_cuts$lower[[2]], type = "circular")

9.2.3 Para guardar el dendograma en una pagina grande de PDF

pdf("dendrogram.pdf", width=30, height=15) # Open a PDF
p <- fviz_dend(hc, k = 4, cex = 1, k_colors = "jco" ) # Do plotting
print(p)
dev.off() # Close the PDF
## png 
##   2

9.3 Manipulando dendogramas usando “dendextend”

Código Estándar de R para crear un dendograma

data <- scale(USArrests)
dist.res <- dist(data)
hc <- hclust(dist.res, method = "ward.D2")
dend <- as.dendrogram(hc)
plot(dend)

Código de R para crear un dendograma usando operadores de cadena

library(dendextend)
dend <- USArrests[1:5,] %>% # data
scale %>% # Scale the data
dist %>% # calculate a distance matrix,
hclust(method = "ward.D2") %>% # Hierarchical clustering
as.dendrogram # Turn the object into a dendrogram.
plot(dend)

Bibliografías

LS0tDQp0aXRsZTogIkEyM19NQUUxMThfQkEyMjAwOCINCmF1dGhvcjogIg0KLUZhdmlvIEFuZHJlcyBCb25pbGxhIEFtYXlhDQotRGluYSBFc21lcmFsZGEgVW1hbnpvciBCb25pbGxhDQotRmVybmFuZGEgRWxpemFiZXRoIFJvZGFzIFZlbGFzcXVleg0KIg0KZGF0ZTogIjIwMjQtMTEtMjMiDQpvdXRwdXQ6IA0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCiAgICANCg0KY3NsOiAiYXBhLmNzbCIgICMgUnV0YSBhbCBhcmNoaXZvIENTTCBkZSBlc3RpbG8gQVBBDQpiaWJsaW9ncmFwaHk6ICJiaWJsaW9ncmFmaWEuYmliIiAgIyBSdXRhIGFsIGFyY2hpdm8gQmliVGVYIGRlIHJlZmVyZW5jaWFzDQotLS0NCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGV2YWw9VFJVRSwgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFKQ0KYGBgDQojIEVqZXJjaWNpbyAxDQojIyAqMS0gRXhwbGlxdWUgZWwgYW7DoWxpc2lzIGRlIGNvbmdsb21lcmFkb3MqICMjDQoNCg0KDQogICBTdSBhcGxpY2FjacOzbiBjb25zaXN0ZSBlbiBhZ3J1cGFyIGRhdG9zIHF1ZSBwb3NlZW4gc2ltaWxpdHVkZXMgZW50cmUgc8OtLCB1biBlamVtcGxvIHBvZHLDrWEgc2VyIHVuIHByb3llY3RvIGRlIGludmVzdGlnYWNpw7NuIGVsIGN1YWwgZXMgYXNpZ25hZG8gYSB1biBncnVwbyBkZSBlc3R1ZGlhbnRlcyB5IGNvbW8gbMOtZGVyIG8gY2F0ZWRyw6F0aWNvIGRlIGdydXBvIHF1aWVyZXMgb3JnYW5pemFybG9zIGVuIGdydXBvcyBjb24gZWwgYW7DoWxpc2lzIGRlIGNvbmdsb21lcmFkb3MgcG9kcsOtYXMgaGFjZXJsbywgcGVybyBwYXJhIG1heW9yIGRlc2Fycm9sbG8gcG9kcsOtYW1vcyBhcGxpY2FyIGVzdGUgbcOpdG9kbyBhIHVuYSB0aWVuZGEgcGFyYSBjb25vY2VyIGxhcyBwcmVmZXJlbmNpYXMgZGUgbG9zIGNsaWVudGVzIHkgYWdydXBhcmxvcyBlbiBiYXNlIGEgbG8gcXVlIGxsZWdhbiBhIGRlbWFuZGFyLCBlc3RvIHRlIGF5dWRhcsOhIGEgZW50ZW5kZXIgbG9zIGRhdG9zIHF1ZSBwdWVkZW4gcGFyZWNlciBkZXNvcmRlbmFkb3MgIHBlcm8gYWwgYXBsaWNhciBlc3RlIGFuw6FsaXNpcyB0ZW5kcsOhcyB1bmEgbWF5b3IgdmlzaWJpbGlkYWQgZGUgZWxsb3MuDQoNCkZ1ZW50ZTogW2RheXNpbWFyaWEyMDE3XQ0KDQoNCg0KDQojIEVqZXJjaWNpbyAyIHkgMw0KDQojIyBDdWFkcm8gQ29tcGFyYXRpdm8gZGVsIEFuw6FsaXNpcyBDbHVzdHJlciAjIw0KPGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiDQp4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiDQp4bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIg0KeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIg0KeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPg0KDQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPg0KPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50Pg0KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUiPg0KPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDE1Ij4NCjxsaW5rIHJlbD1GaWxlLUxpc3QNCmhyZWY9IkVsYWJvcmUlMjB1biUyMGN1YWRybyUyMGNvbXBhcmF0aXZvX2FyY2hpdm9zL2ZpbGVsaXN0LnhtbCI+DQo8bGluayByZWw9dGhlbWVEYXRhDQpocmVmPSJFbGFib3JlJTIwdW4lMjBjdWFkcm8lMjBjb21wYXJhdGl2b19hcmNoaXZvcy90aGVtZWRhdGEudGhteCI+DQo8bGluayByZWw9Y29sb3JTY2hlbWVNYXBwaW5nDQpocmVmPSJFbGFib3JlJTIwdW4lMjBjdWFkcm8lMjBjb21wYXJhdGl2b19hcmNoaXZvcy9jb2xvcnNjaGVtZW1hcHBpbmcueG1sIj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KIDx3OldvcmREb2N1bWVudD4NCiAgPHc6U3BlbGxpbmdTdGF0ZT5DbGVhbjwvdzpTcGVsbGluZ1N0YXRlPg0KICA8dzpUcmFja01vdmVzPmZhbHNlPC93OlRyYWNrTW92ZXM+DQogIDx3OlRyYWNrRm9ybWF0dGluZy8+DQogIDx3Okh5cGhlbmF0aW9uWm9uZT4yMTwvdzpIeXBoZW5hdGlvblpvbmU+DQogIDx3OlZhbGlkYXRlQWdhaW5zdFNjaGVtYXMvPg0KICA8dzpTYXZlSWZYTUxJbnZhbGlkPmZhbHNlPC93OlNhdmVJZlhNTEludmFsaWQ+DQogIDx3Oklnbm9yZU1peGVkQ29udGVudD5mYWxzZTwvdzpJZ25vcmVNaXhlZENvbnRlbnQ+DQogIDx3OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD4NCiAgPHc6RG9Ob3RQcm9tb3RlUUYvPg0KICA8dzpMaWRUaGVtZU90aGVyPkVTLVNWPC93OkxpZFRoZW1lT3RoZXI+DQogIDx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRoZW1lQXNpYW4+DQogIDx3OkxpZFRoZW1lQ29tcGxleFNjcmlwdD5YLU5PTkU8L3c6TGlkVGhlbWVDb21wbGV4U2NyaXB0Pg0KICA8dzpDb21wYXRpYmlsaXR5Pg0KICAgPHc6QnJlYWtXcmFwcGVkVGFibGVzLz4NCiAgIDx3OlNwbGl0UGdCcmVha0FuZFBhcmFNYXJrLz4NCiAgPC93OkNvbXBhdGliaWxpdHk+DQogIDx3OkJyb3dzZXJMZXZlbD5NaWNyb3NvZnRJbnRlcm5ldEV4cGxvcmVyNDwvdzpCcm93c2VyTGV2ZWw+DQogIDxtOm1hdGhQcj4NCiAgIDxtOm1hdGhGb250IG06dmFsPSJDYW1icmlhIE1hdGgiLz4NCiAgIDxtOmJya0JpbiBtOnZhbD0iYmVmb3JlIi8+DQogICA8bTpicmtCaW5TdWIgbTp2YWw9IiYjNDU7LSIvPg0KICAgPG06c21hbGxGcmFjIG06dmFsPSJvZmYiLz4NCiAgIDxtOmRpc3BEZWYvPg0KICAgPG06bE1hcmdpbiBtOnZhbD0iMCIvPg0KICAgPG06ck1hcmdpbiBtOnZhbD0iMCIvPg0KICAgPG06ZGVmSmMgbTp2YWw9ImNlbnRlckdyb3VwIi8+DQogICA8bTp3cmFwSW5kZW50IG06dmFsPSIxNDQwIi8+DQogICA8bTppbnRMaW0gbTp2YWw9InN1YlN1cCIvPg0KICAgPG06bmFyeUxpbSBtOnZhbD0idW5kT3ZyIi8+DQogIDwvbTptYXRoUHI+PC93OldvcmREb2N1bWVudD4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KIDx3OkxhdGVudFN0eWxlcyBEZWZMb2NrZWRTdGF0ZT0iZmFsc2UiIERlZlVuaGlkZVdoZW5Vc2VkPSJmYWxzZSINCiAgRGVmU2VtaUhpZGRlbj0iZmFsc2UiIERlZlFGb3JtYXQ9ImZhbHNlIiBEZWZQcmlvcml0eT0iOTkiDQogIExhdGVudFN0eWxlQ291bnQ9IjM3NiI+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTm9ybWFsIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA3Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgOSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJpbmRleCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImluZGV4IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iaW5kZXggMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJpbmRleCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImluZGV4IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iaW5kZXggNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJpbmRleCA3Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImluZGV4IDgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iaW5kZXggOSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSINCiAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgOSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImhlYWRlciIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJmb290ZXIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iaW5kZXggaGVhZGluZyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM1IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImNhcHRpb24iLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImVudmVsb3BlIHJldHVybiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJmb290bm90ZSByZWZlcmVuY2UiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0ibGluZSBudW1iZXIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0icGFnZSBudW1iZXIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9InRhYmxlIG9mIGF1dGhvcml0aWVzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Im1hY3JvIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9InRvYSBoZWFkaW5nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBCdWxsZXQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBOdW1iZXIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJMaXN0IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgQnVsbGV0IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgQnVsbGV0IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJMaXN0IE51bWJlciAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgTnVtYmVyIDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUaXRsZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJDbG9zaW5nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlNpZ25hdHVyZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFNlbWlIaWRkZW49InRydWUiDQogICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iRGVmYXVsdCBQYXJhZ3JhcGggRm9udCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJCb2R5IFRleHQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJMaXN0IENvbnRpbnVlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgQ29udGludWUgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJMaXN0IENvbnRpbnVlIDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBDb250aW51ZSA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikxpc3QgQ29udGludWUgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJNZXNzYWdlIEhlYWRlciIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjExIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0aXRsZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJTYWx1dGF0aW9uIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkRhdGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5kZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTm90ZSBIZWFkaW5nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkJvZHkgVGV4dCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkJvZHkgVGV4dCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iQmxvY2sgVGV4dCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJIeXBlcmxpbmsiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iRm9sbG93ZWRIeXBlcmxpbmsiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkVtcGhhc2lzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkRvY3VtZW50IE1hcCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJQbGFpbiBUZXh0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkUtbWFpbCBTaWduYXR1cmUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBUb3Agb2YgRm9ybSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJIVE1MIEJvdHRvbSBvZiBGb3JtIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ik5vcm1hbCAoV2ViKSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJIVE1MIEFjcm9ueW0iLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBBZGRyZXNzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkhUTUwgQ2l0ZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJIVE1MIENvZGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBEZWZpbml0aW9uIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkhUTUwgS2V5Ym9hcmQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBQcmVmb3JtYXR0ZWQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBTYW1wbGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iSFRNTCBUeXBld3JpdGVyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IkhUTUwgVmFyaWFibGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iTm9ybWFsIFRhYmxlIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9ImFubm90YXRpb24gc3ViamVjdCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJObyBMaXN0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ik91dGxpbmUgTGlzdCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ik91dGxpbmUgTGlzdCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ik91dGxpbmUgTGlzdCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIFNpbXBsZSAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIFNpbXBsZSAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIFNpbXBsZSAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBDbGFzc2ljIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIENsYXNzaWMgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBDb2x1bW5zIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgQ29sdW1ucyAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBDb2x1bW5zIDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgQ29sdW1ucyA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIEdyaWQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBHcmlkIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgR3JpZCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIEdyaWQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBHcmlkIDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgR3JpZCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIEdyaWQgNyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBHcmlkIDgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgTGlzdCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIExpc3QgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBMaXN0IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgTGlzdCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIExpc3QgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBMaXN0IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgTGlzdCA3Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIExpc3QgOCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBDb250ZW1wb3JhcnkiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgRWxlZ2FudCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiDQogICBOYW1lPSJUYWJsZSBQcm9mZXNzaW9uYWwiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgU3VidGxlIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgU3VidGxlIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgV2ViIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgV2ViIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgV2ViIDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iQmFsbG9vbiBUZXh0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9IlRhYmxlIEdyaWQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVGFibGUgVGhlbWUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlBsYWNlaG9sZGVyIFRleHQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJSZXZpc2lvbiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM0IiBRRm9ybWF0PSJ0cnVlIg0KICAgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iUXVvdGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSINCiAgIE5hbWU9IkludGVuc2UgUXVvdGUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxOSIgUUZvcm1hdD0idHJ1ZSINCiAgIE5hbWU9IlN1YnRsZSBFbXBoYXNpcyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIxIiBRRm9ybWF0PSJ0cnVlIg0KICAgTmFtZT0iSW50ZW5zZSBFbXBoYXNpcyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIg0KICAgTmFtZT0iU3VidGxlIFJlZmVyZW5jZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMyIiBRRm9ybWF0PSJ0cnVlIg0KICAgTmFtZT0iSW50ZW5zZSBSZWZlcmVuY2UiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMyIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iQm9vayBUaXRsZSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM3IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJpYmxpb2dyYXBoeSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIg0KICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlRPQyBIZWFkaW5nIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDEiIE5hbWU9IlBsYWluIFRhYmxlIDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MiIgTmFtZT0iUGxhaW4gVGFibGUgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQzIiBOYW1lPSJQbGFpbiBUYWJsZSAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDQiIE5hbWU9IlBsYWluIFRhYmxlIDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NSIgTmFtZT0iUGxhaW4gVGFibGUgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQwIiBOYW1lPSJHcmlkIFRhYmxlIExpZ2h0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiDQogICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSINCiAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPg0KICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIg0KICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ik1lbnRpb24iLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iU21hcnQgSHlwZXJsaW5rIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9Ikhhc2h0YWciLz4NCiAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIg0KICAgTmFtZT0iVW5yZXNvbHZlZCBNZW50aW9uIi8+DQogIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSINCiAgIE5hbWU9IlNtYXJ0IExpbmsiLz4NCiA8L3c6TGF0ZW50U3R5bGVzPg0KPC94bWw+PCFbZW5kaWZdLS0+DQo8c3R5bGU+DQo8IS0tDQogLyogRm9udCBEZWZpbml0aW9ucyAqLw0KIEBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7DQoJbXNvLWZvbnQtY2hhcnNldDoyOw0KCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OmF1dG87DQoJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7DQoJbXNvLWZvbnQtc2lnbmF0dXJlOjAgMjY4NDM1NDU2IDAgMCAtMjE0NzQ4MzY0OCAwO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDsNCgltc28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6cm9tYW47DQoJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7DQoJbXNvLWZvbnQtc2lnbmF0dXJlOi01MzY4NjkxMjEgMTEwNzMwNTcyNyAzMzU1NDQzMiAwIDQxNSAwO30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1IDUgMiAyIDIgNCAzIDIgNDsNCgltc28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7DQoJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7DQoJbXNvLWZvbnQtc2lnbmF0dXJlOi00Njk3NTAwMTcgLTEwNDAxNzgwNTMgOSAwIDUxMSAwO30NCiAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KIHAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bXNvLXN0eWxlLXVuaGlkZTpubzsNCgltc28tc3R5bGUtcWZvcm1hdDp5ZXM7DQoJbXNvLXN0eWxlLXBhcmVudDoiIjsNCgltYXJnaW4tdG9wOjBjbTsNCgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1hcmdpbi1ib3R0b206OC4wcHQ7DQoJbWFyZ2luLWxlZnQ6MGNtOw0KCWxpbmUtaGVpZ2h0OjEwNiU7DQoJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7DQoJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0O30NCnAuTXNvTGlzdFBhcmFncmFwaCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgNCgl7bXNvLXN0eWxlLXByaW9yaXR5OjM0Ow0KCW1zby1zdHlsZS11bmhpZGU6bm87DQoJbXNvLXN0eWxlLXFmb3JtYXQ6eWVzOw0KCW1hcmdpbi10b3A6MGNtOw0KCW1hcmdpbi1yaWdodDowY207DQoJbWFyZ2luLWJvdHRvbTo4LjBwdDsNCgltYXJnaW4tbGVmdDozNi4wcHQ7DQoJbGluZS1oZWlnaHQ6MTA2JTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7fQ0KcC5tc29ub3JtYWwwLCBsaS5tc29ub3JtYWwwLCBkaXYubXNvbm9ybWFsMA0KCXttc28tc3R5bGUtbmFtZTptc29ub3JtYWw7DQoJbXNvLXN0eWxlLXVuaGlkZTpubzsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsNCgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1sZWZ0OjBjbTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZjsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7fQ0KcC5tc29saXN0cGFyYWdyYXBoY3hzcGZpcnN0LCBsaS5tc29saXN0cGFyYWdyYXBoY3hzcGZpcnN0LCBkaXYubXNvbGlzdHBhcmFncmFwaGN4c3BmaXJzdA0KCXttc28tc3R5bGUtbmFtZTptc29saXN0cGFyYWdyYXBoY3hzcGZpcnN0Ow0KCW1zby1zdHlsZS11bmhpZGU6bm87DQoJbWFyZ2luLXRvcDowY207DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90dG9tOjBjbTsNCgltYXJnaW4tbGVmdDozNi4wcHQ7DQoJbGluZS1oZWlnaHQ6MTA2JTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7fQ0KcC5tc29saXN0cGFyYWdyYXBoY3hzcG1pZGRsZSwgbGkubXNvbGlzdHBhcmFncmFwaGN4c3BtaWRkbGUsIGRpdi5tc29saXN0cGFyYWdyYXBoY3hzcG1pZGRsZQ0KCXttc28tc3R5bGUtbmFtZTptc29saXN0cGFyYWdyYXBoY3hzcG1pZGRsZTsNCgltc28tc3R5bGUtdW5oaWRlOm5vOw0KCW1hcmdpbi10b3A6MGNtOw0KCW1hcmdpbi1yaWdodDowY207DQoJbWFyZ2luLWJvdHRvbTowY207DQoJbWFyZ2luLWxlZnQ6MzYuMHB0Ow0KCWxpbmUtaGVpZ2h0OjEwNiU7DQoJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7DQoJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0O30NCnAubXNvbGlzdHBhcmFncmFwaGN4c3BsYXN0LCBsaS5tc29saXN0cGFyYWdyYXBoY3hzcGxhc3QsIGRpdi5tc29saXN0cGFyYWdyYXBoY3hzcGxhc3QNCgl7bXNvLXN0eWxlLW5hbWU6bXNvbGlzdHBhcmFncmFwaGN4c3BsYXN0Ow0KCW1zby1zdHlsZS11bmhpZGU6bm87DQoJbWFyZ2luLXRvcDowY207DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90dG9tOjguMHB0Ow0KCW1hcmdpbi1sZWZ0OjM2LjBwdDsNCglsaW5lLWhlaWdodDoxMDYlOw0KCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOw0KCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItZmFyZWFzdDt9DQpwLm1zb2NocGRlZmF1bHQsIGxpLm1zb2NocGRlZmF1bHQsIGRpdi5tc29jaHBkZWZhdWx0DQoJe21zby1zdHlsZS1uYW1lOm1zb2NocGRlZmF1bHQ7DQoJbXNvLXN0eWxlLXVuaGlkZTpubzsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsNCgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1sZWZ0OjBjbTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsNCgltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7fQ0KcC5tc29wYXBkZWZhdWx0LCBsaS5tc29wYXBkZWZhdWx0LCBkaXYubXNvcGFwZGVmYXVsdA0KCXttc28tc3R5bGUtbmFtZTptc29wYXBkZWZhdWx0Ow0KCW1zby1zdHlsZS11bmhpZGU6bm87DQoJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87DQoJbWFyZ2luLXJpZ2h0OjBjbTsNCgltYXJnaW4tYm90dG9tOjguMHB0Ow0KCW1hcmdpbi1sZWZ0OjBjbTsNCglsaW5lLWhlaWdodDoxMDYlOw0KCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmOw0KCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOw0KCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItZmFyZWFzdDt9DQpzcGFuLlNwZWxsRQ0KCXttc28tc3R5bGUtbmFtZToiIjsNCgltc28tc3BsLWU6eWVzO30NCi5Nc29DaHBEZWZhdWx0DQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCW1zby1kZWZhdWx0LXByb3BzOnllczsNCglmb250LXNpemU6MTAuMHB0Ow0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJbXNvLWJpZGktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgltc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgltc28tYmlkaS1mb250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1mb250LWtlcm5pbmc6MHB0Ow0KCW1zby1saWdhdHVyZXM6bm9uZTt9DQouTXNvUGFwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCgltYXJnaW4tYm90dG9tOjguMHB0Ow0KCWxpbmUtaGVpZ2h0OjEwNiU7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6NjEyLjBwdCA3OTIuMHB0Ow0KCW1hcmdpbjo3MC44NXB0IDMuMGNtIDcwLjg1cHQgMy4wY207DQoJbXNvLWhlYWRlci1tYXJnaW46MzUuNHB0Ow0KCW1zby1mb290ZXItbWFyZ2luOjM1LjRwdDsNCgltc28tcGFwZXItc291cmNlOjA7fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQogLyogTGlzdCBEZWZpbml0aW9ucyAqLw0KIEBsaXN0IGwwDQoJe21zby1saXN0LWlkOjgwMDUzNjA5NjsNCgltc28tbGlzdC10eXBlOmh5YnJpZDsNCgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6MTA3MTU1MTQ1NiAxMTQxNTA2MDQ5IDExNDE1MDYwNTEgMTE0MTUwNjA1MyAxMTQxNTA2MDQ5IDExNDE1MDYwNTEgMTE0MTUwNjA1MyAxMTQxNTA2MDQ5IDExNDE1MDYwNTEgMTE0MTUwNjA1Mzt9DQpAbGlzdCBsMDpsZXZlbDENCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEI3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDINCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZlbDMNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEE3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDQNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEI3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZlbDYNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEE3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDcNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEI3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9DQpAbGlzdCBsMDpsZXZlbDkNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0OlxGMEE3Ow0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotMTguMHB0Ow0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMQ0KCXttc28tbGlzdC1pZDoxMDEwMjUxOTU2Ow0KCW1zby1saXN0LXR5cGU6aHlicmlkOw0KCW1zby1saXN0LXRlbXBsYXRlLWlkczotMjQ0MzE1NTY0IDExNDE1MDYwNDkgMTE0MTUwNjA1MSAxMTQxNTA2MDUzIDExNDE1MDYwNDkgMTE0MTUwNjA1MSAxMTQxNTA2MDUzIDExNDE1MDYwNDkgMTE0MTUwNjA1MSAxMTQxNTA2MDUzO30NCkBsaXN0IGwxOmxldmVsMQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQjc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0IGwxOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0IGwxOmxldmVsMw0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQTc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVsNA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQjc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0IGwxOmxldmVsNQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0IGwxOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQTc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVsNw0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQjc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0IGwxOmxldmVsOA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0IGwxOmxldmVsOQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6XEYwQTc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0xOC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCm9sDQoJe21hcmdpbi1ib3R0b206MGNtO30NCnVsDQoJe21hcmdpbi1ib3R0b206MGNtO30NCi0tPg0KPC9zdHlsZT4NCjwhLS1baWYgZ3RlIG1zbyAxMF0+DQo8c3R5bGU+DQogLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCiB0YWJsZS5Nc29Ob3JtYWxUYWJsZQ0KCXttc28tc3R5bGUtbmFtZToiVGFibGEgbm9ybWFsIjsNCgltc28tdHN0eWxlLXJvd2JhbmQtc2l6ZTowOw0KCW1zby10c3R5bGUtY29sYmFuZC1zaXplOjA7DQoJbXNvLXN0eWxlLW5vc2hvdzp5ZXM7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1zdHlsZS1wYXJlbnQ6IiI7DQoJbXNvLXBhZGRpbmctYWx0OjBjbSA1LjRwdCAwY20gNS40cHQ7DQoJbXNvLXBhcmEtbWFyZ2luLXRvcDowY207DQoJbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OjBjbTsNCgltc28tcGFyYS1tYXJnaW4tYm90dG9tOjguMHB0Ow0KCW1zby1wYXJhLW1hcmdpbi1sZWZ0OjBjbTsNCglsaW5lLWhlaWdodDoxMDYlOw0KCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsNCglmb250LXNpemU6MTAuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmO30NCjwvc3R5bGU+DQo8IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCiA8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2Ii8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCiA8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+DQogIDxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIi8+DQogPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KDQo8Ym9keSBsYW5nPUVTLVNWIHN0eWxlPSd0YWItaW50ZXJ2YWw6MzUuNHB0O3dvcmQtd3JhcDpicmVhay13b3JkJz4NCg0KPGRpdiBjbGFzcz1Xb3JkU2VjdGlvbjE+DQoNCjxwIGNsYXNzPU1zb0xpc3RQYXJhZ3JhcGg+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8dGFibGUgY2xhc3M9TXNvTm9ybWFsVGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0wDQogc3R5bGU9J2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTttc28teWZ0aS10Ymxsb29rOjExODQ7bXNvLXBhZGRpbmctYWx0OjBjbSAwY20gMGNtIDBjbSc+DQogPHRyIHN0eWxlPSdtc28teWZ0aS1pcm93OjA7bXNvLXlmdGktZmlyc3Ryb3c6eWVzJz4NCiAgPHRkIHdpZHRoPTE0NyB2YWxpZ249dG9wIHN0eWxlPSd3aWR0aDoxMTAuMzVwdDtib3JkZXI6c29saWQgIzk5OTk5OSAxLjBwdDsNCiAgYm9yZGVyLWJvdHRvbTpzb2xpZCAjNjY2NjY2IDEuNXB0O3BhZGRpbmc6MGNtIDUuNHB0IDBjbSA1LjRwdCc+DQogIDxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWJvdHRvbTowY207bGluZS1oZWlnaHQ6bm9ybWFsJz48Yj48c3Bhbg0KICBsYW5nPWVzLTQxOSBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6IzU4MEEnPkFuw6FsaXNpcyBkZSBjbMO6c3Rlcjwvc3Bhbj48L2I+PC9wPg0KICA8L3RkPg0KICA8dGQgd2lkdGg9MTQ3IHZhbGlnbj10b3Agc3R5bGU9J3dpZHRoOjExMC4zNXB0O2JvcmRlci10b3A6c29saWQgIzk5OTk5OSAxLjBwdDsNCiAgYm9yZGVyLWxlZnQ6bm9uZTtib3JkZXItYm90dG9tOnNvbGlkICM2NjY2NjYgMS41cHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIHBhZGRpbmc6MGNtIDUuNHB0IDBjbSA1LjRwdCc+DQogIDxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWJvdHRvbTowY207bGluZS1oZWlnaHQ6bm9ybWFsJz48Yj48c3Bhbg0KICBsYW5nPWVzLTQxOSBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6IzU4MEEnPlTDqWNuaWNhcyBkaXNwb25pYmxlcyA8L3NwYW4+PC9iPjwvcD4NCiAgPC90ZD4NCiAgPHRkIHdpZHRoPTE0NyB2YWxpZ249dG9wIHN0eWxlPSd3aWR0aDoxMTAuMzVwdDtib3JkZXItdG9wOnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIGJvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjNjY2NjY2IDEuNXB0O2JvcmRlci1yaWdodDpzb2xpZCAjOTk5OTk5IDEuMHB0Ow0KICBwYWRkaW5nOjBjbSA1LjRwdCAwY20gNS40cHQnPg0KICA8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1ib3R0b206MGNtO2xpbmUtaGVpZ2h0Om5vcm1hbCc+PGI+PHNwYW4NCiAgbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz5WZW50YWphcyA8L3NwYW4+PC9iPjwvcD4NCiAgPC90ZD4NCiAgPHRkIHdpZHRoPTE0NyB2YWxpZ249dG9wIHN0eWxlPSd3aWR0aDoxMTAuMzVwdDtib3JkZXItdG9wOnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIGJvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjNjY2NjY2IDEuNXB0O2JvcmRlci1yaWdodDpzb2xpZCAjOTk5OTk5IDEuMHB0Ow0KICBwYWRkaW5nOjBjbSA1LjRwdCAwY20gNS40cHQnPg0KICA8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1ib3R0b206MGNtO2xpbmUtaGVpZ2h0Om5vcm1hbCc+PGI+PHNwYW4NCiAgbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz5EZXN2ZW50YWphczwvc3Bhbj48L2I+PC9wPg0KICA8L3RkPg0KIDwvdHI+DQogPHRyIHN0eWxlPSdtc28teWZ0aS1pcm93OjE7aGVpZ2h0OjY5Ljk1cHQnPg0KICA8dGQgd2lkdGg9MTQ3IHZhbGlnbj10b3Agc3R5bGU9J3dpZHRoOjExMC4zNXB0O2JvcmRlcjpzb2xpZCAjOTk5OTk5IDEuMHB0Ow0KICBib3JkZXItdG9wOm5vbmU7cGFkZGluZzowY20gNS40cHQgMGNtIDUuNHB0O2hlaWdodDo2OS45NXB0Jz4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxiPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+SmVyw6FycXVpY288L3NwYW4+PC9iPjwvcD4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxiPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+VW5lIHkgYSBsYSB2ZXogZGl2aWRlIGVuIGJhc2UgYQ0KICBsYXMgY2FyYWN0ZXLDrXN0aWNhcyBxdWUgcG9zZWVuIGxvcyBtw6l0b2RvcyBhIGFwbGljYXJzZSwgZXNvIDxzcGFuDQogIGNsYXNzPVNwZWxsRT5zaTwvc3Bhbj4gcXVlIHNpIHNlIGFncmVnYSB1bmEgdW5pZGFkIGEgdW4gZ3J1cG8gZXN0YSBubyBzZQ0KICBwdWVkZSBkZXNoYWNlciBwb3JxdWUgc29sbyBwdWVkZSBzZXIgYXNpZ25hZGEgdW5hIHNvbGEgdmV6Ljwvc3Bhbj48L2I+PC9wPg0KICA8L3RkPg0KICA8dGQgd2lkdGg9MTQ3IHZhbGlnbj10b3Agc3R5bGU9J3dpZHRoOjExMC4zNXB0O2JvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDoNCiAgbm9uZTtib3JkZXItYm90dG9tOnNvbGlkICM5OTk5OTkgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIHBhZGRpbmc6MGNtIDUuNHB0IDBjbSA1LjRwdDtoZWlnaHQ6NjkuOTVwdCc+DQogIDxwIGNsYXNzPU1zb0xpc3RQYXJhZ3JhcGggc3R5bGU9J21hcmdpbi1ib3R0b206MGNtO3RleHQtaW5kZW50Oi0xOC4wcHQ7DQogIGxpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMCBsZXZlbDEgbGZvMSc+PCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4NCiAgc3R5bGU9J2ZvbnQtZmFtaWx5OlN5bWJvbDttc28tZmFyZWFzdC1mb250LWZhbWlseTpTeW1ib2w7bXNvLWJpZGktZm9udC1mYW1pbHk6DQogIFN5bWJvbCc+PHNwYW4gc3R5bGU9J21zby1saXN0Oklnbm9yZSc+wrc8c3BhbiBzdHlsZT0nZm9udDo3LjBwdCAiVGltZXMgTmV3IFJvbWFuIic+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogIDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBsYW5nPWVzLTQxOSBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6DQogICM1ODBBJz5BZ2xvbWVyYWNpw7NuIDxzcGFuIGNsYXNzPVNwZWxsRT5hZ2xvbWVyYXRpdmE8L3NwYW4+Ljwvc3Bhbj48L3A+DQogIDxwIGNsYXNzPU1zb0xpc3RQYXJhZ3JhcGggc3R5bGU9J21hcmdpbi1ib3R0b206MGNtO3RleHQtaW5kZW50Oi0xOC4wcHQ7DQogIGxpbmUtaGVpZ2h0Om5vcm1hbDttc28tbGlzdDpsMCBsZXZlbDEgbGZvMSc+PCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4NCiAgc3R5bGU9J2ZvbnQtZmFtaWx5OlN5bWJvbDttc28tZmFyZWFzdC1mb250LWZhbWlseTpTeW1ib2w7bXNvLWJpZGktZm9udC1mYW1pbHk6DQogIFN5bWJvbCc+PHNwYW4gc3R5bGU9J21zby1saXN0Oklnbm9yZSc+wrc8c3BhbiBzdHlsZT0nZm9udDo3LjBwdCAiVGltZXMgTmV3IFJvbWFuIic+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogIDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBjbGFzcz1TcGVsbEU+PHNwYW4gbGFuZz1lcy00MTkNCiAgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz5EZW5kb2dyYW1hPC9zcGFuPjwvc3Bhbj48c3BhbiBsYW5nPWVzLTQxOQ0KICBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6IzU4MEEnPi48L3NwYW4+PC9wPg0KICA8cCBjbGFzcz1Nc29MaXN0UGFyYWdyYXBoIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTt0ZXh0LWluZGVudDotMTguMHB0Ow0KICBsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEnPjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuDQogIHN0eWxlPSdmb250LWZhbWlseTpTeW1ib2w7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6U3ltYm9sO21zby1iaWRpLWZvbnQtZmFtaWx5Og0KICBTeW1ib2wnPjxzcGFuIHN0eWxlPSdtc28tbGlzdDpJZ25vcmUnPsK3PHNwYW4gc3R5bGU9J2ZvbnQ6Ny4wcHQgIlRpbWVzIE5ldyBSb21hbiInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOg0KICAjNTgwQSc+TWFwYSBkZSBjYWxvci48L3NwYW4+PC9wPg0KICA8L3RkPg0KICA8dGQgd2lkdGg9MTQ3IHZhbGlnbj10b3Agc3R5bGU9J3dpZHRoOjExMC4zNXB0O2JvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDoNCiAgbm9uZTtib3JkZXItYm90dG9tOnNvbGlkICM5OTk5OTkgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIHBhZGRpbmc6MGNtIDUuNHB0IDBjbSA1LjRwdDtoZWlnaHQ6NjkuOTVwdCc+DQogIDxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWJvdHRvbTowY207bGluZS1oZWlnaHQ6bm9ybWFsJz48c3Bhbg0KICBsYW5nPWVzLTQxOSBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6IzU4MEEnPkV4cGxvcmFyIGRpdmVyc2FzIGVzdHJ1Y3R1cmFzDQogIGplcsOhcnF1aWNhcywgbm8gcmVxdWllcmUgZXNwZWNpZmljYXIgZWwgbsO6bWVybyBkZSBjbMO6c3RlciwgcGVyZmVjdG8gcGFyYQ0KICBjb25qdW50byBkZSBkYXRvcyBwZXF1ZcOxb3MuPC9zcGFuPjwvcD4NCiAgPC90ZD4NCiAgPHRkIHdpZHRoPTE0NyB2YWxpZ249dG9wIHN0eWxlPSd3aWR0aDoxMTAuMzVwdDtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6DQogIG5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjOTk5OTk5IDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjOTk5OTk5IDEuMHB0Ow0KICBwYWRkaW5nOjBjbSA1LjRwdCAwY20gNS40cHQ7aGVpZ2h0OjY5Ljk1cHQnPg0KICA8cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1ib3R0b206MGNtO2xpbmUtaGVpZ2h0Om5vcm1hbCc+PHNwYW4NCiAgbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz5MYSBpbnRlcnByZXRhY2nDs24gZGVsIGRpYWdyYW1hLA0KICBsYXMgYXNpZ25hY2lvbmVzIGRlIGFncnVwYW1pZW50byBzb24gc2VjdWVuY2lhbGVzLCBlcnJvcmVzIHF1ZSBwdWVkZW4NCiAgcHJvcGFnYXJzZSB5IGFmZWN0YXIgbGEgc29sdWNpw7NuIGZpbmFsPC9zcGFuPjwvcD4NCiAgPC90ZD4NCiA8L3RyPg0KIDx0ciBzdHlsZT0nbXNvLXlmdGktaXJvdzoyO21zby15ZnRpLWxhc3Ryb3c6eWVzO2hlaWdodDo0LjBjbSc+DQogIDx0ZCB3aWR0aD0xNDcgdmFsaWduPXRvcCBzdHlsZT0nd2lkdGg6MTEwLjM1cHQ7Ym9yZGVyOnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIGJvcmRlci10b3A6bm9uZTtwYWRkaW5nOjBjbSA1LjRwdCAwY20gNS40cHQ7aGVpZ2h0OjQuMGNtJz4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxiPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+Tm8gamVyw6FycXVpY288L3NwYW4+PC9iPjwvcD4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxiPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+Q2xhc2lmaWNhbiBsYXMgb2JzZXJ2YWNpb25lcyBlbg0KICB1biBjb25qdW50byBkZSBkYXRvcywgZXN0b3Mgc2UgYXNpZ25hbiBkZSBhY3VlcmRvIGEgbG9zIHBhcmVudGVzY29zIG8gY29zYXMNCiAgZW4gY29tw7puIHF1ZSBwb3NlYW4uIDwvc3Bhbj48L2I+PC9wPg0KICA8L3RkPg0KICA8dGQgd2lkdGg9MTQ3IHZhbGlnbj10b3Agc3R5bGU9J3dpZHRoOjExMC4zNXB0O2JvcmRlci10b3A6bm9uZTtib3JkZXItbGVmdDoNCiAgbm9uZTtib3JkZXItYm90dG9tOnNvbGlkICM5OTk5OTkgMS4wcHQ7Ym9yZGVyLXJpZ2h0OnNvbGlkICM5OTk5OTkgMS4wcHQ7DQogIHBhZGRpbmc6MGNtIDUuNHB0IDBjbSA1LjRwdDtoZWlnaHQ6NC4wY20nPg0KICA8cCBjbGFzcz1Nc29MaXN0UGFyYWdyYXBoIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTt0ZXh0LWluZGVudDotMTguMHB0Ow0KICBsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzInPjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuDQogIHN0eWxlPSdmb250LWZhbWlseTpTeW1ib2w7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6U3ltYm9sO21zby1iaWRpLWZvbnQtZmFtaWx5Og0KICBTeW1ib2wnPjxzcGFuIHN0eWxlPSdtc28tbGlzdDpJZ25vcmUnPsK3PHNwYW4gc3R5bGU9J2ZvbnQ6Ny4wcHQgIlRpbWVzIE5ldyBSb21hbiInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOg0KICAjNTgwQSc+QWdydXBhbWllbnRvIGRlIGxhcyBrLW1lZGlhcy48L3NwYW4+PC9wPg0KICA8cCBjbGFzcz1Nc29MaXN0UGFyYWdyYXBoIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTt0ZXh0LWluZGVudDotMTguMHB0Ow0KICBsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzInPjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuDQogIHN0eWxlPSdmb250LWZhbWlseTpTeW1ib2w7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6U3ltYm9sO21zby1iaWRpLWZvbnQtZmFtaWx5Og0KICBTeW1ib2wnPjxzcGFuIHN0eWxlPSdtc28tbGlzdDpJZ25vcmUnPsK3PHNwYW4gc3R5bGU9J2ZvbnQ6Ny4wcHQgIlRpbWVzIE5ldyBSb21hbiInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOg0KICAjNTgwQSc+QWxnb3JpdG1vIFBBTS48L3NwYW4+PC9wPg0KICA8cCBjbGFzcz1Nc29MaXN0UGFyYWdyYXBoIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTt0ZXh0LWluZGVudDotMTguMHB0Ow0KICBsaW5lLWhlaWdodDpub3JtYWw7bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzInPjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuDQogIHN0eWxlPSdmb250LWZhbWlseTpTeW1ib2w7bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6U3ltYm9sO21zby1iaWRpLWZvbnQtZmFtaWx5Og0KICBTeW1ib2wnPjxzcGFuIHN0eWxlPSdtc28tbGlzdDpJZ25vcmUnPsK3PHNwYW4gc3R5bGU9J2ZvbnQ6Ny4wcHQgIlRpbWVzIE5ldyBSb21hbiInPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOg0KICAjNTgwQSc+Q0xBUkEuPC9zcGFuPjwvcD4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+Jm5ic3A7PC9zcGFuPjwvcD4NCiAgPC90ZD4NCiAgPHRkIHdpZHRoPTE0NyB2YWxpZ249dG9wIHN0eWxlPSd3aWR0aDoxMTAuMzVwdDtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLWxlZnQ6DQogIG5vbmU7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjOTk5OTk5IDEuMHB0O2JvcmRlci1yaWdodDpzb2xpZCAjOTk5OTk5IDEuMHB0Ow0KICBwYWRkaW5nOjBjbSA1LjRwdCAwY20gNS40cHQ7aGVpZ2h0OjQuMGNtJz4NCiAgPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tYm90dG9tOjBjbTtsaW5lLWhlaWdodDpub3JtYWwnPjxzcGFuDQogIGxhbmc9ZXMtNDE5IHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTojNTgwQSc+Q2FsY3VsYXIgay1tZWRpYXMgcGFyYSB1biByYW5nbw0KICBkZSBrIHZhbG9yZXMsIGVsIHJpdG1vIGRlIGFsZ29yaXRtb3MgZGUgbGFzIGstPHNwYW4gY2xhc3M9U3BlbGxFPm1lYW5zPC9zcGFuPg0KICB2YXJpYXMgdmVjZXMgeSBlbCBQQU0gcXVlIGVzIHVuIHZhbG9yIHBvY28gc2Vuc2libGUgYSBsb3MgYXTDrXBpY29zLjwvc3Bhbj48L3A+DQogIDwvdGQ+DQogIDx0ZCB3aWR0aD0xNDcgdmFsaWduPXRvcCBzdHlsZT0nd2lkdGg6MTEwLjM1cHQ7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1sZWZ0Og0KICBub25lO2JvcmRlci1ib3R0b206c29saWQgIzk5OTk5OSAxLjBwdDtib3JkZXItcmlnaHQ6c29saWQgIzk5OTk5OSAxLjBwdDsNCiAgcGFkZGluZzowY20gNS40cHQgMGNtIDUuNHB0O2hlaWdodDo0LjBjbSc+DQogIDxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWJvdHRvbTowY207bGluZS1oZWlnaHQ6bm9ybWFsJz48c3Bhbg0KICBsYW5nPWVzLTQxOSBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6IzU4MEEnPkxvcyByZXN1bHRhZG9zIGZpbmFsZXMgc29uDQogIHNlbnNpYmxlcyBhIGxhIHNlbGVjY2nDs24gZGUgbG9zIGFsZWF0b3JpYSBpbmljaWFsIGRlIGxvcyBkYXRvcywgdGFtYmnDqW4gYSBsb3MNCiAgdmFsb3JlcyBhdMOtcGljb3MgeSBwb3Igb3RybyBsYWRvIHNpIHJlb3JnYW5pemFzIGxvcyBkYXRvcyBwdWVkZXMgb2J0ZW5lciB1bmENCiAgc29sdWNpw7NuIGRpZmVyZW50ZS48L3NwYW4+PC9wPg0KICA8L3RkPg0KIDwvdHI+DQo8L3RhYmxlPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1lcy00MTkgc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOiM1ODBBJz4mbmJzcDs8L3NwYW4+PC9wPg0KDQo8L2Rpdj4NCg0KPC9ib2R5Pg0KDQo8L2h0bWw+DQoNCg0KRnVlbnRlczoNCltBbGJvdWthZGVsMjAxN10NCltkYXlzaW1hcmlhMjAxN10NCg0KIyBFamVyY2ljaW8gNA0KDQojIyBDYXDDrXR1bG8gNDogSy1tZWFucyBDbHVzdGVyIyMNCmBgYHtyfQ0KZGF0YSgiVVNBcnJlc3RzIikgIyBMb2FkaW5nIHRoZSBkYXRhIHNldA0KZGYgPC0gc2NhbGUoVVNBcnJlc3RzKSAjIFNjYWxpbmcgdGhlIGRhdGENCiMgVmlldyB0aGUgZmlydCAzIHJvd3Mgb2YgdGhlIGRhdGENCmhlYWQoZGYsIG4gPSAzKQ0KYGBgDQoNCiMjIyA0LjMuMyBFc3RpbWFjacOzbiBkZWwgbnVtZXJvIGRlIGNsdXN0ZXJzICMjIw0KYGBge3J9DQpsaWJyYXJ5KGZhY3RvZXh0cmEpDQpmdml6X25iY2x1c3QoZGYsIGttZWFucywgbWV0aG9kID0gIndzcyIpICsNCmdlb21fdmxpbmUoeGludGVyY2VwdCA9IDQsIGxpbmV0eXBlID0gMikNCmBgYA0KDQoNCg0KDQoNClVzYXJlbW9zIDQgY2x1c3RlcnMsIGs9NA0KDQojIyMgNC4zLjQgQ29tcHV0YW1vcyBLLW1lYW4gIyMjDQpgYGB7cn0NCiMgQ29tcHV0ZSBrLW1lYW5zIHdpdGggayA9IDQNCnNldC5zZWVkKDEyMykNCmttLnJlcyA8LSBrbWVhbnMoZGYsIDQsIG5zdGFydCA9IDI1KQ0KcHJpbnQoa20ucmVzKQ0KYGBgDQoNCg0KDQoNCiBEZSBxdWUgcXVlcmVyIGNvbXBhcmFyIGxhcyBtZWRpYXMgZGUgY2FkYSB2YXJpYWJsZSBwb3IgZWwgY2x1c3Rlcg0KYGBge3J9DQphZ2dyZWdhdGUoVVNBcnJlc3RzLCBieT1saXN0KGNsdXN0ZXI9a20ucmVzJGNsdXN0ZXIpLCBtZWFuKQ0KYGBgDQoNCg0KDQoNCg0KDQpQZXJvIGRlIHF1ZXJlciBhw7FhZGlyIHVuIHB1bnRvIGRlIGNsYXNpZmljYWNpb24NCmBgYHtyfQ0KZGQgPC0gY2JpbmQoVVNBcnJlc3RzLCBjbHVzdGVyID0ga20ucmVzJGNsdXN0ZXIpDQpoZWFkKGRkKQ0KYGBgDQojIyMgNC4zLjUgQWNjZWRlbW9zIGEgbG9zIHJlc3VsdGFkbyBkZSBsYSBmdW5jaW9uIGRlIGstbWVhbigpICMjIw0KYGBge3J9DQprbS5yZXMkY2x1c3RlciAjI1NhY2Ftb3MgZWwgbnVtZXJvIGRlIGNsdXN0ZXIgcGFyYSBjYWRhIG9ic2VydmFjaW9uDQpgYGANCmBgYHtyfQ0KaGVhZChrbS5yZXMkY2x1c3RlciwgNCkgIyBMYXMgcHJpbWVyYXMgNA0KYGBgDQoNCmBgYHtyfQ0KIyBQZWRpbW9zIGVsIHRhbWHDsW8NCmttLnJlcyRzaXplDQpgYGANCg0KYGBge3J9DQojIFkgYWhvcmEgcGVkaW1vcyBsYSBtZWRpYQ0Ka20ucmVzJGNlbnRlcnMNCmBgYA0KIyMjIDQuMy42IEFob3JhIHBhcmEgdmlzdWFsaXphciBlbCBjbHVzdGVyIGstbWVhbiAjIyMNCg0KYGBge3J9DQpmdml6X2NsdXN0ZXIoa20ucmVzLCBkYXRhID0gZGYsDQpwYWxldHRlID0gYygiIzJFOUZERiIsICIjMDBBRkJCIiwgIiNFN0I4MDAiLCAiI0ZDNEUwNyIpLA0KZWxsaXBzZS50eXBlID0gImV1Y2xpZCIsICMgQ29uY2VudHJhdGlvbiBlbGxpcHNlDQpzdGFyLnBsb3QgPSBUUlVFLCAjIEFkZCBzZWdtZW50cyBmcm9tIGNlbnRyb2lkcyB0byBpdGVtcw0KcmVwZWwgPSBUUlVFLCAjIEF2b2lkIGxhYmVsIG92ZXJwbG90dGluZyAoc2xvdykNCmdndGhlbWUgPSB0aGVtZV9taW5pbWFsKCkNCikNCmBgYA0KDQojIyBDw6FwaXR1bG8gNTogSy1NZWRvaWRzICMjDQpgYGB7cn0NCiMgRGF0b3MNCmRhdGEoIlVTQXJyZXN0cyIpICMgTG9hZCB0aGUgZGF0YSBzZXQNCmRmIDwtIHNjYWxlKFVTQXJyZXN0cykgIyBTY2FsZSB0aGUgZGF0YQ0KaGVhZChkZiwgbiA9IDMpICMgVmlldyB0aGUgZmlydCAzIHJvd3Mgb2YgdGhlIGRhdGENCg0KYGBgDQoNCiMjIyA1LjMuMyBFc3RpbWFtb3MgZWwgbnVtZXJvIG9wdGltbyBkZSBjbHVzdGVycyAjIyMNCmBgYHtyfQ0KbGlicmFyeShjbHVzdGVyKQ0KbGlicmFyeShmYWN0b2V4dHJhKQ0KZnZpel9uYmNsdXN0KGRmLCBwYW0sIG1ldGhvZCA9ICJzaWxob3VldHRlIikrDQp0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQojIyMgNS4zLjQgQ29tcHV0YW1vcyBlbCBQQU0gY2x1c3RlcmluZyAjIyMNCmBgYHtyfQ0KcGFtLnJlcyA8LSBwYW0oZGYsIDIpDQpwcmludChwYW0ucmVzKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KIFBhcmEgYcOxYWRpciB1biBwdW50byBkZSBjbGFzaWZpY2FjacOzbiBhIGxvcyBkYXRvcyBvcmlnaW5hbGVzDQpgYGB7cn0NCmRkIDwtIGNiaW5kKFVTQXJyZXN0cywgY2x1c3RlciA9IHBhbS5yZXMkY2x1c3RlcikNCmhlYWQoZGQsIG4gPSAzKQ0KYGBgDQoNCiMjIyA1LjMuNSBFbCBhY2Nlc28gYSBsb3MgcmVzdWx0YWRvcyBkZSBsYSBmdW5jaW9uIHBhbSgpICMjIw0KYGBge3J9DQojIENsdXN0ZXIgbWVkb2lkczogTmV3IE1leGljbywgTmVicmFza2ENCnBhbS5yZXMkbWVkb2lkcw0KYGBgDQpgYGB7cn0NCiMgQ2x1c3RlciBudW1iZXJzDQpoZWFkKHBhbS5yZXMkY2x1c3RlcmluZykNCmBgYA0KDQojIyMgNS4zLjYgVmlzdWFsaXphbW9zIGVsIGNsdXN0ZXIgUEFNICMjIw0KYGBge3J9DQpmdml6X2NsdXN0ZXIocGFtLnJlcywNCnBhbGV0dGUgPSBjKCIjMDBBRkJCIiwgIiNGQzRFMDciKSwgIyBjb2xvciBwYWxldHRlDQplbGxpcHNlLnR5cGUgPSAidCIsICMgQ29uY2VudHJhdGlvbiBlbGxpcHNlDQpyZXBlbCA9IFRSVUUsICMgQXZvaWQgbGFiZWwgb3ZlcnBsb3R0aW5nIChzbG93KQ0KZ2d0aGVtZSA9IHRoZW1lX2NsYXNzaWMoKQ0KKQ0KYGBgDQoNCg0KIyMgQ8OhcGl0dWxvIDY6IENMQVJBLSBDb25nbG9tZXJhbmRvIEdyYW5kZXMgQXBsaWNhY2lvbmVzICMjDQoNCmBgYHtyfQ0KIyBFbCBmb3JtYXRvIGRlIGxvcyBkYXRvcyB5IHN1IHByZXBhcmFjaW9uDQpzZXQuc2VlZCgxMjM0KQ0KIyBHZW5lcmF0ZSA1MDAgb2JqZWN0cywgZGl2aWRlZCBpbnRvIDIgY2x1c3RlcnMuDQpkZiA8LSByYmluZChjYmluZChybm9ybSgyMDAsMCw4KSwgcm5vcm0oMjAwLDAsOCkpLA0KY2JpbmQocm5vcm0oMzAwLDUwLDgpLCBybm9ybSgzMDAsNTAsOCkpKQ0KIyBTcGVjaWZ5IGNvbHVtbiBhbmQgcm93IG5hbWVzDQpjb2xuYW1lcyhkZikgPC0gYygieCIsICJ5IikNCg0Kcm93bmFtZXMoZGYpIDwtIHBhc3RlMCgiUyIsIDE6bnJvdyhkZikpDQojIFByZXZpZXdpbmcgdGhlIGRhdGENCmhlYWQoZGYsIG5yb3cgPSA2KQ0KYGBgDQoNCiMjIyA2LjMuMyBFc3RpbWFyIGVsIG7Dum1lcm8gZGUgY2x1c3RlcnMgb3B0aW1vcyAjIyMNCmBgYHtyfQ0KbGlicmFyeShjbHVzdGVyKQ0KbGlicmFyeShmYWN0b2V4dHJhKQ0KZnZpel9uYmNsdXN0KGRmLCBjbGFyYSwgbWV0aG9kID0gInNpbGhvdWV0dGUiKSsNCnRoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNCiMjIyA2LjMuNCAgQ29tcHV0YW1vcyBDTEFSQSAjIyMNCmBgYHtyfQ0KIyBDb21wdXRlIENMQVJBDQpjbGFyYS5yZXMgPC0gY2xhcmEoZGYsIDIsIHNhbXBsZXMgPSA1MCwgcGFtTGlrZSA9IFRSVUUpDQojIFByaW50IGNvbXBvbmVudHMgb2YgY2xhcmEucmVzDQpwcmludChjbGFyYS5yZXMpDQpgYGANCg0KDQoNCg0KUGFyYSBhw7FhZGlyIHVuIHB1bnRvIGRlIGNsYXNpZmljYWNpb24gZW4gbGEgZGF0YSBvcmlnaW5hbCANCmBgYHtyfQ0KZGQgPC0gY2JpbmQoZGYsIGNsdXN0ZXIgPSBjbGFyYS5yZXMkY2x1c3RlcikNCmhlYWQoZGQsIG4gPSA0KQ0KYGBgDQoNCg0KDQoNClBhcmEgYWNjZWRlciBhIGxvcyByZXN1bHRhZG9zIHJlZ3Jlc2Fkb3MgcG9yIGNsYXJhKCkNCmBgYHtyfQ0KIyBNZWRvaWRzDQpjbGFyYS5yZXMkbWVkb2lkcw0KYGBgDQoNCmBgYHtyfQ0KIyBDbHVzdGVyaW5nDQpoZWFkKGNsYXJhLnJlcyRjbHVzdGVyaW5nLCAxMCkNCmBgYA0KDQoNCg0KDQojIyMgNi4zLjUgVmlzdWFsaXphciBlbCBDbHVzdGVyIENMQVJBICMjIw0KDQpgYGB7cn0NCmZ2aXpfY2x1c3RlcihjbGFyYS5yZXMsDQpwYWxldHRlID0gYygiIzAwQUZCQiIsICIjRkM0RTA3IiksICMgY29sb3IgcGFsZXR0ZQ0KZWxsaXBzZS50eXBlID0gInQiLCAjIENvbmNlbnRyYXRpb24gZWxsaXBzZQ0KZ2VvbSA9ICJwb2ludCIsIHBvaW50c2l6ZSA9IDEsDQpnZ3RoZW1lID0gdGhlbWVfY2xhc3NpYygpDQopDQpgYGANCg0KIyMgQ8OhcGl0dWxvIDc6IENvbmdsb21lcmFkb3MgQWdsb21lcmF0aXZvcyAjIw0KYGBge3J9DQojIEVzdHJ1Y3R1cmEgZGUgRGF0b3MgeSBwcmVwYXJhY2lvbg0KIyBMb2FkIHRoZSBkYXRhDQpkYXRhKCJVU0FycmVzdHMiKQ0KIyBTdGFuZGFyZGl6ZSB0aGUgZGF0YQ0KZGYgPC0gc2NhbGUoVVNBcnJlc3RzKQ0KIyBTaG93IHRoZSBmaXJzdCA2IHJvd3MNCmhlYWQoZGYsIG5yb3cgPSA2KQ0KYGBgDQoNCiMjIyA3LjIuMiBTaW1pbGl0dWQgZGUgbWVkaWRhcyAjIyMNCmBgYHtyfQ0KIyBDb21wdXRlIHRoZSBkaXNzaW1pbGFyaXR5IG1hdHJpeA0KIyBkZiA9IHRoZSBzdGFuZGFyZGl6ZWQgZGF0YQ0KcmVzLmRpc3QgPC0gZGlzdChkZiwgbWV0aG9kID0gImV1Y2xpZGVhbiIpDQpgYGANCg0KUGFyYSBxdWUgZW5zZcOxZSBsYXMgcHJpbWVyYXMgNiBjb2x1bW5hcyB5IGZpbGFzDQpgYGB7cn0NCmFzLm1hdHJpeChyZXMuZGlzdClbMTo2LCAxOjZdDQpgYGANCg0KIyMjIDcuMi4zIEVubGF6YW1pZW50byAjIyMNCg0KYGBge3J9DQpyZXMuaGMgPC0gaGNsdXN0KGQgPSByZXMuZGlzdCwgbWV0aG9kID0gIndhcmQuRDIiKQ0KYGBgDQoNCg0KIyMjIDcuMi40IERlbmRvZ3JhbWFzICMjIw0KDQpgYGB7cn0NCiMgY2V4OiBsYWJlbCBzaXplDQpsaWJyYXJ5KCJmYWN0b2V4dHJhIikNCmZ2aXpfZGVuZChyZXMuaGMsIGNleCA9IDAuNSkNCmBgYA0KDQojIyMgNy4yLjUgVmVyaWZpY2Ftb3MgZWwgw6FyYm9sIENsdXN0ZXIgIyMjDQpgYGB7cn0NCiMgQ29tcHV0ZSBjb3BoZW50aWMgZGlzdGFuY2UNCnJlcy5jb3BoIDwtIGNvcGhlbmV0aWMocmVzLmhjKQ0KIyBDb3JyZWxhdGlvbiBiZXR3ZWVuIGNvcGhlbmV0aWMgZGlzdGFuY2UgYW5kDQojIHRoZSBvcmlnaW5hbCBkaXN0YW5jZQ0KY29yKHJlcy5kaXN0LCByZXMuY29waCkNCmBgYA0KYGBge3J9DQpyZXMuaGMyIDwtIGhjbHVzdChyZXMuZGlzdCwgbWV0aG9kID0gImF2ZXJhZ2UiKQ0KY29yKHJlcy5kaXN0LCBjb3BoZW5ldGljKHJlcy5oYzIpKQ0KYGBgDQoNCiMjIyA3LjQgQ29ydGFtb3MgZWwgZGVuZG9ncmFtYSBlbiBkaWZlcmVudGVzIHBhcnRlcyAjIyMNCg0KYGBge3J9DQojIEN1dCB0cmVlIGludG8gNCBncm91cHMNCmdycCA8LSBjdXRyZWUocmVzLmhjLCBrID0gNCkNCmhlYWQoZ3JwLCBuID0gNCkNCmBgYA0KYGBge3J9DQojIE51bWJlciBvZiBtZW1iZXJzIGluIGVhY2ggY2x1c3Rlcg0KdGFibGUoZ3JwKQ0KYGBgDQpgYGB7cn0NCiMgR2V0IHRoZSBuYW1lcyBmb3IgdGhlIG1lbWJlcnMgb2YgY2x1c3RlciAxDQpyb3duYW1lcyhkZilbZ3JwID09IDFdDQpgYGANCmBgYHtyfQ0KIyBDdXQgaW4gNCBncm91cHMgYW5kIGNvbG9yIGJ5IGdyb3Vwcw0KZnZpel9kZW5kKHJlcy5oYywgayA9IDQsICMgQ3V0IGluIGZvdXIgZ3JvdXBzDQpjZXggPSAwLjUsICMgbGFiZWwgc2l6ZQ0Ka19jb2xvcnMgPSBjKCIjMkU5RkRGIiwgIiMwMEFGQkIiLCAiI0U3QjgwMCIsICIjRkM0RTA3IiksDQpjb2xvcl9sYWJlbHNfYnlfayA9IFRSVUUsICMgY29sb3IgbGFiZWxzIGJ5IGdyb3Vwcw0KcmVjdCA9IFRSVUUgIyBBZGQgcmVjdGFuZ2xlIGFyb3VuZCBncm91cHMNCikNCmBgYA0KDQoNCg0KDQoNCg0KDQoNClBlcm8gZGUgcHJlZmVyaXJsbyBjb24gZWwgZGlhZ3JhbWEgZGUgZGlzcGVyc2lvbiB1c2Ftb3MgbGEgZnVuY2nDs24gZnZpel9jbHVzdGVyKCkNCmBgYHtyfQ0KZnZpel9jbHVzdGVyKGxpc3QoZGF0YSA9IGRmLCBjbHVzdGVyID0gZ3JwKSwNCnBhbGV0dGUgPSBjKCIjMkU5RkRGIiwgIiMwMEFGQkIiLCAiI0U3QjgwMCIsICIjRkM0RTA3IiksDQplbGxpcHNlLnR5cGUgPSAiY29udmV4IiwgIyBDb25jZW50cmF0aW9uIGVsbGlwc2UNCnJlcGVsID0gVFJVRSwgIyBBdm9pZCBsYWJlbCBvdmVycGxvdHRpbmcgKHNsb3cpDQpzaG93LmNsdXN0LmNlbnQgPSBGQUxTRSwgZ2d0aGVtZSA9IHRoZW1lX21pbmltYWwoKSkNCmBgYA0KDQojIyBDYXBpdHVsbyA4OiBDb21wYXJhY2nDs24gZGUgRGVuZG9ncmFtYXMgIyMNCg0KDQpgYGB7cn0NCiMgUHJlcGFyYWNpw7NuIGRlIGxvcyBkYXRvcw0KZGYgPC0gc2NhbGUoVVNBcnJlc3RzKQ0KIyBTdWJzZXQgY29udGFpbmluZyAxMCByb3dzDQpzZXQuc2VlZCgxMjMpDQpzcyA8LSBzYW1wbGUoMTo1MCwgMTApDQpkZiA8LSBkZltzcyxdDQpgYGANCg0KDQoNCiMjIyA4LjIgQ29tcGFyYW5kbyBkZW5kb2dyYW1hcyAjIyMNCmBgYHtyfQ0KbGlicmFyeShkZW5kZXh0ZW5kKQ0KIyBDb21wdXRlIGRpc3RhbmNlIG1hdHJpeA0KcmVzLmRpc3QgPC0gZGlzdChkZiwgbWV0aG9kID0gImV1Y2xpZGVhbiIpDQojIENvbXB1dGUgMiBoaWVyYXJjaGljYWwgY2x1c3RlcmluZ3MNCmhjMSA8LSBoY2x1c3QocmVzLmRpc3QsIG1ldGhvZCA9ICJhdmVyYWdlIikNCmhjMiA8LSBoY2x1c3QocmVzLmRpc3QsIG1ldGhvZCA9ICJ3YXJkLkQyIikNCiMgQ3JlYXRlIHR3byBkZW5kcm9ncmFtcw0KZGVuZDEgPC0gYXMuZGVuZHJvZ3JhbSAoaGMxKQ0KZGVuZDIgPC0gYXMuZGVuZHJvZ3JhbSAoaGMyKQ0KIyBDcmVhdGUgYSBsaXN0IHRvIGhvbGQgZGVuZHJvZ3JhbXMNCmRlbmRfbGlzdCA8LSBkZW5kbGlzdChkZW5kMSwgZGVuZDIpDQpgYGANCg0KIyMjIDguMi4xIENvbXBhcmFjacOzbiB2aXN1YWwgZGUgbG9zIDIgZGVuZG9ncmFtYXMgIyMjDQpgYGB7cn0NCnRhbmdsZWdyYW0oZGVuZDEsIGRlbmQyKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCiBTZSBwdWVkZSBjb3N0dW1pemFyIGVsIHRhbmdsZWdyYW1hDQpgYGB7cn0NCnRhbmdsZWdyYW0oZGVuZDEsIGRlbmQyLA0KaGlnaGxpZ2h0X2Rpc3RpbmN0X2VkZ2VzID0gRkFMU0UsICMgVHVybi1vZmYgZGFzaGVkIGxpbmVzDQpjb21tb25fc3VidHJlZXNfY29sb3JfbGluZXMgPSBGQUxTRSwgIyBUdXJuLW9mZiBsaW5lIGNvbG9ycw0KY29tbW9uX3N1YnRyZWVzX2NvbG9yX2JyYW5jaGVzID0gVFJVRSwgIyBDb2xvciBjb21tb24gYnJhbmNoZXMNCm1haW4gPSBwYXN0ZSgiZW50YW5nbGVtZW50ID0iLCByb3VuZChlbnRhbmdsZW1lbnQoZGVuZF9saXN0KSwgMikpDQopDQpgYGANCg0KDQojIyMgOC4yLjIgTGEgY29ycmVsYWNpb24gbWF0cml6IGVudHJlIHVuYSBsaXN0YSBkZSBkZW5kb2dyYW1hcyAjIyMNCg0KDQpIYXkgMiBtw6l0b2RvcyBwYXJhIGxhIG1hdHJpeiBkZSBjb3JyZWxhY2nDs24gZW50cmUgbGFzIGxpc3RhcyBkZSBhcmJvbGVzLiBFbCBtw6l0b2RvIENvcGhlbmV0aWMgeSBlbCBtZXRvZG8gQmFrZXINCmBgYHtyfQ0KIyBDb3BoZW5ldGljIGNvcnJlbGF0aW9uIG1hdHJpeA0KY29yLmRlbmRsaXN0KGRlbmRfbGlzdCwgbWV0aG9kID0gImNvcGhlbmV0aWMiKQ0KYGBgDQpgYGB7cn0NCiMgQmFrZXIgY29ycmVsYXRpb24gbWF0cml4DQpjb3IuZGVuZGxpc3QoZGVuZF9saXN0LCBtZXRob2QgPSAiYmFrZXIiKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCkxhIENvcnJlbGFjaW9uIGVudHJlIGFtYm9zIHNlIHB1ZWRlIGhhY2VyIGRlIDIgbWFuZXJhcw0KYGBge3J9DQojIENvcGhlbmV0aWMgY29ycmVsYXRpb24gY29lZmZpY2llbnQNCmNvcl9jb3BoZW5ldGljKGRlbmQxLCBkZW5kMikNCmBgYA0KYGBge3J9DQojIEJha2VyIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50DQpjb3JfYmFrZXJzX2dhbW1hKGRlbmQxLCBkZW5kMikNCmBgYA0KDQpFcyBwb3NpYmxlIGxhIGNvbXBhcmFjacOzbiBkZSBtdWx0aXBsZXMgZGVuZG9ncmFtYXMgeSB0YW1iaWVuIGVzIG1hcyBzZW5jaWxsbyBwYXJhIHNpbXBsaWZpY2FyIGVsIGNvZGlnbw0KYGBge3J9DQojIENyZWF0ZSBtdWx0aXBsZSBkZW5kcm9ncmFtcyBieSBjaGFpbmluZw0KZGVuZDEgPC0gZGYgJT4lIGRpc3QgJT4lIGhjbHVzdCgiY29tcGxldGUiKSAlPiUgYXMuZGVuZHJvZ3JhbQ0KZGVuZDIgPC0gZGYgJT4lIGRpc3QgJT4lIGhjbHVzdCgic2luZ2xlIikgJT4lIGFzLmRlbmRyb2dyYW0NCmRlbmQzIDwtIGRmICU+JSBkaXN0ICU+JSBoY2x1c3QoImF2ZXJhZ2UiKSAlPiUgYXMuZGVuZHJvZ3JhbQ0KZGVuZDQgPC0gZGYgJT4lIGRpc3QgJT4lIGhjbHVzdCgiY2VudHJvaWQiKSAlPiUgYXMuZGVuZHJvZ3JhbQ0KIyBDb21wdXRlIGNvcnJlbGF0aW9uIG1hdHJpeA0KZGVuZF9saXN0IDwtIGRlbmRsaXN0KCJDb21wbGV0ZSIgPSBkZW5kMSwgIlNpbmdsZSIgPSBkZW5kMiwNCiJBdmVyYWdlIiA9IGRlbmQzLCAiQ2VudHJvaWQiID0gZGVuZDQpDQpjb3JzIDwtIGNvci5kZW5kbGlzdChkZW5kX2xpc3QpDQojIFByaW50IGNvcnJlbGF0aW9uIG1hdHJpeA0Kcm91bmQoY29ycywgMikNCmBgYA0KDQoNCg0KUGFyYSB2aXN1YWxpemFyIGxhIG1hdHJpeiBkZSBjb3JyZWxhY2lvbiB1c2FuZG8gZWwgcGFxdWV0ZSBjb3JycGxvdCANCmBgYHtyfQ0KIyBWaXN1YWxpemUgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCB1c2luZyBjb3JycGxvdCBwYWNrYWdlDQpsaWJyYXJ5KGNvcnJwbG90KQ0KY29ycnBsb3QoY29ycywgInBpZSIsICJsb3dlciIpDQpgYGANCg0KDQojIyBDYXDDrXR1bG8gOTogVmlzdWFsaXphbmRvIERlbmRvZ3JhbWFzICMjDQoNCmBgYHtyfQ0KIyBMb2FkIGRhdGENCmRhdGEoVVNBcnJlc3RzKQ0KIyBDb21wdXRlIGRpc3RhbmNlcyBhbmQgaGllcmFyY2hpY2FsIGNsdXN0ZXJpbmcNCmRkIDwtIGRpc3Qoc2NhbGUoVVNBcnJlc3RzKSwgbWV0aG9kID0gImV1Y2xpZGVhbiIpDQpoYyA8LSBoY2x1c3QoZGQsIG1ldGhvZCA9ICJ3YXJkLkQyIikNCmBgYA0KDQoNCiMjIyA5LjEgVmlzdWFsaXphbmRvIERlbmRvZ3JhbWFzICMjIw0KDQoNCiBQYXJhIGNyZWFyIHVuIGRlbmRvZ3JhbWEgYmFzaWNvDQpgYGB7cn0NCmxpYnJhcnkoZmFjdG9leHRyYSkNCmZ2aXpfZGVuZChoYywgY2V4ID0gMC41KQ0KYGBgDQoNCg0KDQoNCiBTZSBwdWVkZW4gdXNhciBsb3MgYXJndW1lbnRvIGRlIG1haW4sIHhsYWIsIHN1YiwgeSB5bGFiIHBhcmEgY2FtYmlhciBsb3Mgbm9tYnJlcyBkZSBsb3MgZWplcw0KYGBge3J9DQpmdml6X2RlbmQoaGMsIGNleCA9IDAuNSwNCm1haW4gPSAiRGVuZHJvZ3JhbSAtIHdhcmQuRDIiLA0KeGxhYiA9ICJFamUgeCIsIHlsYWIgPSAiRWplIHkiLCBzdWIgPSAiIikNCmBgYA0KDQoNCg0KIFBhcmEgZGlidWphciBlbCBkZW5kb2dyYW1hIGVuIGhvcml6b250YWwNCmBgYHtyfQ0KDQpmdml6X2RlbmQoaGMsIGNleCA9IDAuNSwgaG9yaXogPSBUUlVFKQ0KYGBgDQoNCg0KDQoNCg0KDQogRGUgcXVlcmVyIG90cm8gdGlwbyBkZSBkaXNlw7FvIHRhbWJpw6luIHNlIHB1ZWRlIHVzYXIgZWwgc2lndWllbnRlIGVqZW1wbG8gDQpgYGB7cn0NCmZ2aXpfZGVuZChoYywgayA9IDQsICMgQ3V0IGluIGZvdXIgZ3JvdXBzDQpjZXggPSAwLjUsICMgbGFiZWwgc2l6ZQ0Ka19jb2xvcnMgPSBjKCIjMkU5RkRGIiwgIiMwMEFGQkIiLCAiI0U3QjgwMCIsICIjRkM0RTA3IiksDQpjb2xvcl9sYWJlbHNfYnlfayA9IFRSVUUsICMgY29sb3IgbGFiZWxzIGJ5IGdyb3Vwcw0KZ2d0aGVtZSA9IHRoZW1lX2dyYXkoKSAjIENoYW5nZSB0aGVtZQ0KKQ0KYGBgDQoNCg0KDQoNCg0KIyMjRGUgcXVlcmVyIG90cm9zIGNvbG9yZXMsIHNlIHB1ZWRlIHVzYXIgbG9zIGRlICJqb3VybmFsIG9mIGNsaW5pY2FsIG9uY29sb2d5IiBvICJqY28iIyMjDQpgYGB7cn0NCmZ2aXpfZGVuZChoYywgY2V4ID0gMC41LCBrID0gNCwgIyBDdXQgaW4gZm91ciBncm91cHMNCmtfY29sb3JzID0gImpjbyIpDQpgYGANCg0KDQoNCg0KDQpQYXJhIGRpYnVqYXJsbyBlbiBob3Jpem9udGFsDQpgYGB7cn0NCmZ2aXpfZGVuZChoYywgayA9IDQsIGNleCA9IDAuNCwgaG9yaXogPSBUUlVFLCBrX2NvbG9ycyA9ICJqY28iLA0KcmVjdCA9IFRSVUUsIHJlY3RfYm9yZGVyID0gImpjbyIsIHJlY3RfZmlsbCA9IFRSVUUpDQpgYGANCg0KDQoNClRhbWJpw6luIGxvIHBvZGVtb3MgZGlidWphciBjb21vIHVuIGRlbmRvZ3JhbWEgY2lyY3VsYXINCmBgYHtyfQ0KZnZpel9kZW5kKGhjLCBjZXggPSAwLjUsIGsgPSA0LA0Ka19jb2xvcnMgPSAiamNvIiwgdHlwZSA9ICJjaXJjdWxhciIpDQpgYGANCg0KDQoNCg0KT3RybyBkaXNlw7FvIGVzIGVsIGVzdGlsbyBkZSDDoXJib2wgZmlsb2dlbmV0aWNvIA0KYGBge3J9DQpyZXF1aXJlKCJpZ3JhcGgiKQ0KZnZpel9kZW5kKGhjLCBrID0gNCwga19jb2xvcnMgPSAiamNvIiwNCnR5cGUgPSAicGh5bG9nZW5pYyIsIHJlcGVsID0gVFJVRSkNCmBgYA0KDQpQYXJhIHVzYXIgb3RybyBtw6l0b2RvIHkgaGFjZXIgYXJib2xlcyBmaWxpZ2VudGljb3Mgc2UgcHVlZGUgdXNhciBsYSBsaWJyZXJpYSAiaWdyYW9oIg0KYGBge3J9DQpyZXF1aXJlKCJpZ3JhcGgiKQ0KZnZpel9kZW5kKGhjLCBrID0gNCwgIyBDdXQgaW4gZm91ciBncm91cHMNCmtfY29sb3JzID0gImpjbyIsDQp0eXBlID0gInBoeWxvZ2VuaWMiLCByZXBlbCA9IFRSVUUsDQpwaHlsb19sYXlvdXQgPSAibGF5b3V0LmdlbSIpDQpgYGANCg0KIyMjIDkuMiBFbiBjYXNvIGRlIGRlbmRvZ3JhbWFzIGVuIGdyYW4gZXNjYWxhICMjIw0KDQpQb2RlbW9zIGhhY2VyIHpvb20gYSBsb3MgZGVuZG9ncmFtYXMNCmBgYHtyfQ0KZnZpel9kZW5kKGhjLCB4bGltID0gYygxLCAyMCksIHlsaW0gPSBjKDEsIDgpKQ0KYGBgDQoNCg0KIyMjIDkuMi4yIFRyYXphciB1biBzdWItw6FyYm9sIGRlIERlbmRvZ3JhbWFzICMjIw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpgYGB7cn0NCiMgQ3JlYXRlIGEgcGxvdCBvZiB0aGUgd2hvbGUgZGVuZHJvZ3JhbSwNCiMgYW5kIGV4dHJhY3QgdGhlIGRlbmRyb2dyYW0gZGF0YQ0KZGVuZF9wbG90IDwtIGZ2aXpfZGVuZChoYywgayA9IDQsICMgQ3V0IGluIGZvdXIgZ3JvdXBzDQpjZXggPSAwLjUsICMgbGFiZWwgc2l6ZQ0Ka19jb2xvcnMgPSAiamNvIg0KKQ0KZGVuZF9kYXRhIDwtIGF0dHIoZGVuZF9wbG90LCAiZGVuZHJvZ3JhbSIpICMgRXh0cmFjdCBkZW5kcm9ncmFtIGRhdGENCiMgQ3V0IHRoZSBkZW5kcm9ncmFtIGF0IGhlaWdodCBoID0gMTANCmRlbmRfY3V0cyA8LSBjdXQoZGVuZF9kYXRhLCBoID0gMTApDQojIFZpc3VhbGl6ZSB0aGUgdHJ1bmNhdGVkIHZlcnNpb24gY29udGFpbmluZw0KIyB0d28gYnJhbmNoZXMNCmZ2aXpfZGVuZChkZW5kX2N1dHMkdXBwZXIpDQpgYGANCg0KYGBge3J9DQojIFBsb3QgdGhlIHdob2xlIGRlbmRyb2dyYW0NCnByaW50KGRlbmRfcGxvdCkNCmBgYA0KDQpgYGB7cn0NCiMgUGxvdCBzdWJ0cmVlIDENCmZ2aXpfZGVuZChkZW5kX2N1dHMkbG93ZXJbWzFdXSwgbWFpbiA9ICJTdWJ0cmVlIDEiKQ0KIyBQbG90IHN1YnRyZWUgMg0KZnZpel9kZW5kKGRlbmRfY3V0cyRsb3dlcltbMl1dLCBtYWluID0gIlN1YnRyZWUgMiIpDQpgYGANCg0KDQoNCg0KVGFtYmnDqW4gcG9kZW1vcyB0cmF6YXIgYXJib2xlcyBjaXJjdWxhcmVzIGNvbW8gZWwgc2lndWllbnRlOg0KYGBge3J9DQpmdml6X2RlbmQoZGVuZF9jdXRzJGxvd2VyW1syXV0sIHR5cGUgPSAiY2lyY3VsYXIiKQ0KYGBgDQoNCiMjIyA5LjIuMyBQYXJhIGd1YXJkYXIgZWwgZGVuZG9ncmFtYSBlbiB1bmEgcGFnaW5hIGdyYW5kZSBkZSBQREYgIyMjDQoNCmBgYHtyfQ0KcGRmKCJkZW5kcm9ncmFtLnBkZiIsIHdpZHRoPTMwLCBoZWlnaHQ9MTUpICMgT3BlbiBhIFBERg0KcCA8LSBmdml6X2RlbmQoaGMsIGsgPSA0LCBjZXggPSAxLCBrX2NvbG9ycyA9ICJqY28iICkgIyBEbyBwbG90dGluZw0KcHJpbnQocCkNCmRldi5vZmYoKSAjIENsb3NlIHRoZSBQREYNCmBgYA0KDQojIyMgOS4zIE1hbmlwdWxhbmRvIGRlbmRvZ3JhbWFzIHVzYW5kbyAiZGVuZGV4dGVuZCIgIyMjDQoNCkPDs2RpZ28gRXN0w6FuZGFyIGRlIFIgcGFyYSBjcmVhciB1biBkZW5kb2dyYW1hDQpgYGB7cn0NCmRhdGEgPC0gc2NhbGUoVVNBcnJlc3RzKQ0KZGlzdC5yZXMgPC0gZGlzdChkYXRhKQ0KaGMgPC0gaGNsdXN0KGRpc3QucmVzLCBtZXRob2QgPSAid2FyZC5EMiIpDQpkZW5kIDwtIGFzLmRlbmRyb2dyYW0oaGMpDQpwbG90KGRlbmQpDQpgYGANCg0KDQoNCkPDs2RpZ28gZGUgUiBwYXJhIGNyZWFyIHVuIGRlbmRvZ3JhbWEgdXNhbmRvIG9wZXJhZG9yZXMgZGUgY2FkZW5hDQpgYGB7cn0NCmxpYnJhcnkoZGVuZGV4dGVuZCkNCmRlbmQgPC0gVVNBcnJlc3RzWzE6NSxdICU+JSAjIGRhdGENCnNjYWxlICU+JSAjIFNjYWxlIHRoZSBkYXRhDQpkaXN0ICU+JSAjIGNhbGN1bGF0ZSBhIGRpc3RhbmNlIG1hdHJpeCwNCmhjbHVzdChtZXRob2QgPSAid2FyZC5EMiIpICU+JSAjIEhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nDQphcy5kZW5kcm9ncmFtICMgVHVybiB0aGUgb2JqZWN0IGludG8gYSBkZW5kcm9ncmFtLg0KcGxvdChkZW5kKQ0KYGBgDQoNCg0KDQoNCiMgQmlibGlvZ3JhZsOtYXM=