2013-08-08 02:54:11 +00:00
|
|
|
|
" Install Vundle Packages
|
|
|
|
|
filetype off
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
|
|
|
|
set rtp+=~/.vim/bundle/vundle/
|
|
|
|
|
call vundle#rc()
|
|
|
|
|
|
|
|
|
|
" let Vundle manage Vundle
|
|
|
|
|
" required!
|
|
|
|
|
Bundle 'gmarik/vundle'
|
|
|
|
|
|
|
|
|
|
" Rest of my bundles
|
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- File Nav --
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Quick find files in project
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'kien/ctrlp.vim'
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" File tree navigation
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'scrooloose/nerdtree'
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Switch to alternate file
|
|
|
|
|
Bundle 'a.vim'
|
|
|
|
|
" Allow opening to a line from file name using :
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'file-line'
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Git integration
|
2012-07-02 19:26:56 +00:00
|
|
|
|
Bundle 'tpope/vim-fugitive'
|
2012-07-02 17:25:36 +00:00
|
|
|
|
" Needs Vim compiled with Ruby
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Quick find files in project
|
2013-10-27 16:25:27 +00:00
|
|
|
|
Bundle 'wincent/Command-T'
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- Buffer Nav --
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Quick buffer switching
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'sandeepcr529/Buffet.vim'
|
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- Nav in file --
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Ctags file parsing
|
2013-08-08 02:54:11 +00:00
|
|
|
|
Bundle 'majutsushi/tagbar'
|
2013-01-23 19:33:05 +00:00
|
|
|
|
" Syntax checking
|
|
|
|
|
Bundle 'scrooloose/syntastic'
|
|
|
|
|
" Project Searching
|
|
|
|
|
Bundle 'mileszs/ack.vim'
|
2013-12-03 23:05:29 +00:00
|
|
|
|
Bundle 'rking/ag.vim'
|
2013-01-23 19:33:05 +00:00
|
|
|
|
" Easy Toggle of QuickFix window
|
2013-07-30 19:40:43 +00:00
|
|
|
|
Bundle 'ViViDboarder/QFixToggle'
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- Text Manipulation --
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Easy comments
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'tomtom/tcomment_vim'
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" Surround for wrapping text
|
|
|
|
|
Bundle 'tpope/vim-surround'
|
2013-07-30 19:40:43 +00:00
|
|
|
|
" Multi cursor
|
|
|
|
|
Bundle 'terryma/vim-multiple-cursors'
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- GUI --
|
2012-07-02 17:25:36 +00:00
|
|
|
|
Bundle 'gregsexton/MatchTag'
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" Custom Status Line
|
2013-08-16 21:26:00 +00:00
|
|
|
|
Bundle 'bling/vim-airline'
|
2013-01-08 20:51:22 +00:00
|
|
|
|
"Powerline Config
|
2013-10-27 16:25:27 +00:00
|
|
|
|
"If using a patched font: https://github.com/Lokaltog/vim-powerline/wiki/Patched-fonts
|
2013-08-16 21:26:00 +00:00
|
|
|
|
"let g:airline_powerline_fonts = 1
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-12-05 02:39:19 +00:00
|
|
|
|
" -- Sytem --
|
|
|
|
|
" Allow async make
|
|
|
|
|
Bundle 'tpope/vim-dispatch'
|
|
|
|
|
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" -- Themes --
|
|
|
|
|
Bundle 'vividchalk.vim'
|
|
|
|
|
Bundle 'wombat256.vim'
|
|
|
|
|
"Bundle 'BusyBee.vim'
|
|
|
|
|
Bundle 'nanotech/jellybeans.vim'
|
|
|
|
|
"Bundle 'github.vim'
|
|
|
|
|
Bundle 'candy.vim'
|
|
|
|
|
Bundle 'therubymug/vim-pyte'
|
|
|
|
|
Bundle 'eclipse.vim'
|
|
|
|
|
Bundle 'summerfruit256.vim'
|
|
|
|
|
Bundle 'nuvola.vim'
|
|
|
|
|
Bundle 'altercation/vim-colors-solarized'
|
|
|
|
|
|
2013-01-08 20:51:22 +00:00
|
|
|
|
" -- Filetypes --
|
2012-12-13 16:07:02 +00:00
|
|
|
|
Bundle 'ViViDboarder/vim-forcedotcom'
|
2013-01-08 20:51:22 +00:00
|
|
|
|
Bundle 'pdurbin/vim-tsv'
|
2013-10-27 16:25:27 +00:00
|
|
|
|
"Bundle 'chrisbra/csv.vim'
|
|
|
|
|
Bundle 'pangloss/vim-javascript'
|
2012-10-15 19:18:14 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" ***************************
|
|
|
|
|
" Built in settings
|
|
|
|
|
" ***************************
|
|
|
|
|
|
|
|
|
|
"Allows filetype detection
|
|
|
|
|
filetype on
|
|
|
|
|
|
|
|
|
|
" Set settings values
|
|
|
|
|
filetype plugin indent on
|
|
|
|
|
|
|
|
|
|
" Allow arrow keys
|
2012-04-24 14:09:19 +00:00
|
|
|
|
set nocompatible
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Use more convenient leader
|
2012-07-02 19:26:56 +00:00
|
|
|
|
let mapleader=","
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Enable mouse input
|
2012-07-02 17:25:36 +00:00
|
|
|
|
set mousehide
|
|
|
|
|
set mouse=a
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Tab functionality
|
2012-03-29 03:18:33 +00:00
|
|
|
|
set expandtab
|
|
|
|
|
set tabstop=4
|
|
|
|
|
set shiftwidth=4
|
|
|
|
|
set softtabstop=4
|
|
|
|
|
set autoindent
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Ensure backspace actually works
|
2012-07-31 15:54:33 +00:00
|
|
|
|
set backspace=2
|
2013-08-08 02:54:11 +00:00
|
|
|
|
"
|
|
|
|
|
" allow for cursor beyond last character
|
|
|
|
|
set virtualedit=onemore
|
|
|
|
|
" lines to scroll when cursor leaves screen
|
|
|
|
|
set scrolljump=5
|
|
|
|
|
" minimum lines to keep above and below cursor
|
|
|
|
|
set scrolloff=3
|
2012-04-24 14:09:19 +00:00
|
|
|
|
|
2012-12-10 19:29:24 +00:00
|
|
|
|
" Display filename at bottom of window
|
|
|
|
|
set ls=2
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Set backup dirs
|
2012-07-02 17:25:36 +00:00
|
|
|
|
set backup
|
|
|
|
|
set backupdir=~/.vim/backup
|
|
|
|
|
set directory=~/.vim/tmp
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
"enable line numbers
|
|
|
|
|
set nu
|
|
|
|
|
|
|
|
|
|
" Highlights the line the cursor is on
|
|
|
|
|
set cursorline
|
|
|
|
|
:hi CursorLine cterm=NONE ctermbg=darkred guibg=darkred guifg=white
|
|
|
|
|
|
|
|
|
|
" Syntax Hightlighting
|
|
|
|
|
syntax on
|
|
|
|
|
|
2013-08-08 16:19:27 +00:00
|
|
|
|
" Enable search highlighting
|
2013-08-08 02:54:11 +00:00
|
|
|
|
set hls
|
|
|
|
|
|
2013-08-08 16:19:27 +00:00
|
|
|
|
" Change Working Directory to that of the current file
|
|
|
|
|
cmap cwd lcd %:p:h
|
|
|
|
|
cmap cd. lcd %:p:h
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" ********************************
|
|
|
|
|
" GUI SETTINGS
|
|
|
|
|
" *****************************
|
|
|
|
|
|
|
|
|
|
" Set theme based on $VIM_COLOR variable
|
2012-07-02 17:37:30 +00:00
|
|
|
|
try
|
2013-01-02 17:12:41 +00:00
|
|
|
|
if !empty($VIM_COLOR)
|
|
|
|
|
colorscheme $VIM_COLOR
|
|
|
|
|
else
|
|
|
|
|
if has("gui_running")
|
2013-10-27 16:25:27 +00:00
|
|
|
|
colorscheme wombat256mod
|
2013-01-02 17:12:41 +00:00
|
|
|
|
else
|
|
|
|
|
colorscheme vividchalk
|
|
|
|
|
endif
|
|
|
|
|
endif
|
2012-07-02 17:37:30 +00:00
|
|
|
|
catch /^Vim\%((\a\+)\)\=:E185/
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" Colorschemes not installed yet
|
|
|
|
|
" This happens when first installing bundles
|
2013-12-03 23:55:08 +00:00
|
|
|
|
colorscheme default
|
2012-07-02 17:37:30 +00:00
|
|
|
|
endtry
|
|
|
|
|
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" Set Airline theme
|
|
|
|
|
if g:colors_name == 'github'
|
|
|
|
|
let g:airline_theme = 'solarized'
|
|
|
|
|
endif
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Set gui fonts
|
|
|
|
|
if has("gui_running")
|
2013-10-27 16:25:27 +00:00
|
|
|
|
if has("gui_win32")
|
2013-08-08 02:54:11 +00:00
|
|
|
|
set guifont=Consolas:h10:b
|
|
|
|
|
elseif has("gui_macvim")
|
|
|
|
|
try
|
2013-08-08 03:13:27 +00:00
|
|
|
|
set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h11
|
2013-08-08 02:54:11 +00:00
|
|
|
|
catch
|
|
|
|
|
" Failed to set font
|
|
|
|
|
endtry
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
" Set xterm title, and inform vim of screen/tmux's syntax for doing the same
|
|
|
|
|
set titlestring=vim\ %{expand(\"%t\")}
|
|
|
|
|
if &term =~ "^screen"
|
|
|
|
|
" pretend this is xterm. it probably is anyway, but if term is left as
|
|
|
|
|
" `screen`, vim doesn't understand ctrl-arrow.
|
|
|
|
|
if &term == "screen-256color"
|
|
|
|
|
set term=xterm-256color
|
|
|
|
|
else
|
|
|
|
|
set term=xterm
|
|
|
|
|
endif
|
2012-04-24 14:09:19 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" gotta set these *last*, since `set term` resets everything
|
|
|
|
|
set t_ts=k
|
|
|
|
|
set t_fs=\
|
2013-12-05 02:34:25 +00:00
|
|
|
|
set t_ut=
|
2013-03-18 02:19:44 +00:00
|
|
|
|
endif
|
2013-08-08 02:54:11 +00:00
|
|
|
|
set title
|
2013-03-18 02:19:44 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" ********************************
|
|
|
|
|
" SET HOTKEYS
|
|
|
|
|
" ********************************
|
2012-03-29 03:18:33 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Remap jk to esc
|
|
|
|
|
inoremap jk <esc>
|
|
|
|
|
|
|
|
|
|
" Bind Make to F5 like other IDEs
|
2013-12-05 02:39:19 +00:00
|
|
|
|
nnoremap <F5> :Make<CR>
|
2013-08-08 02:54:11 +00:00
|
|
|
|
|
|
|
|
|
" Remap Ctrl+Space for auto Complete
|
|
|
|
|
inoremap <C-Space> <C-n>
|
|
|
|
|
inoremap <Nul> <C-n>
|
|
|
|
|
|
|
|
|
|
" Toggle highlighting with \hr (highlight row)
|
|
|
|
|
nnoremap <leader>hr :set cursorline!<CR>
|
|
|
|
|
|
|
|
|
|
" Toggle Line numbers with Ctrl+N double tap
|
2012-04-24 14:09:19 +00:00
|
|
|
|
nmap <C-N><C-N> :set invnumber<CR>
|
2012-06-01 19:49:20 +00:00
|
|
|
|
nmap <leader>ln :set invnumber<CR>
|
2012-04-24 14:09:19 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Toggle line wrap with Ctrl+L double tap
|
2012-04-24 14:09:19 +00:00
|
|
|
|
nmap <C-L><C-L> :set wrap!<CR>
|
2012-06-01 19:49:20 +00:00
|
|
|
|
nmap <leader>lw :set wrap!<CR>
|
2012-03-29 03:18:33 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Toggle White Space
|
2013-07-30 19:40:43 +00:00
|
|
|
|
nmap <leader>ws :set list!<CR>
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Map Shift+U to redo
|
2013-10-27 16:25:27 +00:00
|
|
|
|
nnoremap <S-u> <C-r>
|
2012-06-01 19:49:20 +00:00
|
|
|
|
|
2012-04-24 14:09:19 +00:00
|
|
|
|
" Stupid shift key fixes
|
2012-07-02 17:25:36 +00:00
|
|
|
|
cmap WQ<CR> wq<CR>
|
|
|
|
|
cmap Wq<CR> wq<CR>
|
|
|
|
|
cmap W<CR> w<CR>
|
|
|
|
|
cmap Q<CR> q<CR>
|
2013-08-08 02:54:11 +00:00
|
|
|
|
cmap Q!<CR> q!<CR>
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" Stupid semicolon files
|
|
|
|
|
cnoremap w; w
|
|
|
|
|
cnoremap W; w
|
|
|
|
|
cnoremap q; q
|
|
|
|
|
cnoremap Q; q
|
2012-04-24 14:09:19 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Clearing highlighted search
|
2012-10-17 20:26:42 +00:00
|
|
|
|
nmap <silent> <leader>/ :set hlsearch! hlsearch?<CR>
|
|
|
|
|
noremap <C-h><C-s> :set hlsearch! hlsearch?<CR>
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" Clear search
|
2013-08-08 02:54:11 +00:00
|
|
|
|
nmap <silent> <leader>cs :nohlsearch<CR>
|
|
|
|
|
|
|
|
|
|
" Code fold
|
2013-12-03 23:06:19 +00:00
|
|
|
|
nmap <leader>cf va{<ESC>zf%<ESC>:nohlsearch<CR>
|
2012-04-24 14:09:19 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" ********************************
|
|
|
|
|
" PLUGIN SETTINGS
|
|
|
|
|
" ********************************
|
|
|
|
|
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" Airline config
|
|
|
|
|
" Use short-form mode text
|
|
|
|
|
let g:airline_mode_map = {
|
|
|
|
|
\ '__' : '-',
|
|
|
|
|
\ 'n' : 'N',
|
|
|
|
|
\ 'i' : 'I',
|
|
|
|
|
\ 'R' : 'R',
|
|
|
|
|
\ 'c' : 'C',
|
|
|
|
|
\ 'v' : 'V',
|
|
|
|
|
\ 'V' : 'V',
|
|
|
|
|
\ '' : 'V',
|
|
|
|
|
\ 's' : 'S',
|
|
|
|
|
\ 'S' : 'S',
|
|
|
|
|
\ '' : 'S',
|
|
|
|
|
\ }
|
|
|
|
|
let g:airline#extensions#whitespace#trailing_format = 'tw[%s]'
|
|
|
|
|
let g:airline#extensions#whitespace#mixed_indent_format = 'i[%s]'
|
|
|
|
|
let g:airline_left_sep=''
|
|
|
|
|
let g:airline_left_alt_sep=''
|
|
|
|
|
let g:airline_right_sep=''
|
|
|
|
|
let g:airline_right_alt_sep=''
|
|
|
|
|
let g:airline#extensions#tabline#enabled = 1
|
2013-12-03 23:06:36 +00:00
|
|
|
|
let g:airline#extensions#tabline#left_sep = ' '
|
|
|
|
|
let g:airline#extensions#tabline#left_alt_sep = '|'
|
2013-10-27 16:25:27 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Buffet shortcut
|
|
|
|
|
nnoremap <silent> <F2> :Bufferlist<CR>
|
|
|
|
|
nnoremap <leader>bl :Bufferlist<CR>
|
|
|
|
|
|
|
|
|
|
" NERDTree
|
|
|
|
|
nnoremap <silent> <F4> :NERDTreeToggle<CR>
|
|
|
|
|
nnoremap <leader>nn :NERDTreeToggle<CR>
|
|
|
|
|
nnoremap <leader>nf :NERDTreeFind<CR>
|
|
|
|
|
|
|
|
|
|
" NERDComments
|
|
|
|
|
nnoremap // :TComment<CR>
|
|
|
|
|
vnoremap // :TCommentBlock<CR>
|
|
|
|
|
|
|
|
|
|
" CTags List
|
|
|
|
|
nnoremap <silent> <F8> :TagbarToggle<CR>
|
|
|
|
|
" Autofocus tagbar
|
|
|
|
|
let g:tagbar_autofocus = 1
|
|
|
|
|
|
2012-07-02 17:25:36 +00:00
|
|
|
|
" ---------------
|
|
|
|
|
" Command T and ctrlp.vim
|
|
|
|
|
" Snagged from mutewinter @ https://github.com/mutewinter/dot_vim
|
|
|
|
|
" ---------------
|
|
|
|
|
" Ensure Ctrl-P isn't bound by default
|
|
|
|
|
let g:ctrlp_map = ''
|
|
|
|
|
|
|
|
|
|
" Ensure max height isn't too large. (for performance)
|
|
|
|
|
let g:ctrlp_max_height = 10
|
|
|
|
|
let g:CommandTMaxHeight = 10
|
|
|
|
|
|
|
|
|
|
" Set the default escape keybinding to, you guessed it, escape.
|
|
|
|
|
let g:CommandTCancelMap = '<esc>'
|
|
|
|
|
|
|
|
|
|
" Dynamically use Command T or ctrlp.vim based on availability of Ruby.
|
|
|
|
|
" We do this because Command T is much faster than ctrlp.vim.
|
|
|
|
|
if has('ruby')
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Use Command T since we've got Ruby
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Mappings
|
2012-07-02 17:25:36 +00:00
|
|
|
|
nnoremap <silent><C-t> :CommandT<CR>
|
2013-08-08 02:54:11 +00:00
|
|
|
|
|
|
|
|
|
" Leader Commands
|
|
|
|
|
nnoremap <leader>t :CommandT<CR>
|
|
|
|
|
nnoremap <leader>b :CommanTBuffer<CR>
|
|
|
|
|
nnoremap <leader>tt :CommandTTag<CR>
|
2012-07-02 17:25:36 +00:00
|
|
|
|
else
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Use ctrlp.vim since we don't have Ruby
|
2012-07-02 17:25:36 +00:00
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Conditional Mappings
|
2012-07-02 17:25:36 +00:00
|
|
|
|
let g:ctrlp_map = '<C-t>'
|
|
|
|
|
|
2013-08-08 02:54:11 +00:00
|
|
|
|
" Leader Commands
|
|
|
|
|
nnoremap <leader>b :CtrlPBuffer<CR>
|
2012-07-02 17:25:36 +00:00
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
" Also map leader commands
|
|
|
|
|
nnoremap <leader>u :CtrlPCurFile<CR>
|
|
|
|
|
nnoremap <leader>m :CtrlPMRUFiles<CR>
|
2012-10-17 20:26:42 +00:00
|
|
|
|
|
2013-10-27 16:25:27 +00:00
|
|
|
|
" fugitive
|
2012-10-31 13:41:30 +00:00
|
|
|
|
" Add some shortcuts for git commands
|
|
|
|
|
nnoremap <leader>gs :Gstatus<CR>
|
|
|
|
|
nnoremap <leader>gc :Gcommit<CR>
|
|
|
|
|
nnoremap <leader>gb :Gblame<CR>
|
|
|
|
|
|
2013-01-23 19:33:05 +00:00
|
|
|
|
" Toggle QuickFix window
|
|
|
|
|
nnoremap <silent> <F6> :QFix<CR>
|
|
|
|
|
|
|
|
|
|
nmap <leader>a :Ack<Space>
|
|
|
|
|
nmap <leader>* :Ack<Space><c-r><c-W><CR>
|
|
|
|
|
|
2013-08-08 16:19:27 +00:00
|
|
|
|
" Syntastic settings
|
|
|
|
|
let g:syntastic_html_tidy_ignore_errors = [
|
|
|
|
|
\ 'proprietary attribute "ng-show"',
|
|
|
|
|
\ 'proprietary attribute "ng-controller"',
|
|
|
|
|
\ 'proprietary attribute "ng-repeat"',
|
2013-12-03 23:06:58 +00:00
|
|
|
|
\ 'proprietary attribute "ng-app"',
|
|
|
|
|
\ 'proprietary attribute "ng-click"'
|
2013-08-08 16:19:27 +00:00
|
|
|
|
\ ]
|
2013-12-03 23:06:58 +00:00
|
|
|
|
|
2013-12-03 23:05:29 +00:00
|
|
|
|
" Command to display TODO tags in project
|
|
|
|
|
command Todo Ag! TODO
|
|
|
|
|
|