Tmux:
Vimrc:
xmonad:
zshrc:
sitecustomize: use Linux paths
tmux zsh plugin:
IIGFHQBUY3EF2A2WZQ2P32HCGJNNEBEIMBAUUVVY3GURRH6JGPJAC
WYODGFC5HQ73OSRTMGFQ64X6ER3HQT5TAW27TH7ZEFJD3JE66QWQC
4VZKUDKGREGRTRYWSPLUEFJZQFWFSFTKVGKENUGBQHVRG3K5JHHQC
GEGZ4QWZRRB6JCJ2ZZF6FT2EI5RZ26ZPXOYOT7XSJHCBSG7OTBSQC
TZW2OC47P423ZY2LWMBVLAPEPJF6MXUGN63YQQBPAF6JG3W7WMDAC
G2KAXXJOUGPQ2BHKTCMZXOMDVSZPZIIA7JCYPCH5GKPWALIBSRVAC
7D3UWWCLQTNHLYKMORXCRHAH3NWV3C3Q2XHZH44CMXLWFDGKG4CQC
GYCQG6LZQ3CALPOMOGV4KWDDYSWHQHMANY47O4AFARFVTU7DPCNQC
NLM7RUDTNDVPJK2JELSMKF7UR435LHIDBU3FEQL5XUJVATTES42QC
U6B4KEINSCX7K46ULMCMUQINMAW7CVQKHVV4DF3WDFMZXP6AB6ZQC
YR2TRQQAEELAEJLABFCOMUZRYEQE5Q5NIGQFQHQKB7MWM63JZUPQC
WUTLDZ45C2Q6X72A3QQ2SEX2MRWOTW4WFYGW7655WECZRX4OHD6AC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
LLW2FQPVXSBPFNZ3AHXRNLKNPV626QR32TTW53YHTKJTWK2YOUMAC
YV3JNCHDYZYHHCSCA5EP4AB3JY7Z77UGR5BAJDONOUDMWQZYULCQC
IMMB6ZKLCUL7UEXN4RGAGXWFIEOAYGBZ73C3R3G2XZX72D4RFMBAC
HHLCJKAQVBFPGDR6ZYIAXRNFBESUNXGKFPFUD2CMYZ6DWC3THI7AC
RCTW4VQVWMZEYSBORRWDV6OPIE63XTYOWYZUADF37S26CLQSBVBQC
XPUW7ZNKIKNUQSCPNU3DT4W4ADHJY3XN5FSK2SNJWLUDVCWIVP5QC
4262KCJHLNE3XCYS2ABUYK7G25SZ7IKMDGWILUS2CU26GFMECPDQC
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._]=** r:|=**'
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[-._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[-._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[-._]=** r:|=**' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[-._]=** r:|=**'
if [[ -e bin/activate ]]; then
echo "sourcing local env: `pwd`/bin/activate"
source bin/activate
else
env=$1
pushd $HOME/python_envs/ > /dev/null
venv=.
if [[ -e bin/activate ]]; then
echo "sourcing local env: `pwd`/bin/activate"
elif [[ -e venv/bin/activate ]]; then
echo "sourcing local env: `pwd`/venv/bin/activate"
venv=venv
else
env=$1
pushd $HOME/python_envs/ > /dev/null
venv="$PWD/$env"
popd
if [[ $env == "" ]]; then
counter=1
typeset -A choices
unset choice
for x in `ls`; do
echo $counter\) $x
choices[$counter]=$x
(( counter++ ))
done
echo -n "your choice? "
choice=-1
read choice
if [[ $choice == "" ]]; then
return
fi
env=$choices[$choice]
echo "you chose $env"
fi
source $env/bin/activate
popd > /dev/null
fi
if [[ $env == "" ]]; then
counter=1
typeset -A choices
unset choice
for x in `ls "$venv"`; do
echo $counter\) `basename $x`
choices[$counter]=$x
(( counter++ ))
done
echo -n "your choice? "
choice=-1
read choice
if [[ $choice == "" ]]; then
return
fi
venv="$venv/$choices[$choice]"
echo "you chose $venv"
fi
fi
source $venv/bin/activate
unset venv env;
manageScratchPad :: ManageHook
manageScratchPad = namedScratchpadManageHook scratchpads
scratchpads :: [NamedScratchpad]
scratchpads = [
-- run htop in xterm, find it by title, use default floating window placement
NS "htop" "xterm -e htop" (title =? "htop") floatStyle ,
NS "mutt" "xterm -e mutt" (title =? "mutt") floatStyle ,
NS "mcabber" "xterm -e mcabber" (title =? "mcabber") floatStyle ,
NS "irc" "xterm -e irssi" (title =? "irssi") floatStyle ,
NS "mpc" "stterm -c mpc -e ncmpcpp" (className =? "ncmpcpp") floatStyle ,
-- run gvim, find by role
NS "notes" "bash -c 'cd $HOME/mywiki; source /usr/local/share/chruby/chruby.sh; chruby 2.2.2; SOYWIKI_VIM=\"gvim --role notes\" /home/edwlan/.gem/ruby/2.2.2/bin/soywiki'" (role =? "notes") floatStyle
] where cls = stringProperty "WM_WINDOW_CLASS"
role = stringProperty "WM_WINDOW_ROLE"
floatStyle = customFloating $ W.RationalRect l t w h
w = 1 -- terminal height, 10%
h = 0.3333 -- terminal width, 100%
t = 0.015 -- distance from top edge, 90%
l = 0 -- distance from left edge, 0%
(((mod4Mask .|. controlMask, xK_q ),
spawn "if type xmonad; then xmonad --recompile && xmonad --restart; else xmessage xmonad not in \\$PATH: \"$PATH\"; fi")),
((mod4Mask .|. shiftMask, xK_backslash), maximizeSwitch),
((mod4Mask .|. controlMask, xK_backslash), maximizeFlop),
((mod4Mask, xK_backslash), withFocused (sendMessage . maximizeRestore)),
((mod4Mask .|. controlMask, numPadKeys !! 1), shiftNSwitch windows "web" ),
((mod4Mask .|. controlMask, numPadKeys !! 2), shiftNSwitch windows "terminal" ),
((mod4Mask .|. controlMask, numPadKeys !! 3), shiftNSwitch windows "1" ),
((mod4Mask .|. controlMask, numPadKeys !! 4), shiftNSwitch windows "2" ),
((mod4Mask .|. controlMask, numPadKeys !! 5), shiftNSwitch windows "3" ),
((mod4Mask .|. controlMask, numPadKeys !! 6), shiftNSwitch windows "4" ),
((mod4Mask .|. controlMask, numPadKeys !! 7), shiftNSwitch windows "5" ),
((mod4Mask .|. controlMask, numPadKeys !! 8), shiftNSwitch windows "6" ),
((mod4Mask .|. controlMask, numPadKeys !! 9), shiftNSwitch windows "images" ),
((mod4Mask .|. controlMask, xK_k), killAllOtherCopies),
((mod4Mask .|. controlMask, xK_1), shiftNSwitch windows "web" ),
((mod4Mask .|. controlMask, xK_2), shiftNSwitch windows "terminal" ),
((mod4Mask .|. controlMask, xK_3), shiftNSwitch windows "1" ),
((mod4Mask .|. controlMask, xK_4), shiftNSwitch windows "2" ),
((mod4Mask .|. controlMask, xK_5), shiftNSwitch windows "3" ),
((mod4Mask .|. controlMask, xK_6), shiftNSwitch windows "4" ),
((mod4Mask .|. controlMask, xK_7), shiftNSwitch windows "5" ),
((mod4Mask .|. controlMask, xK_8), shiftNSwitch windows "6" ),
((mod4Mask .|. controlMask, xK_9), shiftNSwitch windows "images" ),
((mod4Mask .|. controlMask, xK_backslash), maximizeFlop),
((mod4Mask .|. controlMask, xK_grave), shiftNSwitch windows "IM" ),
((mod4Mask .|. controlMask, numPadKeys !! 1), shiftNSwitch windows "web" ),
((mod4Mask .|. controlMask, numPadKeys !! 2), shiftNSwitch windows "terminal" ),
((mod4Mask .|. controlMask, numPadKeys !! 3), shiftNSwitch windows "1" ),
((mod4Mask .|. controlMask, numPadKeys !! 4), shiftNSwitch windows "2" ),
((mod4Mask .|. controlMask, numPadKeys !! 5), shiftNSwitch windows "3" ),
((mod4Mask .|. controlMask, numPadKeys !! 6), shiftNSwitch windows "4" ),
((mod4Mask .|. controlMask, numPadKeys !! 7), shiftNSwitch windows "5" ),
((mod4Mask .|. controlMask, numPadKeys !! 8), shiftNSwitch windows "6" ),
((mod4Mask .|. controlMask, numPadKeys !! 9), shiftNSwitch windows "images" ),
((mod4Mask, xK_1), switchWorkspace "web" ),
((mod4Mask, xK_2), switchWorkspace "terminal" ),
((mod4Mask, xK_3), switchWorkspace "1" ),
((mod4Mask, xK_4), switchWorkspace "2" ),
((mod4Mask, xK_5), switchWorkspace "3" ),
((mod4Mask, xK_6), switchWorkspace "4" ),
((mod4Mask, xK_7), switchWorkspace "5" ),
((mod4Mask, xK_8), switchWorkspace "6" ),
((mod4Mask, xK_9), switchWorkspace "images" ),
((mod4Mask, xK_grave), switchWorkspace "IM" ),
((mod4Mask .|. shiftMask, xK_grave), shiftNSwitch windows "IM" ),
((mod4Mask .|. controlMask, xK_1), shiftNSwitch windows "web" ),
((mod4Mask .|. controlMask, xK_2), shiftNSwitch windows "terminal" ),
((mod4Mask .|. controlMask, xK_3), shiftNSwitch windows "1" ),
((mod4Mask .|. controlMask, xK_4), shiftNSwitch windows "2" ),
((mod4Mask .|. controlMask, xK_5), shiftNSwitch windows "3" ),
((mod4Mask .|. controlMask, xK_6), shiftNSwitch windows "4" ),
((mod4Mask .|. controlMask, xK_7), shiftNSwitch windows "5" ),
((mod4Mask .|. controlMask, xK_8), shiftNSwitch windows "6" ),
((mod4Mask .|. controlMask, xK_9), shiftNSwitch windows "images" ),
((mod4Mask .|. controlMask, xK_grave), shiftNSwitch windows "IM" ),
((mod4Mask .|. shiftMask, xK_backslash), maximizeSwitch),
((mod4Mask, xK_1), switchWorkspace "web" ),
((mod4Mask, xK_2), switchWorkspace "terminal" ),
((mod4Mask, xK_3), switchWorkspace "1" ),
((mod4Mask, xK_4), switchWorkspace "2" ),
((mod4Mask, xK_5), switchWorkspace "3" ),
((mod4Mask, xK_6), switchWorkspace "4" ),
((mod4Mask, xK_7), switchWorkspace "5" ),
((mod4Mask, xK_8), switchWorkspace "6" ),
((mod4Mask, xK_9), switchWorkspace "images" ),
--((mod4Mask, xK_apostrophe), scratchpadSpawnActionTerminal "gvim"),
((mod4Mask, xK_backslash), withFocused (sendMessage . maximizeRestore)),
((mod4Mask, xK_KP_Subtract), spawn "/usr/bin/zsh /home/edwlan/bin/dmenu_queueplay_mpd"),
((mod4Mask, xK_KP_Multiply), spawn "/usr/bin/zsh /home/edwlan/bin/dmenu_queue_mpd"),
((mod4Mask, xK_KP_Divide), spawn "/usr/bin/zsh /home/edwlan/bin/dmenu_play_mpd"),
--((mod4Mask, xK_grave), scratchpadSpawnActionTerminal "urxvt"),
{-((mod4Mask, xK_grave), switchWorkspace "IM" ),-}
] ++ zip (zip (repeat (mod4Mask)) ([xK_0])) (map (withNthWorkspace greedyView) [0..]) ++
zip (zip (repeat (mod4Mask .|. shiftMask)) ([xK_0])) (map (withNthWorkspace copy) [0..])
++ zip (zip (repeat (mod4Mask)) (map (numPadKeys !!) ([0]))) (map (withNthWorkspace greedyView) [0..])
)
]
++ zip (zip (repeat (mod4Mask)) ([xK_0])) (map (withNthWorkspace greedyView) [0..])
++ zip (zip (repeat (mod4Mask .|. shiftMask)) ([xK_0])) (map (withNthWorkspace copy) [0..])
++ zip (zip (repeat (mod4Mask)) (map (numPadKeys !!) ([0]))) (map (withNthWorkspace greedyView) [0..])
++ [
((mod4Mask .|. mod1Mask, xK_1), namedScratchpadAction scratchpads "notes"),
((mod4Mask .|. mod1Mask, numPadKeys !! 1), namedScratchpadAction scratchpads "notes"),
((mod4Mask .|. mod1Mask, xK_2), namedScratchpadAction scratchpads "mutt"),
((mod4Mask .|. mod1Mask, numPadKeys !! 2), namedScratchpadAction scratchpads "mutt"),
((mod4Mask .|. mod1Mask, xK_3), namedScratchpadAction scratchpads "irc"),
((mod4Mask .|. mod1Mask, numPadKeys !! 3), namedScratchpadAction scratchpads "irc"),
((mod4Mask .|. mod1Mask, xK_4), namedScratchpadAction scratchpads "htop"),
((mod4Mask .|. mod1Mask, numPadKeys !! 4), namedScratchpadAction scratchpads "htop"),
((mod4Mask .|. mod1Mask, xK_5), namedScratchpadAction scratchpads "mpc"),
((mod4Mask .|. mod1Mask, numPadKeys !! 5), namedScratchpadAction scratchpads "mpc"),
((mod4Mask .|. mod1Mask, xK_6), namedScratchpadAction scratchpads "mcabber"),
((mod4Mask .|. mod1Mask, numPadKeys !! 6), namedScratchpadAction scratchpads "mcabber")
])
http://clean.cs.ru.nl" This goes here in case a filetype overrides it
let counter = 0
let g:syntastic_auto_loc_list=1
let g:sql_type_default = 'pgsql'
let g:airline_theme="murmur"
let g:haddock_browser_callformat = "%s %s"
let g:haddock_browser = "open"
let g:lisp_rainbow=1
let g:pandoc_no_empty_implicits=1
let g:pandoc_use_hard_wraps = 1
let g:pandoc#modules#enabled = ["formatting", "folding", "completion", "metadata","menu"]
let g:pandoc#modules#disabled = ["command", "bibliographies"]
let g:pandoc_formatting_settings = "h"
let g:pandoc#filetypes#handled = ["markdown", "rst", "textile"]
let g:slimv_disable_clojure=1
let g:snips_author="Edward Langley"
let g:solarized_termtrans=1
let g:syntastic_python_checkers = ['python']
let g:Tex_CompileRule_pdf = 'xelatex -interaction=nonstopmode $*'
let g:tex_flavor='xelatex'
let g:unite_force_overwrite_statusline = 0
let g:vimclojure#HighlightBuiltins = 1
let g:vimclojure#HighlightBuiltins = 1
let g:vimclojure#ParenRainbow = 1
let g:vimclojure#ParenRainbow = 1
let g:virtualenv_directory = "$HOME/python_envs"
let g:phpcomplete_index_composer_command = "composer"
let maplocalleader=','
let $PAGER=''
let python_highlight_all = 1
let python_no_tab_space_error=1
let python_space_errors=1
let vimclojure#WantNailgun = 1
let g:syntastic_scss_sass_args = "-r sass-css-importer -r susy"
" This goes here in case a filetype overrides it
autocmd BufRead *.mako set ft=mako
autocmd BufRead *.md set dictionary+=/usr/share/dict/words
autocmd BufRead,BufNewFile *.twig set filetype=htmljinja
autocmd BufRead,BufNewFile *.mako set ft=mako
autocmd BufRead,BufNewFile *.md set dictionary+=/usr/share/dict/words
autocmd BufRead *.tac set ft=python
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
autocmd BufRead,BufNewFile *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufRead,BufNewFile *.tac set ft=python
autocmd FileType haskell set omnifunc=necoghc#omnifunc
autocmd FileType lisp set omnifunc=SlimvOmniComplete
" when we reload, tell vim to restore the cursor to the saved position
imap <C-g> :Unite outline -buffer-name=outline -resume -start-insert
imap <F7> :Unite outline -buffer-name=outline -resume -start-insert
imap <C-g> :Unite outline -buffer-name=outline -start-insert<CR>
imap <F7> :Unite outline -buffer-name=outline -start-insert<CR>
map <F7> :Unite outline -buffer-name=files -resume -start-insert
map <F8> o :,!pbpaste
map <F9> o :,!pbpaste
map <leader>f :Unite file -buffer-name=files -resume<CR>i
map <leader>q :Unite buffer -buffer-name=buffers -resume<CR>i
map <F7> :Unite outline -buffer-name=files -start-insert<CR>
map <F8> o :,!pbpaste<CR>
map <F9> o :,!pbpaste<CR>
map <leader>f :Unite file -buffer-name=files -start-insert<CR>
map <leader>q :Unite buffer -buffer-name=buffers -start-insert<CR>
" let g:unite_source_file_async_command =
" \ 'ag --follow --nocolor --nogroup --hidden -g ""'
" https://github.com/ggreer/the_silver_searcher
" Use ag in unite grep source.
" let g:unite_source_rec_async_command = 'ag --follow --nocolor --nogroup --hidden ' .
" \ '--ignore ''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
" \ '--ignore ''**/*.pyc'' -g ""'
let g:unite_source_grep_command = 'ag'
let g:unite_source_grep_default_opts =
\ '--line-numbers --nocolor --nogroup --hidden --ignore ' .
\ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
\ '--ignore ''**/*.pyc'''
let g:unite_source_grep_recursive_opt = ''
let g:unite_source_file_async_command =
\ 'ag --follow --nocolor --nogroup --hidden -g "" --ignore ''.sass-cache'''
"https://github.com/ggreer/the_silver_searcher
"Use ag in unite grep source.
let g:unite_source_rec_async_command = ['ag', '--follow', '--nocolor', '--nogroup', '--hidden', '-g', '', '--ignore', '.git', '--ignore', '.sass-cache']
"let g:unite_source_grep_command = 'ag'
"let g:unite_source_grep_default_opts =
" \ '--line-numbers --nocolor --nogroup --hidden --ignore ' .
" \ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
" \ '--ignore ''**/*.pyc'''
"let g:unite_source_grep_recursive_opt = ''
set -sg escape-time 0
let g:pandoc#modules#enabled = ["formatting", "folding", "completion", "metadata","menu"]
let g:pandoc#modules#disabled = ["command", "bibliographies"]
let g:pandoc_formatting_settings = "h"
let g:pandoc#filetypes#handled = ["markdown", "rst", "textile"]
let g:phpcomplete_index_composer_command = "composer"
autocmd! BufNewFile * silent! 0r ~/.vim/skel/tmpl.%:e
autocmd BufRead *.mako set ft=mako
autocmd BufRead *.md set dictionary+=/usr/share/dict/words
" when we reload, tell vim to restore the cursor to the saved position
"autocmd FileType python map K \pW
autocmd! BufNewFile * silent! 0r ~/.nvim/skel/tmpl.%:e
autocmd BufRead,BufNewFile *.twig set filetype=htmljinja
autocmd BufRead,BufNewFile *.mako set ft=mako
autocmd BufRead,BufNewFile *.md set dictionary+=/usr/share/dict/words
autocmd BufRead *.tac set ft=python
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufRead,BufNewFile *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufRead,BufNewFile *.tac set ft=python
autocmd bufwritepost * call Checkft()
"autocmd FileType python map K \pW
autocmd FileType python set complete+=k~/.vim/syntax/python.vim "isk+=.,(
autocmd FileType haskell set omnifunc=necoghc#omnifunc
autocmd FileType lisp set omnifunc=SlimvOmniComplete
" when we reload, tell vim to restore the cursor to the saved position
autocmd FileType python set complete+=k~/.nvim/syntax/python.vim "isk+=.,(
imap <C-g> :Unite outline -buffer-name=outline -resume -start-insert
imap <F7> :Unite outline -buffer-name=outline -resume -start-insert
imap <C-g> :Unite outline -buffer-name=outline -start-insert<CR>
imap <F7> :Unite outline -buffer-name=outline -start-insert<CR>
map <F7> :Unite outline -buffer-name=files -resume -start-insert
map <F8> o :,!pbpaste
map <F9> o :,!pbpaste
map <leader>f :Unite file -buffer-name=files -resume<CR>i
map <leader>q :Unite buffer -buffer-name=buffers -resume<CR>i
map <F7> :Unite outline -buffer-name=files -start-insert<CR>
map <F8> o :,!pbpaste<CR>
map <F9> o :,!pbpaste<CR>
map <leader>f :Unite file -buffer-name=files -start-insert<CR>
map <leader>q :Unite buffer -buffer-name=buffers -start-insert<CR>
"python << EOF
"import os
"import sys
"import vim
"for p in sys.path:
" if os.path.isdir(p):
" vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
"EOF
python << EOF
import os
import sys
import vim
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF
" let g:unite_source_file_async_command =
" \ 'ag --follow --nocolor --nogroup --hidden -g ""'
" https://github.com/ggreer/the_silver_searcher
" Use ag in unite grep source.
" let g:unite_source_rec_async_command = 'ag --follow --nocolor --nogroup --hidden ' .
" \ '--ignore ''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
" \ '--ignore ''**/*.pyc'' -g ""'
let g:unite_source_grep_command = 'ag'
let g:unite_source_grep_default_opts =
\ '--line-numbers --nocolor --nogroup --hidden --ignore ' .
\ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
\ '--ignore ''**/*.pyc'''
let g:unite_source_grep_recursive_opt = ''
let g:unite_source_file_async_command =
\ 'ag --follow --nocolor --nogroup --hidden -g "" --ignore ''.sass-cache'''
"https://github.com/ggreer/the_silver_searcher
"Use ag in unite grep source.
let g:unite_source_rec_async_command = ['ag', '--follow', '--nocolor', '--nogroup', '--hidden', '-g', '', '--ignore', '.git', '--ignore', '.sass-cache']
"let g:unite_source_grep_command = 'ag'
"let g:unite_source_grep_default_opts =
" \ '--line-numbers --nocolor --nogroup --hidden --ignore ' .
" \ '''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'' ' .
" \ '--ignore ''**/*.pyc'''
"let g:unite_source_grep_recursive_opt = ''
.vimrc.[0-9]*
*.old
.*.sw?
.xmonad/history
.xmonad/xmonad-x86_64-linux
.xmonad/xmonad.errors
.xmonad/xmonad.hi
.xmonad/xmonad.o