Teknik Sampling dan Survei

Margin of Error pada Moda Transportasi

Logo


Dataset Moda Transportasi

Laporan Studi

I. Pendahuluan

Penelitian ini bertujuan untuk membandingkan efektivitas metode Probability Sampling dan Non-Probability Sampling dalam mengestimasi karakteristik populasi, khususnya dalam memperkirakan moda transportasi yang digunakan oleh pekerja harian. Dalam penelitian berbasis sampel, Margin of Error (MoE) merupakan indikator krusial yang menunjukkan sejauh mana hasil sampel dapat merepresentasikan populasi secara keseluruhan.

MoE berperan penting dalam menentukan akurasi estimasi yang dihasilkan dari suatu survei. Semakin kecil nilai MoE, semakin dekat hasil survei dengan kondisi sebenarnya di populasi, sehingga kesimpulan yang diambil menjadi lebih reliabel. Namun, pengurangan MoE sering kali memerlukan peningkatan ukuran sampel, yang dapat berdampak pada efisiensi waktu dan sumber daya.

Dengan memahami berbagai metode pengambilan sampel dan bagaimana masing-masing metode memengaruhi MoE, penelitian ini juga bertujuan untuk mengevaluasi potensi bias yang dapat muncul. Metode Probability Sampling, yang menggunakan pendekatan acak, umumnya menghasilkan estimasi yang lebih akurat dengan MoE yang lebih kecil dibandingkan metode Non-Probability Sampling, yang dapat memiliki bias seleksi lebih tinggi. Oleh karena itu, analisis ini akan memberikan wawasan mendalam mengenai kelebihan dan keterbatasan setiap metode serta rekomendasi terbaik untuk digunakan dalam penelitian berbasis survei.


II. Metode Pengambilan Sampel yang Digunakan

Metode yang diterapkan dalam penelitian ini meliputi:

A. Metode Probabilitas

  1. Simple Random Sampling (SRS)
    Pilih 453 individu secara acak dari seluruh populasi menggunakan generator angka acak. Metode ini memastikan setiap individu memiliki peluang yang sama untuk dipilih, sehingga hasil lebih tidak bias.
  2. Stratified Sampling
    Bagi populasi ke dalam kelompok berdasarkan moda transportasi, kemudian ambil 453 sampel secara acak dari setiap kelompok. Metode ini meningkatkan representativitas karena memastikan setiap kelompok dalam populasi terwakili secara proporsional.
  3. Systematic Sampling
    Pilih individu pada interval tetap dari daftar populasi yang telah diurutkan.
    Contoh: Jika terdapat 1.000 individu dalam populasi dan sampel yang dibutuhkan adalah 453, maka interval pemilihan dihitung sebagai berikut:
    \[ k = \frac{1000}{453} = 2 \] Artinya, individu dipilih setiap individu ke-2 dari daftar populasi.
  4. Cluster Sampling
    Pilih secara acak dua moda transportasi, kemudian survei semua individu dalam kategori tersebut. Metode ini lebih efisien untuk populasi besar, tetapi dapat meningkatkan Margin of Error (MoE) jika cluster yang terpilih tidak cukup mewakili populasi secara keseluruhan.

B. Metode Non-Probabilitas

  1. Convenience Sampling: Wawancara dilakukan terhadap pekerja yang mudah dijangkau.
  2. Quota Sampling: Sejumlah pekerja tetap disurvei dalam setiap kategori tanpa pemilihan acak.
  3. Judgmental Sampling: Pekerja dipilih berdasarkan pertimbangan peneliti.
  4. Snowball Sampling: Pekerja awal merekomendasikan pekerja lain untuk berpartisipasi dalam survei.

III. Perhitungan MoE untuk Pengambilan Sampel Probabilitas

Margin of Error (MoE) dihitung menggunakan rumus:

\[ MoE = Z \times \left(\frac{s}{\sqrt{n}}\right) \]

Perbandingan Margin of Error (MoE) pada Metode Probability Sampling
Metode_Sampling Margin_of_Error
Simple Random Sampling 461891.3
Stratified Sampling 204840.1
Systematic Sampling 437038.7
Cluster Sampling 464172.3

Dimana:

  • Z = 1.96 (untuk tingkat kepercayaan 95%)
  • s = Simpangan baku sampel (dihitung dari data yang dikumpulkan)
  • n = Ukuran sampel

Perhitungan Simpangan Baku Sampel Berdasarkan Dataset

Rata.rata.Sampel Jumlah.Kuadrat.Deviasi Variansi Simpangan.Baku
Usia 38.74 1.483680e+05 1.48520e+02 12.19
Pendapatan 10993010.08 2.570387e+16 2.57296e+13 5072434.82
Jarak_Kerja_km 15.43 7.011303e+04 7.01800e+01 8.38
Waktu_Tempuh_menit 64.56 9.962985e+05 9.97300e+02 31.58

Dari hasil Margin of Error (MoE) untuk masing-masing metode Probability Sampling, kita dapat menyimpulkan:

  1. Stratified Sampling memiliki MoE paling kecil (204,840.1)
    • Ini berarti bahwa metode ini memberikan estimasi yang lebih akurat dibandingkan metode lainnya.
    • Hasil ini sesuai dengan teori bahwa pembagian populasi ke dalam strata berdasarkan karakteristik yang relevan (Moda Transportasi) mengurangi variabilitas antar kelompok dan meningkatkan akurasi estimasi.
  2. Systematic Sampling memiliki MoE sebesar (437,038.7)
    • MoE ini lebih besar dibandingkan Stratified Sampling, tetapi lebih kecil dari Simple Random Sampling dan Cluster Sampling.
    • Metode ini cukup efisien, tetapi bisa terpengaruh pola dalam data, yang mungkin menyebabkan sampel kurang representatif dalam beberapa kasus.
  3. Simple Random Sampling memiliki MoE sebesar (461,891.3)
    • Ini menunjukkan bahwa sampel acak murni tidak selalu menghasilkan MoE yang paling kecil, terutama jika distribusi populasi tidak merata.
    • Tidak adanya stratifikasi menyebabkan variasi dalam sampel yang lebih besar, sehingga MoE lebih tinggi dibandingkan Stratified Sampling.
  4. Cluster Sampling memiliki MoE terbesar (464,172.3)
    • MoE yang paling besar menunjukkan bahwa metode ini memberikan hasil yang paling bervariasi dibandingkan metode lainnya.
    • Hal ini bisa terjadi karena Cluster Sampling hanya mengambil beberapa kelompok secara acak, yang bisa menyebabkan sampel kurang representatif terhadap populasi secara keseluruhan.
    • MoE yang besar tidak selalu berarti metode ini buruk, tetapi menunjukkan bahwa hasilnya lebih rentan terhadap bias dibandingkan metode lain.

Kesimpulan

  • Stratified Sampling adalah metode terbaik untuk dataset ini, karena menghasilkan Margin of Error (MoE) paling kecil, sehingga memberikan estimasi yang lebih akurat.
  • Systematic Sampling memberikan hasil yang cukup baik, tetapi bisa terpengaruh pola dalam data.
  • Simple Random Sampling memiliki MoE yang lebih besar, menunjukkan bahwa metode ini mungkin kurang efisien dibandingkan Stratified Sampling untuk dataset ini.
  • Cluster Sampling memiliki MoE terbesar, yang berarti bahwa hasilnya paling bervariasi dan bisa lebih bias dibandingkan metode lainnya.

IV. Analisis Bias dalam Pengambilan Sampel Non-Probabilitas

Dalam pengambilan sampel non-probabilitas, pemilihan individu tidak dilakukan secara acak, sehingga berpotensi menimbulkan bias dalam hasil survei. Berikut adalah sumber bias dalam setiap metode dan dampaknya terhadap hasil survei, serta perbandingannya dengan metode probabilitas.

Metode Non-Probabilitas Sumber Bias Dampak Bias Dibandingkan dengan Probabilitas
Convenience Sampling Pemilihan responden berdasarkan kemudahan akses Tidak mewakili populasi secara menyeluruh SRS memberikan peluang yang lebih adil
Judgmental Sampling Pemilihan berdasarkan subjektivitas peneliti Tidak objektif, mengabaikan beberapa kelompok Stratified Sampling mempertimbangkan semua kelompok
Quota Sampling Tidak mempertimbangkan proporsi nyata populasi Distribusi tidak akurat, tetap bergantung pada aksesibilitas Stratified Sampling menggunakan distribusi populasi yang benar
Snowball Sampling Pemilihan berdasarkan rekomendasi individu lain Terbatas pada jaringan sosial tertentu, tidak independen Cluster Sampling lebih acak dan representatif

Kesimpulan

  • Metode Non-Probabilitas cenderung memiliki bias yang lebih tinggi, karena tidak menggunakan pemilihan acak dalam pengambilan sampel.
  • Metode Probabilitas lebih unggul dalam menghasilkan sampel yang lebih representatif, yang mengarah pada estimasi yang lebih akurat dan Margin of Error yang lebih kecil.
  • Jika waktu dan sumber daya terbatas, metode non-probabilitas bisa digunakan, tetapi harus diinterpretasikan dengan hati-hati karena kemungkinan besar terdapat bias yang mempengaruhi hasil survei.

V. Perbandingan Semua Metode

Setelah menghitung MoE dan menganalisis bias, hasil menunjukkan bahwa metode probabilitas memberikan estimasi yang lebih akurat dibandingkan metode non-probabilitas. Stratified Sampling terbukti lebih efisien dalam menangkap variasi populasi, sementara Cluster Sampling lebih ekonomis untuk sampel dalam jumlah besar.

Metode non-probabilitas lebih cepat dan murah tetapi memiliki tingkat bias yang lebih tinggi, sehingga kurang dapat digeneralisasi ke populasi luas.


VI. Ukuran Sampel yang Diperlukan untuk MoE = 5

Ukuran sampel minimum yang diperlukan dihitung dengan rumus:

\[ MoE = Z \times \left(\frac{\sigma}{\sqrt{n}}\right) \]

Di mana:

  • Z = 1.96 (nilai Z untuk tingkat kepercayaan 95%)
  • σ = 8.38 (simpangan baku sampel berdasarkan Jarak kerja)
  • MoE = 5 (Margin of Error yang diinginkan)

Untuk menghitung ukuran sampel minimum (n), kita gunakan rumus:

\[ n = \left(\frac{Z \times \sigma}{MoE}\right)^2 \]

Substitusi nilai:

\[ n = \left(\frac{1.96 \times 8.38}{5}\right)^2 \]

\[ n = \left(\frac{16.4248}{5}\right)^2 \]

\[ n = (3.28496)^2 \]

\[ n = 10.8 \]

Karena ukuran sampel harus berupa bilangan bulat, maka:

\[ n_{\text{min}} = \lceil 10.8 \rceil = 11 \]

Kesimpulan

Ukuran sampel minimum yang diperlukan adalah 11 individu untuk mencapai Margin of Error (MoE) sebesar 5 dengan tingkat kepercayaan 95%.


VII. Kesimpulan dan Rekomendasi

Metode probabilitas direkomendasikan untuk penelitian yang membutuhkan hasil yang dapat digeneralisasi, karena memberikan Margin of Error yang lebih kecil dan hasil yang lebih akurat. Namun, metode non-probabilitas dapat digunakan dalam penelitian eksploratif atau ketika sumber daya terbatas.

Untuk mendapatkan hasil yang lebih optimal dalam survei terkait moda transportasi pekerja harian, Stratified Sampling direkomendasikan karena memungkinkan proporsi populasi yang lebih akurat dalam setiap kategori yang ditentukan.


Referensi

[1] M. S. P. Mahmud, R. Chen, A. A. Mamun, and S. M. S. Islam, “A systematic review of the impact of artificial intelligence on the management of chronic diseases,” Reliability Engineering & System Safety, vol. 236, p. 109157, 2023. [Online]. Available: https://www.sciencedirect.com/science/article/pii/S0951832023001369. [Accessed: 08-Mar-2025].

LS0tDQp0aXRsZTogIlRla25payBTYW1wbGluZyBkYW4gU3VydmVpIg0Kc3VidGl0bGU6ICJNYXJnaW4gb2YgRXJyb3IgcGFkYSBNb2RhIFRyYW5zcG9ydGFzaSINCmF1dGhvcjogIkFseWEgTWF1cmEgUmFkaXRoYSAoNTIyNDAwMDMpIg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJDOi9Vc2Vycy9EZWxsL09uZURyaXZlL0RvY3VtZW50cy9zdGF0aXMvc3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgaWQ9ImF1dGhvciIgc3JjPSJDOlxVc2Vyc1xEZWxsXE9uZURyaXZlXERvY3VtZW50c1xzdGF0aXNcaW1nL21vcmEuanBnIiBhbHQ9IkxvZ28iIHN0eWxlPSJ3aWR0aDozMDBweDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiPg0KDQotLS0NCg0KIyBEYXRhc2V0IE1vZGEgVHJhbnNwb3J0YXNpDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpkYXRhIDwtIHJlYWQuY3N2KCJDOi9Vc2Vycy9EZWxsL09uZURyaXZlL0RvY3VtZW50cy9zdGF0aXMvZGF0cmFucy5jc3YiLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiLCIsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkNCmhlYWQoZGF0YSkgICAjIE1lbmFtcGlsa2FuIDYgYmFyaXMgcGVydGFtYQ0KYGBgIA0KDQojIExhcG9yYW4gU3R1ZGkNCg0KIyMgSS4gUGVuZGFodWx1YW4NCiAgUGVuZWxpdGlhbiBpbmkgYmVydHVqdWFuIHVudHVrIG1lbWJhbmRpbmdrYW4gZWZla3Rpdml0YXMgbWV0b2RlIFByb2JhYmlsaXR5IFNhbXBsaW5nIGRhbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFsYW0gbWVuZ2VzdGltYXNpIGthcmFrdGVyaXN0aWsgcG9wdWxhc2ksIGtodXN1c255YSBkYWxhbSBtZW1wZXJraXJha2FuIG1vZGEgdHJhbnNwb3J0YXNpIHlhbmcgZGlndW5ha2FuIG9sZWggcGVrZXJqYSBoYXJpYW4uIERhbGFtIHBlbmVsaXRpYW4gYmVyYmFzaXMgc2FtcGVsLCBNYXJnaW4gb2YgRXJyb3IgKE1vRSkgbWVydXBha2FuIGluZGlrYXRvciBrcnVzaWFsIHlhbmcgbWVudW5qdWtrYW4gc2VqYXVoIG1hbmEgaGFzaWwgc2FtcGVsIGRhcGF0IG1lcmVwcmVzZW50YXNpa2FuIHBvcHVsYXNpIHNlY2FyYSBrZXNlbHVydWhhbi4NCg0KICBNb0UgYmVycGVyYW4gcGVudGluZyBkYWxhbSBtZW5lbnR1a2FuIGFrdXJhc2kgZXN0aW1hc2kgeWFuZyBkaWhhc2lsa2FuIGRhcmkgc3VhdHUgc3VydmVpLiBTZW1ha2luIGtlY2lsIG5pbGFpIE1vRSwgc2VtYWtpbiBkZWthdCBoYXNpbCBzdXJ2ZWkgZGVuZ2FuIGtvbmRpc2kgc2ViZW5hcm55YSBkaSBwb3B1bGFzaSwgc2VoaW5nZ2Ega2VzaW1wdWxhbiB5YW5nIGRpYW1iaWwgbWVuamFkaSBsZWJpaCByZWxpYWJlbC4gTmFtdW4sIHBlbmd1cmFuZ2FuIE1vRSBzZXJpbmcga2FsaSBtZW1lcmx1a2FuIHBlbmluZ2thdGFuIHVrdXJhbiBzYW1wZWwsIHlhbmcgZGFwYXQgYmVyZGFtcGFrIHBhZGEgZWZpc2llbnNpIHdha3R1IGRhbiBzdW1iZXIgZGF5YS4NCg0KICBEZW5nYW4gbWVtYWhhbWkgYmVyYmFnYWkgbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCBkYW4gYmFnYWltYW5hIG1hc2luZy1tYXNpbmcgbWV0b2RlIG1lbWVuZ2FydWhpIE1vRSwgcGVuZWxpdGlhbiBpbmkganVnYSBiZXJ0dWp1YW4gdW50dWsgbWVuZ2V2YWx1YXNpIHBvdGVuc2kgYmlhcyB5YW5nIGRhcGF0IG11bmN1bC4gTWV0b2RlIFByb2JhYmlsaXR5IFNhbXBsaW5nLCB5YW5nIG1lbmdndW5ha2FuIHBlbmRla2F0YW4gYWNhaywgdW11bW55YSBtZW5naGFzaWxrYW4gZXN0aW1hc2kgeWFuZyBsZWJpaCBha3VyYXQgZGVuZ2FuIE1vRSB5YW5nIGxlYmloIGtlY2lsIGRpYmFuZGluZ2thbiBtZXRvZGUgTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nLCB5YW5nIGRhcGF0IG1lbWlsaWtpIGJpYXMgc2VsZWtzaSBsZWJpaCB0aW5nZ2kuIE9sZWgga2FyZW5hIGl0dSwgYW5hbGlzaXMgaW5pIGFrYW4gbWVtYmVyaWthbiB3YXdhc2FuIG1lbmRhbGFtIG1lbmdlbmFpIGtlbGViaWhhbiBkYW4ga2V0ZXJiYXRhc2FuIHNldGlhcCBtZXRvZGUgc2VydGEgcmVrb21lbmRhc2kgdGVyYmFpayB1bnR1ayBkaWd1bmFrYW4gZGFsYW0gcGVuZWxpdGlhbiBiZXJiYXNpcyBzdXJ2ZWkuDQoNCi0tLQ0KDQojIyBJSS4gTWV0b2RlIFBlbmdhbWJpbGFuIFNhbXBlbCB5YW5nIERpZ3VuYWthbg0KTWV0b2RlIHlhbmcgZGl0ZXJhcGthbiBkYWxhbSBwZW5lbGl0aWFuIGluaSBtZWxpcHV0aToNCg0KIyMjIEEuIE1ldG9kZSBQcm9iYWJpbGl0YXMgDQoNCjEuICoqU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSoqICANClBpbGloICoqNDUzIGluZGl2aWR1Kiogc2VjYXJhIGFjYWsgZGFyaSBzZWx1cnVoIHBvcHVsYXNpIG1lbmdndW5ha2FuIGdlbmVyYXRvciBhbmdrYSBhY2FrLiBNZXRvZGUgaW5pIG1lbWFzdGlrYW4gc2V0aWFwIGluZGl2aWR1IG1lbWlsaWtpIHBlbHVhbmcgeWFuZyBzYW1hIHVudHVrIGRpcGlsaWgsIHNlaGluZ2dhIGhhc2lsIGxlYmloIHRpZGFrIGJpYXMuICANCjIuICoqU3RyYXRpZmllZCBTYW1wbGluZyoqICANCkJhZ2kgcG9wdWxhc2kga2UgZGFsYW0ga2Vsb21wb2sgYmVyZGFzYXJrYW4gKiptb2RhIHRyYW5zcG9ydGFzaSoqLCBrZW11ZGlhbiBhbWJpbCAqKjQ1MyBzYW1wZWwgc2VjYXJhIGFjYWsgZGFyaSBzZXRpYXAga2Vsb21wb2sqKi4gTWV0b2RlIGluaSBtZW5pbmdrYXRrYW4gcmVwcmVzZW50YXRpdml0YXMga2FyZW5hIG1lbWFzdGlrYW4gc2V0aWFwIGtlbG9tcG9rIGRhbGFtIHBvcHVsYXNpIHRlcndha2lsaSBzZWNhcmEgcHJvcG9yc2lvbmFsLiAgDQozLiAqKlN5c3RlbWF0aWMgU2FtcGxpbmcqKiAgDQpQaWxpaCBpbmRpdmlkdSBwYWRhIGludGVydmFsIHRldGFwIGRhcmkgZGFmdGFyIHBvcHVsYXNpIHlhbmcgdGVsYWggZGl1cnV0a2FuLiAgDQogICAqKkNvbnRvaDoqKiBKaWthIHRlcmRhcGF0ICoqMS4wMDAgaW5kaXZpZHUqKiBkYWxhbSBwb3B1bGFzaSBkYW4gc2FtcGVsIHlhbmcgZGlidXR1aGthbiBhZGFsYWggKio0NTMqKiwgbWFrYSBpbnRlcnZhbCBwZW1pbGloYW4gZGloaXR1bmcgc2ViYWdhaSBiZXJpa3V0OiAgDQogICBcWw0KICAgayA9IFxmcmFjezEwMDB9ezQ1M30gPSAyDQogICBcXQ0KICAgQXJ0aW55YSwgaW5kaXZpZHUgZGlwaWxpaCBzZXRpYXAgKippbmRpdmlkdSBrZS0yKiogZGFyaSBkYWZ0YXIgcG9wdWxhc2kuICANCjQuICoqQ2x1c3RlciBTYW1wbGluZyoqICANClBpbGloIHNlY2FyYSBhY2FrICoqZHVhIG1vZGEgdHJhbnNwb3J0YXNpKiosIGtlbXVkaWFuIHN1cnZlaSAqKnNlbXVhIGluZGl2aWR1KiogZGFsYW0ga2F0ZWdvcmkgdGVyc2VidXQuIE1ldG9kZSBpbmkgbGViaWggZWZpc2llbiB1bnR1ayBwb3B1bGFzaSBiZXNhciwgdGV0YXBpIGRhcGF0IG1lbmluZ2thdGthbiAqKk1hcmdpbiBvZiBFcnJvciAoTW9FKSoqIGppa2EgY2x1c3RlciB5YW5nIHRlcnBpbGloIHRpZGFrIGN1a3VwIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBrZXNlbHVydWhhbi4NCg0KIyMjIEIuIE1ldG9kZSBOb24tUHJvYmFiaWxpdGFzDQoxLiAqKkNvbnZlbmllbmNlIFNhbXBsaW5nKio6IFdhd2FuY2FyYSBkaWxha3VrYW4gdGVyaGFkYXAgcGVrZXJqYSB5YW5nIG11ZGFoIGRpamFuZ2thdS4NCjIuICoqUXVvdGEgU2FtcGxpbmcqKjogU2VqdW1sYWggcGVrZXJqYSB0ZXRhcCBkaXN1cnZlaSBkYWxhbSBzZXRpYXAga2F0ZWdvcmkgdGFucGEgcGVtaWxpaGFuIGFjYWsuDQozLiAqKkp1ZGdtZW50YWwgU2FtcGxpbmcqKjogUGVrZXJqYSBkaXBpbGloIGJlcmRhc2Fya2FuIHBlcnRpbWJhbmdhbiBwZW5lbGl0aS4NCjQuICoqU25vd2JhbGwgU2FtcGxpbmcqKjogUGVrZXJqYSBhd2FsIG1lcmVrb21lbmRhc2lrYW4gcGVrZXJqYSBsYWluIHVudHVrIGJlcnBhcnRpc2lwYXNpIGRhbGFtIHN1cnZlaS4NCg0KLS0tDQoNCiMjIElJSS4gUGVyaGl0dW5nYW4gTW9FIHVudHVrIFBlbmdhbWJpbGFuIFNhbXBlbCBQcm9iYWJpbGl0YXMNCk1hcmdpbiBvZiBFcnJvciAoTW9FKSBkaWhpdHVuZyBtZW5nZ3VuYWthbiBydW11czoNCg0KXFsNCk1vRSA9IFogXHRpbWVzIFxsZWZ0KFxmcmFje3N9e1xzcXJ0e259fVxyaWdodCkNClxdDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIExvYWQgbGlicmFyeQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGliYmxlKSAgDQpsaWJyYXJ5KGtuaXRyKSANCg0KIyBCYWNhIGRhdGFzZXQNCmRhdGEgPC0gcmVhZC5jc3YoIkM6L1VzZXJzL0RlbGwvT25lRHJpdmUvRG9jdW1lbnRzL3N0YXRpcy9kYXRyYW5zLmNzdiIsIA0KICAgICAgICAgICAgICAgICBoZWFkZXI9VFJVRSwgc2VwPSIsIiwgc3RyaW5nc0FzRmFjdG9ycz1GQUxTRSkNCg0KIyBGdW5nc2kgdW50dWsgbWVuZ2hpdHVuZyBNYXJnaW4gb2YgRXJyb3IgKE1vRSkNCmNhbGN1bGF0ZV9tb2UgPC0gZnVuY3Rpb24oc2FtcGxlX2RhdGEsIGNvbmZpZGVuY2VfbGV2ZWwgPSAwLjk1KSB7DQogIHpfc2NvcmUgPC0gcW5vcm0oKDEgKyBjb25maWRlbmNlX2xldmVsKSAvIDIpICAjIFotc2NvcmUgdW50dWsgQ0kgOTUlDQogIHMgPC0gc2Qoc2FtcGxlX2RhdGEkUGVuZGFwYXRhbiwgbmEucm0gPSBUUlVFKSAgIyBTaW1wYW5nYW4gYmFrdSBzYW1wZWwNCiAgbiA8LSBucm93KHNhbXBsZV9kYXRhKSAgIyBVa3VyYW4gc2FtcGVsDQogIG1vZSA8LSB6X3Njb3JlICogKHMgLyBzcXJ0KG4pKQ0KICByZXR1cm4obW9lKQ0KfQ0KDQojIDEuIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykNCnNldC5zZWVkKDEyMykNCnNyc19zYW1wbGUgPC0gZGF0YSAlPiUgc2FtcGxlX24oNDUzKQ0KbW9lX3NycyA8LSBjYWxjdWxhdGVfbW9lKHNyc19zYW1wbGUpDQoNCiMgMi4gU3RyYXRpZmllZCBTYW1wbGluZyAoYmVyZGFzYXJrYW4gTW9kYSBUcmFuc3BvcnRhc2kpDQpzdHJhdGFfc2FtcGxlIDwtIGRhdGEgJT4lDQogIGdyb3VwX2J5KE1vZGFfVHJhbnNwb3J0YXNpKSAlPiUNCiAgc2FtcGxlX24oNDUzLCByZXBsYWNlID0gVFJVRSkgICMgUGFzdGlrYW4gc2V0aWFwIHN0cmF0YSBtZW1pbGlraSBjdWt1cCBzYW1wZWwNCm1vZV9zdHJhdGEgPC0gY2FsY3VsYXRlX21vZShzdHJhdGFfc2FtcGxlKQ0KDQojIDMuIFN5c3RlbWF0aWMgU2FtcGxpbmcNCmsgPC0gZmxvb3IobnJvdyhkYXRhKSAvIDQ1MykNCnN5c19zYW1wbGUgPC0gZGF0YVtzZXEoMSwgbnJvdyhkYXRhKSwgYnkgPSBrKSwgXQ0KbW9lX3N5cyA8LSBjYWxjdWxhdGVfbW9lKHN5c19zYW1wbGUpDQoNCiMgNC4gQ2x1c3RlciBTYW1wbGluZyAoUGlsaWggMiBNb2RhIFRyYW5zcG9ydGFzaSBzZWNhcmEgYWNhaykNCmNsdXN0ZXJzIDwtIHNhbXBsZSh1bmlxdWUoZGF0YSRNb2RhX1RyYW5zcG9ydGFzaSksIDIpDQpjbHVzdGVyX3NhbXBsZSA8LSBkYXRhICU+JSBmaWx0ZXIoTW9kYV9UcmFuc3BvcnRhc2kgJWluJSBjbHVzdGVycykNCm1vZV9jbHVzdGVyIDwtIGNhbGN1bGF0ZV9tb2UoY2x1c3Rlcl9zYW1wbGUpDQoNCiMgTWVtYnVhdCB0YWJlbCBoYXNpbCBkZW5nYW4gZm9ybWF0IHJhcGkNCmhhc2lsX21vZSA8LSB0aWJibGUoDQogIE1ldG9kZV9TYW1wbGluZyA9IGMoIlNpbXBsZSBSYW5kb20gU2FtcGxpbmciLCAiU3RyYXRpZmllZCBTYW1wbGluZyIsICJTeXN0ZW1hdGljIFNhbXBsaW5nIiwgIkNsdXN0ZXIgU2FtcGxpbmciKSwNCiAgTWFyZ2luX29mX0Vycm9yID0gYyhtb2Vfc3JzLCBtb2Vfc3RyYXRhLCBtb2Vfc3lzLCBtb2VfY2x1c3RlcikNCikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkZW5nYW4ga2FibGUNCmthYmxlKGhhc2lsX21vZSwgY2FwdGlvbiA9ICJQZXJiYW5kaW5nYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIHBhZGEgTWV0b2RlIFByb2JhYmlsaXR5IFNhbXBsaW5nIikNCg0KYGBgIA0KDQpEaW1hbmE6DQoNCi0gKipaKiogPSAxLjk2ICh1bnR1ayB0aW5na2F0IGtlcGVyY2F5YWFuIDk1JSkNCi0gKipzKiogPSBTaW1wYW5nYW4gYmFrdSBzYW1wZWwgKGRpaGl0dW5nIGRhcmkgZGF0YSB5YW5nIGRpa3VtcHVsa2FuKQ0KLSAqKm4qKiA9IFVrdXJhbiBzYW1wZWwNCg0KKipQZXJoaXR1bmdhbiBTaW1wYW5nYW4gQmFrdSBTYW1wZWwgQmVyZGFzYXJrYW4gRGF0YXNldCoqDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIExvYWQgbGlicmFyeQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoa25pdHIpICAjIFVudHVrIHRhbXBpbGFuIHRhYmVsIHJhcGkNCg0KIyBCYWNhIGRhdGFzZXQNCmRmIDwtIHJlYWQuY3N2KCJDOi9Vc2Vycy9EZWxsL09uZURyaXZlL0RvY3VtZW50cy9zdGF0aXMvZGF0cmFucy5jc3YiKQ0KDQojIFBpbGloIHZhcmlhYmVsIG51bWVyaWsNCm51bWVyaWNfY29scyA8LSBjKCJVc2lhIiwgIlBlbmRhcGF0YW4iLCAiSmFyYWtfS2VyamFfa20iLCAiV2FrdHVfVGVtcHVoX21lbml0IikNCg0KIyBGdW5nc2kgdW50dWsgbWVuZ2hpdHVuZyBzdGF0aXN0aWsgc2FtcGVsDQpjb21wdXRlX3NhbXBsZV9zdGF0cyA8LSBmdW5jdGlvbihkYXRhKSB7DQogIG4gPC0gbGVuZ3RoKGRhdGEpICAjIEp1bWxhaCBzYW1wZWwNCiAgeF9iYXIgPC0gbWVhbihkYXRhLCBuYS5ybSA9IFRSVUUpICAjIFJhdGEtcmF0YSBzYW1wZWwNCiAgc3VtX3NxdWFyZWRfZGV2aWF0aW9uIDwtIHN1bSgoZGF0YSAtIHhfYmFyKV4yLCBuYS5ybSA9IFRSVUUpICAjIEp1bWxhaCBrdWFkcmF0IGRldmlhc2kNCiAgdmFyaWFuY2UgPC0gc3VtX3NxdWFyZWRfZGV2aWF0aW9uIC8gKG4gLSAxKSAgIyBWYXJpYW5zaSBzYW1wZWwNCiAgc2FtcGxlX3N0ZCA8LSBzcXJ0KHZhcmlhbmNlKSAgIyBTaW1wYW5nYW4gYmFrdSBzYW1wZWwNCiAgDQogIHJldHVybihkYXRhLmZyYW1lKA0KICAgICJSYXRhLXJhdGEgU2FtcGVsIiA9IHJvdW5kKHhfYmFyLCAyKSwNCiAgICAiSnVtbGFoIEt1YWRyYXQgRGV2aWFzaSIgPSByb3VuZChzdW1fc3F1YXJlZF9kZXZpYXRpb24sIDIpLA0KICAgICJWYXJpYW5zaSIgPSByb3VuZCh2YXJpYW5jZSwgMiksDQogICAgIlNpbXBhbmdhbiBCYWt1IiA9IHJvdW5kKHNhbXBsZV9zdGQsIDIpDQogICkpDQp9DQoNCiMgSGl0dW5nIHN0YXRpc3RpayB1bnR1ayBzZW11YSB2YXJpYWJlbCBudW1lcmlrDQpyZXN1bHRzIDwtIGxhcHBseShkZltudW1lcmljX2NvbHNdLCBjb21wdXRlX3NhbXBsZV9zdGF0cykNCg0KIyBHYWJ1bmdrYW4gaGFzaWwgbWVuamFkaSBzYXR1IHRhYmVsDQpmaW5hbF9yZXN1bHRzIDwtIGRvLmNhbGwocmJpbmQsIHJlc3VsdHMpDQpyb3duYW1lcyhmaW5hbF9yZXN1bHRzKSA8LSBudW1lcmljX2NvbHMNCmthYmxlKGZpbmFsX3Jlc3VsdHMsIGFsaWduID0gImMiKQ0KDQoNCmBgYCANCg0KLS0tDQoNCkRhcmkgaGFzaWwgKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkgdW50dWsgbWFzaW5nLW1hc2luZyBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiwga2l0YSBkYXBhdCBtZW55aW1wdWxrYW46DQoNCjEuICoqU3RyYXRpZmllZCBTYW1wbGluZyBtZW1pbGlraSBNb0UgcGFsaW5nIGtlY2lsICgyMDQsODQwLjEpKiogIA0KICAgLSBJbmkgYmVyYXJ0aSBiYWh3YSBtZXRvZGUgaW5pIG1lbWJlcmlrYW4gZXN0aW1hc2kgeWFuZyBsZWJpaCBha3VyYXQgZGliYW5kaW5na2FuIG1ldG9kZSBsYWlubnlhLiAgDQogICAtIEhhc2lsIGluaSBzZXN1YWkgZGVuZ2FuIHRlb3JpIGJhaHdhIHBlbWJhZ2lhbiBwb3B1bGFzaSBrZSBkYWxhbSBzdHJhdGEgYmVyZGFzYXJrYW4ga2FyYWt0ZXJpc3RpayB5YW5nIHJlbGV2YW4gKE1vZGEgVHJhbnNwb3J0YXNpKSBtZW5ndXJhbmdpIHZhcmlhYmlsaXRhcyBhbnRhciBrZWxvbXBvayBkYW4gbWVuaW5na2F0a2FuIGFrdXJhc2kgZXN0aW1hc2kuICANCg0KMi4gKipTeXN0ZW1hdGljIFNhbXBsaW5nIG1lbWlsaWtpIE1vRSBzZWJlc2FyICg0MzcsMDM4LjcpKiogIA0KICAgLSBNb0UgaW5pIGxlYmloIGJlc2FyIGRpYmFuZGluZ2thbiBTdHJhdGlmaWVkIFNhbXBsaW5nLCB0ZXRhcGkgbGViaWgga2VjaWwgZGFyaSBTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIGRhbiBDbHVzdGVyIFNhbXBsaW5nLiAgDQogICAtIE1ldG9kZSBpbmkgY3VrdXAgZWZpc2llbiwgdGV0YXBpIGJpc2EgdGVycGVuZ2FydWggcG9sYSBkYWxhbSBkYXRhLCB5YW5nIG11bmdraW4gbWVueWViYWJrYW4gc2FtcGVsIGt1cmFuZyByZXByZXNlbnRhdGlmIGRhbGFtIGJlYmVyYXBhIGthc3VzLiAgDQoNCjMuICoqU2ltcGxlIFJhbmRvbSBTYW1wbGluZyBtZW1pbGlraSBNb0Ugc2ViZXNhciAoNDYxLDg5MS4zKSoqICANCiAgIC0gSW5pIG1lbnVuanVra2FuIGJhaHdhIHNhbXBlbCBhY2FrIG11cm5pIHRpZGFrIHNlbGFsdSBtZW5naGFzaWxrYW4gTW9FIHlhbmcgcGFsaW5nIGtlY2lsLCB0ZXJ1dGFtYSBqaWthIGRpc3RyaWJ1c2kgcG9wdWxhc2kgdGlkYWsgbWVyYXRhLiAgDQogICAtIFRpZGFrIGFkYW55YSBzdHJhdGlmaWthc2kgbWVueWViYWJrYW4gdmFyaWFzaSBkYWxhbSBzYW1wZWwgeWFuZyBsZWJpaCBiZXNhciwgc2VoaW5nZ2EgTW9FIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gU3RyYXRpZmllZCBTYW1wbGluZy4gIA0KDQo0LiAqKkNsdXN0ZXIgU2FtcGxpbmcgbWVtaWxpa2kgTW9FIHRlcmJlc2FyICg0NjQsMTcyLjMpKiogIA0KICAgLSBNb0UgeWFuZyBwYWxpbmcgYmVzYXIgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIGluaSBtZW1iZXJpa2FuIGhhc2lsIHlhbmcgcGFsaW5nIGJlcnZhcmlhc2kgZGliYW5kaW5na2FuIG1ldG9kZSBsYWlubnlhLiAgDQogICAtIEhhbCBpbmkgYmlzYSB0ZXJqYWRpIGthcmVuYSBDbHVzdGVyIFNhbXBsaW5nIGhhbnlhIG1lbmdhbWJpbCBiZWJlcmFwYSBrZWxvbXBvayBzZWNhcmEgYWNhaywgeWFuZyBiaXNhIG1lbnllYmFia2FuIHNhbXBlbCBrdXJhbmcgcmVwcmVzZW50YXRpZiB0ZXJoYWRhcCBwb3B1bGFzaSBzZWNhcmEga2VzZWx1cnVoYW4uICANCiAgIC0gTW9FIHlhbmcgYmVzYXIgdGlkYWsgc2VsYWx1IGJlcmFydGkgbWV0b2RlIGluaSBidXJ1aywgdGV0YXBpIG1lbnVuanVra2FuIGJhaHdhIGhhc2lsbnlhIGxlYmloIHJlbnRhbiB0ZXJoYWRhcCBiaWFzIGRpYmFuZGluZ2thbiBtZXRvZGUgbGFpbi4gIA0KDQojIyMgS2VzaW1wdWxhbg0KLSAqKlN0cmF0aWZpZWQgU2FtcGxpbmcgYWRhbGFoIG1ldG9kZSB0ZXJiYWlrIHVudHVrIGRhdGFzZXQgaW5pKiosIGthcmVuYSBtZW5naGFzaWxrYW4gKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkgcGFsaW5nIGtlY2lsKiosIHNlaGluZ2dhIG1lbWJlcmlrYW4gZXN0aW1hc2kgeWFuZyBsZWJpaCBha3VyYXQuICANCi0gKipTeXN0ZW1hdGljIFNhbXBsaW5nIG1lbWJlcmlrYW4gaGFzaWwgeWFuZyBjdWt1cCBiYWlrKiosIHRldGFwaSBiaXNhIHRlcnBlbmdhcnVoIHBvbGEgZGFsYW0gZGF0YS4gIA0KLSAqKlNpbXBsZSBSYW5kb20gU2FtcGxpbmcgbWVtaWxpa2kgTW9FIHlhbmcgbGViaWggYmVzYXIqKiwgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIGluaSBtdW5na2luIGt1cmFuZyBlZmlzaWVuIGRpYmFuZGluZ2thbiAqKlN0cmF0aWZpZWQgU2FtcGxpbmcqKiB1bnR1ayBkYXRhc2V0IGluaS4gIA0KLSAqKkNsdXN0ZXIgU2FtcGxpbmcgbWVtaWxpa2kgTW9FIHRlcmJlc2FyKiosIHlhbmcgYmVyYXJ0aSBiYWh3YSBoYXNpbG55YSBwYWxpbmcgYmVydmFyaWFzaSBkYW4gYmlzYSBsZWJpaCBiaWFzIGRpYmFuZGluZ2thbiBtZXRvZGUgbGFpbm55YS4gIA0KDQotLS0NCg0KIyMgSVYuIEFuYWxpc2lzIEJpYXMgZGFsYW0gUGVuZ2FtYmlsYW4gU2FtcGVsIE5vbi1Qcm9iYWJpbGl0YXMNCg0KRGFsYW0gKipwZW5nYW1iaWxhbiBzYW1wZWwgbm9uLXByb2JhYmlsaXRhcyoqLCBwZW1pbGloYW4gaW5kaXZpZHUgdGlkYWsgZGlsYWt1a2FuIHNlY2FyYSBhY2FrLCBzZWhpbmdnYSBiZXJwb3RlbnNpIG1lbmltYnVsa2FuIGJpYXMgZGFsYW0gaGFzaWwgc3VydmVpLiBCZXJpa3V0IGFkYWxhaCAqKnN1bWJlciBiaWFzIGRhbGFtIHNldGlhcCBtZXRvZGUqKiBkYW4gKipkYW1wYWtueWEgdGVyaGFkYXAgaGFzaWwgc3VydmVpKiosIHNlcnRhIHBlcmJhbmRpbmdhbm55YSBkZW5nYW4gbWV0b2RlIHByb2JhYmlsaXRhcy4NCg0KDQp8ICoqTWV0b2RlIE5vbi1Qcm9iYWJpbGl0YXMqKiB8ICoqU3VtYmVyIEJpYXMqKiB8ICoqRGFtcGFrIEJpYXMqKiB8ICoqRGliYW5kaW5na2FuIGRlbmdhbiBQcm9iYWJpbGl0YXMqKiB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAqKkNvbnZlbmllbmNlIFNhbXBsaW5nKiogfCBQZW1pbGloYW4gcmVzcG9uZGVuIGJlcmRhc2Fya2FuIGtlbXVkYWhhbiBha3NlcyB8IFRpZGFrIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBtZW55ZWx1cnVoIHwgU1JTIG1lbWJlcmlrYW4gcGVsdWFuZyB5YW5nIGxlYmloIGFkaWwgfA0KfCAqKkp1ZGdtZW50YWwgU2FtcGxpbmcqKiB8IFBlbWlsaWhhbiBiZXJkYXNhcmthbiBzdWJqZWt0aXZpdGFzIHBlbmVsaXRpIHwgVGlkYWsgb2JqZWt0aWYsIG1lbmdhYmFpa2FuIGJlYmVyYXBhIGtlbG9tcG9rIHwgU3RyYXRpZmllZCBTYW1wbGluZyBtZW1wZXJ0aW1iYW5na2FuIHNlbXVhIGtlbG9tcG9rIHwNCnwgKipRdW90YSBTYW1wbGluZyoqIHwgVGlkYWsgbWVtcGVydGltYmFuZ2thbiBwcm9wb3JzaSBueWF0YSBwb3B1bGFzaSB8IERpc3RyaWJ1c2kgdGlkYWsgYWt1cmF0LCB0ZXRhcCBiZXJnYW50dW5nIHBhZGEgYWtzZXNpYmlsaXRhcyB8IFN0cmF0aWZpZWQgU2FtcGxpbmcgbWVuZ2d1bmFrYW4gZGlzdHJpYnVzaSBwb3B1bGFzaSB5YW5nIGJlbmFyIHwNCnwgKipTbm93YmFsbCBTYW1wbGluZyoqIHwgUGVtaWxpaGFuIGJlcmRhc2Fya2FuIHJla29tZW5kYXNpIGluZGl2aWR1IGxhaW4gfCBUZXJiYXRhcyBwYWRhIGphcmluZ2FuIHNvc2lhbCB0ZXJ0ZW50dSwgdGlkYWsgaW5kZXBlbmRlbiB8IENsdXN0ZXIgU2FtcGxpbmcgbGViaWggYWNhayBkYW4gcmVwcmVzZW50YXRpZiB8DQoNCg0KIyMjIEtlc2ltcHVsYW4NCg0KLSAqKk1ldG9kZSBOb24tUHJvYmFiaWxpdGFzKiogY2VuZGVydW5nIG1lbWlsaWtpICoqYmlhcyB5YW5nIGxlYmloIHRpbmdnaSoqLCBrYXJlbmEgdGlkYWsgbWVuZ2d1bmFrYW4gcGVtaWxpaGFuIGFjYWsgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLiAgDQotICoqTWV0b2RlIFByb2JhYmlsaXRhcyBsZWJpaCB1bmdndWwqKiBkYWxhbSBtZW5naGFzaWxrYW4gc2FtcGVsIHlhbmcgKipsZWJpaCByZXByZXNlbnRhdGlmKiosIHlhbmcgbWVuZ2FyYWggcGFkYSBlc3RpbWFzaSB5YW5nIGxlYmloIGFrdXJhdCBkYW4gKipNYXJnaW4gb2YgRXJyb3IgeWFuZyBsZWJpaCBrZWNpbCoqLiAgDQotIEppa2EgKip3YWt0dSBkYW4gc3VtYmVyIGRheWEgdGVyYmF0YXMqKiwgbWV0b2RlIG5vbi1wcm9iYWJpbGl0YXMgKipiaXNhIGRpZ3VuYWthbioqLCB0ZXRhcGkgaGFydXMgKipkaWludGVycHJldGFzaWthbiBkZW5nYW4gaGF0aS1oYXRpKioga2FyZW5hIGtlbXVuZ2tpbmFuIGJlc2FyIHRlcmRhcGF0IGJpYXMgeWFuZyBtZW1wZW5nYXJ1aGkgaGFzaWwgc3VydmVpLg0KDQotLS0NCg0KIyMgVi4gUGVyYmFuZGluZ2FuIFNlbXVhIE1ldG9kZQ0KU2V0ZWxhaCBtZW5naGl0dW5nIE1vRSBkYW4gbWVuZ2FuYWxpc2lzIGJpYXMsIGhhc2lsIG1lbnVuanVra2FuIGJhaHdhIG1ldG9kZSBwcm9iYWJpbGl0YXMgbWVtYmVyaWthbiBlc3RpbWFzaSB5YW5nIGxlYmloIGFrdXJhdCBkaWJhbmRpbmdrYW4gbWV0b2RlIG5vbi1wcm9iYWJpbGl0YXMuICoqU3RyYXRpZmllZCBTYW1wbGluZyoqIHRlcmJ1a3RpIGxlYmloIGVmaXNpZW4gZGFsYW0gbWVuYW5na2FwIHZhcmlhc2kgcG9wdWxhc2ksIHNlbWVudGFyYSAqKkNsdXN0ZXIgU2FtcGxpbmcqKiBsZWJpaCBla29ub21pcyB1bnR1ayBzYW1wZWwgZGFsYW0ganVtbGFoIGJlc2FyLg0KDQpNZXRvZGUgbm9uLXByb2JhYmlsaXRhcyBsZWJpaCBjZXBhdCBkYW4gbXVyYWggdGV0YXBpIG1lbWlsaWtpIHRpbmdrYXQgYmlhcyB5YW5nIGxlYmloIHRpbmdnaSwgc2VoaW5nZ2Ega3VyYW5nIGRhcGF0IGRpZ2VuZXJhbGlzYXNpIGtlIHBvcHVsYXNpIGx1YXMuDQoNCi0tLQ0KDQojIyBWSS4gVWt1cmFuIFNhbXBlbCB5YW5nIERpcGVybHVrYW4gdW50dWsgTW9FID0gNQ0KVWt1cmFuIHNhbXBlbCBtaW5pbXVtIHlhbmcgZGlwZXJsdWthbiBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNClxbDQpNb0UgPSBaIFx0aW1lcyBcbGVmdChcZnJhY3tcc2lnbWF9e1xzcXJ0e259fVxyaWdodCkNClxdDQoNCkRpIG1hbmE6DQoNCi0gKipaID0gMS45NioqIChuaWxhaSBaIHVudHVrIHRpbmdrYXQga2VwZXJjYXlhYW4gOTUlKSAgDQotICoqz4MgPSA4LjM4KiogKHNpbXBhbmdhbiBiYWt1IHNhbXBlbCBiZXJkYXNhcmthbiBKYXJhayBrZXJqYSkgIA0KLSAqKk1vRSA9IDUqKiAoTWFyZ2luIG9mIEVycm9yIHlhbmcgZGlpbmdpbmthbikgIA0KDQpVbnR1ayBtZW5naGl0dW5nIHVrdXJhbiBzYW1wZWwgbWluaW11bSAqKihuKSoqLCBraXRhIGd1bmFrYW4gcnVtdXM6DQoNClxbDQpuID0gXGxlZnQoXGZyYWN7WiBcdGltZXMgXHNpZ21hfXtNb0V9XHJpZ2h0KV4yDQpcXQ0KDQpTdWJzdGl0dXNpIG5pbGFpOg0KDQpcWw0KbiA9IFxsZWZ0KFxmcmFjezEuOTYgXHRpbWVzIDguMzh9ezV9XHJpZ2h0KV4yDQpcXQ0KDQpcWw0KbiA9IFxsZWZ0KFxmcmFjezE2LjQyNDh9ezV9XHJpZ2h0KV4yDQpcXQ0KDQpcWw0KbiA9ICgzLjI4NDk2KV4yDQpcXQ0KDQpcWw0KbiA9IDEwLjgNClxdDQoNCkthcmVuYSB1a3VyYW4gc2FtcGVsIGhhcnVzIGJlcnVwYSBiaWxhbmdhbiBidWxhdCwgbWFrYToNCg0KXFsNCm5fe1x0ZXh0e21pbn19ID0gXGxjZWlsIDEwLjggXHJjZWlsID0gMTENClxdDQoNCiMjIyBLZXNpbXB1bGFuDQpVa3VyYW4gc2FtcGVsICoqbWluaW11bSB5YW5nIGRpcGVybHVrYW4gYWRhbGFoIDExIGluZGl2aWR1KiogdW50dWsgbWVuY2FwYWkgKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkgc2ViZXNhciA1KiogZGVuZ2FuIHRpbmdrYXQga2VwZXJjYXlhYW4gOTUlLg0KDQotLS0NCg0KIyMgVklJLiBLZXNpbXB1bGFuIGRhbiBSZWtvbWVuZGFzaQ0KTWV0b2RlIHByb2JhYmlsaXRhcyBkaXJla29tZW5kYXNpa2FuIHVudHVrIHBlbmVsaXRpYW4geWFuZyBtZW1idXR1aGthbiBoYXNpbCB5YW5nIGRhcGF0IGRpZ2VuZXJhbGlzYXNpLCBrYXJlbmEgbWVtYmVyaWthbiBNYXJnaW4gb2YgRXJyb3IgeWFuZyBsZWJpaCBrZWNpbCBkYW4gaGFzaWwgeWFuZyBsZWJpaCBha3VyYXQuIE5hbXVuLCBtZXRvZGUgbm9uLXByb2JhYmlsaXRhcyBkYXBhdCBkaWd1bmFrYW4gZGFsYW0gcGVuZWxpdGlhbiBla3NwbG9yYXRpZiBhdGF1IGtldGlrYSBzdW1iZXIgZGF5YSB0ZXJiYXRhcy4NCg0KVW50dWsgbWVuZGFwYXRrYW4gaGFzaWwgeWFuZyBsZWJpaCBvcHRpbWFsIGRhbGFtIHN1cnZlaSB0ZXJrYWl0IG1vZGEgdHJhbnNwb3J0YXNpIHBla2VyamEgaGFyaWFuLCAqKlN0cmF0aWZpZWQgU2FtcGxpbmcqKiBkaXJla29tZW5kYXNpa2FuIGthcmVuYSBtZW11bmdraW5rYW4gcHJvcG9yc2kgcG9wdWxhc2kgeWFuZyBsZWJpaCBha3VyYXQgZGFsYW0gc2V0aWFwIGthdGVnb3JpIHlhbmcgZGl0ZW50dWthbi4NCg0KLS0tDQoNCiMgUmVmZXJlbnNpDQoNCioqWzFdKiogTS4gUy4gUC4gTWFobXVkLCBSLiBDaGVuLCBBLiBBLiBNYW11biwgYW5kIFMuIE0uIFMuIElzbGFtLCDigJxBIHN5c3RlbWF0aWMgcmV2aWV3IG9mIHRoZSBpbXBhY3Qgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2Ugb24gdGhlIG1hbmFnZW1lbnQgb2YgY2hyb25pYyBkaXNlYXNlcyzigJ0gKlJlbGlhYmlsaXR5IEVuZ2luZWVyaW5nICYgU3lzdGVtIFNhZmV0eSosIHZvbC4gMjM2LCBwLiAxMDkxNTcsIDIwMjMuIFtPbmxpbmVdLiBBdmFpbGFibGU6IFtodHRwczovL3d3dy5zY2llbmNlZGlyZWN0LmNvbS9zY2llbmNlL2FydGljbGUvcGlpL1MwOTUxODMyMDIzMDAxMzY5XShodHRwczovL3d3dy5zY2llbmNlZGlyZWN0LmNvbS9zY2llbmNlL2FydGljbGUvcGlpL1MwOTUxODMyMDIzMDAxMzY5KS4gW0FjY2Vzc2VkOiAwOC1NYXItMjAyNV0u