Ver código fonte

Fix locale errors on build, add chromium support

add option to easily install chromium after build since firefox doesnt have functional sound
remove regdb files, they serve no purpose as the wireless driver will not load them. This is a kernel bug and is fixed in
4.19, where they are't needed at all.
Hal Emmerich 5 anos atrás
pai
commit
188082b20c
34 arquivos alterados com 538 adições e 2792 exclusões
  1. 1 0
      .gitignore
  2. 4 0
      resources/BuildResources/apt-preferences
  3. 503 0
      resources/BuildResources/locale.gen
  4. BIN
      resources/BuildResources/regdb/wireless-regdb-2018.09.07.tar.gz
  5. 0 2
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/.gitignore
  6. 0 49
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/CONTRIBUTING
  7. 0 16
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/LICENSE
  8. 0 129
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/Makefile
  9. 0 29
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/README
  10. 0 1380
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/db.txt
  11. 0 147
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/db2bin.py
  12. 0 158
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/db2fw.py
  13. 0 516
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/dbparse.py
  14. 0 5
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/changelog
  15. 0 1
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/compat
  16. 0 15
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/control
  17. 0 21
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/copyright
  18. 0 1
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/docs
  19. 0 10
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/rules
  20. 0 18
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/gen-pubcert.sh
  21. BIN
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.bin
  22. 0 49
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.bin.5
  23. BIN
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db
  24. 0 1
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db.5
  25. BIN
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db.p7s
  26. 0 9
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/sforshee.key.pub.pem
  27. 0 17
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/sforshee.x509.pem
  28. 0 1
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/sha1sum.txt
  29. 0 166
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/web/Regulatory.py
  30. 0 35
      resources/BuildResources/regdb/wireless-regdb-2018.09.07/wireless-regdb.spec
  31. 5 1
      resources/BuildResources/sources.list
  32. 2 0
      resources/InstallResources/xfce-config/plank/plank-launchers/chromium.dockitem
  33. 10 4
      scripts/InstallScripts/InstallPackages.sh
  34. 13 12
      scripts/buildDebianFs.sh

+ 1 - 0
.gitignore

@@ -1,3 +1,4 @@
 linux-*
 open-ath9k-htc-firmware
 PrawnOS-Alpha-c201-libre-2GB.img
+tmp.*

+ 4 - 0
resources/BuildResources/apt-preferences

@@ -5,3 +5,7 @@ Pin-Priority: 700
 Package: *
 Pin: release a=testing
 Pin-Priority: 650
+
+Package: *
+Pin: release a=unstable
+Pin-Priority: 600

+ 503 - 0
resources/BuildResources/locale.gen

@@ -0,0 +1,503 @@
+# This file lists locales that you wish to have built. You can find a list
+# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
+# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
+# this file, you need to rerun locale-gen.
+
+
+# aa_DJ ISO-8859-1
+# aa_DJ.UTF-8 UTF-8
+# aa_ER UTF-8
+# aa_ER@saaho UTF-8
+# aa_ET UTF-8
+# af_ZA ISO-8859-1
+# af_ZA.UTF-8 UTF-8
+# ak_GH UTF-8
+# am_ET UTF-8
+# an_ES ISO-8859-15
+# an_ES.UTF-8 UTF-8
+# anp_IN UTF-8
+# ar_AE ISO-8859-6
+# ar_AE.UTF-8 UTF-8
+# ar_BH ISO-8859-6
+# ar_BH.UTF-8 UTF-8
+# ar_DZ ISO-8859-6
+# ar_DZ.UTF-8 UTF-8
+# ar_EG ISO-8859-6
+# ar_EG.UTF-8 UTF-8
+# ar_IN UTF-8
+# ar_IQ ISO-8859-6
+# ar_IQ.UTF-8 UTF-8
+# ar_JO ISO-8859-6
+# ar_JO.UTF-8 UTF-8
+# ar_KW ISO-8859-6
+# ar_KW.UTF-8 UTF-8
+# ar_LB ISO-8859-6
+# ar_LB.UTF-8 UTF-8
+# ar_LY ISO-8859-6
+# ar_LY.UTF-8 UTF-8
+# ar_MA ISO-8859-6
+# ar_MA.UTF-8 UTF-8
+# ar_OM ISO-8859-6
+# ar_OM.UTF-8 UTF-8
+# ar_QA ISO-8859-6
+# ar_QA.UTF-8 UTF-8
+# ar_SA ISO-8859-6
+# ar_SA.UTF-8 UTF-8
+# ar_SD ISO-8859-6
+# ar_SD.UTF-8 UTF-8
+# ar_SS UTF-8
+# ar_SY ISO-8859-6
+# ar_SY.UTF-8 UTF-8
+# ar_TN ISO-8859-6
+# ar_TN.UTF-8 UTF-8
+# ar_YE ISO-8859-6
+# ar_YE.UTF-8 UTF-8
+# as_IN UTF-8
+# ast_ES ISO-8859-15
+# ast_ES.UTF-8 UTF-8
+# ayc_PE UTF-8
+# az_AZ UTF-8
+# be_BY CP1251
+# be_BY.UTF-8 UTF-8
+# be_BY@latin UTF-8
+# bem_ZM UTF-8
+# ber_DZ UTF-8
+# ber_MA UTF-8
+# bg_BG CP1251
+# bg_BG.UTF-8 UTF-8
+# bhb_IN.UTF-8 UTF-8
+# bho_IN UTF-8
+# bn_BD UTF-8
+# bn_IN UTF-8
+# bo_CN UTF-8
+# bo_IN UTF-8
+# br_FR ISO-8859-1
+# br_FR.UTF-8 UTF-8
+# br_FR@euro ISO-8859-15
+# brx_IN UTF-8
+# bs_BA ISO-8859-2
+# bs_BA.UTF-8 UTF-8
+# byn_ER UTF-8
+# ca_AD ISO-8859-15
+# ca_AD.UTF-8 UTF-8
+# ca_ES ISO-8859-1
+# ca_ES.UTF-8 UTF-8
+# ca_ES.UTF-8@valencia UTF-8
+# ca_ES@euro ISO-8859-15
+# ca_ES@valencia ISO-8859-15
+# ca_FR ISO-8859-15
+# ca_FR.UTF-8 UTF-8
+# ca_IT ISO-8859-15
+# ca_IT.UTF-8 UTF-8
+# ce_RU UTF-8
+# chr_US UTF-8
+# cmn_TW UTF-8
+# crh_UA UTF-8
+# cs_CZ ISO-8859-2
+# cs_CZ.UTF-8 UTF-8
+# csb_PL UTF-8
+# cv_RU UTF-8
+# cy_GB ISO-8859-14
+# cy_GB.UTF-8 UTF-8
+# da_DK ISO-8859-1
+# da_DK.UTF-8 UTF-8
+# de_AT ISO-8859-1
+# de_AT.UTF-8 UTF-8
+# de_AT@euro ISO-8859-15
+# de_BE ISO-8859-1
+# de_BE.UTF-8 UTF-8
+# de_BE@euro ISO-8859-15
+# de_CH ISO-8859-1
+# de_CH.UTF-8 UTF-8
+# de_DE ISO-8859-1
+# de_DE.UTF-8 UTF-8
+# de_DE@euro ISO-8859-15
+# de_IT ISO-8859-1
+# de_IT.UTF-8 UTF-8
+# de_LI.UTF-8 UTF-8
+# de_LU ISO-8859-1
+# de_LU.UTF-8 UTF-8
+# de_LU@euro ISO-8859-15
+# doi_IN UTF-8
+# dv_MV UTF-8
+# dz_BT UTF-8
+# el_CY ISO-8859-7
+# el_CY.UTF-8 UTF-8
+# el_GR ISO-8859-7
+# el_GR.UTF-8 UTF-8
+# en_AG UTF-8
+# en_AU ISO-8859-1
+# en_AU.UTF-8 UTF-8
+# en_BW ISO-8859-1
+# en_BW.UTF-8 UTF-8
+# en_CA ISO-8859-1
+# en_CA.UTF-8 UTF-8
+# en_DK ISO-8859-1
+# en_DK.ISO-8859-15 ISO-8859-15
+# en_DK.UTF-8 UTF-8
+# en_GB ISO-8859-1
+# en_GB.ISO-8859-15 ISO-8859-15
+# en_GB.UTF-8 UTF-8
+# en_HK ISO-8859-1
+# en_HK.UTF-8 UTF-8
+# en_IE ISO-8859-1
+# en_IE.UTF-8 UTF-8
+# en_IE@euro ISO-8859-15
+# en_IL UTF-8
+# en_IN UTF-8
+# en_NG UTF-8
+# en_NZ ISO-8859-1
+# en_NZ.UTF-8 UTF-8
+# en_PH ISO-8859-1
+# en_PH.UTF-8 UTF-8
+# en_SG ISO-8859-1
+# en_SG.UTF-8 UTF-8
+# en_US ISO-8859-1
+# en_US.ISO-8859-15 ISO-8859-15
+en_US.UTF-8 UTF-8
+# en_ZA ISO-8859-1
+# en_ZA.UTF-8 UTF-8
+# en_ZM UTF-8
+# en_ZW ISO-8859-1
+# en_ZW.UTF-8 UTF-8
+# eo UTF-8
+# es_AR ISO-8859-1
+# es_AR.UTF-8 UTF-8
+# es_BO ISO-8859-1
+# es_BO.UTF-8 UTF-8
+# es_CL ISO-8859-1
+# es_CL.UTF-8 UTF-8
+# es_CO ISO-8859-1
+# es_CO.UTF-8 UTF-8
+# es_CR ISO-8859-1
+# es_CR.UTF-8 UTF-8
+# es_CU UTF-8
+# es_DO ISO-8859-1
+# es_DO.UTF-8 UTF-8
+# es_EC ISO-8859-1
+# es_EC.UTF-8 UTF-8
+# es_ES ISO-8859-1
+# es_ES.UTF-8 UTF-8
+# es_ES@euro ISO-8859-15
+# es_GT ISO-8859-1
+# es_GT.UTF-8 UTF-8
+# es_HN ISO-8859-1
+# es_HN.UTF-8 UTF-8
+# es_MX ISO-8859-1
+# es_MX.UTF-8 UTF-8
+# es_NI ISO-8859-1
+# es_NI.UTF-8 UTF-8
+# es_PA ISO-8859-1
+# es_PA.UTF-8 UTF-8
+# es_PE ISO-8859-1
+# es_PE.UTF-8 UTF-8
+# es_PR ISO-8859-1
+# es_PR.UTF-8 UTF-8
+# es_PY ISO-8859-1
+# es_PY.UTF-8 UTF-8
+# es_SV ISO-8859-1
+# es_SV.UTF-8 UTF-8
+# es_US ISO-8859-1
+# es_US.UTF-8 UTF-8
+# es_UY ISO-8859-1
+# es_UY.UTF-8 UTF-8
+# es_VE ISO-8859-1
+# es_VE.UTF-8 UTF-8
+# et_EE ISO-8859-1
+# et_EE.ISO-8859-15 ISO-8859-15
+# et_EE.UTF-8 UTF-8
+# eu_ES ISO-8859-1
+# eu_ES.UTF-8 UTF-8
+# eu_ES@euro ISO-8859-15
+# eu_FR ISO-8859-1
+# eu_FR.UTF-8 UTF-8
+# eu_FR@euro ISO-8859-15
+# fa_IR UTF-8
+# ff_SN UTF-8
+# fi_FI ISO-8859-1
+# fi_FI.UTF-8 UTF-8
+# fi_FI@euro ISO-8859-15
+# fil_PH UTF-8
+# fo_FO ISO-8859-1
+# fo_FO.UTF-8 UTF-8
+# fr_BE ISO-8859-1
+# fr_BE.UTF-8 UTF-8
+# fr_BE@euro ISO-8859-15
+# fr_CA ISO-8859-1
+# fr_CA.UTF-8 UTF-8
+# fr_CH ISO-8859-1
+# fr_CH.UTF-8 UTF-8
+# fr_FR ISO-8859-1
+# fr_FR.UTF-8 UTF-8
+# fr_FR@euro ISO-8859-15
+# fr_LU ISO-8859-1
+# fr_LU.UTF-8 UTF-8
+# fr_LU@euro ISO-8859-15
+# fur_IT UTF-8
+# fy_DE UTF-8
+# fy_NL UTF-8
+# ga_IE ISO-8859-1
+# ga_IE.UTF-8 UTF-8
+# ga_IE@euro ISO-8859-15
+# gd_GB ISO-8859-15
+# gd_GB.UTF-8 UTF-8
+# gez_ER UTF-8
+# gez_ER@abegede UTF-8
+# gez_ET UTF-8
+# gez_ET@abegede UTF-8
+# gl_ES ISO-8859-1
+# gl_ES.UTF-8 UTF-8
+# gl_ES@euro ISO-8859-15
+# gu_IN UTF-8
+# gv_GB ISO-8859-1
+# gv_GB.UTF-8 UTF-8
+# ha_NG UTF-8
+# hak_TW UTF-8
+# he_IL ISO-8859-8
+# he_IL.UTF-8 UTF-8
+# hi_IN UTF-8
+# hne_IN UTF-8
+# hr_HR ISO-8859-2
+# hr_HR.UTF-8 UTF-8
+# hsb_DE ISO-8859-2
+# hsb_DE.UTF-8 UTF-8
+# ht_HT UTF-8
+# hu_HU ISO-8859-2
+# hu_HU.UTF-8 UTF-8
+# hy_AM UTF-8
+# hy_AM.ARMSCII-8 ARMSCII-8
+# ia_FR UTF-8
+# id_ID ISO-8859-1
+# id_ID.UTF-8 UTF-8
+# ig_NG UTF-8
+# ik_CA UTF-8
+# is_IS ISO-8859-1
+# is_IS.UTF-8 UTF-8
+# it_CH ISO-8859-1
+# it_CH.UTF-8 UTF-8
+# it_IT ISO-8859-1
+# it_IT.UTF-8 UTF-8
+# it_IT@euro ISO-8859-15
+# iu_CA UTF-8
+# ja_JP.EUC-JP EUC-JP
+# ja_JP.UTF-8 UTF-8
+# ka_GE GEORGIAN-PS
+# ka_GE.UTF-8 UTF-8
+# kk_KZ PT154
+# kk_KZ.RK1048 RK1048
+# kk_KZ.UTF-8 UTF-8
+# kl_GL ISO-8859-1
+# kl_GL.UTF-8 UTF-8
+# km_KH UTF-8
+# kn_IN UTF-8
+# ko_KR.EUC-KR EUC-KR
+# ko_KR.UTF-8 UTF-8
+# kok_IN UTF-8
+# ks_IN UTF-8
+# ks_IN@devanagari UTF-8
+# ku_TR ISO-8859-9
+# ku_TR.UTF-8 UTF-8
+# kw_GB ISO-8859-1
+# kw_GB.UTF-8 UTF-8
+# ky_KG UTF-8
+# lb_LU UTF-8
+# lg_UG ISO-8859-10
+# lg_UG.UTF-8 UTF-8
+# li_BE UTF-8
+# li_NL UTF-8
+# lij_IT UTF-8
+# ln_CD UTF-8
+# lo_LA UTF-8
+# lt_LT ISO-8859-13
+# lt_LT.UTF-8 UTF-8
+# lv_LV ISO-8859-13
+# lv_LV.UTF-8 UTF-8
+# lzh_TW UTF-8
+# mag_IN UTF-8
+# mai_IN UTF-8
+# mg_MG ISO-8859-15
+# mg_MG.UTF-8 UTF-8
+# mhr_RU UTF-8
+# mi_NZ ISO-8859-13
+# mi_NZ.UTF-8 UTF-8
+# mk_MK ISO-8859-5
+# mk_MK.UTF-8 UTF-8
+# ml_IN UTF-8
+# mn_MN UTF-8
+# mni_IN UTF-8
+# mr_IN UTF-8
+# ms_MY ISO-8859-1
+# ms_MY.UTF-8 UTF-8
+# mt_MT ISO-8859-3
+# mt_MT.UTF-8 UTF-8
+# my_MM UTF-8
+# nan_TW UTF-8
+# nan_TW@latin UTF-8
+# nb_NO ISO-8859-1
+# nb_NO.UTF-8 UTF-8
+# nds_DE UTF-8
+# nds_NL UTF-8
+# ne_NP UTF-8
+# nhn_MX UTF-8
+# niu_NU UTF-8
+# niu_NZ UTF-8
+# nl_AW UTF-8
+# nl_BE ISO-8859-1
+# nl_BE.UTF-8 UTF-8
+# nl_BE@euro ISO-8859-15
+# nl_NL ISO-8859-1
+# nl_NL.UTF-8 UTF-8
+# nl_NL@euro ISO-8859-15
+# nn_NO ISO-8859-1
+# nn_NO.UTF-8 UTF-8
+# nr_ZA UTF-8
+# nso_ZA UTF-8
+# oc_FR ISO-8859-1
+# oc_FR.UTF-8 UTF-8
+# om_ET UTF-8
+# om_KE ISO-8859-1
+# om_KE.UTF-8 UTF-8
+# or_IN UTF-8
+# os_RU UTF-8
+# pa_IN UTF-8
+# pa_PK UTF-8
+# pap_AW UTF-8
+# pap_CW UTF-8
+# pl_PL ISO-8859-2
+# pl_PL.UTF-8 UTF-8
+# ps_AF UTF-8
+# pt_BR ISO-8859-1
+# pt_BR.UTF-8 UTF-8
+# pt_PT ISO-8859-1
+# pt_PT.UTF-8 UTF-8
+# pt_PT@euro ISO-8859-15
+# quz_PE UTF-8
+# raj_IN UTF-8
+# ro_RO ISO-8859-2
+# ro_RO.UTF-8 UTF-8
+# ru_RU ISO-8859-5
+# ru_RU.CP1251 CP1251
+# ru_RU.KOI8-R KOI8-R
+# ru_RU.UTF-8 UTF-8
+# ru_UA KOI8-U
+# ru_UA.UTF-8 UTF-8
+# rw_RW UTF-8
+# sa_IN UTF-8
+# sat_IN UTF-8
+# sc_IT UTF-8
+# sd_IN UTF-8
+# sd_IN@devanagari UTF-8
+# se_NO UTF-8
+# sgs_LT UTF-8
+# shs_CA UTF-8
+# si_LK UTF-8
+# sid_ET UTF-8
+# sk_SK ISO-8859-2
+# sk_SK.UTF-8 UTF-8
+# sl_SI ISO-8859-2
+# sl_SI.UTF-8 UTF-8
+# so_DJ ISO-8859-1
+# so_DJ.UTF-8 UTF-8
+# so_ET UTF-8
+# so_KE ISO-8859-1
+# so_KE.UTF-8 UTF-8
+# so_SO ISO-8859-1
+# so_SO.UTF-8 UTF-8
+# sq_AL ISO-8859-1
+# sq_AL.UTF-8 UTF-8
+# sq_MK UTF-8
+# sr_ME UTF-8
+# sr_RS UTF-8
+# sr_RS@latin UTF-8
+# ss_ZA UTF-8
+# st_ZA ISO-8859-1
+# st_ZA.UTF-8 UTF-8
+# sv_FI ISO-8859-1
+# sv_FI.UTF-8 UTF-8
+# sv_FI@euro ISO-8859-15
+# sv_SE ISO-8859-1
+# sv_SE.ISO-8859-15 ISO-8859-15
+# sv_SE.UTF-8 UTF-8
+# sw_KE UTF-8
+# sw_TZ UTF-8
+# szl_PL UTF-8
+# ta_IN UTF-8
+# ta_LK UTF-8
+# tcy_IN.UTF-8 UTF-8
+# te_IN UTF-8
+# tg_TJ KOI8-T
+# tg_TJ.UTF-8 UTF-8
+# th_TH TIS-620
+# th_TH.UTF-8 UTF-8
+# the_NP UTF-8
+# ti_ER UTF-8
+# ti_ET UTF-8
+# tig_ER UTF-8
+# tk_TM UTF-8
+# tl_PH ISO-8859-1
+# tl_PH.UTF-8 UTF-8
+# tn_ZA UTF-8
+# tr_CY ISO-8859-9
+# tr_CY.UTF-8 UTF-8
+# tr_TR ISO-8859-9
+# tr_TR.UTF-8 UTF-8
+# ts_ZA UTF-8
+# tt_RU UTF-8
+# tt_RU@iqtelif UTF-8
+# ug_CN UTF-8
+# uk_UA KOI8-U
+# uk_UA.UTF-8 UTF-8
+# unm_US UTF-8
+# ur_IN UTF-8
+# ur_PK UTF-8
+# uz_UZ ISO-8859-1
+# uz_UZ.UTF-8 UTF-8
+# uz_UZ@cyrillic UTF-8
+# ve_ZA UTF-8
+# vi_VN UTF-8
+# wa_BE ISO-8859-1
+# wa_BE.UTF-8 UTF-8
+# wa_BE@euro ISO-8859-15
+# wae_CH UTF-8
+# wal_ET UTF-8
+# wo_SN UTF-8
+# xh_ZA ISO-8859-1
+# xh_ZA.UTF-8 UTF-8
+# yi_US CP1255
+# yi_US.UTF-8 UTF-8
+# yo_NG UTF-8
+# yue_HK UTF-8
+# zh_CN GB2312
+# zh_CN.GB18030 GB18030
+# zh_CN.GBK GBK
+# zh_CN.UTF-8 UTF-8
+# zh_HK BIG5-HKSCS
+# zh_HK.UTF-8 UTF-8
+# zh_SG GB2312
+# zh_SG.GBK GBK
+# zh_SG.UTF-8 UTF-8
+# zh_TW BIG5
+# zh_TW.EUC-TW EUC-TW
+# zh_TW.UTF-8 UTF-8
+# zu_ZA ISO-8859-1
+# zu_ZA.UTF-8 UTF-8
+# agr_PE UTF-8
+# az_IR UTF-8
+# bho_NP UTF-8
+# bi_VU UTF-8
+# ca_ES@valencia UTF-8
+# dsb_DE UTF-8
+# el_GR@euro ISO-8859-7
+# en_SC.UTF-8 UTF-8
+# hif_FJ UTF-8
+# kab_DZ UTF-8
+# mai_NP UTF-8
+# mfe_MU UTF-8
+# miq_NI UTF-8
+# mjw_IN UTF-8
+# sah_RU UTF-8
+# shn_MM UTF-8
+# sm_WS UTF-8
+# to_TO UTF-8
+# tpi_PG UTF-8
+# yuw_PG UTF-8

BIN
resources/BuildResources/regdb/wireless-regdb-2018.09.07.tar.gz


+ 0 - 2
resources/BuildResources/regdb/wireless-regdb-2018.09.07/.gitignore

@@ -1,2 +0,0 @@
-key.priv.pem
-dbparse.pyc

+ 0 - 49
resources/BuildResources/regdb/wireless-regdb-2018.09.07/CONTRIBUTING

@@ -1,49 +0,0 @@
-
-This project embraces the Developer Certificate of Origin (DCO) for
-contributions. This means you must agree to the following prior to submitting
-patches, if you agree with this developer certificate you acknowledge this by
-adding a Signed-off-by tag to your patch commit log. Every submitted patch
-must have this.
-
-The source for the DCO:
-
-http://developercertificate.org/
-
------------------------------------------------------------------------
-
-Developer Certificate of Origin
-Version 1.1
-
-Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-660 York Street, Suite 102,
-San Francisco, CA 94110 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-
-
-Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
-    have the right to submit it under the open source license
-    indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
-    of my knowledge, is covered under an appropriate open source
-    license and I have the right under that license to submit that
-    work with modifications, whether created in whole or in part
-    by me, under the same open source license (unless I am
-    permitted to submit under a different license), as indicated
-    in the file; or
-
-(c) The contribution was provided directly to me by some other
-    person who certified (a), (b) or (c) and I have not modified
-    it.
-
-(d) I understand and agree that this project and the contribution
-    are public and that a record of the contribution (including all
-    personal information I submit with it, including my sign-off) is
-    maintained indefinitely and may be redistributed consistent with
-    this project or the open source license(s) involved.

+ 0 - 16
resources/BuildResources/regdb/wireless-regdb-2018.09.07/LICENSE

@@ -1,16 +0,0 @@
-Copyright (c) 2008, Luis R. Rodriguez <mcgrof@gmail.com>
-Copyright (c) 2008, Johannes Berg <johannes@sipsolutions.net>
-Copyright (c) 2008, Michael Green <Michael.Green@Atheros.com>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-

+ 0 - 129
resources/BuildResources/regdb/wireless-regdb-2018.09.07/Makefile

@@ -1,129 +0,0 @@
-# Install prefix
-PREFIX ?= /usr
-CRDA_PATH ?= $(PREFIX)/lib/crda
-CRDA_KEY_PATH ?= $(CRDA_PATH)/pubkeys
-FIRMWARE_PATH ?= /lib/firmware
-
-MANDIR ?= $(PREFIX)/share/man/
-
-SHA1SUM ?= /usr/bin/sha1sum
-LSB_RELEASE ?= /usr/bin/lsb_release
-WHOAMI ?= /usr/bin/whoami
-
-# Distro name: Ubuntu, Debian, Fedora, if not present you get
-# "custom-distro", if your distribution does not have the LSB stuff,
-# then set this variable when calling make if you don't want "custom-distro"
-LSB_ID ?= $(shell if [ -f $(LSB_RELEASE) ]; then \
-			$(LSB_RELEASE) -i -s; \
-		else \
-			echo custom-distro; \
-		fi)
-
-DISTRO_PRIVKEY ?= ~/.wireless-regdb-$(LSB_ID).key.priv.pem
-DISTRO_PUBKEY ?= ~/.wireless-regdb-$(LSB_ID).key.priv.pem
-
-REGDB_AUTHOR ?= $(shell if [ -f $(DISTRO_PRIVKEY) ]; then \
-			echo $(LSB_ID) ; \
-		elif [ -f $(WHOAMI) ]; then \
-			$(WHOAMI); \
-		else \
-			echo custom-user; \
-		fi)
-
-REGDB_PRIVKEY ?= ~/.wireless-regdb-$(REGDB_AUTHOR).key.priv.pem
-REGDB_PUBKEY ?= $(REGDB_AUTHOR).key.pub.pem
-REGDB_PUBCERT ?= $(REGDB_AUTHOR).x509.pem
-
-REGDB_UPSTREAM_PUBKEY ?= sforshee.key.pub.pem
-
-REGDB_CHANGED = $(shell $(SHA1SUM) -c --status sha1sum.txt >/dev/null 2>&1; \
-        if [ $$? -ne 0 ]; then \
-                echo maintainer-clean $(REGDB_PUBKEY) $(REGDB_PUBCERT); \
-        fi)
-
-.PHONY: all clean mrproper install maintainer-clean install-distro-key
-
-all: $(REGDB_CHANGED) regulatory.bin sha1sum.txt regulatory.db.p7s
-
-clean:
-	@rm -f *.pyc *.gz
-
-maintainer-clean: clean
-	@rm -f regulatory.bin regulatory.db regulatory.db.p7s
-
-mrproper: clean maintainer-clean
-	@echo Removed public key, regulatory.bin, regulatory.db* and compressed man pages
-	@rm -f $(REGDB_PUBKEY) $(REGDB_PUBCERT) .custom
-
-regulatory.bin: db.txt $(REGDB_PRIVKEY) $(REGDB_PUBKEY)
-	@echo Generating $@ digitally signed by $(REGDB_AUTHOR)...
-	./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY)
-
-regulatory.db: db.txt db2fw.py
-	@echo "Generating $@"
-	./db2fw.py regulatory.db db.txt
-
-regulatory.db.p7s: regulatory.db $(REGDB_PRIVKEY) $(REGDB_PUBCERT)
-	@echo "Signing regulatory.db (by $(REGDB_AUTHOR))..."
-	@openssl smime -sign \
-		-signer $(REGDB_PUBCERT) \
-		-inkey $(REGDB_PRIVKEY) \
-		-in $< -nosmimecap -binary \
-		-outform DER -out $@
-
-sha1sum.txt: db.txt
-	sha1sum $< > $@
-
-$(REGDB_PUBKEY): $(REGDB_PRIVKEY)
-	@echo "Generating public key for $(REGDB_AUTHOR)..."
-	openssl rsa -in $(REGDB_PRIVKEY) -out $(REGDB_PUBKEY) -pubout -outform PEM
-
-$(REGDB_PUBCERT): $(REGDB_PRIVKEY)
-	@echo "Generating certificate for $(REGDB_AUTHOR)..."
-	./gen-pubcert.sh $(REGDB_PRIVKEY) $(REGDB_PUBCERT)
-	@echo $(REGDB_PUBKEY) > .custom
-
-
-$(REGDB_PRIVKEY):
-	@echo "Generating private key for $(REGDB_AUTHOR)..."
-	openssl genrsa -out $(REGDB_PRIVKEY) 2048
-
-ifneq ($(shell test -e $(DISTRO_PRIVKEY) && echo yes),yes)
-$(DISTRO_PRIVKEY):
-	@echo "Generating private key for $(LSB_ID) packager..."
-	openssl genrsa -out $(DISTRO_PRIVKEY) 2048
-endif
-
-install-distro-key: maintainer-clean $(DISTRO_PRIVKEY)
-
-%.gz: %
-	gzip < $< > $@
-
-# Users should just do:
-#	sudo make install
-#
-# Developers should do:
-#	make maintainer-clean
-#	make
-#	sudo make install
-#
-# Distributions packagers should do only once:
-#	make install-distro-key
-# This will create a private key for you and install it into
-# ~/.wireless-regdb-$(LSB_ID).key.priv.pem
-# To make new releaes just do:
-#	make maintainer-clean
-#	make
-#	sudo make install
-install: regulatory.bin.5.gz regulatory.db.5.gz
-	install -m 755 -d $(DESTDIR)/$(CRDA_PATH)
-	install -m 755 -d $(DESTDIR)/$(CRDA_KEY_PATH)
-	install -m 755 -d $(DESTDIR)/$(FIRMWARE_PATH)
-	if [ -f .custom ]; then \
-		install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(shell cat .custom); \
-	fi
-	install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(REGDB_UPSTREAM_PUBKEY)
-	install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.bin
-	install -m 644 -t $(DESTDIR)/$(FIRMWARE_PATH) regulatory.db regulatory.db.p7s
-	install -m 755 -d $(DESTDIR)/$(MANDIR)/man5/
-	install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.bin.5.gz regulatory.db.5.gz

+ 0 - 29
resources/BuildResources/regdb/wireless-regdb-2018.09.07/README

@@ -1,29 +0,0 @@
-This repository contains the plain text version of the regulatory
-database file I maintain for use with Central Regulatory Database
-Agent daemon.  Also included is the compiled binary version of this
-file signed with my RSA key.  This represents a good faith attempt
-to capture regulatory information that is correct at the time of its last
-modification.  This information is provided to you with no warranty
-either expressed or implied.
-
-Also included are the tools used to compile and sign the regulatory.bin
-file as well as a MoinMoin macro used for viewing the database.
-
- TECHNICAL INFORMATION
-=======================
-
-The regulatory information in `db.txt' is stored in a human-readable
-format which can be read using the `dbparse.py' python module. This
-python module is used by the web viewer (Regulatory.py) which is
-implemented as a MoinMoin macro (and used on http://wireless.kernel.org)
-to allow viewing the database for verification.
-
-The dbparse module is also used by db2bin.py and db2fw.py, the `compilers'
-that compile the database to its binary formats.
-
-For more information, please see the CRDA git repository:
-
-	git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git
-
-John W. Linville
-17 November 2008

+ 0 - 1380
resources/BuildResources/regdb/wireless-regdb-2018.09.07/db.txt

@@ -1,1380 +0,0 @@
-wmmrule ETSI:
-	vo_c: cw_min=3, cw_max=7, aifsn=2, cot=2
-	vi_c: cw_min=7, cw_max=15, aifsn=2, cot=4
-	be_c: cw_min=15, cw_max=1023, aifsn=3, cot=6
-	bk_c: cw_min=15, cw_max=1023, aifsn=7, cot=6
-	vo_ap: cw_min=3, cw_max=7, aifsn=1, cot=2
-	vi_ap: cw_min=7, cw_max=15, aifsn=1, cot=4
-	be_ap: cw_min=15, cw_max=63, aifsn=3, cot=6
-	bk_ap: cw_min=15, cw_max=1023, aifsn=7, cot=6
-
-# This is the world regulatory domain
-country 00:
-	(2402 - 2472 @ 40), (20)
-	# Channel 12 - 13.
-	(2457 - 2482 @ 20), (20), NO-IR, AUTO-BW
-	# Channel 14. Only JP enables this and for 802.11b only
-	(2474 - 2494 @ 20), (20), NO-IR, NO-OFDM
-	# Channel 36 - 48
-	(5170 - 5250 @ 80), (20), NO-IR, AUTO-BW
-	# Channel 52 - 64
-	(5250 - 5330 @ 80), (20), NO-IR, DFS, AUTO-BW
-	# Channel 100 - 144
-	(5490 - 5730 @ 160), (20), NO-IR, DFS
-	# Channel 149 - 165
-	(5735 - 5835 @ 80), (20), NO-IR
-	# IEEE 802.11ad (60GHz), channels 1..3
-	(57240 - 63720 @ 2160), (0)
-
-
-country AD:
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, wmmrule=ETSI
-	(5490 - 5710 @ 80), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country AE: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country AF: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-# Source:
-# http://pucanguilla.org/Downloads/January2005-Anguilla%20Table%20of%20Allocations.pdf
-country AI: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country AL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20.00), AUTO-BW
-	(5250 - 5330 @ 80), (20.00), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27.00), DFS
-
-country AM: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (18)
-	(5250 - 5330 @ 20), (18), DFS
-
-country AN: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country AR: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country AS: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country AT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Source:
-# https://www.legislation.gov.au/Details/F2016C00432
-# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
-# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
-# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
-# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
-country AU: DFS-ETSI
-	(2400 - 2483.5 @ 40), (36)
-	(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS
-	(5470 - 5600 @ 80), (27), DFS
-	(5650 - 5730 @ 80), (27), DFS
-	(5730 - 5850 @ 80), (36)
-	(57000 - 66000 @ 2160), (43), NO-OUTDOOR
-
-country AW: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country AZ: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (18), AUTO-BW
-	(5250 - 5330 @ 80), (18), DFS, AUTO-BW
-
-country BA: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country BB: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-country BD: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5735 - 5835 @ 80), (30)
-
-country BE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country BF: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Bulgarian rules as defined by the Communications Regulation Commission in the
-# following documents:
-#
-# Rules for carrying out electronic communications through radio equipment using
-# radio spectrum, which does not need to be individually assigned (the Rules):
-# http://www.crc.bg/files/_bg/Pravila_09_06_2015.pdf
-#
-# List of radio equipment that uses harmonized within the European Union bands
-# and electronic communications terminal equipment (the List):
-# http://www.crc.bg/files/_bg/Spisak_2015.pdf
-#
-# Note: The transmit power limits in the 5250-5350 MHz and 5470-5725 MHz bands
-# can be raised by 3 dBm if TPC is enabled. Refer to BDS EN 301 893 for details.
-country BG: DFS-ETSI
-	# Wideband data transmission systems (WDTS) in the 2.4GHz ISM band, ref:
-	# I.22 of the List, BDS EN 300 328
-	(2402 - 2482 @ 40), (20)
-	# 5 GHz Radio Local Area Networks (RLANs), ref:
-	# II.H01 of the List, BDS EN 301 893
-	(5170 - 5250 @ 80), (23), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	# II.H01 of the List, I.54 from the List, BDS EN 301 893
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# Short range devices (SRDs) in the 5725-5875 MHz frequency range, ref:
-	# I.43 of the List, BDS EN 300 440-2, BDS EN 300 440-1
-	(5725 - 5875 @ 80), (14)
-	# 60 GHz Multiple-Gigabit RLAN Systems, ref:
-	# II.H03 of the List, BDS EN 302 567-2
-	(57000 - 66000 @ 2160), (40), NO-OUTDOOR
-
-country BH: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (20)
-	(5250 - 5330 @ 20), (20), DFS
-	(5735 - 5835 @ 20), (20)
-
-country BL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country BM: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country BN: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (20)
-
-country BO: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5250 - 5330 @ 80), (30), DFS
-	(5735 - 5835 @ 80), (30)
-
-country BR: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country BS: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://www.bicma.gov.bt/paper/publication/nrrpart4.pdf
-country BT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country BY: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country BZ: DFS-JP
-	(2402 - 2482 @ 40), (30)
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# https://www.ic.gc.ca/eic/site/smt-gst.nsf/vwapj/rss-247-i2-e.pdf/$file/rss-247-i2-e.pdf
-country CA: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (24), DFS, AUTO-BW
-	(5470 - 5600 @ 80), (24), DFS
-	(5650 - 5730 @ 80), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://www.art-rca.org
-country CF: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 40), (17)
-	(5250 - 5330 @ 40), (24), DFS
-	(5490 - 5730 @ 40), (24), DFS
-	(5735 - 5835 @ 40), (30)
-
-# Source:
-# https://www.ofcomnet.ch/#/fatTable
-# Note that the maximum transmitter power can be doubled for 5250-5710MHz if
-# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
-country CH: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5150 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country CI: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country CL: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (20)
-
-country CN: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-	# 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm
-	# ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf
-	(57240 - 59400 @ 2160), (28)
-	(59400 - 63720 @ 2160), (44)
-	(63720 - 65880 @ 2160), (28)
-
-country CO: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country CR: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (17)
-	(5250 - 5330 @ 20), (24), DFS
-	(5490 - 5730 @ 20), (24), DFS
-	(5735 - 5835 @ 20), (30)
-
-# Source:
-# http://www.mincom.gob.cu/?q=marcoregulatorio
-# - Redes Informáticas
-# Resolución 127- 2011 Reglamento de Banda de frecuencias de 2,4 GHz.
-country CU: DFS-FCC
-	(2400 - 2483.5 @ 40), (200 mW)
-
-country CX: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country CY: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Data from http://www.ctu.eu/164/download/VOR/VOR-12-08-2005-34.pdf
-# and http://www.ctu.eu/164/download/VOR/VOR-12-05-2007-6-AN.pdf
-# Power at 5250 - 5350 MHz and 5470 - 5725 MHz can be doubled if TPC is
-# implemented.
-country CZ: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Allocation for the 2.4 GHz band (Vfg 10 / 2013, Allgemeinzuteilung von
-# Frequenzen für die Nutzung in lokalen Netzwerken; Wireless Local Area
-# Networks (WLAN-Funkanwendungen).
-# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2013_10_WLAN_2,4GHz_pdf.pdf
-#
-# Allocation for the 5 GHz band (Vfg. 7 / 2010, Allgemeinzuteilung von
-# Frequenzen in den Bereichen 5150 MHz - 5350 MHz und 5470 MHz - 5725 MHz für
-# Funkanwendungen zur breitbandigen Datenübertragung, WAS/WLAN („Wireless
-# Access Systems including Wireless Local Area Networks“).
-# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2010_07_WLAN_5GHz_pdf.pdf
-# The values for the 5 GHz have been reduced by a factor of 2 (3db) for non TPC
-# devices (in other words: devices with TPC can use twice the tx power of this
-# table). Note that the docs do not require TPC for 5150--5250; the reduction
-# to 100mW thus is not strictly required -- however the conservative 100mW
-# limit is used here as the non-interference with radar and satellite
-# apps relies on the attenuation by the building walls only in the
-# absence of DFS; the neighbour countries have 100mW limit here as well.
-#
-# The ETSI EN 300 440-1 standard for short range devices in the 5 GHz band has
-# been implemented in Germany:
-# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2014_69_SRD_pdf.pdf
-#
-# Allocation for the 60 GHz band (Allgemeinzuteilung von Frequenzen im
-# Bereich 57 GHz - 66 GHz für Funkanwendungen für weitbandige
-# Datenübertragungssysteme; „Multiple Gigabit WAS/RLAN Systems (MGWS)“).
-# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2011_08_MGWS_pdf.pdf
-
-country DE: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5250 @ 80), (100 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
-	# short range devices (ETSI EN 300 440-1)
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4 (ETSI EN 302 567)
-	(57000 - 66000 @ 2160), (40)
-
-# Sources:
-# 5GHz: https://erhvervsstyrelsen.dk/sites/default/files/007_interface-datanet_5-6_ghz.pdf.pdf
-# 60GHz: https://erhvervsstyrelsen.dk/sites/default/files/radiograenseflader-63.pdf
-country DK: DFS-ETSI
-	(2400 - 2483.5 @ 40), (20)
-	(5150 - 5250 @ 80), (23), AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4 (ETSI EN 302 567)
-	(57000 - 66000 @ 2160), (40), NO-OUTDOOR
-
-# Source:
-# http://www.ntrcdom.org/index.php?option=com_content&view=category&layout=blog&id=10&Itemid=55
-country DM: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-country DO: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-country DZ: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170.000 - 5250.000 @ 80.000), (23.00), AUTO-BW
-	(5250.000 - 5330.000 @ 80.000), (23.00), DFS, AUTO-BW
-	(5490.000 - 5670.000 @ 160.000), (23.00), DFS
-
-country EC: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (17)
-	(5250 - 5330 @ 20), (24), DFS
-	(5490 - 5730 @ 20), (24), DFS
-	(5735 - 5835 @ 20), (30)
-
-country EE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country EG: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 40), (20)
-	(5250 - 5330 @ 40), (20), DFS
-
-# Source:
-# Cuadro nacional de atribución de frecuencias (CNAF)
-# http://www.mincotur.gob.es/telecomunicaciones/espectro/paginas/cnaf.aspx
-country ES: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
-	# Short Range Devices (SRD) (ETSI EN 300 440)
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country ET: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country FI: DFS-ETSI
-	(2400 - 2483.5 @ 40), (20)
-	(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
-	# short range devices (ETSI EN 300 440-1)
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country FM: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country FR: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-        # short range devices (ETSI EN 300 440)
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country GB: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country GD: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country GE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (18), AUTO-BW
-	(5250 - 5330 @ 80), (18), DFS, AUTO-BW
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country GF: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country GH: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country GL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country GP: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country GR: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country GT: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-country GU: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 20), (17)
-	(5250 - 5330 @ 20), (24), DFS
-	(5490 - 5730 @ 20), (24), DFS
-	(5735 - 5835 @ 20), (30)
-
-country GY:
-	(2402 - 2482 @ 40), (30)
-	(5735 - 5835 @ 80), (30)
-
-country HK: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country HN: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country HR: DFS-ETSI
-	(2400 - 2483.5 @ 40), (20)
-	(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country HT: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# http://stir.nmhh.hu/?oldal=dokumentumGeneralo&root_rendeletelem_id=3&hatalyos=1
-# http://english.nmhh.hu/cikk/297/Eljarasi_tajekoztato_a_24_GHzes_es_az_5_GHzes_savban_mukodo_berendezesek_engedelyezeserol
-# http://nmhh.hu/dokumentum/319/kis_hatotavolsagu_eszkozok_srdk.pdf
-country HU: DFS-ETSI
-	# ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 300 328
-	# additionally: 100mW @ 10MHz channels, 50mW @ 5MHz (max. 10mW/MHz)
-	(2400 - 2483.5 @ 40), (20)
-	# ref: 2005/513/EK
-	# note: TPC not needed @ 5150-5250
-	(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	# note: max would be +3dB with TPC @ 5250-5725
-	(5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
-	# "Short Range Devices (SRD)"
-	# ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 300 440, MSZ EN 302 064
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4, "Fixed outdoor installation not allowed"
-	# ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 302 567
-	(57000 - 66000 @ 2160), (40), NO-OUTDOOR
-
-country ID: DFS-JP
-	# ref: http://www.postel.go.id/content/ID/regulasi/standardisasi/kepdir/bwa%205,8%20ghz.pdf
-	(2402 - 2482 @ 20), (20)
-	(5735 - 5815 @ 20), (23)
-
-country IE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country IL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
-
-country IN:
-	(2402 - 2482 @ 40), (20)
-	(5150 - 5350 @ 160), (23)
-	(5725 - 5875 @ 80), (23)
-
-country IR: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5735 - 5835 @ 80), (30)
-
-country IS: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country IT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country JM: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country JO: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23)
-	(5735 - 5835 @ 80), (23)
-
-country JP: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(2474 - 2494 @ 20), (20), NO-OFDM
-	(4910 - 4990 @ 40), (23)
-	(5030 - 5090 @ 40), (23)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (23), DFS
-	# 60 GHz band channels 2-4 at 10mW,
-	# ref: http://www.arib.or.jp/english/html/overview/doc/1-STD-T74v1_1.pdf
-	(59000 - 66000 @ 2160), (10 mW)
-
-country KE: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23)
-	(5490 - 5570 @ 80), (30), DFS
-	(5735 - 5775 @ 40), (23)
-
-country KH: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-# Source
-# http://ntrc.kn/?page_id=7
-country KN: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (30), DFS
-	(5735 - 5815 @ 80), (30)
-
-country KP: DFS-JP
-	(2402 - 2482 @ 20), (20)
-	(5170 - 5250 @ 20), (20)
-	(5250 - 5330 @ 20), (20), DFS
-	(5490 - 5630 @ 20), (30), DFS
-	(5735 - 5815 @ 20), (30)
-
-country KR: DFS-JP
-	(2402 - 2482 @ 40), (13)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (30), DFS
-	(5735 - 5835 @ 80), (30)
-	# 60 GHz band channels 1-4,
-	# ref: http://www.law.go.kr/%ED%96%89%EC%A0%95%EA%B7%9C%EC%B9%99/%EB%AC%B4%EC%84%A0%EC%84%A4%EB%B9%84%EA%B7%9C%EC%B9%99
-	(57000 - 66000 @ 2160), (43)
-
-country KW: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-
-country KY: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://mic.gov.kz/sites/default/files/pages/pravila_prisvoeniya_polos_chastot_no34.pdf
-# http://adilet.zan.kz/rus/docs/P000001379_
-country KZ: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5150 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW
-	(5470 - 5725 @ 80), (20), NO-OUTDOOR, DFS
-
-country LB: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://www.ntrc.org.lc/operational_structures.htm
-country LC: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (30), DFS
-	(5735 - 5815 @ 80), (30)
-
-# Source:
-# https://www.ofcomnet.ch/#/fatTable
-# Note that the maximum transmitter power can be doubled for 5250-5710MHz if
-# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
-country LI: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5150 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country LK: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (17)
-	(5250 - 5330 @ 20), (24), DFS
-	(5490 - 5730 @ 20), (24), DFS
-	(5735 - 5835 @ 20), (30)
-
-# Source:
-# http://lca.org.ls/images/documents/lesotho_national_frequency_allocation_plan.pdf
-country LS: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country LT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country LU: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country LV: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country MA: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-
-country MC: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-# Source:
-# http://www.cnfr.md/index.php?pag=sec&id=117&l=en
-country MD: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-# Source:
-# http://www.cept.org/files/1050/Tools%20and%20Services/EFIS%20-%20ECO%20Frequency%20Information%20System/National%20frequency%20tables/Montenegro%20NAFT%20-%202010.pdf
-country ME: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country MF: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country MH: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country MK: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country MN: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country MO: DFS-FCC
-	(2402 - 2482 @ 40), (23)
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (30), DFS
-	(5735 - 5835 @ 80), (30)
-
-country MP: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country MQ: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-# Source:
-# http://www.are.mr/pdfs/telec_freq_TNAbf_2010.pdf
-country MR: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country MT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country MU: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://www.cam.gov.mv/docs/tech_standards/TAM-TS-100-2004-WLAN.pdf
-country MV: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5250 @ 80), (200 mW), AUTO-BW
-	(5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW
-	(5725 - 5850 @ 80), (100 mW)
-
-country MW: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country MX: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country MY: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5650 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (24)
-
-country NG: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5250 - 5330 @ 80), (30), DFS
-	(5735 - 5835 @ 80), (30)
-
-country NI: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Regulation on the use of frequency space without a license and
-# without notification 2015
-#
-# http://wetten.overheid.nl/BWBR0036378/2015-03-05
-
-country NL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# short range devices (ETSI EN 300 440-1)
-	(5725 - 5875 @ 80), (25 mW)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Data from http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77
-# Power at 5250 - 5350 MHz, 5470 - 5725 MHz and 5815 – 5850 MHz can
-# be doubled if TPC is implemented.
-# Up to 2W (or 4W with TPC) is allowed in the 5725 – 5795 MHz band
-# which has been merged with 5470 - 5725 MHz to allow wide channels
-country NO: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5250 @ 80), (200 mW), AUTO-BW, wmmrule=ETSI
-	(5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW, wmmrule=ETSI
-	(5470 - 5795 @ 160), (500 mW), DFS, wmmrule=ETSI
-	(5815 - 5850 @ 35), (2000 mW), DFS
-	(17100 - 17300 @ 200), (100 mW)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country NP: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (20)
-
-country NZ: DFS-ETSI
-	(2402 - 2482 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country OM: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-# Source:
-# http://www.asep.gob.pa/images/telecomunicaciones/Anexos/PNAF-dic2015.pdf
-country PA: DFS-FCC
-	(2400 - 2483.5 @ 40), (36)
-	(5150 - 5250 @ 80), (36), AUTO-BW
-	(5250 - 5350 @ 80), (30), AUTO-BW
-	(5470 - 5725 @ 160), (30)
-	(5725 - 5850 @ 80), (36)
-	(57000 - 64000 @ 2160), (43)
-
-country PE: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country PF: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country PG: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country PH: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country PK: DFS-JP
-	(2402 - 2482 @ 40), (20)
-	(5735 - 5835 @ 80), (30)
-
-country PL: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country PM: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country PR: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country PT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country PW: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country PY: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country QA: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW), NO-OUTDOOR
-	(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
-	(5470 - 5725 @ 160), (100 mW), NO-OUTDOOR, DFS
-	(5725 - 5875 @ 80), (100 mW), NO-OUTDOOR, DFS
-	(57000 - 66000 @ 2160), (40), NO-OUTDOOR
-
-country RE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country RO: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-
-# Source:
-# http://www.ratel.rs/upload/documents/Plan_namene/Plan_namene-sl_glasnik.pdf
-country RS: DFS-ETSI
-	(2400 - 2483.5 @ 40), (100 mW)
-	(5150 - 5350 @ 40), (200 mW), NO-OUTDOOR
-	(5470 - 5725 @ 20), (1000 mW), DFS
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country RU: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5650 - 5730 @ 80), (30), DFS
-	(5735 - 5835 @ 80), (30)
-	# 60 GHz band channels 1-4, ref: Changes to NLA 124_Order №129_22042015.pdf
-	(57000 - 66000 @ 2160), (40)
-
-country RW: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country SA: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country SE: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Source
-# https://www.imda.gov.sg/~/media/imda/files/regulation%20licensing%20and%20consultations/ict%20standards/telecommunication%20standards/radio-comms/imdatssrd.pdf?la=en
-# page 12-14
-# The EIRP for 5250 – 5350 can be increased by 3dB if TPC is implemented.
-country SG: DFS-FCC
-	(2400 - 2483.5 @ 40), (23)
-	(5150 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5350 @ 80), (20), DFS, AUTO-BW
-	# 5470 - 5725 is only allowed when TPC is implemented
-	# (5470 - 5725 @ 160), (30), DFS
-	(5725 - 5850 @ 80), (30)
-
-country SI: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country SK: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-# Source:
-# Regulation N° 2004-005 ART/DG/DRC/D.Rég
-country SN: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country SR: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country SV: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 20), (17)
-	(5250 - 5330 @ 20), (23), DFS
-	(5735 - 5835 @ 20), (30)
-
-country SY:
-	(2402 - 2482 @ 40), (20)
-
-# Source:
-# http://www.telecommission.tc/Spectrum-plan20110324-101210.html
-country TC: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5730 @ 160), (24), DFS, wmmrule=ETSI
-	(5735 - 5835 @ 80), (30)
-
-country TD: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-country TG: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 40), (20)
-	(5250 - 5330 @ 40), (20), DFS
-	(5490 - 5710 @ 40), (27), DFS
-
-country TH: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country TN: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-
-# Source:
-# By-Law on Short Range Radio Devices (SRD) Oct 2015
-# https://www.btk.gov.tr/File/?path=ROOT%2f1%2fDocuments%2fOrdinance%2fBY%2DLAW%20ON%20SHORT%20RANGE%20DEVICES.pdf
-# Article 8
-country TR: DFS-ETSI
-	(2400 - 2483.5 @ 40), (20)
-	(5170 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, NO-OUTDOOR, AUTO-BW
-	(5470 - 5725 @ 160), (27), DFS
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country TT: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# Table of Frequency Allocations of Republic of China (Taiwan) / Feb 2017:
-#   https://www.motc.gov.tw/websitedowndoc?file=post/201702221012200.doc& \
-#	filedisplay=Table%2Bof%2Bradio%2Bfrequency%2Ballocation.doc
-# LP0002 Low-power Radio-frequency Devices Technical Regulations / 23 Aug 2016:
-#   http://www.ncc.gov.tw/english/show_file.aspx?table_name=news&file_sn=681
-country TW: DFS-FCC
-	# 2.4g band, LP0002 section 3.10.1
-	(2400 - 2483.5 @ 40), (30)
-	# 5g U-NII band, LP0002 section 4.7
-	# 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
-	(5150 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5350 @ 80), (23), DFS, AUTO-BW
-	(5470 - 5725 @ 160), (23), DFS
-	(5725 - 5850 @ 80), (30)
-	# 60g band, LP0002 section 3.13.1.1 (3)(C), EIRP=40dBm(43dBm peak)
-	(57000 - 66000 @ 2160), (40)
- 
-country TZ:
-	(2402 - 2482 @ 40), (20)
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# #914 / 06 Sep 2007: http://www.ucrf.gov.ua/uk/doc/nkrz/1196068874
-# #1174 / 23 Oct 2008: http://www.nkrz.gov.ua/uk/activities/ruling/1225269361
-# (appendix 8)
-# Listed 5GHz range is a lowest common denominator for all related
-# rules in the referenced laws. Such a range is used because of
-# disputable definitions there.
-country UA: DFS-ETSI
-	(2400 - 2483.5 @ 40), (20), NO-OUTDOOR
-	(5150 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW
-	(5250 - 5350 @ 80), (20), DFS, NO-OUTDOOR, AUTO-BW
-	(5490 - 5670 @ 160), (20), DFS
-	(5735 - 5835 @ 80), (20)
-	# 60 GHz band channels 1-4, ref: Etsi En 302 567
-	(57000 - 66000 @ 2160), (40)
-
-country UG: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country US: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	# 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (23), DFS
-	(5735 - 5835 @ 80), (30)
-	# 60g band
-	# reference: http://cfr.regstoday.com/47cfr15.aspx#47_CFR_15p255
-	# channels 1,2,3, EIRP=40dBm(43dBm peak)
-	(57240 - 63720 @ 2160), (40)
-
-country UY: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://cemc.uz/article/1976/
-country UZ: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-
-# Source:
-# http://www.ntrc.vc/regulations/Jun_2006_Spectrum_Managment_Regulations.pdf
-country VC: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-
-# Source:
-# Official Gazette (Gaceta Oficial) concerning Unlicensed transmitter use
-# (10 June 2013)
-# http://www.conatel.gob.ve/
-country VE: DFS-FCC
-	(2402 - 2482 @ 40), (30)
-	(5170 - 5250 @ 80), (23), AUTO-BW
-	(5250 - 5330 @ 80), (23), DFS, AUTO-BW
-	(5735 - 5835 @ 80), (30)
-
-country VI: DFS-FCC
-	(2402 - 2472 @ 40), (30)
-	(5170 - 5250 @ 80), (24), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country VN: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17)
-	(5250 - 5330 @ 80), (24), DFS
-	(5490 - 5730 @ 80), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-# Source:
-# http://www.trr.vu/attachments/category/130/GURL_for_Short-range_Radiocommunication_Devices2.pdf
-country VU: DFS-FCC
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (17), AUTO-BW
-	(5250 - 5330 @ 80), (24), DFS, AUTO-BW
-	(5490 - 5730 @ 160), (24), DFS
-	(5735 - 5835 @ 80), (30)
-
-country WF: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country WS: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 40), (20)
-	(5250 - 5330 @ 40), (20), DFS
-	(5490 - 5710 @ 40), (27), DFS
-
-country YE:
-	(2402 - 2482 @ 40), (20)
-
-country YT: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
-	(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
-
-country ZA: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (30)
-
-country ZW: DFS-ETSI
-	(2402 - 2482 @ 40), (20)
-	(5170 - 5250 @ 80), (20), AUTO-BW
-	(5250 - 5330 @ 80), (20), DFS, AUTO-BW
-	(5490 - 5710 @ 160), (27), DFS
-

+ 0 - 147
resources/BuildResources/regdb/wireless-regdb-2018.09.07/db2bin.py

@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-
-from io import BytesIO, open
-import struct
-import hashlib
-from dbparse import DBParser
-import sys
-
-MAGIC = 0x52474442
-VERSION = 19
-
-if len(sys.argv) < 3:
-    print('Usage: %s output-file input-file [key-file]' % sys.argv[0])
-    sys.exit(2)
-
-def create_rules(countries):
-    result = {}
-    for c in countries.values():
-        for rule in c.permissions:
-            result[rule] = 1
-    return list(result)
-
-def create_collections(countries):
-    result = {}
-    for c in countries.values():
-        result[c.permissions] = 1
-    return list(result)
-
-
-def be32(output, val):
-    output.write(struct.pack('>I', val))
-
-class PTR(object):
-    def __init__(self, output):
-        self._output = output
-        self._pos = output.tell()
-        be32(output, 0xFFFFFFFF)
-
-    def set(self, val=None):
-        if val is None:
-            val = self._output.tell()
-        self._offset = val
-        pos = self._output.tell()
-        self._output.seek(self._pos)
-        be32(self._output, val)
-        self._output.seek(pos)
-
-    def get(self):
-        return self._offset
-
-p = DBParser()
-countries = p.parse(open(sys.argv[2], 'r', encoding='utf-8'))
-
-countrynames = list(countries)
-countrynames.sort()
-
-power = []
-bands = []
-for alpha2 in countrynames:
-    for perm in countries[alpha2].permissions:
-        if not perm.freqband in bands:
-            bands.append(perm.freqband)
-        if not perm.power in power:
-            power.append(perm.power)
-rules = create_rules(countries)
-rules.sort()
-collections = create_collections(countries)
-collections.sort()
-
-output = BytesIO()
-
-# struct regdb_file_header
-be32(output, MAGIC)
-be32(output, VERSION)
-reg_country_ptr = PTR(output)
-# add number of countries
-be32(output, len(countries))
-siglen = PTR(output)
-
-power_rules = {}
-for pr in power:
-    power_rules[pr] = output.tell()
-    pr = [int(v * 100.0) for v in (pr.max_ant_gain, pr.max_eirp)]
-    # struct regdb_file_power_rule
-    output.write(struct.pack('>II', *pr))
-
-freq_ranges = {}
-for fr in bands:
-    freq_ranges[fr] = output.tell()
-    fr = [int(f * 1000.0) for f in (fr.start, fr.end, fr.maxbw)]
-    # struct regdb_file_freq_range
-    output.write(struct.pack('>III', *fr))
-
-
-reg_rules = {}
-for reg_rule in rules:
-    freq_range, power_rule = reg_rule.freqband, reg_rule.power
-    reg_rules[reg_rule] = output.tell()
-    # struct regdb_file_reg_rule
-    output.write(struct.pack('>III', freq_ranges[freq_range], power_rules[power_rule],
-                             reg_rule.flags))
-
-
-reg_rules_collections = {}
-
-for coll in collections:
-    reg_rules_collections[coll] = output.tell()
-    # struct regdb_file_reg_rules_collection
-    coll = list(coll)
-    be32(output, len(coll))
-    coll.sort()
-    for regrule in coll:
-        be32(output, reg_rules[regrule])
-
-# update country pointer now!
-reg_country_ptr.set()
-
-for alpha2 in countrynames:
-    coll = countries[alpha2]
-    # struct regdb_file_reg_country
-    output.write(struct.pack('>BBxBI', alpha2[0], alpha2[1], coll.dfs_region, reg_rules_collections[coll.permissions]))
-
-
-if len(sys.argv) > 3:
-    # Load RSA only now so people can use this script
-    # without having those libraries installed to verify
-    # their SQL changes
-    from M2Crypto import RSA
-
-    # determine signature length
-    key = RSA.load_key(sys.argv[3])
-    hash = hashlib.sha1()
-    hash.update(output.getvalue())
-    sig = key.sign(hash.digest())
-    # write it to file
-    siglen.set(len(sig))
-    # sign again
-    hash = hashlib.sha1()
-    hash.update(output.getvalue())
-    sig = key.sign(hash.digest())
-
-    output.write(sig)
-else:
-    siglen.set(0)
-
-outfile = open(sys.argv[1], 'wb')
-outfile.write(output.getvalue())

+ 0 - 158
resources/BuildResources/regdb/wireless-regdb-2018.09.07/db2fw.py

@@ -1,158 +0,0 @@
-#!/usr/bin/env python
-
-from io import BytesIO, open
-import struct
-import hashlib
-from dbparse import DBParser
-import sys
-from math import log
-
-MAGIC = 0x52474442
-VERSION = 20
-
-if len(sys.argv) < 3:
-    print('Usage: %s output-file input-file' % sys.argv[0])
-    sys.exit(2)
-
-def create_rules(countries):
-    result = {}
-    for c in countries.values():
-        for rule in c.permissions:
-            result[rule] = 1
-    return list(result)
-
-def create_collections(countries):
-    result = {}
-    for c in countries.values():
-        result[(c.permissions, c.dfs_region)] = 1
-    return list(result)
-
-def create_wmms(countries):
-    result = {}
-    for c in countries.values():
-        for rule in c.permissions:
-            if rule.wmmrule is not None:
-                result[rule.wmmrule] = 1
-    return list(result)
-
-def be32(output, val):
-    output.write(struct.pack('>I', val))
-def be16(output, val):
-    output.write(struct.pack('>H', val))
-
-class PTR(object):
-    def __init__(self, output):
-        self._output = output
-        self._pos = output.tell()
-        be16(output, 0)
-        self._written = False
-
-    def set(self, val=None):
-        if val is None:
-            val = self._output.tell()
-        assert val & 3 == 0
-        self._offset = val
-        pos = self._output.tell()
-        self._output.seek(self._pos)
-        be16(self._output, val >> 2)
-        self._output.seek(pos)
-        self._written = True
-
-    def get(self):
-        return self._offset
-
-    @property
-    def written(self):
-        return self._written
-
-p = DBParser()
-countries = p.parse(open(sys.argv[2], 'r', encoding='utf-8'))
-rules = create_rules(countries)
-rules.sort()
-collections = create_collections(countries)
-collections.sort()
-wmms = create_wmms(countries)
-wmms.sort()
-
-output = BytesIO()
-
-# struct regdb_file_header
-be32(output, MAGIC)
-be32(output, VERSION)
-
-country_ptrs = {}
-countrynames = list(countries)
-countrynames.sort()
-for alpha2 in countrynames:
-    coll = countries[alpha2]
-    output.write(struct.pack('>BB', alpha2[0], alpha2[1]))
-    country_ptrs[alpha2] = PTR(output)
-output.write(b'\x00' * 4)
-
-wmmdb = {}
-for w in wmms:
-    assert output.tell() & 3 == 0
-    wmmdb[w] = output.tell() >> 2
-    for r in w._as_tuple():
-        ecw = int(log(r[0] + 1, 2)) << 4 | int(log(r[1] + 1, 2))
-        ac = (ecw, r[2],r[3])
-        output.write(struct.pack('>BBH', *ac))
-
-reg_rules = {}
-flags = 0
-for reg_rule in rules:
-    freq_range, power_rule, wmm_rule = reg_rule.freqband, reg_rule.power, reg_rule.wmmrule
-    reg_rules[reg_rule] = output.tell()
-    assert power_rule.max_ant_gain == 0
-    flags = 0
-    # convert to new rule flags
-    assert reg_rule.flags & ~0x899 == 0
-    if reg_rule.flags & 1<<0:
-        flags |= 1<<0
-    if reg_rule.flags & 1<<3:
-        flags |= 1<<1
-    if reg_rule.flags & 1<<4:
-        flags |= 1<<2
-    if reg_rule.flags & 1<<7:
-        flags |= 1<<3
-    if reg_rule.flags & 1<<11:
-        flags |= 1<<4
-    rule_len = 16
-    cac_timeout = 0 # TODO
-    if not (flags & 1<<2):
-        cac_timeout = 0
-    if cac_timeout or wmm_rule:
-        rule_len += 2
-    if wmm_rule is not None:
-        rule_len += 2
-    output.write(struct.pack('>BBHIII', rule_len, flags, int(power_rule.max_eirp * 100),
-                             int(freq_range.start * 1000), int(freq_range.end * 1000), int(freq_range.maxbw * 1000),
-                             ))
-    if rule_len > 16:
-        output.write(struct.pack('>H', cac_timeout))
-
-    if rule_len > 18:
-        be16(output, wmmdb[wmm_rule])
-
-    while rule_len % 4:
-        output.write('\0')
-        rule_len += 1
-
-for coll in collections:
-    for alpha2 in countrynames:
-        if (countries[alpha2].permissions, countries[alpha2].dfs_region) == coll:
-            assert not country_ptrs[alpha2].written
-            country_ptrs[alpha2].set()
-    slen = 3
-    output.write(struct.pack('>BBBx', slen, len(list(coll[0])), coll[1]))
-    coll = list(coll[0])
-    for regrule in coll:
-        be16(output, reg_rules[regrule] >> 2)
-    if len(coll) % 2:
-        be16(output, 0)
-
-for alpha2 in countrynames:
-    assert country_ptrs[alpha2].written
-
-outfile = open(sys.argv[1], 'wb')
-outfile.write(output.getvalue())

+ 0 - 516
resources/BuildResources/regdb/wireless-regdb-2018.09.07/dbparse.py

@@ -1,516 +0,0 @@
-#!/usr/bin/env python
-
-from builtins import bytes
-from functools import total_ordering
-import sys, math
-from math import ceil, log
-from collections import defaultdict, OrderedDict
-import attr
-
-# must match <linux/nl80211.h> enum nl80211_reg_rule_flags
-
-flag_definitions = {
-    'NO-OFDM':		1<<0,
-    'NO-CCK':		1<<1,
-    'NO-INDOOR':	1<<2,
-    'NO-OUTDOOR':	1<<3,
-    'DFS':		1<<4,
-    'PTP-ONLY':		1<<5,
-    'PTMP-ONLY':	1<<6,
-    'NO-IR':	        1<<7,
-    # hole at bit 8
-    # hole at bit 9. FIXME: Where is NO-HT40 defined?
-    'NO-HT40':		1<<10,
-    'AUTO-BW':		1<<11,
-}
-
-dfs_regions = {
-    'DFS-FCC':		1,
-    'DFS-ETSI':		2,
-    'DFS-JP':		3,
-}
-
-@total_ordering
-
-@attr.s(frozen=True, cmp=False)
-class WmmRule(object):
-    vo_c = attr.ib()
-    vi_c = attr.ib()
-    be_c = attr.ib()
-    bk_c = attr.ib()
-    vo_ap = attr.ib()
-    vi_ap = attr.ib()
-    be_ap = attr.ib()
-    bk_ap = attr.ib()
-
-    def _as_tuple(self):
-        return (self.vo_c, self.vi_c, self.be_c, self.bk_c,
-                self.vo_ap, self.vi_ap, self.be_ap, self.bk_ap)
-
-    def __eq__(self, other):
-        if other is None:
-            return False
-        return (self._as_tuple() == other._as_tuple())
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    def __lt__(self, other):
-        if other is None:
-            return False
-        return (self._as_tuple() < other._as_tuple())
-
-    def __hash__(self):
-        return hash(self._as_tuple())
-
-class FreqBand(object):
-    def __init__(self, start, end, bw, comments=None):
-        self.start = start
-        self.end = end
-        self.maxbw = bw
-        self.comments = comments or []
-
-    def _as_tuple(self):
-        return (self.start, self.end, self.maxbw)
-
-    def __eq__(self, other):
-        return (self._as_tuple() == other._as_tuple())
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    def __lt__(self, other):
-        return (self._as_tuple() < other._as_tuple())
-
-    def __hash__(self):
-        return hash(self._as_tuple())
-
-    def __str__(self):
-        return '<FreqBand %.3f - %.3f @ %.3f>' % (
-                  self.start, self.end, self.maxbw)
-
-@total_ordering
-class PowerRestriction(object):
-    def __init__(self, max_ant_gain, max_eirp, comments = None):
-        self.max_ant_gain = max_ant_gain
-        self.max_eirp = max_eirp
-        self.comments = comments or []
-
-    def _as_tuple(self):
-        return (self.max_ant_gain, self.max_eirp)
-
-    def __eq__(self, other):
-        return (self._as_tuple() == other._as_tuple())
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    def __lt__(self, other):
-        return (self._as_tuple() < other._as_tuple())
-
-    def __hash__(self):
-        return hash(self._as_tuple())
-
-    def __str__(self):
-        return '<PowerRestriction ...>'
-
-class DFSRegionError(Exception):
-    def __init__(self, dfs_region):
-        self.dfs_region = dfs_region
-
-class FlagError(Exception):
-    def __init__(self, flag):
-        self.flag = flag
-
-@total_ordering
-class Permission(object):
-    def __init__(self, freqband, power, flags, wmmrule):
-        assert isinstance(freqband, FreqBand)
-        assert isinstance(power, PowerRestriction)
-        assert isinstance(wmmrule, WmmRule) or wmmrule is None
-        self.freqband = freqband
-        self.power = power
-        self.wmmrule = wmmrule
-        self.flags = 0
-        for flag in flags:
-            if not flag in flag_definitions:
-                raise FlagError(flag)
-            self.flags |= flag_definitions[flag]
-        self.textflags = flags
-
-    def _as_tuple(self):
-        return (self.freqband, self.power, self.flags, self.wmmrule)
-
-    def __eq__(self, other):
-        return (self._as_tuple() == other._as_tuple())
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    def __lt__(self, other):
-        return (self._as_tuple() < other._as_tuple())
-
-    def __hash__(self):
-        return hash(self._as_tuple())
-
-    def __str__(self):
-        return str(self.freqband) + str(self.power) + str(self.wmmrule)
-
-class Country(object):
-    def __init__(self, dfs_region, permissions=None, comments=None):
-        self._permissions = permissions or []
-        self.comments = comments or []
-        self.dfs_region = 0
-
-        if dfs_region:
-            if not dfs_region in dfs_regions:
-                raise DFSRegionError(dfs_region)
-            self.dfs_region = dfs_regions[dfs_region]
-
-    def add(self, perm):
-        assert isinstance(perm, Permission)
-        self._permissions.append(perm)
-        self._permissions.sort()
-
-    def __contains__(self, perm):
-        assert isinstance(perm, Permission)
-        return perm in self._permissions
-
-    def __str__(self):
-        r = ['(%s, %s)' % (str(b), str(p)) for b, p in self._permissions]
-        return '<Country (%s)>' % (', '.join(r))
-
-    def _get_permissions_tuple(self):
-        return tuple(self._permissions)
-    permissions = property(_get_permissions_tuple)
-
-class SyntaxError(Exception):
-    pass
-
-class DBParser(object):
-    def __init__(self, warn=None):
-        self._warn_callout = warn or sys.stderr.write
-
-    def _syntax_error(self, txt=None):
-        txt = txt and ' (%s)' % txt or ''
-        raise SyntaxError("Syntax error in line %d%s" % (self._lineno, txt))
-
-    def _warn(self, txt):
-        self._warn_callout("Warning (line %d): %s\n" % (self._lineno, txt))
-
-    def _parse_band_def(self, bname, banddef, dupwarn=True):
-        try:
-            freqs, bw = banddef.split('@')
-            bw = float(bw)
-        except ValueError:
-            bw = 20.0
-
-        try:
-            start, end = freqs.split('-')
-            start = float(start)
-            end = float(end)
-            # The kernel will reject these, so might as well reject this
-            # upon building it.
-            if start <= 0:
-                self._syntax_error("Invalid start freq (%d)" % start)
-            if end <= 0:
-                self._syntax_error("Invalid end freq (%d)" % end)
-            if start > end:
-                self._syntax_error("Inverted freq range (%d - %d)" % (start, end))
-            if start == end:
-                self._syntax_error("Start and end freqs are equal (%d)" % start)
-        except ValueError:
-            self._syntax_error("band must have frequency range")
-
-        b = FreqBand(start, end, bw, comments=self._comments)
-        self._comments = []
-        self._banddup[bname] = bname
-        if b in self._bandrev:
-            if dupwarn:
-                self._warn('Duplicate band definition ("%s" and "%s")' % (
-                              bname, self._bandrev[b]))
-            self._banddup[bname] = self._bandrev[b]
-        self._bands[bname] = b
-        self._bandrev[b] = bname
-        self._bandline[bname] = self._lineno
-
-    def _parse_band(self, line):
-        try:
-            bname, line = line.split(':', 1)
-            if not bname:
-                self._syntax_error("'band' keyword must be followed by name")
-        except ValueError:
-            self._syntax_error("band name must be followed by colon")
-
-        if bname in flag_definitions:
-            self._syntax_error("Invalid band name")
-
-        self._parse_band_def(bname, line)
-
-    def _parse_power(self, line):
-        try:
-            pname, line = line.split(':', 1)
-            if not pname:
-                self._syntax_error("'power' keyword must be followed by name")
-        except ValueError:
-            self._syntax_error("power name must be followed by colon")
-
-        if pname in flag_definitions:
-            self._syntax_error("Invalid power name")
-
-        self._parse_power_def(pname, line)
-
-    def _parse_power_def(self, pname, line, dupwarn=True):
-        try:
-            max_eirp = line
-            if max_eirp == 'N/A':
-                max_eirp = '0'
-            max_ant_gain = float(0)
-            def conv_pwr(pwr):
-                if pwr.endswith('mW'):
-                    pwr = float(pwr[:-2])
-                    return 10.0 * math.log10(pwr)
-                else:
-                    return float(pwr)
-            max_eirp = conv_pwr(max_eirp)
-        except ValueError:
-            self._syntax_error("invalid power data")
-
-        p = PowerRestriction(max_ant_gain, max_eirp,
-                             comments=self._comments)
-        self._comments = []
-        self._powerdup[pname] = pname
-        if p in self._powerrev:
-            if dupwarn:
-                self._warn('Duplicate power definition ("%s" and "%s")' % (
-                              pname, self._powerrev[p]))
-            self._powerdup[pname] = self._powerrev[p]
-        self._power[pname] = p
-        self._powerrev[p] = pname
-        self._powerline[pname] = self._lineno
-
-    def _parse_wmmrule(self, line):
-        regions = line[:-1].strip()
-        if not regions:
-            self._syntax_error("'wmmrule' keyword must be followed by region")
-
-        regions = regions.split(',')
-
-        self._current_regions = {}
-        for region in regions:
-            if region in self._wmm_rules:
-                self._warn("region %s was added already to wmm rules" % region)
-            self._current_regions[region] = 1
-        self._comments = []
-
-    def _validate_input(self, cw_min, cw_max, aifsn, cot):
-        if  cw_min < 1:
-            self._syntax_error("Invalid cw_min value (%d)" % cw_min)
-        if cw_max < 1:
-            self._syntax_error("Invalid cw_max value (%d)" % cw_max)
-        if cw_min > cw_max:
-            self._syntax_error("Inverted contention window (%d - %d)" %
-                    (cw_min, cw_max))
-        if not (bin(cw_min + 1).count('1') == 1 and cw_min < 2**15):
-            self._syntax_error("Invalid cw_min value should be power of 2 - 1 (%d)"
-                    % cw_min)
-        if not (bin(cw_max + 1).count('1') == 1 and cw_max < 2**15):
-            self._syntax_error("Invalid cw_max value should be power of 2 - 1 (%d)"
-                    % cw_max)
-        if aifsn < 1:
-            self._syntax_error("Invalid aifsn value (%d)" % aifsn)
-        if cot < 0:
-            self._syntax_error("Invalid cot value (%d)" % cot)
-
-
-    def _validate_size(self, var, bytcnt):
-        return bytcnt < ceil(len(bin(var)[2:]) / 8.0)
-
-    def _parse_wmmrule_item(self, line):
-        bytcnt = (2.0, 2.0, 1.0, 2.0)
-        try:
-            ac, cval = line.split(':')
-            if not ac:
-                self._syntax_error("wmm item must have ac prefix")
-        except ValueError:
-                self._syntax_error("access category must be followed by colon")
-        p = tuple([int(v.split('=', 1)[1]) for v in cval.split(',')])
-        self._validate_input(*p)
-        for v, b in zip(p, bytcnt):
-            if self._validate_size(v, b):
-                self._syntax_error("unexpected input size expect %d got %d"
-                        % (b, v))
-
-            for r in self._current_regions:
-                self._wmm_rules[r][ac] = p
-
-    def _parse_country(self, line):
-        try:
-            cname, cvals= line.split(':', 1)
-            dfs_region = cvals.strip()
-            if not cname:
-                self._syntax_error("'country' keyword must be followed by name")
-        except ValueError:
-            self._syntax_error("country name must be followed by colon")
-
-        cnames = cname.split(',')
-
-        self._current_countries = {}
-        for cname in cnames:
-            if len(cname) != 2:
-                self._warn("country '%s' not alpha2" % cname)
-            cname = bytes(cname, 'ascii')
-            if not cname in self._countries:
-                self._countries[cname] = Country(dfs_region, comments=self._comments)
-            self._current_countries[cname] = self._countries[cname]
-        self._comments = []
-
-    def _parse_country_item(self, line):
-        if line[0] == '(':
-            try:
-                band, line = line[1:].split('),', 1)
-                bname = 'UNNAMED %d' % self._lineno
-                self._parse_band_def(bname, band, dupwarn=False)
-            except:
-                self._syntax_error("Badly parenthesised band definition")
-        else:
-            try:
-                bname, line = line.split(',', 1)
-                if not bname:
-                    self._syntax_error("country definition must have band")
-                if not line:
-                    self._syntax_error("country definition must have power")
-            except ValueError:
-                self._syntax_error("country definition must have band and power")
-
-        if line[0] == '(':
-            items = line.split('),', 1)
-            if len(items) == 1:
-                pname = items[0]
-                line = ''
-                if not pname[-1] == ')':
-                    self._syntax_error("Badly parenthesised power definition")
-                pname = pname[:-1]
-                flags = []
-            else:
-                pname = items[0]
-                flags = items[1].split(',')
-            power = pname[1:]
-            pname = 'UNNAMED %d' % self._lineno
-            self._parse_power_def(pname, power, dupwarn=False)
-        else:
-            line = line.split(',')
-            pname = line[0]
-            flags = line[1:]
-        w = None
-        if flags and 'wmmrule' in flags[-1]:
-            try:
-                region = flags.pop().split('=', 1)[1]
-                if region not in self._wmm_rules.keys():
-                    self._syntax_error("No wmm rule for %s" % region)
-            except IndexError:
-                self._syntax_error("flags is empty list or no region was found")
-            w = WmmRule(*self._wmm_rules[region].values())
-
-        if not bname in self._bands:
-            self._syntax_error("band does not exist")
-        if not pname in self._power:
-            self._syntax_error("power does not exist")
-        self._bands_used[bname] = True
-        self._power_used[pname] = True
-        # de-duplicate so binary database is more compact
-        bname = self._banddup[bname]
-        pname = self._powerdup[pname]
-        b = self._bands[bname]
-        p = self._power[pname]
-        try:
-            perm = Permission(b, p, flags, w)
-        except FlagError as e:
-            self._syntax_error("Invalid flag '%s'" % e.flag)
-        for cname, c in self._current_countries.items():
-            if perm in c:
-                self._warn('Rule "%s, %s" added to "%s" twice' % (
-                              bname, pname, cname))
-            else:
-                c.add(perm)
-
-    def parse(self, f):
-        self._current_countries = None
-        self._current_regions = None
-        self._bands = {}
-        self._power = {}
-        self._countries = {}
-        self._bands_used = {}
-        self._power_used = {}
-        self._bandrev = {}
-        self._powerrev = {}
-        self._banddup = {}
-        self._powerdup = {}
-        self._bandline = {}
-        self._powerline = {}
-        self._wmm_rules = defaultdict(lambda: OrderedDict())
-
-        self._comments = []
-
-        self._lineno = 0
-        for line in f:
-            self._lineno += 1
-            line = line.strip()
-            if line[0:1] == '#':
-                self._comments.append(line[1:].strip())
-            line = line.replace(' ', '').replace('\t', '')
-            if not line:
-                self._current_regions = None
-                self._comments = []
-            line = line.split('#')[0]
-            if not line:
-                continue
-            if line[0:4] == 'band':
-                self._parse_band(line[4:])
-                self._current_countries = None
-                self._current_regions = None
-                self._comments = []
-            elif line[0:5] == 'power':
-                self._parse_power(line[5:])
-                self._current_countries = None
-                self._current_regions = None
-                self._comments = []
-            elif line[0:7] == 'country':
-                self._parse_country(line[7:])
-                self._comments = []
-                self._current_regions = None
-            elif self._current_countries is not None:
-                self._current_regions = None
-                self._parse_country_item(line)
-                self._comments = []
-            elif line[0:7] == 'wmmrule':
-                self._parse_wmmrule(line[7:])
-                self._current_countries = None
-                self._comments = []
-            elif self._current_regions is not None:
-                self._parse_wmmrule_item(line)
-                self._current_countries = None
-                self._comments = []
-            else:
-                self._syntax_error("Expected band, power or country definition")
-
-        countries = self._countries
-        bands = {}
-        for k, v in self._bands.items():
-            if k in self._bands_used:
-                bands[self._banddup[k]] = v
-                continue
-            # we de-duplicated, but don't warn again about the dupes
-            if self._banddup[k] == k:
-                self._lineno = self._bandline[k]
-                self._warn('Unused band definition "%s"' % k)
-        power = {}
-        for k, v in self._power.items():
-            if k in self._power_used:
-                power[self._powerdup[k]] = v
-                continue
-            # we de-duplicated, but don't warn again about the dupes
-            if self._powerdup[k] == k:
-                self._lineno = self._powerline[k]
-                self._warn('Unused power definition "%s"' % k)
-        return countries

+ 0 - 5
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/changelog

@@ -1,5 +0,0 @@
-wireless-regdb (2009.01.15-1) unstable; urgency=low
-
-  * Initial release
-
- -- Luis R. Rodriguez <mcgrof@gmail.com>  Thu, 22 Jan 2009 16:00:00 +0100

+ 0 - 1
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/compat

@@ -1 +0,0 @@
-5

+ 0 - 15
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/control

@@ -1,15 +0,0 @@
-Source: wireless-regdb
-Section: admin
-Priority: optional
-Maintainer: Luis R. Rodriguez <mcgrof@gmail.com>
-Build-Depends: cdbs, debhelper (>= 5), python
-Standards-Version: 3.7.3
-
-Package: wireless-regdb
-Architecture: all
-Depends:
-Suggests: crda
-Description: The Linux wireless regulatory database
- This package contains the wireless regulatory database used by all
- cfg80211 based Linux wireless drivers. The wireless database being
- used is maintained by Seth Forshee.

+ 0 - 21
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/copyright

@@ -1,21 +0,0 @@
-This package was debianized by Luis Rodriguez <mcgrof@gmail.com> on
-Thu, 22 Jan 2009 16:00:00 +0100.
-
-The wireless-regdb packages was downloaded from <http://wireless.kernel.org/download/wireless-regdb/>
-
-Copyright (c) 2008, Luis R. Rodriguez <mcgrof@gmail.com>
-Copyright (c) 2008, Johannes Berg <johannes@sipsolutions.net>
-Copyright (c) 2008, Michael Green <Michael.Green@Atheros.com>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-

+ 0 - 1
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/docs

@@ -1 +0,0 @@
-README

+ 0 - 10
resources/BuildResources/regdb/wireless-regdb-2018.09.07/debian-example/rules

@@ -1,10 +0,0 @@
-#!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-
-PREFIX = /usr
-CRDA_LIB ?= $(PREFIX)/lib/crda
-
-install/wireless-regdb::
-	install -o 0 -g 0 -m 755 -d debian/$(cdbs_curpkg)/$(CRDA_LIB)
-	install -o 0 -g 0 -m 644 regulatory.bin debian/$(cdbs_curpkg)/$(CRDA_LIB)/regulatory.bin

+ 0 - 18
resources/BuildResources/regdb/wireless-regdb-2018.09.07/gen-pubcert.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-if [[ $# -ne 2 ]]; then
-	echo "Usage: $0 priv-key out-file"
-	exit 1
-fi
-
-openssl req -new -key "$1" -days 36500 -utf8 -nodes -batch \
-	-x509 -outform PEM -out "$2" \
-	-config <(cat <<-EOF
-		[ req ]
-		distinguished_name = req_distinguished_name
-		string_mask = utf8only
-		prompt = no
-		[ req_distinguished_name ]
-		commonName = sforshee
-		EOF
-	)

BIN
resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.bin


+ 0 - 49
resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.bin.5

@@ -1,49 +0,0 @@
-.TH regulatory.bin 5 "21 December 2017" "regulatory.bin" "Linux"
-.SH NAME
-regulatory.bin, regulatory.db \- The Linux wireless regulatory database
-
-.ad l
-.in +8
-.ti -8
-
-.SS
-.SH Description
-.B regulatory.bin
-and
-.B regulatory.db
-are the files used by the Linux wireless subsystem to keep its regulatory
-database information.
-.PP
-.B regulatory.bin
-is read by
-.B crda
-upon the Linux kernel's request for regulatory information for a specific
-ISO / IEC 3166 alpha2 country code.
-.PP
-.B regulatory.db
-is a newer, extensible database format which (since Linux 4.15) is read
-by the kernel directly as a firmware file.
-
-The regulatory database is kept in a small binary format for size and code
-efficiency. The
-.B regulatory.bin
-file can be parsed and read in human format by using the
-.B regdbdump
-command. The regulatory database files should be updated upon regulatory
-changes or corrections.
-
-.SH Upkeeping
-The regulatory database is maintained by the community as such
-you are encouraged to send any corrections or updates to the
-linux-wireless and wireless-regdb mailing lists:
-.B linux-wireless@vger.kernel.org
-and
-.B wireless-regdb@lists.infradead.org
-
-.SH SEE ALSO
-.BR regdbdump (8)
-.BR crda (8)
-.BR iw (8)
-
-.BR http://wireless.kernel.org/en/developers/Regulatory/
-

BIN
resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db


+ 0 - 1
resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db.5

@@ -1 +0,0 @@
-.so man5/regulatory.bin.5.gz

BIN
resources/BuildResources/regdb/wireless-regdb-2018.09.07/regulatory.db.p7s


+ 0 - 9
resources/BuildResources/regdb/wireless-regdb-2018.09.07/sforshee.key.pub.pem

@@ -1,9 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtUDjnCiEOQPyOddmLEE4
-Fax+pYNxJX6QfGjdbz/Z11k4n3xqUsIDKi1+ZvQesxJwIFvUlzI9cYs7GwgXFGth
-xFeLlhYc/STVCwn5aBGE+8pRDNFFGdoQRIrZ/nap/WAtGAsolbIt6oiYuNFWIfBT
-H/ECb+lGm5NfKJAPrDb6aCNxV1b2zNPffSrZG3NF67onhe96f6XLgMcwNtJT7uys
-Hucx8TainGPGZVt/JXVooerTfgBcml7YIBgydwcpEmYeNnPnlwRBN7Gxciv0oSkg
-fJZ5CyvQ2N7IbD+T+8XueFIRFRt69uJomef7RhaE48eh5uDSRtXhxF+gZvTaxP+V
-HQIDAQAB
------END PUBLIC KEY-----

+ 0 - 17
resources/BuildResources/regdb/wireless-regdb-2018.09.07/sforshee.x509.pem

@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICpDCCAYwCCQCyjd9HrvnOpzANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhz
-Zm9yc2hlZTAgFw0xNzEwMDYxOTQwMzVaGA8yMTE3MDkxMjE5NDAzNVowEzERMA8G
-A1UEAwwIc2ZvcnNoZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
-QOOcKIQ5A/I512YsQTgVrH6lg3ElfpB8aN1vP9nXWTiffGpSwgMqLX5m9B6zEnAg
-W9SXMj1xizsbCBcUa2HEV4uWFhz9JNULCfloEYT7ylEM0UUZ2hBEitn+dqn9YC0Y
-CyiVsi3qiJi40VYh8FMf8QJv6Uabk18okA+sNvpoI3FXVvbM0999Ktkbc0XruieF
-73p/pcuAxzA20lPu7Kwe5zHxNqKcY8ZlW38ldWih6tN+AFyaXtggGDJ3BykSZh42
-c+eXBEE3sbFyK/ShKSB8lnkLK9DY3shsP5P7xe54UhEVG3r24miZ5/tGFoTjx6Hm
-4NJG1eHEX6Bm9NrE/5UdAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIcD2vKCwt2v
-fEQvhtNfTJNIuf4HF7sh9yUjTqoiDBa5c66dRnx12cNJV0e/M7eX7PVAdcBGIvCg
-XZx5E6H/uKMve44GP8i25Goo8jRcIz8ywOatD6zPVXRHc9MBhbcLIlYkfZ8JqQ6G
-njdbnG0C2YzIUGriWfMWBuqyQrVY/rrRgVca77I4iFj2qsQui1on5KXopMpnXKxy
-Z8NvE8MtNXnXiuf11CEwStX2o9l5VvIPEPd90FGTL0f4fUsKhFUSCn1OOx8rL/wo
-s2k04YCAu+KvudYw8R1UhyOZn1EDTEV9AmVzq/3PlMwNOmD9PBQvFjOpIR/LULGP
-A+6gZqkWeRQ=
------END CERTIFICATE-----

+ 0 - 1
resources/BuildResources/regdb/wireless-regdb-2018.09.07/sha1sum.txt

@@ -1 +0,0 @@
-027c038d4bb051c1e0b17ec007ab9a283a21a06b  db.txt

+ 0 - 166
resources/BuildResources/regdb/wireless-regdb-2018.09.07/web/Regulatory.py

@@ -1,166 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-"""
-    Regulatory Database
-
-    @copyright: 2008 Johannes Berg
-    @license: ISC, see LICENSE for details.
-"""
-
-import codecs, math
-from dbparse import DBParser, flag_definitions
-
-Dependencies = ["time"]
-
-def _country(macro, countries, code):
-    result = []
-
-    f = macro.formatter
-
-    result.extend([
-        f.heading(1, 1),
-        f.text('Regulatory definition for %s' % _get_iso_code(code)),
-        f.heading(0, 1),
-    ])
-
-    try:
-        country = countries[code]
-    except:
-        result.append(f.text('No information available'))
-        return ''.join(result)
-    
-
-    if country.comments:
-        result.extend([
-            f.preformatted(1),
-            f.text('\n'.join(country.comments)),
-            f.preformatted(0),
-        ])
-
-    result.append(f.table(1))
-    result.extend([
-        f.table_row(1),
-          f.table_cell(1), f.strong(1),
-            f.text('Band [MHz]'),
-          f.strong(0), f.table_cell(0),
-          f.table_cell(1), f.strong(1),
-            f.text('Max BW [MHz]'),
-          f.strong(0), f.table_cell(0),
-          f.table_cell(1), f.strong(1),
-            f.text('Flags'),
-          f.strong(0), f.table_cell(0),
-          f.table_cell(1), f.strong(1),
-            f.text('Max antenna gain [dBi]'),
-          f.strong(0), f.table_cell(0),
-          f.table_cell(1), f.strong(1),
-            f.text('Max EIRP [dBm'),
-            f.hardspace,
-            f.text('(mW)]'),
-          f.strong(0), f.table_cell(0),
-        f.table_row(0),
-    ])
-
-    for perm in country.permissions:
-        def str_or_na(val, dBm=False):
-            if val and not dBm:
-                return '%.2f' % val
-            elif val:
-                return '%.2f (%.2f)' % (val, math.pow(10, val/10.0))
-            return 'N/A'
-        result.extend([
-            f.table_row(1),
-              f.table_cell(1),
-                f.text('%.3f - %.3f' % (perm.freqband.start, perm.freqband.end)),
-              f.table_cell(0),
-              f.table_cell(1),
-                f.text('%.3f' % (perm.freqband.maxbw,)),
-              f.table_cell(0),
-              f.table_cell(1),
-                f.text(', '.join(perm.textflags)),
-              f.table_cell(0),
-              f.table_cell(1),
-                f.text(str_or_na(perm.power.max_ant_gain)),
-              f.table_cell(0),
-              f.table_cell(1),
-                f.text(str_or_na(perm.power.max_eirp, dBm=True)),
-              f.table_cell(0),
-            f.table_row(0),
-        ])
-    
-    result.append(f.table(0))
-
-    result.append(f.linebreak(0))
-    result.append(f.linebreak(0))
-    result.append(macro.request.page.link_to(macro.request, 'return to country list'))
-    return ''.join(result)
-
-_iso_list = {}
-
-def _get_iso_code(code):
-    if not _iso_list:
-        for line in codecs.open('/usr/share/iso-codes/iso_3166.tab', encoding='utf-8'):
-            line = line.strip()
-            c, name = line.split('\t')
-            _iso_list[c] = name
-    return _iso_list.get(code, 'Unknown (%s)' % code)
-
-def macro_Regulatory(macro):
-    _ = macro.request.getText
-    request = macro.request
-    f = macro.formatter
-
-    country = request.form.get('alpha2', [None])[0]
-
-    dbpath = '/tmp/db.txt'
-    if hasattr(request.cfg, 'regdb_path'):
-        dbpath = request.cfg.regdb_path
-
-    result = []
-
-    if request.form.get('raw', [None])[0]:
-        result.append(f.code_area(1, 'db-raw', show=1, start=1, step=1))
-        for line in open(dbpath):
-            result.extend([
-                f.code_line(1),
-                f.text(line.rstrip()),
-                f.code_line(0),
-            ])
-        result.append(f.code_area(0, 'db-raw'))
-        result.append(macro.request.page.link_to(macro.request, 'return to country list'))
-        return ''.join(result)
-
-    warnings = []
-    countries = DBParser(warn=lambda x: warnings.append(x)).parse(open(dbpath))
-
-    if country:
-        return _country(macro, countries, country)
-
-    countries = countries.keys()
-    countries = [(_get_iso_code(code), code) for code in countries]
-    countries.sort()
-
-    result.extend([
-        f.heading(1, 1),
-        f.text('Countries'),
-        f.heading(0, 1),
-    ])
-
-    result.append(f.bullet_list(1))
-    for name, code in countries:
-        result.extend([
-          f.listitem(1),
-          request.page.link_to(request, name, querystr={'alpha2': code}),
-          f.listitem(0),
-        ])
-    result.append(f.bullet_list(0))
-
-    if warnings:
-        result.append(f.heading(1, 2))
-        result.append(f.text("Warnings"))
-        result.append(f.heading(0, 2))
-        result.append(f.preformatted(1))
-        result.extend(warnings)
-        result.append(f.preformatted(0))
-
-    result.append(request.page.link_to(request, 'view raw database', querystr={'raw': 1}))
-
-    return ''.join(result)

+ 0 - 35
resources/BuildResources/regdb/wireless-regdb-2018.09.07/wireless-regdb.spec

@@ -1,35 +0,0 @@
-Summary: Linux wireless regulatory database
-Name: wireless-regdb
-Version: 2009.01.15
-Release: 1
-License: ISC
-Group: System Enviroment/Base
-Source: http://wireless.kernel.org/download/wireless-regdb/wireless-regdb-2009-01-15.tar.bz2
-URL: http://wireless.kernel.org/en/developers/Regulatory/
-Packager: Luis R. Rodriguez <mcgrof@gmail.com>
-BuildRoot : /var/tmp/%{name}-buildroot
-Requires: python
-BuildArch: noarch
-
-%define crda_lib /usr/lib/crda
-
-%description
-This package contains the wireless regulatory database used by all
-cfg80211 based Linux wireless drivers. The wireless database being
-used is maintained by Seth Forshee.
-http://wireless.kernel.org/en/developers/Regulatory/
-
-%prep
-%setup -n %name-2009-01-15
-%build
-%install
-install -m 755 -d %buildroot/%crda_lib
-install -m 644 regulatory.bin %buildroot/%{crda_lib}/regulatory.bin
-%files
-%crda_lib/regulatory.bin
-%doc README LICENSE
-
-%changelog
-* Fri Jan 23 2009 - mcgrof@gmail.com
-- Started wireless-regdb package
-

+ 5 - 1
resources/BuildResources/sources.list

@@ -9,4 +9,8 @@ deb-src http://security.debian.org/debian-security/ stretch/updates main
 
 #Add buster to grab a functional firefox release
 # /etc/apt/preferences prevents this from updating the whole system
-deb http://deb.debian.org/debian/ testing main
+deb http://deb.debian.org/debian/ testing main
+
+#Add sid to grab a functional chromium release
+# /etc/apt/preferences prevents this from updating the whole system
+deb http://deb.debian.org/debian/ unstable main

+ 2 - 0
resources/InstallResources/xfce-config/plank/plank-launchers/chromium.dockitem

@@ -0,0 +1,2 @@
+[PlankDockItemPreferences]
+Launcher=file:///usr/share/applications/chromium.desktop

+ 10 - 4
scripts/InstallScripts/InstallPackages.sh

@@ -27,15 +27,17 @@ while true; do
     esac
 done
 
-locale-gen
 #Install shared packages
 apt install -y xorg acpi-support lightdm tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils mousepad vlc dconf-cli dconf-editor sudo dtrx emacs25
 apt install -y network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome
 
-#install firefox from buster
+# #install chromium from sid
+# apt -t unstable install -y chromium
+
+# #install firefox from buster
 apt -t testing install -y firefox-esr
 
-[ "$DE" = "xfce" ] && apt install -y xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies numix-gtk-theme plank accountsservice firefox-esr
+[ "$DE" = "xfce" ] && apt install -y xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies numix-gtk-theme plank accountsservice
 [ "$DE" = "lxqt" ] && apt install -y lxqt pavucontrol-qt
 
 if [ "$DE" = "xfce" ]
@@ -111,7 +113,11 @@ dmesg -D
 
 #Have the user set a root password
 echo " Enter a password for the root user"
-passwd
+until passwd
+do
+    echo " Enter a password for the root user"
+    passwd
+done
 
 #Force a safe username
 while true; do

+ 13 - 12
scripts/buildDebianFs.sh

@@ -58,7 +58,7 @@ trap cleanup INT TERM EXIT
 
 
 create_image() {
-  # it's a sparse file - that's how we fit a 16GB image inside a 2GB one
+  # it's a sparse file - that's how we fit a 16GB image inside a 3GB one
   dd if=/dev/zero of=$1 bs=$3 count=$4 conv=sparse
   parted --script $1 mklabel gpt
   cgpt create $1
@@ -75,7 +75,7 @@ create_image() {
   mount -o noatime ${2}p2 $5
 }
 
-# create a 2GB image with the Chrome OS partition layout
+# create a 3GB image with the Chrome OS partition layout
 create_image PrawnOS-Alpha-c201-libre-2GB.img $outdev 50M 40 $outmnt
 
 # install Debian on it
@@ -99,7 +99,7 @@ cp $build_resources/sources.list $outmnt/etc/apt/sources.list
 cp $build_resources/apt-preferences $outmnt/etc/apt/preferences
 
 #Setup the locale
-chroot $outmnt echo en_US.UTF-8 UTF-8 > /etc/locale.gen
+cp $build_resources/locale.gen $outmnt/etc/locale.gen
 chroot $outmnt locale-gen
 
 #Install the base packages
@@ -110,16 +110,20 @@ chroot $outmnt apt install -y initscripts udev kmod net-tools inetutils-ping tra
 chroot $outmnt apt-get autoremove --purge
 chroot $outmnt apt-get clean
 
-#Download the packages to be installed by Install.sh:
-chroot $outmnt apt-get install -y -d xorg acpi-support lightdm tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils lxqt crda xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies mousepad vlc libutempter0 xterm numix-gtk-theme dconf-cli dconf-editor plank network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome dtrx emacs25 accountsservice firefox-esr sudo pavucontrol-qt
-
-#Grab firefox from buster, since stretch is broken
-chroot $outmnt apt -t testing install -y -d firefox-esr
-
 #Download support for libinput-gestures
 chroot $outmnt apt install -y libinput-tools xdotool build-essential
 #Package is copied into /InstallResources/packages
 
+#Download the packages to be installed by Install.sh:
+chroot $outmnt apt-get install -y -d xorg acpi-support lightdm tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils lxqt crda xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies mousepad vlc libutempter0 xterm numix-gtk-theme dconf-cli dconf-editor plank network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome dtrx emacs25 accountsservice sudo pavucontrol-qt
+
+# #grab chromium from sid, since stretch and buster are broken
+# chroot $outmnt apt-get -t unstable install -d -y chromium
+
+# #grab firefox from buster, since stretch is broken
+chroot $outmnt apt-get -t testing install -d -y firefox-esr
+
+
 #Cleanup hosts
 rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests
 echo -n "127.0.0.1        PrawnOS-Alpha" > $outmnt/etc/hosts
@@ -132,9 +136,6 @@ rm -f $outmnt/lib/modules/3.14.0/{build,source}
 install -D -m 644 build/open-ath9k-htc-firmware/target_firmware/htc_9271.fw $outmnt/lib/firmware/ath9k_htc/htc_9271-1.4.0.fw
 install -D -m 644 build/open-ath9k-htc-firmware/target_firmware/htc_7010.fw $outmnt/lib/firmware/ath9k_htc/htc_7010-1.4.0.fw
 
-#Install the regulatory.db files
-install -m 644 $build_resources/regdb/wireless-regdb-2018.09.07/regulatory.db* $outmnt/lib/firmware/
-
 umount -l $outmnt > /dev/null 2>&1
 rmdir $outmnt > /dev/null 2>&1
 losetup -d $outdev > /dev/null 2>&1