Tugas Individu

3σ vs. 6σ dan Z-Score vs T-Score - Teknik sampling dan survey

Foto Diri


1. 3σ vs. 6σ

3σ vs. 6σ

Gambar ini menunjukkan perbandingan antara 3 Sigma dan 6 Sigma dalam distribusi normal. 3 Sigma mencakup 99.73% data, sementara 6 Sigma mencakup 99.9999% data, yang berarti variasi atau kesalahan dalam proses jauh lebih sedikit. Kurva 6 Sigma lebih ramping dan tinggi, menandakan proses yang lebih presisi dan konsisten, sedangkan 3 Sigma lebih lebar, menunjukkan adanya lebih banyak variasi dan potensi cacat yang lebih tinggi. Semakin tinggi tingkat Sigma, semakin kecil kemungkinan kesalahan dalam suatu sistem atau produksi.Untuk memahami keduanya lebih lanjut mari pahami poin-poin berikut ini:

1.1. Konsep Dasar: Apa Itu Sigma?

Sebelum masuk ke 3 Sigma(3σ) dan 6 Sigma(6σ), harus paham dulu apa itu Sigma (σ) dalam statistik. Sigma adalah standar deviasi, yang menunjukkan seberapa tersebar data dalam suatu proses atau sistem.

Bayangkan kamu punya 100 siswa dalam satu kelas, dan rata-rata tinggi badan mereka adalah 170 cm. Kalau semua siswa punya tinggi 169-171 cm, berarti perbedaan tinggi mereka kecil (standar deviasi kecil). Tapi kalau ada yang tingginya 150 cm dan ada yang 190 cm, berarti data tersebar lebih luas (standar deviasi besar).

Semakin kecil standar deviasi, semakin rapat data ke rata-rata, artinya kualitas proses lebih stabil.


1.2. Hubungan Sigma dengan Distribusi Normal

Distribusi normal adalah model statistik yang menggambarkan bagaimana data tersebar. Kalau kita buat grafiknya, bentuknya seperti kurva lonceng (bell curve), di mana sebagian besar data berada di sekitar rata-rata, dan semakin jauh dari rata-rata, semakin jarang data tersebut muncul.

Pada distribusi normal:
- 1 Sigma (±1σ): 68.27% data berada dalam 1 standar deviasi dari rata-rata.
- 2 Sigma (±2σ): 95.45% data berada dalam 2 standar deviasi dari rata-rata.
- 3 Sigma (±3σ): 99.73% data berada dalam 3 standar deviasi dari rata-rata.
- 6 Sigma (±6σ): 99.99966% data berada dalam 6 standar deviasi dari rata-rata.

Artinya, semakin besar jumlah Sigma, semakin kecil kemungkinan ada kesalahan atau penyimpangan dalam proses produksi atau layanan.


2.3. Apa Itu 3 Sigma(3σ)?

Pengertian

3 Sigma adalah pendekatan yang memastikan bahwa 99.73% dari semua hasil berada dalam batas yang bisa diterima, sementara hanya 0.27% kemungkinan kesalahan. Dalam 1 juta produk, ada 2.700 produk yang gagal atau cacat.

Kelebihan dan Kekurangan 3 Sigma

Lebih mudah diterapkan di berbagai industri karena tidak terlalu ketat.
Biaya produksi lebih rendah, karena masih ada toleransi untuk kesalahan.
Masih ada kesalahan, meskipun dalam jumlah kecil.
Tidak cocok untuk industri yang butuh presisi tinggi seperti kesehatan atau penerbangan.

Contoh Penggunaan 3 Sigma

Misalkan ada pabrik produksi botol plastik yang membuat 1 juta botol per bulan. Jika mereka menggunakan 3 Sigma, maka:
- 99.73% botol akan sempurna.
- 0.27% atau 2.700 botol per bulan akan cacat (misalnya bocor atau bentuknya jelek).

Jika 2.700 botol cacat masih bisa didaur ulang atau diperbaiki, maka 3 Sigma sudah cukup.


1.4. Apa Itu 6 Sigma(6σ)?

Pengertian

6 Sigma adalah metode yang lebih ketat dibandingkan 3 Sigma. Dengan 6 Sigma, hanya ada 3,4 kesalahan per 1 juta produk atau peluang (99.99966% sukses).

Artinya, jika kamu punya pabrik yang menghasilkan 1 juta botol plastik, hanya 3 atau 4 botol yang cacat. Ini adalah tingkat kesempurnaan yang hampir 100%!

Kelebihan dan Kekurangan 6 Sigma

Kesalahan hampir nol, sangat cocok untuk industri yang butuh presisi tinggi.
Mengurangi limba h dan meningkatkan efisiensi produksi.
Butuh investasi besar, baik dalam pelatihan, mesin, maupun sistem kontrol kualitas.
Sulit diterapkan di industri yang masih bisa menerima kesalahan.

Contoh Penggunaan 6 Sigma

Bayangkan pabrik produksi botol plastik yang sama, tetapi kali ini mereka ingin memastikan hampir semua botol sempurna. Dengan 6 Sigma:
- Dari 1 juta botol, hanya 3 atau 4 botol yang cacat.
- Hampir tidak ada produk yang harus diperbaiki atau dibuang.

6 Sigma lebih cocok digunakan jika botol plastik ini akan digunakan untuk keperluan medis atau farmasi, di mana kesalahan bisa berakibat fatal.


1.5. Kapan Harus Pakai 3 Sigma(3σ) & 6 Sigma(6σ)?

Faktor 3 Sigma(3σ) 6 Sigma(6σ)
Jumlah Produk yang Gagal 2.700 per 1 juta 3,4 per 1 juta
Persentase Kualitas 99.73% benar 99.99966% benar
Kapan Digunakan? Jika sedikit kesalahan masih bisa diterima Jika kesalahan harus mendekati nol
Contoh Industri Restoran cepat saji, pakaian, peralatan rumah tangga Kesehatan, penerbangan, semikonduktor, farmasi

Contoh Nyata di Dunia Nyata

  1. Restoran McDonald’s: Bisa menggunakan 3 Sigma, karena jika ada 3 dari 1.000 burger yang sedikit gosong, pelanggan masih bisa menerimanya.
  2. Boeing (Industri Penerbangan): Harus menggunakan 6 Sigma, karena jika ada 3 dari 1.000 pesawat mengalami kegagalan mesin, akibatnya bisa fatal.
  3. Pabrik iPhone (Apple): Mereka harus mendekati 6 Sigma, karena kalau 3 dari 1.000 iPhone mengalami layar mati, itu akan merusak reputasi perusahaan.

1.6. Kesimpulan Akhir 3 Sigma(3σ) vs 6 Sigma(6σ)

  • 3 Sigma cocok untuk industri yang bisa menerima sedikit kesalahan, seperti produksi makanan, pakaian, atau produk rumah tangga.
  • 6 Sigma cocok untuk industri yang butuh presisi tinggi, seperti penerbangan, farmasi, dan teknologi.
  • Distribusi normal membantu memahami bagaimana data tersebar, dan Sigma digunakan untuk mengontrol seberapa sering kesalahan bisa terjadi.

Jadi, kalo bekerja di industri yang masih bisa menerima sedikit cacat, pakai 3 Sigma. Tapi kalau industri tidak bisa mentoleransi kesalahan sama sekali, pakai 6 Sigma.

2. Z-Score vs. T-Score

Z-Score vs. T-Score

Gambar ini menunjukkan perbandingan Z Score vs. T Score. Z Score (ungu) ditampilkan dengan grafik naik tajam, menunjukkan analisis data dengan distribusi normal dan sampel besar. T Score (biru) memiliki grafik yang lebih variatif, mencerminkan distribusi t-Student yang digunakan saat data lebih sedikit atau populasi tidak diketahui. Perbedaan utama dari gambar ini adalah Z Score lebih stabil, sedangkan T Score lebih fleksibel untuk sampel kecil.


2.1. Konsep Dasar: Apa Itu Skor dalam Statistik?

Dalam statistik, kita sering ingin tahu apakah suatu nilai terlalu jauh dari rata-rata atau masih dalam batas wajar. Untuk itu, kita menggunakan Z-Score dan T-Score sebagai ukuran standar.

  • Z-Score digunakan kalau kita tahu standar deviasi dari populasi.
  • T-Score digunakan kalau kita hanya punya sampel kecil dan tidak tahu standar deviasi populasi.

2.2. Hubungan Z-Score dan T-Score dengan Distribusi Normal

Distribusi normal adalah model yang menunjukkan bagaimana data tersebar. Dalam distribusi ini:

  • Z-Score mengikuti distribusi normal standar, di mana rata-rata = 0 dan standar deviasi = 1.
  • T-Score mirip dengan Z-Score, tapi mengikuti distribusi-t (Student’s t-distribution) yang lebih cocok untuk sampel kecil.

Ketika sampel besar (biasanya lebih dari 30 data), distribusi-t akan semakin mirip dengan distribusi normal standar, sehingga Z-Score dan T-Score hampir sama.


2.3. Apa Itu Z-Score?

Pengertian

Z-Score adalah ukuran seberapa jauh suatu nilai dari rata-rata dalam satuan standar deviasi.

Rumus Z-Score:
\[ Z = \frac{x - \mu}{\sigma} \] di mana:
- \(x\) = nilai individu
- \(\mu\) = rata-rata populasi
- \(\sigma\) = standar deviasi populasi

Cara Membaca Z-Score

  • Z = 0 → Nilai sama dengan rata-rata.
  • Z = 1 → Nilai 1 standar deviasi di atas rata-rata.
  • Z = -1 → Nilai 1 standar deviasi di bawah rata-rata.
  • Z = 2 → Nilai 2 standar deviasi di atas rata-rata.
  • Z = -2 → Nilai 2 standar deviasi di bawah rata-rata.

Misalnya, kalau tinggi badan rata-rata mahasiswa adalah 170 cm dengan standar deviasi 5 cm, dan kamu punya teman dengan tinggi 180 cm, maka:
\[ Z = \frac{180 - 170}{5} = \frac{10}{5} = 2 \]
Artinya, temanmu 2 standar deviasi di atas rata-rata, atau lebih tinggi dari 97.72% mahasiswa lainnya.

Kapan Pakai Z-Score?

✅ Kalau ukuran sampel besar (lebih dari 30).
✅ Kalau standar deviasi populasi diketahui.
✅ Jika ingin melihat seberapa jauh suatu nilai dari rata-rata.


2.4. Apa Itu T-Score?

Pengertian

T-Score (atau nilai t dalam uji-t) digunakan untuk sampel kecil (kurang dari 30) dan ketika kita tidak tahu standar deviasi populasi.

Rumus T-Score:
\[ T = \frac{x - \bar{x}}{s / \sqrt{n}} \] di mana:
- \(x\) = nilai individu
- \(\bar{x}\) = rata-rata sampel
- \(s\) = standar deviasi sampel
- \(n\) = ukuran sampel

T-Score mirip dengan Z-Score, tetapi karena ukuran sampelnya kecil, ada lebih banyak variasi dalam data. Oleh karena itu, distribusi-t lebih lebar dibanding distribusi normal standar.

Cara Membaca T-Score

  • Semakin kecil ukuran sampel, semakin besar variasinya, sehingga nilai T lebih sensitif dibanding Z.
  • Kalau ukuran sampel besar (>30), distribusi-t hampir sama dengan distribusi normal, sehingga T-Score ≈ Z-Score.

Misalnya, kalau kamu sedang meneliti 10 siswa tentang nilai ujian mereka, dan kamu tidak tahu standar deviasi populasi, maka gunakan T-Score untuk melihat apakah nilai mereka jauh dari rata-rata atau tidak.

Kapan Pakai T-Score?

✅ Kalau ukuran sampel kecil (kurang dari 30).
✅ Kalau standar deviasi populasi tidak diketahui.
✅ Untuk uji hipotesis saat membandingkan dua kelompok data kecil.


2.5. Perbedaan Z-Score dan T-Score

Faktor Z-Score T-Score
Kapan Dipakai? Jika ukuran sampel besar (>30) Jika ukuran sampel kecil (<30)
Diketahui Standar Deviasi Populasi? Ya Tidak
Distribusi yang Digunakan Distribusi normal standar Distribusi-t (lebih lebar untuk sampel kecil)
Keakuratan Lebih akurat untuk data besar Lebih cocok untuk data kecil yang lebih bervariasi

2.6. Contoh Kasus: Nilai Ujian Siswa

Misalkan seorang guru ingin melihat apakah seorang siswa memiliki nilai yang jauh berbeda dari rata-rata kelas.

Jika Pakai Z-Score:

  • Populasi: Semua siswa di satu sekolah.
  • Diketahui: Rata-rata nilai ujian sekolah adalah 75 dengan standar deviasi 10.
  • Siswa X mendapat nilai 85.
  • Z-Score = (85 - 75) / 10 = 1 → Artinya, siswa X berada 1 standar deviasi di atas rata-rata.

Kesimpulan:
Jika sekolah memiliki banyak siswa (>30) dan kita tahu standar deviasi populasi, pakai Z-Score.

Jika Pakai T-Score:

  • Populasi: Hanya satu kelas kecil (misalnya 10 siswa).
  • Tidak diketahui: Standar deviasi seluruh sekolah.
  • Siswa X mendapat nilai 85, dan rata-rata kelas adalah 75 dengan standar deviasi 9.
  • T-Score = (85 - 75) / (9/√10) = 3.33 → Artinya, nilai siswa X jauh lebih tinggi dibanding teman-temannya.

Kesimpulan:
Karena hanya ada 10 siswa (sampel kecil) dan kita tidak tahu standar deviasi sekolah, pakai T-Score.


2.7. Kesimpulan Akhir Z-Score vs T-Score

  • Z-Score digunakan jika sampel besar dan standar deviasi populasi diketahui.
  • T-Score digunakan jika sampel kecil dan standar deviasi populasi tidak diketahui.
  • Distribusi normal digunakan untuk Z-Score, sementara distribusi-t digunakan untuk T-Score.
  • Semakin kecil ukuran sampel, semakin besar variasinya, sehingga T-Score lebih fleksibel dibanding Z-Score.

Jadi, kalau bekerja dengan data besar yang memiliki standar deviasi yang diketahui, pakai Z-Score. Tapi kalau datanya kecil dan standar deviasi tidak diketahui, pakai T-Score.

Referensi

EDUCBA. (n.d.). Z Score vs. T Score. Diakses pada 21 Februari 2025, dari https://www.educba.com/z-score-vs-t-score/

Indeed. (n.d.). 3 Sigma vs. 6 Sigma. Indeed Career Guide. Diakses pada 21 Februari 2025, dari https://www.indeed.com/career-advice/career-development/3-sigma-vs-6-sigma

Statistics How To. (n.d.). T Score vs. Z Score. Diakses pada 21 Februari 2025, dari https://www.statisticshowto.com/probability-and-statistics/hypothesis-testing/t-score-vs-z-score/

Study.com. (n.d.). Six Sigma vs. Three Sigma. Diakses pada 21 Februari 2025, dari https://study.com/academy/lesson/six-sigma-vs-three-sigma.html

TimesPro. (n.d.). 3 Sigma vs. 6 Sigma: What are the top differences and examples? TimesPro Blog. Diakses pada 21 Februari 2025, dari https://timespro.com/blog/3-sigma-vs-6-sigma-what-are-the-top-differences-and-examples

LS0tDQp0aXRsZTogIlR1Z2FzIEluZGl2aWR1ICINCnN1YnRpdGxlOiAiM8+DIHZzLiA2z4MgZGFuIFotU2NvcmUgdnMgVC1TY29yZSAtIFRla25payBzYW1wbGluZyBkYW4gc3VydmV5Ig0KYXV0aG9yOiAiT2xpdmlhIE1laWxpbmRhIERhdnRpbiBQZXNpcmVyb24iDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzIA0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIHNyYz0ibGl2aWthdGFueWEuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iRm90byBEaXJpIj4NCg0KLS0tDQoNCg0KIyAxLiAzz4MgdnMuIDbPgw0KDQoNCjxpbWcgc3JjPSJvcDEuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iM8+DIHZzLiA2z4MiPg0KDQpHYW1iYXIgaW5pIG1lbnVuanVra2FuIHBlcmJhbmRpbmdhbiBhbnRhcmEgMyBTaWdtYSBkYW4gNiBTaWdtYSBkYWxhbSBkaXN0cmlidXNpIG5vcm1hbC4gMyBTaWdtYSBtZW5jYWt1cCA5OS43MyUgZGF0YSwgc2VtZW50YXJhIDYgU2lnbWEgbWVuY2FrdXAgOTkuOTk5OSUgZGF0YSwgeWFuZyBiZXJhcnRpIHZhcmlhc2kgYXRhdSBrZXNhbGFoYW4gZGFsYW0gcHJvc2VzIGphdWggbGViaWggc2VkaWtpdC4gS3VydmEgNiBTaWdtYSBsZWJpaCByYW1waW5nIGRhbiB0aW5nZ2ksIG1lbmFuZGFrYW4gcHJvc2VzIHlhbmcgbGViaWggcHJlc2lzaSBkYW4ga29uc2lzdGVuLCBzZWRhbmdrYW4gMyBTaWdtYSBsZWJpaCBsZWJhciwgbWVudW5qdWtrYW4gYWRhbnlhIGxlYmloIGJhbnlhayB2YXJpYXNpIGRhbiBwb3RlbnNpIGNhY2F0IHlhbmcgbGViaWggdGluZ2dpLiBTZW1ha2luIHRpbmdnaSB0aW5na2F0IFNpZ21hLCBzZW1ha2luIGtlY2lsIGtlbXVuZ2tpbmFuIGtlc2FsYWhhbiBkYWxhbSBzdWF0dSBzaXN0ZW0gYXRhdSBwcm9kdWtzaS5VbnR1ayBtZW1haGFtaSBrZWR1YW55YSBsZWJpaCBsYW5qdXQgbWFyaSBwYWhhbWkgcG9pbi1wb2luIGJlcmlrdXQgaW5pOg0KDQojIyAqKjEuMS4gS29uc2VwIERhc2FyOiBBcGEgSXR1IFNpZ21hPyoqICANCg0KU2ViZWx1bSBtYXN1ayBrZSAzIFNpZ21hKDPPgykgZGFuIDYgU2lnbWEoNs+DKSwgaGFydXMgcGFoYW0gZHVsdSBhcGEgaXR1ICoqU2lnbWEgKM+DKSoqIGRhbGFtIHN0YXRpc3Rpay4gU2lnbWEgYWRhbGFoICoqc3RhbmRhciBkZXZpYXNpKiosIHlhbmcgbWVudW5qdWtrYW4gc2ViZXJhcGEgdGVyc2ViYXIgZGF0YSBkYWxhbSBzdWF0dSBwcm9zZXMgYXRhdSBzaXN0ZW0uICANCg0KQmF5YW5na2FuIGthbXUgcHVueWEgKioxMDAgc2lzd2EgZGFsYW0gc2F0dSBrZWxhcyoqLCBkYW4gcmF0YS1yYXRhIHRpbmdnaSBiYWRhbiBtZXJla2EgYWRhbGFoICoqMTcwIGNtKiouIEthbGF1IHNlbXVhIHNpc3dhIHB1bnlhIHRpbmdnaSAqKjE2OS0xNzEgY20qKiwgYmVyYXJ0aSBwZXJiZWRhYW4gdGluZ2dpIG1lcmVrYSBrZWNpbCAoc3RhbmRhciBkZXZpYXNpIGtlY2lsKS4gVGFwaSBrYWxhdSBhZGEgeWFuZyB0aW5nZ2lueWEgKioxNTAgY20qKiBkYW4gYWRhIHlhbmcgKioxOTAgY20qKiwgYmVyYXJ0aSBkYXRhIHRlcnNlYmFyIGxlYmloIGx1YXMgKHN0YW5kYXIgZGV2aWFzaSBiZXNhcikuICANCg0KKipTZW1ha2luIGtlY2lsIHN0YW5kYXIgZGV2aWFzaSwgc2VtYWtpbiByYXBhdCBkYXRhIGtlIHJhdGEtcmF0YSwgYXJ0aW55YSBrdWFsaXRhcyBwcm9zZXMgbGViaWggc3RhYmlsLioqICANCg0KLS0tDQoNCiMjICoqMS4yLiBIdWJ1bmdhbiBTaWdtYSBkZW5nYW4gRGlzdHJpYnVzaSBOb3JtYWwqKiAgDQoNCkRpc3RyaWJ1c2kgbm9ybWFsIGFkYWxhaCBtb2RlbCBzdGF0aXN0aWsgeWFuZyBtZW5nZ2FtYmFya2FuICoqYmFnYWltYW5hIGRhdGEgdGVyc2ViYXIqKi4gS2FsYXUga2l0YSBidWF0IGdyYWZpa255YSwgYmVudHVrbnlhIHNlcGVydGkgKiprdXJ2YSBsb25jZW5nKiogKGJlbGwgY3VydmUpLCBkaSBtYW5hIHNlYmFnaWFuIGJlc2FyIGRhdGEgYmVyYWRhIGRpIHNla2l0YXIgcmF0YS1yYXRhLCBkYW4gc2VtYWtpbiBqYXVoIGRhcmkgcmF0YS1yYXRhLCBzZW1ha2luIGphcmFuZyBkYXRhIHRlcnNlYnV0IG11bmN1bC4gIA0KDQpQYWRhIGRpc3RyaWJ1c2kgbm9ybWFsOiAgDQotICoqMSBTaWdtYSAowrExz4MpOioqIDY4LjI3JSBkYXRhIGJlcmFkYSBkYWxhbSAxIHN0YW5kYXIgZGV2aWFzaSBkYXJpIHJhdGEtcmF0YS4gIA0KLSAqKjIgU2lnbWEgKMKxMs+DKToqKiA5NS40NSUgZGF0YSBiZXJhZGEgZGFsYW0gMiBzdGFuZGFyIGRldmlhc2kgZGFyaSByYXRhLXJhdGEuICANCi0gKiozIFNpZ21hICjCsTPPgyk6KiogOTkuNzMlIGRhdGEgYmVyYWRhIGRhbGFtIDMgc3RhbmRhciBkZXZpYXNpIGRhcmkgcmF0YS1yYXRhLiAgDQotICoqNiBTaWdtYSAowrE2z4MpOioqIDk5Ljk5OTY2JSBkYXRhIGJlcmFkYSBkYWxhbSA2IHN0YW5kYXIgZGV2aWFzaSBkYXJpIHJhdGEtcmF0YS4gIA0KDQpBcnRpbnlhLCAqKnNlbWFraW4gYmVzYXIganVtbGFoIFNpZ21hLCBzZW1ha2luIGtlY2lsIGtlbXVuZ2tpbmFuIGFkYSBrZXNhbGFoYW4gYXRhdSBwZW55aW1wYW5nYW4gZGFsYW0gcHJvc2VzIHByb2R1a3NpIGF0YXUgbGF5YW5hbi4qKiAgDQoNCi0tLQ0KDQojIyAqKjIuMy4gQXBhIEl0dSAzIFNpZ21hKDPPgyk/KiogIA0KDQojIyMgKipQZW5nZXJ0aWFuKiogIA0KKiozIFNpZ21hKiogYWRhbGFoIHBlbmRla2F0YW4geWFuZyBtZW1hc3Rpa2FuIGJhaHdhICoqOTkuNzMlIGRhcmkgc2VtdWEgaGFzaWwgYmVyYWRhIGRhbGFtIGJhdGFzIHlhbmcgYmlzYSBkaXRlcmltYSoqLCBzZW1lbnRhcmEgaGFueWEgKiowLjI3JSBrZW11bmdraW5hbiBrZXNhbGFoYW4qKi4gRGFsYW0gMSBqdXRhIHByb2R1aywgYWRhICoqMi43MDAgcHJvZHVrIHlhbmcgZ2FnYWwgYXRhdSBjYWNhdCoqLiAgDQoNCiMjIyAqKktlbGViaWhhbiBkYW4gS2VrdXJhbmdhbiAzIFNpZ21hKiogIA0K4pyFICoqTGViaWggbXVkYWggZGl0ZXJhcGthbioqIGRpIGJlcmJhZ2FpIGluZHVzdHJpIGthcmVuYSB0aWRhayB0ZXJsYWx1IGtldGF0LiAgDQrinIUgKipCaWF5YSBwcm9kdWtzaSBsZWJpaCByZW5kYWgqKiwga2FyZW5hIG1hc2loIGFkYSB0b2xlcmFuc2kgdW50dWsga2VzYWxhaGFuLiAgDQrinYwgKipNYXNpaCBhZGEga2VzYWxhaGFuKiosIG1lc2tpcHVuIGRhbGFtIGp1bWxhaCBrZWNpbC4gIA0K4p2MICoqVGlkYWsgY29jb2sgdW50dWsgaW5kdXN0cmkgeWFuZyBidXR1aCBwcmVzaXNpIHRpbmdnaSoqIHNlcGVydGkga2VzZWhhdGFuIGF0YXUgcGVuZXJiYW5nYW4uICANCg0KIyMjICoqQ29udG9oIFBlbmdndW5hYW4gMyBTaWdtYSoqICANCk1pc2Fsa2FuIGFkYSAqKnBhYnJpayBwcm9kdWtzaSBib3RvbCBwbGFzdGlrKiogeWFuZyBtZW1idWF0ICoqMSBqdXRhIGJvdG9sIHBlciBidWxhbioqLiBKaWthIG1lcmVrYSBtZW5nZ3VuYWthbiAqKjMgU2lnbWEqKiwgbWFrYTogIA0KLSA5OS43MyUgYm90b2wgYWthbiBzZW1wdXJuYS4gIA0KLSAqKjAuMjclIGF0YXUgMi43MDAgYm90b2wgcGVyIGJ1bGFuIGFrYW4gY2FjYXQgKG1pc2FsbnlhIGJvY29yIGF0YXUgYmVudHVrbnlhIGplbGVrKS4qKiAgDQoNCkppa2EgMi43MDAgYm90b2wgY2FjYXQgbWFzaWggYmlzYSBkaWRhdXIgdWxhbmcgYXRhdSBkaXBlcmJhaWtpLCBtYWthICoqMyBTaWdtYSBzdWRhaCBjdWt1cCoqLiAgDQoNCi0tLQ0KDQojIyAqKjEuNC4gQXBhIEl0dSA2IFNpZ21hKDbPgyk/KiogIA0KDQojIyMgKipQZW5nZXJ0aWFuKiogIA0KKio2IFNpZ21hKiogYWRhbGFoIG1ldG9kZSB5YW5nIGxlYmloIGtldGF0IGRpYmFuZGluZ2thbiAzIFNpZ21hLiBEZW5nYW4gNiBTaWdtYSwgKipoYW55YSBhZGEgMyw0IGtlc2FsYWhhbiBwZXIgMSBqdXRhIHByb2R1ayBhdGF1IHBlbHVhbmcqKiAoKio5OS45OTk2NiUgc3Vrc2VzKiopLiAgDQoNCkFydGlueWEsIGppa2Ega2FtdSBwdW55YSAqKnBhYnJpayB5YW5nIG1lbmdoYXNpbGthbiAxIGp1dGEgYm90b2wgcGxhc3RpayoqLCBoYW55YSAqKjMgYXRhdSA0IGJvdG9sIHlhbmcgY2FjYXQqKi4gSW5pIGFkYWxhaCB0aW5na2F0IGtlc2VtcHVybmFhbiB5YW5nIGhhbXBpciAxMDAlISAgDQoNCiMjIyAqKktlbGViaWhhbiBkYW4gS2VrdXJhbmdhbiA2IFNpZ21hKiogIA0K4pyFICoqS2VzYWxhaGFuIGhhbXBpciBub2wqKiwgc2FuZ2F0IGNvY29rIHVudHVrIGluZHVzdHJpIHlhbmcgYnV0dWggcHJlc2lzaSB0aW5nZ2kuICANCuKchSAqKk1lbmd1cmFuZ2kgbGltYmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBkYW4gbWVuaW5na2F0a2FuIGVmaXNpZW5zaSBwcm9kdWtzaS4qKiAgDQrinYwgKipCdXR1aCBpbnZlc3Rhc2kgYmVzYXIqKiwgYmFpayBkYWxhbSBwZWxhdGloYW4sIG1lc2luLCBtYXVwdW4gc2lzdGVtIGtvbnRyb2wga3VhbGl0YXMuICANCuKdjCAqKlN1bGl0IGRpdGVyYXBrYW4gZGkgaW5kdXN0cmkgeWFuZyBtYXNpaCBiaXNhIG1lbmVyaW1hIGtlc2FsYWhhbi4qKiAgDQoNCiMjIyAqKkNvbnRvaCBQZW5nZ3VuYWFuIDYgU2lnbWEqKiAgDQpCYXlhbmdrYW4gKipwYWJyaWsgcHJvZHVrc2kgYm90b2wgcGxhc3RpayoqIHlhbmcgc2FtYSwgdGV0YXBpIGthbGkgaW5pIG1lcmVrYSBpbmdpbiBtZW1hc3Rpa2FuICoqaGFtcGlyIHNlbXVhIGJvdG9sIHNlbXB1cm5hKiouIERlbmdhbiA2IFNpZ21hOiAgDQotIERhcmkgKioxIGp1dGEgYm90b2wqKiwgaGFueWEgKiozIGF0YXUgNCBib3RvbCB5YW5nIGNhY2F0KiouICANCi0gSGFtcGlyIHRpZGFrIGFkYSBwcm9kdWsgeWFuZyBoYXJ1cyBkaXBlcmJhaWtpIGF0YXUgZGlidWFuZy4gIA0KDQo2IFNpZ21hIGxlYmloIGNvY29rIGRpZ3VuYWthbiBqaWthIGJvdG9sIHBsYXN0aWsgaW5pIGFrYW4gZGlndW5ha2FuIHVudHVrICoqa2VwZXJsdWFuIG1lZGlzIGF0YXUgZmFybWFzaSoqLCBkaSBtYW5hIGtlc2FsYWhhbiBiaXNhIGJlcmFraWJhdCBmYXRhbC4NCg0KLS0tDQoNCiMjICoqMS41LiBLYXBhbiBIYXJ1cyBQYWthaSAzIFNpZ21hKDPPgykgJiA2IFNpZ21hKDbPgyk/KiogIA0KDQp8IEZha3RvciAgfCAqKjMgU2lnbWEoM8+DKSoqIHwgKio2IFNpZ21hKDbPgykqKiB8DQp8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18DQp8ICoqSnVtbGFoIFByb2R1ayB5YW5nIEdhZ2FsKiogfCAyLjcwMCBwZXIgMSBqdXRhIHwgMyw0IHBlciAxIGp1dGEgfA0KfCAqKlBlcnNlbnRhc2UgS3VhbGl0YXMqKiB8IDk5LjczJSBiZW5hciB8IDk5Ljk5OTY2JSBiZW5hciB8DQp8ICoqS2FwYW4gRGlndW5ha2FuPyoqIHwgSmlrYSBzZWRpa2l0IGtlc2FsYWhhbiBtYXNpaCBiaXNhIGRpdGVyaW1hIHwgSmlrYSBrZXNhbGFoYW4gaGFydXMgbWVuZGVrYXRpIG5vbCB8DQp8ICoqQ29udG9oIEluZHVzdHJpKiogfCBSZXN0b3JhbiBjZXBhdCBzYWppLCBwYWthaWFuLCBwZXJhbGF0YW4gcnVtYWggdGFuZ2dhIHwgS2VzZWhhdGFuLCBwZW5lcmJhbmdhbiwgc2VtaWtvbmR1a3RvciwgZmFybWFzaSB8DQoNCiMjIyAqKkNvbnRvaCBOeWF0YSBkaSBEdW5pYSBOeWF0YSoqDQoxLiAqKlJlc3RvcmFuIE1jRG9uYWxkJ3MqKjogQmlzYSBtZW5nZ3VuYWthbiAqKjMgU2lnbWEqKiwga2FyZW5hIGppa2EgYWRhIDMgZGFyaSAxLjAwMCBidXJnZXIgeWFuZyBzZWRpa2l0IGdvc29uZywgcGVsYW5nZ2FuIG1hc2loIGJpc2EgbWVuZXJpbWFueWEuICANCjIuICoqQm9laW5nIChJbmR1c3RyaSBQZW5lcmJhbmdhbikqKjogSGFydXMgbWVuZ2d1bmFrYW4gKio2IFNpZ21hKiosIGthcmVuYSBqaWthIGFkYSAzIGRhcmkgMS4wMDAgcGVzYXdhdCBtZW5nYWxhbWkga2VnYWdhbGFuIG1lc2luLCBha2liYXRueWEgYmlzYSBmYXRhbC4gIA0KMy4gKipQYWJyaWsgaVBob25lIChBcHBsZSkqKjogTWVyZWthIGhhcnVzIG1lbmRla2F0aSAqKjYgU2lnbWEqKiwga2FyZW5hIGthbGF1IDMgZGFyaSAxLjAwMCBpUGhvbmUgbWVuZ2FsYW1pIGxheWFyIG1hdGksIGl0dSBha2FuIG1lcnVzYWsgcmVwdXRhc2kgcGVydXNhaGFhbi4gIA0KDQotLS0NCg0KIyMgKioxLjYuIEtlc2ltcHVsYW4gQWtoaXIgMyBTaWdtYSgzz4MpIHZzIDYgU2lnbWEoNs+DKSoqICANCg0KLSAqKjMgU2lnbWEgY29jb2sgdW50dWsgaW5kdXN0cmkgeWFuZyBiaXNhIG1lbmVyaW1hIHNlZGlraXQga2VzYWxhaGFuKiosIHNlcGVydGkgcHJvZHVrc2kgbWFrYW5hbiwgcGFrYWlhbiwgYXRhdSBwcm9kdWsgcnVtYWggdGFuZ2dhLiAgDQotICoqNiBTaWdtYSBjb2NvayB1bnR1ayBpbmR1c3RyaSB5YW5nIGJ1dHVoIHByZXNpc2kgdGluZ2dpKiosIHNlcGVydGkgcGVuZXJiYW5nYW4sIGZhcm1hc2ksIGRhbiB0ZWtub2xvZ2kuICANCi0gKipEaXN0cmlidXNpIG5vcm1hbCBtZW1iYW50dSBtZW1haGFtaSBiYWdhaW1hbmEgZGF0YSB0ZXJzZWJhciwgZGFuIFNpZ21hIGRpZ3VuYWthbiB1bnR1ayBtZW5nb250cm9sIHNlYmVyYXBhIHNlcmluZyBrZXNhbGFoYW4gYmlzYSB0ZXJqYWRpLioqICANCg0KSmFkaSwga2FsbyBiZWtlcmphIGRpIGluZHVzdHJpIHlhbmcgKiptYXNpaCBiaXNhIG1lbmVyaW1hIHNlZGlraXQgY2FjYXQsIHBha2FpIDMgU2lnbWEqKi4gVGFwaSBrYWxhdSBpbmR1c3RyaSAgKip0aWRhayBiaXNhIG1lbnRvbGVyYW5zaSBrZXNhbGFoYW4gc2FtYSBzZWthbGksIHBha2FpIDYgU2lnbWEqKi4gIA0KDQojIDIuIFotU2NvcmUgdnMuIFQtU2NvcmUgDQoNCjxpbWcgc3JjPSJvcDIuanBnIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iWi1TY29yZSB2cy4gVC1TY29yZSI+DQoNCkdhbWJhciBpbmkgbWVudW5qdWtrYW4gcGVyYmFuZGluZ2FuICoqWiBTY29yZSB2cy4gVCBTY29yZSoqLiAqKlogU2NvcmUqKiAodW5ndSkgZGl0YW1waWxrYW4gZGVuZ2FuIGdyYWZpayBuYWlrIHRhamFtLCBtZW51bmp1a2thbiBhbmFsaXNpcyBkYXRhIGRlbmdhbiBkaXN0cmlidXNpIG5vcm1hbCBkYW4gc2FtcGVsIGJlc2FyLiAqKlQgU2NvcmUqKiAoYmlydSkgbWVtaWxpa2kgZ3JhZmlrIHlhbmcgbGViaWggdmFyaWF0aWYsIG1lbmNlcm1pbmthbiBkaXN0cmlidXNpIHQtU3R1ZGVudCB5YW5nIGRpZ3VuYWthbiBzYWF0IGRhdGEgbGViaWggc2VkaWtpdCBhdGF1IHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aS4gUGVyYmVkYWFuIHV0YW1hIGRhcmkgZ2FtYmFyIGluaSBhZGFsYWggKipaIFNjb3JlIGxlYmloIHN0YWJpbCoqLCBzZWRhbmdrYW4gKipUIFNjb3JlIGxlYmloIGZsZWtzaWJlbCB1bnR1ayBzYW1wZWwga2VjaWwqKi4NCg0KLS0tDQoNCiMjICoqMi4xLiBLb25zZXAgRGFzYXI6IEFwYSBJdHUgU2tvciBkYWxhbSBTdGF0aXN0aWs/KiogIA0KDQpEYWxhbSBzdGF0aXN0aWssIGtpdGEgc2VyaW5nIGluZ2luIHRhaHUgYXBha2FoIHN1YXR1IG5pbGFpICoqdGVybGFsdSBqYXVoIGRhcmkgcmF0YS1yYXRhKiogYXRhdSBtYXNpaCBkYWxhbSBiYXRhcyB3YWphci4gVW50dWsgaXR1LCBraXRhIG1lbmdndW5ha2FuICoqWi1TY29yZSBkYW4gVC1TY29yZSoqIHNlYmFnYWkgdWt1cmFuIHN0YW5kYXIuICANCg0KLSAqKlotU2NvcmUqKiBkaWd1bmFrYW4ga2FsYXUga2l0YSB0YWh1ICoqc3RhbmRhciBkZXZpYXNpIGRhcmkgcG9wdWxhc2kqKi4gIA0KLSAqKlQtU2NvcmUqKiBkaWd1bmFrYW4ga2FsYXUga2l0YSBoYW55YSBwdW55YSAqKnNhbXBlbCBrZWNpbCBkYW4gdGlkYWsgdGFodSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kqKi4gIA0KDQotLS0NCg0KIyMgKioyLjIuIEh1YnVuZ2FuIFotU2NvcmUgZGFuIFQtU2NvcmUgZGVuZ2FuIERpc3RyaWJ1c2kgTm9ybWFsKiogIA0KDQpEaXN0cmlidXNpIG5vcm1hbCBhZGFsYWggbW9kZWwgeWFuZyBtZW51bmp1a2thbiBiYWdhaW1hbmEgZGF0YSB0ZXJzZWJhci4gRGFsYW0gZGlzdHJpYnVzaSBpbmk6ICANCg0KLSAqKlotU2NvcmUqKiBtZW5naWt1dGkgKipkaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyKiosIGRpIG1hbmEgcmF0YS1yYXRhID0gMCBkYW4gc3RhbmRhciBkZXZpYXNpID0gMS4gIA0KLSAqKlQtU2NvcmUqKiBtaXJpcCBkZW5nYW4gWi1TY29yZSwgdGFwaSBtZW5naWt1dGkgKipkaXN0cmlidXNpLXQgKFN0dWRlbnQncyB0LWRpc3RyaWJ1dGlvbikqKiB5YW5nIGxlYmloIGNvY29rIHVudHVrICoqc2FtcGVsIGtlY2lsKiouICANCg0KS2V0aWthIHNhbXBlbCBiZXNhciAoYmlhc2FueWEgbGViaWggZGFyaSAqKjMwIGRhdGEqKiksIGRpc3RyaWJ1c2ktdCBha2FuIHNlbWFraW4gbWlyaXAgZGVuZ2FuIGRpc3RyaWJ1c2kgbm9ybWFsIHN0YW5kYXIsIHNlaGluZ2dhICoqWi1TY29yZSBkYW4gVC1TY29yZSBoYW1waXIgc2FtYSoqLiAgDQoNCi0tLQ0KDQojIyAqKjIuMy4gQXBhIEl0dSBaLVNjb3JlPyoqICANCg0KIyMjICoqUGVuZ2VydGlhbioqICANCioqWi1TY29yZSoqIGFkYWxhaCB1a3VyYW4gc2ViZXJhcGEgamF1aCBzdWF0dSBuaWxhaSBkYXJpIHJhdGEtcmF0YSBkYWxhbSBzYXR1YW4gc3RhbmRhciBkZXZpYXNpLiAgDQoNCioqUnVtdXMgWi1TY29yZToqKiAgDQpcWw0KWiA9IFxmcmFje3ggLSBcbXV9e1xzaWdtYX0NClxdDQpkaSBtYW5hOiAgDQotIFwoIHggXCkgPSBuaWxhaSBpbmRpdmlkdSAgDQotIFwoIFxtdSBcKSA9IHJhdGEtcmF0YSBwb3B1bGFzaSAgDQotIFwoIFxzaWdtYSBcKSA9IHN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSAgDQoNCiMjIyAqKkNhcmEgTWVtYmFjYSBaLVNjb3JlKiogIA0KLSAqKlogPSAwKiog4oaSIE5pbGFpIHNhbWEgZGVuZ2FuIHJhdGEtcmF0YS4gIA0KLSAqKlogPSAxKiog4oaSIE5pbGFpICoqMSBzdGFuZGFyIGRldmlhc2kgZGkgYXRhcyByYXRhLXJhdGEqKi4gIA0KLSAqKlogPSAtMSoqIOKGkiBOaWxhaSAqKjEgc3RhbmRhciBkZXZpYXNpIGRpIGJhd2FoIHJhdGEtcmF0YSoqLiAgDQotICoqWiA9IDIqKiDihpIgTmlsYWkgKioyIHN0YW5kYXIgZGV2aWFzaSBkaSBhdGFzIHJhdGEtcmF0YSoqLiAgDQotICoqWiA9IC0yKiog4oaSIE5pbGFpICoqMiBzdGFuZGFyIGRldmlhc2kgZGkgYmF3YWggcmF0YS1yYXRhKiouICANCg0KTWlzYWxueWEsIGthbGF1ICoqdGluZ2dpIGJhZGFuIHJhdGEtcmF0YSBtYWhhc2lzd2EgYWRhbGFoIDE3MCBjbSBkZW5nYW4gc3RhbmRhciBkZXZpYXNpIDUgY20qKiwgZGFuIGthbXUgcHVueWEgdGVtYW4gZGVuZ2FuIHRpbmdnaSAqKjE4MCBjbSoqLCBtYWthOiAgDQpcWw0KWiA9IFxmcmFjezE4MCAtIDE3MH17NX0gPSBcZnJhY3sxMH17NX0gPSAyDQpcXSAgDQpBcnRpbnlhLCB0ZW1hbm11IDIgc3RhbmRhciBkZXZpYXNpIGRpIGF0YXMgcmF0YS1yYXRhLCBhdGF1IGxlYmloIHRpbmdnaSBkYXJpICoqOTcuNzIlIG1haGFzaXN3YSBsYWlubnlhKiouICANCg0KIyMjICoqS2FwYW4gUGFrYWkgWi1TY29yZT8qKiAgDQrinIUgS2FsYXUgKip1a3VyYW4gc2FtcGVsIGJlc2FyKiogKGxlYmloIGRhcmkgMzApLiAgDQrinIUgS2FsYXUgKipzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgZGlrZXRhaHVpKiouICANCuKchSBKaWthIGluZ2luIG1lbGloYXQgc2ViZXJhcGEgamF1aCBzdWF0dSBuaWxhaSBkYXJpIHJhdGEtcmF0YS4gIA0KDQotLS0NCg0KIyMgKioyLjQuIEFwYSBJdHUgVC1TY29yZT8qKiAgDQoNCiMjIyAqKlBlbmdlcnRpYW4qKiAgDQoqKlQtU2NvcmUgKGF0YXUgbmlsYWkgdCBkYWxhbSB1amktdCkqKiBkaWd1bmFrYW4gdW50dWsgKipzYW1wZWwga2VjaWwgKGt1cmFuZyBkYXJpIDMwKSoqIGRhbiBrZXRpa2Ega2l0YSAqKnRpZGFrIHRhaHUgc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpKiouICANCg0KKipSdW11cyBULVNjb3JlOioqICANClxbDQpUID0gXGZyYWN7eCAtIFxiYXJ7eH19e3MgLyBcc3FydHtufX0NClxdDQpkaSBtYW5hOiAgDQotIFwoIHggXCkgPSBuaWxhaSBpbmRpdmlkdSAgDQotIFwoIFxiYXJ7eH0gXCkgPSByYXRhLXJhdGEgc2FtcGVsICANCi0gXCggcyBcKSA9IHN0YW5kYXIgZGV2aWFzaSBzYW1wZWwgIA0KLSBcKCBuIFwpID0gdWt1cmFuIHNhbXBlbCAgDQoNCioqVC1TY29yZSBtaXJpcCBkZW5nYW4gWi1TY29yZSoqLCB0ZXRhcGkga2FyZW5hIHVrdXJhbiBzYW1wZWxueWEga2VjaWwsIGFkYSBsZWJpaCBiYW55YWsgdmFyaWFzaSBkYWxhbSBkYXRhLiBPbGVoIGthcmVuYSBpdHUsICoqZGlzdHJpYnVzaS10IGxlYmloIGxlYmFyIGRpYmFuZGluZyBkaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyKiouICANCg0KIyMjICoqQ2FyYSBNZW1iYWNhIFQtU2NvcmUqKiAgDQotICoqU2VtYWtpbiBrZWNpbCB1a3VyYW4gc2FtcGVsLCBzZW1ha2luIGJlc2FyIHZhcmlhc2lueWEqKiwgc2VoaW5nZ2EgbmlsYWkgVCBsZWJpaCBzZW5zaXRpZiBkaWJhbmRpbmcgWi4gIA0KLSBLYWxhdSB1a3VyYW4gc2FtcGVsICoqYmVzYXIgKD4zMCkqKiwgZGlzdHJpYnVzaS10IGhhbXBpciBzYW1hIGRlbmdhbiBkaXN0cmlidXNpIG5vcm1hbCwgc2VoaW5nZ2EgKipULVNjb3JlIOKJiCBaLVNjb3JlKiouICANCg0KTWlzYWxueWEsIGthbGF1IGthbXUgc2VkYW5nIG1lbmVsaXRpICoqMTAgc2lzd2EqKiB0ZW50YW5nIG5pbGFpIHVqaWFuIG1lcmVrYSwgZGFuIGthbXUgdGlkYWsgdGFodSBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2ksIG1ha2EgKipndW5ha2FuIFQtU2NvcmUqKiB1bnR1ayBtZWxpaGF0IGFwYWthaCBuaWxhaSBtZXJla2EgamF1aCBkYXJpIHJhdGEtcmF0YSBhdGF1IHRpZGFrLiAgDQoNCiMjIyAqKkthcGFuIFBha2FpIFQtU2NvcmU/KiogIA0K4pyFIEthbGF1ICoqdWt1cmFuIHNhbXBlbCBrZWNpbCoqIChrdXJhbmcgZGFyaSAzMCkuICANCuKchSBLYWxhdSAqKnN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSB0aWRhayBkaWtldGFodWkqKi4gIA0K4pyFIFVudHVrIHVqaSBoaXBvdGVzaXMgc2FhdCBtZW1iYW5kaW5na2FuIGR1YSBrZWxvbXBvayBkYXRhIGtlY2lsLiAgDQoNCi0tLQ0KDQojIyAqKjIuNS4gUGVyYmVkYWFuIFotU2NvcmUgZGFuIFQtU2NvcmUqKiAgDQoNCnwgRmFrdG9yICB8ICoqWi1TY29yZSoqIHwgKipULVNjb3JlKiogfA0KfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfA0KfCAqKkthcGFuIERpcGFrYWk/KiogfCBKaWthIHVrdXJhbiBzYW1wZWwgYmVzYXIgKD4zMCkgfCBKaWthIHVrdXJhbiBzYW1wZWwga2VjaWwgKDwzMCkgfA0KfCAqKkRpa2V0YWh1aSBTdGFuZGFyIERldmlhc2kgUG9wdWxhc2k/KiogfCBZYSB8IFRpZGFrIHwNCnwgKipEaXN0cmlidXNpIHlhbmcgRGlndW5ha2FuKiogfCBEaXN0cmlidXNpIG5vcm1hbCBzdGFuZGFyIHwgRGlzdHJpYnVzaS10IChsZWJpaCBsZWJhciB1bnR1ayBzYW1wZWwga2VjaWwpIHwNCnwgKipLZWFrdXJhdGFuKiogfCBMZWJpaCBha3VyYXQgdW50dWsgZGF0YSBiZXNhciB8IExlYmloIGNvY29rIHVudHVrIGRhdGEga2VjaWwgeWFuZyBsZWJpaCBiZXJ2YXJpYXNpIHwNCg0KLS0tDQoNCiMjICoqMi42LiBDb250b2ggS2FzdXM6IE5pbGFpIFVqaWFuIFNpc3dhKiogIA0KDQpNaXNhbGthbiBzZW9yYW5nIGd1cnUgaW5naW4gbWVsaWhhdCBhcGFrYWggc2VvcmFuZyBzaXN3YSBtZW1pbGlraSBuaWxhaSB5YW5nIGphdWggYmVyYmVkYSBkYXJpIHJhdGEtcmF0YSBrZWxhcy4gIA0KDQojIyMgKipKaWthIFBha2FpIFotU2NvcmU6KiogIA0KLSAqKlBvcHVsYXNpKio6IFNlbXVhIHNpc3dhIGRpIHNhdHUgc2Vrb2xhaC4gIA0KLSAqKkRpa2V0YWh1aSoqOiBSYXRhLXJhdGEgbmlsYWkgdWppYW4gc2Vrb2xhaCBhZGFsYWggKio3NSoqIGRlbmdhbiBzdGFuZGFyIGRldmlhc2kgKioxMCoqLiAgDQotICoqU2lzd2EgWCBtZW5kYXBhdCBuaWxhaSA4NSoqLiAgDQotICoqWi1TY29yZSA9ICg4NSAtIDc1KSAvIDEwID0gMSoqIOKGkiBBcnRpbnlhLCBzaXN3YSBYIGJlcmFkYSAqKjEgc3RhbmRhciBkZXZpYXNpIGRpIGF0YXMgcmF0YS1yYXRhKiouICANCg0KKipLZXNpbXB1bGFuOioqICANCkppa2Egc2Vrb2xhaCBtZW1pbGlraSAqKmJhbnlhayBzaXN3YSAoPjMwKSoqIGRhbiBraXRhIHRhaHUgc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpLCAqKnBha2FpIFotU2NvcmUqKi4gIA0KDQojIyMgKipKaWthIFBha2FpIFQtU2NvcmU6KiogIA0KLSAqKlBvcHVsYXNpKio6IEhhbnlhIHNhdHUga2VsYXMga2VjaWwgKG1pc2FsbnlhIDEwIHNpc3dhKS4gIA0KLSAqKlRpZGFrIGRpa2V0YWh1aSoqOiBTdGFuZGFyIGRldmlhc2kgc2VsdXJ1aCBzZWtvbGFoLiAgDQotICoqU2lzd2EgWCBtZW5kYXBhdCBuaWxhaSA4NSoqLCBkYW4gcmF0YS1yYXRhIGtlbGFzIGFkYWxhaCAqKjc1KiogZGVuZ2FuIHN0YW5kYXIgZGV2aWFzaSAqKjkqKi4gIA0KLSAqKlQtU2NvcmUgPSAoODUgLSA3NSkgLyAoOS/iiJoxMCkgPSAzLjMzKiog4oaSIEFydGlueWEsIG5pbGFpIHNpc3dhIFggamF1aCBsZWJpaCB0aW5nZ2kgZGliYW5kaW5nIHRlbWFuLXRlbWFubnlhLiAgDQoNCioqS2VzaW1wdWxhbjoqKiAgDQpLYXJlbmEgaGFueWEgYWRhICoqMTAgc2lzd2EgKHNhbXBlbCBrZWNpbCkqKiBkYW4ga2l0YSB0aWRhayB0YWh1IHN0YW5kYXIgZGV2aWFzaSBzZWtvbGFoLCAqKnBha2FpIFQtU2NvcmUqKi4gIA0KDQotLS0NCg0KIyMgKioyLjcuIEtlc2ltcHVsYW4gQWtoaXIgWi1TY29yZSB2cyBULVNjb3JlICoqICANCg0KLSAqKlotU2NvcmUgZGlndW5ha2FuIGppa2Egc2FtcGVsIGJlc2FyIGRhbiBzdGFuZGFyIGRldmlhc2kgcG9wdWxhc2kgZGlrZXRhaHVpLioqICANCi0gKipULVNjb3JlIGRpZ3VuYWthbiBqaWthIHNhbXBlbCBrZWNpbCBkYW4gc3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aS4qKiAgDQotICoqRGlzdHJpYnVzaSBub3JtYWwgZGlndW5ha2FuIHVudHVrIFotU2NvcmUsIHNlbWVudGFyYSBkaXN0cmlidXNpLXQgZGlndW5ha2FuIHVudHVrIFQtU2NvcmUuKiogIA0KLSAqKlNlbWFraW4ga2VjaWwgdWt1cmFuIHNhbXBlbCwgc2VtYWtpbiBiZXNhciB2YXJpYXNpbnlhLCBzZWhpbmdnYSBULVNjb3JlIGxlYmloIGZsZWtzaWJlbCBkaWJhbmRpbmcgWi1TY29yZS4qKiAgDQoNCkphZGksIGthbGF1IGJla2VyamEgZGVuZ2FuICoqZGF0YSBiZXNhciB5YW5nIG1lbWlsaWtpIHN0YW5kYXIgZGV2aWFzaSB5YW5nIGRpa2V0YWh1aSwgcGFrYWkgWi1TY29yZSoqLiBUYXBpIGthbGF1IGRhdGFueWEgKiprZWNpbCBkYW4gc3RhbmRhciBkZXZpYXNpIHRpZGFrIGRpa2V0YWh1aSwgcGFrYWkgVC1TY29yZSoqLiAgDQoNCiMgUmVmZXJlbnNpDQpFRFVDQkEuIChuLmQuKS4gWiBTY29yZSB2cy4gVCBTY29yZS4gRGlha3NlcyBwYWRhIDIxIEZlYnJ1YXJpIDIwMjUsIGRhcmkgaHR0cHM6Ly93d3cuZWR1Y2JhLmNvbS96LXNjb3JlLXZzLXQtc2NvcmUvDQoNCkluZGVlZC4gKG4uZC4pLiAzIFNpZ21hIHZzLiA2IFNpZ21hLiBJbmRlZWQgQ2FyZWVyIEd1aWRlLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3d3dy5pbmRlZWQuY29tL2NhcmVlci1hZHZpY2UvY2FyZWVyLWRldmVsb3BtZW50LzMtc2lnbWEtdnMtNi1zaWdtYQ0KDQpTdGF0aXN0aWNzIEhvdyBUby4gKG4uZC4pLiBUIFNjb3JlIHZzLiBaIFNjb3JlLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3d3dy5zdGF0aXN0aWNzaG93dG8uY29tL3Byb2JhYmlsaXR5LWFuZC1zdGF0aXN0aWNzL2h5cG90aGVzaXMtdGVzdGluZy90LXNjb3JlLXZzLXotc2NvcmUvDQoNClN0dWR5LmNvbS4gKG4uZC4pLiBTaXggU2lnbWEgdnMuIFRocmVlIFNpZ21hLiBEaWFrc2VzIHBhZGEgMjEgRmVicnVhcmkgMjAyNSwgZGFyaSBodHRwczovL3N0dWR5LmNvbS9hY2FkZW15L2xlc3Nvbi9zaXgtc2lnbWEtdnMtdGhyZWUtc2lnbWEuaHRtbA0KDQpUaW1lc1Byby4gKG4uZC4pLiAzIFNpZ21hIHZzLiA2IFNpZ21hOiBXaGF0IGFyZSB0aGUgdG9wIGRpZmZlcmVuY2VzIGFuZCBleGFtcGxlcz8gVGltZXNQcm8gQmxvZy4gRGlha3NlcyBwYWRhIDIxIEZlYnJ1YXJpIDIwMjUsIGRhcmkgaHR0cHM6Ly90aW1lc3Byby5jb20vYmxvZy8zLXNpZ21hLXZzLTYtc2lnbWEtd2hhdC1hcmUtdGhlLXRvcC1kaWZmZXJlbmNlcy1hbmQtZXhhbXBsZXMNCg==