1 - Number of directors trained by province

table(school_dataset$provincia)

  Maputo  Nampula Zambézia 
       2       30      103 

2 - Number of directors trained by province

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$provincia))*100

Out fo the 135 school directors, only 31% were trained, majority (20%) being from Zambezia province.

3 - Number of directors by gender

prop.table(table(school_dataset$Sexo))*100

         f          F          M 
 0.7407407 21.4814815 77.7777778 
prop.table(table(school_dataset$Sexo, school_dataset$`Director capacitado (YES/NO)`))*100
   
            No        Yes
  f  0.7407407  0.0000000
  F 14.0740741  7.4074074
  M 53.3333333 24.4444444

Majority (78%) of the school directors are male, out of the minority (22%) female, only 7% where trained.

4 - Percentage of schools with access to water

prop.table(table(school_dataset$provincia, school_dataset$`A_escola_tem_água_potável?`))*100
          
                    0          1
  Maputo    0.7407407  0.7407407
  Nampula  10.3703704 11.8518519
  Zambézia 26.6666667 49.6296296

Only 60% of the schools have access to water

5 - Number of schools with strategic location for hand washing and disinfection

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_pontos_estratégicos_para_lavagem_ou_desinfeção_das_mãos?`))*100
     
              0         1
  No  26.666667 41.481481
  Yes  8.148148 23.703704

Only 32% of th schools have strategic points for hand washing and disinfection which 24% of the schools have the directors went through training

6 - Percentage of schools with posters of health and safety

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_cartazes_afixados_sobre_saúde_higiene_segurança_emergência?`))*100
     
             0        1
  No  28.88889 39.25926
  Yes 13.33333 18.51852

57% of the schools have health and safety posters

7 - Percentage of schools with 1 month of stock of hygiene products

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_um_stock_de_produtos_de_higiene_desinfecção_e_de_saúde_para_suprir_as_necessidades_de_pelo_menos_um_mês?`))*100
     
              0         1
  No  33.333333 34.814815
  Yes  8.888889 22.962963

56% of the schools have sufficient stock of hygiene and disinfectant for at least 30 days

8 - Percentage

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$A_escola_tem_ventilação_adequada_existência_de_janelas_nas_salas_de_aula_e_outros_compartimentos))*100
     
               0          1
  No   3.7037037 64.4444444
  Yes  0.7407407 31.1111111

95% of the schools have adequate ventilation in the classrooms and other compartments

9 - Percentage of schools with clean sanitation system for male teachers

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_sanitários_latrinas_limpios_e_funcionais_para_professores?`))*100
     
              0         1
  No  10.370370 57.777778
  Yes  1.481481 30.370370

88% of the schools have clean and functional sanitation system and latrines for male teachers

10 - Percentage of school with clean sanitation system for female teachers

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_sanitarios_latrinas_limpios_e_funcionais_para_professoras?`))*100
     
              0         1
  No  20.000000 48.148148
  Yes  2.962963 28.888889

76% of the schools have clean and functional sanitation system and latrine for female teachers

11 - Percentage of schools with clean sanitation system and for male students

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_sanitários_latrinas_limpios_e_funcionais_para_alunos?`))*100
     
               0          1
  No   5.1851852 62.9629630
  Yes  0.7407407 31.1111111

94% of the schools have clean and functional sanitation system and latrine for male students

12 - Percentage of schools with clean sanitation system for female students

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_sanitários_latrinas_limpios_e_funcionais_para_alunas?`))*100
     
               0          1
  No   6.6666667 61.4814815
  Yes  0.7407407 31.1111111

92% of the schools have clean and functional sanitation system and latrines for female students

13 - Percentage of schools with access for the disabled

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_condições_de_acessibilidade_para_todos_utentes_incluindo_alunos_portadores_de_deficiência?_rampas`))*100
     
              0         1
  No  22.222222 45.925926
  Yes  8.888889 22.962963

68% of the schools have accessible conditions for disabled people

14 - Number of schools with staff trained in health and safety for schools

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_funcionários_capacitados_para_questões_de_saúde_e_higiene_escolar?`))*100
     
             0        1
  No  25.18519 42.96296
  Yes 11.11111 20.74074

63% of the schools have employees trained in health and safety for schools

15 - Classification: WASH by province

prop.table(table(school_dataset$provincia, school_dataset$classificacao_seccao_2_higiene_saneamento_do_meio_e_seguranca))
          
                    B          E          I          M
  Maputo   0.01481481 0.00000000 0.00000000 0.00000000
  Nampula  0.16296296 0.01481481 0.02962963 0.01481481
  Zambézia 0.51111111 0.02962963 0.17037037 0.05185185
prop.table(table(school_dataset$classificacao_seccao_2_higiene_saneamento_do_meio_e_seguranca))

         B          E          I          M 
0.68888889 0.04444444 0.20000000 0.06666667 

In terms of health safety and hygiene, 5% of the schools have excellent rating, 68% have good rating, 20% have insufficient and 6% have bad rating

15 - Percentage of schools with organogram

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_organograma?`))*100
     
             0        1
  No  22.22222 45.92593
  Yes 14.81481 17.03704

63% of the schools have organogram

16 - Percentage of schools with development budget plan approved by the school council

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`A_escola_tem_o_plano_de_desenvolvimento_orçamentado_e_aprovado_pelo_conselho_da_Escola?`))*100
     
              0         1
  No  14.814815 53.333333
  Yes  5.925926 25.925926

79% of the schools have development plan budgeted for and approved

17 - Percentage of schools 75% compliant with the development plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_grau_de_cumprimento_do_plano_de_desenvolvimento_da_escola_situa-se_acima_de_75%?`))*100
     
             0        1
  No  35.55556 32.59259
  Yes 13.33333 18.51852

51% of the schools have development plan achieved above 75%

18 - Percentage of schools with development plan execution report

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_o_relatório_de_execução_do_plano_de_desenvolvimento_da_escola?`))*100
     
             0        1
  No  34.81481 33.33333
  Yes 11.11111 20.74074

54% of the schools have development plan implementation report

19 - Percentage of schools with budgeted annual activity plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_o_plano_anual_de_actividades_orcamentado?`))*100
     
              0         1
  No   8.888889 59.259259
  Yes  2.222222 29.629630

89% of the schools have the schools annual plan budgeted for.

20 - Percentage of schools with 75% compliant with school’s annual plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_grau_de_cumprimento_do_plano_anual_da_escola_situa-se acima_de_75%?`))*100
     
              0         1
  No  22.962963 45.185185
  Yes  7.407407 24.444444

69% of the schools have the degree of compliant over 75% on schools annual plan

21 - Percentage of schools with the annual report on the execution of planned activities

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_o_relatorio_de_execucao_do_plano_anual_de_actividades?`))*100
     
             0        1
  No  28.14815 40.00000
  Yes  9.62963 22.22222

62% of the schools have reports on the implementation of the activities based on annual plan

22 - Percentage of schools with the school director in possession of the monthly activity plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_da_escola_tem_plano_mensal_de_actividades?`))*100
     
             0        1
  No  28.88889 39.25926
  Yes 14.07407 17.77778

57% of the school’s directors have monthly activity plan

23 - Percentage of schools with school council annual activity plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_o_plano_de_actividades_do_conselho_de_escola?`))*100
     
              0         1
  No  20.000000 48.148148
  Yes  4.444444 27.407407

75% of the schools have school council activity plan

23 - Percentage of schools that had the school council benefiting from capacity building

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_conselho_de_escola_beneficiou_de_capacitação?`))*100
     
              0         1
  No   7.407407 60.740741
  Yes  5.185185 26.666667

87% of the school’s council benefited from capcity building

24 - Percentage of schools that the director controls “livro de ponto”

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_controla_o_livro_do_ponto_livro_de_ponto_homologado_?`))*100
     
             0        1
  No  20.74074 47.40741
  Yes  9.62963 22.22222

25 - Percentage of schools with school staff individual processes

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_processos_individuais_dos_funcionários?`))*100
     
             0        1
  No  29.62963 38.51852
  Yes 13.33333 18.51852

57% of the schools have employees individual processes

26 - Percentage of schools that the director monitors the furniture and equipment

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_controla_as_infraestruturas_mobiliário_e_equipamentos_escalar_ficha_de_inventario_preenchida_e_atualizada?`))*100
     
             0        1
  No  33.33333 34.81481
  Yes 13.33333 18.51852

53% of the directors monitor the furnitures and equipment

27 - Classification of admin management tools

prop.table(table(school_dataset$provincia, school_dataset$classificacao_seccao_3_instrumentos_de_gestao_administrativa))
          
                     B           E           I           M
  Maputo   0.007407407 0.000000000 0.007407407 0.000000000
  Nampula  0.074074074 0.007407407 0.081481481 0.059259259
  Zambézia 0.303703704 0.029629630 0.303703704 0.125925926
prop.table(table(school_dataset$classificacao_seccao_3_instrumentos_de_gestao_administrativa))

         B          E          I          M 
0.38518519 0.03703704 0.39259259 0.18518519 

In terms of classification of the management of the administrative tools, only 3% of the schools had an excellent rating and 28% had good rating, the rest were insufficient (40%) and bad (19%)

28 - Percentage of schools with class books

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_Livro_de_turma_para_todas_as_classes_e_turmas_incluindo_AEJA?`))*100
     
             0        1
  No  17.77778 50.37037
  Yes 10.37037 21.48148

72% of the schools have sufficient books for the classrooms

29 - Percentage of schools with directors that have class assistance plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_tem_planos_de_assistencia_das_aulas?`))*100
     
              0         1
  No  16.296296 51.851852
  Yes  7.407407 24.444444

76% of the directors have class assistance plan

30 - Percentage of schools that have minutes of pedagogic council meetings

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_actas_dos_encontros_de_conselho_pedagogico?`))*100
     
             0        1
  No  28.88889 39.25926
  Yes 14.07407 17.77778

58% of the directors have minutes from the pedagogic council meetings

31 - Percentage of schools with cycle and area archive

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_pastas_de_arquivo_de_ciclos_e_areas?`))*100
     
             0        1
  No  34.07407 34.07407
  Yes 11.85185 20.00000

54% of the schools have archive of the school

32 - Percentage of schools that distribute teachers according to the order of MINEDH

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_faz_a_distribuicao_do_servico_docente_de_acordo_com_o_despacho_conjunto_do_MINEDH_e_ministerio_das_financas?`))*100
     
              0         1
  No   5.185185 62.962963
  Yes  2.962963 28.888889

91% of the schools distribute teachers according to MINEDH’s order

33 - Classification of pedagogic tools

prop.table(table(school_dataset$classificacao_seccao_IV_Instrumentos_de_Gestao_pedagogica))

         B          E          I          M 
0.08888889 0.06666667 0.20740741 0.63703704 
prop.table(table(school_dataset$provincia, school_dataset$classificacao_seccao_IV_Instrumentos_de_Gestao_pedagogica))
          
                     B           E           I           M
  Maputo   0.000000000 0.000000000 0.007407407 0.007407407
  Nampula  0.044444444 0.000000000 0.044444444 0.133333333
  Zambézia 0.044444444 0.066666667 0.155555556 0.496296296

In terms of management of pedagogic tools, only 7% were rated excellent, 9% good, 21% insufficient and 64% rated bad

34 - Percentage of schools with ADE bags

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_tem_a_pasta_do_ADE?`))*100
     
              0         1
  No  13.333333 54.814815
  Yes  1.481481 30.370370

35 - Percentage of schools with ADE bags well organized

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_pasta_do_ADE_esta_devidamente_organizada?`))*100
     
              0         1
  No  17.777778 50.370370
  Yes  3.703704 28.148148

36 - Percentage of schools that have SOPs

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`a_escola_possui_os_seguintes_documentos_normativos?`))*100
     
              0         1
  No  19.259259 48.888889
  Yes  4.444444 27.407407

37 - Financial management

prop.table(table(school_dataset$provincia, school_dataset$classificacao_seccao_V_gestao_financeira))
          
                     B           E           I           M
  Maputo   0.000000000 0.014814815 0.000000000 0.000000000
  Nampula  0.029629630 0.170370370 0.014814815 0.007407407
  Zambézia 0.088888889 0.518518519 0.037037037 0.118518519
prop.table(table(school_dataset$classificacao_seccao_V_gestao_financeira))

         B          E          I          M 
0.11851852 0.70370370 0.05185185 0.12592593 

In terms of school financial management, 70% of the schools had excellent rating and 12 with good rating

38 - Percentage of school with basic school emergency plan

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$a_escola_tem_o_plano_de_emergencia_basico_escolar))*100
     
              0         1
  No  56.296296 11.851852
  Yes 22.962963  8.888889

39 - Percentage of schools with emergency committee created

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$a_escola_tem_o_comite_de_emergencia_criado))*100
     
             0        1
  No  47.76119 20.89552
  Yes 17.91045 13.43284

40 - Percentage of schools with trained emergency committee

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`os_membros_do_comite_de_emergencia_foram_capacitados?`))*100
     
             0        1
  No  47.40741 20.74074
  Yes 17.77778 14.07407

41 - Percentage of schools with visible emergency contacts

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$existem_numeros_de_contacto_de_emergencia_devidamente_afixados))*100
     
              0         1
  No  57.142857 11.278195
  Yes 24.812030  6.766917

42 - Directors capacity building

prop.table(table(school_dataset$provincia, school_dataset$classificao_seccao_VI_aspectos_especificos_sobre_a_capacitacao_dos_directores_das_escolas))
          
                    B          E          I          M
  Maputo   0.00000000 0.00000000 0.00000000 0.01481481
  Nampula  0.02222222 0.02222222 0.04444444 0.13333333
  Zambézia 0.08148148 0.09629630 0.05185185 0.53333333
prop.table(table( school_dataset$classificao_seccao_VI_aspectos_especificos_sobre_a_capacitacao_dos_directores_das_escolas))

        B         E         I         M 
0.1037037 0.1185185 0.0962963 0.6814815 

43 - Percentage of schools with problem resolution project approved by IFP

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_da_escola_tem_um_projecto_de_resolucao_de_problemas_aprovado_pelo_IFP?`))*100
     
             0        1
  No  48.14815 20.00000
  Yes 16.29630 15.55556

44 - Percentage of schools with reflexive report of the project

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_tem_relatorio_reflexivo_do_projecto?`))*100
     
              0         1
  No  54.074074 14.074074
  Yes 22.962963  8.888889

45 - Percentage of schools with calenders of the ordinary sessions of the collective board

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_da_escola_tem_o_calendario_das_sessoes_ordinarias_do_colectivo_de_direccao?`))*100
     
             0        1
  No  46.66667 21.48148
  Yes 20.74074 11.11111

46 - Percentage of schools with the calender for the normative documents studies

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_da_escola_tem_o_calendario_de_estudo_dos_documentos_normativos?`))*100
     
             0        1
  No  43.70370 24.44444
  Yes 18.51852 13.33333

47 - Percentage of schools which the director has the minutes of the normative document studies

prop.table(table(school_dataset$`Director capacitado (YES/NO)`, school_dataset$`o_director_da_escola_tem_as_actas_sinteses_do_estudo_dos_documentos_normativos?`))*100
     
             0        1
  No  40.00000 28.14815
  Yes 16.29630 15.55556

48 - Director capacity building

prop.table(table(school_dataset$provincia, school_dataset$calssificacao_seccao_VII_aspectos_especificos_sobre_a_capacitacao_dos_directores_das_escolas))
          
                     B           E           I           M
  Maputo   0.000000000 0.000000000 0.007407407 0.007407407
  Nampula  0.037037037 0.000000000 0.044444444 0.140740741
  Zambézia 0.044444444 0.066666667 0.155555556 0.496296296
prop.table(table(school_dataset$calssificacao_seccao_VII_aspectos_especificos_sobre_a_capacitacao_dos_directores_das_escolas))

         B          E          I          M 
0.08148148 0.06666667 0.20740741 0.64444444 

In terms of the capacity of the directors, only 7% had excellent rating and 9% good rating, 50% had bad rating

49 - Final rating

prop.table(table(school_dataset$provincia, school_dataset$classificacao_final))
          
                     B           E           I           M
  Maputo   0.007407407 0.000000000 0.007407407 0.000000000
  Nampula  0.059259259 0.000000000 0.125925926 0.037037037
  Zambézia 0.185185185 0.022222222 0.437037037 0.118518519
prop.table(table(school_dataset$classificacao_final))

         B          E          I          M 
0.25185185 0.02222222 0.57037037 0.15555556 

Overall, only 2% of the schools have excellent rating and only 25% with good rating, majority (57%) were rated insufficient.

LS0tDQp0aXRsZTogIkF2YWxpYWNhbyBkZSBkaXJlY3RvcmVzIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOiBkZWZhdWx0DQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgZGZfcHJpbnQ6IHBhZ2VkDQotLS0NCg0KMSAtIE51bWJlciBvZiBkaXJlY3RvcnMgdHJhaW5lZCBieSBwcm92aW5jZQ0KDQpgYGB7cn0NCnRhYmxlKHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSkNCmBgYA0KDQoyIC0gTnVtYmVyIG9mIGRpcmVjdG9ycyB0cmFpbmVkIGJ5IHByb3ZpbmNlDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSkpKjEwMA0KYGBgDQoNCk91dCBmbyB0aGUgMTM1IHNjaG9vbCBkaXJlY3RvcnMsIG9ubHkgMzElIHdlcmUgdHJhaW5lZCwgbWFqb3JpdHkgKDIwJSkgYmVpbmcgZnJvbSBaYW1iZXppYSBwcm92aW5jZS4NCg0KMyAtIE51bWJlciBvZiBkaXJlY3RvcnMgYnkgZ2VuZGVyDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRTZXhvKSkqMTAwDQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JFNleG8sIHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCkpKjEwMA0KYGBgDQoNCk1ham9yaXR5ICg3OCUpIG9mIHRoZSBzY2hvb2wgZGlyZWN0b3JzIGFyZSBtYWxlLCBvdXQgb2YgdGhlIG1pbm9yaXR5ICgyMiUpIGZlbWFsZSwgb25seSA3JSB3aGVyZSB0cmFpbmVkLg0KDQo0IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggYWNjZXNzIHRvIHdhdGVyDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRwcm92aW5jaWEsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fw6FndWFfcG90w6F2ZWw/YCkpKjEwMA0KYGBgDQoNCk9ubHkgNjAlIG9mIHRoZSBzY2hvb2xzIGhhdmUgYWNjZXNzIHRvIHdhdGVyDQoNCjUgLSBOdW1iZXIgb2Ygc2Nob29scyB3aXRoIHN0cmF0ZWdpYyBsb2NhdGlvbiBmb3IgaGFuZCB3YXNoaW5nIGFuZCBkaXNpbmZlY3Rpb24NCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYEFfZXNjb2xhX3RlbV9wb250b3NfZXN0cmF0w6lnaWNvc19wYXJhX2xhdmFnZW1fb3VfZGVzaW5mZcOnw6NvX2Rhc19tw6Nvcz9gKSkqMTAwDQpgYGANCg0KT25seSAzMiUgb2YgdGggc2Nob29scyBoYXZlIHN0cmF0ZWdpYyBwb2ludHMgZm9yIGhhbmQgd2FzaGluZyBhbmQgZGlzaW5mZWN0aW9uIHdoaWNoIDI0JSBvZiB0aGUgc2Nob29scyBoYXZlIHRoZSBkaXJlY3RvcnMgd2VudCB0aHJvdWdoIHRyYWluaW5nDQoNCjYgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgd2l0aCBwb3N0ZXJzIG9mIGhlYWx0aCBhbmQgc2FmZXR5DQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fY2FydGF6ZXNfYWZpeGFkb3Nfc29icmVfc2HDumRlX2hpZ2llbmVfc2VndXJhbsOnYV9lbWVyZ8OqbmNpYT9gKSkqMTAwDQpgYGANCg0KNTclIG9mIHRoZSBzY2hvb2xzIGhhdmUgaGVhbHRoIGFuZCBzYWZldHkgcG9zdGVycw0KDQo3IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggMSBtb250aCBvZiBzdG9jayBvZiBoeWdpZW5lIHByb2R1Y3RzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fdW1fc3RvY2tfZGVfcHJvZHV0b3NfZGVfaGlnaWVuZV9kZXNpbmZlY8Onw6NvX2VfZGVfc2HDumRlX3BhcmFfc3VwcmlyX2FzX25lY2Vzc2lkYWRlc19kZV9wZWxvX21lbm9zX3VtX23DqnM/YCkpKjEwMA0KYGBgDQoNCjU2JSBvZiB0aGUgc2Nob29scyBoYXZlIHN1ZmZpY2llbnQgc3RvY2sgb2YgaHlnaWVuZSBhbmQgZGlzaW5mZWN0YW50IGZvciBhdCBsZWFzdCAzMCBkYXlzDQoNCjggLSBQZXJjZW50YWdlDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JEFfZXNjb2xhX3RlbV92ZW50aWxhw6fDo29fYWRlcXVhZGFfZXhpc3TDqm5jaWFfZGVfamFuZWxhc19uYXNfc2FsYXNfZGVfYXVsYV9lX291dHJvc19jb21wYXJ0aW1lbnRvcykpKjEwMA0KYGBgDQoNCjk1JSBvZiB0aGUgc2Nob29scyBoYXZlIGFkZXF1YXRlIHZlbnRpbGF0aW9uIGluIHRoZSBjbGFzc3Jvb21zIGFuZCBvdGhlciBjb21wYXJ0bWVudHMNCg0KOSAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIGNsZWFuIHNhbml0YXRpb24gc3lzdGVtIGZvciBtYWxlIHRlYWNoZXJzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fc2FuaXTDoXJpb3NfbGF0cmluYXNfbGltcGlvc19lX2Z1bmNpb25haXNfcGFyYV9wcm9mZXNzb3Jlcz9gKSkqMTAwDQpgYGANCg0KODglIG9mIHRoZSBzY2hvb2xzIGhhdmUgY2xlYW4gYW5kIGZ1bmN0aW9uYWwgc2FuaXRhdGlvbiBzeXN0ZW0gYW5kIGxhdHJpbmVzIGZvciBtYWxlIHRlYWNoZXJzDQoNCjEwIC0gUGVyY2VudGFnZSBvZiBzY2hvb2wgd2l0aCBjbGVhbiBzYW5pdGF0aW9uIHN5c3RlbSBmb3IgZmVtYWxlIHRlYWNoZXJzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fc2FuaXRhcmlvc19sYXRyaW5hc19saW1waW9zX2VfZnVuY2lvbmFpc19wYXJhX3Byb2Zlc3NvcmFzP2ApKSoxMDANCmBgYA0KDQo3NiUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBjbGVhbiBhbmQgZnVuY3Rpb25hbCBzYW5pdGF0aW9uIHN5c3RlbSBhbmQgbGF0cmluZSBmb3IgZmVtYWxlIHRlYWNoZXJzDQoNCjExIC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggY2xlYW4gc2FuaXRhdGlvbiBzeXN0ZW0gYW5kIGZvciBtYWxlIHN0dWRlbnRzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fc2FuaXTDoXJpb3NfbGF0cmluYXNfbGltcGlvc19lX2Z1bmNpb25haXNfcGFyYV9hbHVub3M/YCkpKjEwMA0KYGBgDQoNCjk0JSBvZiB0aGUgc2Nob29scyBoYXZlIGNsZWFuIGFuZCBmdW5jdGlvbmFsIHNhbml0YXRpb24gc3lzdGVtIGFuZCBsYXRyaW5lIGZvciBtYWxlIHN0dWRlbnRzDQoNCjEyIC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggY2xlYW4gc2FuaXRhdGlvbiBzeXN0ZW0gZm9yIGZlbWFsZSBzdHVkZW50cw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgQV9lc2NvbGFfdGVtX3Nhbml0w6FyaW9zX2xhdHJpbmFzX2xpbXBpb3NfZV9mdW5jaW9uYWlzX3BhcmFfYWx1bmFzP2ApKSoxMDANCmBgYA0KDQo5MiUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBjbGVhbiBhbmQgZnVuY3Rpb25hbCBzYW5pdGF0aW9uIHN5c3RlbSBhbmQgbGF0cmluZXMgZm9yIGZlbWFsZSBzdHVkZW50cw0KDQoxMyAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIGFjY2VzcyBmb3IgdGhlIGRpc2FibGVkDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fY29uZGnDp8O1ZXNfZGVfYWNlc3NpYmlsaWRhZGVfcGFyYV90b2Rvc191dGVudGVzX2luY2x1aW5kb19hbHVub3NfcG9ydGFkb3Jlc19kZV9kZWZpY2nDqm5jaWE/X3JhbXBhc2ApKSoxMDANCmBgYA0KDQo2OCUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBhY2Nlc3NpYmxlIGNvbmRpdGlvbnMgZm9yIGRpc2FibGVkIHBlb3BsZQ0KDQoxNCAtIE51bWJlciBvZiBzY2hvb2xzIHdpdGggc3RhZmYgdHJhaW5lZCBpbiBoZWFsdGggYW5kIHNhZmV0eSBmb3Igc2Nob29scw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgQV9lc2NvbGFfdGVtX2Z1bmNpb27DoXJpb3NfY2FwYWNpdGFkb3NfcGFyYV9xdWVzdMO1ZXNfZGVfc2HDumRlX2VfaGlnaWVuZV9lc2NvbGFyP2ApKSoxMDANCmBgYA0KDQo2MyUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBlbXBsb3llZXMgdHJhaW5lZCBpbiBoZWFsdGggYW5kIHNhZmV0eSBmb3Igc2Nob29scw0KDQoxNSAtIENsYXNzaWZpY2F0aW9uOiBXQVNIIGJ5IHByb3ZpbmNlDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRwcm92aW5jaWEsIHNjaG9vbF9kYXRhc2V0JGNsYXNzaWZpY2FjYW9fc2VjY2FvXzJfaGlnaWVuZV9zYW5lYW1lbnRvX2RvX21laW9fZV9zZWd1cmFuY2EpKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGNsYXNzaWZpY2FjYW9fc2VjY2FvXzJfaGlnaWVuZV9zYW5lYW1lbnRvX2RvX21laW9fZV9zZWd1cmFuY2EpKQ0KYGBgDQoNCkluIHRlcm1zIG9mIGhlYWx0aCBzYWZldHkgYW5kIGh5Z2llbmUsIDUlIG9mIHRoZSBzY2hvb2xzIGhhdmUgZXhjZWxsZW50IHJhdGluZywgNjglIGhhdmUgZ29vZCByYXRpbmcsIDIwJSBoYXZlIGluc3VmZmljaWVudCBhbmQgNiUgaGF2ZSBiYWQgcmF0aW5nDQoNCjE1IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggb3JnYW5vZ3JhbQ0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgQV9lc2NvbGFfdGVtX29yZ2Fub2dyYW1hP2ApKSoxMDANCmBgYA0KDQo2MyUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBvcmdhbm9ncmFtDQoNCjE2IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggZGV2ZWxvcG1lbnQgYnVkZ2V0IHBsYW4gYXBwcm92ZWQgYnkgdGhlIHNjaG9vbCBjb3VuY2lsDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBBX2VzY29sYV90ZW1fb19wbGFub19kZV9kZXNlbnZvbHZpbWVudG9fb3LDp2FtZW50YWRvX2VfYXByb3ZhZG9fcGVsb19jb25zZWxob19kYV9Fc2NvbGE/YCkpKjEwMA0KYGBgDQoNCjc5JSBvZiB0aGUgc2Nob29scyBoYXZlIGRldmVsb3BtZW50IHBsYW4gYnVkZ2V0ZWQgZm9yIGFuZCBhcHByb3ZlZA0KDQoxNyAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyA3NSUgY29tcGxpYW50IHdpdGggdGhlIGRldmVsb3BtZW50IHBsYW4NCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYG9fZ3JhdV9kZV9jdW1wcmltZW50b19kb19wbGFub19kZV9kZXNlbnZvbHZpbWVudG9fZGFfZXNjb2xhX3NpdHVhLXNlX2FjaW1hX2RlXzc1JT9gKSkqMTAwDQpgYGANCg0KNTElIG9mIHRoZSBzY2hvb2xzIGhhdmUgZGV2ZWxvcG1lbnQgcGxhbiBhY2hpZXZlZCBhYm92ZSA3NSUNCg0KMTggLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgd2l0aCBkZXZlbG9wbWVudCBwbGFuIGV4ZWN1dGlvbiByZXBvcnQNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYGFfZXNjb2xhX3RlbV9vX3JlbGF0w7NyaW9fZGVfZXhlY3XDp8Ojb19kb19wbGFub19kZV9kZXNlbnZvbHZpbWVudG9fZGFfZXNjb2xhP2ApKSoxMDANCmBgYA0KDQo1NCUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBkZXZlbG9wbWVudCBwbGFuIGltcGxlbWVudGF0aW9uIHJlcG9ydA0KDQoxOSAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIGJ1ZGdldGVkIGFubnVhbCBhY3Rpdml0eSBwbGFuDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV90ZW1fb19wbGFub19hbnVhbF9kZV9hY3RpdmlkYWRlc19vcmNhbWVudGFkbz9gKSkqMTAwDQpgYGANCg0KODklIG9mIHRoZSBzY2hvb2xzIGhhdmUgdGhlIHNjaG9vbHMgYW5udWFsIHBsYW4gYnVkZ2V0ZWQgZm9yLg0KDQoyMCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIDc1JSBjb21wbGlhbnQgd2l0aCBzY2hvb2wncyBhbm51YWwgcGxhbg0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgb19ncmF1X2RlX2N1bXByaW1lbnRvX2RvX3BsYW5vX2FudWFsX2RhX2VzY29sYV9zaXR1YS1zZSBhY2ltYV9kZV83NSU/YCkpKjEwMA0KYGBgDQoNCjY5JSBvZiB0aGUgc2Nob29scyBoYXZlIHRoZSBkZWdyZWUgb2YgY29tcGxpYW50IG92ZXIgNzUlIG9uIHNjaG9vbHMgYW5udWFsIHBsYW4NCg0KMjEgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgd2l0aCB0aGUgYW5udWFsIHJlcG9ydCBvbiB0aGUgZXhlY3V0aW9uIG9mIHBsYW5uZWQgYWN0aXZpdGllcw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgYV9lc2NvbGFfdGVtX29fcmVsYXRvcmlvX2RlX2V4ZWN1Y2FvX2RvX3BsYW5vX2FudWFsX2RlX2FjdGl2aWRhZGVzP2ApKSoxMDANCmBgYA0KDQo2MiUgb2YgdGhlIHNjaG9vbHMgaGF2ZSByZXBvcnRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWN0aXZpdGllcyBiYXNlZCBvbiBhbm51YWwgcGxhbg0KDQoyMiAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIHRoZSBzY2hvb2wgZGlyZWN0b3IgaW4gcG9zc2Vzc2lvbiBvZiB0aGUgbW9udGhseSBhY3Rpdml0eSBwbGFuDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvX2RpcmVjdG9yX2RhX2VzY29sYV90ZW1fcGxhbm9fbWVuc2FsX2RlX2FjdGl2aWRhZGVzP2ApKSoxMDANCmBgYA0KDQo1NyUgb2YgdGhlIHNjaG9vbCdzIGRpcmVjdG9ycyBoYXZlIG1vbnRobHkgYWN0aXZpdHkgcGxhbg0KDQoyMyAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIHNjaG9vbCBjb3VuY2lsIGFubnVhbCBhY3Rpdml0eSBwbGFuDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV90ZW1fb19wbGFub19kZV9hY3RpdmlkYWRlc19kb19jb25zZWxob19kZV9lc2NvbGE/YCkpKjEwMA0KYGBgDQoNCjc1JSBvZiB0aGUgc2Nob29scyBoYXZlIHNjaG9vbCBjb3VuY2lsIGFjdGl2aXR5IHBsYW4NCg0KMjMgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgdGhhdCBoYWQgdGhlIHNjaG9vbCBjb3VuY2lsIGJlbmVmaXRpbmcgZnJvbSBjYXBhY2l0eSBidWlsZGluZw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgb19jb25zZWxob19kZV9lc2NvbGFfYmVuZWZpY2lvdV9kZV9jYXBhY2l0YcOnw6NvP2ApKSoxMDANCmBgYA0KDQo4NyUgb2YgdGhlIHNjaG9vbCdzIGNvdW5jaWwgYmVuZWZpdGVkIGZyb20gY2FwY2l0eSBidWlsZGluZw0KDQoyNCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB0aGF0IHRoZSBkaXJlY3RvciBjb250cm9scyAibGl2cm8gZGUgcG9udG8iDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvX2RpcmVjdG9yX2NvbnRyb2xhX29fbGl2cm9fZG9fcG9udG9fbGl2cm9fZGVfcG9udG9faG9tb2xvZ2Fkb18/YCkpKjEwMA0KYGBgDQoNCjI1IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggc2Nob29sIHN0YWZmIGluZGl2aWR1YWwgcHJvY2Vzc2VzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV90ZW1fcHJvY2Vzc29zX2luZGl2aWR1YWlzX2Rvc19mdW5jaW9uw6FyaW9zP2ApKSoxMDANCmBgYA0KDQo1NyUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBlbXBsb3llZXMgaW5kaXZpZHVhbCBwcm9jZXNzZXMNCg0KMjYgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgdGhhdCB0aGUgZGlyZWN0b3IgbW9uaXRvcnMgdGhlIGZ1cm5pdHVyZSBhbmQgZXF1aXBtZW50DQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvX2RpcmVjdG9yX2NvbnRyb2xhX2FzX2luZnJhZXN0cnV0dXJhc19tb2JpbGnDoXJpb19lX2VxdWlwYW1lbnRvc19lc2NhbGFyX2ZpY2hhX2RlX2ludmVudGFyaW9fcHJlZW5jaGlkYV9lX2F0dWFsaXphZGE/YCkpKjEwMA0KYGBgDQoNCjUzJSBvZiB0aGUgZGlyZWN0b3JzIG1vbml0b3IgdGhlIGZ1cm5pdHVyZXMgYW5kIGVxdWlwbWVudA0KDQoyNyAtIENsYXNzaWZpY2F0aW9uIG9mIGFkbWluIG1hbmFnZW1lbnQgdG9vbHMNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSwgc2Nob29sX2RhdGFzZXQkY2xhc3NpZmljYWNhb19zZWNjYW9fM19pbnN0cnVtZW50b3NfZGVfZ2VzdGFvX2FkbWluaXN0cmF0aXZhKSkNCg0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRjbGFzc2lmaWNhY2FvX3NlY2Nhb18zX2luc3RydW1lbnRvc19kZV9nZXN0YW9fYWRtaW5pc3RyYXRpdmEpKQ0KYGBgDQoNCkluIHRlcm1zIG9mIGNsYXNzaWZpY2F0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IG9mIHRoZSBhZG1pbmlzdHJhdGl2ZSB0b29scywgb25seSAzJSBvZiB0aGUgc2Nob29scyBoYWQgYW4gZXhjZWxsZW50IHJhdGluZyBhbmQgMjglIGhhZCBnb29kIHJhdGluZywgdGhlIHJlc3Qgd2VyZSBpbnN1ZmZpY2llbnQgKDQwJSkgYW5kIGJhZCAoMTklKQ0KDQoyOCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIGNsYXNzIGJvb2tzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV90ZW1fTGl2cm9fZGVfdHVybWFfcGFyYV90b2Rhc19hc19jbGFzc2VzX2VfdHVybWFzX2luY2x1aW5kb19BRUpBP2ApKSoxMDANCmBgYA0KDQo3MiUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBzdWZmaWNpZW50IGJvb2tzIGZvciB0aGUgY2xhc3Nyb29tcw0KDQoyOSAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIGRpcmVjdG9ycyB0aGF0IGhhdmUgY2xhc3MgYXNzaXN0YW5jZSBwbGFuDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvX2RpcmVjdG9yX3RlbV9wbGFub3NfZGVfYXNzaXN0ZW5jaWFfZGFzX2F1bGFzP2ApKSoxMDANCmBgYA0KDQo3NiUgb2YgdGhlIGRpcmVjdG9ycyBoYXZlIGNsYXNzIGFzc2lzdGFuY2UgcGxhbg0KDQozMCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB0aGF0IGhhdmUgbWludXRlcyBvZiBwZWRhZ29naWMgY291bmNpbCBtZWV0aW5ncw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgYV9lc2NvbGFfdGVtX2FjdGFzX2Rvc19lbmNvbnRyb3NfZGVfY29uc2VsaG9fcGVkYWdvZ2ljbz9gKSkqMTAwDQpgYGANCg0KNTglIG9mIHRoZSBkaXJlY3RvcnMgaGF2ZSBtaW51dGVzIGZyb20gdGhlIHBlZGFnb2dpYyBjb3VuY2lsIG1lZXRpbmdzDQoNCjMxIC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggY3ljbGUgYW5kIGFyZWEgYXJjaGl2ZQ0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgYV9lc2NvbGFfdGVtX3Bhc3Rhc19kZV9hcnF1aXZvX2RlX2NpY2xvc19lX2FyZWFzP2ApKSoxMDANCmBgYA0KDQo1NCUgb2YgdGhlIHNjaG9vbHMgaGF2ZSBhcmNoaXZlIG9mIHRoZSBzY2hvb2wNCg0KMzIgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgdGhhdCBkaXN0cmlidXRlIHRlYWNoZXJzIGFjY29yZGluZyB0byB0aGUgb3JkZXIgb2YgTUlORURIDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV9mYXpfYV9kaXN0cmlidWljYW9fZG9fc2Vydmljb19kb2NlbnRlX2RlX2Fjb3Jkb19jb21fb19kZXNwYWNob19jb25qdW50b19kb19NSU5FREhfZV9taW5pc3RlcmlvX2Rhc19maW5hbmNhcz9gKSkqMTAwDQpgYGANCg0KOTElIG9mIHRoZSBzY2hvb2xzIGRpc3RyaWJ1dGUgdGVhY2hlcnMgYWNjb3JkaW5nIHRvIE1JTkVESCdzIG9yZGVyDQoNCjMzIC0gQ2xhc3NpZmljYXRpb24gb2YgcGVkYWdvZ2ljIHRvb2xzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRjbGFzc2lmaWNhY2FvX3NlY2Nhb19JVl9JbnN0cnVtZW50b3NfZGVfR2VzdGFvX3BlZGFnb2dpY2EpKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSwgc2Nob29sX2RhdGFzZXQkY2xhc3NpZmljYWNhb19zZWNjYW9fSVZfSW5zdHJ1bWVudG9zX2RlX0dlc3Rhb19wZWRhZ29naWNhKSkNCmBgYA0KDQpJbiB0ZXJtcyBvZiBtYW5hZ2VtZW50IG9mIHBlZGFnb2dpYyB0b29scywgb25seSA3JSB3ZXJlIHJhdGVkIGV4Y2VsbGVudCwgOSUgZ29vZCwgMjElIGluc3VmZmljaWVudCBhbmQgNjQlIHJhdGVkIGJhZA0KDQozNCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIEFERSBiYWdzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBhX2VzY29sYV90ZW1fYV9wYXN0YV9kb19BREU/YCkpKjEwMA0KYGBgDQoNCjM1IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggQURFIGJhZ3Mgd2VsbCBvcmdhbml6ZWQNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYGFfcGFzdGFfZG9fQURFX2VzdGFfZGV2aWRhbWVudGVfb3JnYW5pemFkYT9gKSkqMTAwDQpgYGANCg0KMzYgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgdGhhdCBoYXZlIFNPUHMNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYGFfZXNjb2xhX3Bvc3N1aV9vc19zZWd1aW50ZXNfZG9jdW1lbnRvc19ub3JtYXRpdm9zP2ApKSoxMDANCmBgYA0KDQozNyAtIEZpbmFuY2lhbCBtYW5hZ2VtZW50DQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRwcm92aW5jaWEsIHNjaG9vbF9kYXRhc2V0JGNsYXNzaWZpY2FjYW9fc2VjY2FvX1ZfZ2VzdGFvX2ZpbmFuY2VpcmEpKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGNsYXNzaWZpY2FjYW9fc2VjY2FvX1ZfZ2VzdGFvX2ZpbmFuY2VpcmEpKQ0KYGBgDQoNCkluIHRlcm1zIG9mIHNjaG9vbCBmaW5hbmNpYWwgbWFuYWdlbWVudCwgNzAlIG9mIHRoZSBzY2hvb2xzIGhhZCBleGNlbGxlbnQgcmF0aW5nIGFuZCAxMiB3aXRoIGdvb2QgcmF0aW5nDQoNCjM4IC0gUGVyY2VudGFnZSBvZiBzY2hvb2wgd2l0aCBiYXNpYyBzY2hvb2wgZW1lcmdlbmN5IHBsYW4NCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYV9lc2NvbGFfdGVtX29fcGxhbm9fZGVfZW1lcmdlbmNpYV9iYXNpY29fZXNjb2xhcikpKjEwMA0KYGBgDQoNCjM5IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggZW1lcmdlbmN5IGNvbW1pdHRlZSBjcmVhdGVkDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGFfZXNjb2xhX3RlbV9vX2NvbWl0ZV9kZV9lbWVyZ2VuY2lhX2NyaWFkbykpKjEwMA0KYGBgDQoNCjQwIC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggdHJhaW5lZCBlbWVyZ2VuY3kgY29tbWl0dGVlDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvc19tZW1icm9zX2RvX2NvbWl0ZV9kZV9lbWVyZ2VuY2lhX2ZvcmFtX2NhcGFjaXRhZG9zP2ApKSoxMDANCmBgYA0KDQo0MSAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIHZpc2libGUgZW1lcmdlbmN5IGNvbnRhY3RzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGV4aXN0ZW1fbnVtZXJvc19kZV9jb250YWN0b19kZV9lbWVyZ2VuY2lhX2RldmlkYW1lbnRlX2FmaXhhZG9zKSkqMTAwDQpgYGANCg0KNDIgLSBEaXJlY3RvcnMgY2FwYWNpdHkgYnVpbGRpbmcNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSwgc2Nob29sX2RhdGFzZXQkY2xhc3NpZmljYW9fc2VjY2FvX1ZJX2FzcGVjdG9zX2VzcGVjaWZpY29zX3NvYnJlX2FfY2FwYWNpdGFjYW9fZG9zX2RpcmVjdG9yZXNfZGFzX2VzY29sYXMpKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKCBzY2hvb2xfZGF0YXNldCRjbGFzc2lmaWNhb19zZWNjYW9fVklfYXNwZWN0b3NfZXNwZWNpZmljb3Nfc29icmVfYV9jYXBhY2l0YWNhb19kb3NfZGlyZWN0b3Jlc19kYXNfZXNjb2xhcykpDQpgYGANCg0KNDMgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgd2l0aCBwcm9ibGVtIHJlc29sdXRpb24gcHJvamVjdCBhcHByb3ZlZCBieSBJRlANCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYG9fZGlyZWN0b3JfZGFfZXNjb2xhX3RlbV91bV9wcm9qZWN0b19kZV9yZXNvbHVjYW9fZGVfcHJvYmxlbWFzX2Fwcm92YWRvX3BlbG9fSUZQP2ApKSoxMDANCmBgYA0KDQo0NCAtIFBlcmNlbnRhZ2Ugb2Ygc2Nob29scyB3aXRoIHJlZmxleGl2ZSByZXBvcnQgb2YgdGhlIHByb2plY3QNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYG9fZGlyZWN0b3JfdGVtX3JlbGF0b3Jpb19yZWZsZXhpdm9fZG9fcHJvamVjdG8/YCkpKjEwMA0KYGBgDQoNCjQ1IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdpdGggY2FsZW5kZXJzIG9mIHRoZSBvcmRpbmFyeSBzZXNzaW9ucyBvZiB0aGUgY29sbGVjdGl2ZSBib2FyZA0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkYERpcmVjdG9yIGNhcGFjaXRhZG8gKFlFUy9OTylgLCBzY2hvb2xfZGF0YXNldCRgb19kaXJlY3Rvcl9kYV9lc2NvbGFfdGVtX29fY2FsZW5kYXJpb19kYXNfc2Vzc29lc19vcmRpbmFyaWFzX2RvX2NvbGVjdGl2b19kZV9kaXJlY2Nhbz9gKSkqMTAwDQpgYGANCg0KNDYgLSBQZXJjZW50YWdlIG9mIHNjaG9vbHMgd2l0aCB0aGUgY2FsZW5kZXIgZm9yIHRoZSBub3JtYXRpdmUgZG9jdW1lbnRzIHN0dWRpZXMNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGBEaXJlY3RvciBjYXBhY2l0YWRvIChZRVMvTk8pYCwgc2Nob29sX2RhdGFzZXQkYG9fZGlyZWN0b3JfZGFfZXNjb2xhX3RlbV9vX2NhbGVuZGFyaW9fZGVfZXN0dWRvX2Rvc19kb2N1bWVudG9zX25vcm1hdGl2b3M/YCkpKjEwMA0KYGBgDQoNCjQ3IC0gUGVyY2VudGFnZSBvZiBzY2hvb2xzIHdoaWNoIHRoZSBkaXJlY3RvciBoYXMgdGhlIG1pbnV0ZXMgb2YgdGhlIG5vcm1hdGl2ZSBkb2N1bWVudCBzdHVkaWVzDQoNCmBgYHtyfQ0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRgRGlyZWN0b3IgY2FwYWNpdGFkbyAoWUVTL05PKWAsIHNjaG9vbF9kYXRhc2V0JGBvX2RpcmVjdG9yX2RhX2VzY29sYV90ZW1fYXNfYWN0YXNfc2ludGVzZXNfZG9fZXN0dWRvX2Rvc19kb2N1bWVudG9zX25vcm1hdGl2b3M/YCkpKjEwMA0KYGBgDQoNCjQ4IC0gRGlyZWN0b3IgY2FwYWNpdHkgYnVpbGRpbmcNCg0KYGBge3J9DQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JHByb3ZpbmNpYSwgc2Nob29sX2RhdGFzZXQkY2Fsc3NpZmljYWNhb19zZWNjYW9fVklJX2FzcGVjdG9zX2VzcGVjaWZpY29zX3NvYnJlX2FfY2FwYWNpdGFjYW9fZG9zX2RpcmVjdG9yZXNfZGFzX2VzY29sYXMpKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKHNjaG9vbF9kYXRhc2V0JGNhbHNzaWZpY2FjYW9fc2VjY2FvX1ZJSV9hc3BlY3Rvc19lc3BlY2lmaWNvc19zb2JyZV9hX2NhcGFjaXRhY2FvX2Rvc19kaXJlY3RvcmVzX2Rhc19lc2NvbGFzKSkNCmBgYA0KDQpJbiB0ZXJtcyBvZiB0aGUgY2FwYWNpdHkgb2YgdGhlIGRpcmVjdG9ycywgb25seSA3JSBoYWQgZXhjZWxsZW50IHJhdGluZyBhbmQgOSUgZ29vZCByYXRpbmcsIDUwJSBoYWQgYmFkIHJhdGluZw0KDQo0OSAtIEZpbmFsIHJhdGluZw0KDQpgYGB7cn0NCnByb3AudGFibGUodGFibGUoc2Nob29sX2RhdGFzZXQkcHJvdmluY2lhLCBzY2hvb2xfZGF0YXNldCRjbGFzc2lmaWNhY2FvX2ZpbmFsKSkNCg0KcHJvcC50YWJsZSh0YWJsZShzY2hvb2xfZGF0YXNldCRjbGFzc2lmaWNhY2FvX2ZpbmFsKSkNCmBgYA0KDQpPdmVyYWxsLCBvbmx5IDIlIG9mIHRoZSBzY2hvb2xzIGhhdmUgZXhjZWxsZW50IHJhdGluZyBhbmQgb25seSAyNSUgd2l0aCBnb29kIHJhdGluZywgbWFqb3JpdHkgKDU3JSkgd2VyZSByYXRlZCBpbnN1ZmZpY2llbnQuDQo=