1
0
mirror of https://github.com/osmarks/random-stuff synced 2024-12-21 15:40:35 +00:00

add more things???

This commit is contained in:
osmarks 2020-08-12 20:31:12 +01:00
parent 34bffb4f85
commit 19e50a1186
42 changed files with 4697 additions and 0 deletions

113
CookieEnterKeyPresser.py Executable file
View File

@ -0,0 +1,113 @@
#!/usr/bin/env python3
"""Lets you collect cookies"""
import multiprocessing as mp
import collections
import pickle
big_cookie = """
WNXXXXXNWW
WNNXK0OkkOO0OOO000KXXNNW
WN0O0O0kOOOO000OOkOOkOKK0OkO0N
N0kkOkdxxkkOOOOkkxkxddxkkkOK0kxk0KKXXNW
XkOOkxddkxkkOOkkkloddoodl;.;x0koOkdodxdddxk0XW
WK0O0OkdokkkOkdddl:ooodxdkxoloc:lkx000kdo;..,,,dON
Xxx:l0OkdkO0Okkxxdc::dkO0000OxxxdxoodOkdO00o';cd. :xk0N
XkOd'cxxkO0kdc.. .. .:llkOkxdolododdxkOOkkOOOOo:' coodx0NW
WXKOO00OkkkxkOd' .cko:;':cdxdddoolllooooocclloooddkklxxoodxkO0X
WKkOOkkoddxxkkkOko...lkk,.;ooooolllcc;::lllc:cclc:lloddxxkkkxooxddK
XOOkkxdokddoddxxxkOo;'...,dOkxxkdc,..;ooccccclc,..ll:;:;:ookOOkdxxxxK
NOkOOxdolodoodddoddlxxdo:dOkOxkko....';ldxxdoxxOk.:kc:lxdc:oxdcddl::xk0W
Nkkxkkxdll:cocc:ool::l;;lxkkxkkdll:'.'oxx:k000Kkkk. ...;.cdxkkxxx:. 'dx0
NkkxdddoolcooddxocdxxkodO00kxkOk'..lol,..:;;kkkkOdO; . 'lxko,. .lddX
KxxxxdddddxxdoxkxdkOOOOOO0Odlxkk;.. 'lc:;,::xkxoxxkO. .''.;dkxo,.. ..,lodk
Oxxxxxxxolc'. ckcdxkkOOOOxl'cOkx:. ;oolcdkxoldk0000x'oxol:dkkllol'';odddddX
Nxxxdxxxdoc:;,. .l:ooxdxkxxxkkk00kdc:c:odxkkk0Ooxkkkxkkk0Okkxxdxkxl:odxdddddK 1
KxdxxxxkkkkckkxkkOOx:dddxxddxo:,cldxxxdodxxkOOOl:clllodxxdkxddxdooccodxdooodxW
Xdoloxxoxkkdlc:;,oxx:cddddddoccllxxxdddlxkkkxdddo:cllloodxldkOOOolxxdooolloolX
kddoddodxdxxxkkocxkx:,loododxcc:;,,ldlcxxxdooooclcllloddxkxokOO;.'lxdxxxolclK
0dddxxx:dkxxokkkkkkOk::xdddll:. .:. .okxdoooooooooolloloddOOxxl. 'ooddddollN
Nxdolddl;OOxlxxxxdxxd:cxxkxlc;. .. . .lllo:cll;.:xkxdlcooxxxxdd,. ;dodoloolk
XddoldocxOklldddoddlclddxolkOx' :cloc;: .';'oxdddododooooc..cddxlloolX
Oddlololxkklcddddo;ccc:::.oxo:. .;lcoxxl .dxxoooodooll;;;;:ooooooo
XOdclxxdxooloolollkkkoddc:ooc:okkxdloxk; ..odooodoodxxdcllll:clooo0
0odxdlo:odddllcxOkocllclxkOOkkxkxdodxxl' .'ldoooo:;;,:lc;ddddoooolO
Nxodddddddxxldlokxc;;,xkxdddxxxkxxxdddkko,:::cclodo.... . ;dddlcllcX
Nlloxol;llc::;,;.',cooddodooddxkxxdo:clllcloc;coodo. ..,ldxollolcx
K......:;,ld,.. 'ooododoooodddoc,;coooodxl:;;:cllcclooooooolollW
0' ...;.;okxxxlcdOkdl:clooooolddddoooddlclodl::ccllccodoolooll,k
Wxlddxoxxdolldddxxxdlcclllol:l,. . .;ccllll::cc:;::ccoddooo;x
Wdoxxdool::::ccccclodxddxd; ,olllcclcccclooxdoolccdW
W0oloddodooclodxxxooddxxxd;. . .:c:;::cooooooccoollox0W
0occlolcloodxddxdooooddkkc,,.okdlclooodlcddlccclxX
Xkocc::::cllodoooolcc:ccllcccoooooddxo,,':coON
XOdclclcc:llcllolc:;;cllooooddldooooxk0X
NK0kdlcc:::ccc:clcllllcooooclx0XW
WNXXKOxoc;:cccccccldOKW
NOOddkOXW
"""
little_cookie = """
"""
def say_cookies(num):
if num == 1:
return "cookie"
else:
return "cookies"
def save(obj, name):
with open(name, "wb") as f:
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
def load(name):
with open(name, "rb") as f:
return pickle.load(f)
if __name__ == "__main__":
state = {
"cookies": 0
}
dispatch = {
"": lambda st: {"cookies": st["cookies"] + 1},
"help": lambda _: print("""
Available commands:
save [save name] - save current game state
load [save name] - load previous save
help - get this message
cookie - see a minicookie
<ENTER> - get cookies
"""),
"save": lambda st, save_name: save(st, save_name),
"load": lambda _, save_name: load(save_name),
"cookie": lambda _: print(little_cookie)
}
print(big_cookie)
while True:
print("You have %d %s." % (state["cookies"], say_cookies(state["cookies"])))
result_tokens = input(u"|||> ").split(" ")
try:
selected_func = dispatch[result_tokens[0]]
except:
print("Command not found.")
dispatch["help"](state)
continue
change = selected_func(state, *result_tokens[1:])
try: # An operation might return nothing instead of changing state.
for k, v in change.items():
state[k] = v
except:
pass

392
KerbalName/.gitignore vendored Executable file
View File

@ -0,0 +1,392 @@
# Created by https://www.gitignore.io/api/f#,linux,windows,macos,vim,emacs,visualstudio,visualstudiocode
### F# ###
lib/debug
lib/release
Debug
*.suo
*.user
obj
bin
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Vim ###
# swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# session
Session.vim
# temporary
.netrwhist
*~
# auto-generated tag files
tags
### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history
/eshell/lastdir
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
dist/
# Flycheck
flycheck_*.el
# server auth directory
/server/
# projectiles files
.projectile
### VisualStudioCode ###
.vscode
### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
build/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

View File

@ -0,0 +1,77 @@
module Kerbal.Names
open Argu
let readLinesFrom file =
use reader = new System.IO.StreamReader(path=file)
reader.ReadToEnd().Split('\n')
|> List.ofArray
type CommandLineArgument =
| [<AltCommandLine("-q")>] Quantity of int
| [<AltCommandLine("-s")>] Separator of string
| [<AltCommandLine("-d")>] DataDir of string
with
interface IArgParserTemplate with
member this.Usage =
match this with
| Quantity _ -> "How many names to generate (defaults to 1)"
| Separator _ -> "What to separate generated names with (defaults to newline)"
| DataDir _ -> "Where the program's datafiles can be found (defaults to KerbalNameData under working directory)"
module RNG =
let seedGenerator = System.Random()
let localGenerator = new System.Threading.ThreadLocal<System.Random>(fun _ ->
lock seedGenerator (fun _ ->
let seed = seedGenerator.Next()
new System.Random(seed)))
// Returns a version of System.Random using the threadlocal RNG.
// NOTE: Most functions are NOT thread-safe in this version.
let getRand() = {new System.Random() with member this.Next(lim) = localGenerator.Value.Next(lim)}
let inline randomChoice (rand : System.Random) (list:'a list) =
list.[rand.Next(list.Length)]
let inline generateHybridName rand prefixList suffixList =
(randomChoice rand prefixList) + (randomChoice rand suffixList)
let genName (rand : System.Random) properNames namePrefixes nameSuffixes =
if rand.Next(20) = 20 then
randomChoice rand properNames
else
generateHybridName rand namePrefixes nameSuffixes
[<EntryPoint>]
let main argv =
// Construct CLI parser with programname taken from env variables
let argParser = ArgumentParser.Create<CommandLineArgument>(programName = (Array.head <| System.Environment.GetCommandLineArgs()))
let parseResults = argParser.Parse argv
let dataDir = parseResults.GetResult(<@ DataDir @>, defaultValue = "KerbalNameData") + "/" // Append a slash in case missing
let quantity = parseResults.GetResult(<@ Quantity @>, defaultValue = 1)
let separator = parseResults.GetResult(<@ Separator @>, defaultValue = "\n")
// Access name datafiles
let properNames = readLinesFrom (dataDir + "Proper.txt")
let namePrefixes = readLinesFrom (dataDir + "Prefixes.txt")
let nameSuffixes = readLinesFrom (dataDir + "Suffixes.txt")
let rand = RNG.getRand()
let printingMailbox = MailboxProcessor.Start(fun inbox ->
let rec loop () = async {
let! msg = inbox.Receive()
printf "%s" msg
return! loop()
}
loop()
)
System.Threading.Tasks.Parallel.For(0, quantity, fun idx ->
genName rand properNames namePrefixes nameSuffixes
|> (fun name -> printingMailbox.Post(name + separator))
) |> ignore // We do not care about the result which came from the parallel loop.
0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
FSharp.Core
System.Runtime
System.IO
Argu

View File

@ -0,0 +1,96 @@
Ad
Al
Ald
An
Bar
Bart
Bil
Billy-Bob
Bob
Bur
Cal
Cam
Chad
Cor
Dan
Der
Des
Dil
Do
Don
Dood
Dud
Dun
Ed
El
En
Er
Fer
Fred
Gene
Geof
Ger
Gil
Greg
Gus
Had
Hal
Han
Har
Hen
Her
Hud
Jed
Jen
Jer
Joe
John
Jon
Jor
Kel
Ken
Ker
Kir
Lan
Lem
Len
Lo
Lod
Lu
Lud
Mac
Mal
Mat
Mel
Mer
Mil
Mit
Mun
Ned
Neil
Nel
New
Ob
Or
Pat
Phil
Ray
Rib
Rich
Ro
Rod
Ron
Sam
Sean
See
Shel
Shep
Sher
Sid
Sig
Son
Thom
Thomp
Tom
Wehr
Wil

View File

@ -0,0 +1,37 @@
Al
Alan
Archibald
Buzz
Carson
Chad
Charlie
Chris
Chuck
Dean
Ed
Edan
Edlu
Frank
Franklin
Gus
Hans
Jack
James
Jim
Kirk
Kurt
Lars
Luke
Mac
Matt
Phil
Randall
Scott
Scott
Sean
Steve
Tom
Will
Yuri
Olev
Dimitry

View File

@ -0,0 +1,119 @@
ald
bal
bald
bart
bas
berry
bert
bin
ble
bles
bo
bree
brett
bro
bur
burry
bus
by
cal
can
cas
cott
dan
das
den
din
do
don
dorf
dos
dous
dred
drin
dun
ely
emone
emy
eny
fal
fel
fen
field
ford
fred
frey
frey
frid
frod
fry
furt
gan
gard
gas
gee
gel
ger
gun
hat
ing
ke
kin
lan
las
ler
ley
lie
lin
lin
lo
lock
long
lorf
ly
mal
man
min
ming
mon
more
mund
my
nand
nard
ner
ney
nie
ny
oly
ory
rey
rick
rie
righ
rim
rod
ry
sby
sel
sen
sey
ski
son
sted
ster
sy
ton
top
trey
van
vey
vin
vis
well
wig
win
wise
zer
zon
zor

14
KerbalName/build.cmd Executable file
View File

@ -0,0 +1,14 @@
@echo off
cls
.paket\paket.bootstrapper.exe
if errorlevel 1 (
exit /b %errorlevel%
)
.paket\paket.exe restore
if errorlevel 1 (
exit /b %errorlevel%
)
packages\FAKE\tools\FAKE.exe build.fsx %*

51
KerbalName/build.fsx Executable file
View File

@ -0,0 +1,51 @@
// include Fake libs
#r "./packages/FAKE/tools/FakeLib.dll"
open Fake
// Directories
let buildDir = "./build/"
let deployDir = "./deploy/"
// Filesets
let appReferences =
!! "/**/*.csproj"
++ "/**/*.fsproj"
// version info
let version = "1.2a"
// Targets
Target "Clean" (fun _ ->
CleanDirs [buildDir; deployDir]
)
Target "Build" (fun _ ->
MSBuildDebug buildDir "Build" appReferences
|> Log "AppBuild-Output: "
)
Target "BuildRelease" (fun _ ->
MSBuildRelease buildDir "Build" appReferences
|> Log "AppBuild-Output: "
)
Target "Deploy" (fun _ ->
// Copy name data to buildDir for deployment
FileUtils.cp_r "KerbalNameData" (buildDir + "KerbalNameData/")
!! (buildDir + "/**/*.*")
-- "*.zip"
|> Zip buildDir (deployDir + "KerbalName." + version + ".zip")
)
// Build order
"Clean"
==> "BuildRelease"
==> "Deploy"
"Build" <=> "BuildRelease"
// start build
RunTargetOrDefault "Build"

34
KerbalName/build.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
if test "$OS" = "Windows_NT"
then
# use .Net
.paket/paket.bootstrapper.exe
exit_code=$?
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
.paket/paket.exe restore
exit_code=$?
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
packages/FAKE/tools/FAKE.exe $@
else
# use mono
mono .paket/paket.bootstrapper.exe
exit_code=$?
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
mono .paket/paket.exe restore
exit_code=$?
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
mono packages/FAKE/tools/FAKE.exe $@
fi

4
KerbalName/paket.dependencies Executable file
View File

@ -0,0 +1,4 @@
source https://www.nuget.org/api/v2
nuget FAKE
nuget FSharp.Core
nuget Argu

569
KerbalName/paket.lock Executable file
View File

@ -0,0 +1,569 @@
NUGET
remote: https://www.nuget.org/api/v2
Argu (3.7)
FSharp.Core (>= 4.0.1.7-alpha) - framework: >= net463, >= netstandard16
NETStandard.Library (>= 1.6) - framework: >= net463, >= netstandard16
System.Xml.XDocument (>= 4.0.11) - framework: >= net463, >= netstandard16
FAKE (4.56)
FSharp.Core (4.1.0.2)
System.Collections (>= 4.0.11) - framework: >= netstandard16
System.Console (>= 4.0) - framework: >= netstandard16
System.Diagnostics.Debug (>= 4.0.11) - framework: >= netstandard16
System.Diagnostics.Tools (>= 4.0.1) - framework: >= netstandard16
System.Globalization (>= 4.0.11) - framework: >= netstandard16
System.IO (>= 4.1) - framework: >= netstandard16
System.Linq (>= 4.1) - framework: >= netstandard16
System.Linq.Expressions (>= 4.1) - framework: >= netstandard16
System.Linq.Queryable (>= 4.0.1) - framework: >= netstandard16
System.Net.Requests (>= 4.0.11) - framework: >= netstandard16
System.Reflection (>= 4.1) - framework: >= netstandard16
System.Reflection.Extensions (>= 4.0.1) - framework: >= netstandard16
System.Resources.ResourceManager (>= 4.0.1) - framework: >= netstandard16
System.Runtime (>= 4.1) - framework: >= netstandard16
System.Runtime.Extensions (>= 4.1) - framework: >= netstandard16
System.Runtime.Numerics (>= 4.0.1) - framework: >= netstandard16
System.Text.RegularExpressions (>= 4.1) - framework: >= netstandard16
System.Threading (>= 4.0.11) - framework: >= netstandard16
System.Threading.Tasks (>= 4.0.11) - framework: >= netstandard16
System.Threading.Tasks.Parallel (>= 4.0.1) - framework: >= netstandard16
System.Threading.Thread (>= 4.0) - framework: >= netstandard16
System.Threading.ThreadPool (>= 4.0.10) - framework: >= netstandard16
System.Threading.Timer (>= 4.0.1) - framework: >= netstandard16
System.ValueTuple (>= 4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
Microsoft.NETCore.Platforms (1.1) - framework: >= net10, >= netstandard10, netstandard13
Microsoft.NETCore.Targets (1.1) - framework: >= net10, >= netstandard10, netstandard13
Microsoft.Win32.Primitives (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
NETStandard.Library (1.6.1) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard10
Microsoft.Win32.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
System.AppContext (>= 4.3) - framework: >= net46, >= netstandard13
System.Collections (>= 4.3) - framework: >= netstandard10
System.Collections.Concurrent (>= 4.3) - framework: >= net45, >= netstandard11
System.Console (>= 4.3) - framework: >= net46, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard10
System.Diagnostics.Tools (>= 4.3) - framework: >= netstandard10
System.Diagnostics.Tracing (>= 4.3) - framework: >= net45, >= netstandard11
System.Globalization (>= 4.3) - framework: >= netstandard10
System.Globalization.Calendars (>= 4.3) - framework: >= net46, >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard10
System.IO.Compression (>= 4.3) - framework: >= net45, >= netstandard11
System.IO.Compression.ZipFile (>= 4.3) - framework: >= net46, >= netstandard13
System.IO.FileSystem (>= 4.3) - framework: >= net46, >= netstandard13
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
System.Linq (>= 4.3) - framework: >= netstandard10
System.Linq.Expressions (>= 4.3) - framework: >= netstandard10
System.Net.Http (>= 4.3) - framework: >= net45, >= netstandard11
System.Net.Primitives (>= 4.3) - framework: >= netstandard10
System.Net.Sockets (>= 4.3) - framework: >= net46, >= netstandard13
System.ObjectModel (>= 4.3) - framework: >= netstandard10
System.Reflection (>= 4.3) - framework: >= netstandard10
System.Reflection.Extensions (>= 4.3) - framework: >= netstandard10
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
System.Runtime (>= 4.3) - framework: >= netstandard10
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard10
System.Runtime.Handles (>= 4.3) - framework: >= net46, >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: >= net45, >= netstandard11
System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - framework: >= net45, >= netstandard11
System.Runtime.Numerics (>= 4.3) - framework: >= net45, >= netstandard11
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net46, >= netstandard13
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard10
System.Text.Encoding.Extensions (>= 4.3) - framework: >= netstandard10
System.Text.RegularExpressions (>= 4.3) - framework: >= netstandard10
System.Threading (>= 4.3) - framework: >= netstandard10
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
System.Threading.Timer (>= 4.3) - framework: >= net451, >= netstandard12
System.Xml.ReaderWriter (>= 4.3) - framework: >= netstandard10
System.Xml.XDocument (>= 4.3) - framework: >= netstandard10
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.native.System (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
runtime.native.System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
runtime.native.System.Net.Http (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3)
runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
System.AppContext (4.3) - framework: >= net463, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Buffers (4.3) - framework: >= net463, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard11
System.Diagnostics.Tracing (>= 4.3) - framework: >= netstandard11
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard11
System.Runtime (>= 4.3) - framework: >= netstandard11
System.Threading (>= 4.3) - framework: >= netstandard11
System.Collections (4.3) - framework: >= net10, >= netstandard10
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Collections.Concurrent (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Reflection (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Console (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
System.Diagnostics.Debug (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Diagnostics.DiagnosticSource (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: netstandard11, >= netstandard13
System.Diagnostics.Tracing (>= 4.3) - framework: netstandard11, >= netstandard13
System.Reflection (>= 4.3) - framework: netstandard11, >= netstandard13
System.Runtime (>= 4.3) - framework: netstandard11, >= netstandard13
System.Threading (>= 4.3) - framework: netstandard11, >= netstandard13
System.Diagnostics.Tools (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Diagnostics.Tracing (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
System.Globalization (4.3) - framework: >= net10, >= netstandard10
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Globalization.Calendars (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.Globalization (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Globalization.Extensions (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
System.Globalization (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
System.IO (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
runtime.native.System (>= 4.3) - framework: >= netstandard13
runtime.native.System.IO.Compression (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Buffers (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO.Compression.ZipFile (4.3) - framework: >= net463, >= netstandard16
System.Buffers (>= 4.3) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.IO.Compression (>= 4.3) - framework: >= netstandard13
System.IO.FileSystem (>= 4.3) - framework: >= netstandard13
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
System.IO.FileSystem (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
System.IO.FileSystem.Primitives (4.3) - framework: >= net463, >= netstandard16
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Linq (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Linq.Expressions (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Linq (>= 4.3) - framework: dnxcore50, >= netstandard16
System.ObjectModel (>= 4.3) - framework: >= netstandard16
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
System.Reflection.Emit (>= 4.3) - framework: >= netstandard16
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Reflection.Emit.Lightweight (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Reflection.TypeExtensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Linq.Queryable (4.3) - framework: >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Linq (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Linq.Expressions (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Net.Http (4.3.1) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard13, >= netstandard16
runtime.native.System (>= 4.3) - framework: >= netstandard16
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Diagnostics.DiagnosticSource (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Globalization (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Globalization.Extensions (>= 4.3) - framework: >= netstandard16
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
System.IO.FileSystem (>= 4.3) - framework: >= netstandard16
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Runtime.Handles (>= 4.3) - framework: netstandard13, >= netstandard16
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, dnxcore50, netstandard13, >= netstandard16
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
System.Threading (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
System.Net.Primitives (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Net.Requests (4.3) - framework: >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
System.Net.Http (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
System.Net.WebHeaderCollection (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Net.Sockets (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.Net.Primitives (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
System.Net.WebHeaderCollection (4.3) - framework: >= netstandard16
System.Collections (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
System.ObjectModel (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Reflection (4.3) - framework: >= net10, >= netstandard10
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Reflection.Emit (4.3) - framework: >= net463, >= netstandard16
System.IO (>= 4.3) - framework: >= netstandard11
System.Reflection (>= 4.3) - framework: >= netstandard11
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard11
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard11
System.Runtime (>= 4.3) - framework: >= netstandard11
System.Reflection.Emit.ILGeneration (4.3) - framework: >= net463, >= netstandard16
System.Reflection (>= 4.3) - framework: >= netstandard10
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
System.Runtime (>= 4.3) - framework: >= netstandard10
System.Reflection.Emit.Lightweight (4.3) - framework: >= net463, >= netstandard16
System.Reflection (>= 4.3) - framework: >= netstandard10
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard10
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
System.Runtime (>= 4.3) - framework: >= netstandard10
System.Reflection.Extensions (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Reflection.Primitives (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Reflection.TypeExtensions (4.3) - framework: >= net463, >= netstandard16
System.Reflection (>= 4.3) - framework: >= net462, dnxcore50, netstandard13, >= netstandard15
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15
System.Resources.ResourceManager (4.3) - framework: >= net10, >= netstandard10
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
System.Runtime (4.3) - framework: >= net10, >= netstandard10, netstandard13
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
System.Runtime.Extensions (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
System.Runtime.Handles (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.InteropServices (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
System.Runtime (>= 4.3) - framework: net462, >= net463, dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15, netcore11
System.Runtime.InteropServices.RuntimeInformation (4.3) - framework: >= net463, >= netstandard16
runtime.native.System (>= 4.3) - framework: >= netstandard11
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard11
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard11
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard11
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard11
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard11
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard11
System.Runtime.Numerics (4.3) - framework: >= net463, >= netstandard16
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Security.Cryptography.Algorithms (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
runtime.native.System.Security.Cryptography.Apple (>= 4.3) - framework: >= netstandard16
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
System.Collections (>= 4.3) - framework: >= netstandard16
System.IO (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, dnxcore50, >= netstandard16
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Security.Cryptography.Cng (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: netstandard14, >= netstandard16
System.IO (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: netstandard14, >= netstandard16
System.Runtime (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: netstandard14, >= netstandard16
System.Runtime.Handles (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
System.Runtime.InteropServices (>= 4.3) - framework: netstandard14, >= netstandard16
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
System.Security.Cryptography.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
System.Text.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
System.Security.Cryptography.Csp (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.Reflection (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
System.Threading (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.Encoding (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard13
System.Collections (>= 4.3) - framework: >= netstandard13
System.Collections.Concurrent (>= 4.3) - framework: >= netstandard13
System.Linq (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard13
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= net463, >= netstandard16, monoandroid, monotouch, xamarinios, xamarinmac
System.Collections (>= 4.3) - framework: >= netstandard16
System.IO (>= 4.3) - framework: >= net463, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard16
System.Runtime (>= 4.3) - framework: >= net463, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: >= net463, >= netstandard16
System.Runtime.Handles (>= 4.3) - framework: >= netstandard16
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard16
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net463, >= netstandard16
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, >= netstandard16
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net463, >= netstandard16
System.Text.Encoding (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Primitives (4.3) - framework: >= net463, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard13
System.Globalization (>= 4.3) - framework: >= netstandard13
System.IO (>= 4.3) - framework: >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Threading (>= 4.3) - framework: >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
System.Security.Cryptography.X509Certificates (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
runtime.native.System (>= 4.3) - framework: >= netstandard16
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard16
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Globalization.Calendars (>= 4.3) - framework: dnxcore50, >= netstandard16
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard16
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime.Numerics (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Security.Cryptography.Cng (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Security.Cryptography.Csp (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Encoding (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
System.Security.Cryptography.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Text.Encoding (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Text.Encoding.Extensions (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Text.RegularExpressions (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16, netcore11
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
System.Threading (4.3) - framework: >= net463, >= netstandard16
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Threading.Tasks (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Threading.Tasks.Extensions (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: >= netstandard10
System.Runtime (>= 4.3) - framework: >= netstandard10
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
System.Threading.Tasks.Parallel (4.3) - framework: >= netstandard16
System.Collections.Concurrent (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
System.Threading.Thread (4.3) - framework: >= netstandard16
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Threading.ThreadPool (4.3) - framework: >= netstandard16
System.Runtime (>= 4.3) - framework: >= netstandard13
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
System.Threading.Timer (4.3) - framework: >= net463, >= netstandard16
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard12
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard12
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard12
System.ValueTuple (4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
System.Collections (>= 4.3) - framework: >= netstandard10
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
System.Runtime (>= 4.3) - framework: >= netstandard10
System.Xml.ReaderWriter (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO.FileSystem.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Text.Encoding.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Text.RegularExpressions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Threading.Tasks.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Xml.XDocument (4.3) - framework: >= net463, >= netstandard16
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Diagnostics.Tools (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
System.Xml.ReaderWriter (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13

23
README.md Normal file
View File

@ -0,0 +1,23 @@
# random-stuff
In the interest of transparency and/or being vaguely useful, I'm releasing random junk from my projects folder publicly.
This comes with absolutely no guarantee of support or correct function, although if you need some of this for something I will *try* and answer any queries you might have.
## Contents (incomplete and rough list)
* some interpreters for esolangs due to events on the esolangs discord
* bad assembly hello world for some reason
* political compass visualizer thing for one Discord server
* simple un-hexadecimal-izer program (`base64 -d` exists but somehow not `base16 -d` or something)
* scripts for packing music + metadata onto Computronics (a Minecraft mod) tape images
* some thing to generate WAV files containing beeping noises
* fairly transferable small bits of an abandoned JS project
* an extremely bad and/or unfinished cookie clicker thing where you press the enter key instead of clicking
* a very simple web API wrapper for `luamin`
* some bodged old version of [it-was-inevitable](https://github.com/BenLubar/it_was_inevitable) which runs a local webserver instead of sending to Mastodon
* an extremely cursed program which bruteforces regexes or something?
* `realtau.txt`, which seemingly contains 100000 digits of τ. I wonder if there's a faketau somewhere.
* some weird thing which lets you use synonyms to get attributes on python objects
* something which generates random vaguely human readable names in Elm. Please note that I do NOT endorse the use of Elm and this is provided mostly just to make the languages list at the side weirder.
* F# kerbal name generator & very basic stack calculator
* importer part of an unfinished wikipedia database dump viewer

100
Stackulator.fs Executable file
View File

@ -0,0 +1,100 @@
open System
open System.Numerics
type Stack = StackContents of Complex list
let splitPart (what:char) index (stringIn:string) = stringIn.Split(what).[index]
let spliti = splitPart 'i'
let firstInSpliti = spliti 0
let secondInSpliti = spliti 1
let isDoubleAsString text = System.Double.TryParse text |> fst
let doubleFromString text = System.Double.TryParse text |> snd
let isImaginaryAsString (text:string) =
match text.Contains("i") with
| false -> false
| true ->
let normalPart = firstInSpliti text
isDoubleAsString normalPart
let imaginaryFromString text =
let imaginaryPart = doubleFromString (firstInSpliti text)
Complex(0.0, imaginaryPart)
let showStack (StackContents contents) =
printfn "%A" contents // Print unpacked StackContents with formatting string
StackContents (contents) // Repack the StackContents
let push value (StackContents contents) =
StackContents (value::contents)
let pop (StackContents contents) =
match contents with
| top::rest -> // Separate top from rest
(top, StackContents rest) // Stack contents must be the StackContents type.
| [] -> // Check for stack underflow
failwith "Stack underflow"
let binary func stack =
let x, newStack = pop stack
let y, newestStack = pop newStack
let z = func y x // This is deliberately swapped, because we are working on a stack
push z newestStack
let unary func stack =
let x, newStack = pop stack
push (func x) stack
let dup stack =
let x, _ = pop stack // Drop the new stack, we want to duplicate "x"
push x stack
let swap stack =
let x, newStack = pop stack
let y, newerStack = pop newStack
push y (push x newerStack)
let drop stack =
let _, newStack = pop stack // Pop one off the top and ignore it
newStack
let numberInput value stack = push value stack
let add = binary (+)
let multiply = binary (*)
let subtract = binary (-)
let divide = binary (/)
let negate = unary (fun x -> -(x))
let square = unary (fun x -> x * x)
let cube = dup >> dup >> multiply >> multiply
let exponent = binary ( ** )
let show stack =
let value, _ = pop(stack)
printfn "%A" value
stack // We're going to keep the same stack as before.
let empty = StackContents []
let splitString (text:string) = text.Split ' '
let processTokenString stack token =
match token with
| "*" -> stack |> multiply
| "+" -> stack |> add
| "/" -> stack |> divide
| "+-" -> stack |> negate
| "sqr" -> stack |> square
| "cub" -> stack |> cube
| "**" | "^" -> stack |> exponent
| _ when isDoubleAsString token ->
let doubleInString = doubleFromString token
numberInput (Complex(doubleInString, 0.0)) stack
| _ when isImaginaryAsString token ->
let imaginaryInString = imaginaryFromString token
numberInput imaginaryInString stack
| _ -> showStack stack // For easier debugging.
Console.Write("Please enter your expression here: ")
let userExpression = Console.ReadLine()
let splitExpression = splitString userExpression
let resultantStack = List.fold processTokenString (empty) (Array.toList splitExpression) |> showStack

View File

@ -0,0 +1,44 @@
#!/bin/env python3
chars = [chr(n) for n in range(126)]
firstchar = chars[0]
lastchar = chars[len(chars) - 1]
def increment_char(character):
return chr(ord(character) + 1)
def old_increment_string(string_to_increment):
reversed_string = list(reversed(string_to_increment)) # Reverse the string for easier work.
for rindex, char in enumerate(reversed_string):
if char == lastchar: # If we can't increment this char further, try the next ones.
reversed_string[rindex] = firstchar # Set the current char back to the first one.
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
else:
# We only want to increment ONE char, unless we need to "carry".
reversed_string[rindex] = increment_char(reversed_string[rindex])
break
return ''.join(list(reversed(reversed_string)))
def increment_string(to_increment):
reversed_string = list(to_increment) # Reverse the string for easier work.
for rindex, char in enumerate(reversed_string):
if char == lastchar: # If we can't increment this char further, try the next ones.
reversed_string[rindex] = firstchar # Set the current char back to the first one.
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
else:
# We only want to increment ONE char, unless we need to "carry".
reversed_string[rindex] = increment_char(reversed_string[rindex])
break
return ''.join(list(reversed_string))
def string_generator():
length = 0
while 1:
length += 1
string = chars[0] * length
while True:
try:
string = increment_string(string)
except IndexError: # Incrementing has gone out of the char array, move onto next length
break
yield string

82
accursed-autoregex/autoregex.py Executable file
View File

@ -0,0 +1,82 @@
#!/bin/env python3
import re, sys, allstrings, multiprocessing
from setproctitle import setproctitle # https://github.com/dvarrazzo/py-setproctitle
string = sys.argv[1]
def gen_strings(out_queue):
setproctitle("AutoRegexer StringGen")
for string in allstrings.string_generator():
out_queue.put(string)
def test_strings(regex_queue, substring_queue, out_queue, search_in):
setproctitle("AutoRegexer Tester")
while 1:
try: # Regexes are errory things and we shove in random ones, so ignore errors.
regex_raw = regex_queue.get()
substring = substring_queue.get()
regex = re.compile(regex_raw)
result = re.sub(regex, substring, string)
out_queue.put({"result": result, "regex": regex_raw, "substring": substring}) # Package the values used and send them off.
except:
pass
def print_strings(in_queue, ignore):
i = 0
setproctitle("AutoRegexer IO")
while 1:
i += 1
attempt = in_queue.get()
if attempt["result"] == ignore: # Ignore regexes deemed boring..
continue
print(str(i) + "th attempt: replacing " + attempt["substring"] +
" with " + attempt["regex"] + " results in " + attempt["result"] + ".")
if __name__ == "__main__":
print_queue = multiprocessing.Queue() # Create the IO queue
regex_queue = multiprocessing.Queue() # Create queue to distribute generated strings.
substring_queue = multiprocessing.Queue()
print_process = multiprocessing.Process(target=print_strings, args=(print_queue, string), name="AutoRegexer IO") # Spawn a process to handle our IO.
regex_gen_process = multiprocessing.Process(target=gen_strings, args=(regex_queue,), name="AutoRegexer RegexGen") # Create process to generate our regexes.
substring_gen_process = multiprocessing.Process(target=gen_strings, args=(substring_queue,), name="AutoRegexer SubstringGen") # Make a process to generate the replaced substrings.
print_process.start()
regex_gen_process.start()
substring_gen_process.start()
#with multiprocessing.Pool(processes=7) as pool:
for local_process_id in range(7):
#while True:
proc_name = "AutoRegexer " + str(local_process_id)
proc = multiprocessing.Process(target=test_strings, args=(regex_queue, substring_queue, print_queue, string), name=proc_name)
proc.start()
#string_gen_process = multiprocessing.Process(target=gen_strings, args=(string_queue,), name="AutoRegexer StringGen")
#string_gen_process.start()
setproctitle("AutoRegexer Master")
# Obsolete old version.
'''
for iterations, regex_and_sub in enumerate(allstrings.string_generator()):
result = ""
try:
half_point = len(regex_and_sub) // 2
regex_raw = regex_and_sub[:half_point]
substring = regex_and_sub[half_point:]
regex = re.compile(regex_raw)
result = re.sub(regex_raw, substring, string)
except:
pass
finally:
if result != string and result != "":
print("Replacing `" + regex_raw + "` with `" + substring + "` produces `" + result + "`.")
'''

22
config.ts Normal file
View File

@ -0,0 +1,22 @@
import { parse } from "toml"
import { readFileSync } from "fs"
import { join } from "path"
import { path } from "ramda"
import * as log from "./log"
const defaults = {
production: process.env.NODE_ENV === "production"
}
const config = parse(readFileSync(process.env.CONFIG_FILE || join(__dirname, "..", "config.toml"), { encoding: "utf8" }))
export const get = key => {
const arrKey = key.split(".")
const out = path(arrKey, config) || path(arrKey, defaults)
if (out === undefined) {
log.error(`Configuration parameter ${key} missing`)
process.exit(1)
}
return out
}

49
db.ts Executable file
View File

@ -0,0 +1,49 @@
import Database = require("better-sqlite3")
import * as C from "./config"
import * as log from "./log"
export const DB = Database(C.get("db"))
const migrations = [
`
--whatever
`
]
const executeMigration = DB.transaction((i) => {
const migration = migrations[i]
DB.exec(migration)
DB.pragma(`user_version = ${i + 1}`)
log.info(`Migrated to schema ${i + 1}`)
})
const schemaVersion = DB.pragma("user_version", { simple: true })
if (schemaVersion < migrations.length) {
log.info(`Migrating DB - schema ${schemaVersion} used, schema ${migrations.length} available`)
for (let i = schemaVersion; i < migrations.length; i++) {
executeMigration(i)
}
}
DB.pragma("foreign_keys = 1")
const preparedStatements = new Map()
export const SQL = (strings, ...params) => {
const sql = strings.join("?")
let stmt
const cachedValue = preparedStatements.get(sql)
if (!cachedValue) {
stmt = DB.prepare(sql)
preparedStatements.set(sql, stmt)
} else {
stmt = cachedValue
}
return {
get: () => stmt.get.apply(stmt, params),
run: () => stmt.run.apply(stmt, params),
all: () => stmt.all.apply(stmt, params),
statement: stmt
}
}

46
diacriticize.py Executable file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env python3
import random
import fileinput
import sys
zalgo = [
'\u030d', '\u030e', '\u0304', '\u0305',
'\u033f', '\u0311', '\u0306', '\u0310',
'\u0352', '\u0357', '\u0351', '\u0307',
'\u0308', '\u030a', '\u0342', '\u0343',
'\u0344', '\u034a', '\u034b', '\u034c',
'\u0303', '\u0302', '\u030c', '\u0350',
'\u0300', '\u0301', '\u030b', '\u030f',
'\u0312', '\u0313', '\u0314', '\u033d',
'\u0309', '\u0363', '\u0364', '\u0365',
'\u0366', '\u0367', '\u0368', '\u0369',
'\u036a', '\u036b', '\u036c', '\u036d',
'\u036e', '\u036f', '\u033e', '\u035b',
'\u0346', '\u031a',
'\u0316', '\u0317', '\u0318', '\u0319',
'\u031c', '\u031d', '\u031e', '\u031f',
'\u0320', '\u0324', '\u0325', '\u0326',
'\u0329', '\u032a', '\u032b', '\u032c',
'\u032d', '\u032e', '\u032f', '\u0330',
'\u0331', '\u0332', '\u0333', '\u0339',
'\u033a', '\u033b', '\u033c', '\u0345',
'\u0347', '\u0348', '\u0349', '\u034d',
'\u034e', '\u0353', '\u0354', '\u0355',
'\u0356', '\u0359', '\u035a', '\u0323',
'\u0315', '\u031b', '\u0340', '\u0341',
'\u0358', '\u0321', '\u0322', '\u0327',
'\u0328', '\u0334', '\u0335', '\u0336',
'\u034f', '\u035c', '\u035d', '\u035e',
'\u035f', '\u0360', '\u0362', '\u0338',
'\u0337', '\u0361', '\u0489'
]
zero_width = ["\u200b", "\u200c", "\u200d"]
def process_char(c):
return c + random.choice(zalgo)
for line in fileinput.input():
# line = line.replace("\n", "")
out = "".join([process_char(c) for c in line])
sys.stdout.buffer.write(out.encode("utf-8"))

1
it-was-inevitable/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
*.local.*

17
it-was-inevitable/Dockerfile Executable file
View File

@ -0,0 +1,17 @@
FROM golang:1.10.1 as builder
COPY *.go /go/src/github.com/BenLubar/it_was_inevitable/
WORKDIR /go/src/github.com/BenLubar/it_was_inevitable
RUN go get -d
RUN CGO_ENABLED=0 go build -a -o /it_was_inevitable
FROM benlubar/dwarffortress:df-ai-0.44.12-r1-update1
COPY --from=builder /it_was_inevitable /usr/local/bin/it_was_inevitable
RUN sed -i /df_linux/dfhack -e "s/ setarch / exec setarch /"
CMD ["it_was_inevitable"]

19
it-was-inevitable/LICENSE Executable file
View File

@ -0,0 +1,19 @@
zlib License
(C) 2018 Ben Lubar
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

9
it-was-inevitable/README.md Executable file
View File

@ -0,0 +1,9 @@
# Sentient Dwarf Fortress was inevitable.
The source code that powers [@it\_was\_inevitable@botsin.space](https://botsin.space/@it_was_inevitable) and [@it\_was\_inevitable\_slow@botsin.space](https://botsin.space/@it_was_inevitable_slow) on Mastodon.
Except it's actually not, this version is to run a webserver on port 1556 to provide messages instead.
## To run locally:
1. Install Docker.
2. Run this in Docker.

View File

@ -0,0 +1,6 @@
package main
var announcementstxt = []byte(`
[REGULAR_CONVERSATION:D_D]
[CONFLICT_CONVERSATION:D_D]
`[1:])

44
it-was-inevitable/cleanup.go Executable file
View File

@ -0,0 +1,44 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
)
func cleanup() {
// Enable only conversation in the log.
if err := ioutil.WriteFile("/df_linux/data/init/announcements.txt", announcementstxt, 0644); err != nil {
panic(err)
}
// Remove any old log we might have.
if err := os.Remove("/df_linux/gamelog.txt"); err != nil && !os.IsNotExist(err) {
panic(err)
}
// Remove any old worlds.
if err := clearSaves(); err != nil {
panic(err)
}
// Set up df-ai.
if err := ioutil.WriteFile("/df_linux/dfhack-config/df-ai.json", dfaijson, 0644); err != nil {
panic(err)
}
}
func clearSaves() error {
files, err := ioutil.ReadDir("/df_linux/data/save")
if err != nil {
return err
}
for _, file := range files {
if err = os.RemoveAll(filepath.Join("/df_linux/data/save", file.Name())); err != nil && !os.IsNotExist(err) {
return err
}
}
return nil
}

21
it-was-inevitable/config.go Executable file
View File

@ -0,0 +1,21 @@
package main
const (
// Pause DF-AI when the queue length gets above this threshold.
maxQueuedLines = 1000
// Unpause DF-AI when the queue length gets below this threshold.
minQueuedLines = 500
// Minimum number of lines before a duplicate is allowed.
minLinesBeforeDuplicate = 500
// Maximum number of "fuzzy" (some words changed) duplicates allowed.
maxFuzzyDuplicates = 5
// Number of lines to remember for "fuzzy" duplicate checking.
fuzzyDuplicateWindow = 10
// Maximum number of words that can differ in a "fuzzy" duplicate.
maxFuzzyDifferentWords = 2
)

14
it-was-inevitable/cp437.go Executable file
View File

@ -0,0 +1,14 @@
package main
var cp437 = []rune("\x00☺☻♥♦♣♠•◘○◙♂♀♪♬☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\u00A0")
func mapCP437(s string) string {
b := []byte(s)
r := make([]rune, len(b))
for i, c := range b {
r[i] = cp437[c]
}
return string(r)
}

19
it-was-inevitable/df-ai.json.go Executable file
View File

@ -0,0 +1,19 @@
package main
var dfaijson = []byte(`
{
"camera": false,
"cancel_announce": 0,
"fps_meter": false,
"lockstep": true,
"manage_labors": "autolabor",
"manage_nobles": true,
"no_quit": true,
"plan_allow_legacy": false,
"plan_verbosity": -1,
"random_embark": true,
"record_movie": false,
"write_console": false,
"write_log": false
}
`[1:])

267
it-was-inevitable/game.go Executable file
View File

@ -0,0 +1,267 @@
package main
import (
"context"
"fmt"
"log"
"os"
"os/exec"
"strings"
"syscall"
"time"
"github.com/hpcloud/tail"
"github.com/kr/pty"
)
func logError(err error, message string) {
if err != nil {
log.Println(message, err)
}
}
func logErrorD(f func() error, message string) {
logError(f(), message)
}
type dataBuffer struct {
queue []string
threshold int
recent [minLinesBeforeDuplicate]string
fuzzy [fuzzyDuplicateWindow][]string
running bool
}
func dwarfFortress(ctx context.Context, buffer *dataBuffer, ch chan<- string) {
addch := make(chan string, 100)
debugch := make(chan struct{})
go watchLog(ctx, addch)
go watchDebug(ctx, debugch)
for {
select {
case <-ctx.Done():
return
default:
}
runGame(ctx, buffer, ch, addch, debugch)
}
}
func runGame(ctx context.Context, buffer *dataBuffer, ch chan<- string, addch <-chan string, debugch <-chan struct{}) {
cmd := exec.CommandContext(ctx, "/df_linux/dfhack")
cmd.Env = append(cmd.Env, "TERM=xterm-256color")
cmd.Dir = "/df_linux"
f, err := pty.Start(cmd)
if err != nil {
panic(err)
}
defer logErrorD(f.Close, "Closing Pseudo-TTY:")
exited := make(chan error, 1)
go func() {
exited <- cmd.Wait()
}()
defer logErrorD(clearSaves, "Removing saved worlds:")
signal := func(s os.Signal) {
logError(cmd.Process.Signal(s), "Sending "+s.String()+":")
}
buffer.running = true
first := true
for {
var nextLine string
out := ch
if len(buffer.queue) == 0 {
out = nil
} else {
nextLine = buffer.queue[0]
}
select {
case <-time.After(time.Minute * 30):
if buffer.running {
log.Println("30 minutes without any log output. Assuming DF is stuck. Resetting.")
signal(syscall.SIGTERM)
select {
case <-time.After(time.Minute):
log.Println("Process has not exited. Killing.")
signal(syscall.SIGKILL)
case <-exited:
return
}
}
case out <- nextLine:
buffer.queue = buffer.queue[1:]
checkQueueLength(buffer, signal)
case line := <-addch:
if isDuplicate(buffer, line) {
log.Println("Duplicate detected:", line)
continue
}
if first || len(buffer.queue) == 0 {
log.Println("First toot queued:", line)
first = false
}
buffer.queue = append(buffer.queue, line)
checkQueueLength(buffer, signal)
case err := <-exited:
log.Println("Dwarf Fortress process exited:", err)
return
case <-debugch:
signal(syscall.SIGKILL)
if err := os.Remove("/df_linux/df-ai-debug.log"); err != nil {
log.Println("Removing debug log:", err)
}
return
}
}
}
func isDuplicate(buffer *dataBuffer, line string) bool {
if minLinesBeforeDuplicate == 0 && fuzzyDuplicateWindow == 0 {
return false
}
firstLine := line[:strings.IndexByte(line, '\n')]
for _, dup := range buffer.recent {
if dup == firstLine {
return true
}
}
firstLineWords := strings.Fields(firstLine)
fuzzy := 0
for _, dup := range buffer.fuzzy {
if isFuzzyDuplicate(dup, firstLineWords) {
fuzzy++
}
}
if fuzzy > maxFuzzyDuplicates {
return true
}
if len(buffer.recent) != 0 {
copy(buffer.recent[:], buffer.recent[1:])
buffer.recent[len(buffer.recent)-1] = firstLine
}
if len(buffer.fuzzy) != 0 {
copy(buffer.fuzzy[:], buffer.fuzzy[1:])
buffer.fuzzy[len(buffer.fuzzy)-1] = firstLineWords
}
return false
}
func isFuzzyDuplicate(dup, words []string) bool {
// Only allow changes, not additions or deletions, to simplify this.
if len(dup) != len(words) {
return false
}
different := 0
for i := range dup {
if dup[i] != words[i] {
different++
}
}
return different <= maxFuzzyDifferentWords
}
func checkQueueLength(buffer *dataBuffer, signal func(os.Signal)) {
if l := len(buffer.queue); l%100 == 0 && (buffer.threshold >= l+100 || buffer.threshold <= l-100) {
buffer.threshold = l
log.Println(l, "lines are buffered.")
}
if len(buffer.queue) < minQueuedLines {
if !buffer.running {
log.Println("Unsuspending Dwarf Fortress")
buffer.running = true
}
signal(syscall.SIGCONT)
} else if len(buffer.queue) > maxQueuedLines {
if buffer.running {
log.Println("Suspending Dwarf Fortress")
buffer.running = false
}
signal(syscall.SIGSTOP)
}
}
func watchDebug(ctx context.Context, ch chan<- struct{}) {
for {
// Wait at least a minute between kills to make sure there's time to clean up.
select {
case <-ctx.Done():
return
case <-time.After(time.Minute):
}
f, err := tail.TailFile("/df_linux/df-ai-debug.log", tail.Config{
Follow: true,
})
if err != nil {
panic(err)
}
select {
case <-ctx.Done():
return
case first := <-f.Lines:
log.Println("df-ai crashed! debug log follows:")
go func() {
f.Kill(f.StopAtEOF())
f.Cleanup()
}()
fmt.Println(first.Text)
for line := range f.Lines {
fmt.Println(line.Text)
}
ch <- struct{}{}
}
}
}
func watchLog(ctx context.Context, ch chan<- string) {
f, err := tail.TailFile("/df_linux/gamelog.txt", tail.Config{
ReOpen: true,
Follow: true,
})
if err != nil {
panic(err)
}
defer f.Cleanup()
go func() {
<-ctx.Done()
f.Kill(ctx.Err())
}()
for line := range f.Lines {
if line.Err != nil {
log.Println(line.Err)
continue
}
text := mapCP437(strings.TrimSpace(line.Text))
// Chatter messages are formatted as "Urist McName, Occupation: It was inevitable."
if i, j := strings.Index(text, ", "), strings.Index(text, ": "); i > 0 && j > i {
ch <- text[j+2:] + "\n\u2014 " + text[:j]
}
}
}

50
it-was-inevitable/main.go Executable file
View File

@ -0,0 +1,50 @@
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"net/http"
)
func main() {
cleanup()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
go func() {
sigch := make(chan os.Signal, 1)
defer signal.Stop(sigch)
signal.Notify(sigch, syscall.SIGINT, syscall.SIGTERM)
select {
case sig := <-sigch:
log.Println(sig, "- cleaning up")
case <-ctx.Done():
}
cancel()
}()
buffer := &dataBuffer{
queue: make([]string, 0, maxQueuedLines),
}
ch := make(chan string)
go dwarfFortress(ctx, buffer, ch)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
select {
case <-r.Context().Done():
// Client went away before a message was available.
case line := <-ch:
// Abuse http.Error to just write a textual response.
http.Error(w, line, http.StatusOK)
}
})
http.ListenAndServe(":1556", nil)
}

24
it-was-inevitable/run.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
mode=$1
if [[ -z "$mode" ]]; then
echo 'No tag given. Changing command to ./run.bash example.'
mode=dev
fi
docker build -t benlubar/it_was_inevitable .
if [[ "$mode" == "dev" ]]; then
docker run --rm -ti \
--security-opt seccomp="$(pwd)/seccomp.json" \
-p 1556:8080 \
benlubar/it_was_inevitable
else
docker stop it_was_inevitable_ || :
docker rm -v it_was_inevitable_ || :
docker run -d --name it_was_inevitable_ \
--restart unless-stopped \
--security-opt seccomp="$(pwd)/seccomp.json" \
-p 1556:8080 \
benlubar/it_was_inevitable
fi

768
it-was-inevitable/seccomp.json Executable file
View File

@ -0,0 +1,768 @@
{
"defaultAction": "SCMP_ACT_ERRNO",
"archMap": [
{
"architecture": "SCMP_ARCH_X86_64",
"subArchitectures": [
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
]
},
{
"architecture": "SCMP_ARCH_AARCH64",
"subArchitectures": [
"SCMP_ARCH_ARM"
]
},
{
"architecture": "SCMP_ARCH_MIPS64",
"subArchitectures": [
"SCMP_ARCH_MIPS",
"SCMP_ARCH_MIPS64N32"
]
},
{
"architecture": "SCMP_ARCH_MIPS64N32",
"subArchitectures": [
"SCMP_ARCH_MIPS",
"SCMP_ARCH_MIPS64"
]
},
{
"architecture": "SCMP_ARCH_MIPSEL64",
"subArchitectures": [
"SCMP_ARCH_MIPSEL",
"SCMP_ARCH_MIPSEL64N32"
]
},
{
"architecture": "SCMP_ARCH_MIPSEL64N32",
"subArchitectures": [
"SCMP_ARCH_MIPSEL",
"SCMP_ARCH_MIPSEL64"
]
},
{
"architecture": "SCMP_ARCH_S390X",
"subArchitectures": [
"SCMP_ARCH_S390"
]
}
],
"syscalls": [
{
"names": [
"accept",
"accept4",
"access",
"adjtimex",
"alarm",
"bind",
"brk",
"capget",
"capset",
"chdir",
"chmod",
"chown",
"chown32",
"clock_getres",
"clock_gettime",
"clock_nanosleep",
"close",
"connect",
"copy_file_range",
"creat",
"dup",
"dup2",
"dup3",
"epoll_create",
"epoll_create1",
"epoll_ctl",
"epoll_ctl_old",
"epoll_pwait",
"epoll_wait",
"epoll_wait_old",
"eventfd",
"eventfd2",
"execve",
"execveat",
"exit",
"exit_group",
"faccessat",
"fadvise64",
"fadvise64_64",
"fallocate",
"fanotify_mark",
"fchdir",
"fchmod",
"fchmodat",
"fchown",
"fchown32",
"fchownat",
"fcntl",
"fcntl64",
"fdatasync",
"fgetxattr",
"flistxattr",
"flock",
"fork",
"fremovexattr",
"fsetxattr",
"fstat",
"fstat64",
"fstatat64",
"fstatfs",
"fstatfs64",
"fsync",
"ftruncate",
"ftruncate64",
"futex",
"futimesat",
"getcpu",
"getcwd",
"getdents",
"getdents64",
"getegid",
"getegid32",
"geteuid",
"geteuid32",
"getgid",
"getgid32",
"getgroups",
"getgroups32",
"getitimer",
"getpeername",
"getpgid",
"getpgrp",
"getpid",
"getppid",
"getpriority",
"getrandom",
"getresgid",
"getresgid32",
"getresuid",
"getresuid32",
"getrlimit",
"get_robust_list",
"getrusage",
"getsid",
"getsockname",
"getsockopt",
"get_thread_area",
"gettid",
"gettimeofday",
"getuid",
"getuid32",
"getxattr",
"inotify_add_watch",
"inotify_init",
"inotify_init1",
"inotify_rm_watch",
"io_cancel",
"ioctl",
"io_destroy",
"io_getevents",
"ioprio_get",
"ioprio_set",
"io_setup",
"io_submit",
"ipc",
"kill",
"lchown",
"lchown32",
"lgetxattr",
"link",
"linkat",
"listen",
"listxattr",
"llistxattr",
"_llseek",
"lremovexattr",
"lseek",
"lsetxattr",
"lstat",
"lstat64",
"madvise",
"memfd_create",
"mincore",
"mkdir",
"mkdirat",
"mknod",
"mknodat",
"mlock",
"mlock2",
"mlockall",
"mmap",
"mmap2",
"mprotect",
"mq_getsetattr",
"mq_notify",
"mq_open",
"mq_timedreceive",
"mq_timedsend",
"mq_unlink",
"mremap",
"msgctl",
"msgget",
"msgrcv",
"msgsnd",
"msync",
"munlock",
"munlockall",
"munmap",
"nanosleep",
"newfstatat",
"_newselect",
"open",
"openat",
"pause",
"pipe",
"pipe2",
"poll",
"ppoll",
"prctl",
"pread64",
"preadv",
"preadv2",
"prlimit64",
"pselect6",
"pwrite64",
"pwritev",
"pwritev2",
"read",
"readahead",
"readlink",
"readlinkat",
"readv",
"recv",
"recvfrom",
"recvmmsg",
"recvmsg",
"remap_file_pages",
"removexattr",
"rename",
"renameat",
"renameat2",
"restart_syscall",
"rmdir",
"rt_sigaction",
"rt_sigpending",
"rt_sigprocmask",
"rt_sigqueueinfo",
"rt_sigreturn",
"rt_sigsuspend",
"rt_sigtimedwait",
"rt_tgsigqueueinfo",
"sched_getaffinity",
"sched_getattr",
"sched_getparam",
"sched_get_priority_max",
"sched_get_priority_min",
"sched_getscheduler",
"sched_rr_get_interval",
"sched_setaffinity",
"sched_setattr",
"sched_setparam",
"sched_setscheduler",
"sched_yield",
"seccomp",
"select",
"semctl",
"semget",
"semop",
"semtimedop",
"send",
"sendfile",
"sendfile64",
"sendmmsg",
"sendmsg",
"sendto",
"setfsgid",
"setfsgid32",
"setfsuid",
"setfsuid32",
"setgid",
"setgid32",
"setgroups",
"setgroups32",
"setitimer",
"setpgid",
"setpriority",
"setregid",
"setregid32",
"setresgid",
"setresgid32",
"setresuid",
"setresuid32",
"setreuid",
"setreuid32",
"setrlimit",
"set_robust_list",
"setsid",
"setsockopt",
"set_thread_area",
"set_tid_address",
"setuid",
"setuid32",
"setxattr",
"shmat",
"shmctl",
"shmdt",
"shmget",
"shutdown",
"sigaltstack",
"signalfd",
"signalfd4",
"sigreturn",
"socket",
"socketcall",
"socketpair",
"splice",
"stat",
"stat64",
"statfs",
"statfs64",
"statx",
"symlink",
"symlinkat",
"sync",
"sync_file_range",
"syncfs",
"sysinfo",
"syslog",
"tee",
"tgkill",
"time",
"timer_create",
"timer_delete",
"timerfd_create",
"timerfd_gettime",
"timerfd_settime",
"timer_getoverrun",
"timer_gettime",
"timer_settime",
"times",
"tkill",
"truncate",
"truncate64",
"ugetrlimit",
"umask",
"uname",
"unlink",
"unlinkat",
"utime",
"utimensat",
"utimes",
"vfork",
"vmsplice",
"wait4",
"waitid",
"waitpid",
"write",
"writev"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 0,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 8,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 131072,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 131080,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 262144,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "[ADDR_NO_RANDOMIZE] Allow disabling ASLR (Address Space Layout Randomization), which DFHack needs in order to run.",
"includes": {},
"excludes": {}
},
{
"names": [
"personality"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 4294967295,
"valueTwo": 0,
"op": "SCMP_CMP_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {}
},
{
"names": [
"sync_file_range2"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"arches": [
"ppc64le"
]
},
"excludes": {}
},
{
"names": [
"arm_fadvise64_64",
"arm_sync_file_range",
"sync_file_range2",
"breakpoint",
"cacheflush",
"set_tls"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"arches": [
"arm",
"arm64"
]
},
"excludes": {}
},
{
"names": [
"arch_prctl"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"arches": [
"amd64",
"x32"
]
},
"excludes": {}
},
{
"names": [
"modify_ldt"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"arches": [
"amd64",
"x32",
"x86"
]
},
"excludes": {}
},
{
"names": [
"s390_pci_mmio_read",
"s390_pci_mmio_write",
"s390_runtime_instr"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"arches": [
"s390",
"s390x"
]
},
"excludes": {}
},
{
"names": [
"open_by_handle_at"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_DAC_READ_SEARCH"
]
},
"excludes": {}
},
{
"names": [
"bpf",
"clone",
"fanotify_init",
"lookup_dcookie",
"mount",
"name_to_handle_at",
"perf_event_open",
"quotactl",
"setdomainname",
"sethostname",
"setns",
"umount",
"umount2",
"unshare"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_ADMIN"
]
},
"excludes": {}
},
{
"names": [
"clone"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 0,
"value": 2080505856,
"valueTwo": 0,
"op": "SCMP_CMP_MASKED_EQ"
}
],
"comment": "",
"includes": {},
"excludes": {
"caps": [
"CAP_SYS_ADMIN"
],
"arches": [
"s390",
"s390x"
]
}
},
{
"names": [
"clone"
],
"action": "SCMP_ACT_ALLOW",
"args": [
{
"index": 1,
"value": 2080505856,
"valueTwo": 0,
"op": "SCMP_CMP_MASKED_EQ"
}
],
"comment": "s390 parameter ordering for clone is different",
"includes": {
"arches": [
"s390",
"s390x"
]
},
"excludes": {
"caps": [
"CAP_SYS_ADMIN"
]
}
},
{
"names": [
"reboot"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_BOOT"
]
},
"excludes": {}
},
{
"names": [
"chroot"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_CHROOT"
]
},
"excludes": {}
},
{
"names": [
"delete_module",
"init_module",
"finit_module",
"query_module"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_MODULE"
]
},
"excludes": {}
},
{
"names": [
"acct"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_PACCT"
]
},
"excludes": {}
},
{
"names": [
"kcmp",
"process_vm_readv",
"process_vm_writev",
"ptrace"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_PTRACE"
]
},
"excludes": {}
},
{
"names": [
"iopl",
"ioperm"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_RAWIO"
]
},
"excludes": {}
},
{
"names": [
"settimeofday",
"stime",
"clock_settime"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_TIME"
]
},
"excludes": {}
},
{
"names": [
"vhangup"
],
"action": "SCMP_ACT_ALLOW",
"args": [],
"comment": "",
"includes": {
"caps": [
"CAP_SYS_TTY_CONFIG"
]
},
"excludes": {}
}
]
}

11
log.ts Normal file
View File

@ -0,0 +1,11 @@
import chalk from "chalk"
import { format } from "date-fns"
const rawLog = (level, main) => {
const timestamp = format(new Date(), "HH:mm:ss")
console.log(chalk`{bold ${timestamp}} ${level} ${main}`)
}
export const info = x => rawLog(chalk.black.bgBlueBright("INFO"), x)
export const warning = x => rawLog(chalk.black.bgKeyword("orange")("WARN"), x)
export const error = x => rawLog(chalk.black.bgRedBright("FAIL"), x)

30
luamin-api.js Executable file
View File

@ -0,0 +1,30 @@
const express = require("express")
const luamin = require("luamin")
const app = express()
app.use(function(req, res, next) {
var data = ''
req.setEncoding('utf8')
req.on('data', chunk => {
data += chunk
})
req.on('end', () => {
req.body = data
next()
})
});
app.post("*", (req, res) => {
console.log("Input length:", req.body.length)
try {
const min = luamin.minify(req.body)
console.log("Output length:", min.length)
res.send(min)
} catch(e) {
res.status(400).send(e.toString())
}
res.end()
})
app.listen(12432)

253
naming.elm Executable file
View File

@ -0,0 +1,253 @@
module RandomNames exposing (..)
import List.Nonempty as Nonempty
-- Docker container name generator lists + Ubuntu release names
adjectives =
[ "admiring"
, "adoring"
, "affectionate"
, "agitated"
, "amazing"
, "angry"
, "artful"
, "awesome"
, "blissful"
, "boring"
, "brave"
, "breezy"
, "clever"
, "cocky"
, "compassionate"
, "competent"
, "condescending"
, "confident"
, "crafty"
, "cranky"
, "dapper"
, "dazzling"
, "determined"
, "distracted"
, "dreamy"
, "eager"
, "ecstatic",
, "edgy"
, "elastic"
, "elated"
, "elegant"
, "eloquent"
, "epic"
, "feisty"
, "fervent"
, "festive"
, "flamboyant"
, "focused"
, "friendly"
, "frosty"
, "gallant"
, "gifted"
, "goofy"
, "gracious"
, "gutsy"
, "happy"
, "hardcore"
, "hardy"
, "heuristic"
, "hoary"
, "hopeful"
, "hungry"
, "infallible"
, "inspiring"
, "intrepid"
, "jaunty"
, "jolly"
, "jovial"
, "karmic"
, "keen"
, "kind"
, "laughing"
, "loving"
, "lucid"
, "maverick"
, "mystifying"
, "modest"
, "musing"
, "naughty"
, "nervous"
, "natty"
, "nifty"
, "nostalgic"
, "objective"
, "oneiric"
, "optimistic"
, "peaceful"
, "pedantic"
, "pensive"
, "practical"
, "precise"
, "priceless"
, "quantal"
, "quirky"
, "quizzical"
, "raring"
, "relaxed"
, "reverent"
, "romantic"
, "sad"
, "saucy"
, "serene"
, "sharp"
, "silly"
, "sleepy"
, "stoic"
, "stupefied"
, "suspicious"
, "tender"
, "thirsty"
, "trusty"
, "trusting"
, "unruffled"
, "upbeat"
, "utopic"
, "vibrant"
, "vigilant"
, "vigorous"
, "vivid"
, "warty"
, "wily"
, "wizardly"
, "wonderful"
, "xenial"
, "xenodochial"
, "yakkety"
, "youthful"
, "zealous"
, "zesty"
, "zen"
]
-- http://www.birdphotography.com/birdlist2.html
birds =
[ "albatross"
, "auklet"
, "bittern"
, "blackbird"
, "bluebird"
, "booby"
, "bunting"
, "chickadee"
, "cormorant"
, "cowbird"
, "crow"
, "dove"
, "dowitcher"
, "duck"
, "eagle"
, "egret"
, "falcon"
, "finch"
, "flycatcher"
, "gallinule"
, "gnatcatcher"
, "godwit"
, "goldeneye"
, "goldfinch"
, "goose"
, "grackle"
, "grebe"
, "grosbeak"
, "gull"
, "hawk"
, "heron"
, "hummingbird"
, "ibis"
, "jaeger"
, "jay"
, "junco"
, "kingbird"
, "kinglet"
, "kite"
, "loon"
, "magpie"
, "meadowlark"
, "merganser"
, "murrelet"
, "nuthatch"
, "oriole"
, "owl"
, "pelican"
, "petrel"
, "pewee"
, "phalarope"
, "phoebe"
, "pigeon"
, "pipit"
, "plover"
, "puffin"
, "quail"
, "rail"
, "raven"
, "redstart"
, "sandpiper"
, "sapsucker"
, "scaup"
, "scoter"
, "shearwater"
, "shrike"
, "skua"
, "sparrow"
, "storm-petrel"
, "swallow"
, "swift"
, "tanager"
, "teal"
, "tern"
, "thrasher"
, "thrush"
, "titmouse"
, "towhee"
, "turnstone"
, "vireo"
, "vulture"
, "warbler"
, "wigeon"
, "woodpecker"
, "wren"
, "yellowlegs"
]
greekLetters =
[ "alpha"
, "beta"
, "gamma"
, "delta"
, "epsilon"
, "zeta"
, "eta"
, "theta"
, "iota"
, "kappa"
, "lambda"
, "mu"
, "nu"
, "xi"
, "omicron"
, "pi"
, "rho"
, "sigma"
, "tau"
, "upsilon"
, "phi"
, "chi"
, "psi"
, "omega"
]
pick : List a -> Random.Generator a
pick =
Nonempty.fromList >> Nonempty.sample
name : String -> List (List String) -> Random.Generator String
name separator lists =
List.map pick lists
|> String.join separator

1
realtau.txt Executable file

File diff suppressed because one or more lines are too long

55
thesaurwhy.py Executable file
View File

@ -0,0 +1,55 @@
from requests_futures.sessions import FuturesSession
import concurrent.futures as futures
import random
try:
import cPickle as pickle
except ImportError:
import pickle
try:
words_to_synonyms = pickle.load(open(".wtscache"))
synonyms_to_words = pickle.load(open(".stwcache"))
except:
words_to_synonyms = {}
synonyms_to_words = {}
def add_to_key(d, k, v):
d[k] = d.get(k, set()).union(set(v))
def add_synonyms(syns, word):
for syn in syns:
add_to_key(synonyms_to_words, syn, [word])
add_to_key(words_to_synonyms, word, syns)
def concat(list_of_lists):
return sum(list_of_lists, [])
def add_words(words):
s = FuturesSession(max_workers=100)
future_to_word = {s.get("https://api.datamuse.com/words", params={"ml": word}): word for word in words}
future_to_word.update({s.get("https://api.datamuse.com/words", params={"ml": word, "v": "enwiki"}): word for word in words})
for future in futures.as_completed(future_to_word):
word = future_to_word[future]
try:
data = future.result().json()
except Exception as exc:
print(f"{exc} fetching {word}")
else:
add_synonyms([w["word"] for w in data], word)
def getattr_hook(obj, key):
results = list(synonyms_to_words.get(key, set()).union(words_to_synonyms.get(key, set())))
if len(results) > 0:
return obj.__getattribute__(random.choice(results))
else:
raise AttributeError(f"Attribute {key} not found.")
def wrap(obj):
add_words(dir(obj))
obj.__getattr__ = lambda key: getattr_hook(obj, key)
wrap(__builtins__)
print(words_to_synonyms["Exception"])
raise __builtins__.quibble("abcd")

12
unhex.py Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env python3
import fileinput
import sys
def process_char(c):
return c + random.choice(zalgo)
for line in fileinput.input():
#b = bytes()
#for i in range(0, len(line), 2):
# b.appendline[i:i+2]
sys.stdout.buffer.write(bytes.fromhex(line.replace("\n", "").replace(" ", "")))

106
wpdumpidx.rs Normal file
View File

@ -0,0 +1,106 @@
use rusqlite::types::ToSql;
use rusqlite::{params, Connection};
use std::io::BufRead;
use lazy_static::lazy_static;
use regex::Regex;
use std::io::Seek;
lazy_static! {
static ref INDEX_LINE_RE: Regex = Regex::new(r"^(\d+):(\d+):(.+)$").unwrap();
}
fn decompress_file(filename: &str) -> std::io::Result<std::io::BufReader<bzip2::bufread::BzDecoder<std::io::BufReader<std::fs::File>>>> {
let file = std::fs::File::open(filename)?;
let file = std::io::BufReader::new(file);
let file = bzip2::bufread::BzDecoder::new(file);
Ok(std::io::BufReader::new(file))
}
fn import(filename: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
let file = decompress_file(filename)?;
let tx = conn.transaction()?;
tx.execute("DELETE FROM page_locations", params![])?;
for line in file.lines() {
let line = &(line)?;
let caps = INDEX_LINE_RE.captures(line).unwrap();
let title = String::from(caps.get(3).unwrap().as_str());
let start = caps.get(1).unwrap().as_str().parse::<i64>()?;
tx.execute("INSERT INTO page_locations (title, start) VALUES (?1, ?2)", params![title, start])?;
}
tx.commit()?;
conn.execute("VACUUM", params![])?;
Ok(())
}
fn view(page: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
let result: Option<rusqlite::Result<i64>> = conn.prepare("SELECT start FROM page_locations WHERE title = ?1")?.query_map(params![page], |row| {
Ok(row.get(0)?)
})?.nth(0);
match result {
Some(start) => {
let start = start?;
let file = std::fs::File::open("data.bz2")?;
let mut file = std::io::BufReader::new(file);
file.seek(std::io::SeekFrom::Start(start as u64))?;
let file = bzip2::bufread::BzDecoder::new(file);
let file = std::io::BufReader::new(file);
for result in parse_mediawiki_dump::parse(file) {
match result {
Err(error) => {
eprintln!("Parse Error: {}", error);
break;
},
Ok(page) => if page.namespace == 0 && match &page.format {
None => false,
Some(format) => format == "text/x-wiki"
} && match &page.model {
None => false,
Some(model) => model == "wikitext"
} {
println!(
"The page {title:?} is an ordinary article with byte length {length}.",
title = page.title,
length = page.text.len()
);
} else {
println!("The page {:?} has something special to it.", page.title);
}
}
}
},
None => {
eprintln!("{} not found", page);
}
};
Ok(())
}
fn main() -> Result<(), Box<std::error::Error>> {
let mut conn = Connection::open("database.sqlite")?;
conn.execute(
"CREATE TABLE IF NOT EXISTS page_locations (
title TEXT PRIMARY KEY,
start INTEGER
)",
params![],
)?;
let args: Vec<String> = std::env::args().collect();
match args[1].as_str() {
"import" => import("index.bz2", &mut conn)?,
"view" => view(&args[2], &mut conn)?,
_ => eprintln!("Invalid argument {}", args[1])
};
Ok(())
}

37
wssh.py Executable file
View File

@ -0,0 +1,37 @@
import asyncio
import asyncio.subprocess
import websockets
import pty
def get_shell():
pty.spawn("/bin/fish")
return asyncio.create_subprocess_exec("/bin/fish", stdout=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, bufsize = 0)
async def input_handler(proc, ws):
while True:
msg = await ws.recv()
await ws.send(msg)
print(msg)
async def output_handler(proc, ws):
while True:
output = (await proc.stdout.readline()).decode("utf-8")
if output != "":
print(output)
await ws.send(output)
await ws.send("[PROCESS ENDED]")
async def shell_ws(ws, _):
proc = await get_shell()
done, pending = await asyncio.wait(
[asyncio.ensure_future(input_handler(proc, ws)), asyncio.ensure_future(output_handler(proc, ws))],
return_when=asyncio.FIRST_COMPLETED
)
for task in pending:
task.cancel()
server = websockets.serve(shell_ws, "localhost", 1234)
asyncio.get_event_loop().run_until_complete(server)
asyncio.get_event_loop().run_forever()