<!-- HAWAIIAN-COMPASS · part 8 -->
AgcmluZyhSIC0gMjgsIHsgY2xhc3M6IFwicmluZ1wiIH0pO1xuICByaW5nKFIgLSA0NiwgeyBjbGFzczogXCJyaW5nIGZpbmVcIiB9KTtcbiAgcmluZygzMTgsIHsgY2xhc3M6IFwicmluZ1wiIH0pO1xuICByaW5nKDI0OCwgeyBjbGFzczogXCJyaW5nIGZpbmVcIiB9KTtcbiAgcmluZygxNjgsIHsgY2xhc3M6IFwicmluZ1wiIH0pO1xuICByaW5nKDc4LCB7IGNsYXNzOiBcInJpbmcgZmluZVwiIH0pO1xuXG4gIGZvciAobGV0IGRlZyA9IDA7IGRlZyA8IDM2MDsgZGVnICs9IDEpIHtcbiAgICBjb25zdCB0ZW50aCA9IGRlZyAlIDEwID09PSAwO1xuICAgIGNvbnN0IGZpZnRoID0gZGVnICUgNSA9PT0gMDtcbiAgICBjb25zdCBpbm5lciA9IHRlbnRoID8gUiAtIDI4IDogZmlmdGggPyBSIC0gMTggOiBSIC0gMTI7XG4gICAgbGluZShkZWcsIGlubmVyLCBSLCB7IGNsYXNzOiB0ZW50aCA/IFwidGljayB0ZW5cIiA6IGZpZnRoID8gXCJ0aWNrIGZpdmVcIiA6IFwidGlja1wiIH0pO1xuICAgIGlmICh0ZW50aCkge1xuICAgICAgY29uc3QgW3gsIHldID0gcG9sYXIoZGVnLCBSIC0gNDIpO1xuICAgICAgY29uc3QgdGV4dCA9IGVsKFwidGV4dFwiLCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIGNsYXNzOiBcImRlZ3JlZVwiLFxuICAgICAgICBcInRleHQtYW5jaG9yXCI6IFwibWlkZGxlXCIsXG4gICAgICAgIFwiZG9taW5hbnQtYmFzZWxpbmVcIjogXCJtaWRkbGVcIixcbiAgICAgIH0pO1xuICAgICAgdGV4dC50ZXh0Q29udGVudCA9IFN0cmluZyhkZWcpLnBhZFN0YXJ0KDMsIFwiMFwiKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHBvaW50IG9mIFBPSU5UUykge1xuICAgIGNvbnN0IGNhcmRpbmFsID0gcG9pbnQucmFuayA9PT0gXCJjYXJkaW5hbFwiO1xuICAgIGNvbnN0IGludGVyID0gcG9pbnQucmFuayA9PT0gXCJpbnRlcmNhcmRpbmFsXCI7XG4gICAgY29uc3QgaGFsZiA9IHBvaW50LnJhbmsgPT09IFwiaGFsZlwiO1xuICAgIGxpbmUocG9pbnQuYmVhcmluZywgODYsIGNhcmRpbmFsID8gMzMwIDogMzAwLCB7XG4gICAgICBjbGFzczogY2FyZGluYWwgPyBcInNwb2tlIGNhcmRpbmFsXCIgOiBcInNwb2tlXCIsXG4gICAgfSk7XG4gICAgY29uc3Qgb3V0ZXIgPSBjYXJkaW5hbCA/IDMwMCA6IGludGVyID8gMjY4IDogaGFsZiA/IDIzNiA6IDIwODtcbiAgICBjb25zdCBoYWxmQW5nbGUgPSBjYXJkaW5hbCA/IDYuNCA6IGludGVyID8gNC42IDogaGFsZiA/IDMuMiA6IDIuMTU7XG4gICAgZGlhbW9uZChwb2ludC5iZWFyaW5nLCAxNTAsIG91dGVyLCBoYWxmQW5nbGUpO1xuXG4gICAgY29uc3QgbGFiZWxSID0gY2FyZGluYWwgPyAzNjggOiAzMzg7XG4gICAgY29uc3QgW3gsIHldID0gcG9sYXIocG9pbnQuYmVhcmluZywgbGFiZWxSKTtcbiAgICBjb25zdCB0ZXh0ID0gZWwoXCJ0ZXh0XCIsIHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgY2xhc3M6IGNhcmRpbmFsID8gXCJuYW1lIGNhcmRpbmFsXCIgOiBcIm5hbWVcIixcbiAgICAgIFwidGV4dC1hbmNob3JcIjogXCJtaWRkbGVcIixcbiAgICAgIFwiZG9taW5hbnQtYmFzZWxpbmVcIjogXCJtaWRkbGVcIixcbiAgICB9KTtcbiAgICB0ZXh0LnRleHRDb250ZW50ID0gcG9pbnQubWFyaztcbiAgfVxuXG4gIHN0YXIoMCwgMzkyLCAxNik7XG4gIHJpbmcoMTgsIHsgY2xhc3M6IFwiaHViXCIgfSk7XG4gIGVsKFwiY2lyY2xlXCIsIHsgY3g6IENYLCBjeTogQ1ksIHI6IDMuNSwgY2xhc3M6IFwiaHViLXBpblwiIH0pO1xufVxuXG5mdW5jdGlvbiBkcmF3TmVlZGxlKGJlYXJpbmcpIHtcbiAgbmVlZGxlLnJlcGxhY2VDaGlsZHJlbigpO1xuICBjb25zdCBbeCwgeV0gPSBwb2xhcihiZWFyaW5nLCBSIC0gNTIpO1xuICBjb25zdCBbdHgsIHR5XSA9IHBvbGFyKGJlYXJpbmcgKyAxODAsIDIxMCk7XG4gIGVsKFwibGluZVwiLCB7IHgxOiBDWCwgeTE6IENZLCB4MjogdHgsIHkyOiB0eSwgY2xhc3M6IFwibmVlZGxlIHRhaWxcIiB9LCBuZWVkbGUpO1xuICBlbChcImxpbmVcIiwgeyB4MTogQ1gsIHkxOiBDWSwgeDI6IHgsIHkyOiB5LCBjbGFzczogXCJuZWVkbGUgaGVhZFwiIH0sIG5lZWRsZSk7XG4gIGNvbnN0IFtheCwgYXldID0gcG9sYXIoYmVhcmluZywgUiAtIDM2KTtcbiAgY29uc3QgW2x4LCBseV0gPSBwb2xhcihiZWFyaW5nICsgMi4yLCBSIC0gNjIpO1xuICBjb25zdCBbcngsIHJ5XSA9IHBvbGFyKGJlYXJpbmcgLSAyLjIsIFIgLSA2Mik7XG4gIGVsKFxuICAgIFwicG9seWdvblwiLFxuICAgIHsgcG9pbnRzOiBgJHtheH0sJHtheX0gJHtseH0sJHtseX0gJHtyeH0sJHtyeX1gLCBjbGFzczogXCJuZWVkbGUgaGVhZFwiIH0sXG4gICAgbmVlZGxlLFxuICApO1xuICBlbChcImNpcmNsZVwiLCB7IGN4OiBDWCwgY3k6IENZLCByOiA1LCBjbGFzczogXCJodWItcGluXCIgfSwgbmVlZGxlKTtcbn1cblxuZnVuY3Rpb24gcGFpbnQoZGVnKSB7XG4gIGNvbnN0IGNvdXJzZSA9IGRlc2NyaWJlKGRlZyk7XG4gIGRyYXdOZWVkbGUoY291cnNlLmJlYXJpbmcpO1xuICByZWFkb3V0cy5iZWFyaW5nLnRleHRDb250ZW50ID0gYCR7Zm9ybWF0RGVnKGNvdXJzZS5iZWFyaW5nKX3CsGA7XG4gIHJlYWRvdXRzLnNwb2tlbi50ZXh0Q29udGVudCA9IGNvdXJzZS5wb2ludC5zcG9rZW47XG4gIHJlYWRvdXRzLm1hcmsudGV4dENvbnRlbnQgPSBjb3Vyc2UucG9pbnQubWFyaztcbiAgcmVhZG91dHMucG9pbnRCZWFyaW5nLnRleHRDb250ZW50ID0gYCR7Zm9ybWF0RGVnKGNvdXJzZS5wb2ludC5iZWFyaW5nKX3CsGA7XG4gIHJlYWRvdXRzLm9mZnNldC50ZXh0Q29udGVudCA9IGZvcm1hdFNpZ25lZChjb3Vyc2Uub2Zmc2V0KTtcbiAgcmVhZG91dHMucXVhZHJhbnQudGV4dENvbnRlbnQgPSBjb3Vyc2UucXVhZHJhbnQ7XG4gIHJlYWRvdXRzLnJlY2lwcm9jYWwudGV4dENvbnRlbnQgPSBgJHtmb3JtYXREZWcoY291cnNlLnJlY2lwcm9jYWwpfcKwYDtcbiAgcmVhZG91dHMucmVjaXByb2NhbE5hbWUudGV4dENvbnRlbnQgPSBjb3Vyc2UucmVjaXByb2NhbFBvaW50LnNwb2tlbjtcbiAgcmVhZG91dHMubm9ydGhpbmcudGV4dENvbnRlbnQgPSBjb3Vyc2Uubm9ydGhpbmcudG9GaXhlZCg0KTtcbiAgcmVhZG91dHMuZWFzdGluZy50ZXh0Q29udGVudCA9IGNvdXJzZS5lYXN0aW5nLnRvRml4ZWQoNCk7XG4gIHJlYWRvdXRzLnJhZGlhbnMudGV4dENvbnRlbnQgPSBjb3Vyc2UucmFkaWFucy50b0ZpeGVkKDQpO1xuICBkaWFsLnZhbHVlID0gU3RyaW5nKGNvdXJzZS5iZWFyaW5nKTtcbiAgZGlhbC5zZXRBdHRyaWJ1dGUoXCJhcmlhLXZhbHVlbm93XCIsIGZvcm1hdERlZyhjb3Vyc2UuYmVhcmluZykpO1xuICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZmllbGQpIGZpZWxkLnZhbHVlID0gZm9ybWF0RGVnKGNvdXJzZS5iZWFyaW5nKTtcbiAgcmV0dXJuIGNvdXJzZTtcbn1cblxuZHJhd0NhcmQoKTtcbnN2Zy5hcHBlbmRDaGlsZChuZWVkbGUpO1xubGV0IGJlYXJpbmcgPSAwO1xucGFpbnQoYmVhcmluZyk7XG5cbmZ1bmN0aW9uIHNldEJlYXJpbmcobmV4dCkge1xuICBiZWFyaW5nID0gKChuZXh0ICUgMzYwKSArIDM2MCkgJSAzNjA7XG4gIHBhaW50KGJlYXJpbmcpO1xufVxuXG5kaWFsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCAoKSA9PiBzZXRCZWFyaW5nKE51bWJlcihkaWFsLnZhbHVlKSkpO1xuZmllbGQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XG4gIGNvbnN0IG4gPSB