UTS KELOMPOK 2

Statistika Dasar

Logo

1 Soal 1 : Pentingnya Statistika dalam Kehidupan Sehari-Hari

Statistik sangat penting dalam berbagai aspek kehidupan dan Pekerjaan karena beberapa alasan, yaitu:

  • Pengambilan Keputusan

Statistik memungkinkan individu dan organisasi untuk membuat keputusan yang lebih baik dan lebih terinforması. Dengan data yang tepat dan analisis yang benar, keputusan dapat didasarkan pada bukti empiris daripada asumsi / spekulasi.

  • Identifikasi Pola dan tren

Melalui analisis statistik, kita dapat mengidentifikasi pola dan tren dalam data yang mungkin tidak terlihat dg kasat mata. Ini bisa termasuk tren pasar, Pola Perilaku konsumen, / hubungan antara variabel.

  • Uji Hipotesis

Statistik memungkinkan kita untuk menguji hipotesis / teori dan menggunakan data. Uji hipotesis ini seperti t-test / ANOVA dapat menentukan apakah perbedaan antara kelompok / variabel signifikan secara statistik.

  • Prediksi dan perencanaan

Dengan menggunakan model Statistik, kita dapat membuat prediksi tentang kejadian di masa depan berdasarkan data historis Ini sangat berguna dalam perencanaan bisnis, ramalan ekonomi & analisis resiko

  • Evaluasi Program dan kebijakan

Statistik digunakan untuk mengevaluasi efektivitas program/kebijakan. Dengan menganalisis data sebelum dan sesudah implementası, kita dapat menilai apakah perubahan yang dilakukan memiliki dampak yg diinginkan.

  • Penelitian dan pengembangan

Dalam Penelitian ilmiah dan pengembangan teknologi, statistik memainkan peran kunci dalam merancang eksperimen, menganalisis hasıl, dan menarik kesimpulan yan valid.

  • Kesehatan dan Kedokteran Statistik

Digunakan untuk menganalisis epidemiologi, uji klinis, dan penelitian medis. Ini membantu dalam memahami prevelensi penyakit, efektivitas, Pengobatan, dan faktor risiko.

1.1 Proses pengumpulan data

  • Survei dan Kuesioner : Metode yang melibatkan penyebaran data pertanyaan kepada para responden dan dilakukan secara langsung, telefon / online.

  • Wawancara : Metode yang mengharuskan peneliti berinteraksi secara langsung dengan para responden untuk mendapatkan sebuah informasi melalui pertanyaan verbal.

  • Observasi : Metode yang variabel melibatkan pengamatan secara langsung terhadap perilaku, kejadian, atau kondisi tertentu dalam lingkungan alami mereka.

  • Eksperimen : Metode yang melibatkan manipulasi data yang melibatkan manipulasi variabel untuk mengamati mengenai efeknya terhadap variabel lain.

  • Studi Kasus : Metode yang terfokuskan pada analisis mendalam dari satu atau bebrapa kasus dalam konteks tertentu.

  • Data Sekunder : Data yang dikumpulkan oleh peneliti lain dan tersedia untuk digunakan kembali dalam penelitian baru.

1.2 Jenis Data yang Diambil dan Diperoleh

Data yang diambil bisa berupa:

  • Data Kuantitatif: Informasi yang dapat diukur dalam bentuk angka atau numerik. Data ini cenderung lebih objektif karena menggunakan pengukuran yang memiliki satuan baku. Data kuantitatif mengacu pada kuantitas, frekuensi, dan besaran-besaran matematis lainnya. Contohnya seperti jumlah pelanggan yang memilih setiap menu.

  • Data Kualitatif: Informasi yang bersifat deskriptif, subjektif, dan tidak dapat diukur dengan angka. Data ini umumnya berkaitan dengan kualitas, sifat, atau karakteristik dari suatu fenomena. Data kualitatif disajikan tanpa merujuk pada satuan ukur tertentu, dan lebih fokus pada makna, interpretasi, atau konteks. Contohnya seperti komentar atau saran dari pelanggan tentang menu.

Data yang diperoleh bisa berupa:

  • Data Primer: Data yang dikumpulkan langsung dari sumbernya. Misalnya, hasil survei yang dilakukan oleh peneliti.

  • Data Sekunder: Data yang diperoleh dari sumber lain, seperti laporan penelitian sebelumnya, artikel, atau database publik.

1.3 Cara Menyajikan Data

Menyajikan data dengan cara yang tepat dapat membantu membuat informasi lebih mudah dipahami. Berikut adalah cara-cara menyajikan data untuk masing-masing metode pengumpulan data:

  • Survei dan Kuesioner
  1. Grafik atau Diagram

  2. Tabel Ringkasan

  3. Infografis

  • Wawancara
  1. Transkrip atau Kutipan Penting

  2. Peta Pikiran

  3. Tabel Kategori

  • Observasi
  1. Catatan Lapangan

  2. Diagram Alir atau Peta Aktivitas

  3. Tabel dan Grafik

  • Eksperimen
  1. Tabel Data Hasil Pengukuran

  2. Grafik atau Diagram Perbandingan

  3. Analisis Statistik

  • Studi Kasus
  1. Narasionalisasi

  2. Diagram atau Peta Konsep

  3. Ringkasan dalam Tabel

  • Data Sekunder
  1. Ringkasan Data Utama

  2. Infografis atau Diagram

  3. Komparatif Tabel

1.4 Contoh (Kepuasan Mahasiswa dalam memilih Metode Pembelajaran)

1.4.1 Pengumpulan Data

Pengumpulan data yang kami pakai adalah mengunakan metode survei dan kuesioner dimana pada metode ini kami dapat mengumpulkan data secara langsung dari responden yang memungkinkan analisis lebih mendalam terkait persepsi atau pengalaman mereka. Dan dapat membantu mendapatkan gambaran luas dari berbagai responden, sementara kuesioner memungkinkan kami untuk merancang pertanyaan spesifik yang relevan dengan tujuan penelitian. Tingkat Kepuasan:

  • Sangat tidak puas

  • Tidak puas

  • Cukup puas

  • Puas

  • Sangat puas

Contoh Data:

1.4.2 Jenis Data yang Diambil

Kami mengambil data secara kualitatif dimana proses pengumpulan data yang berfokus pada aspek deskriptif dan subjektif untuk menjawab pertanyaan” penelitian.

1.4.3 Metode Penyajian Data dan Analisis

## [1] "Nama"   "Daring" "Luring" "Hybrid"
Daring Frekuensi
cukup puas 3
puas 3
sangat puas 1
sangat tidak puas 1
tidak puas 2

Berdasarkan data tersebut, mayoritas mahasiswa memiliki pandangan yang bervariasi terhadap metode belajar daring. Beberapa merasa cukup puas, ada yang puas, dan lainnya merasa tidak puas atau sangat tidak puas. Hal ini menunjukkan bahwa metode daring mungkin tidak cocok untuk semua mahasiswa, tetapi menawarkan fleksibilitas yang dirasakan cukup baik oleh sebagian mahasiswa.

## [1] "Nama"   "Daring" "Luring" "Hybrid"

Berdasarkan data tersebut, sebagian besar mahasiswa merasa puas atau sangat puas dengan metode luring, sedangkan lainnya merasa cukup puas. Ini menandakan bahwa metode tatap muka atau luring cenderung memberikan pengalaman belajar yang lebih baik dalam hal pemahaman materi dan interaksi langsung dengan pengajar.

## [1] "Nama"   "Daring" "Luring" "Hybrid"

Dalam metode hybrid, pendapat mahasiswa juga bervariasi. Beberapa merasa puas , cukup puas, namun ada juga yang merasa tidak puas atau sangat tidak puas. Ini menunjukkan bahwa metode hybrid mungkin dapat memenuhi kebutuhan fleksibilitas sebagian mahasiswa, tetapi belum tentu memberikan kepuasan yang tinggi bagi semua mahasiswa.

2 SOAL 2 : Preferensi Mahasiswa dalam Memilih Metode Belajar (Daring, Luring, atau Hybrid) dan Alasan Dibalik Preferensi Tersebut

2.1 Metode Pengumpulan Data

Dalam metode pengumpulan data, kami menggunakan metode kuesioner. Di mana kami menyebarkan kuesioner kepada responden (mahasiswa) yang dijadikan sampel.Menurut Sugiyono, (2017:81) sampel adalah bagian dari populasi yang menjadi sumber data dalam penelitian, dimana populasi merupakan bagian dari jumlah karakteristik yang dimiliki. Kami mengambil 30 mahasiswa sebagai populasi. Untuk mengukur besarnya sampel, peneliti menggunakan metode Slovin yang dikutip dari Sugiyono (dalam L. Hidayat, 2019) :

\[ n = N/(1+N.e²)\\ n = 30/(1+30.(0.1)²)\\ n = 23,07\\ n ≈ 23 \]

Keterangan:

n = Jumlah sampel

N = Jumlah populasi

e = Tingkat kesalahan pengambilan sampel yang dikehendaki (asumsi sebesar 10%)

Kuesioner yang kami sebarkan hanya menggunakan 2 variabel pertanyaan, yaitu:

  1. Metode belajar apa yang lebih anda sukai?

    Pilihan Jawaban:

    • Daring
    • Luring
    • Hybrid
  2. Apa alasan utama Anda memilih metode belajar tersebut?

    Pilihan Jawaban:

    • Lebih efektif dalam memahami materi
    • Lebih fleksibel
    • Motivasi belajar lebih tinggi
    • Lebih mudah berinteraksi dengan dosen
    • Keseimbangan Belajar dan Aktivitas Lainnya

2.2 Jenis Data

Jenis Data yang kami pakai adalah Data Kualitatif karena pada data ini kita hanya terfokuskan pada preferensi metode pembelajaran dan juga alasan pemilihan metode tersebut. Data:

2.3 Alasan Pemilihan Metode Kuesioner

  1. Kami akan memiliki data yang valid dan akurat karena pada metode ini akan menghasilkan data yang valid dengan kondisi yang akan diteliti.

  2. Dengan pemilihan metode ini dapat meminimalkan kesalahan” dalam pengisian data oleh responden. Sehingga dapat mempermudah kami untuk mengolah data dengan jumlah yang besar

  3. Dengan metode ini dapat menghemat waktu dan biaya yang dikeluarkan untuk proses pengumpulan data.

  4. Dapat memudahkan kami untuk mengurangi pekerjaan tambahan pada proses analisis data, sehingga dapat menghindari adanya kekeliruan dalam pemrosesan data.

  5. Dengan penyajian pertanyaan yang relevan, menarik, terstruktur dapat meningkatkan partisipasi para responden untuk mengisi kuesioner

  6. Data yang dihasilkan dari kuesioner kami dapat menyimpulkan secara akurat dan mendukung adanya hasil kesimpulan yang tepat.

3 SOAL 3 Visualisasi dan Analisis

3.1 Visualisasi

## [1] "Nama"                "Metode.Pembelajaran" "Alasan"
## [1] "Nama"                "Metode.Pembelajaran" "Alasan"

3.2 Analisis

  1. Analisis Deskriptif Distribusi Metode Belajar:
  • Daring: Beberapa mahasiswa memilih metode daring karena alasan fleksibilitas, efektivitas pemahaman materi, efisiensi waktu dan biaya, motivasi belajar yang lebih tinggi, serta keseimbangan belajar dengan aktivitas lainnya.

  • Luring: Metode ini banyak dipilih karena kemudahan interaksi langsung dengan dosen, efektivitas dalam pemahaman materi, fleksibilitas, dan motivasi belajar yang lebih tinggi.

  • Hybrid: Metode hybrid lebih disukai untuk alasan fleksibilitas, keseimbangan antara belajar dan aktivitas lainnya, serta motivasi belajar yang tinggi.

Ada juga alasan secara umum di balik preferensi tersebut:

  • Alasan fleksibilitas muncul baik pada metode daring maupun hybrid, yang menunjukkan bahwa sebagian mahasiswa menganggap kedua metode ini memberikan keleluasaan dalam mengatur waktu dan tempat belajar.

  • Banyak mahasiswa memilih luring karena mereka merasa lebih mudah memahami materi dalam suasana belajar langsung.

  • Interaksi langsung dengan dosen menjadi alasan utama mengapa mahasiswa memilih metode luring, yang menunjukkan pentingnya kontak langsung dalam pembelajaran.

  • Metode daring dipilih oleh sebagian mahasiswa karena efisiensinya, terutama dalam menghemat waktu perjalanan dan biaya.

  • Mahasiswa yang memilih metode hybrid atau daring juga menyebutkan bahwa metode tersebut membantu meningkatkan motivasi belajar mereka.

  1. Interpretasi
  • Sebagian besar mahasiswa yang memilih metode luring merasa lebih terbantu dalam memahami materi dan interaksi langsung dengan dosen. Ini menunjukkan bahwa pengalaman belajar tatap muka masih dianggap lebih mendalam dan bermanfaat untuk memahami materi.

  • Metode daring dan hybrid banyak dipilih oleh mahasiswa yang membutuhkan fleksibilitas dalam mengatur waktu dan aktivitas mereka, terutama bagi mereka yang menginginkan keseimbangan antara studi dan kegiatan lain di luar kuliah.

  • Mahasiswa yang memilih hybrid merasa lebih termotivasi, mungkin karena metode ini memberikan variasi pengalaman belajar, baik daring maupun tatap muka, sehingga tidak monoton.

3.3 Kesimpulan dari Data yang Dihasilkan

  1. Metode Belajar yang Paling Banyak Dipilih

Luring menjadi pilihan yang cukup dominan mahasiswa. Banyak yang memilih metode ini karena efektivitas dalam memahami materi dan kemudahan interaksi dengan dosen Sehingga sebagian besar mahasiswa masih merasa bahwa pengalaman belajar tatap muka memberikan pemahaman yang lebih baik dan mendukung interaksi langsung dengan pengajar.

  1. Alasan Utama untuk Setiap Metode

    • Daring : Daring dipilih karena alasan fleksibilitas dan efisiensi dalam waktu dan biaya. Mahasiswa yang memilih metode ini cenderung menghargai kebebasan dalam mengatur waktu belajar dan menghindari biaya serta waktu perjalanan.

    • Luring : Metode ini banyak dipilih untuk kemudahan berinteraksi dengan dosen dan efektivitas dalam pemahaman materi. Mahasiswa yang memilih luring lebih mengutamakan pengalaman belajar yang mendalam dan merasa terbantu dengan interaksi langsung dalam kelas tatap muka.

    • Hybrid : Metode hybrid cukup sering dipilih karena fleksibilitas dan kemampuan untuk menyeimbangkan antara belajar dan aktivitas lainnya. Beberapa mahasiswa juga menganggap hybrid meningkatkan motivasi belajar, mungkin karena adanya variasi dalam pendekatan belajar (kombinasi antara daring dan luring).

  2. Kecenderungan Alasan Berdasarkan Metode

    • Fleksibilitas adalah alasan umum yang muncul pada metode Daring dan Hybrid, dengan ini menunjukkan bahwa kedua metode ini diminati oleh mahasiswa yang membutuhkan pengaturan waktu yang fleksibel.

    • Interaksi dengan Dosen dan Efektivitas dalam Pemahaman Materi adalah alasan yang paling banyak diasosiasikan dengan metode Luring. Ini menunjukkan bahwa mahasiswa masih menghargai kontak langsung dalam pembelajaran dan merasa lebih terbantu dalam memahami materi melalui kelas tatap muka.

    • Keseimbangan antara Belajar dan Aktivitas Lainnya adalah alasan utama pada metode Hybrid, mengindikasikan bahwa metode ini cocok bagi mereka yang ingin mengatur kegiatan lain di luar akademik.

Kesimpulan Secara keseluruhan, data diatas menunjukkan bahwa setiap metode belajar memiliki kelebihan yang sesuai dengan kebutuhan tertentu. Metode Luring masih dianggap sebagai metode terbaik dalam hal pemahaman materi dan interaksi, sedangkan metode Daring juga menawarkan fleksibilitas yang diinginkan oleh sebagian mahasiswa. lau untuk metode Hybrid menjadi opsi yang seimbang diantara kedua metode tersebut, karena metode ini memberikan fleksibilitas sekaligus interaksi secara langsung, sehingga memiliki kecocokan bagi mahasiswa yang membutuhkan kedua metode itu.

3.4 Cara Penyajian Data dalam Menarik Kesimpulan

Diagram lingkaran dan diagram donat membantu memahami seberapa besar porsi setiap metode belajar dibandingkan dengan total keseluruhan.Dengan demikian, kita bisa langsung melihat metode belajar mana yang paling banyak atau paling sedikit dipilih oleh mahasiswa. Diagram ini memberikan gambaran yang cepat dan intuitif untuk mengetahui apakah ada dominasi metode tertentu atau sebaliknya, apakah pilihan metode tersebar secara merata apa tidak.

Dengan untuk diagram batang, kami bisa melihat secara rinci alasan-alasan utama yang dipilih untuk setiap metode belajar. Misalnya, diagram batang dapat menunjukkan bahwa alasan “Fleksibilitas” paling banyak muncul pada metode Daring dan Hybrid, sedangkan “Interaksi dengan Dosen” paling banyak pada metode Luring. Diagram batang berkelompok membantu memahami bagaimana alasan-alasan ini bervariasi antar metode. Dengan ini dapat mempermudah dalam mengidentifikasi karakteristik atau kelebihan khusus dari setiap metode belajar yang diangkat. Dari sini, kita bisa menarik kesimpulan tentang aspek apa yang paling penting bagi mahasiswa dalam memilih metode belajar tertentu.

LS0tDQp0aXRsZTogIlVUUyBLRUxPTVBPSyAyIg0Kc3VidGl0bGU6ICJTdGF0aXN0aWthIERhc2FyIg0KYXV0aG9yOiANCiAgLSAiSXNuYWluaSBOdXIgSGFzYW5haCAoNTIyNDAwMDUpIg0KICAtICJNLiBBbGZheWVkIFNhZmFhZCAoNTIyNDAwMDkpIg0KICAtICJXaGlyZHlhbmEgU2hhbGZhIEF5dWJpICg1MjI0MDAxMCkiDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlICgxKS5jc3MiDQogICAgcGFyYW1zOg0KICBlY2hvOiBmYWxzZQ0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQo8aW1nIHNyYz0iQzovVXNlcnMvQVNVUy9EZXNrdG9wL1N0YXRpc3Rpa2EgRGFzYXIvZm90by5wbmciIGFsdD0iTG9nbyIgaWQ9ImxvZ28tdXRhbWEiIHN0eWxlPSJ3aWR0aDozMDBweDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiLz4NCg0KIyBTb2FsIDEgOiBQZW50aW5nbnlhIFN0YXRpc3Rpa2EgZGFsYW0gS2VoaWR1cGFuIFNlaGFyaS1IYXJpDQoNClN0YXRpc3RpayBzYW5nYXQgcGVudGluZyBkYWxhbSBiZXJiYWdhaSBhc3BlayBrZWhpZHVwYW4gZGFuIFBla2VyamFhbg0Ka2FyZW5hIGJlYmVyYXBhIGFsYXNhbiwgeWFpdHU6DQoNCi0gICBQZW5nYW1iaWxhbiBLZXB1dHVzYW4NCg0KU3RhdGlzdGlrIG1lbXVuZ2tpbmthbiBpbmRpdmlkdSBkYW4gb3JnYW5pc2FzaSB1bnR1ayBtZW1idWF0IGtlcHV0dXNhbg0KeWFuZyBsZWJpaCBiYWlrIGRhbiBsZWJpaCB0ZXJpbmZvcm1hc8SxLiBEZW5nYW4gZGF0YSB5YW5nIHRlcGF0IGRhbg0KYW5hbGlzaXMgeWFuZyBiZW5hciwga2VwdXR1c2FuIGRhcGF0IGRpZGFzYXJrYW4gcGFkYSBidWt0aSBlbXBpcmlzDQpkYXJpcGFkYSBhc3Vtc2kgLyBzcGVrdWxhc2kuDQoNCi0gICBJZGVudGlmaWthc2kgUG9sYSBkYW4gdHJlbg0KDQpNZWxhbHVpIGFuYWxpc2lzIHN0YXRpc3Rpaywga2l0YSBkYXBhdCBtZW5naWRlbnRpZmlrYXNpIHBvbGEgZGFuIHRyZW4NCmRhbGFtIGRhdGEgeWFuZyBtdW5na2luIHRpZGFrIHRlcmxpaGF0IGRnIGthc2F0IG1hdGEuIEluaSBiaXNhIHRlcm1hc3VrDQp0cmVuIHBhc2FyLCBQb2xhIFBlcmlsYWt1IGtvbnN1bWVuLCAvIGh1YnVuZ2FuIGFudGFyYSB2YXJpYWJlbC4NCg0KLSAgIFVqaSBIaXBvdGVzaXMNCg0KU3RhdGlzdGlrIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbmd1amkgaGlwb3Rlc2lzIC8gdGVvcmkgZGFuDQptZW5nZ3VuYWthbiBkYXRhLiBVamkgaGlwb3Rlc2lzIGluaSBzZXBlcnRpIHQtdGVzdCAvIEFOT1ZBIGRhcGF0DQptZW5lbnR1a2FuIGFwYWthaCBwZXJiZWRhYW4gYW50YXJhIGtlbG9tcG9rIC8gdmFyaWFiZWwgc2lnbmlmaWthbiBzZWNhcmENCnN0YXRpc3Rpay4NCg0KLSAgIFByZWRpa3NpIGRhbiBwZXJlbmNhbmFhbg0KDQpEZW5nYW4gbWVuZ2d1bmFrYW4gbW9kZWwgU3RhdGlzdGlrLCBraXRhIGRhcGF0IG1lbWJ1YXQgcHJlZGlrc2kgdGVudGFuZw0Ka2VqYWRpYW4gZGkgbWFzYSBkZXBhbiBiZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzIEluaSBzYW5nYXQgYmVyZ3VuYQ0KZGFsYW0gcGVyZW5jYW5hYW4gYmlzbmlzLCByYW1hbGFuIGVrb25vbWkgJiBhbmFsaXNpcyByZXNpa28NCg0KLSAgIEV2YWx1YXNpIFByb2dyYW0gZGFuIGtlYmlqYWthbg0KDQpTdGF0aXN0aWsgZGlndW5ha2FuIHVudHVrIG1lbmdldmFsdWFzaSBlZmVrdGl2aXRhcyBwcm9ncmFtL2tlYmlqYWthbi4NCkRlbmdhbiBtZW5nYW5hbGlzaXMgZGF0YSBzZWJlbHVtIGRhbiBzZXN1ZGFoIGltcGxlbWVudGFzxLEsIGtpdGEgZGFwYXQNCm1lbmlsYWkgYXBha2FoIHBlcnViYWhhbiB5YW5nIGRpbGFrdWthbiBtZW1pbGlraSBkYW1wYWsgeWcgZGlpbmdpbmthbi4NCg0KLSAgIFBlbmVsaXRpYW4gZGFuIHBlbmdlbWJhbmdhbg0KDQpEYWxhbSBQZW5lbGl0aWFuIGlsbWlhaCBkYW4gcGVuZ2VtYmFuZ2FuIHRla25vbG9naSwgc3RhdGlzdGlrIG1lbWFpbmthbg0KcGVyYW4ga3VuY2kgZGFsYW0gbWVyYW5jYW5nIGVrc3BlcmltZW4sIG1lbmdhbmFsaXNpcyBoYXPEsWwsIGRhbiBtZW5hcmlrDQprZXNpbXB1bGFuIHlhbiB2YWxpZC4NCg0KLSAgIEtlc2VoYXRhbiBkYW4gS2Vkb2t0ZXJhbiBTdGF0aXN0aWsNCg0KRGlndW5ha2FuIHVudHVrIG1lbmdhbmFsaXNpcyBlcGlkZW1pb2xvZ2ksIHVqaSBrbGluaXMsIGRhbiBwZW5lbGl0aWFuDQptZWRpcy4gSW5pIG1lbWJhbnR1IGRhbGFtIG1lbWFoYW1pIHByZXZlbGVuc2kgcGVueWFraXQsIGVmZWt0aXZpdGFzLA0KUGVuZ29iYXRhbiwgZGFuIGZha3RvciByaXNpa28uDQoNCiMjIFByb3NlcyBwZW5ndW1wdWxhbiBkYXRhDQoNCi0gICBTdXJ2ZWkgZGFuIEt1ZXNpb25lciA6IE1ldG9kZSB5YW5nIG1lbGliYXRrYW4gcGVueWViYXJhbiBkYXRhDQogICAgcGVydGFueWFhbiBrZXBhZGEgcGFyYSByZXNwb25kZW4gZGFuIGRpbGFrdWthbiBzZWNhcmEgbGFuZ3N1bmcsDQogICAgdGVsZWZvbiAvIG9ubGluZS4NCg0KLSAgIFdhd2FuY2FyYSA6IE1ldG9kZSB5YW5nIG1lbmdoYXJ1c2thbiBwZW5lbGl0aSBiZXJpbnRlcmFrc2kgc2VjYXJhDQogICAgbGFuZ3N1bmcgZGVuZ2FuIHBhcmEgcmVzcG9uZGVuIHVudHVrIG1lbmRhcGF0a2FuIHNlYnVhaCBpbmZvcm1hc2kNCiAgICBtZWxhbHVpIHBlcnRhbnlhYW4gdmVyYmFsLg0KDQotICAgT2JzZXJ2YXNpIDogTWV0b2RlIHlhbmcgdmFyaWFiZWwgbWVsaWJhdGthbiBwZW5nYW1hdGFuIHNlY2FyYQ0KICAgIGxhbmdzdW5nIHRlcmhhZGFwIHBlcmlsYWt1LCBrZWphZGlhbiwgYXRhdSBrb25kaXNpIHRlcnRlbnR1IGRhbGFtDQogICAgbGluZ2t1bmdhbiBhbGFtaSBtZXJla2EuDQoNCi0gICBFa3NwZXJpbWVuIDogTWV0b2RlIHlhbmcgbWVsaWJhdGthbiBtYW5pcHVsYXNpIGRhdGEgeWFuZyBtZWxpYmF0a2FuDQogICAgbWFuaXB1bGFzaSB2YXJpYWJlbCB1bnR1ayBtZW5nYW1hdGkgbWVuZ2VuYWkgZWZla255YSB0ZXJoYWRhcA0KICAgIHZhcmlhYmVsIGxhaW4uDQoNCi0gICBTdHVkaSBLYXN1cyA6IE1ldG9kZSB5YW5nIHRlcmZva3Vza2FuIHBhZGEgYW5hbGlzaXMgbWVuZGFsYW0gZGFyaQ0KICAgIHNhdHUgYXRhdSBiZWJyYXBhIGthc3VzIGRhbGFtIGtvbnRla3MgdGVydGVudHUuDQoNCi0gICBEYXRhIFNla3VuZGVyIDogRGF0YSB5YW5nIGRpa3VtcHVsa2FuIG9sZWggcGVuZWxpdGkgbGFpbiBkYW4NCiAgICB0ZXJzZWRpYSB1bnR1ayBkaWd1bmFrYW4ga2VtYmFsaSBkYWxhbSBwZW5lbGl0aWFuIGJhcnUuDQoNCiMjIEplbmlzIERhdGEgeWFuZyBEaWFtYmlsIGRhbiBEaXBlcm9sZWgNCg0KRGF0YSB5YW5nIGRpYW1iaWwgYmlzYSBiZXJ1cGE6DQoNCi0gICBEYXRhIEt1YW50aXRhdGlmOiBJbmZvcm1hc2kgeWFuZyBkYXBhdCBkaXVrdXIgZGFsYW0gYmVudHVrIGFuZ2thDQogICAgYXRhdSBudW1lcmlrLiBEYXRhIGluaSBjZW5kZXJ1bmcgbGViaWggb2JqZWt0aWYga2FyZW5hIG1lbmdndW5ha2FuDQogICAgcGVuZ3VrdXJhbiB5YW5nIG1lbWlsaWtpIHNhdHVhbiBiYWt1LiBEYXRhIGt1YW50aXRhdGlmIG1lbmdhY3UgcGFkYQ0KICAgIGt1YW50aXRhcywgZnJla3VlbnNpLCBkYW4gYmVzYXJhbi1iZXNhcmFuIG1hdGVtYXRpcyBsYWlubnlhLg0KICAgIENvbnRvaG55YSBzZXBlcnRpIGp1bWxhaCBwZWxhbmdnYW4geWFuZyBtZW1pbGloIHNldGlhcCBtZW51Lg0KDQotICAgRGF0YSBLdWFsaXRhdGlmOiBJbmZvcm1hc2kgeWFuZyBiZXJzaWZhdCBkZXNrcmlwdGlmLCBzdWJqZWt0aWYsIGRhbg0KICAgIHRpZGFrIGRhcGF0IGRpdWt1ciBkZW5nYW4gYW5na2EuIERhdGEgaW5pIHVtdW1ueWEgYmVya2FpdGFuIGRlbmdhbg0KICAgIGt1YWxpdGFzLCBzaWZhdCwgYXRhdSBrYXJha3RlcmlzdGlrIGRhcmkgc3VhdHUgZmVub21lbmEuIERhdGENCiAgICBrdWFsaXRhdGlmIGRpc2FqaWthbiB0YW5wYSBtZXJ1anVrIHBhZGEgc2F0dWFuIHVrdXIgdGVydGVudHUsIGRhbg0KICAgIGxlYmloIGZva3VzIHBhZGEgbWFrbmEsIGludGVycHJldGFzaSwgYXRhdSBrb250ZWtzLiBDb250b2hueWENCiAgICBzZXBlcnRpIGtvbWVudGFyIGF0YXUgc2FyYW4gZGFyaSBwZWxhbmdnYW4gdGVudGFuZyBtZW51Lg0KDQpEYXRhIHlhbmcgZGlwZXJvbGVoIGJpc2EgYmVydXBhOg0KDQotICAgRGF0YSBQcmltZXI6IERhdGEgeWFuZyBkaWt1bXB1bGthbiBsYW5nc3VuZyBkYXJpIHN1bWJlcm55YS4NCiAgICBNaXNhbG55YSwgaGFzaWwgc3VydmVpIHlhbmcgZGlsYWt1a2FuIG9sZWggcGVuZWxpdGkuDQoNCi0gICBEYXRhIFNla3VuZGVyOiBEYXRhIHlhbmcgZGlwZXJvbGVoIGRhcmkgc3VtYmVyIGxhaW4sIHNlcGVydGkgbGFwb3Jhbg0KICAgIHBlbmVsaXRpYW4gc2ViZWx1bW55YSwgYXJ0aWtlbCwgYXRhdSBkYXRhYmFzZSBwdWJsaWsuDQoNCiMjIENhcmEgTWVueWFqaWthbiBEYXRhDQoNCk1lbnlhamlrYW4gZGF0YSBkZW5nYW4gY2FyYSB5YW5nIHRlcGF0IGRhcGF0IG1lbWJhbnR1IG1lbWJ1YXQgaW5mb3JtYXNpDQpsZWJpaCBtdWRhaCBkaXBhaGFtaS4gQmVyaWt1dCBhZGFsYWggY2FyYS1jYXJhIG1lbnlhamlrYW4gZGF0YSB1bnR1aw0KbWFzaW5nLW1hc2luZyBtZXRvZGUgcGVuZ3VtcHVsYW4gZGF0YToNCg0KLSAgIFN1cnZlaSBkYW4gS3Vlc2lvbmVyDQoNCmEuICBHcmFmaWsgYXRhdSBEaWFncmFtDQoNCmIuICBUYWJlbCBSaW5na2FzYW4NCg0KYy4gIEluZm9ncmFmaXMNCg0KLSAgIFdhd2FuY2FyYQ0KDQphLiAgVHJhbnNrcmlwIGF0YXUgS3V0aXBhbiBQZW50aW5nDQoNCmIuICBQZXRhIFBpa2lyYW4NCg0KYy4gIFRhYmVsIEthdGVnb3JpDQoNCi0gICBPYnNlcnZhc2kNCg0KYS4gIENhdGF0YW4gTGFwYW5nYW4NCg0KYi4gIERpYWdyYW0gQWxpciBhdGF1IFBldGEgQWt0aXZpdGFzDQoNCmMuICBUYWJlbCBkYW4gR3JhZmlrDQoNCi0gICBFa3NwZXJpbWVuDQoNCmEuICBUYWJlbCBEYXRhIEhhc2lsIFBlbmd1a3VyYW4NCg0KYi4gIEdyYWZpayBhdGF1IERpYWdyYW0gUGVyYmFuZGluZ2FuDQoNCmMuICBBbmFsaXNpcyBTdGF0aXN0aWsNCg0KLSAgIFN0dWRpIEthc3VzDQoNCmEuICBOYXJhc2lvbmFsaXNhc2kNCg0KYi4gIERpYWdyYW0gYXRhdSBQZXRhIEtvbnNlcA0KDQpjLiAgUmluZ2thc2FuIGRhbGFtIFRhYmVsDQoNCi0gICBEYXRhIFNla3VuZGVyDQoNCmEuICBSaW5na2FzYW4gRGF0YSBVdGFtYQ0KDQpiLiAgSW5mb2dyYWZpcyBhdGF1IERpYWdyYW0NCg0KYy4gIEtvbXBhcmF0aWYgVGFiZWwNCg0KIyMgQ29udG9oIChLZXB1YXNhbiBNYWhhc2lzd2EgZGFsYW0gbWVtaWxpaCBNZXRvZGUgUGVtYmVsYWphcmFuKQ0KDQojIyMgUGVuZ3VtcHVsYW4gRGF0YQ0KDQpQZW5ndW1wdWxhbiBkYXRhIHlhbmcga2FtaSBwYWthaSBhZGFsYWggbWVuZ3VuYWthbiBtZXRvZGUgc3VydmVpIGRhbg0Ka3Vlc2lvbmVyIGRpbWFuYSBwYWRhIG1ldG9kZSBpbmkga2FtaSBkYXBhdCBtZW5ndW1wdWxrYW4gZGF0YSBzZWNhcmENCmxhbmdzdW5nIGRhcmkgcmVzcG9uZGVuIHlhbmcgbWVtdW5na2lua2FuIGFuYWxpc2lzIGxlYmloIG1lbmRhbGFtDQp0ZXJrYWl0IHBlcnNlcHNpIGF0YXUgcGVuZ2FsYW1hbiBtZXJla2EuIERhbiBkYXBhdCBtZW1iYW50dSBtZW5kYXBhdGthbg0KZ2FtYmFyYW4gbHVhcyBkYXJpIGJlcmJhZ2FpIHJlc3BvbmRlbiwgc2VtZW50YXJhIGt1ZXNpb25lciBtZW11bmdraW5rYW4NCmthbWkgdW50dWsgbWVyYW5jYW5nIHBlcnRhbnlhYW4gc3Blc2lmaWsgeWFuZyByZWxldmFuIGRlbmdhbiB0dWp1YW4NCnBlbmVsaXRpYW4uIFRpbmdrYXQgS2VwdWFzYW46DQoNCi0gICBTYW5nYXQgdGlkYWsgcHVhcw0KDQotICAgVGlkYWsgcHVhcw0KDQotICAgQ3VrdXAgcHVhcw0KDQotICAgUHVhcw0KDQotICAgU2FuZ2F0IHB1YXMNCg0KQ29udG9oIERhdGE6DQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KRGF0YV9TMSA9IHJlYWQuY3N2KCJDOi9Vc2Vycy9BU1VTL0Rlc2t0b3AvU3RhdGlzdGlrYSBEYXNhci9EYXRhdTUuY3N2Iiwgc2VwID0gIjsiKQ0KaGVhZChEYXRhX1MxKQ0KYGBgDQoNCiMjIyBKZW5pcyBEYXRhIHlhbmcgRGlhbWJpbA0KDQpLYW1pIG1lbmdhbWJpbCBkYXRhIHNlY2FyYSBrdWFsaXRhdGlmIGRpbWFuYSBwcm9zZXMgcGVuZ3VtcHVsYW4gZGF0YQ0KeWFuZyBiZXJmb2t1cyBwYWRhIGFzcGVrIGRlc2tyaXB0aWYgZGFuIHN1Ympla3RpZiB1bnR1ayBtZW5qYXdhYg0KcGVydGFueWFhbuKAnSBwZW5lbGl0aWFuLg0KDQojIyMgTWV0b2RlIFBlbnlhamlhbiBEYXRhIGRhbiBBbmFsaXNpcw0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZHBseXIpDQojIE1lbWVyaWtzYSBuYW1hIGtvbG9tIGRhbGFtIGRhdGFzZXQNCm5hbWVzKERhdGFfUzEpDQoNCiMgTWVuZ2hpdHVuZyBmcmVrdWVuc2kNCmZyZWt1ZW5zaSA8LSB0YWJsZShEYXRhX1MxJERhcmluZykNCg0KIyBNZW5nb252ZXJzaSB0YWJlbCBmcmVrdWVuc2kga2UgZGFsYW0gZGF0YSBmcmFtZQ0KdGFibGVfZGlzdHJpYnVzaTEgPC0gYXMuZGF0YS5mcmFtZShmcmVrdWVuc2kpDQoNCiMgTWVuZ2dhbnRpIG5hbWEga29sb20NCm5hbWVzKHRhYmxlX2Rpc3RyaWJ1c2kxKSA8LSBjKCJEYXJpbmciLCAiRnJla3VlbnNpIikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkaXN0cmlidXNpDQprbml0cjo6a2FibGUodGFibGVfZGlzdHJpYnVzaTEpDQpgYGANCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5IHlhbmcgZGlwZXJsdWthbg0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCg0KIyBNZW1idWF0IGRpYWdyYW0gbGluZ2thcmFuIGRlbmdhbiBwbG90bHkNCnBsb3RfbHkodGFibGVfZGlzdHJpYnVzaTEsIA0KICAgICAgICBsYWJlbHMgPSB+RGFyaW5nLCANCiAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgIHR5cGUgPSAncGllJywgDQogICAgICAgIHRleHRpbmZvID0gJ2xhYmVsK3BlcmNlbnQnLCAgICAgICAjIE1lbmFtcGlsa2FuIGxhYmVsIGRhbiBwZXJzZW50YXNlDQogICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbiA9ICdyYWRpYWwnLCAjIE9yaWVudGFzaSB0ZWtzIGRpIGRhbGFtIGlyaXNhbg0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IGJyZXdlci5wYWwobiA9IG5yb3codGFibGVfZGlzdHJpYnVzaTEpLCBuYW1lID0gIlB1QnUiKSkpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiRGlhZ3JhbSBUaW5na2F0IEtlcHVhc2FuIE1ldG9kZSBQZW1iZWxhamFyYW4gRGFyaW5nIiwNCiAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKSAgICAgICAgICAgICAgICMgTWVuYW1waWxrYW4gbGVnZW5kYQ0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KDQojIE1lbWJ1YXQgZGlhZ3JhbSBiYXRhbmcgZGVuZ2FuIGdncGxvdDINCnAgPC0gZ2dwbG90KHRhYmxlX2Rpc3RyaWJ1c2kxLCBhZXMoeCA9IGBEYXJpbmdgLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnJla3VlbnNpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gYERhcmluZ2ApKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBGcmVrdWVuc2kpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAxLjEpLCAgIyBNZW5nYXR1ciBwb3Npc2kgbGFiZWwNCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDMpICsgICMgTWVuZ2F0dXIgd2FybmEgZGFuIHVrdXJhbiBsYWJlbA0KICBsYWJzKHRpdGxlID0gIkRpYWdyYW0gQmF0YW5nIFRpbmdrYXQgS2VwdWFzYW4gTWV0b2RlIFBlbWJlbGFqYXJhbiBEYXJpbmciLA0KICAgICAgIHggPSAiSHlicmlkIiwNCiAgICAgICB5ID0gIkZyZWt1ZW5zaSIpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJHcmV5cyIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAgICAgIyBNZW55ZW1idW55aWthbiBsZWdlbmRhDQogIGNvb3JkX2ZsaXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVtYnVhdCBkaWFncmFtIG1lbmphZGkgaG9yaXpvbnRhbA0KDQojIE1lbmdvbnZlcnNpIGdncGxvdCBtZW5qYWRpIHBsb3RseSB1bnR1ayBpbnRlcmFrdGlmDQpwbG90bHlfcGxvdCA8LSBnZ3Bsb3RseShwKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QgaW50ZXJha3RpZg0KcGxvdGx5X3Bsb3QNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gZG9uYXQgZGVuZ2FuIHBsb3RseQ0KcGxvdF9seSh0YWJsZV9kaXN0cmlidXNpMSwgDQogICAgICAgIGxhYmVscyA9IH5EYXJpbmcgLCANCiAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgIHR5cGUgPSAncGllJywgDQogICAgICAgIHRleHRpbmZvID0gJ2xhYmVsK3BlcmNlbnQnLCAgICAgICAgIyBNZW5hbXBpbGthbiBsYWJlbCBkYW4gcGVyc2VudGFzZQ0KICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb24gPSAncmFkaWFsJywgICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgIGhvbGUgPSAwLjQsICAgICAgICAgICAgICAgICAgICAgICAgIyBNZW5nYXR1ciB1a3VyYW4gbHViYW5nIA0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gbnJvdyh0YWJsZV9kaXN0cmlidXNpMSksIG5hbWUgPSAiR25CdSIpKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJEaWFncmFtIERvbmF0IFRpbmdrYXQgS2VwdWFzYW4gTWV0b2RlIFBlbWJlbGFqYXJhbiBEYXJpbmciLA0KICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpICAgICAgICAgICAgICAgICMgTWVuYW1waWxrYW4gbGVnZW5kYQ0KYGBgDQoNCkJlcmRhc2Fya2FuIGRhdGEgdGVyc2VidXQsIG1heW9yaXRhcyBtYWhhc2lzd2EgbWVtaWxpa2kgcGFuZGFuZ2FuIHlhbmcgYmVydmFyaWFzaSB0ZXJoYWRhcCBtZXRvZGUgYmVsYWphciBkYXJpbmcuIEJlYmVyYXBhIG1lcmFzYSBjdWt1cCBwdWFzLCBhZGEgeWFuZyBwdWFzLCBkYW4gbGFpbm55YSBtZXJhc2EgdGlkYWsgcHVhcyBhdGF1IHNhbmdhdCB0aWRhayBwdWFzLiBIYWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIG1ldG9kZSBkYXJpbmcgbXVuZ2tpbiB0aWRhayBjb2NvayB1bnR1ayBzZW11YSBtYWhhc2lzd2EsIHRldGFwaSBtZW5hd2Fya2FuIGZsZWtzaWJpbGl0YXMgeWFuZyBkaXJhc2FrYW4gY3VrdXAgYmFpayBvbGVoIHNlYmFnaWFuIG1haGFzaXN3YS4NCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIE1lbWVyaWtzYSBuYW1hIGtvbG9tIGRhbGFtIGRhdGFzZXQNCm5hbWVzKERhdGFfUzEpDQoNCiMgTWVuZ2hpdHVuZyBmcmVrdWVuc2kNCmZyZWt1ZW5zaSA8LSB0YWJsZShEYXRhX1MxJEx1cmluZykNCg0KIyBNZW5nb252ZXJzaSB0YWJlbCBmcmVrdWVuc2kga2UgZGFsYW0gZGF0YSBmcmFtZQ0KdGFibGVfZGlzdHJpYnVzaTQgPC0gYXMuZGF0YS5mcmFtZShmcmVrdWVuc2kpDQoNCiMgTWVuZ2dhbnRpIG5hbWEga29sb20NCm5hbWVzKHRhYmxlX2Rpc3RyaWJ1c2k0KSA8LSBjKCJMdXJpbmciLCAiRnJla3VlbnNpIikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkaXN0cmlidXNpDQp0YWJsZV9kaXN0cmlidXNpNA0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQoNCiMgTWVtYnVhdCBkaWFncmFtIGxpbmdrYXJhbiBkZW5nYW4gcGxvdGx5DQpwbG90X2x5KHRhYmxlX2Rpc3RyaWJ1c2k0LCANCiAgICAgICAgbGFiZWxzID0gfkx1cmluZywgDQogICAgICAgIHZhbHVlcyA9IH5GcmVrdWVuc2ksIA0KICAgICAgICB0eXBlID0gJ3BpZScsIA0KICAgICAgICB0ZXh0aW5mbyA9ICdsYWJlbCtwZXJjZW50JywgICAgICAgIyBNZW5hbXBpbGthbiBsYWJlbCBkYW4gcGVyc2VudGFzZQ0KICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb24gPSAncmFkaWFsJywgIyBPcmllbnRhc2kgdGVrcyBkaSBkYWxhbSBpcmlzYW4NCiAgICAgICAgbWFya2VyID0gbGlzdChjb2xvcnMgPSBicmV3ZXIucGFsKG4gPSBucm93KHRhYmxlX2Rpc3RyaWJ1c2k0KSwgbmFtZSA9ICJQdUJ1R24iKSkpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiRGlhZ3JhbSBUaW5na2F0IEtlcHVhc2FuIE1ldG9kZSBQZW1iZWxhamFyYW4gTHVyaW5nIiwNCiAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKSAgICAgICAgICAgICAgICMgTWVuYW1waWxrYW4gbGVnZW5kYQ0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KDQojIE1lbWJ1YXQgZGlhZ3JhbSBiYXRhbmcgZGVuZ2FuIGdncGxvdDINCnAgPC0gZ2dwbG90KHRhYmxlX2Rpc3RyaWJ1c2k0LCBhZXMoeCA9IGBMdXJpbmdgLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnJla3VlbnNpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gYEx1cmluZ2ApKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBGcmVrdWVuc2kpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAxLjEpLCAgIyBNZW5nYXR1ciBwb3Npc2kgbGFiZWwNCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDMpICsgICMgTWVuZ2F0dXIgd2FybmEgZGFuIHVrdXJhbiBsYWJlbA0KICBsYWJzKHRpdGxlID0gIkRpYWdyYW0gQmF0YW5nIFRpbmdrYXQgS2VwdWFzYW4gTWV0b2RlIFBlbWJlbGFqYXJhbiBMdXJpbmciLA0KICAgICAgIHggPSAiSHlicmlkIiwNCiAgICAgICB5ID0gIkZyZWt1ZW5zaSIpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJHbkJ1IikgKyAgIyBNZW5nZ3VuYWthbiBwYWxldCB3YXJuYQ0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgICAgICAjIE1lbnllbWJ1bnlpa2FuIGxlZ2VuZGENCiAgY29vcmRfZmxpcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNZW1idWF0IGRpYWdyYW0gbWVuamFkaSBob3Jpem9udGFsDQoNCiMgTWVuZ29udmVyc2kgZ2dwbG90IG1lbmphZGkgcGxvdGx5IHVudHVrIGludGVyYWt0aWYNCnBsb3RseV9wbG90IDwtIGdncGxvdGx5KHApDQoNCiMgTWVuYW1waWxrYW4gcGxvdCBpbnRlcmFrdGlmDQpwbG90bHlfcGxvdA0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkocGxvdGx5KQ0KDQojIE1lbWJ1YXQgZGlhZ3JhbSBkb25hdCBkZW5nYW4gcGxvdGx5DQpwbG90X2x5KHRhYmxlX2Rpc3RyaWJ1c2k0LCANCiAgICAgICAgbGFiZWxzID0gfkx1cmluZyAsIA0KICAgICAgICB2YWx1ZXMgPSB+RnJla3VlbnNpLCANCiAgICAgICAgdHlwZSA9ICdwaWUnLCANCiAgICAgICAgdGV4dGluZm8gPSAnbGFiZWwrcGVyY2VudCcsICAgICAgICAjIE1lbmFtcGlsa2FuIGxhYmVsIGRhbiBwZXJzZW50YXNlDQogICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbiA9ICdyYWRpYWwnLCAgIyBPcmllbnRhc2kgdGVrcyBkaSBkYWxhbSBpcmlzYW4NCiAgICAgICAgaG9sZSA9IDAuNCwgICAgICAgICAgICAgICAgICAgICAgICAjIE1lbmdhdHVyIHVrdXJhbiBsdWJhbmcgDQogICAgICAgIG1hcmtlciA9IGxpc3QoY29sb3JzID0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG4gPSBucm93KHRhYmxlX2Rpc3RyaWJ1c2k0KSwgbmFtZSA9ICJCdUduIikpKSAlPiUNCiAgbGF5b3V0KHRpdGxlID0gIkRpYWdyYW0gRG9uYXQgVGluZ2thdCBLZXB1YXNhbiBNZXRvZGUgUGVtYmVsYWphcmFuIEx1cmluZyIsDQogICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgICAgICAgICAgICAgICAgIyBNZW5hbXBpbGthbiBsZWdlbmRhDQpgYGANCg0KQmVyZGFzYXJrYW4gZGF0YSB0ZXJzZWJ1dCwgc2ViYWdpYW4gYmVzYXIgbWFoYXNpc3dhIG1lcmFzYSBwdWFzIGF0YXUgc2FuZ2F0IHB1YXMgZGVuZ2FuIG1ldG9kZSBsdXJpbmcsIHNlZGFuZ2thbiBsYWlubnlhIG1lcmFzYSBjdWt1cCBwdWFzLiBJbmkgbWVuYW5kYWthbiBiYWh3YSBtZXRvZGUgdGF0YXAgbXVrYSBhdGF1IGx1cmluZyBjZW5kZXJ1bmcgbWVtYmVyaWthbiBwZW5nYWxhbWFuIGJlbGFqYXIgeWFuZyBsZWJpaCBiYWlrIGRhbGFtIGhhbCBwZW1haGFtYW4gbWF0ZXJpIGRhbiBpbnRlcmFrc2kgbGFuZ3N1bmcgZGVuZ2FuIHBlbmdhamFyLg0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW1lcmlrc2EgbmFtYSBrb2xvbSBkYWxhbSBkYXRhc2V0DQpuYW1lcyhEYXRhX1MxKQ0KDQojIE1lbmdoaXR1bmcgZnJla3VlbnNpDQpmcmVrdWVuc2kgPC0gdGFibGUoRGF0YV9TMSRIeWJyaWQpDQoNCiMgTWVuZ29udmVyc2kgdGFiZWwgZnJla3VlbnNpIGtlIGRhbGFtIGRhdGEgZnJhbWUNCnRhYmxlX2Rpc3RyaWJ1c2k1IDwtIGFzLmRhdGEuZnJhbWUoZnJla3VlbnNpKQ0KDQojIE1lbmdnYW50aSBuYW1hIGtvbG9tDQpuYW1lcyh0YWJsZV9kaXN0cmlidXNpNSkgPC0gYygiSHlicmlkIiwgIkZyZWt1ZW5zaSIpDQoNCiMgTWVuYW1waWxrYW4gdGFiZWwgZGlzdHJpYnVzaQ0KdGFibGVfZGlzdHJpYnVzaTUNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KDQojIE1lbWJ1YXQgZGlhZ3JhbSBsaW5na2FyYW4gZGVuZ2FuIHBsb3RseQ0KcGxvdF9seSh0YWJsZV9kaXN0cmlidXNpNSwgDQogICAgICAgIGxhYmVscyA9IH5IeWJyaWQsIA0KICAgICAgICB2YWx1ZXMgPSB+RnJla3VlbnNpLCANCiAgICAgICAgdHlwZSA9ICdwaWUnLCANCiAgICAgICAgdGV4dGluZm8gPSAnbGFiZWwrcGVyY2VudCcsICAgICAgICMgTWVuYW1waWxrYW4gbGFiZWwgZGFuIHBlcnNlbnRhc2UNCiAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uID0gJ3JhZGlhbCcsICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgIG1hcmtlciA9IGxpc3QoY29sb3JzID0gYnJld2VyLnBhbChuID0gbnJvdyh0YWJsZV9kaXN0cmlidXNpNSksIG5hbWUgPSAiQmx1ZXMiKSkpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiRGlhZ3JhbSBMaW5na2FyYW4gVGluZ2thdCBLZXB1YXNhbiBNZXRvZGUgUGVtYmVsYWphcmFuIEh5YnJpZCIsDQogICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgICAgICAgICAgICAgICAjIE1lbmFtcGlsa2FuIGxlZ2VuZGENCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gYmF0YW5nIGRlbmdhbiBnZ3Bsb3QyDQpwIDwtIGdncGxvdCh0YWJsZV9kaXN0cmlidXNpNSwgYWVzKHggPSBgSHlicmlkYCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZyZWt1ZW5zaSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IGBIeWJyaWRgKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gRnJla3VlbnNpKSwgDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMS4xKSwgICMgTWVuZ2F0dXIgcG9zaXNpIGxhYmVsDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzKSArICAjIE1lbmdhdHVyIHdhcm5hIGRhbiB1a3VyYW4gbGFiZWwNCiAgbGFicyh0aXRsZSA9ICJEaWFncmFtIEJhdGFuZyBUaW5na2F0IEtlcHVhc2FuIE1ldG9kZSBQZW1iZWxhamFyYW4gSHlicmlkIiwNCiAgICAgICB4ID0gIkh5YnJpZCIsDQogICAgICAgeSA9ICJGcmVrdWVuc2kiKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQnJCRyIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAgICAgIyBNZW55ZW1idW55aWthbiBsZWdlbmRhDQogIGNvb3JkX2ZsaXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVtYnVhdCBkaWFncmFtIG1lbmphZGkgaG9yaXpvbnRhbA0KDQojIE1lbmdvbnZlcnNpIGdncGxvdCBtZW5qYWRpIHBsb3RseSB1bnR1ayBpbnRlcmFrdGlmDQpwbG90bHlfcGxvdCA8LSBnZ3Bsb3RseShwKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QgaW50ZXJha3RpZg0KcGxvdGx5X3Bsb3QNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gZG9uYXQgZGVuZ2FuIHBsb3RseQ0KcGxvdF9seSh0YWJsZV9kaXN0cmlidXNpNSwgDQogICAgICAgIGxhYmVscyA9IH5IeWJyaWQgLCANCiAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgIHR5cGUgPSAncGllJywgDQogICAgICAgIHRleHRpbmZvID0gJ2xhYmVsK3BlcmNlbnQnLCAgICAgICAgIyBNZW5hbXBpbGthbiBsYWJlbCBkYW4gcGVyc2VudGFzZQ0KICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb24gPSAncmFkaWFsJywgICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgIGhvbGUgPSAwLjQsICAgICAgICAgICAgICAgICAgICAgICAgIyBNZW5nYXR1ciB1a3VyYW4gbHViYW5nIA0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gbnJvdyh0YWJsZV9kaXN0cmlidXNpNSksIG5hbWUgPSAiR3JlZW5zIikpKSAlPiUNCiAgbGF5b3V0KHRpdGxlID0gIkRpYWdyYW0gRG9uYXQgVGluZ2thdCBLZXB1YXNhbiBNZXRvZGUgUGVtYmVsYWphcmFuIEh5YnJpZCIsDQogICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgICAgICAgICAgICAgICAgIyBNZW5hbXBpbGthbiBsZWdlbmRhDQpgYGANCg0KRGFsYW0gbWV0b2RlIGh5YnJpZCwgcGVuZGFwYXQgbWFoYXNpc3dhIGp1Z2EgYmVydmFyaWFzaS4gQmViZXJhcGEgbWVyYXNhIHB1YXMgLCBjdWt1cCBwdWFzLCBuYW11biBhZGEganVnYSB5YW5nIG1lcmFzYSB0aWRhayBwdWFzIGF0YXUgc2FuZ2F0IHRpZGFrIHB1YXMuIEluaSBtZW51bmp1a2thbiBiYWh3YSBtZXRvZGUgaHlicmlkIG11bmdraW4gZGFwYXQgbWVtZW51aGkga2VidXR1aGFuIGZsZWtzaWJpbGl0YXMgc2ViYWdpYW4gbWFoYXNpc3dhLCB0ZXRhcGkgYmVsdW0gdGVudHUgbWVtYmVyaWthbiBrZXB1YXNhbiB5YW5nIHRpbmdnaSBiYWdpIHNlbXVhIG1haGFzaXN3YS4NCg0KDQojIFNPQUwgMiA6IFByZWZlcmVuc2kgTWFoYXNpc3dhIGRhbGFtIE1lbWlsaWggTWV0b2RlIEJlbGFqYXIgKERhcmluZywgTHVyaW5nLCBhdGF1IEh5YnJpZCkgZGFuIEFsYXNhbiBEaWJhbGlrIFByZWZlcmVuc2kgVGVyc2VidXQNCg0KIyMgTWV0b2RlIFBlbmd1bXB1bGFuIERhdGENCg0KRGFsYW0gbWV0b2RlIHBlbmd1bXB1bGFuIGRhdGEsIGthbWkgbWVuZ2d1bmFrYW4gbWV0b2RlIGt1ZXNpb25lci4gRGkNCm1hbmEga2FtaSBtZW55ZWJhcmthbiBrdWVzaW9uZXIga2VwYWRhIHJlc3BvbmRlbiAobWFoYXNpc3dhKSB5YW5nDQpkaWphZGlrYW4gc2FtcGVsLk1lbnVydXQgU3VnaXlvbm8sICgyMDE3OjgxKSBzYW1wZWwgYWRhbGFoIGJhZ2lhbiBkYXJpDQpwb3B1bGFzaSB5YW5nIG1lbmphZGkgc3VtYmVyIGRhdGEgZGFsYW0gcGVuZWxpdGlhbiwgZGltYW5hIHBvcHVsYXNpDQptZXJ1cGFrYW4gYmFnaWFuIGRhcmkganVtbGFoIGthcmFrdGVyaXN0aWsgeWFuZyBkaW1pbGlraS4gS2FtaSBtZW5nYW1iaWwNCjMwIG1haGFzaXN3YSBzZWJhZ2FpIHBvcHVsYXNpLiBVbnR1ayBtZW5ndWt1ciBiZXNhcm55YSBzYW1wZWwsIHBlbmVsaXRpDQptZW5nZ3VuYWthbiBtZXRvZGUgU2xvdmluIHlhbmcgZGlrdXRpcCBkYXJpIFN1Z2l5b25vIChkYWxhbSBMLiBIaWRheWF0LA0KMjAxOSkgOg0KDQokJA0KbiA9IE4vKDErTi5lwrIpXFwNCm4gPSAzMC8oMSszMC4oMC4xKcKyKVxcDQpuID0gMjMsMDdcXA0KbiDiiYggMjMNCiQkDQoNCktldGVyYW5nYW46DQoNCm4gPSBKdW1sYWggc2FtcGVsDQoNCk4gPSBKdW1sYWggcG9wdWxhc2kNCg0KZSA9IFRpbmdrYXQga2VzYWxhaGFuIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIGRpa2VoZW5kYWtpIChhc3Vtc2kNCnNlYmVzYXIgMTAlKQ0KDQpLdWVzaW9uZXIgeWFuZyBrYW1pIHNlYmFya2FuIGhhbnlhIG1lbmdndW5ha2FuIDIgdmFyaWFiZWwgcGVydGFueWFhbiwNCnlhaXR1Og0KDQoxLiAgTWV0b2RlIGJlbGFqYXIgYXBhIHlhbmcgbGViaWggYW5kYSBzdWthaT8NCg0KICAgIFBpbGloYW4gSmF3YWJhbjoNCg0KICAgIC0gICBEYXJpbmcNCiAgICAtICAgTHVyaW5nDQogICAgLSAgIEh5YnJpZA0KDQoyLiAgQXBhIGFsYXNhbiB1dGFtYSBBbmRhIG1lbWlsaWggbWV0b2RlIGJlbGFqYXIgdGVyc2VidXQ/DQoNCiAgICBQaWxpaGFuIEphd2FiYW46DQoNCiAgICAtICAgTGViaWggZWZla3RpZiBkYWxhbSBtZW1haGFtaSBtYXRlcmkNCiAgICAtICAgTGViaWggZmxla3NpYmVsDQogICAgLSAgIE1vdGl2YXNpIGJlbGFqYXIgbGViaWggdGluZ2dpDQogICAgLSAgIExlYmloIG11ZGFoIGJlcmludGVyYWtzaSBkZW5nYW4gZG9zZW4NCiAgICAtICAgS2VzZWltYmFuZ2FuIEJlbGFqYXIgZGFuIEFrdGl2aXRhcyBMYWlubnlhDQoNCiMjIEplbmlzIERhdGENCg0KSmVuaXMgRGF0YSB5YW5nIGthbWkgcGFrYWkgYWRhbGFoIERhdGEgS3VhbGl0YXRpZiBrYXJlbmEgcGFkYSBkYXRhIGluaQ0Ka2l0YSBoYW55YSB0ZXJmb2t1c2thbiBwYWRhIHByZWZlcmVuc2kgbWV0b2RlIHBlbWJlbGFqYXJhbiBkYW4ganVnYQ0KYWxhc2FuIHBlbWlsaWhhbiBtZXRvZGUgdGVyc2VidXQuIERhdGE6DQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KRGF0YV9TMiA9IHJlYWQuY3N2KCJDOi9Vc2Vycy9BU1VTL0Rlc2t0b3AvU3RhdGlzdGlrYSBEYXNhci9EYXRhdTMuY3N2Iiwgc2VwID0gIjsiKQ0KaGVhZChEYXRhX1MyKQ0KYGBgDQoNCiMjIEFsYXNhbiBQZW1pbGloYW4gTWV0b2RlIEt1ZXNpb25lcg0KDQoxLiAgS2FtaSBha2FuIG1lbWlsaWtpIGRhdGEgeWFuZyB2YWxpZCBkYW4gYWt1cmF0IGthcmVuYSBwYWRhIG1ldG9kZSBpbmkNCiAgICBha2FuIG1lbmdoYXNpbGthbiBkYXRhIHlhbmcgdmFsaWQgZGVuZ2FuIGtvbmRpc2kgeWFuZyBha2FuIGRpdGVsaXRpLg0KDQoyLiAgRGVuZ2FuIHBlbWlsaWhhbiBtZXRvZGUgaW5pIGRhcGF0IG1lbWluaW1hbGthbiBrZXNhbGFoYW4iIGRhbGFtDQogICAgcGVuZ2lzaWFuIGRhdGEgb2xlaCByZXNwb25kZW4uIFNlaGluZ2dhIGRhcGF0IG1lbXBlcm11ZGFoIGthbWkgdW50dWsNCiAgICBtZW5nb2xhaCBkYXRhIGRlbmdhbiBqdW1sYWggeWFuZyBiZXNhcg0KDQozLiAgRGVuZ2FuIG1ldG9kZSBpbmkgZGFwYXQgbWVuZ2hlbWF0IHdha3R1IGRhbiBiaWF5YSB5YW5nIGRpa2VsdWFya2FuDQogICAgdW50dWsgcHJvc2VzIHBlbmd1bXB1bGFuIGRhdGEuDQoNCjQuICBEYXBhdCBtZW11ZGFoa2FuIGthbWkgdW50dWsgbWVuZ3VyYW5naSBwZWtlcmphYW4gdGFtYmFoYW4gcGFkYQ0KICAgIHByb3NlcyBhbmFsaXNpcyBkYXRhLCBzZWhpbmdnYSBkYXBhdCBtZW5naGluZGFyaSBhZGFueWEga2VrZWxpcnVhbg0KICAgIGRhbGFtIHBlbXJvc2VzYW4gZGF0YS4NCg0KNS4gIERlbmdhbiBwZW55YWppYW4gcGVydGFueWFhbiB5YW5nIHJlbGV2YW4sIG1lbmFyaWssIHRlcnN0cnVrdHVyIGRhcGF0DQogICAgbWVuaW5na2F0a2FuIHBhcnRpc2lwYXNpIHBhcmEgcmVzcG9uZGVuIHVudHVrIG1lbmdpc2kga3Vlc2lvbmVyDQoNCjYuICBEYXRhIHlhbmcgZGloYXNpbGthbiBkYXJpIGt1ZXNpb25lciBrYW1pIGRhcGF0IG1lbnlpbXB1bGthbiBzZWNhcmENCiAgICBha3VyYXQgZGFuIG1lbmR1a3VuZyBhZGFueWEgaGFzaWwga2VzaW1wdWxhbiB5YW5nIHRlcGF0Lg0KDQojIFNPQUwgMyBWaXN1YWxpc2FzaSBkYW4gQW5hbGlzaXMNCg0KIyMgVmlzdWFsaXNhc2kNCg0KYGBge3IsbWFzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtZXJpa3NhIG5hbWEga29sb20gZGFsYW0gZGF0YXNldA0KbmFtZXMoRGF0YV9TMikNCg0KIyBNZW5naGl0dW5nIGZyZWt1ZW5zaQ0KZnJla3VlbnNpIDwtIHRhYmxlKERhdGFfUzIkTWV0b2RlLlBlbWJlbGFqYXJhbikNCg0KIyBNZW5nb252ZXJzaSB0YWJlbCBmcmVrdWVuc2kga2UgZGFsYW0gZGF0YSBmcmFtZQ0KdGFibGVfZGlzdHJpYnVzaTIgPC0gYXMuZGF0YS5mcmFtZShmcmVrdWVuc2kpDQoNCiMgTWVuZ2dhbnRpIG5hbWEga29sb20gc2VjYXJhIG1hbnVhbA0KY29sbmFtZXModGFibGVfZGlzdHJpYnVzaTIpIDwtIGMoIk1ldG9kZS5QZW1iZWxhamFyYW4iLCAiRnJla3VlbnNpIikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkaXN0cmlidXNpDQp0YWJsZV9kaXN0cmlidXNpMg0KYGBgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KIyBNZW11YXQgbGlicmFyeSB5YW5nIGRpcGVybHVrYW4NCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQoNCiMgTWVtYnVhdCBkaWFncmFtIGxpbmdrYXJhbiBkZW5nYW4gcGxvdGx5DQpwbG90X2x5KHRhYmxlX2Rpc3RyaWJ1c2kyLCANCiAgICAgICAgbGFiZWxzID0gfk1ldG9kZS5QZW1iZWxhamFyYW4sIA0KICAgICAgICB2YWx1ZXMgPSB+RnJla3VlbnNpLCANCiAgICAgICAgdHlwZSA9ICdwaWUnLCANCiAgICAgICAgdGV4dGluZm8gPSAnbGFiZWwrcGVyY2VudCcsICAgICAgICMgTWVuYW1waWxrYW4gbGFiZWwgZGFuIHBlcnNlbnRhc2UNCiAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uID0gJ3JhZGlhbCcsICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgIG1hcmtlciA9IGxpc3QoY29sb3JzID0gYnJld2VyLnBhbChuID0gbnJvdyh0YWJsZV9kaXN0cmlidXNpMiksIG5hbWUgPSAiUHVSZCIpKSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJEaWFncmFtIExpbmdrYXJhbiBQcmVmZXJlbnNpIE1ldG9kZSBQZW1iZWxhamFyYW4iLA0KICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpICAgICAgICAgICAgICAgIyBNZW5hbXBpbGthbiBsZWdlbmRhDQpgYGANCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5IHlhbmcgZGlwZXJsdWthbg0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgTWVtYnVhdCBkaWFncmFtIGJhdGFuZyBkZW5nYW4gZ2dwbG90Mg0KcCA8LSBnZ3Bsb3QodGFibGVfZGlzdHJpYnVzaTIsIGFlcyh4ID0gYE1ldG9kZS5QZW1iZWxhamFyYW5gLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnJla3VlbnNpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gYE1ldG9kZS5QZW1iZWxhamFyYW5gKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gRnJla3VlbnNpKSwgDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMS4xKSwgICMgTWVuZ2F0dXIgcG9zaXNpIGxhYmVsDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzKSArICAjIE1lbmdhdHVyIHdhcm5hIGRhbiB1a3VyYW4gbGFiZWwNCiAgbGFicyh0aXRsZSA9ICJEaWFncmFtIEJhdGFuZyBQcmVmZXJlbnNpIE1ldG9kZSBQZW1iZWxhamFyYW4iLA0KICAgICAgIHggPSAiTWV0b2RlLlBlbWJlbGFqYXJhbiIsDQogICAgICAgeSA9ICJGcmVrdWVuc2kiKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQnVQdSIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAgICAgIyBNZW55ZW1idW55aWthbiBsZWdlbmRhDQogIGNvb3JkX2ZsaXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVtYnVhdCBkaWFncmFtIG1lbmphZGkgaG9yaXpvbnRhbA0KDQojIE1lbmdvbnZlcnNpIGdncGxvdCBtZW5qYWRpIHBsb3RseSB1bnR1ayBpbnRlcmFrdGlmDQpwbG90bHlfcGxvdCA8LSBnZ3Bsb3RseShwKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QgaW50ZXJha3RpZg0KcGxvdGx5X3Bsb3QNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gZG9uYXQgZGVuZ2FuIHBsb3RseQ0KcGxvdF9seSh0YWJsZV9kaXN0cmlidXNpMiwgDQogICAgICAgIGxhYmVscyA9IH5NZXRvZGUuUGVtYmVsYWphcmFuICwgDQogICAgICAgIHZhbHVlcyA9IH5GcmVrdWVuc2ksIA0KICAgICAgICB0eXBlID0gJ3BpZScsIA0KICAgICAgICB0ZXh0aW5mbyA9ICdsYWJlbCtwZXJjZW50JywgICAgICAgICMgTWVuYW1waWxrYW4gbGFiZWwgZGFuIHBlcnNlbnRhc2UNCiAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uID0gJ3JhZGlhbCcsICAjIE9yaWVudGFzaSB0ZWtzIGRpIGRhbGFtIGlyaXNhbg0KICAgICAgICBob2xlID0gMC40LCAgICAgICAgICAgICAgICAgICAgICAgICMgTWVuZ2F0dXIgdWt1cmFuIGx1YmFuZyANCiAgICAgICAgbWFya2VyID0gbGlzdChjb2xvcnMgPSBSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwobiA9IG5yb3codGFibGVfZGlzdHJpYnVzaTIpLCBuYW1lID0gIlB1UmQiKSkpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiRGlhZ3JhbSBEb25hdCBQcmVmZXJlbnNpIE1ldG9kZSBQZW1iZWxhamFyYW4iLA0KICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpICAgICAgICAgICAgICAgICMgTWVuYW1waWxrYW4gbGVnZW5kYQ0KYGBgDQoNCmBgYHtyLG1hc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIE1lbWVyaWtzYSBuYW1hIGtvbG9tIGRhbGFtIGRhdGFzZXQNCm5hbWVzKERhdGFfUzIpDQoNCiMgTWVuZ2hpdHVuZyBmcmVrdWVuc2kNCmZyZWt1ZW5zaSA8LSB0YWJsZShEYXRhX1MyJEFsYXNhbikNCg0KIyBNZW5nb252ZXJzaSB0YWJlbCBmcmVrdWVuc2kga2UgZGFsYW0gZGF0YSBmcmFtZQ0KdGFibGVfZGlzdHJpYnVzaTMgPC0gYXMuZGF0YS5mcmFtZShmcmVrdWVuc2kpDQoNCiMgTWVuZ2dhbnRpIG5hbWEga29sb20gc2VjYXJhIG1hbnVhbA0KY29sbmFtZXModGFibGVfZGlzdHJpYnVzaTMpIDwtIGMoIkFsYXNhbiIsICJGcmVrdWVuc2kiKQ0KDQojIE1lbmFtcGlsa2FuIHRhYmVsIGRpc3RyaWJ1c2kNCnRhYmxlX2Rpc3RyaWJ1c2kzDQpgYGANCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVjaG89RkFMU0V9DQojIE1lbXVhdCBsaWJyYXJ5IHlhbmcgZGlwZXJsdWthbg0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCg0KIyBNZW1idWF0IGRpYWdyYW0gbGluZ2thcmFuIGRlbmdhbiBwbG90bHkNCnBsb3RfbHkodGFibGVfZGlzdHJpYnVzaTMsIA0KICAgICAgICBsYWJlbHMgPSB+QWxhc2FuLCANCiAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgIHR5cGUgPSAncGllJywgDQogICAgICAgIHRleHRpbmZvID0gJ2xhYmVsK3BlcmNlbnQnLCAgICAgICAjIE1lbmFtcGlsa2FuIGxhYmVsIGRhbiBwZXJzZW50YXNlDQogICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbiA9ICdyYWRpYWwnLCAjIE9yaWVudGFzaSB0ZWtzIGRpIGRhbGFtIGlyaXNhbg0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IGJyZXdlci5wYWwobiA9IG5yb3codGFibGVfZGlzdHJpYnVzaTMpLCBuYW1lID0gIlJlZHMiKSkpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiRGlhZ3JhbSBMaW5na2FyYW4gQWxhc2FuIFByZWZlcmVuc2kgTWV0b2RlIFBlbWJlbGFqYXJhbiIsDQogICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgICAgICAgICAgICAgICAjIE1lbmFtcGlsa2FuIGxlZ2VuZGENCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gYmF0YW5nIGRlbmdhbiBnZ3Bsb3QyDQpwIDwtIGdncGxvdCh0YWJsZV9kaXN0cmlidXNpMywgYWVzKHggPSBgQWxhc2FuYCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZyZWt1ZW5zaSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IGBBbGFzYW5gKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gRnJla3VlbnNpKSwgDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMS4xKSwgICMgTWVuZ2F0dXIgcG9zaXNpIGxhYmVsDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzKSArICAjIE1lbmdhdHVyIHdhcm5hIGRhbiB1a3VyYW4gbGFiZWwNCiAgbGFicyh0aXRsZSA9ICJEaWFncmFtIEJhdGFuZyBBbGFzYW4gUHJlZmVyZW5zaSBNZXRvZGUgUGVtYmVsYWphcmFuIiwNCiAgICAgICB4ID0gIkFsYXNhbiIsDQogICAgICAgeSA9ICJGcmVrdWVuc2kiKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiT3JSZCIpICsgICMgTWVuZ2d1bmFrYW4gcGFsZXQgd2FybmENCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAgICAgIyBNZW55ZW1idW55aWthbiBsZWdlbmRhDQogIGNvb3JkX2ZsaXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWVtYnVhdCBkaWFncmFtIG1lbmphZGkgaG9yaXpvbnRhbA0KDQojIE1lbmdvbnZlcnNpIGdncGxvdCBtZW5qYWRpIHBsb3RseSB1bnR1ayBpbnRlcmFrdGlmDQpwbG90bHlfcGxvdCA8LSBnZ3Bsb3RseShwKQ0KDQojIE1lbmFtcGlsa2FuIHBsb3QgaW50ZXJha3RpZg0KcGxvdGx5X3Bsb3QNCmBgYA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0NCiMgTWVtdWF0IGxpYnJhcnkgeWFuZyBkaXBlcmx1a2FuDQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBNZW1idWF0IGRpYWdyYW0gZG9uYXQgZGVuZ2FuIHBsb3RseQ0KcGxvdF9seSh0YWJsZV9kaXN0cmlidXNpMywgDQogICAgICAgIGxhYmVscyA9IH5BbGFzYW4gLCANCiAgICAgICAgdmFsdWVzID0gfkZyZWt1ZW5zaSwgDQogICAgICAgIHR5cGUgPSAncGllJywgDQogICAgICAgIHRleHRpbmZvID0gJ2xhYmVsK3BlcmNlbnQnLCAgICAgICAgIyBNZW5hbXBpbGthbiBsYWJlbCBkYW4gcGVyc2VudGFzZQ0KICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb24gPSAncmFkaWFsJywgICMgT3JpZW50YXNpIHRla3MgZGkgZGFsYW0gaXJpc2FuDQogICAgICAgIGhvbGUgPSAwLjQsICAgICAgICAgICAgICAgICAgICAgICAgIyBNZW5nYXR1ciB1a3VyYW4gbHViYW5nIA0KICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gbnJvdyh0YWJsZV9kaXN0cmlidXNpMyksIG5hbWUgPSAiWWxPckJyIikpKSAlPiUNCiAgbGF5b3V0KHRpdGxlID0gIkRpYWdyYW0gRG9uYXQgQWxhc2FuIFByZWZlcmVuc2kgTWV0b2RlIFBlbWJlbGFqYXJhbiIsDQogICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkgICAgICAgICAgICAgICAgIyBNZW5hbXBpbGthbiBsZWdlbmRhDQpgYGANCg0KIyMgQW5hbGlzaXMNCg0KMS4gIEFuYWxpc2lzIERlc2tyaXB0aWYgRGlzdHJpYnVzaSBNZXRvZGUgQmVsYWphcjoNCg0KLSAgIERhcmluZzogQmViZXJhcGEgbWFoYXNpc3dhIG1lbWlsaWggbWV0b2RlIGRhcmluZyBrYXJlbmEgYWxhc2FuDQogICAgZmxla3NpYmlsaXRhcywgZWZla3Rpdml0YXMgcGVtYWhhbWFuIG1hdGVyaSwgZWZpc2llbnNpIHdha3R1IGRhbg0KICAgIGJpYXlhLCBtb3RpdmFzaSBiZWxhamFyIHlhbmcgbGViaWggdGluZ2dpLCBzZXJ0YSBrZXNlaW1iYW5nYW4NCiAgICBiZWxhamFyIGRlbmdhbiBha3Rpdml0YXMgbGFpbm55YS4NCg0KLSAgIEx1cmluZzogTWV0b2RlIGluaSBiYW55YWsgZGlwaWxpaCBrYXJlbmEga2VtdWRhaGFuIGludGVyYWtzaQ0KICAgIGxhbmdzdW5nIGRlbmdhbiBkb3NlbiwgZWZla3Rpdml0YXMgZGFsYW0gcGVtYWhhbWFuIG1hdGVyaSwNCiAgICBmbGVrc2liaWxpdGFzLCBkYW4gbW90aXZhc2kgYmVsYWphciB5YW5nIGxlYmloIHRpbmdnaS4NCg0KLSAgIEh5YnJpZDogTWV0b2RlIGh5YnJpZCBsZWJpaCBkaXN1a2FpIHVudHVrIGFsYXNhbiBmbGVrc2liaWxpdGFzLA0KICAgIGtlc2VpbWJhbmdhbiBhbnRhcmEgYmVsYWphciBkYW4gYWt0aXZpdGFzIGxhaW5ueWEsIHNlcnRhIG1vdGl2YXNpDQogICAgYmVsYWphciB5YW5nIHRpbmdnaS4NCg0KQWRhIGp1Z2EgYWxhc2FuIHNlY2FyYSB1bXVtIGRpIGJhbGlrIHByZWZlcmVuc2kgdGVyc2VidXQ6DQoNCi0gICBBbGFzYW4gZmxla3NpYmlsaXRhcyBtdW5jdWwgYmFpayBwYWRhIG1ldG9kZSBkYXJpbmcgbWF1cHVuIGh5YnJpZCwNCiAgICB5YW5nIG1lbnVuanVra2FuIGJhaHdhIHNlYmFnaWFuIG1haGFzaXN3YSBtZW5nYW5nZ2FwIGtlZHVhIG1ldG9kZQ0KICAgIGluaSBtZW1iZXJpa2FuIGtlbGVsdWFzYWFuIGRhbGFtIG1lbmdhdHVyIHdha3R1IGRhbiB0ZW1wYXQgYmVsYWphci4NCg0KLSAgIEJhbnlhayBtYWhhc2lzd2EgbWVtaWxpaCBsdXJpbmcga2FyZW5hIG1lcmVrYSBtZXJhc2EgbGViaWggbXVkYWgNCiAgICBtZW1haGFtaSBtYXRlcmkgZGFsYW0gc3Vhc2FuYSBiZWxhamFyIGxhbmdzdW5nLg0KDQotICAgSW50ZXJha3NpIGxhbmdzdW5nIGRlbmdhbiBkb3NlbiBtZW5qYWRpIGFsYXNhbiB1dGFtYSBtZW5nYXBhDQogICAgbWFoYXNpc3dhIG1lbWlsaWggbWV0b2RlIGx1cmluZywgeWFuZyBtZW51bmp1a2thbiBwZW50aW5nbnlhIGtvbnRhaw0KICAgIGxhbmdzdW5nIGRhbGFtIHBlbWJlbGFqYXJhbi4NCg0KLSAgIE1ldG9kZSBkYXJpbmcgZGlwaWxpaCBvbGVoIHNlYmFnaWFuIG1haGFzaXN3YSBrYXJlbmEgZWZpc2llbnNpbnlhLA0KICAgIHRlcnV0YW1hIGRhbGFtIG1lbmdoZW1hdCB3YWt0dSBwZXJqYWxhbmFuIGRhbiBiaWF5YS4NCg0KLSAgIE1haGFzaXN3YSB5YW5nIG1lbWlsaWggbWV0b2RlIGh5YnJpZCBhdGF1IGRhcmluZyBqdWdhIG1lbnllYnV0a2FuDQogICAgYmFod2EgbWV0b2RlIHRlcnNlYnV0IG1lbWJhbnR1IG1lbmluZ2thdGthbiBtb3RpdmFzaSBiZWxhamFyIG1lcmVrYS4NCg0KMi4gIEludGVycHJldGFzaQ0KDQotICAgU2ViYWdpYW4gYmVzYXIgbWFoYXNpc3dhIHlhbmcgbWVtaWxpaCBtZXRvZGUgbHVyaW5nIG1lcmFzYSBsZWJpaA0KICAgIHRlcmJhbnR1IGRhbGFtIG1lbWFoYW1pIG1hdGVyaSBkYW4gaW50ZXJha3NpIGxhbmdzdW5nIGRlbmdhbiBkb3Nlbi4NCiAgICBJbmkgbWVudW5qdWtrYW4gYmFod2EgcGVuZ2FsYW1hbiBiZWxhamFyIHRhdGFwIG11a2EgbWFzaWggZGlhbmdnYXANCiAgICBsZWJpaCBtZW5kYWxhbSBkYW4gYmVybWFuZmFhdCB1bnR1ayBtZW1haGFtaSBtYXRlcmkuDQoNCi0gICBNZXRvZGUgZGFyaW5nIGRhbiBoeWJyaWQgYmFueWFrIGRpcGlsaWggb2xlaCBtYWhhc2lzd2EgeWFuZw0KICAgIG1lbWJ1dHVoa2FuIGZsZWtzaWJpbGl0YXMgZGFsYW0gbWVuZ2F0dXIgd2FrdHUgZGFuIGFrdGl2aXRhcyBtZXJla2EsDQogICAgdGVydXRhbWEgYmFnaSBtZXJla2EgeWFuZyBtZW5naW5naW5rYW4ga2VzZWltYmFuZ2FuIGFudGFyYSBzdHVkaSBkYW4NCiAgICBrZWdpYXRhbiBsYWluIGRpIGx1YXIga3VsaWFoLg0KDQotICAgTWFoYXNpc3dhIHlhbmcgbWVtaWxpaCBoeWJyaWQgbWVyYXNhIGxlYmloIHRlcm1vdGl2YXNpLCBtdW5na2luDQogICAga2FyZW5hIG1ldG9kZSBpbmkgbWVtYmVyaWthbiB2YXJpYXNpIHBlbmdhbGFtYW4gYmVsYWphciwgYmFpayBkYXJpbmcNCiAgICBtYXVwdW4gdGF0YXAgbXVrYSwgc2VoaW5nZ2EgdGlkYWsgbW9ub3Rvbi4NCg0KIyMgS2VzaW1wdWxhbiBkYXJpIERhdGEgeWFuZyBEaWhhc2lsa2FuDQoNCjEuICBNZXRvZGUgQmVsYWphciB5YW5nIFBhbGluZyBCYW55YWsgRGlwaWxpaA0KDQpMdXJpbmcgbWVuamFkaSBwaWxpaGFuIHlhbmcgY3VrdXAgZG9taW5hbiBtYWhhc2lzd2EuIEJhbnlhayB5YW5nIG1lbWlsaWgNCm1ldG9kZSBpbmkga2FyZW5hIGVmZWt0aXZpdGFzIGRhbGFtIG1lbWFoYW1pIG1hdGVyaSBkYW4ga2VtdWRhaGFuDQppbnRlcmFrc2kgZGVuZ2FuIGRvc2VuIFNlaGluZ2dhIHNlYmFnaWFuIGJlc2FyIG1haGFzaXN3YSBtYXNpaCBtZXJhc2ENCmJhaHdhIHBlbmdhbGFtYW4gYmVsYWphciB0YXRhcCBtdWthIG1lbWJlcmlrYW4gcGVtYWhhbWFuIHlhbmcgbGViaWggYmFpaw0KZGFuIG1lbmR1a3VuZyBpbnRlcmFrc2kgbGFuZ3N1bmcgZGVuZ2FuIHBlbmdhamFyLg0KDQoyLiAgQWxhc2FuIFV0YW1hIHVudHVrIFNldGlhcCBNZXRvZGUNCg0KICAgIC0gICBEYXJpbmcgOiBEYXJpbmcgZGlwaWxpaCBrYXJlbmEgYWxhc2FuIGZsZWtzaWJpbGl0YXMgZGFuDQogICAgICAgIGVmaXNpZW5zaSBkYWxhbSB3YWt0dSBkYW4gYmlheWEuIE1haGFzaXN3YSB5YW5nIG1lbWlsaWggbWV0b2RlDQogICAgICAgIGluaSBjZW5kZXJ1bmcgbWVuZ2hhcmdhaSBrZWJlYmFzYW4gZGFsYW0gbWVuZ2F0dXIgd2FrdHUgYmVsYWphcg0KICAgICAgICBkYW4gbWVuZ2hpbmRhcmkgYmlheWEgc2VydGEgd2FrdHUgcGVyamFsYW5hbi4NCg0KICAgIC0gICBMdXJpbmcgOiBNZXRvZGUgaW5pIGJhbnlhayBkaXBpbGloIHVudHVrIGtlbXVkYWhhbiBiZXJpbnRlcmFrc2kNCiAgICAgICAgZGVuZ2FuIGRvc2VuIGRhbiBlZmVrdGl2aXRhcyBkYWxhbSBwZW1haGFtYW4gbWF0ZXJpLiBNYWhhc2lzd2ENCiAgICAgICAgeWFuZyBtZW1pbGloIGx1cmluZyBsZWJpaCBtZW5ndXRhbWFrYW4gcGVuZ2FsYW1hbiBiZWxhamFyIHlhbmcNCiAgICAgICAgbWVuZGFsYW0gZGFuIG1lcmFzYSB0ZXJiYW50dSBkZW5nYW4gaW50ZXJha3NpIGxhbmdzdW5nIGRhbGFtDQogICAgICAgIGtlbGFzIHRhdGFwIG11a2EuDQoNCiAgICAtICAgSHlicmlkIDogTWV0b2RlIGh5YnJpZCBjdWt1cCBzZXJpbmcgZGlwaWxpaCBrYXJlbmEgZmxla3NpYmlsaXRhcw0KICAgICAgICBkYW4ga2VtYW1wdWFuIHVudHVrIG1lbnllaW1iYW5na2FuIGFudGFyYSBiZWxhamFyIGRhbiBha3Rpdml0YXMNCiAgICAgICAgbGFpbm55YS4gQmViZXJhcGEgbWFoYXNpc3dhIGp1Z2EgbWVuZ2FuZ2dhcCBoeWJyaWQgbWVuaW5na2F0a2FuDQogICAgICAgIG1vdGl2YXNpIGJlbGFqYXIsIG11bmdraW4ga2FyZW5hIGFkYW55YSB2YXJpYXNpIGRhbGFtIHBlbmRla2F0YW4NCiAgICAgICAgYmVsYWphciAoa29tYmluYXNpIGFudGFyYSBkYXJpbmcgZGFuIGx1cmluZykuDQoNCjMuICBLZWNlbmRlcnVuZ2FuIEFsYXNhbiBCZXJkYXNhcmthbiBNZXRvZGUNCg0KICAgIC0gICBGbGVrc2liaWxpdGFzIGFkYWxhaCBhbGFzYW4gdW11bSB5YW5nIG11bmN1bCBwYWRhIG1ldG9kZSBEYXJpbmcNCiAgICAgICAgZGFuIEh5YnJpZCwgZGVuZ2FuIGluaSBtZW51bmp1a2thbiBiYWh3YSBrZWR1YSBtZXRvZGUgaW5pDQogICAgICAgIGRpbWluYXRpIG9sZWggbWFoYXNpc3dhIHlhbmcgbWVtYnV0dWhrYW4gcGVuZ2F0dXJhbiB3YWt0dSB5YW5nDQogICAgICAgIGZsZWtzaWJlbC4NCg0KICAgIC0gICBJbnRlcmFrc2kgZGVuZ2FuIERvc2VuIGRhbiBFZmVrdGl2aXRhcyBkYWxhbSBQZW1haGFtYW4gTWF0ZXJpDQogICAgICAgIGFkYWxhaCBhbGFzYW4geWFuZyBwYWxpbmcgYmFueWFrIGRpYXNvc2lhc2lrYW4gZGVuZ2FuIG1ldG9kZQ0KICAgICAgICBMdXJpbmcuIEluaSBtZW51bmp1a2thbiBiYWh3YSBtYWhhc2lzd2EgbWFzaWggbWVuZ2hhcmdhaSBrb250YWsNCiAgICAgICAgbGFuZ3N1bmcgZGFsYW0gcGVtYmVsYWphcmFuIGRhbiBtZXJhc2EgbGViaWggdGVyYmFudHUgZGFsYW0NCiAgICAgICAgbWVtYWhhbWkgbWF0ZXJpIG1lbGFsdWkga2VsYXMgdGF0YXAgbXVrYS4NCg0KICAgIC0gICBLZXNlaW1iYW5nYW4gYW50YXJhIEJlbGFqYXIgZGFuIEFrdGl2aXRhcyBMYWlubnlhIGFkYWxhaCBhbGFzYW4NCiAgICAgICAgdXRhbWEgcGFkYSBtZXRvZGUgSHlicmlkLCBtZW5naW5kaWthc2lrYW4gYmFod2EgbWV0b2RlIGluaSBjb2Nvaw0KICAgICAgICBiYWdpIG1lcmVrYSB5YW5nIGluZ2luIG1lbmdhdHVyIGtlZ2lhdGFuIGxhaW4gZGkgbHVhciBha2FkZW1pay4NCg0KS2VzaW1wdWxhbiBTZWNhcmEga2VzZWx1cnVoYW4sIGRhdGEgZGlhdGFzIG1lbnVuanVra2FuIGJhaHdhIHNldGlhcA0KbWV0b2RlIGJlbGFqYXIgbWVtaWxpa2kga2VsZWJpaGFuIHlhbmcgc2VzdWFpIGRlbmdhbiBrZWJ1dHVoYW4gdGVydGVudHUuDQpNZXRvZGUgTHVyaW5nIG1hc2loIGRpYW5nZ2FwIHNlYmFnYWkgbWV0b2RlIHRlcmJhaWsgZGFsYW0gaGFsIHBlbWFoYW1hbg0KbWF0ZXJpIGRhbiBpbnRlcmFrc2ksIHNlZGFuZ2thbiBtZXRvZGUgRGFyaW5nIGp1Z2EgbWVuYXdhcmthbg0KZmxla3NpYmlsaXRhcyB5YW5nIGRpaW5naW5rYW4gb2xlaCBzZWJhZ2lhbiBtYWhhc2lzd2EuIGxhdSB1bnR1ayBtZXRvZGUNCkh5YnJpZCBtZW5qYWRpIG9wc2kgeWFuZyBzZWltYmFuZyBkaWFudGFyYSBrZWR1YSBtZXRvZGUgdGVyc2VidXQsIGthcmVuYQ0KbWV0b2RlIGluaSBtZW1iZXJpa2FuIGZsZWtzaWJpbGl0YXMgc2VrYWxpZ3VzIGludGVyYWtzaSBzZWNhcmEgbGFuZ3N1bmcsDQpzZWhpbmdnYSBtZW1pbGlraSBrZWNvY29rYW4gYmFnaSBtYWhhc2lzd2EgeWFuZyBtZW1idXR1aGthbiBrZWR1YSBtZXRvZGUNCml0dS4NCg0KIyMgQ2FyYSBQZW55YWppYW4gRGF0YSBkYWxhbSBNZW5hcmlrIEtlc2ltcHVsYW4NCg0KRGlhZ3JhbSBsaW5na2FyYW4gZGFuIGRpYWdyYW0gZG9uYXQgbWVtYmFudHUgbWVtYWhhbWkgc2ViZXJhcGEgYmVzYXINCnBvcnNpIHNldGlhcCBtZXRvZGUgYmVsYWphciBkaWJhbmRpbmdrYW4gZGVuZ2FuIHRvdGFsIGtlc2VsdXJ1aGFuLkRlbmdhbg0KZGVtaWtpYW4sIGtpdGEgYmlzYSBsYW5nc3VuZyBtZWxpaGF0IG1ldG9kZSBiZWxhamFyIG1hbmEgeWFuZyBwYWxpbmcNCmJhbnlhayBhdGF1IHBhbGluZyBzZWRpa2l0IGRpcGlsaWggb2xlaCBtYWhhc2lzd2EuIERpYWdyYW0gaW5pDQptZW1iZXJpa2FuIGdhbWJhcmFuIHlhbmcgY2VwYXQgZGFuIGludHVpdGlmIHVudHVrIG1lbmdldGFodWkgYXBha2FoIGFkYQ0KZG9taW5hc2kgbWV0b2RlIHRlcnRlbnR1IGF0YXUgc2ViYWxpa255YSwgYXBha2FoIHBpbGloYW4gbWV0b2RlIHRlcnNlYmFyDQpzZWNhcmEgbWVyYXRhIGFwYSB0aWRhay4NCg0KRGVuZ2FuIHVudHVrIGRpYWdyYW0gYmF0YW5nLCBrYW1pIGJpc2EgbWVsaWhhdCBzZWNhcmEgcmluY2kNCmFsYXNhbi1hbGFzYW4gdXRhbWEgeWFuZyBkaXBpbGloIHVudHVrIHNldGlhcCBtZXRvZGUgYmVsYWphci4gTWlzYWxueWEsDQpkaWFncmFtIGJhdGFuZyBkYXBhdCBtZW51bmp1a2thbiBiYWh3YSBhbGFzYW4g4oCcRmxla3NpYmlsaXRhc+KAnSBwYWxpbmcNCmJhbnlhayBtdW5jdWwgcGFkYSBtZXRvZGUgRGFyaW5nIGRhbiBIeWJyaWQsIHNlZGFuZ2thbiDigJxJbnRlcmFrc2kgZGVuZ2FuDQpEb3NlbuKAnSBwYWxpbmcgYmFueWFrIHBhZGEgbWV0b2RlIEx1cmluZy4gRGlhZ3JhbSBiYXRhbmcgYmVya2Vsb21wb2sNCm1lbWJhbnR1IG1lbWFoYW1pIGJhZ2FpbWFuYSBhbGFzYW4tYWxhc2FuIGluaSBiZXJ2YXJpYXNpIGFudGFyIG1ldG9kZS4NCkRlbmdhbiBpbmkgZGFwYXQgbWVtcGVybXVkYWggZGFsYW0gbWVuZ2lkZW50aWZpa2FzaSBrYXJha3RlcmlzdGlrIGF0YXUNCmtlbGViaWhhbiBraHVzdXMgZGFyaSBzZXRpYXAgbWV0b2RlIGJlbGFqYXIgeWFuZyBkaWFuZ2thdC4gRGFyaSBzaW5pLA0Ka2l0YSBiaXNhIG1lbmFyaWsga2VzaW1wdWxhbiB0ZW50YW5nIGFzcGVrIGFwYSB5YW5nIHBhbGluZyBwZW50aW5nIGJhZ2kNCm1haGFzaXN3YSBkYWxhbSBtZW1pbGloIG1ldG9kZSBiZWxhamFyIHRlcnRlbnR1Lg0K