# encoding: UTF-8
# JGRIT standalone installer. Same contents as the matching RBZ.
require "sketchup.rb"
require "base64"
require "fileutils"

begin
  destination = Sketchup.find_support_file("Plugins")
  raise "SketchUp Plugins folder not found" unless destination
  payload = {
    "jgrit_separate_groups.rb" => "IyBmcm96ZW5fc3RyaW5nX2xpdGVyYWw6IHRydWUKcmVxdWlyZSAnc2tldGNodXAucmInCnJlcXVpcmUgJ2V4dGVuc2lvbnMucmInCnVubGVzcyBmaWxlX2xvYWRlZD8oX19GSUxFX18pCiAgZXh0ZW5zaW9uID0gU2tldGNodXBFeHRlbnNpb24ubmV3KCdKR1JJVCBTZXBhcmF0ZSBHcm91cHMnLCAnamdyaXRfc2VwYXJhdGVfZ3JvdXBzL21haW4nKQogIGV4dGVuc2lvbi5kZXNjcmlwdGlvbiA9ICfrlqjslrTsp4Qg7ZiV7IOB67OEIOq3uOujuSDrp4zrk6TquLAg4oCUIOqzteqwnCDthYzsiqTtirgg67KE7KCEJwogIGV4dGVuc2lvbi52ZXJzaW9uID0gJzEuMS4xLWJldGEuMScKICBleHRlbnNpb24uY3JlYXRvciA9ICdKR1JJVCcKICBleHRlbnNpb24uY29weXJpZ2h0ID0gJzIwMjYgSkdSSVQnCiAgU2tldGNodXAucmVnaXN0ZXJfZXh0ZW5zaW9uKGV4dGVuc2lvbiwgdHJ1ZSkKICBmaWxlX2xvYWRlZChfX0ZJTEVfXykKZW5kCgo=",
    "jgrit_separate_groups/icon.svg" => "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIiBmaWxsPSJub25lIiBzdHJva2U9IiMzMDMzM2EiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjMiIHk9IjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgcng9IjEiIGZpbGw9IiNmZmYiLz48cmVjdCB4PSIxOSIgeT0iMTkiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgcng9IjEiIGZpbGw9IiNmZjg1MWIiLz48cGF0aCBkPSJNMTkgNGg5djlNMjggNGwtOSA5TTQgMTl2OWg5TTQgMjhsOS05IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZjg1MWIiLz48L3N2Zz4KCg==",
    "jgrit_separate_groups/main.rb" => "IyBmcm96ZW5fc3RyaW5nX2xpdGVyYWw6IHRydWUKCnJlcXVpcmUgJ3NrZXRjaHVwLnJiJwpyZXF1aXJlX3JlbGF0aXZlICd1aScKCm1vZHVsZSBKR1JJVAogIG1vZHVsZSBHcm91cEVhY2hEaXNjb25uZWN0ZWQKICAgIGV4dGVuZCBzZWxmCgogICAgUExVR0lOX05BTUUgPSAn65ao7Ja07KeEIO2YleyDgSDqsIHqsIEg6re466O5IOunjOuTpOq4sCcKICAgIE9QRVJBVElPTl9OQU1FID0gJ0pHUklUIOqwgeqwgSDqt7jro7kg66eM65Ok6riwJwoKICAgIGRlZiByYXdfZ2VvbWV0cnk/KGVudGl0eSkKICAgICAgZW50aXR5LmlzX2E/KFNrZXRjaHVwOjpGYWNlKSB8fCBlbnRpdHkuaXNfYT8oU2tldGNodXA6OkVkZ2UpCiAgICBlbmQKCiAgICBkZWYgY29ubmVjdGVkX2dlb21ldHJ5KHNlZWQsIGFjdGl2ZV9lbnRpdGllcykKICAgICAgY29ubmVjdGVkID0gc2VlZC5yZXNwb25kX3RvPyg6YWxsX2Nvbm5lY3RlZCkgPyBzZWVkLmFsbF9jb25uZWN0ZWQgOiBbc2VlZF0KICAgICAgY29ubmVjdGVkLnNlbGVjdCBkbyB8ZW50aXR5fAogICAgICAgIGVudGl0eS52YWxpZD8gJiYgcmF3X2dlb21ldHJ5PyhlbnRpdHkpICYmIGFjdGl2ZV9lbnRpdGllcy5pbmNsdWRlPyhlbnRpdHkpCiAgICAgIGVuZAogICAgZW5kCgogICAgZGVmIGNvbGxlY3RfY29tcG9uZW50cyhzZWVkcywgYWN0aXZlX2VudGl0aWVzKQogICAgICB2aXNpdGVkID0ge30KICAgICAgY29tcG9uZW50cyA9IFtdCgogICAgICBzZWVkcy5lYWNoIGRvIHxzZWVkfAogICAgICAgIG5leHQgdW5sZXNzIHNlZWQudmFsaWQ/CiAgICAgICAgbmV4dCBpZiB2aXNpdGVkW3NlZWRdCgogICAgICAgIGNvbXBvbmVudCA9IGNvbm5lY3RlZF9nZW9tZXRyeShzZWVkLCBhY3RpdmVfZW50aXRpZXMpCiAgICAgICAgbmV4dCBpZiBjb21wb25lbnQuZW1wdHk/CgogICAgICAgIGNvbXBvbmVudC5lYWNoIHsgfGVudGl0eXwgdmlzaXRlZFtlbnRpdHldID0gdHJ1ZSB9CiAgICAgICAgY29tcG9uZW50cyA8PCBjb21wb25lbnQKICAgICAgZW5kCgogICAgICBjb21wb25lbnRzCiAgICBlbmQKCiAgICBkZWYgcnVuCiAgICAgIG1vZGVsID0gU2tldGNodXAuYWN0aXZlX21vZGVsCiAgICAgIGFjdGl2ZV9lbnRpdGllcyA9IG1vZGVsLmFjdGl2ZV9lbnRpdGllcwogICAgICBzZWxlY3Rpb24gPSBtb2RlbC5zZWxlY3Rpb24KCiAgICAgIHNlZWRzID0gc2VsZWN0aW9uLmVtcHR5PyA/IGFjdGl2ZV9lbnRpdGllcy50b19hIDogc2VsZWN0aW9uLnRvX2EKICAgICAgc2VlZHMgPSBzZWVkcy5zZWxlY3QgeyB8ZW50aXR5fCByYXdfZ2VvbWV0cnk/KGVudGl0eSkgfQoKICAgICAgaWYgc2VlZHMuZW1wdHk/CiAgICAgICAgVUkubWVzc2FnZWJveCgn6re466O57ZmU7ZWgIOuptOydtOuCmCDshKDsnbQg7JeG7Iq164uI64ukLiDquLDsobQg6re466O56rO8IOy7tO2PrOuEjO2KuOuKlCDqt7jrjIDroZwg7Jyg7KeA65Cp64uI64ukLicpCiAgICAgICAgcmV0dXJuCiAgICAgIGVuZAoKICAgICAgY29tcG9uZW50cyA9IGNvbGxlY3RfY29tcG9uZW50cyhzZWVkcywgYWN0aXZlX2VudGl0aWVzKQogICAgICBpZiBjb21wb25lbnRzLmVtcHR5PwogICAgICAgIFVJLm1lc3NhZ2Vib3goJ+q3uOujue2ZlO2VoCDsiJgg7J6I64qUIOyXsOqysCDtmJXsg4HsnYQg7LC+7KeAIOuqu+2WiOyKteuLiOuLpC4nKQogICAgICAgIHJldHVybgogICAgICBlbmQKCiAgICAgIG1vZGVsLnN0YXJ0X29wZXJhdGlvbihPUEVSQVRJT05fTkFNRSwgdHJ1ZSkKCiAgICAgIGJlZ2luCiAgICAgICAgbmV3X2dyb3VwcyA9IFtdCgogICAgICAgIGNvbXBvbmVudHMuZWFjaF93aXRoX2luZGV4IGRvIHxjb21wb25lbnQsIGluZGV4fAogICAgICAgICAgdmFsaWRfZW50aXRpZXMgPSBjb21wb25lbnQuc2VsZWN0KCY6dmFsaWQ/KQogICAgICAgICAgbmV4dCBpZiB2YWxpZF9lbnRpdGllcy5lbXB0eT8KCiAgICAgICAgICBncm91cCA9IGFjdGl2ZV9lbnRpdGllcy5hZGRfZ3JvdXAodmFsaWRfZW50aXRpZXMpCiAgICAgICAgICBncm91cC5uYW1lID0gZm9ybWF0KCdKR1JJVCDqt7jro7kgJTAzZCcsIGluZGV4ICsgMSkKICAgICAgICAgIG5ld19ncm91cHMgPDwgZ3JvdXAKICAgICAgICBlbmQKCiAgICAgICAgc2VsZWN0aW9uLmNsZWFyCiAgICAgICAgc2VsZWN0aW9uLmFkZChuZXdfZ3JvdXBzKQogICAgICAgIG1vZGVsLmNvbW1pdF9vcGVyYXRpb24KCiAgICAgICAgVUkubWVzc2FnZWJveCgi7ISc66GcIOuWqOyWtOynhCDtmJXsg4EgI3tuZXdfZ3JvdXBzLmxlbmd0aH3qsJzrpbwg6rCB6rCBIOq3uOujueycvOuhnCDrp4zrk6Tsl4jsirXri4jri6QuIikKICAgICAgcmVzY3VlIFN0YW5kYXJkRXJyb3IgPT4gZXJyb3IKICAgICAgICBtb2RlbC5hYm9ydF9vcGVyYXRpb24KICAgICAgICBVSS5tZXNzYWdlYm94KCLqt7jro7ntmZQg7KSRIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuXG4je2Vycm9yLm1lc3NhZ2V9IikKICAgICAgZW5kCiAgICBlbmQKCiAgICB1bmxlc3MgZmlsZV9sb2FkZWQ/KF9fRklMRV9fKQogICAgICBKR1JJVDo6VG9vbHNVSS5hZGQoJ3NlcGFyYXRlX2dyb3VwcycsICdKR1JJVCBTZXBhcmF0ZSBHcm91cHMnLCAn65ao7Ja07KeEIO2YleyDgeuzhCDqt7jro7kg66eM65Ok6riwJywgRmlsZS5qb2luKF9fZGlyX18sICdpY29uLnN2ZycpKSB7IHJ1biB9CiAgICAgIGZpbGVfbG9hZGVkKF9fRklMRV9fKQogICAgZW5kCiAgZW5kCmVuZAoK",
    "jgrit_separate_groups/README.txt" => "SkdSSVQgU2VwYXJhdGUgR3JvdXBzIDEuMS4xLWJldGEuMQrrlqjslrTsp4Qg7ZiV7IOB67OEIOq3uOujuSDrp4zrk6TquLAKCuqzteqwnCDthYzsiqTtirgg67KE7KCE7J6F64uI64ukLiBTa2V0Y2hVcCDsi6TsoJwg66qo64247JeQ7ISc7J2YIOyekeuPmSDqsoDspp3snYAg7JWE7KeBIOyZhOujjOuQmOyngCDslYrslZjsirXri4jri6QuCldpbmRvd3Mg642w7Iqk7YGs7YaxIFNrZXRjaFVwIDIwMjTrpbwg64yA7IOB7Jy866GcIOyekeyEse2WiOyKteuLiOuLpC4g64uk66W4IOuyhOyghOqzvCBtYWNPU+uKlCDrr7jqsoDspp3snoXri4jri6QuCuyekeyXhSDtjIzsnbzsnZgg67O17IKs67O47JeQ7IScIOuovOyggCDsi6TtlontlZjqs6Ag6rKw6rO866W8IO2ZleyduO2VmOyEuOyalC4g7J6R7JeF7J2AIEN0cmwrWuuhnCDsi6Ttlokg7Leo7IaM7ZWgIOyImCDsnojsirXri4jri6QuCgrshKTsuZg6IO2ZleyepSDtlITroZzqt7jrnqgg6rSA66as7J6QID4g7ZmV7J6lIO2UhOuhnOq3uOueqCDshKTsuZggPiBSQlog7ISg7YOdLgrsi6Ttlok6IOuztOq4sCA+IOuPhOq1rCDrqqjsnYwgPiBKR1JJVCBUb29scyDrmJDripQg7ZmV7J6lIO2UhOuhnOq3uOueqCA+IEpHUklUIFRvb2xzLgrquLDsobQgSlNUVURJTyDrj5nrqoUg64+E6rWs66W8IO2VqOq7mCDshKTsuZjtlZjrqbQg66mU64m06rCAIOuRmCDri6Qg7ZGc7Iuc65CgIOyImCDsnojsirXri4jri6QuCgrtjrjsp5Eg7KSR7J24IOqzteqwhOydmCDshKDCt+uptOydhCDshKDtg53tlanri4jri6QuIOyEoO2DneydtCDsl4bsnLzrqbQg7ZW064u5IOqzteqwhCDsoITssrTrpbwg7LKY66as7ZWp64uI64ukLiDshKDtg50g7ZiV7IOB7JeQIOyXsOqysOuQnCDshKDCt+uptOuPhCDtlajqu5gg6re466O57ZmU65Cp64uI64ukLiDsnbTrr7gg66y27J24IOq3uOujueydgCDrjZTruJTtgbTrpq3tlbQg64K067aA7JeQ7IScIOyCrOyaqe2VmOyEuOyalC4KCkpHUklUIOustOujjCDthYzsiqTtirgg65287J207ISg7IqkCuqwnOyduCDrsI8g7JeF66y0IO2UhOuhnOygne2KuOyXkOyEnCDrrLTro4wg7IKs7Jqp7J2EIO2XiOyaqe2VqeuLiOuLpC4K7Jyg66OMIOyerO2MkOunpCDrsI8gSkdSSVQg66qF7Lmt7J2EIOygnOqxsO2VnCDsnqzrsLDtj6zripQg7ZeI7Jqp7ZWY7KeAIOyViuyKteuLiOuLpC4K7ZS865Oc67CxIOuwjyDstZzsi6Ag67KE7KCEOiBodHRwczovL2pncml0LmtyL2Rvd25sb2FkcwoK67OA6rK9OiBKR1JJVCDrqoXsua0sIOygnO2SiOuzhCDslYTsnbTsvZgsIOqzte2GtSDtiLTrsJTsmYAgUkJaIOq1rOyEsS4K7ZiE7J6sIO2OuOynkSDqs7XqsITsnZgg7JeU7Yuw7YuwIO2MkOuzhOydhCDsiJjsoJXtlojsirXri4jri6QuCgoK7ISk7LmYIO2bhCBTa2V0Y2hVcOydhCDri6Tsi5wg7Iuc7J6R7ZWY7IS47JqULiDrs7TquLAgPiDrj4Tqtawg66qo7J2MID4gSkdSSVQgVG9vbHPsl5DshJwg7ISk7LmY7ZWcIOujqOu5hOulvCDtlajqu5gg7IKs7Jqp7ZWgIOyImCDsnojsirXri4jri6QuIOqwgSDrj4TqtazripQg6rCc67OEIOyEpOy5mOuQqeuLiOuLpC4K",
    "jgrit_separate_groups/ui.rb" => "IyBmcm96ZW5fc3RyaW5nX2xpdGVyYWw6IHRydWUKbW9kdWxlIEpHUklUCiAgbW9kdWxlIFRvb2xzVUkKICAgIGRlZiBzZWxmLnJlZ2lzdGVyKGtleSwgY29tbWFuZCkKICAgICAgQGNvbW1hbmRzIHx8PSB7fQogICAgICByZXR1cm4gQGNvbW1hbmRzW2tleV0gaWYgQGNvbW1hbmRzW2tleV0KICAgICAgQG1lbnUgfHw9IFVJLm1lbnUoJ0V4dGVuc2lvbnMnKS5hZGRfc3VibWVudSgnSkdSSVQgVG9vbHMnKQogICAgICBAdG9vbGJhciB8fD0gVUk6OlRvb2xiYXIubmV3KCdKR1JJVCBUb29scycpCiAgICAgIEBjb21tYW5kc1trZXldID0gY29tbWFuZAogICAgICBAbWVudS5hZGRfaXRlbShjb21tYW5kKQogICAgICBAdG9vbGJhci5hZGRfaXRlbShjb21tYW5kKQogICAgICBAdG9vbGJhci5nZXRfbGFzdF9zdGF0ZSA9PSAtMSA/IEB0b29sYmFyLnNob3cgOiBAdG9vbGJhci5yZXN0b3JlCiAgICAgIGNvbW1hbmQKICAgIGVuZAogICAgZGVmIHNlbGYuYWRkKGtleSwgdGl0bGUsIGRlc2NyaXB0aW9uLCBpY29uX3BhdGggPSBuaWwsICZibG9jaykKICAgICAgY29tbWFuZCA9IFVJOjpDb21tYW5kLm5ldyh0aXRsZSwgJmJsb2NrKQogICAgICBjb21tYW5kLnRvb2x0aXAgPSB0aXRsZQogICAgICBjb21tYW5kLnN0YXR1c19iYXJfdGV4dCA9IGRlc2NyaXB0aW9uCiAgICAgIGljb25fcGF0aCB8fD0gRmlsZS5qb2luKF9fZGlyX18sICdpY29uLnN2ZycpCiAgICAgIGNvbW1hbmQuc21hbGxfaWNvbiA9IGNvbW1hbmQubGFyZ2VfaWNvbiA9IGljb25fcGF0aAogICAgICByZWdpc3RlcihrZXksIGNvbW1hbmQpCiAgICBlbmQKICBlbmQKZW5kCg=="
  }
  payload.each do |relative, encoded|
    target = File.join(destination, relative)
    FileUtils.mkdir_p(File.dirname(target))
    File.binwrite(target, Base64.strict_decode64(encoded))
  end
  UI.messagebox("JGRIT 설치가 완료되었습니다. SketchUp을 다시 시작한 뒤 도구 모음을 켜세요.")
rescue StandardError => error
  UI.messagebox("JGRIT 설치 실패: #{error.message}")
end
