nullforge 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nullforge/__init__.py +1 -0
- nullforge/foundry/README.md +0 -0
- nullforge/foundry/__init__.py +7 -0
- nullforge/foundry/full_cast.py +22 -0
- nullforge/inventories/README.md +0 -0
- nullforge/inventories/example.py +87 -0
- nullforge/models/__init__.py +1 -0
- nullforge/models/containers.py +60 -0
- nullforge/models/dns.py +222 -0
- nullforge/models/monitoring/__init__.py +29 -0
- nullforge/models/monitoring/base.py +19 -0
- nullforge/models/monitoring/nezha.py +13 -0
- nullforge/models/netsec.py +43 -0
- nullforge/models/profiles.py +33 -0
- nullforge/models/system.py +15 -0
- nullforge/models/users.py +9 -0
- nullforge/models/warp.py +65 -0
- nullforge/models/zerotrust.py +9 -0
- nullforge/molds/__init__.py +38 -0
- nullforge/molds/base_mold.py +59 -0
- nullforge/molds/containers.py +26 -0
- nullforge/molds/defaults.py +10 -0
- nullforge/molds/dns.py +70 -0
- nullforge/molds/features.py +75 -0
- nullforge/molds/haproxy.py +23 -0
- nullforge/molds/monitoring/__init__.py +45 -0
- nullforge/molds/monitoring/nezha.py +118 -0
- nullforge/molds/netsec.py +237 -0
- nullforge/molds/profiles.py +30 -0
- nullforge/molds/system.py +140 -0
- nullforge/molds/telemt.py +140 -0
- nullforge/molds/tor.py +28 -0
- nullforge/molds/user.py +77 -0
- nullforge/molds/utils.py +115 -0
- nullforge/molds/warp.py +54 -0
- nullforge/molds/xray.py +16 -0
- nullforge/molds/zerotrust.py +59 -0
- nullforge/runes/__init__.py +46 -0
- nullforge/runes/base.py +327 -0
- nullforge/runes/containers.py +212 -0
- nullforge/runes/dns.py +256 -0
- nullforge/runes/haproxy.py +135 -0
- nullforge/runes/monitoring.py +21 -0
- nullforge/runes/netsec.py +547 -0
- nullforge/runes/prepare.py +30 -0
- nullforge/runes/profiles.py +583 -0
- nullforge/runes/telemt.py +252 -0
- nullforge/runes/tor.py +57 -0
- nullforge/runes/users.py +159 -0
- nullforge/runes/warp.py +273 -0
- nullforge/runes/xray.py +81 -0
- nullforge/runes/zerotrust.py +91 -0
- nullforge/smithy/__init__.py +1 -0
- nullforge/smithy/admin.py +40 -0
- nullforge/smithy/arch.py +36 -0
- nullforge/smithy/blocky.py +37 -0
- nullforge/smithy/cloudflare.py +32 -0
- nullforge/smithy/github.py +256 -0
- nullforge/smithy/http.py +85 -0
- nullforge/smithy/install.py +149 -0
- nullforge/smithy/monitoring/__init__.py +1 -0
- nullforge/smithy/monitoring/nezha/__init__.py +0 -0
- nullforge/smithy/monitoring/nezha/agent.py +54 -0
- nullforge/smithy/monitoring/nezha/dashboard.py +137 -0
- nullforge/smithy/monitoring/nezha/deploy.py +81 -0
- nullforge/smithy/network.py +95 -0
- nullforge/smithy/packages.py +176 -0
- nullforge/smithy/service.py +37 -0
- nullforge/smithy/sni.py +358 -0
- nullforge/smithy/swap.py +132 -0
- nullforge/smithy/system.py +86 -0
- nullforge/smithy/versions.py +282 -0
- nullforge/templates/__init__.py +32 -0
- nullforge/templates/cloudflared/tunnel.yml.j2 +6 -0
- nullforge/templates/dns/blocky.yaml.j2 +11 -0
- nullforge/templates/dns/dns.yaml.j2 +6 -0
- nullforge/templates/dns/resolv.conf.j2 +1 -0
- nullforge/templates/dns/resolved.conf.j2 +13 -0
- nullforge/templates/etc/default/zramswap.j2 +13 -0
- nullforge/templates/nvim/nvim_patch.lua.j2 +5 -0
- nullforge/templates/profiles/direnv.toml +2 -0
- nullforge/templates/profiles/starship.toml +186 -0
- nullforge/templates/profiles/tmux.conf +32 -0
- nullforge/templates/profiles/zshrc.j2 +46 -0
- nullforge/templates/scripts/telemt-synfix.sh +89 -0
- nullforge/templates/scripts/teleproxy-warp.sh +127 -0
- nullforge/templates/scripts/warp-v6-policy.sh +118 -0
- nullforge/templates/scripts/zt-tunnel-warp.sh +28 -0
- nullforge/templates/systemd/blocky.service.j2 +19 -0
- nullforge/templates/systemd/cloudflare-tunnel.service.j2 +27 -0
- nullforge/templates/systemd/cloudflare-warp.service.j2 +21 -0
- nullforge/templates/systemd/dns-internal.service.j2 +15 -0
- nullforge/templates/systemd/telemt.service.j2 +36 -0
- nullforge/templates/telemt/telemt.toml.j2 +49 -0
- nullforge/templates/tor/torrc.j2 +5 -0
- nullforge-0.1.0.dist-info/METADATA +39 -0
- nullforge-0.1.0.dist-info/RECORD +99 -0
- nullforge-0.1.0.dist-info/WHEEL +4 -0
- nullforge-0.1.0.dist-info/licenses/LICENSE +7 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
nullforge/__init__.py,sha256=IOEzhCbX916JIkvZr03GFY4bl9YqSkfjdqLO4qJ2FOs,50
|
|
2
|
+
nullforge/foundry/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
nullforge/foundry/__init__.py,sha256=d1ASOmFXjrBw-XfGsNaogXk55kPTOR4Qa5frVQt-9LI,149
|
|
4
|
+
nullforge/foundry/full_cast.py,sha256=Deq_tg9pXuyH0upLvKwOO578Y6Brs5ePMA8gweSm9sw,628
|
|
5
|
+
nullforge/inventories/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
nullforge/inventories/example.py,sha256=WxDKocfRrT9B7w3Lp3UyUOuqnxTw6rKgE24smdhx3zg,2336
|
|
7
|
+
nullforge/models/__init__.py,sha256=Oo1oU7UMyWqxw5fL0DmwXe0dhFSklwSIgrsW5Mxfz4k,62
|
|
8
|
+
nullforge/models/containers.py,sha256=lkaZXly_UMCiMjnPt6pkJxaYGpo8PcqwfchaBc-3mdg,1901
|
|
9
|
+
nullforge/models/dns.py,sha256=F6OUnjKD5xmAhG5RhMhYnoVT4C18sRWfSeMYqZ5StXQ,7287
|
|
10
|
+
nullforge/models/netsec.py,sha256=fNdPblawX45r0L9nrIFNrpKTNgQc4paJ9WBpA1iUcU4,1405
|
|
11
|
+
nullforge/models/profiles.py,sha256=N_J4mc6DD2CG-q92a9TJX6a5_1YBETmFVvm-8akeiJE,943
|
|
12
|
+
nullforge/models/system.py,sha256=XuGyNkpsIjYtfVWVlHlAg58gGlRGqwRYXjX5N5_SzxQ,233
|
|
13
|
+
nullforge/models/users.py,sha256=nnn2KYV9_LNomA5Y3lUJPaa0AzlZOWQRstttFuX1Y-4,157
|
|
14
|
+
nullforge/models/warp.py,sha256=0CoVBhtqq-6T9dFM7X-Nv86gQC1XCJtRP4umRHO1oHg,2160
|
|
15
|
+
nullforge/models/zerotrust.py,sha256=hgrLjjZxNA6dHkIo8bKQS3ViB3REFgq6bVXLMIgKSdo,170
|
|
16
|
+
nullforge/models/monitoring/__init__.py,sha256=FEd-bWVyhpnw5RUFMBY6kJWkMYpjjiTefs0aWnFDhYA,758
|
|
17
|
+
nullforge/models/monitoring/base.py,sha256=UwcmtfLjz3BMbUDogYqT5QqPgRtXbCJ8VdSU84MWUfM,711
|
|
18
|
+
nullforge/models/monitoring/nezha.py,sha256=oN8CMR3jHPvXtiBurHQoBtE3ZcO_6iH42Jr5K63HRqo,558
|
|
19
|
+
nullforge/molds/__init__.py,sha256=VaAoZPfPw9ylbcvxYicK7lMyp-7ZIyKahPiw4IPplBk,882
|
|
20
|
+
nullforge/molds/base_mold.py,sha256=6ORrJPsG2Q4lWc7rqiLSUS-xsguAGDoS5RaKxpMiHDk,2176
|
|
21
|
+
nullforge/molds/containers.py,sha256=ZUAQvWLMM5o2T-U1e8rK4UtOqmUJXqyBd9XiZ19pugc,647
|
|
22
|
+
nullforge/molds/defaults.py,sha256=pXK6Xe9UE8MhrCTCkjd1a0hVOFq3mpjN3hwyD9A7TfA,223
|
|
23
|
+
nullforge/molds/dns.py,sha256=09uqZWfU8ZVin2KD08m8oaG01t87vXXEaVgotL8nSP8,2192
|
|
24
|
+
nullforge/molds/features.py,sha256=bUAoNSSjOfOBEeADHlxbt0drSCkn_OHL_INGHHU5Zow,2730
|
|
25
|
+
nullforge/molds/haproxy.py,sha256=_ITj73uwTcce7GAeAyG6S3vmSBiyjdTL1qQA-vaR96w,602
|
|
26
|
+
nullforge/molds/netsec.py,sha256=i4oE6TyrkM0jTI4VWO7gm8ib-aMUQn2BJT4MJw6FNVk,8009
|
|
27
|
+
nullforge/molds/profiles.py,sha256=sEtN5Qxe9I0N1_2I-3fFyyM99fej6vn8_Ek_J6S34dw,831
|
|
28
|
+
nullforge/molds/system.py,sha256=kpbPdU9ZcNg4_GeJpiGbkbc9_YamCgOnX8sM8fw-88k,3813
|
|
29
|
+
nullforge/molds/telemt.py,sha256=KPmf1wwI9iC0gGtTYUMI9sEB6h6WMYAGbk_skfqJ4QY,4933
|
|
30
|
+
nullforge/molds/tor.py,sha256=DWhNvw7rZhu9pBNspQV5sGYKUaoR6YtxwMvoSv37aaA,602
|
|
31
|
+
nullforge/molds/user.py,sha256=0EkUL84YV90lolEYEqb7DfXAfWQaf71cYyh0mlvgEU4,2217
|
|
32
|
+
nullforge/molds/utils.py,sha256=unXxi6J0RuWVDRd7nq6l62lhLQ8HatHanMMdYHw7R4A,3844
|
|
33
|
+
nullforge/molds/warp.py,sha256=wZfZjZ0iZWWbI6VPQv4YkdOhtz_8ox47AxYruywKM8M,1431
|
|
34
|
+
nullforge/molds/xray.py,sha256=sF458wEIAO5GxBvo35RoBxU2ILZDg7c6iXcb-KkcTjY,313
|
|
35
|
+
nullforge/molds/zerotrust.py,sha256=wkZTDnLnT4bOfmrRPGMKVSNAexMYYSox3SfIW712z8g,1953
|
|
36
|
+
nullforge/molds/monitoring/__init__.py,sha256=M4ZRyu9T5wvJyX41CWwm5SSfSFG-Yu3Oxry967y7wyg,1050
|
|
37
|
+
nullforge/molds/monitoring/nezha.py,sha256=UWU12sxbN4lQ9ZJhXiYAMzvudvx1Jicj7wOOyjkp8-Y,4204
|
|
38
|
+
nullforge/runes/__init__.py,sha256=ePj7c8bIyI99HhEYYTHMPeYKmbxBhMOJMu0KCUkGKtk,1231
|
|
39
|
+
nullforge/runes/base.py,sha256=NSfXfz6iYwBdNMRh9VMsQnPuckXO3i-fuDsFGa7nMs0,8524
|
|
40
|
+
nullforge/runes/containers.py,sha256=0RRsKWDd8vAm5WoVwKbQYwvV1OxxoBlngLt8rce4iWI,5589
|
|
41
|
+
nullforge/runes/dns.py,sha256=gw0iRhrYwAuTYtLEst966Jw1ohc0Q6_DFMlRWi5V49A,7702
|
|
42
|
+
nullforge/runes/haproxy.py,sha256=dfafZ1j9btAM-mPks0_qshXFVeX4opziYu7Sd8wMpLk,4002
|
|
43
|
+
nullforge/runes/monitoring.py,sha256=0egqFVnZ9A1S4H286JhpizwO1rqL6sv6DwMGoNCJ3tk,562
|
|
44
|
+
nullforge/runes/netsec.py,sha256=mVAXJ3tVD5W9yrasmbeKM2mbG28pPQAdq3VR5rZWeRA,17163
|
|
45
|
+
nullforge/runes/prepare.py,sha256=QjqXcBYUmlt_8Qu_CdoflKOck1dSONGYsq61x5Q2EQs,555
|
|
46
|
+
nullforge/runes/profiles.py,sha256=3Qnz0IZb6y4WqqTg3srJ8pDe-NNPLtlUe8HC2syeai0,17244
|
|
47
|
+
nullforge/runes/telemt.py,sha256=WJZcKAQw78ekULLiBs8s8qkjvl33r7VNKRNdiajnIow,8014
|
|
48
|
+
nullforge/runes/tor.py,sha256=R_2Dz4zknFriELR-KTlZLe1VDv-kOeZV9ul5ovwIVGA,1272
|
|
49
|
+
nullforge/runes/users.py,sha256=IliYNLJFoV-djQ8DEmdPrHWRhNWHD-rJkXweCtinNzk,4492
|
|
50
|
+
nullforge/runes/warp.py,sha256=4c28gWcAsoXnx23EoBIFwXnSoH1AUq8GOco3kI81FCo,8204
|
|
51
|
+
nullforge/runes/xray.py,sha256=iZukvIrxRZBbF7Lhyyyskryq8g6aV8L58Sd6UPq6F2w,2155
|
|
52
|
+
nullforge/runes/zerotrust.py,sha256=5zMSsEXr8BoJMI16j-lI0K2WT5q_jQ4gSxAKGM2kvfQ,3045
|
|
53
|
+
nullforge/smithy/__init__.py,sha256=2hZUNJbk6MSE-49vDKuDeS5pHqBiLeHposdPhs1Qf40,29
|
|
54
|
+
nullforge/smithy/admin.py,sha256=9c3pFNnZjAnQAquUgYCP1d4fpgx_Jlfe1f47AoQQBhs,1234
|
|
55
|
+
nullforge/smithy/arch.py,sha256=x0uA7HEsOl4aOtcYncMT7WqeNoC67iIyMwYl2BkGN7Y,852
|
|
56
|
+
nullforge/smithy/blocky.py,sha256=tflZS5ibTSsAuWTwYwZxWv1e3P6jD_h15trQUDDwtoM,966
|
|
57
|
+
nullforge/smithy/cloudflare.py,sha256=hRXuRshokPFOC71aLqj9TVF_FBkMdSz6gHovF5nrdnw,948
|
|
58
|
+
nullforge/smithy/github.py,sha256=v3cjd9HmjcUFzu51Cs0RcLQR8Mp5N2Itobwn6u8hwEI,8977
|
|
59
|
+
nullforge/smithy/http.py,sha256=zXeNGBCkaAop1qm4hDaX4rnbWmGMWQDhCn52JYO-Z34,2718
|
|
60
|
+
nullforge/smithy/install.py,sha256=ZqggdbLRPsyEpx0aM_1mqmwzz_fHE-Mqf0KuHCLK3jo,4999
|
|
61
|
+
nullforge/smithy/network.py,sha256=RYtpCZYM1UsedVMGbC02XeLBSpbmx3TrQeKq8_DeWTo,2794
|
|
62
|
+
nullforge/smithy/packages.py,sha256=O0ggk7PWSxeVB-TE8GD5UbLFpv-VXnII4NHkYxcSmVk,5338
|
|
63
|
+
nullforge/smithy/service.py,sha256=Pj8wel7qzbhaTeWb2X7CB7yaXIV2xE8Sl7vi8U3zOak,1061
|
|
64
|
+
nullforge/smithy/sni.py,sha256=YVRW9vjYB52li1J95ALA6MLol47tLZWBWBM536OZwcw,13012
|
|
65
|
+
nullforge/smithy/swap.py,sha256=IRW79LH0_VbERtxPFZUPJNx6C59E6rnubPMemD09WtY,3191
|
|
66
|
+
nullforge/smithy/system.py,sha256=KPnaXNyEmbg9JYPZnvmsUhXB8am6AY9Gj73tCwl3V4w,2640
|
|
67
|
+
nullforge/smithy/versions.py,sha256=JhMNb4mH-Z8GNrW5tKA64tDDkNy6WnaGZ0m_y5TkNWs,9108
|
|
68
|
+
nullforge/smithy/monitoring/__init__.py,sha256=HVEePFJJkCGUOfFWJZowc98Trz9umlelgXA4uO0FRMc,61
|
|
69
|
+
nullforge/smithy/monitoring/nezha/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
nullforge/smithy/monitoring/nezha/agent.py,sha256=OiGQiH5D8uSG7TFXQLrPjwEgTtFGJ9l9yRWiPt88JAA,1688
|
|
71
|
+
nullforge/smithy/monitoring/nezha/dashboard.py,sha256=_lcSRVkyQNrr9pNv4YD_TXxh4Apyhemexk4TId9EW1U,4624
|
|
72
|
+
nullforge/smithy/monitoring/nezha/deploy.py,sha256=_dlmGjXkgzi4QMOJ-nQI4XJ0hPDEcAc4UMD8Uf0zyN0,2539
|
|
73
|
+
nullforge/templates/__init__.py,sha256=AgWKxp1YjVRijGG5zomVDK8yJm3YYS00WzkaXqU23rg,912
|
|
74
|
+
nullforge/templates/cloudflared/tunnel.yml.j2,sha256=lN2CHKF_TY4RZJ3dQYJjHVVqtBWim3gcmM9tKAbMJhY,134
|
|
75
|
+
nullforge/templates/dns/blocky.yaml.j2,sha256=PHos94fKL57uBZwsY4ARD68X9JmjmgcaqwA8qNIcK94,160
|
|
76
|
+
nullforge/templates/dns/dns.yaml.j2,sha256=S-4X6uoVJDs8AL2lrcSyMONzzgmgRVwEa4SEoPsWIdQ,129
|
|
77
|
+
nullforge/templates/dns/resolv.conf.j2,sha256=Ke3FbBuRr59XQVpM8EPsLF2f5vriYwXWxwod9Jb53Qg,32
|
|
78
|
+
nullforge/templates/dns/resolved.conf.j2,sha256=2aDp_FmgJ7NnjBKbmVvqO90dp5Fx7byQpdgItjja4T0,205
|
|
79
|
+
nullforge/templates/etc/default/zramswap.j2,sha256=ZVTgGR6AqggueR64qJJzpU7RkCaL7Qy6puSfvHy6BX8,303
|
|
80
|
+
nullforge/templates/nvim/nvim_patch.lua.j2,sha256=wFqxT0JNMWV9AUri6SKhxUIdnf7R9bVwLrdG6e-qt5A,155
|
|
81
|
+
nullforge/templates/profiles/direnv.toml,sha256=wWjPu9N1zyKVuGCATszQpCgNKFxL2w66S41jPXhVX_w,28
|
|
82
|
+
nullforge/templates/profiles/starship.toml,sha256=6L6DtPHyCrGRmGpD4qI3kHBufPGytSnMfJe6E7USHyo,2021
|
|
83
|
+
nullforge/templates/profiles/tmux.conf,sha256=AHRN_lDVfVCaH84BkzG5grIV1eGpMB0nlDe01HsQ1Ss,1028
|
|
84
|
+
nullforge/templates/profiles/zshrc.j2,sha256=XtfJt1d1CCZZvNWaVf_TzOIp0jeDCDLLh-TWlCOUXNU,1325
|
|
85
|
+
nullforge/templates/scripts/telemt-synfix.sh,sha256=vV3EggGxh1ZtFKt5hA_Pn79jBPEcjuFo-bOht8FjUsc,2703
|
|
86
|
+
nullforge/templates/scripts/teleproxy-warp.sh,sha256=2FmiJUMaSJ7Co4UpvSNZXS9-KrMglTsyp9RXIyfsEzA,4813
|
|
87
|
+
nullforge/templates/scripts/warp-v6-policy.sh,sha256=7vIfjFeTF_9MLff0eQ7ZacPGBsjbAGNi2VeOKcCqJ8w,3078
|
|
88
|
+
nullforge/templates/scripts/zt-tunnel-warp.sh,sha256=Nre8gMdPs64MeOy8L1uyZ1DTEECZtpyHZ99AZ4wUW7Q,523
|
|
89
|
+
nullforge/templates/systemd/blocky.service.j2,sha256=3g-E4mP4bcnx5ogRoHerViK2z5hrL_0rV9utyYuB-6I,392
|
|
90
|
+
nullforge/templates/systemd/cloudflare-tunnel.service.j2,sha256=Hk2jpIuASLYDzvCVwp-fSLA20znBKVrT7sp3gDP25rE,695
|
|
91
|
+
nullforge/templates/systemd/cloudflare-warp.service.j2,sha256=gACaiHM1zu_KoVIMDRgJ5ppYiK3inBtzjGJnWlAfSB8,619
|
|
92
|
+
nullforge/templates/systemd/dns-internal.service.j2,sha256=2k5gT_4poXkgswO2B_jlzd_8dAEIHeMmmpDiqRA9NQg,514
|
|
93
|
+
nullforge/templates/systemd/telemt.service.j2,sha256=ZePVxd6-wIRl9PJFsMCTqIsjoWOKL85fltHg3BwelOg,943
|
|
94
|
+
nullforge/templates/telemt/telemt.toml.j2,sha256=cPJvJuAjP_mih4Q-4GOFXZ785wqYI_0gWmsNcoC0yJM,1109
|
|
95
|
+
nullforge/templates/tor/torrc.j2,sha256=Xq3oDilNou5BMNd0lqgQyF55sAGyYd6uA1LiYRn7hT4,124
|
|
96
|
+
nullforge-0.1.0.dist-info/METADATA,sha256=4TBg9nJvUKUqYbRy0ZSrg1V_u5ISrdpyjoyghwhg5UI,1541
|
|
97
|
+
nullforge-0.1.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
98
|
+
nullforge-0.1.0.dist-info/licenses/LICENSE,sha256=Bz7eb_OZAPMBOTJtczsHunkZjij0YLf4OXDtpuphjuI,1062
|
|
99
|
+
nullforge-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2026 Renat Mustafin
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|