From 6cd3709757b974e517cb76a7d2cc2af9ef06325e Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 22 Feb 2012 16:58:04 +0000 Subject: [PATCH] psblas3: Updates for doxygen. --- base/modules/psb_c_base_mat_mod.f90 | 304 ++++++++++++++++++++-------- base/modules/psb_d_base_mat_mod.f90 | 304 ++++++++++++++++++++-------- base/modules/psb_s_base_mat_mod.f90 | 304 ++++++++++++++++++++-------- base/modules/psb_z_base_mat_mod.f90 | 304 ++++++++++++++++++++-------- docs/html/img1.png | Bin 200 -> 210 bytes docs/html/img10.png | Bin 401 -> 446 bytes docs/html/img100.png | Bin 260 -> 264 bytes docs/html/img101.png | Bin 188 -> 202 bytes docs/html/img102.png | Bin 143 -> 151 bytes docs/html/img103.png | Bin 257 -> 268 bytes docs/html/img104.png | Bin 379 -> 390 bytes docs/html/img105.png | Bin 263 -> 266 bytes docs/html/img106.png | Bin 249 -> 278 bytes docs/html/img107.png | Bin 264 -> 275 bytes docs/html/img108.png | Bin 399 -> 393 bytes docs/html/img109.png | Bin 208 -> 214 bytes docs/html/img11.png | Bin 529 -> 562 bytes docs/html/img110.png | Bin 260 -> 260 bytes docs/html/img111.png | Bin 793 -> 862 bytes docs/html/img112.png | Bin 406 -> 422 bytes docs/html/img113.png | Bin 426 -> 419 bytes docs/html/img114.png | Bin 345 -> 361 bytes docs/html/img115.png | Bin 321 -> 323 bytes docs/html/img116.png | Bin 840 -> 859 bytes docs/html/img117.png | Bin 341 -> 340 bytes docs/html/img118.png | Bin 505 -> 534 bytes docs/html/img119.png | Bin 405 -> 424 bytes docs/html/img12.png | Bin 125 -> 125 bytes docs/html/img120.png | Bin 271 -> 275 bytes docs/html/img121.png | Bin 542 -> 578 bytes docs/html/img122.png | Bin 541 -> 598 bytes docs/html/img123.png | Bin 335 -> 364 bytes docs/html/img124.png | Bin 229 -> 243 bytes docs/html/img125.png | Bin 525 -> 565 bytes docs/html/img126.png | Bin 579 -> 625 bytes docs/html/img127.png | Bin 581 -> 588 bytes docs/html/img128.png | Bin 215 -> 227 bytes docs/html/img129.png | Bin 584 -> 634 bytes docs/html/img13.png | Bin 3161 -> 3495 bytes docs/html/img130.png | Bin 736 -> 752 bytes docs/html/img131.png | Bin 272 -> 279 bytes docs/html/img132.png | Bin 521 -> 536 bytes docs/html/img133.png | Bin 270 -> 280 bytes docs/html/img134.png | Bin 561 -> 584 bytes docs/html/img135.png | Bin 247 -> 254 bytes docs/html/img138.png | Bin 372 -> 376 bytes docs/html/img139.png | Bin 433 -> 445 bytes docs/html/img14.png | Bin 650 -> 693 bytes docs/html/img140.png | Bin 915 -> 998 bytes docs/html/img141.png | Bin 673 -> 713 bytes docs/html/img142.png | Bin 219 -> 232 bytes docs/html/img143.png | Bin 429 -> 447 bytes docs/html/img144.png | Bin 477 -> 508 bytes docs/html/img145.png | Bin 410 -> 444 bytes docs/html/img146.png | Bin 352 -> 367 bytes docs/html/img147.png | Bin 387 -> 404 bytes docs/html/img148.png | Bin 287 -> 309 bytes docs/html/img15.png | Bin 230 -> 244 bytes docs/html/img16.png | Bin 196 -> 204 bytes docs/html/img17.png | Bin 370 -> 394 bytes docs/html/img18.png | Bin 539 -> 606 bytes docs/html/img2.png | Bin 3157 -> 3165 bytes docs/html/img20.png | Bin 6807 -> 6999 bytes docs/html/img24.png | Bin 478 -> 507 bytes docs/html/img25.png | Bin 194 -> 196 bytes docs/html/img26.png | Bin 223 -> 226 bytes docs/html/img27.png | Bin 191 -> 203 bytes docs/html/img28.png | Bin 226 -> 230 bytes docs/html/img29.png | Bin 449 -> 464 bytes docs/html/img3.png | Bin 3157 -> 3152 bytes docs/html/img30.png | Bin 468 -> 477 bytes docs/html/img31.png | Bin 276 -> 279 bytes docs/html/img32.png | Bin 780 -> 752 bytes docs/html/img33.png | Bin 244 -> 256 bytes docs/html/img34.png | Bin 571 -> 607 bytes docs/html/img35.png | Bin 1078 -> 1056 bytes docs/html/img36.png | Bin 309 -> 323 bytes docs/html/img37.png | Bin 793 -> 814 bytes docs/html/img38.png | Bin 444 -> 478 bytes docs/html/img39.png | Bin 863 -> 868 bytes docs/html/img4.png | Bin 178 -> 195 bytes docs/html/img40.png | Bin 307 -> 328 bytes docs/html/img41.png | Bin 507 -> 524 bytes docs/html/img42.png | Bin 905 -> 864 bytes docs/html/img43.png | Bin 557 -> 566 bytes docs/html/img44.png | Bin 571 -> 577 bytes docs/html/img45.png | Bin 319 -> 341 bytes docs/html/img46.png | Bin 646 -> 663 bytes docs/html/img47.png | Bin 486 -> 506 bytes docs/html/img48.png | Bin 670 -> 688 bytes docs/html/img49.png | Bin 721 -> 754 bytes docs/html/img5.png | Bin 200 -> 207 bytes docs/html/img50.png | Bin 729 -> 750 bytes docs/html/img51.png | Bin 242 -> 256 bytes docs/html/img52.png | Bin 255 -> 269 bytes docs/html/img53.png | Bin 350 -> 314 bytes docs/html/img54.png | Bin 416 -> 431 bytes docs/html/img55.png | Bin 3612 -> 3472 bytes docs/html/img56.png | Bin 199 -> 206 bytes docs/html/img57.png | Bin 228 -> 225 bytes docs/html/img58.png | Bin 426 -> 448 bytes docs/html/img59.png | Bin 804 -> 829 bytes docs/html/img6.png | Bin 374 -> 401 bytes docs/html/img60.png | Bin 282 -> 297 bytes docs/html/img61.png | Bin 404 -> 418 bytes docs/html/img63.png | Bin 3613 -> 3115 bytes docs/html/img64.png | Bin 364 -> 378 bytes docs/html/img65.png | Bin 249 -> 259 bytes docs/html/img66.png | Bin 257 -> 255 bytes docs/html/img67.png | Bin 267 -> 266 bytes docs/html/img68.png | Bin 261 -> 263 bytes docs/html/img69.png | Bin 335 -> 339 bytes docs/html/img7.png | Bin 202 -> 207 bytes docs/html/img70.png | Bin 776 -> 786 bytes docs/html/img71.png | Bin 117 -> 117 bytes docs/html/img72.png | Bin 5395 -> 5682 bytes docs/html/img73.png | Bin 793 -> 788 bytes docs/html/img74.png | Bin 366 -> 388 bytes docs/html/img75.png | Bin 497 -> 526 bytes docs/html/img76.png | Bin 325 -> 334 bytes docs/html/img77.png | Bin 362 -> 369 bytes docs/html/img78.png | Bin 301 -> 318 bytes docs/html/img79.png | Bin 350 -> 368 bytes docs/html/img8.png | Bin 230 -> 241 bytes docs/html/img80.png | Bin 534 -> 574 bytes docs/html/img81.png | Bin 172 -> 197 bytes docs/html/img82.png | Bin 826 -> 839 bytes docs/html/img83.png | Bin 357 -> 368 bytes docs/html/img84.png | Bin 501 -> 512 bytes docs/html/img85.png | Bin 366 -> 371 bytes docs/html/img86.png | Bin 255 -> 265 bytes docs/html/img87.png | Bin 243 -> 278 bytes docs/html/img88.png | Bin 186 -> 204 bytes docs/html/img89.png | Bin 416 -> 440 bytes docs/html/img9.png | Bin 247 -> 246 bytes docs/html/img90.png | Bin 580 -> 606 bytes docs/html/img91.png | Bin 319 -> 335 bytes docs/html/img92.png | Bin 456 -> 487 bytes docs/html/img93.png | Bin 392 -> 391 bytes docs/html/img94.png | Bin 285 -> 298 bytes docs/html/img95.png | Bin 412 -> 420 bytes docs/html/img96.png | Bin 178 -> 181 bytes docs/html/img97.png | Bin 361 -> 373 bytes docs/html/img98.png | Bin 231 -> 242 bytes docs/html/img99.png | Bin 343 -> 365 bytes docs/html/node117.html | 2 +- docs/html/node38.html | 12 +- docs/html/node39.html | 18 +- docs/html/node4.html | 4 +- docs/html/node40.html | 20 +- docs/html/node41.html | 18 +- docs/html/node42.html | 12 +- docs/html/node43.html | 16 +- docs/html/node44.html | 22 +- docs/html/node45.html | 14 +- docs/html/node46.html | 10 +- docs/html/node47.html | 2 +- docs/html/node48.html | 18 +- docs/html/node49.html | 22 +- docs/html/node51.html | 18 +- docs/html/node52.html | 18 +- docs/html/node53.html | 2 +- docs/html/node54.html | 4 +- docs/html/node56.html | 2 +- docs/html/node57.html | 4 +- docs/html/node6.html | 10 +- docs/html/node62.html | 2 +- docs/html/node63.html | 8 +- docs/html/node67.html | 4 +- docs/html/node68.html | 4 +- docs/html/node72.html | 4 +- docs/html/node73.html | 4 +- docs/html/node74.html | 2 +- docs/html/node75.html | 2 +- docs/html/node76.html | 2 +- docs/html/node77.html | 2 +- docs/html/node80.html | 4 +- docs/html/node82.html | 6 +- docs/html/node88.html | 4 +- docs/html/node98.html | 6 +- docs/html/node99.html | 6 +- docs/psblas-3.0.pdf | 6 +- 182 files changed, 1045 insertions(+), 485 deletions(-) diff --git a/base/modules/psb_c_base_mat_mod.f90 b/base/modules/psb_c_base_mat_mod.f90 index 633e91c4..7c97d6a6 100644 --- a/base/modules/psb_c_base_mat_mod.f90 +++ b/base/modules/psb_c_base_mat_mod.f90 @@ -39,9 +39,8 @@ module psb_c_base_mat_mod !> \namespace psb_base_mod \class psb_c_base_sparse_mat !! \extends psb_base_mod::psb_base_sparse_mat - !! This module contains the definition of the psb_c_base_sparse_mat - !! type, extending the psb_base_sparse_mat to define a middle - !! level complex(psb_spk_) sparse matrix object. + !! The psb_c_base_sparse_mat type, extending psb_base_sparse_mat, + !! defines a middle level complex(psb_spk_) sparse matrix object. !! This class object itself does not have any additional members !! with respect to those of the base class. No methods can be fully !! implemented at this level, but we can define the interface for the @@ -49,13 +48,6 @@ module psb_c_base_mat_mod !! field, such as the matrix-vector product; this interface is defined, !! but is supposed to be overridden at the leaf level. !! - !! This module also contains the definition of the - !! psb_c_coo_sparse_mat type and the related methods. This is the - !! reference type for all the format transitions, copies and mv unless - !! methods are implemented that allow the direct transition from one - !! format to another. It is defined here since all other classes must - !! refer to it per the MEDIATOR design pattern. - !! !! About the method MOLD: this has been defined for those compilers !! not yet supporting ALLOCATE( ...,MOLD=...); it's otherwise silly to !! duplicate "by hand" what is specified in the language (in this case F2008) @@ -123,10 +115,23 @@ module psb_c_base_mat_mod private :: c_base_cp_from, c_base_mv_from + !> \namespace psb_base_mod \class psb_c_base_sparse_mat + !! \extends psb_base_mod::psb_base_sparse_mat + !! + !! psb_c_coo_sparse_mat type and the related methods. This is the + !! reference type for all the format transitions, copies and mv unless + !! methods are implemented that allow the direct transition from one + !! format to another. It is defined here since all other classes must + !! refer to it per the MEDIATOR design pattern. + !! type, extends(psb_c_base_sparse_mat) :: psb_c_coo_sparse_mat - + !> Number of nonzeros. integer(psb_ipk_) :: nnz - integer(psb_ipk_), allocatable :: ia(:), ja(:) + !> Row indices. + integer(psb_ipk_), allocatable :: ia(:) + !> Column indices. + integer(psb_ipk_), allocatable :: ja(:) + !> Coefficient values. complex(psb_spk_), allocatable :: val(:) contains @@ -206,20 +211,40 @@ module psb_c_base_mat_mod ! ! == ================= - ! - ! CSPUT: Hand over a set of values to A. - ! Simple description: - ! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) - ! - ! Catches: - ! 1. If A is in the BUILD state, then this method - ! can only be called for COO matrice, in which case it - ! is more like queueing coefficients for later processing; - ! 2. If A is in the UPDATE state, then every derived class must - ! implement it; - ! 3. In the UPDATE state, depending on the value of DUPL flag - ! inside A, it will be A=VAL or A = A + VAL - ! + !> Function csput: + !! \brief Insert coefficients. + !! + !! + !! Given a list of NZ triples + !! (IA(i),JA(i),VAL(i)) + !! record a new coefficient in A such that + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ). + !! + !! The internal components IA,JA,VAL are reallocated as necessary. + !! Constraints: + !! - If the matrix A is in the BUILD state, then the method will + !! only work for COO matrices, all other format will throw an error. + !! In this case coefficients are queued inside A for further processing. + !! - If the matrix A is in the UPDATE state, then it can be in any format; + !! the update operation will perform either + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) + !! or + !! A(IA(1:nz),JA(1:nz)) = A(IA(1:nz),JA(1:nz))+VAL(1:NZ) + !! according to the value of DUPLICATE. + !! - Coefficients with (IA(I),JA(I)) outside the ranges specified by + !! IMIN:IMAX,JMIN:JMAX will be ignored. + !! + !! \param nz number of triples in input + !! \param ia(:) the input row indices + !! \param ja(:) the input col indices + !! \param val(:) the input coefficients + !! \param imin minimum row index + !! \param imax maximum row index + !! \param jmin minimum col index + !! \param jmax maximum col index + !! \param info return code + !! \param gtl(:) [none] an array to renumber indices (iren(ia(:)),iren(ja(:)) + !! ! interface subroutine psb_c_base_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) @@ -233,27 +258,36 @@ module psb_c_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk, clip. - ! getrow is the basic method, the other two are - ! basically convenient wrappers/shorthand. - ! - ! out(:) = A(imin:imax,:) - ! - ! The two methods differ on the output format - ! - ! GETROW returns as the set - ! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) ! - ! Optional arguments: - ! JMIN,JMAX: get A(IMIN:IMAX,JMIN:JMAX), - ! default 1:ncols - ! APPEND: append at the end of data, in which case - ! # used entries must be in NZ - ! RSCALE, CSCALE: scale output indices at base 1. + !> Function csgetrow: + !! \brief Get a (subset of) row(s) + !! + !! getrow is the basic method by which the other (getblk, clip) can + !! be implemented. + !! + !! Returns the set + !! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) + !! each identifying the position of a nonzero in A + !! between row indices IMIN:IMAX; + !! IA,JA are reallocated as necessary. + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param nz the number of output coefficients + !! \param ia(:) the output row indices + !! \param ja(:) the output col indices + !! \param val(:) the output coefficients + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! - ! GETROW must be overridden by all data formats. - ! - interface subroutine psb_c_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& & jmin,jmax,iren,append,nzin,rscale,cscale) @@ -272,13 +306,25 @@ module psb_c_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk. - ! out(:) = A(imin:imax,:) - ! - ! GETBLK returns a pbs_c_coo_sparse_mat with - ! the same contents. - ! Default implementation at base level - ! in terms of (derived) GETROW + !> Function csgetblk: + !! \brief Get a (subset of) row(s) + !! + !! getblk is very similar to getrow, except that the output + !! is packaged in a psb_c_coo_sparse_mat object + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param b the output (sub)matrix + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_c_base_csgetblk(imin,imax,a,b,info,& @@ -296,12 +342,26 @@ module psb_c_base_mat_mod end interface ! - ! CLIP: extract a subset - ! B(:,:) = A(imin:imax,jmin:jmax) - ! control: rscale,cscale as in getblk above. - ! - ! Default implementation at base level in terms of - ! GETBLK. + ! + !> Function csclip: + !! \brief Get a submatrix. + !! + !! csclip is practically identical to getblk. + !! One of them has to go away..... + !! + !! \param b the output submatrix + !! \param info return code + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_c_base_csclip(a,b,info,& @@ -316,9 +376,13 @@ module psb_c_base_mat_mod end interface ! - ! GET_DIAG method - ! - ! D(i) = A(i:i), i=1:min(nrows,ncols) + !> Function get_diag: + !! \brief Extract the diagonal of A. + !! + !! D(i) = A(i:i), i=1:min(nrows,ncols) + !! + !! \param d(:) The output diagonal + !! \param info return code. ! interface subroutine psb_c_base_get_diag(a,d,info) @@ -330,10 +394,13 @@ module psb_c_base_mat_mod end interface ! - ! MOLD: make B have the same dinamyc type - ! as A. - ! For compilers not supporting - ! allocate( mold= ) + !> Function mold: + !! \brief Allocate a class(psb_c_base_sparse_mat) with the + !! same dynamic type as the input. + !! This is equivalent to allocate( mold= ) and is provided + !! for those compilers not yet supporting mold. + !! \param b The output variable + !! \param info return code ! interface subroutine psb_c_base_mold(a,b,info) @@ -346,17 +413,12 @@ module psb_c_base_mat_mod ! - ! These are the methods implementing the MEDIATOR pattern - ! to allow switch between arbitrary. - ! Indeed, the TO/FROM FMT can be implemented at the base level - ! in terms of the TO/FROM COO per the MEDIATOR design pattern. - ! This does not prevent most of the derived classes to - ! provide their own versions with shortcuts. - ! A%{MV|CP}_{TO|FROM}_{FMT|COO} - ! MV|CP: copy versus move, i.e. deallocate - ! TO|FROM: invoked from source or target object - ! - ! + !> Function cp_to_coo: + !! \brief Copy and convert to psb_c_coo_sparse_mat + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_cp_to_coo(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ @@ -366,6 +428,13 @@ module psb_c_base_mat_mod end subroutine psb_c_base_cp_to_coo end interface + ! + !> Function cp_from_coo: + !! \brief Copy and convert from psb_c_coo_sparse_mat + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_c_base_cp_from_coo(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ @@ -375,6 +444,14 @@ module psb_c_base_mat_mod end subroutine psb_c_base_cp_from_coo end interface + ! + !> Function cp_to_fmt: + !! \brief Copy and convert to a class(psb_c_base_sparse_mat) + !! Invoked from the source object. Can be implemented by + !! simply invoking a%cp_to_coo(tmp) and then b%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_cp_to_fmt(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -384,6 +461,14 @@ module psb_c_base_mat_mod end subroutine psb_c_base_cp_to_fmt end interface + ! + !> Function cp_from_fmt: + !! \brief Copy and convert from a class(psb_c_base_sparse_mat) + !! Invoked from the target object. Can be implemented by + !! simply invoking b%cp_to_coo(tmp) and then a%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_cp_from_fmt(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -393,6 +478,13 @@ module psb_c_base_mat_mod end subroutine psb_c_base_cp_from_fmt end interface + ! + !> Function mv_to_coo: + !! \brief Convert to psb_c_coo_sparse_mat, freeing the source. + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_mv_to_coo(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ @@ -402,6 +494,13 @@ module psb_c_base_mat_mod end subroutine psb_c_base_mv_to_coo end interface + ! + !> Function mv_from_coo: + !! \brief Convert from psb_c_coo_sparse_mat, freeing the source. + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_c_base_mv_from_coo(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_ @@ -411,6 +510,14 @@ module psb_c_base_mat_mod end subroutine psb_c_base_mv_from_coo end interface + ! + !> Function mv_to_fmt: + !! \brief Convert to a class(psb_c_base_sparse_mat), freeing the source. + !! Invoked from the source object. Can be implemented by + !! simply invoking a%mv_to_coo(tmp) and then b%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_mv_to_fmt(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -420,6 +527,14 @@ module psb_c_base_mat_mod end subroutine psb_c_base_mv_to_fmt end interface + ! + !> Function mv_from_fmt: + !! \brief Convert from a class(psb_c_base_sparse_mat), freeing the source. + !! Invoked from the target object. Can be implemented by + !! simply invoking b%mv_to_coo(tmp) and then a%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_c_base_mv_from_fmt(a,b,info) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -430,11 +545,13 @@ module psb_c_base_mat_mod end interface ! - ! Transpose methods. - ! You can always default to COO to do the actual - ! transpose work. - ! - interface + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version + !! \param b The output variable + ! + interface subroutine psb_c_base_transp_2mat(a,b) import :: psb_ipk_, psb_c_base_sparse_mat, psb_base_sparse_mat, psb_spk_ class(psb_c_base_sparse_mat), intent(in) :: a @@ -442,6 +559,13 @@ module psb_c_base_mat_mod end subroutine psb_c_base_transp_2mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version. + !! \param b The output variable + ! interface subroutine psb_c_base_transc_2mat(a,b) import :: psb_ipk_, psb_c_base_sparse_mat, psb_base_sparse_mat, psb_spk_ @@ -450,6 +574,12 @@ module psb_c_base_mat_mod end subroutine psb_c_base_transc_2mat end interface + ! + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_c_base_transp_1mat(a) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -457,6 +587,12 @@ module psb_c_base_mat_mod end subroutine psb_c_base_transp_1mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_c_base_transc_1mat(a) import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_ @@ -684,7 +820,11 @@ module psb_c_base_mat_mod ! COO interfaces ! ! == =============== - + + ! + !> + !! \see psb_base_mat_mod::psb_base_reallocate_nz + ! interface subroutine psb_c_coo_reallocate_nz(nz,a) import :: psb_ipk_, psb_c_coo_sparse_mat diff --git a/base/modules/psb_d_base_mat_mod.f90 b/base/modules/psb_d_base_mat_mod.f90 index d27103c2..83636d92 100644 --- a/base/modules/psb_d_base_mat_mod.f90 +++ b/base/modules/psb_d_base_mat_mod.f90 @@ -39,9 +39,8 @@ module psb_d_base_mat_mod !> \namespace psb_base_mod \class psb_d_base_sparse_mat !! \extends psb_base_mod::psb_base_sparse_mat - !! This module contains the definition of the psb_d_base_sparse_mat - !! type, extending the psb_base_sparse_mat to define a middle - !! level real(psb_dpk_) sparse matrix object. + !! The psb_d_base_sparse_mat type, extending psb_base_sparse_mat, + !! defines a middle level real(psb_dpk_) sparse matrix object. !! This class object itself does not have any additional members !! with respect to those of the base class. No methods can be fully !! implemented at this level, but we can define the interface for the @@ -49,13 +48,6 @@ module psb_d_base_mat_mod !! field, such as the matrix-vector product; this interface is defined, !! but is supposed to be overridden at the leaf level. !! - !! This module also contains the definition of the - !! psb_d_coo_sparse_mat type and the related methods. This is the - !! reference type for all the format transitions, copies and mv unless - !! methods are implemented that allow the direct transition from one - !! format to another. It is defined here since all other classes must - !! refer to it per the MEDIATOR design pattern. - !! !! About the method MOLD: this has been defined for those compilers !! not yet supporting ALLOCATE( ...,MOLD=...); it's otherwise silly to !! duplicate "by hand" what is specified in the language (in this case F2008) @@ -123,10 +115,23 @@ module psb_d_base_mat_mod private :: d_base_cp_from, d_base_mv_from + !> \namespace psb_base_mod \class psb_d_base_sparse_mat + !! \extends psb_base_mod::psb_base_sparse_mat + !! + !! psb_d_coo_sparse_mat type and the related methods. This is the + !! reference type for all the format transitions, copies and mv unless + !! methods are implemented that allow the direct transition from one + !! format to another. It is defined here since all other classes must + !! refer to it per the MEDIATOR design pattern. + !! type, extends(psb_d_base_sparse_mat) :: psb_d_coo_sparse_mat - + !> Number of nonzeros. integer(psb_ipk_) :: nnz - integer(psb_ipk_), allocatable :: ia(:), ja(:) + !> Row indices. + integer(psb_ipk_), allocatable :: ia(:) + !> Column indices. + integer(psb_ipk_), allocatable :: ja(:) + !> Coefficient values. real(psb_dpk_), allocatable :: val(:) contains @@ -206,20 +211,40 @@ module psb_d_base_mat_mod ! ! == ================= - ! - ! CSPUT: Hand over a set of values to A. - ! Simple description: - ! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) - ! - ! Catches: - ! 1. If A is in the BUILD state, then this method - ! can only be called for COO matrice, in which case it - ! is more like queueing coefficients for later processing; - ! 2. If A is in the UPDATE state, then every derived class must - ! implement it; - ! 3. In the UPDATE state, depending on the value of DUPL flag - ! inside A, it will be A=VAL or A = A + VAL - ! + !> Function csput: + !! \brief Insert coefficients. + !! + !! + !! Given a list of NZ triples + !! (IA(i),JA(i),VAL(i)) + !! record a new coefficient in A such that + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ). + !! + !! The internal components IA,JA,VAL are reallocated as necessary. + !! Constraints: + !! - If the matrix A is in the BUILD state, then the method will + !! only work for COO matrices, all other format will throw an error. + !! In this case coefficients are queued inside A for further processing. + !! - If the matrix A is in the UPDATE state, then it can be in any format; + !! the update operation will perform either + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) + !! or + !! A(IA(1:nz),JA(1:nz)) = A(IA(1:nz),JA(1:nz))+VAL(1:NZ) + !! according to the value of DUPLICATE. + !! - Coefficients with (IA(I),JA(I)) outside the ranges specified by + !! IMIN:IMAX,JMIN:JMAX will be ignored. + !! + !! \param nz number of triples in input + !! \param ia(:) the input row indices + !! \param ja(:) the input col indices + !! \param val(:) the input coefficients + !! \param imin minimum row index + !! \param imax maximum row index + !! \param jmin minimum col index + !! \param jmax maximum col index + !! \param info return code + !! \param gtl(:) [none] an array to renumber indices (iren(ia(:)),iren(ja(:)) + !! ! interface subroutine psb_d_base_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) @@ -233,27 +258,36 @@ module psb_d_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk, clip. - ! getrow is the basic method, the other two are - ! basically convenient wrappers/shorthand. - ! - ! out(:) = A(imin:imax,:) - ! - ! The two methods differ on the output format - ! - ! GETROW returns as the set - ! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) ! - ! Optional arguments: - ! JMIN,JMAX: get A(IMIN:IMAX,JMIN:JMAX), - ! default 1:ncols - ! APPEND: append at the end of data, in which case - ! # used entries must be in NZ - ! RSCALE, CSCALE: scale output indices at base 1. + !> Function csgetrow: + !! \brief Get a (subset of) row(s) + !! + !! getrow is the basic method by which the other (getblk, clip) can + !! be implemented. + !! + !! Returns the set + !! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) + !! each identifying the position of a nonzero in A + !! between row indices IMIN:IMAX; + !! IA,JA are reallocated as necessary. + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param nz the number of output coefficients + !! \param ia(:) the output row indices + !! \param ja(:) the output col indices + !! \param val(:) the output coefficients + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! - ! GETROW must be overridden by all data formats. - ! - interface subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& & jmin,jmax,iren,append,nzin,rscale,cscale) @@ -272,13 +306,25 @@ module psb_d_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk. - ! out(:) = A(imin:imax,:) - ! - ! GETBLK returns a pbs_d_coo_sparse_mat with - ! the same contents. - ! Default implementation at base level - ! in terms of (derived) GETROW + !> Function csgetblk: + !! \brief Get a (subset of) row(s) + !! + !! getblk is very similar to getrow, except that the output + !! is packaged in a psb_d_coo_sparse_mat object + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param b the output (sub)matrix + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_d_base_csgetblk(imin,imax,a,b,info,& @@ -296,12 +342,26 @@ module psb_d_base_mat_mod end interface ! - ! CLIP: extract a subset - ! B(:,:) = A(imin:imax,jmin:jmax) - ! control: rscale,cscale as in getblk above. - ! - ! Default implementation at base level in terms of - ! GETBLK. + ! + !> Function csclip: + !! \brief Get a submatrix. + !! + !! csclip is practically identical to getblk. + !! One of them has to go away..... + !! + !! \param b the output submatrix + !! \param info return code + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_d_base_csclip(a,b,info,& @@ -316,9 +376,13 @@ module psb_d_base_mat_mod end interface ! - ! GET_DIAG method - ! - ! D(i) = A(i:i), i=1:min(nrows,ncols) + !> Function get_diag: + !! \brief Extract the diagonal of A. + !! + !! D(i) = A(i:i), i=1:min(nrows,ncols) + !! + !! \param d(:) The output diagonal + !! \param info return code. ! interface subroutine psb_d_base_get_diag(a,d,info) @@ -330,10 +394,13 @@ module psb_d_base_mat_mod end interface ! - ! MOLD: make B have the same dinamyc type - ! as A. - ! For compilers not supporting - ! allocate( mold= ) + !> Function mold: + !! \brief Allocate a class(psb_d_base_sparse_mat) with the + !! same dynamic type as the input. + !! This is equivalent to allocate( mold= ) and is provided + !! for those compilers not yet supporting mold. + !! \param b The output variable + !! \param info return code ! interface subroutine psb_d_base_mold(a,b,info) @@ -346,17 +413,12 @@ module psb_d_base_mat_mod ! - ! These are the methods implementing the MEDIATOR pattern - ! to allow switch between arbitrary. - ! Indeed, the TO/FROM FMT can be implemented at the base level - ! in terms of the TO/FROM COO per the MEDIATOR design pattern. - ! This does not prevent most of the derived classes to - ! provide their own versions with shortcuts. - ! A%{MV|CP}_{TO|FROM}_{FMT|COO} - ! MV|CP: copy versus move, i.e. deallocate - ! TO|FROM: invoked from source or target object - ! - ! + !> Function cp_to_coo: + !! \brief Copy and convert to psb_d_coo_sparse_mat + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_cp_to_coo(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ @@ -366,6 +428,13 @@ module psb_d_base_mat_mod end subroutine psb_d_base_cp_to_coo end interface + ! + !> Function cp_from_coo: + !! \brief Copy and convert from psb_d_coo_sparse_mat + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_d_base_cp_from_coo(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ @@ -375,6 +444,14 @@ module psb_d_base_mat_mod end subroutine psb_d_base_cp_from_coo end interface + ! + !> Function cp_to_fmt: + !! \brief Copy and convert to a class(psb_d_base_sparse_mat) + !! Invoked from the source object. Can be implemented by + !! simply invoking a%cp_to_coo(tmp) and then b%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_cp_to_fmt(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -384,6 +461,14 @@ module psb_d_base_mat_mod end subroutine psb_d_base_cp_to_fmt end interface + ! + !> Function cp_from_fmt: + !! \brief Copy and convert from a class(psb_d_base_sparse_mat) + !! Invoked from the target object. Can be implemented by + !! simply invoking b%cp_to_coo(tmp) and then a%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_cp_from_fmt(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -393,6 +478,13 @@ module psb_d_base_mat_mod end subroutine psb_d_base_cp_from_fmt end interface + ! + !> Function mv_to_coo: + !! \brief Convert to psb_d_coo_sparse_mat, freeing the source. + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_mv_to_coo(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ @@ -402,6 +494,13 @@ module psb_d_base_mat_mod end subroutine psb_d_base_mv_to_coo end interface + ! + !> Function mv_from_coo: + !! \brief Convert from psb_d_coo_sparse_mat, freeing the source. + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_d_base_mv_from_coo(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ @@ -411,6 +510,14 @@ module psb_d_base_mat_mod end subroutine psb_d_base_mv_from_coo end interface + ! + !> Function mv_to_fmt: + !! \brief Convert to a class(psb_d_base_sparse_mat), freeing the source. + !! Invoked from the source object. Can be implemented by + !! simply invoking a%mv_to_coo(tmp) and then b%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_mv_to_fmt(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -420,6 +527,14 @@ module psb_d_base_mat_mod end subroutine psb_d_base_mv_to_fmt end interface + ! + !> Function mv_from_fmt: + !! \brief Convert from a class(psb_d_base_sparse_mat), freeing the source. + !! Invoked from the target object. Can be implemented by + !! simply invoking b%mv_to_coo(tmp) and then a%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_d_base_mv_from_fmt(a,b,info) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -430,11 +545,13 @@ module psb_d_base_mat_mod end interface ! - ! Transpose methods. - ! You can always default to COO to do the actual - ! transpose work. - ! - interface + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version + !! \param b The output variable + ! + interface subroutine psb_d_base_transp_2mat(a,b) import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ class(psb_d_base_sparse_mat), intent(in) :: a @@ -442,6 +559,13 @@ module psb_d_base_mat_mod end subroutine psb_d_base_transp_2mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version. + !! \param b The output variable + ! interface subroutine psb_d_base_transc_2mat(a,b) import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ @@ -450,6 +574,12 @@ module psb_d_base_mat_mod end subroutine psb_d_base_transc_2mat end interface + ! + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_d_base_transp_1mat(a) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -457,6 +587,12 @@ module psb_d_base_mat_mod end subroutine psb_d_base_transp_1mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_d_base_transc_1mat(a) import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ @@ -684,7 +820,11 @@ module psb_d_base_mat_mod ! COO interfaces ! ! == =============== - + + ! + !> + !! \see psb_base_mat_mod::psb_base_reallocate_nz + ! interface subroutine psb_d_coo_reallocate_nz(nz,a) import :: psb_ipk_, psb_d_coo_sparse_mat diff --git a/base/modules/psb_s_base_mat_mod.f90 b/base/modules/psb_s_base_mat_mod.f90 index a1a0d47c..0bd5482e 100644 --- a/base/modules/psb_s_base_mat_mod.f90 +++ b/base/modules/psb_s_base_mat_mod.f90 @@ -39,9 +39,8 @@ module psb_s_base_mat_mod !> \namespace psb_base_mod \class psb_s_base_sparse_mat !! \extends psb_base_mod::psb_base_sparse_mat - !! This module contains the definition of the psb_s_base_sparse_mat - !! type, extending the psb_base_sparse_mat to define a middle - !! level real(psb_spk_) sparse matrix object. + !! The psb_s_base_sparse_mat type, extending psb_base_sparse_mat, + !! defines a middle level real(psb_spk_) sparse matrix object. !! This class object itself does not have any additional members !! with respect to those of the base class. No methods can be fully !! implemented at this level, but we can define the interface for the @@ -49,13 +48,6 @@ module psb_s_base_mat_mod !! field, such as the matrix-vector product; this interface is defined, !! but is supposed to be overridden at the leaf level. !! - !! This module also contains the definition of the - !! psb_s_coo_sparse_mat type and the related methods. This is the - !! reference type for all the format transitions, copies and mv unless - !! methods are implemented that allow the direct transition from one - !! format to another. It is defined here since all other classes must - !! refer to it per the MEDIATOR design pattern. - !! !! About the method MOLD: this has been defined for those compilers !! not yet supporting ALLOCATE( ...,MOLD=...); it's otherwise silly to !! duplicate "by hand" what is specified in the language (in this case F2008) @@ -123,10 +115,23 @@ module psb_s_base_mat_mod private :: s_base_cp_from, s_base_mv_from + !> \namespace psb_base_mod \class psb_s_base_sparse_mat + !! \extends psb_base_mod::psb_base_sparse_mat + !! + !! psb_s_coo_sparse_mat type and the related methods. This is the + !! reference type for all the format transitions, copies and mv unless + !! methods are implemented that allow the direct transition from one + !! format to another. It is defined here since all other classes must + !! refer to it per the MEDIATOR design pattern. + !! type, extends(psb_s_base_sparse_mat) :: psb_s_coo_sparse_mat - + !> Number of nonzeros. integer(psb_ipk_) :: nnz - integer(psb_ipk_), allocatable :: ia(:), ja(:) + !> Row indices. + integer(psb_ipk_), allocatable :: ia(:) + !> Column indices. + integer(psb_ipk_), allocatable :: ja(:) + !> Coefficient values. real(psb_spk_), allocatable :: val(:) contains @@ -206,20 +211,40 @@ module psb_s_base_mat_mod ! ! == ================= - ! - ! CSPUT: Hand over a set of values to A. - ! Simple description: - ! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) - ! - ! Catches: - ! 1. If A is in the BUILD state, then this method - ! can only be called for COO matrice, in which case it - ! is more like queueing coefficients for later processing; - ! 2. If A is in the UPDATE state, then every derived class must - ! implement it; - ! 3. In the UPDATE state, depending on the value of DUPL flag - ! inside A, it will be A=VAL or A = A + VAL - ! + !> Function csput: + !! \brief Insert coefficients. + !! + !! + !! Given a list of NZ triples + !! (IA(i),JA(i),VAL(i)) + !! record a new coefficient in A such that + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ). + !! + !! The internal components IA,JA,VAL are reallocated as necessary. + !! Constraints: + !! - If the matrix A is in the BUILD state, then the method will + !! only work for COO matrices, all other format will throw an error. + !! In this case coefficients are queued inside A for further processing. + !! - If the matrix A is in the UPDATE state, then it can be in any format; + !! the update operation will perform either + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) + !! or + !! A(IA(1:nz),JA(1:nz)) = A(IA(1:nz),JA(1:nz))+VAL(1:NZ) + !! according to the value of DUPLICATE. + !! - Coefficients with (IA(I),JA(I)) outside the ranges specified by + !! IMIN:IMAX,JMIN:JMAX will be ignored. + !! + !! \param nz number of triples in input + !! \param ia(:) the input row indices + !! \param ja(:) the input col indices + !! \param val(:) the input coefficients + !! \param imin minimum row index + !! \param imax maximum row index + !! \param jmin minimum col index + !! \param jmax maximum col index + !! \param info return code + !! \param gtl(:) [none] an array to renumber indices (iren(ia(:)),iren(ja(:)) + !! ! interface subroutine psb_s_base_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) @@ -233,27 +258,36 @@ module psb_s_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk, clip. - ! getrow is the basic method, the other two are - ! basically convenient wrappers/shorthand. - ! - ! out(:) = A(imin:imax,:) - ! - ! The two methods differ on the output format - ! - ! GETROW returns as the set - ! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) ! - ! Optional arguments: - ! JMIN,JMAX: get A(IMIN:IMAX,JMIN:JMAX), - ! default 1:ncols - ! APPEND: append at the end of data, in which case - ! # used entries must be in NZ - ! RSCALE, CSCALE: scale output indices at base 1. + !> Function csgetrow: + !! \brief Get a (subset of) row(s) + !! + !! getrow is the basic method by which the other (getblk, clip) can + !! be implemented. + !! + !! Returns the set + !! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) + !! each identifying the position of a nonzero in A + !! between row indices IMIN:IMAX; + !! IA,JA are reallocated as necessary. + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param nz the number of output coefficients + !! \param ia(:) the output row indices + !! \param ja(:) the output col indices + !! \param val(:) the output coefficients + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! - ! GETROW must be overridden by all data formats. - ! - interface subroutine psb_s_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& & jmin,jmax,iren,append,nzin,rscale,cscale) @@ -272,13 +306,25 @@ module psb_s_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk. - ! out(:) = A(imin:imax,:) - ! - ! GETBLK returns a pbs_s_coo_sparse_mat with - ! the same contents. - ! Default implementation at base level - ! in terms of (derived) GETROW + !> Function csgetblk: + !! \brief Get a (subset of) row(s) + !! + !! getblk is very similar to getrow, except that the output + !! is packaged in a psb_s_coo_sparse_mat object + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param b the output (sub)matrix + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_s_base_csgetblk(imin,imax,a,b,info,& @@ -296,12 +342,26 @@ module psb_s_base_mat_mod end interface ! - ! CLIP: extract a subset - ! B(:,:) = A(imin:imax,jmin:jmax) - ! control: rscale,cscale as in getblk above. - ! - ! Default implementation at base level in terms of - ! GETBLK. + ! + !> Function csclip: + !! \brief Get a submatrix. + !! + !! csclip is practically identical to getblk. + !! One of them has to go away..... + !! + !! \param b the output submatrix + !! \param info return code + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_s_base_csclip(a,b,info,& @@ -316,9 +376,13 @@ module psb_s_base_mat_mod end interface ! - ! GET_DIAG method - ! - ! D(i) = A(i:i), i=1:min(nrows,ncols) + !> Function get_diag: + !! \brief Extract the diagonal of A. + !! + !! D(i) = A(i:i), i=1:min(nrows,ncols) + !! + !! \param d(:) The output diagonal + !! \param info return code. ! interface subroutine psb_s_base_get_diag(a,d,info) @@ -330,10 +394,13 @@ module psb_s_base_mat_mod end interface ! - ! MOLD: make B have the same dinamyc type - ! as A. - ! For compilers not supporting - ! allocate( mold= ) + !> Function mold: + !! \brief Allocate a class(psb_s_base_sparse_mat) with the + !! same dynamic type as the input. + !! This is equivalent to allocate( mold= ) and is provided + !! for those compilers not yet supporting mold. + !! \param b The output variable + !! \param info return code ! interface subroutine psb_s_base_mold(a,b,info) @@ -346,17 +413,12 @@ module psb_s_base_mat_mod ! - ! These are the methods implementing the MEDIATOR pattern - ! to allow switch between arbitrary. - ! Indeed, the TO/FROM FMT can be implemented at the base level - ! in terms of the TO/FROM COO per the MEDIATOR design pattern. - ! This does not prevent most of the derived classes to - ! provide their own versions with shortcuts. - ! A%{MV|CP}_{TO|FROM}_{FMT|COO} - ! MV|CP: copy versus move, i.e. deallocate - ! TO|FROM: invoked from source or target object - ! - ! + !> Function cp_to_coo: + !! \brief Copy and convert to psb_s_coo_sparse_mat + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_cp_to_coo(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ @@ -366,6 +428,13 @@ module psb_s_base_mat_mod end subroutine psb_s_base_cp_to_coo end interface + ! + !> Function cp_from_coo: + !! \brief Copy and convert from psb_s_coo_sparse_mat + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_s_base_cp_from_coo(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ @@ -375,6 +444,14 @@ module psb_s_base_mat_mod end subroutine psb_s_base_cp_from_coo end interface + ! + !> Function cp_to_fmt: + !! \brief Copy and convert to a class(psb_s_base_sparse_mat) + !! Invoked from the source object. Can be implemented by + !! simply invoking a%cp_to_coo(tmp) and then b%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_cp_to_fmt(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -384,6 +461,14 @@ module psb_s_base_mat_mod end subroutine psb_s_base_cp_to_fmt end interface + ! + !> Function cp_from_fmt: + !! \brief Copy and convert from a class(psb_s_base_sparse_mat) + !! Invoked from the target object. Can be implemented by + !! simply invoking b%cp_to_coo(tmp) and then a%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_cp_from_fmt(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -393,6 +478,13 @@ module psb_s_base_mat_mod end subroutine psb_s_base_cp_from_fmt end interface + ! + !> Function mv_to_coo: + !! \brief Convert to psb_s_coo_sparse_mat, freeing the source. + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_mv_to_coo(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ @@ -402,6 +494,13 @@ module psb_s_base_mat_mod end subroutine psb_s_base_mv_to_coo end interface + ! + !> Function mv_from_coo: + !! \brief Convert from psb_s_coo_sparse_mat, freeing the source. + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_s_base_mv_from_coo(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_ @@ -411,6 +510,14 @@ module psb_s_base_mat_mod end subroutine psb_s_base_mv_from_coo end interface + ! + !> Function mv_to_fmt: + !! \brief Convert to a class(psb_s_base_sparse_mat), freeing the source. + !! Invoked from the source object. Can be implemented by + !! simply invoking a%mv_to_coo(tmp) and then b%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_mv_to_fmt(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -420,6 +527,14 @@ module psb_s_base_mat_mod end subroutine psb_s_base_mv_to_fmt end interface + ! + !> Function mv_from_fmt: + !! \brief Convert from a class(psb_s_base_sparse_mat), freeing the source. + !! Invoked from the target object. Can be implemented by + !! simply invoking b%mv_to_coo(tmp) and then a%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_s_base_mv_from_fmt(a,b,info) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -430,11 +545,13 @@ module psb_s_base_mat_mod end interface ! - ! Transpose methods. - ! You can always default to COO to do the actual - ! transpose work. - ! - interface + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version + !! \param b The output variable + ! + interface subroutine psb_s_base_transp_2mat(a,b) import :: psb_ipk_, psb_s_base_sparse_mat, psb_base_sparse_mat, psb_spk_ class(psb_s_base_sparse_mat), intent(in) :: a @@ -442,6 +559,13 @@ module psb_s_base_mat_mod end subroutine psb_s_base_transp_2mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version. + !! \param b The output variable + ! interface subroutine psb_s_base_transc_2mat(a,b) import :: psb_ipk_, psb_s_base_sparse_mat, psb_base_sparse_mat, psb_spk_ @@ -450,6 +574,12 @@ module psb_s_base_mat_mod end subroutine psb_s_base_transc_2mat end interface + ! + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_s_base_transp_1mat(a) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -457,6 +587,12 @@ module psb_s_base_mat_mod end subroutine psb_s_base_transp_1mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_s_base_transc_1mat(a) import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_ @@ -684,7 +820,11 @@ module psb_s_base_mat_mod ! COO interfaces ! ! == =============== - + + ! + !> + !! \see psb_base_mat_mod::psb_base_reallocate_nz + ! interface subroutine psb_s_coo_reallocate_nz(nz,a) import :: psb_ipk_, psb_s_coo_sparse_mat diff --git a/base/modules/psb_z_base_mat_mod.f90 b/base/modules/psb_z_base_mat_mod.f90 index 44b8ff44..97c1856a 100644 --- a/base/modules/psb_z_base_mat_mod.f90 +++ b/base/modules/psb_z_base_mat_mod.f90 @@ -39,9 +39,8 @@ module psb_z_base_mat_mod !> \namespace psb_base_mod \class psb_z_base_sparse_mat !! \extends psb_base_mod::psb_base_sparse_mat - !! This module contains the definition of the psb_z_base_sparse_mat - !! type, extending the psb_base_sparse_mat to define a middle - !! level complex(psb_dpk_) sparse matrix object. + !! The psb_z_base_sparse_mat type, extending psb_base_sparse_mat, + !! defines a middle level complex(psb_dpk_) sparse matrix object. !! This class object itself does not have any additional members !! with respect to those of the base class. No methods can be fully !! implemented at this level, but we can define the interface for the @@ -49,13 +48,6 @@ module psb_z_base_mat_mod !! field, such as the matrix-vector product; this interface is defined, !! but is supposed to be overridden at the leaf level. !! - !! This module also contains the definition of the - !! psb_z_coo_sparse_mat type and the related methods. This is the - !! reference type for all the format transitions, copies and mv unless - !! methods are implemented that allow the direct transition from one - !! format to another. It is defined here since all other classes must - !! refer to it per the MEDIATOR design pattern. - !! !! About the method MOLD: this has been defined for those compilers !! not yet supporting ALLOCATE( ...,MOLD=...); it's otherwise silly to !! duplicate "by hand" what is specified in the language (in this case F2008) @@ -123,10 +115,23 @@ module psb_z_base_mat_mod private :: z_base_cp_from, z_base_mv_from + !> \namespace psb_base_mod \class psb_z_base_sparse_mat + !! \extends psb_base_mod::psb_base_sparse_mat + !! + !! psb_z_coo_sparse_mat type and the related methods. This is the + !! reference type for all the format transitions, copies and mv unless + !! methods are implemented that allow the direct transition from one + !! format to another. It is defined here since all other classes must + !! refer to it per the MEDIATOR design pattern. + !! type, extends(psb_z_base_sparse_mat) :: psb_z_coo_sparse_mat - + !> Number of nonzeros. integer(psb_ipk_) :: nnz - integer(psb_ipk_), allocatable :: ia(:), ja(:) + !> Row indices. + integer(psb_ipk_), allocatable :: ia(:) + !> Column indices. + integer(psb_ipk_), allocatable :: ja(:) + !> Coefficient values. complex(psb_dpk_), allocatable :: val(:) contains @@ -206,20 +211,40 @@ module psb_z_base_mat_mod ! ! == ================= - ! - ! CSPUT: Hand over a set of values to A. - ! Simple description: - ! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) - ! - ! Catches: - ! 1. If A is in the BUILD state, then this method - ! can only be called for COO matrice, in which case it - ! is more like queueing coefficients for later processing; - ! 2. If A is in the UPDATE state, then every derived class must - ! implement it; - ! 3. In the UPDATE state, depending on the value of DUPL flag - ! inside A, it will be A=VAL or A = A + VAL - ! + !> Function csput: + !! \brief Insert coefficients. + !! + !! + !! Given a list of NZ triples + !! (IA(i),JA(i),VAL(i)) + !! record a new coefficient in A such that + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ). + !! + !! The internal components IA,JA,VAL are reallocated as necessary. + !! Constraints: + !! - If the matrix A is in the BUILD state, then the method will + !! only work for COO matrices, all other format will throw an error. + !! In this case coefficients are queued inside A for further processing. + !! - If the matrix A is in the UPDATE state, then it can be in any format; + !! the update operation will perform either + !! A(IA(1:nz),JA(1:nz)) = VAL(1:NZ) + !! or + !! A(IA(1:nz),JA(1:nz)) = A(IA(1:nz),JA(1:nz))+VAL(1:NZ) + !! according to the value of DUPLICATE. + !! - Coefficients with (IA(I),JA(I)) outside the ranges specified by + !! IMIN:IMAX,JMIN:JMAX will be ignored. + !! + !! \param nz number of triples in input + !! \param ia(:) the input row indices + !! \param ja(:) the input col indices + !! \param val(:) the input coefficients + !! \param imin minimum row index + !! \param imax maximum row index + !! \param jmin minimum col index + !! \param jmax maximum col index + !! \param info return code + !! \param gtl(:) [none] an array to renumber indices (iren(ia(:)),iren(ja(:)) + !! ! interface subroutine psb_z_base_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) @@ -233,27 +258,36 @@ module psb_z_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk, clip. - ! getrow is the basic method, the other two are - ! basically convenient wrappers/shorthand. - ! - ! out(:) = A(imin:imax,:) - ! - ! The two methods differ on the output format - ! - ! GETROW returns as the set - ! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) ! - ! Optional arguments: - ! JMIN,JMAX: get A(IMIN:IMAX,JMIN:JMAX), - ! default 1:ncols - ! APPEND: append at the end of data, in which case - ! # used entries must be in NZ - ! RSCALE, CSCALE: scale output indices at base 1. + !> Function csgetrow: + !! \brief Get a (subset of) row(s) + !! + !! getrow is the basic method by which the other (getblk, clip) can + !! be implemented. + !! + !! Returns the set + !! NZ, IA(1:nz), JA(1:nz), VAL(1:NZ) + !! each identifying the position of a nonzero in A + !! between row indices IMIN:IMAX; + !! IA,JA are reallocated as necessary. + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param nz the number of output coefficients + !! \param ia(:) the output row indices + !! \param ja(:) the output col indices + !! \param val(:) the output coefficients + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! - ! GETROW must be overridden by all data formats. - ! - interface subroutine psb_z_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& & jmin,jmax,iren,append,nzin,rscale,cscale) @@ -272,13 +306,25 @@ module psb_z_base_mat_mod end interface ! - ! CSGET methods: getrow, getblk. - ! out(:) = A(imin:imax,:) - ! - ! GETBLK returns a pbs_z_coo_sparse_mat with - ! the same contents. - ! Default implementation at base level - ! in terms of (derived) GETROW + !> Function csgetblk: + !! \brief Get a (subset of) row(s) + !! + !! getblk is very similar to getrow, except that the output + !! is packaged in a psb_z_coo_sparse_mat object + !! + !! \param imin the minimum row index we are interested in + !! \param imax the minimum row index we are interested in + !! \param b the output (sub)matrix + !! \param info return code + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_z_base_csgetblk(imin,imax,a,b,info,& @@ -296,12 +342,26 @@ module psb_z_base_mat_mod end interface ! - ! CLIP: extract a subset - ! B(:,:) = A(imin:imax,jmin:jmax) - ! control: rscale,cscale as in getblk above. - ! - ! Default implementation at base level in terms of - ! GETBLK. + ! + !> Function csclip: + !! \brief Get a submatrix. + !! + !! csclip is practically identical to getblk. + !! One of them has to go away..... + !! + !! \param b the output submatrix + !! \param info return code + !! \param imin [1] the minimum row index we are interested in + !! \param imax [a%get_nrows()] the minimum row index we are interested in + !! \param jmin [1] minimum col index + !! \param jmax [a\%get_ncols()] maximum col index + !! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:)) + !! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1] + !! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1] + !! ( iren cannot be specified with rscale/cscale) + !! \param append [false] append to ia,ja + !! \param nzin [none] if append, then first new entry should go in entry nzin+1 + !! ! interface subroutine psb_z_base_csclip(a,b,info,& @@ -316,9 +376,13 @@ module psb_z_base_mat_mod end interface ! - ! GET_DIAG method - ! - ! D(i) = A(i:i), i=1:min(nrows,ncols) + !> Function get_diag: + !! \brief Extract the diagonal of A. + !! + !! D(i) = A(i:i), i=1:min(nrows,ncols) + !! + !! \param d(:) The output diagonal + !! \param info return code. ! interface subroutine psb_z_base_get_diag(a,d,info) @@ -330,10 +394,13 @@ module psb_z_base_mat_mod end interface ! - ! MOLD: make B have the same dinamyc type - ! as A. - ! For compilers not supporting - ! allocate( mold= ) + !> Function mold: + !! \brief Allocate a class(psb_z_base_sparse_mat) with the + !! same dynamic type as the input. + !! This is equivalent to allocate( mold= ) and is provided + !! for those compilers not yet supporting mold. + !! \param b The output variable + !! \param info return code ! interface subroutine psb_z_base_mold(a,b,info) @@ -346,17 +413,12 @@ module psb_z_base_mat_mod ! - ! These are the methods implementing the MEDIATOR pattern - ! to allow switch between arbitrary. - ! Indeed, the TO/FROM FMT can be implemented at the base level - ! in terms of the TO/FROM COO per the MEDIATOR design pattern. - ! This does not prevent most of the derived classes to - ! provide their own versions with shortcuts. - ! A%{MV|CP}_{TO|FROM}_{FMT|COO} - ! MV|CP: copy versus move, i.e. deallocate - ! TO|FROM: invoked from source or target object - ! - ! + !> Function cp_to_coo: + !! \brief Copy and convert to psb_z_coo_sparse_mat + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_cp_to_coo(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ @@ -366,6 +428,13 @@ module psb_z_base_mat_mod end subroutine psb_z_base_cp_to_coo end interface + ! + !> Function cp_from_coo: + !! \brief Copy and convert from psb_z_coo_sparse_mat + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_z_base_cp_from_coo(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ @@ -375,6 +444,14 @@ module psb_z_base_mat_mod end subroutine psb_z_base_cp_from_coo end interface + ! + !> Function cp_to_fmt: + !! \brief Copy and convert to a class(psb_z_base_sparse_mat) + !! Invoked from the source object. Can be implemented by + !! simply invoking a%cp_to_coo(tmp) and then b%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_cp_to_fmt(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -384,6 +461,14 @@ module psb_z_base_mat_mod end subroutine psb_z_base_cp_to_fmt end interface + ! + !> Function cp_from_fmt: + !! \brief Copy and convert from a class(psb_z_base_sparse_mat) + !! Invoked from the target object. Can be implemented by + !! simply invoking b%cp_to_coo(tmp) and then a%cp_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_cp_from_fmt(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -393,6 +478,13 @@ module psb_z_base_mat_mod end subroutine psb_z_base_cp_from_fmt end interface + ! + !> Function mv_to_coo: + !! \brief Convert to psb_z_coo_sparse_mat, freeing the source. + !! Invoked from the source object. + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_mv_to_coo(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ @@ -402,6 +494,13 @@ module psb_z_base_mat_mod end subroutine psb_z_base_mv_to_coo end interface + ! + !> Function mv_from_coo: + !! \brief Convert from psb_z_coo_sparse_mat, freeing the source. + !! Invoked from the target object. + !! \param b The input variable + !! \param info return code + ! interface subroutine psb_z_base_mv_from_coo(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_ @@ -411,6 +510,14 @@ module psb_z_base_mat_mod end subroutine psb_z_base_mv_from_coo end interface + ! + !> Function mv_to_fmt: + !! \brief Convert to a class(psb_z_base_sparse_mat), freeing the source. + !! Invoked from the source object. Can be implemented by + !! simply invoking a%mv_to_coo(tmp) and then b%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_mv_to_fmt(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -420,6 +527,14 @@ module psb_z_base_mat_mod end subroutine psb_z_base_mv_to_fmt end interface + ! + !> Function mv_from_fmt: + !! \brief Convert from a class(psb_z_base_sparse_mat), freeing the source. + !! Invoked from the target object. Can be implemented by + !! simply invoking b%mv_to_coo(tmp) and then a%mv_from_coo(tmp). + !! \param b The output variable + !! \param info return code + ! interface subroutine psb_z_base_mv_from_fmt(a,b,info) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -430,11 +545,13 @@ module psb_z_base_mat_mod end interface ! - ! Transpose methods. - ! You can always default to COO to do the actual - ! transpose work. - ! - interface + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version + !! \param b The output variable + ! + interface subroutine psb_z_base_transp_2mat(a,b) import :: psb_ipk_, psb_z_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ class(psb_z_base_sparse_mat), intent(in) :: a @@ -442,6 +559,13 @@ module psb_z_base_mat_mod end subroutine psb_z_base_transp_2mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! Copyout version. + !! \param b The output variable + ! interface subroutine psb_z_base_transc_2mat(a,b) import :: psb_ipk_, psb_z_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ @@ -450,6 +574,12 @@ module psb_z_base_mat_mod end subroutine psb_z_base_transc_2mat end interface + ! + !> Function transp: + !! \brief Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_z_base_transp_1mat(a) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -457,6 +587,12 @@ module psb_z_base_mat_mod end subroutine psb_z_base_transp_1mat end interface + ! + !> Function transc: + !! \brief Conjugate Transpose. Can always be implemented by staging through a COO + !! temporary for which transpose is very easy. + !! In-place version. + ! interface subroutine psb_z_base_transc_1mat(a) import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_ @@ -684,7 +820,11 @@ module psb_z_base_mat_mod ! COO interfaces ! ! == =============== - + + ! + !> + !! \see psb_base_mat_mod::psb_base_reallocate_nz + ! interface subroutine psb_z_coo_reallocate_nz(nz,a) import :: psb_ipk_, psb_z_coo_sparse_mat diff --git a/docs/html/img1.png b/docs/html/img1.png index 2bcd8b2c6eb4f57b5457d47249c8c88579088bf8..f20c575316dbe600d67a871a6aa8db14b2a437b8 100644 GIT binary patch delta 182 zcmX@Xc!_a>O1)NqPl)S*0|%BbU*6l>o1UKT>+7qouFk-~z{|_KWy_XXvt~6kG?bK- zL`6lJn3$ZA^40{(F_r}R1v5B2yO9Rugn7C+hH%VGPDpr=n2?YF#7PMW$qbCl0tZhr zu(LPVEaf(kQ|@5UwqZLWv&W&yopnifHzV&B|Aq^5^iPW@^z^P_KVWiR=_+@?SzG|Sd(gtV+gQu&X%Q~loCIB*;Ka2nX delta 172 zcmcb_c!F_)O1*l3Pl)U0&6`)OSTSeLoR*fBii(PyoScM&gpiOB0|NsU6%`2y2_7CE z1_p)`g{$5JDaMi@zhDN3XE)M-9Dh$2#}JO0$v_Q>K%C0J$Y&7Apd=xg&~TGs#gaV@ zjFKN3IwTa*m^R*6?Xc^H_-r;-EpUFLk?0DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00BHnL_t(IjbmVd0S+K`U_b*07#I@3 zh-05b?R7%(tQ;9)qx!>|Bo-Ul8gCx4y^1waez1cM@G&s)fZfK!;PZU6AkoMJ@fKJ$l;k19ZVG^a z0+`}!f{QR(^gtNwU=k$Hwc!9nh#3^tU?IMqf(EeA0uZ5Oq{zU)#sF0n5ETGb#lmna z0BY<4s1VS?1%K4^z~BG}7`D87_lAK176ed1uFo>>i(sM$Rxz+HV1V(M4nWm#rZ+Hr zf~#R*ILm;khNnO!k^xCgCQwcR#9&fVc2ZIV3$ia@=nsI1g19U|+C~7)99v-ea)5~* ze3q8x$S@bpF2>m0GZt`Bh@jU3C_@0@HiRhL%cy?GCKx)r006gQQt0N5!h-++002ov JPDHLkV1licrAPn( delta 369 zcmV-%0gnE@1CaxeDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc009q4L_t(IjbmVd0Y)I6z<>s}GcbH$ zVA#OGzzGxKWMgy0_GM)eat0h@vYjLDu<0%35$WjP!gAPhdZ z5WmL*s7?@((a{ESIn;~=tp}j0)P>+o1B7Kr%;5qyFnHeo|1SU%n+QSH!6q0mg@LHNcQHz*NJ%A!{Q8lA11HxEG+Qu@_+AdH@sMz`*o?fw2Px!8bbt{8ji~MHyz-j5WyA)G=HIpZa@=9W0RAah6VrtiM>uV^-@5g P00000NkvXXu0mjfGSr(+ diff --git a/docs/html/img100.png b/docs/html/img100.png index 154e1ae1bb0c8d6ac08746ada826c5d87814e8f4..70e7aed4d10facbba3a8f51aaab46f480fed825f 100644 GIT binary patch delta 249 zcmV@}0{{R4QVr^&0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*HhDk(0 zR0x@4U|?Y2VgP|l3=qKmfXRUY0Tg%_Y+zu}eiMKs=6!%=4{}3=0t3T`LVk9E1q}EA zkJg4mtC@m;tPKyi`4}cJFmN&mOkm{XWMJTBTyR0EAp@^=oM7S627L&@(|H;!Qpj)y zO3VWDnH`t{48X)30U3}0BLhPRnBV}qfq?-4DZ?G7Lcnj`00000NkvXXu0mjfZ#r4i delta 245 zcmeBRYGIlnUeC+I%)r2SW#$YX1_lP*0G|-o&6_u`Sg~TxoH-LFOlWCosi>&P$;nAb zNC*iD@$m4lv9VE6QIU|4;Nb!3*tXlQ6G$g!Nh|mt?dTPgg&ebxsLQ0O8tIbN~PV diff --git a/docs/html/img101.png b/docs/html/img101.png index c6ccf1f825ea81091435d639faca26618e357dce..56b1f63f6dadb8ab9aa72dc7c015e92952b84dfa 100644 GIT binary patch delta 187 zcmdnPc#3g?cs(BrGXn!-Vc70+1_lO$0G|-o0|yQ)U%tGzw>LdK-PhMwU0oe0!^_LN zWy_XXvt~6kG?bK-L`6k8I5?P?m`F)U<=j~l3sk{a666=m;PC858j$1R>Eal|F*7+K zAt5ax;RnMJ9vw!Wf&*I_PCZ~Wv&~%fJheujQ!eoX7i-bg&e!>CXWoB#G1LsKc nY(Mygc^SX-fgUzDHa3QXdAuQAiXXy&hBA1%`njxgN@xNAigi4_ delta 173 zcmX@bxQB6qcs(x*GXn$T_d_RdGB7Zx2l#}zZr;3k#flXZCQN8)X{o5F$jQk`NJt0? z3Gwjou(7dGQBjeQkN~Q^bLH?JAjMb`;uyj)GdUsQK}tfx4Td8; zZ+LkM4k$6Cc33fRw!8AISg@m^aqhv!#`c+wjVDbS8P&`qjs@^7+QBWs*ObY8u8Dz- Yp^k-p=UKrjSD<+ep00i_>zopr0P%M`dH?_b diff --git a/docs/html/img102.png b/docs/html/img102.png index 1015f11a8cd5d857b4f48666d68903f24dc2a44e..760ef9fa12b98bcb2f2e678ec8d4ecbf01a2284d 100644 GIT binary patch delta 122 zcmeBYoX$8wrC2(^C&cx@fdlF3>FVn0y}iA>yu4esY$+)ziHeFcF)+?IBOoWy+`z!hmQduFv|G$UVuuDp+;e7akxPyC PKn)C@u6{1-oD!M`~0{{R4e|Yjk0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hib+I4 zR0x@4U;u&zAVQM?0+{qZL0Jr3415-RKzaiM3Sb3dMuvn7Om;w;lYs-s#t!&kCIZm} zhky?tYYKKYYzP3-4>4uIt5GcYrKU?`l>26hwQss#*QtD_dkZDIfb8_gVuMW_YA00000NkvXXu0mjf Da0gPB delta 242 zcmV@}0{{R4v?L+s0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*He@R3^ zR0x@4U|?Wi6aW$oLJSbV*Z&*JV&G=rV^jjtX$&ZU3y2#SK5G;NFklBPP#P%D>Tuw~ zhXX+N2B(0A29O{Vvw#o|eL%qW0)_hkM5IiJWnga2P~a#4navx(%CM8cmO&P*;4y8!(nF^@q!us$0EMO(d0fmLz5oCK07*qoM6N<$f(GhVegFUf diff --git a/docs/html/img104.png b/docs/html/img104.png index 4d7a3454ba28427d26eb082d2e838372791648bd..d46b428c30024f55a5b89f65b92e9a2be1537b13 100644 GIT binary patch delta 358 zcmV-s0h#{$0)_*SDSyDgz>STKXJ=U4Gj&nw6vOur5VVqQtgXhv!fqeMB!4U8x+}OK;wkQ5PR_kI zfe-Zg3NsgLMMNwYDc_-WYz?^!4`QGFj3ih|DL|MbwVl?vXnU@9rO0h#vRZazSJtbD zu7+7_%3w8P+nr3qi-*d=M#}N2x%iNnfL&<{907*qoM6N<$ Ef}*FTVgLXD delta 347 zcmV-h0i^zh1N#DyDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfbSx z7z_*y0001q&wkMW0004WQchCR^f#A~0l#^HyQ)~-5#smLB+hMwq zB%NgQ>5B}J?iv@>rWLGyQ tmb~S@BXetsV`TQeDcZ!3@Rzp#2e1C4D?$72=A!@r002ovPDHLkV1lr*mQMfx diff --git a/docs/html/img105.png b/docs/html/img105.png index 6e24d57c8f743a02ef5b5430fe8eff70be153eb8..415260ee8a520189e5b1a4c7ac6fbb39b7beb899 100644 GIT binary patch delta 233 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004+dL_t&-m1AH)0z6Q<5s3AWB^U}A zI291QO}jxPvjQ`icfbKmaWW);s5CH0K+(Nh8$>d4v2%fFHev=Au;?)cMi9lp2en)U zLK|?Q=*4Cp9B>@q-2iiR`veAt`7jC2WkBcNhVeGC9$>J^nE;AS(q j9bnj(gXB+iS3m&(^3fhDDk30&00000NkvXXu0mjf6RTFt delta 230 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004zaL_t&-m1AH)0xU@E4mit@fx+Pd z18W1499WWrfeXwFNB~oe3>!eye=zufY%D`Z3z%Z#1zW(+z+VRD<}(<8C?m_B5`c0aGN^(m_ALq^iYbACO#vdY zb^$VX&2o^|1O~AJpjs1X0QMFhB;A2zgESNX0Cqkf%%iMOv;Y7A07*qoM6N<$g1*68 AMF0Q* delta 221 zcmV<303!dE0{H=uB!47OOjJd)v$LqEsGOXfgoK26czA4VY*bWKNJvOLJUkc}7z_*y z0002Ib^iwd0004WQchCOf&gv>Y_0(yG7-vM$lwm9Ex-cI8yKvi5*7)_T!{1{h6n@)W)!`^ZWI6j XJz*u~-TmTG00000NkvXXu0mjf#*t24 diff --git a/docs/html/img107.png b/docs/html/img107.png index cb96fe7f1ab812c042793a4bb342884f0fdca1c9..eb2728e992b384f2636832ebe87db08d29bb380d 100644 GIT binary patch delta 260 zcmV+f0sH=l0+Rxe7k>@}0{{R4%k?uC0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hkx4{B zR0x@4U;u*WAcFf00~qi!^F3fd0B!~aAj!kE0ZHuC25Ey03w=H?Fic=#DEQzofdL_pnM*&EL zU4UU)14A`KA?F7Muxm{i80ItZZD4x9bATJH2V{9C5Hkue0Z9N~Ss(H#AZm&L0000< KMNUMnLSTY^X<8-# delta 249 zcmV=|0{{R4O<_T~0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*HhDk(0 zR0x@4U;qLS5W!Qz00z7qY#SI5fQdl?NV2gwAc>_kur)XcTykJwXkc(S@Zkfp6b4|L z7SLk4pp}7v`2z>T#{~^Qp$2}21_1#eLx9baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc009R{L_t(IjbmT{1EvWdco?vN1FAes z6VL@0Fff8?mH;4=hrtz_Mx0;;&rSgb2CjzF3=B4>jer8oXMaf2j|UupvkDF{EMR94 zIKZIfqyXlC1REMAa56G9K-2*_)UuW!V8tQM1Y~ zXs_9TPz9F(vSJl(Gpqwrvl$f5F!65SdH__Tr0k@mh$I69oF5np1sG;AOyCNbFrR^4 z5MdTv2FT{!!1zj`hb6Uv$C%+ZgWMv7D!2?T=L?YL+u;BJ*}g%@ap|`r00000NkvXX Hu0mjf3B`>C delta 367 zcmV-#0g(QQ1CIlcDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc009k2L_t(IjbmVd0D})K3|K%zEH{G! zx*$w|^P_-*0yo2XY#K2DGn5Ww7EWMbU=&DZU`SPV5MW?nEq^6SKM`O9ob{l9QGlNz zU;#tNjRuAd1q=o_)X@j<5mLZ(;6uU&IS~OchwZ`#g9X4qUckwq#LdpY*3ppw^a%$8 z0|$e`hK46R`~e_UEDVYh3ux&N-&<0{NUtn0Kz&Me?fpdZZKLb~S0>Z`* z49l1pni(8`Os)WiB??8hR~fj189EraTo7h)G%zf22$6n4qMwE}001KxI23(a2y*}c N002ovPDHLkV1lg=gVX>3 diff --git a/docs/html/img109.png b/docs/html/img109.png index c37fb3777baef35bd62274b8ff7d0f37eaf22007..9cb013b57f98fb22266870d9acc86917375688f7 100644 GIT binary patch delta 186 zcmV;r07d`M0oDPKB!4haOjJd{z`&=cr;Uw`XJ=clW-|hW?a#0hCd~R9VMh&& oHHSfL1DL_&{*Ym7jsgP%0GxymB*@~ delta 156 zcmV;N0Av5w0nh=EBr_^dOjJd)v$LqEsGOXfgoK1_Y;0g)U{q98NJvOLJUlQkFeD@- z7#J7~3=9AO0E+mcy^&oTUW-7?4rMa}@c{+~RwQXB0T5})fCiWi5DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00FQ`L_t(IjqOysP69y`Jq)h}7M5s? zG@4<3R2FC~DQIjAG1gWVgvt+4E9i)ovCzt78ylmMPgo-f7JtN0Sy`CaSQtWMj8@(q zW{1auCKTFmvY9<|&b@o*xj;X3m&{=Z!hqG&4GfFvftd^eEDcnD2^N=ieA-F61L&=*rEwNQVP2iZKG4$PF2b>C1Ispid-nVEo@*@YT8McBF-&o%eB|h zPbU};w69yOmfgRK#BWv~KDbA{exb8M!JVU^M=k6~hkvl*MxE}%;Dc%wZ@?^6E{YeBM&qD2H$*|Eh%(J}(@YBS5Zb#})oldm2gOxxp6{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00EClL_t(IjqOyuO2beXJ^5`kC8;75 zsnEDM=Mg%%SDXYLvMEko-7<(|P>6$27wr?+OoEGMbPRoh;C~YoL?{%AH|f1;nxuuI zgF_GD%gOn^bCY|&djrfuV`K*Kd&9J{|4q$${G{AC zWJJ<eHg)OdDna2M>ojVKzoBs*92{5G~wP-S9iH;kj{HxnrP`E{PJ o0++3<7x`{1Ru}%iR`^r=01}>6-GnF=5&!@I07*qoM6N<$f*L{Jl>h($ diff --git a/docs/html/img110.png b/docs/html/img110.png index 4ad33e56b2377162a101a190914469207b756fb4..b1ec30943d39d6376c0741df32336959dc8dfc47 100644 GIT binary patch delta 204 zcmV;-05kuD0)zsPDKx;qz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX+{^8-D`^7_ebrVCICfnK>93_!$I%tP5~?26hI9ED+7jz{$>l z1+X))F-!nyX5d^2H97%A7celN0MQ>999Xev<34v7h@BYyPJ+32ftck3*90(!GZ93_ zZ-A)ebpQ!1KLFuP13HiM0An_oqZ5CSL8VTBJM0hx0|3)76urHeSq(A(0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%bt;48-E7|7}&c7q`q@9`#}4eo$lEqm26T?jXjF^M1K%bqBEL_98n@B=Q5>) z8uQv)Pse?jlE)_kn+Bjo!7fDk(>VU2%}=GsEaH$4aiCHP1>#yJe5$P!H>_w;%yXQ- zNUj{)&ukSJF2@NC*Bd@HZ{jZ|AhGxrj4=DqN7h-sMdnydD7K<%0|lpI-6o^Xlz!8) z{u>&_!dGNpGJiI5$7YgW6>g=0o%R0Tx41!0eNvDTaZ0m{itSN$JO2{=g} zknD@Vc@I6F3lE1z(ld;~OdR(eV0mobQJGRR>=Lq2%72ms(7;BYQDU1NyFMW$xV+{C zjYth9K5TTGB~q=|pd+nGjPeozXjnuf%B%vm$MtSau+C(xpcd`PNLD4PA!Z~nYstuj zTBBJ`=F-hLD^}GA7sybxe@h%V8H&{~HGFVFW@zm6SV!51WD)_-ouh0O+haA%(C~r#%R4Bl;GFv z$V`=~O_MR*ZDIF}UU+{0<~y8H>!WcQCTNGC3VT(Ie|N?i+#R0im6La8;bZfu6K=Zc drkj2`y#azh7MGPfB8&h4002ovPDHLkV1mGxl?DI+ delta 782 zcmV+p1M&Rc2AKws7=Hu<0005+p>iPr001yhOjJd)v$LqEsGOXfkdTmsgoJo_cx-HJ zU|?WWR8&YvNIX0|FfcGABqSIZ7z_*y0002$S<9XP0004WQchCP>15c-QtpKPR5S@@e($W~ijZ~|G*PJoglLlTn_mX>bQ{%Bl98eZrl+MPJ9IlK2nKMQ(~T~dA`>VSnt<61bizL~@B0=$_%Kw&A8+EhIWJ zmQZEb2bB;L0Bgpw^6h*F&e>J5d(daEpv^+N9ffK$9CZ;JQVv%Vb9g8Z{HH0 zoU!=H8(pKzO*_}cV!eZWQ~y*O1D&a)IycCxRi_@% diff --git a/docs/html/img112.png b/docs/html/img112.png index 69215c619b10b5bb57a01f7538b52331a1b7d17c..68806f76ae615dc135302481ae521e6d1b080e57 100644 GIT binary patch delta 390 zcmV;10eSwG1EvFzDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00AUPL_t(2k=0VMP69y?eS60VcPz&? z^qbfca*4e$egU1|!5>_-gM?hGh2aB;A(VtmHZ~R#wXo6#T7N4)!5P@V-kpVwiN0iJ z=gpg$o4qWshX5KV;W{g4P_JaZgV;xgOaZAes2gLG>5qmS5b>biVWO8M&mJT&!}O9* zEM8^EfkrJznzk}=m-r=2?CF#B`QoQGp|`$`*zz^JbsS3OFX*&+IdufN(}kq^){t4u z>n3`;bBfxoS${RC-x=%v;XjPXzMnZTDhR^3Oj6lXv2)C>xx`g|v%xK_o^$c};*tD> zLcKy3XkZ1WU%%syUI>36>Sq)yOkF+v#6ZDkU7q-F`EiN>=w8rJJdm|!;zJ`=?zU%@ ko81?fR3+K3H2gn&0TU=T!dQu@RsaA107*qoM6N<$g2pGb{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc009(9L_t(2kz-(h0yYrA$$$qiLnwX@ ze2S0(3y5g=0Ofu7z`$1kVki)+9|^F6^yNc23xGx&7<}hr;D2XeNMMK%01KKOV&#Si zaPlV@KvhnF=_kidB0&L^1_jRpP!Kji_>2&W4X&_(f#rdV43w$E4^+&g01t2`E(T!u zDAY4S0*#@8iD3g+f(x$S0NGdu2BM>3AOS1X(G$S2h6Feika=1_`~gLtVKRtd@nT>N zPl;yO0+a6nVsEzAkO~F{ZxGjECW8Un28bM7zr!*HI|fiv07k|H1qNORCQ!T}YhVTl4m2C`!~QCti5(FPQ*1-iU5y1)baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00ALML_t(Ijong9O2j}AeHo4B(`XLh zqUqg;3=M7s6~q$^bCNlNM`%2N^u~oKA}-ZMqdO6V!A0D~n}1l<9pX$I23LYUs8s6Z zQNI+>qM3U}Fg@HFAP1^X9U)oy#=uQ+tk&uE#OKa`kS0b-=3r$TT403c6hr8cZb(*J zm!q^UNJ<;LrUrfsb|ETw_EfY{8r&vX)ky|MzX}?~q2zExHq9V-XLwXf`rhx}#0F~I z1Wiq5Dzge?QG9g?fxnH5;BIMmW-Izu%%7$3LDuvoxp&$A`*n3jC-49~Gu7QBGqiO< zhcW?PXlGqQYZ?1E#jSR>r>klRmth?eUKlyTHdn6U=-eIr5xb hHoM@f(90D61)qD&GfgAKE@J=y002ovPDHLkV1mmcs>T2S delta 395 zcmV;60d)SO1F8d%DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00AgTL_t(IjbmVdf&wskfB_XGfQSVQ z7=VcvNJ#I-l)wP&92j~T7#bK(@8BmwGj6~K#1q(o20=go1Al`YV?zK#Jdh2x&>4uI z1Z-e%U}SKBC}B>3&;ksM6xmD)FhH@(2#6JUSfD&U2nBL&0bB{ILBc*hpc5Z3FoU>$ zK>UHhfgkA44-B(+@7}D{eP9B`8h4NYB=QnrN;oGdfT*Pg(QZo}88{LcxLg<*%26D_>4w6c p1h%#Thqu9i86?|?PsMNn01@>p8W?y6Z~y=R07*qoLbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008GnL_t(2k*$!yO2a@9hQDl#nsgfT z2!Y;9z!&fl`Y1j^z*`TpS3O8B9t4r%F*UI0HQ>dA^rUa%Y=2T{3KgsP!_F@A&;0Yx zLWhiiA+GG^eWb^+3xl50W!-(evv7mNi$wy)7O#e>SFYbA=AA`fQ6N8Pe2+@IVdkAB zrca$fs?$EwSd0xdksa!Qb7jYKQL65yl^kHxwMtI*X9vGRvi{{qxC`8nk&e0aVf4gB zbN$H;EFDsLgF-Df%Av)G!}!i*W_eKG_i!5%`jni8t7cLX!An6p+$lKo@p;RPXhHbz bEAE3Y0yrl8!1p_V00000NkvXXu0mjfm#dnc delta 313 zcmV-90mlC60@(tPDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007rXL_t(2k-d;H4naW>hCk1~#}dy4 zM7E{cC`73cg$pROq9)N(saNR$dIcA75`_ckw08C>2%_TOnSV_-|IEMh4+JcI8eWn2 zSuJ8NZ@4=hdf^h<-)TG{mZCHQW$iVk&I#JbxXhVdR^ia!L_T8b4eQc83DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc006;BL_t(2k-bn$3c@fDeNFr|jWr7o z5by#8FVZ6g+)LK3Jb}0t3(=h*xN+sG-o(k2QWw>oKA6eyW`8m-F90J&iv-3u)i$QF zMlWU*6YdS*`bXM*DvlL5Ej$8n*EtT@bI;<#_OCD~_|zyx%jGdrD{4u_h;$6KNZ3zZ zlyK2t&XY1O_%$*M<&)467tU+Wt7`L1Yh*{Vu#JQt(nkc?DJ{1DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc006&9L_t(2kz-)M2?88|1P2aD4u%8< zHhvI`g<%42Gr&r@fJ8zJKcfJMSIf%H@Rb=Nlfb})Un^Fiz<*!>rnwmwfK6mz1v`_G zuYiH|10Ps|fuRBDHXarQW(EOnsCyY8ma+il$gq?&z>>hg9KfM~5byw#lfk4}Sn2|X z%?zww3=G~NK9hhxko>@)7|p=I4^ch?=*bTZ3|kEtK>lIiE~{{6U}$Av*kZttfiM*8 nGsX=__67m5Ga5~Ngbe@y80;0@=9Abt00000NkvXXu0mjf)8}uz diff --git a/docs/html/img116.png b/docs/html/img116.png index 0df5312ec1100dd6d87fedc32ca327e27cf1f401..ac6f8a4a5916d83e22c267f1f4e13eba50556544 100644 GIT binary patch delta 831 zcmV-F1Hk;q2HOUZDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00P-bL_t(YiS1QQXcIvc{`M#9?#^sB z9xO^hmgXW6WkFA+g`CAg@usIJ7<=fUo;^4g6pB5>L;Zzzi+>iBTDwBgwkm9`hk~U< z1dsaGkXmkM5-*-gy03AG+ngnnUX-n@M8&6{~|W`HCpJoT#CNf&)&uv08T^{#YT zAQM2TsxumCCWZYFtw51@#Me8QiI0Oc%y12;hpb!CQ%mP zxySREYX>xJe1E|j(4WyAg!F@E_ZdbU>&vF=`d4u1=5eJabOVLDT8%pjYAYnps$34% znG;~0`Kx7_XTZ0qO^;B>LB$p3fQ43dZ1h=dyTY<~tQE89fS-1Y7u41)$y(D|!98)N z{k>MKrd{57$^6IA-Ih&bQm)H1s7W5)#X<^O(&SWov48IgwHtTOJ!VYl$6{}@Y@T!i z^O&dOlL06(W{jD)4?%)^ebD*iHAYl8~j^F6`oO<4;~%CAplvvEqu{Gudk$S{ypJa2}yXXq_TsNGa-#2?JIep zM?8I4r@?dqgWS`gpo$%tek9yXs6p-45^L5oFqpI@8GH8f>;3>2Zbw5Q4aBE9F0Tys zLpbNl=U+sHcqN1ziPh?F-~D{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00PEIL_t(YiS1QONK{c6{_bn$Txaeh zC3RtRgGz%IgW=BNmZMov-6`yWltU;^MKFs{7cCBGIxV8Rh=0~DL|SSzL7SMM$94h* zm*XO75p-2*Xf>TXcgF6F52l3>;kP*V|Nrxy?>~?Ko&)$nUxK`M`HU5i;Co0^!h|k`zEZp&oP}S&-%I0+VtAD&yP50xJ^l`&QTYL~1)OvtH zB&2i4Db!|eMCdx(1#!C3?zrozWho!_j+nQd8KMC*3Ze+RlTn)Z_G2t!XLI$XB$u6} zB!i?_fg6uRHakfaW!4%nRz;ZL31nE~GVd+I>KG!i;?Urj)DxtIA3Y?-=m!h*8976& zQCj#FpMRvIX2C&t&gD_B46AChgxn6>x`+P)fvF5$?a(jeHic%~Mw;FfSKUWwwj!c$ z#ruO$ygDLf+%_Dkj(c;-`n`U}Gw>cC(PD;~P;ZKX0*x2-3z!#jH+9WmG-k<3ZaKNG zT8iuAUW012Bni%=xkv?~rx0cmjrj7gEY4oG>wi$Fkiim8`m@gB3Hra=ix_aln6(6P zjj*(1#qOmSz}KiQ{Ot0m>>plZ5}jbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc007cSL_t(2kz-&00|5p!Fae3p#=vj@ zT^xcU|G(V^9FuHbGzl3s@Z(C}0K$jlfC>wF!tB z4j5Lf8n6&E zSm>~U?dnSwpe-QhDPZ73_7kH6h&+Vi79OAiW@>qiBme+Sk|Sfa#st&=0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007fTL_t(2kz-&0g90E{V1R)H28IQ2 z4g(V}1H%UfY=E5+t_G_-7QhF@6Bt;4q#R>I00SGt0|tgC0e>499M~8(KvW1Ya1v`6 z1~6b~0Fp)wAkT0>gn$$~0|To;!ahE*B+x4k{17RlXYAYz4J>dU@IXzO0CWR=Kp}*Z z1Y*Vs$P!EoKqQX>h)kKlklGRv!0o`m)4;$23MCfK3Cs*L7#N`b07uSDW(KAYOyKYZ zf(IaCsX?^cQZ7dZjs%cK_5x({CxHkL6t^%p00WC&9!CKHad;ksa_x!v00000NkvXX Hu0mjf3G`^= diff --git a/docs/html/img118.png b/docs/html/img118.png index f76a56d0e37afe0954e389eae964f6ea81da0f73..8a3e672781cd87b532ab7d812c41e7933d03af77 100644 GIT binary patch delta 503 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00ERqL_t(IjonkfOT$1IeRpY1+N4Po zoGcO?bP!5Fa4!A@{t42-QR?0yibFw=2rhy@f@3KXs)7hYP=5!-4sH%z0&Wh{zd-!% z8f#h+Itlt9clUkw?#sJ(cR&gn7zVKhcyc22`nf)bn^6%4MuMFV99c!QrA%Biz_AM$ zo;F&kA!JY$8u(`%$*=0LZ6%MYlEn1Xy^&Va6b%iM}S^Fz+kWWQY z!)4ABCYfIpFnQk*Nn@hFEK0A2DsytXt%( z>&U%L0A&c9?Vtc#6ZHfV@3xD;w;S+>anL&VfmScz??baJlHCP;FEIQhTN*C1Bbtmj zg*O}lck|6qu!@a)>|NiMVJuxelG_0hW~s?n&;~Dr`EZz6dJHS5V1*8|gHzHVemO?0 zIUh~n80t8&lo)EbaOMHIF4k=*QdoPVP1hj{bTEAa{u~`P9P tF=^4=WPCF)G4Ker87~{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00DPNL_t(Ijonf`O9Md=efO2U#3Xx# zU>gf9tgaALgm6f}lxYMJlz@$mV5wrUg$c1rihyEuMX>b>!GHFCLcqo{wbiAv)Y-dL z&PxK4P9N;f%$wcWx3dc*5b<0=2Cu|5q|+1G6kwO49QY(Z74DP+ba1=*tb(%h%Sss( zG1SwsPa{A$LJ+~mVHt}_;ZYGmfex{8K%00Y5rn*wQj@E^`6SE(mhvq*ts8ESOuC<% zK-5%Rd`BU#i+>Oo#96lH;FKeh`Md*O1ouoPU=<{1xX19AdB)j-K^N1VAgSpm#)!{X zJy4xz^^C4Rj-|UB7g{d~%*RZYd9kTd5ALz{#ZG+Z>v-*$rY@eKoviK(xr){Huu*RX z$hB+dz;?WsGWt6;-z<5#kYbJ8Fv18}?x3oQ7f8^ND^tl!T+!2TeGF^Z-;ucp54w`D z)w!i-X#+3lH(_>#-D#ow@kSq5VBldtr7>UmA=!uKf4eDc&gj$14F1326I6^tXiIln Q!~g&Q07*qoM6N<$f`6^u#{d8T diff --git a/docs/html/img119.png b/docs/html/img119.png index 542fa1782f63c8ca36b072f742f02b2770a7cacc..daaf838b3b392b1f5ecb5da4b7c1b19aa8301084 100644 GIT binary patch delta 398 zcmV;90dfA71E>R#B!4haOjJd{z`&=cr;Uw`XJ=TJ@`PeDDxozpi*hz~RDAq*qF2P_(SozfD^Yc(uZJbHenASLUHIhqUJ#aO*MRwA>W(T(FfM sZ|^ZRynL+-4O}e>@6D~bw10pv`y4umnGz!N00000Ne4wvM6N<$f@!g|XaE2J delta 378 zcmV-=0fqjk1C;}iB!4YXOjJd)v$LqEsGOXfkdTmsgoJo_cx-HJU|?WWR8&YvNIX0| zFfcGABqR(B3;+NC{AgjxZn?&k1DEJ;26-(1C%Qt!5g{1%wHWJVS#Q7=KVO^9)vZua1j~_yB+C zpTDcBtLp(P#H_Sy7or2`NvavlKZyJkXUY>U^-@@~8HT6o zwwqv*iK#q-4HuYLF20ld3mjVx7dEv=F1(~SKLoUx?)q-L&l8mlAV>G3z #DSDc| zc7RHg1{!y_vvV}X+fYN%9~S*f1a3KZzK&K4UF2NC#mXPm>{@Xmh($07*qoM6N<$g7s9Tw*UYD diff --git a/docs/html/img12.png b/docs/html/img12.png index 9d510bb967696e971e61869e9e397f72e9c08386..b6e1ab70d80428faae5ecdce702547312aa0e538 100644 GIT binary patch delta 66 zcmb=eouDaj;J^Wf{~&mgfk9`MW%oo&X-)PCmNo)itct8+h75wd2Chs7Y}^bHcbO6u SZeH?Z00K`}KbLh*2~7a%Y7_ea delta 66 zcmb=eouDbOdGqG~4F4}OFfjaQVBvePbE2iRChrLuK8~Z!6PUU+8aUWzC^1VkvoqLi WW!!nO#xxnIlEKr}&t;ucLK6TtwH9aq diff --git a/docs/html/img120.png b/docs/html/img120.png index 1e0359c319c7e844a0c1752876539491835f8e91..c4cfd664171d3bb761815b93febf701771ece481 100644 GIT binary patch delta 242 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc005CmL_t&-m1AIFU|?!sfP<3^47_j- zO8|sUOG|@`t>D?fz+m@)fq@&LDJ?C50Sy!!U}pi*4U7WlQfmYNW55SFpjLqcjJyoY zObiAa7#JBE3PCbV9|-A9OG9=lUclqD>ofz8_bv}0Tj4gtIuLOV$maaOP$&Q-s)20Y s4UDf8cyDcKfN7dfqF;z`Ef^#K0GTZz*6*aCDF6Tf07*qoM6N<$f+DzBmH+?% delta 238 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc0050iL_t&-m1AH)1?>zBd~gou2LUks z|NnouSRnrg28I*^1_maCrvLvxpc%vPpn#Jf%qT#YAq1EXd}m+*nys*)z=?r_LE*s# zkl+Lm!7+i5-v9rRor)K*wT4tMm@IKm0J0sHG1xIUUts(KWHVo2Sf;?0z_9_y<_cg~ oqF~$74A-=bRL>B0Ef{baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00F>BL_t(YiS1G`OT$nQ{*tz~NfVQb ziy#uRiB$`Zf>d#Etdk)A2kY(-9CZnG5(K3vNUabMm+BCqLVuyfS*St~e?WeM?WFY4 zdEU2^)Yu6KxG78IFJGM$q;!d7rI^-XfuHv#(ZT<8h7mzWJZH};bD%Sobd7SdKvFQQ zqHX#d)#hYc3xDSBK!B;j@M8|f!LQE#7g(dlMj}kic5A%jd%A*Wria}p>FsbRWl1>Z z3a;bnRgZ**6>@Z43v{>%nXK3KcP^orr!_{0^4}(v`;>9!%@a@L9Ebf^2!jJmKTILh zf3+#18eT=G4^OtDmoUaqob;STbL7TU&#qqsKfNB!=6^QT=z`=7$}BcKmwqBov6h!M zYR%I-n&96JuTWp8TBtu>83QsUouE%fYeBJMd996WC}vlNmo3pDhPDQMk<$d15)0-s zk~4yfU9<$|QWr>OsA2ZeBa_`}viDsYIUIP;VvE4; m&k|H=AsvVXH-a$6|G+mG;Ar{6)_(i|0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00EpyL_t(YiDO_u27C+*pWz%{2Atp$ z1H%WLk_rq=35WqJNM5p35l{nA0zo#Qw}5I27BKOG<>%J!j=fq@&yW-?$-aDXe=y}JQw z4hKIML&1j&V1IKs*cmP~faH+O0l9~fpD&rA!42#lK7NG_2MGJbfUpv-27*dP0VE_6bT^3_JmB2at?0UBLW+g?KZ8^#gum7#KVoLF86Ne*r#a zhQ|ys3^kC_jb#SNQ#=M-2?n|hybU;v(dh3$Hgt&tTZxwo+XRNq3{w)2#Jw0e-56$u zHX;di{J;oJ?%lhQG7}O2iSK~2nIB+LFbakS0028dQ43J8=MMk?002ovPDHLkV1kIj B!0-S7 diff --git a/docs/html/img122.png b/docs/html/img122.png index 6ffb8caa238929bb8fdbf7aadef1595c2e899796..b0f9c08efb1714c53e61e5f88667408c12aed549 100644 GIT binary patch delta 568 zcmV-80>}NG1l9zQDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00GoVL_t(IjqOuEXj4HL|J@}`axa(U zS=2=ekCPTf#SEPsBo+nHC0oHkf|FyNyM(S4Ih?xX2|9?OM1OEGU9Q!k5RuHr;f?AP za1s~q4=?YE5z|6Jq(2_t-S_)`_r34Fy8}`bniuY?xW|Euz&!qhF&>*C(qGx<^AgHV zoK3(IsA0Ke=<7*J9~uPB$(#bQ9=<*ULhNl#6i>dlC2%X1iPR2{_RAT-&;nB)vFk^b zDYXTvM^dODRDWYDC~~Ydm=LZP8>zZY0O_VBoI19Wj|D+q8+~Jflprb#<`R9W^hxnB z;|??pRuGvum2DQykK;UN3w&tm@AoWfoV3>X8pGc*p~%=kMHWZ^Xgta!Xm2Y zJ-*T--!Y=fr#J14y1Y8boZy3on$oDQ38YSEir@tQ0Db`#-ECF{c}EHW0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00EmxL_t(IjqOxDOT$1Iev+o?(X?I$ z1wn_nh+~$n5>P~OFkmSeGdL(B2s-F?mMYn-gCAqSkJW;U(0`@>!2X2(gbH$b%wH-SRyh>=sdOH+2dSCAe43- zD&X+pvl!)$-%(5lwhi{C^l$aIpn~`5Dn=BB2neBo8w!DuLaj-v)e*khh}tBA=sc(l zq{EbBMcx9+Z+}1O$5zCf1|e{w%T>%2@iYslaQcAa(CP}L1FI{PcThMa)0$=(Q74<- zJ$%$dlA(^+gQL!6I-eMf%(%1dj}!bsl)Roa_w$wV(a4&L{3*4-8mwC{4l$r2ZUHSm z=r@wghnU^*aGLY-Yb+x6e8KA%t0!2z_xzy-*CJDADtDxg$AsY!mS_kAR}>ZkEW>_R zT73ptOKr#_+?hNY+tk%+_9mvxv@f5zjk72=@uZS6sq`7(yr+rAN}^P_HD9oc^lFSJ z3=a-HK8jIGmq9G6a=Z>`lo1u!cM=Q`{9^*}1+lAF;iMt=djJ3c07*qoM6N<$f*8H- A2mk;8 diff --git a/docs/html/img123.png b/docs/html/img123.png index 9e76e5c73137d8798b0a395b9b144cd7334d23ce..14244bb11dc77f993b190f959a7680c1b6f975a5 100644 GIT binary patch delta 332 zcmV-S0ki(k0_*~iDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008PqL_t(IjbmVd0Dc|@Y(OFI48sGg zGJFgSyptF@p-e)66-pa0@Wl%-@EiiMIT$QB3F{;oJOEXOyB?o=g+AjS-y2ViRV0fsrd92kyhui0sJ0hcN!o&)?Fm>rmSH*f_o z{6v!GR00A8m_=DjIrSOXB^l;3urA;^01Wwi?|@(dx{ZeoSXOOa#c-QJm4Qzg!$PK` eHAFdoga82gJvK-;F(h380000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007NNL_t(IjbmVd0B#NjY(SvDgW&^K z8GZ%^K4k_bD3cK2gVGHQeD@g`I9fn#7RGIigmsb(K+aWC<$qvda99B5bMM}b!wd8Q zMyOm39LiV?6osle1Q-}PIvU`DA3hZD@UTPJ-McqH%=_?-m770+`VJigpb)Pt;{l=! zfkbx71O|(+CZ7+O$-14002ovPDHLkV1n+e Bbp!wa diff --git a/docs/html/img124.png b/docs/html/img124.png index 3c2f35d48c28943cea1416ac0c4837a7d4b37c78..7e258ea252ad405a3fac3936e6d78e824cdddf8a 100644 GIT binary patch delta 228 zcmV`~0{{R4hnNYp0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*HaY;l$ zR0x@4U|?Y21Y(9+AcBGWJ(%L+XHaNh;NoV00}!(y;R2AHz+J(B0s@}0{{R4OvKs|0000jP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JR~F}7#J7~3=9AO0Jgh6i2wiq0d!JMQvg8b*k%9#0A@)Be9YmJz@J05r=Hn;(VB QH2?qr07*qoM6N<$g2%T@i~s-t diff --git a/docs/html/img125.png b/docs/html/img125.png index dc16bb5b95292a269147677083dec85a414b767b..8fd6456f396231d3886fceb0ee0b1c9506b084a0 100644 GIT binary patch delta 535 zcmV+y0_gpX1hoW^DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00FZ}L_t(IjqOywPr^VLeLbqBrG?YD zs0>XL1`~)5&ICu}qE3wc7noi8ClCk2V6X#D8q>jnftVWOVt+bxG;u*E-Pm2cAN(i+ z8Y7#&q~E=}$Gh+Qu1A3pbQl32FJWRTTu-w@FAIc-#stdDR-b2pMGC4b?BSE_^u4}7 zh6iOdw_^l>3DWV!)KhT?RIu8Yc`0Uy+>i5ohn@|nl(Q{hC8>1T;}TdNP()B+fmNMF z&?Sx|)kZ9Sn18~BEIMAZT7sBIbFXt=SeJtV#T^&YJkb5YAyj~!gvu`qfh!K7g9nO7 zM)pGWdO|gGDR7mUObC8fIIcv7bJMG+JY29nLmmo zF(Pp(>%TgKKZ+K1B~io~F8C~*$(4LK)j`T#KIkt0w|}!Sq9g5zhtu0x$xPuin9~OC z`#z@$y=wHBdLS2!e3kU{{A;H2*-4}mq@S~f6VDP~uA{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00E0hL_t(IjqOq~OT$1E{?c61gtkdX z$D2f*iY_W52Z~ssG?Q~ib?WNYp%tp2L5kpH=-^yjGx-k+Dt|aS_ydB7v$?yrq-km` zbnFMY_r3S>^4`0AzyJgW2;=MuIiw<_CUao}T?8Wu7f`J}&jXeVmI0{BeLMYIe?UtH zx?qk8tx=P%iH90IoYkevN6B@e&)jDkJ{-Vcf&pvsOvoRG90ke-iYQ0EZm9|zW;It( zq8>Yf_@uBWh=1`j_c`Z<3u!dy-e^MMN6{Nx0tFh0QW7oAFX2cz1)d_(tZg5RWzB*m zvcxY{VzQtimgI!viOes0}P>?SHnh-YeKZkUYi?;_9gZuA?!Wk6eb zMwqpkO_P<0o|!MaV+XOG7R~xNN0o9-^yMKcBQdpOds^%6tMaxH+p`6G8K26_*tGvb k)|>uLI<6;Q)&ld#FVD_VlFUQ)1poj507*qoM6N<$g2=JlWB>pF diff --git a/docs/html/img126.png b/docs/html/img126.png index 16fbe1b733bae4250583c7a87cfeccb1ffb8287c..0041e8ad479a60d2c2635bab67211373d8fdf7fe 100644 GIT binary patch delta 595 zcmV-Z0<8VR1n~rrDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00HkwL_t(YiS1N9NE|^F{$@R*d(Pdh zAU2+15fYmVEZ7J_(2zo`4lL3h7Qyl?(+#GykyHi(xgv!i$bVXDnn|=Uxkc?g!(t&~ zAa0v3Z+6&oR!`l-6cO?*Z)V@memn2Yn*lEI2ohM4F0!Ef{XKZaximy+e{SXK7cT6O z(_FeZ1+ z4d6y?R7J|^7=JQZ6gH!^Uex+){StXk>vhQrcsJ_CUoI(&OsMU6W?B`CUFGzTBcHoF z=DBKNCtXfS@+}=!RADYY06`$}*o&%BwFZ0v4+602?>*lLORCOn@kZ1oazg8ltWRN- zc7ei*dD<`;n>`y_@Rw;12Aq*3?xXJY9I1u!xE`Q)LImAGwDim%!G7k|Qj?q0% zR#pse{uP>KHIy8ys?|QPV^reC+gr)@)$kOUS2KHQ+^T$b@{l#hL6Sdc31u3bHry|^ zo7nyQNpvQ&TBZZ;5%3d5spN?=JlnhC-mnTj4?*_}p-nafwt$4~$1g&IuA2x}gs~+O zac;NS3{3Z;^AWvf$Hrv#*@({1%u_Y?PNfmc$%M8Uc@}(j?jEnt7+jTC&1+@M4m-L# h=06@XvRy9O@CP%*vdty5ix~g_002ovPDHLkV1hS+5WfHb delta 549 zcmV+=0^0rY1j7W7DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00F^CL_t(YiS1N9Pr^_XJuQShQEZ8e zF%JC+3=Sqn^MX-vvPK6+2M5P4CQjx>0UH^_!C3~vjERHBg@2#G;BJ4y8`$-h7D_2% z6CBid()P9Yo_FqfUj+ha5YUA{EEKL51S?oUzzOG55gkr3M(zCh8ntO3#C2dbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00GKLL_t(YiS1QANW(xB{t^pmnrn=> z76}n2i0^930K$?C9W-y-VrTp`chdI}{v6IHf|>Ab;*EWEPPw9R=@_&?e?u zTIu4?SKc-6z3;wzy_dTJF;EKRu2S&&5fh_8bY>B@2uX#2FEOiBG_WO$gJ=?aA`D$E zp)$h<3d5!Iy`D|rV%G>$l&@XTGzUDgCe-T=U1=CZ<=T^q5I)?-eNu^YJZ4qPWT})B zM2wnJQj^=xeGdaM8+VFT5mt^WC9aHR1Y`!qK5r$Ts{On>FXPKNSSRMM@e_s|a)gzTl! z=@7&dXiA%rm#E#iMDD!6t@+VOrk9&7v@cGbgl5&U_+{j4%FmHJ{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00F~EL_t(YiS1OcPs2bMeeKqAtb^M! zGeN=xVsZ$4A%saBK_Ds?G6({XxxgSt5b!5dfUm+7F-4G&pnqY1!bl+C;QE8MTYsbp zGZ0>Ky?*ar-+kY;Ux5*r3?L^mh5=(B3xtS){Y*_G#(3@(=TcQ*0eU51QM>Tb-R zTS1EMRRU+TS5E^C9M7TJ1gx!^dn?~0`dO(vr6DQZwAwNunc;m|3~g-PF|}GKSn*L11AbQ9vVr(b7Qdh}&4+n~> zEmn0$NjTS~W$e*VXWL9fJufKZerC9G0mblQYrjl!W?NBLUn`o#7~H=As;BM0ky<

)8C5n~00lk4C|VR%eN7?tjm!nQ1ywx$jxO3@LeM?HHtU zgyyEv{cyKZuOp9iJ8dTKE}dk1lFKMnpbd~d)-{ILDW?OJ+vu`fXN5t5R_68WJl!-! z-#MM=)=PEVt%F!)z4e`DuuM@h8mBl*%d>gT@}0{{R4r}JSF0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*HVM#>AcBEAjsXf3I2jn2VI1$13xMQ@fCCIz08Nk9W{~C$0UsC`I2jh4 zWMJTBVo<=Q5(O+g+MvIH53H_`;S9rk5QEu)BZJ}ROdyMqfuR9t8Uq0S$PxS%OnA}& O0000&P$;nAb zNC*iD@$m4lv9U2QFi=rZk&uw!;o$*ldKGzk9*|-z3GxeOaCmkj4af=gba4#fn3)XJ z_JAR&?W{smmH-w1L6X)z4*}Q$iB}5adIT diff --git a/docs/html/img129.png b/docs/html/img129.png index 35b42919ace8a430ace93e5fed8441ec3bf2d7eb..b1f65ab8c2c2c8bf372f07e9e3b73ad7d6717676 100644 GIT binary patch delta 604 zcmV-i0;B!N1o{M!DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00H<(L_t(YiS1RtOB_KI{&rlw{dqTm z5KymJ7K9KKuSj8K3^p1YD>D_kiAWTTB* zEL&^io7p?}E}oYo8nN($oj31$Z@)M5=57{f!=4YLioc`8VW{xEZ09f+gOd6tFu*ND z3@B@MqzmGXS9^ph$9fy*sDS?QohZ!qHYDXa*$BgzsAn%Qcv~fRuQl|F*bys{(>_|7 zu!Z)Fke(95Xn*3FDr)_}QNzok8tSf_WUbMbl_|j+yVe^ueaNoJbZhm$?c=d9 zoK9bLOwh!@=h5sVoqKIsC3=&5Px*obEl?+mH$gbA}6%h7GzG%es zqx^v-Su7BxL@01zwuUo8cpHTdp q5QpYr`9+6z{R_sf9!TgJPXX8K$Z3lP*OC+f0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00G8HL_t(YiS1N9OT$nUJ#Ajn*V?2R zT$SK2=wb&!2u>=96&HmLK~#!%=ub#R+qe}G=lq0DBDh45;(w;-;^m7vT}V8GH5 zp+@^e(11jEs7z~2_-vAvtLgI(o#OXUkETN|$ZX=Zj)v?etv`tHq6K0~ z*Oj?LyHh-DI;pjus7|%rM6PH-btNn27t~11@{u*+c`m}LnQvJrgK!r3y55_;yp!pz z@#+Dy+k*Kg=@psC-rz$q25yDU75g6$?(!JhctofaTIA-fQYWWUExw2DDgm_X zR*I{tTqpvqrhMoYWlHA^XI&-M?8m}ZVu#c1iPb`oZ01Z?B-M^7O(HjC@4lWpmQxHn sgA1Ygy(9c?aOmf-c>i5W|M&xV0ncq;*}fz_cK`qY07*qoM6N<$g6A>`-v9sr diff --git a/docs/html/img13.png b/docs/html/img13.png index 817ef1d539a899823c803e6aa179e9cdf2c317b7..0b64d387eb1d3203c99db41cac131e5bd026b993 100644 GIT binary patch literal 3495 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 literal 3161 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 FV1lzcWP$(y delta 707 zcmV;!0zCcj1>gmcDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00Le~L_t(YiS1RtZ__{+eLg$R*>Q4~ z5Wgx07X}zRc0iS-1}e2fGgJbJ#X<mlC0fvSoq(nCYI{OSd7}}c z{VIVxhpxxX^XMp9CG~A(qcRtTDCH}VHun953*o951bcsEH$LMTX12fzUq*rH##hRg@C9%1^{@;s`&Hebcol(kR)o=pns(UBya5HE&W pSyb%Qr-CU*bUr?<>lywb`~bE+aNNWjhIaq}002ovPDHLkV1i&(P$>Wa diff --git a/docs/html/img131.png b/docs/html/img131.png index 8bd13e4d46c85749504460e507597023aa8808bd..fbe8b45894c6580af527394c10700fa5ad1e1b8b 100644 GIT binary patch delta 265 zcmV+k0rvio0+#}i7k>`~0{{R4kh+BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hl}SWF zR0x@4U|?Y2S^y*%W->qk-@gwVpv(_I%)!A1Bsc6}Kmyzh41YX8D&a!H1rW^vgq#dm zzyt;ceh_^DqCVh5zy}Tn2F`|^4I2&sX(mo4h6Io@fe8ZGv@@}0{{R4TjomG0000jP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#IKm04_Im1ONa40d!JMQvg8b*k%9#0Fg;VK~xBt zV_;xl;1B>342KvXfTiz&0+cy{9Y`?h0*QnK1|%TJz`zHj8hRc)C}3y60vdp3g6Ice zr3?iP7ajnGco~=i8a4oFE+%Gy$Jq2S_*_8YazkuA3MM5|Y8aSXGZZ>sfJ8YiFf3)* z$zaRCu>d5=7r?SXbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00EXsL_t(Ijpb9lOT$1E|0T6;UK866 zu0kw0=+wbM9mGk*sf!>^^-pkcbBG=5S9IzaP!Vwn2rh!06@SIjL2+>E5FDMl*THue z`(=Y5Zu(2!$Gv-b?{{}OppB-b%%Xz}nn znVxt+jnBcg4PQX06}w~*@0Cj$KdMvE?UfIW-OKT>;;iGDHmlLKo;kyZCL+G6Nfn!y zT30_LtN_?k-p-MCC7^GVY^u)?hpB#=rTTH|vEj5cEpktK?_(v4tCNow)uh+Ll#+3D zYU;AR>FnDl1oB8P^0nmZO{^cXxNp?SjLA$ZH;dc6Ar@9}F`1W_W$Ap?lkz%^dl&lM vrjK-Xa7811qxMCqMs3(lL@XAS_>b@b@3vz)6*;1200000NkvXXu0mjfjVA03 delta 490 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00DL_r}4CprN(T+lDg&Hbc%?`(;!^F*E((gcv83|KY z1UIM{6c^6WYk%?I$3#HI2^1wXY~O)K@`ZeCx+hTO9l%FPC6QRj=oPm?E#`X$lN>J? z9>W{b?vT<;iIBAd%OI5aL&+I}ESTkz2l;7=$;}Pi z0Mok%kdNxAvr85^m5v}URXWRw>fk{>jGOQ!!iHx<_X<1uUK;(=loKgK3mZ2@g1d&(Q4v7uO=PX gVuD6!lJo!I4H~RXu4DjJ)&Kwi07*qoM6N<$g3}A%xc~qF diff --git a/docs/html/img133.png b/docs/html/img133.png index 0a3ba10e0af66117c39220c53c1a627e9182f6ee..ffb090bbfc7b9e76c46c8595aceefcf41e3a0e43 100644 GIT binary patch delta 266 zcmV+l0rmcl0+<4j7k>`~0{{R4e|Yjk0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*HmPtfG zR0x@4U|?Y2+5jXNCNMw%-*-1C>jOUn2L}fO!v+QQYIh(SBe5;6Onn$4j_^#07P=0UM|3K z%8Kj!odzK9H-iZS{~-wmRj`5&422VRaC~BT1$LF!>Zk>Wlov2OvS0uJpR*%+cqNP{ Q00000NkvXXt^-0~g1v=X=>Px# delta 255 zcmV@}0{{R4v?L+s0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*Hj7da6 zR0x@4U|?Y2FaQz^2O1c_fTdR-!eE%d!N9->q!XAK5I_)&7{H;=Ei84HKBK>GQdO%;Qb~kvst)QX-{>fhom>V}2XRtrr-U zGVm>PV(0=%@dvPMPzYu4XSf1#B6CYvyFiF*BEwVz1^_*m9JZOD1|t9f002ovPDHLk FV1mwFT66#a diff --git a/docs/html/img134.png b/docs/html/img134.png index bd704217c7f4e9261333b06d907e0b6ec4809a04..bfbe8eb26aae771f97fd37ee941781ac9da31255 100644 GIT binary patch delta 554 zcmV+_0@eMo1jq!CDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00G8HL_t(YiS1OsOT$1E{*qSP#A_QD zLHt3?;GiI#ojN#lEcg!;2kGb^;1IehD9(izbykitR#u;2lV46=Vj*&|TRPAxbcl*>N(_BVFEMwCYGkx12 ztVd9ksRvoqz}b1~K1mZFc?rx4EoyrcV)aN+Mk@73g-Hf#C<3hKNLb$ix#9$i$oot$ zDIz3b3WIT@T7QAE!uqpG3w`3x5I64$%(rQ8Tz=oCns#tgM7D zfBT@;JUD}L-H7;_i^p{|PY>|1*gM}|8T#v-6NQ{di^nv=Bw1*kL^zas#wd^(V#X>gXYhiXDcSre9 snU|Z{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00FN_L_t(YiS1N9OT$nUJ!#VPnKY!} z*2Rp9i%UfWF^F0PK|ut;C5VcML%TUXrAo9*e?kYlcXH{H$$zS(wqfXDD94gA{leD0H3Cdbr*~9dzfX0gJ!GAByY3J92$fFpW@UD*mQHq^#_m~m~m&D z7nS`VO9+nl)p9~RjP1c(xjt0N?`<1+_I2*eNNQmn7k|eG$Q)hyIuDW5>0Xhh&I&h! zlwvx-`>v>3AP&mx);>lvl46M+QO`|93w$NbNOiiF*k~}YXdcVhVxthSeM`hkd2iAZ zltbL2n(&0{@Wi9-71qkQ2gJ&%(bo#mfU<(u;#|b0{bpfI5ISzXadcs(BrGXn$T78S*33=9kg0X`wF2M!!qzI=IaZ*O{fy05RVy1F`0hL@Lj z%a$#(X3c77XecQuiHeGHaBwg&F_Dsz%DJ;97N~-;B*-tA!Qt7BG$5zO)5S4_V`g#! z5TvjO@$8Y7IM9%8YRoM2LBqhnz_37(Q^F#CLfnCj0~;P5W>;ggS&)4;tL?JGui(RM zb`w6z&f@u_P?#FWCYM?xWyqL+_+IPt8S({gA8Z&t?Kq?)!6hlN%(P*Ng|?*43|R?@ nXT}9G43#NN%r~^>^6)TJREjfRvoC7`I)uT~)z4*}Q$iB}Y{gO( delta 232 zcmeyz_?>Zrcs(x*GXn#o(S~3T1_lO$0G|-o&6_u`Sg~TxoH-LFOlWCosi>&P$;nAb zNC*iD@$m4lv9U2QFi=rZk&uw!;o$*ldKGzk9*|-z3GxeOaCmkj4ah0=ba4#fn3)XJ zmXO3M#3RGYlW;)k;6VoVIb1wEYj|`x82ef_u`019^6;?A+bMJ=F$r%qX){y!JGGF> z+?bhJ*|?d(e!}S&=gu8?)#k6P_CPR0{IjtAfs%=DnI{}Ct7ASK#>Q65K0)L*<1$Vi gb_t0mEE2*DNs|Q6WuJMl4d?;}Pgg&ebxsLQ0H5GXF#rGn diff --git a/docs/html/img138.png b/docs/html/img138.png index 4713133c3e836a1a58b5f38ffc23ac38c4fc46bc..ba121f2d7b605a8458db41208999b5c367bce180 100644 GIT binary patch delta 344 zcmV-e0jK`-0{8-uDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008z$L_t(2kz-&00&Yzp(aQh_$2b@m zHXL9;27E6V7#iTbG!RHYQ80sH&gmGSQE%SyFkD~|*nlDl(SN{z1`swBI2_<-V`rJ9 z0Avd?Okn6>6yQKtO)B_+X%XWChXy?!IhGkfw!j?*Mh-^aBnAd%ZZ-ym0|pxs8W`9G z7#JiA3K=*V81#W^4l{kgG?!?Q1_xwlRz(-!@!sXJ=I;saJq&X|Oolm|CjdniZZn)? z3Sdw;!|)2ke qicL5JV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc008nyL_t(2kz-&00+vJ|VZi_g`HTz< z4F(LzfcpR=67N3 diff --git a/docs/html/img139.png b/docs/html/img139.png index 0603223e349ffcc24f7d3f961a8bfc3d82ccde35..1c1c80efcb38d6a684e500c2f7224e5457236565 100644 GIT binary patch delta 414 zcmV;P0b%~J1HA)~DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00BEmL_t(2k-d_?O2j}A#(#-ta!K|y zm6hNk2!a-Q0Kt0#Tfr*Y+4%@3zCfxg#lq6!u+<_U2O@_kSbr+S-a`8;{E{f1c%b5+ zZx|-K-#5E6vw;#5tHgXnA$Na~XX;;D6v8|cv-%fryp%?$gGnn2vD)0-9CjbBd07*qo IM6N<$g0G*#5dZ)H delta 402 zcmV;D0d4-h1F-{;DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00A#aL_t(2k;Rg+PQx$|hQFqXaf;IP z5j-)lfSB0G8_)@f&2v?u46H~IL)D=|c>_8#bztBrP{xjd0e>-8z`)4ak)T3Z5LEn< z&%XS=^M7{%hv1AB6onYG|NXPFDQVmNPjnf|61+j$N4x#UD5=OXf!5CJu?3Z)PD54@ z)5jK;g^pQ##l*O4n}DP>UWTZt6=f9m#7#v8R%1;P`R5bi1IT=T4kT*N9ZcfvoLtme zG8J~$GS5M;xqkx)H&enNVD>y@^nQuDo-kh0DbXjE^M>qO=}#$#8(+~bJaCH6Jb5AO z$jGnp0y}U^xZ;>@GrOlIh;4~3kokJj%~={>Nzg0gX@-&nH9RtENOg5bFk4RV2c7BE wy)(fJii$SzvGH54y|hDTg5htv^B?#Ck0mxAWr)zY01E&B07*qoM6N<$f*_E$G5`Po diff --git a/docs/html/img14.png b/docs/html/img14.png index 4f94ec288cbfe5d6e89cef823242bf2fa7784ea5..e5fcc49cbe766ddfb333d1e4bf8d311ca5252962 100644 GIT binary patch delta 664 zcmV;J0%!e-1+@i`DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00J{fL_t(YiS1RtYZO5keVf(IdH2np zg{8<6K`m7L3u3Co!Xlko2y1b(7Qzt~L9n<&Awh^I*k}KQOMfE$Ig0BOjES0PT9;CG2is@15H(w9qpCe^Ek zW<6WpI4?RBI6QVxPJPnB5f?*)lsE2SsVZO@Cd>`;spe{O)kE$*U}XTYeFtW%TwlN(T|zcl778McqxluK}dNEB-d@ZEpM~VB%XK`HlQWtDHdAteyLkuA3=~j y2NFm#=wsgqDbT0Jo9ey+2gTFc+e67o;up|gzY&E6$a{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00Ia}L_t(YiS1RfZqrZ{J&EPiZn3Xf zfx#O{2+12#RZw8;64)8?11SCg2E%|lpe7PCA`&Zzzz;N1mVa)z42&d*q3KdR5Gqum zzP$GwH%{WH3=s=G!;RlL=N{c8@A(16uvXuP7eUmSQ0)a)ul2^2AFFO_!UYSwMJSc* z5N<>vd>K|1;Le#nXG7?^GF}Z-`MqD3)d4Ov2X2U}@G6r0S%xi#kfflnn)ZpgIBN+b z{R0q6ul4wm$A7Y3>MD*1nwC64h`6JT3KfoL`Z>3VuJim4agI4`=NIm@7UmaJ+&@j* z*G!@-fMJ+-qaW>ig7CO&%L8Sq|M8=AJja%=`&N3o^&#;<;88%?rth65Zt29Uwxbg9 z$-Ey6v|_@Ot`;0O8`sN?livdhjg!feE)_8!X5-yK+x?25) zTiCr*0eMEczxS-V6W|6&b}KkF{SuWaU)78=ZT{e6=r`^un5 zv)@CXkKi!JO>S^~hY!-DzMMBZWl1%zFD399?=B^027dsll(K6toNBZH0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00U%6L_t(oh3!^9Xw*;`|B_s<$>k*% z!Ldk4JE*jBLMJUH(nXFAPSQc-?BL{}W4EX%2qL#Aw1Z@DDt|?eqELrwdV@oILuOr` zi-?qRxVregBrlgs?yia2Qo&z)$$Q_I-}ifezV{^nheC<&=bAKXY0=%0^xk7NfJ84Z zG#WQs!F9ib7s74CD;_clb#E_g6u{f!aXly#RHI4J7!^W%Hyof^NY;kZFc%%ZO7!l9 zysTB%9i%$v)_+(-|DJX^Wku~q?Or4T)Wchq_r<_fbwC8NNc#dPx`fxoYs|IZ@5%=J zyU_bJa&k8G;+zs(EX)C@r#TXDsHk6oo+ADHCGbGaB9EzLDI07>pL(~a#wr$3d1CBUp8Gk^^V>*OU2B8_w8aYO@66=7Y zgPdo^CmCLRIf0xrwc;EB%)*=+PoV-F12eZM2f$5p9Nr+c1%JVZ95{^?>RsuLybj&A zFXp0513REIq#FJ)p7X&Y}Q)Q8;j4tj!tO!9tqB<$I7u_RPvp-uQ|i@Vxx562Fish5L(3Kkj;PHzx+2CLO#)9E#ZfHE zIOU)#PFct?NMdYhuu`Ew1347}_hTIc#k23#2&FKSnT`YXn4^rEPn5}tHGt^l;0-Hp z|B(ZfWLy8V45?rCk3q)#3?Q3FE~9jL>qup^7JpP88OM?Wb@ymxe3ESqg3w8qS!D@! zC+K_yf7t6Vn147Jr4tsX=MGUOzNxn6Y{Lu7gmE;F_tmZP?cW4)D+^AjwrsJmCBJfg z2_A#&&7yJk52uiX7)(cQz*Crq_sR-f1$YvEU#5%jCf{&*1_8FYBGUF&8n(;UN5Tam-EW-a_g4;(*WF))hW$e>wlL^AmQvA1Zi!H{;cvk|Fq zD=oJrGOe%Da0eQPerX*SegPk03oo)OAw>WH002ovPDHLkV1mI%zI^}y delta 887 zcmV--1Bm?Q2a^YoDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00R+8L_t(oh3!|pYZO5gfBTW$IrlER zg5U>1uTThru&A9yM!jeR!4)J57G4n~jc`RQ1R(=4WDx>K3V*e{KVgsrEKjtsGk<_Z z8o|Qi3JW`(H@kbc-?>dNN#T#%%jV7dz2D56cl%}mb_EIlwiruUJk1)pIRLT$#sy(1 z!@vemCaVX^hyHvq#|X@gWV^wnxwz^nH;R_N9IC#w693{Mc5PhNl{U?x!!6dvn@m!H z+GK5z6O&^Yl7FeO!axsN9e#jhcr#gp;$A4T^&Oois!4j*^@zR`A(T(A) zzJKG56X%Th@y=hI*KWY}3fBsYHjZQBs-2v%ZBG<=UlhLX`)n7E(!=givm6%|D8-g1 z;mWP#JlN6TaS*f>7LdqwvvVT(^J@xcE5n%(oZ;gmJsX1QnvQeiM|3G}LIEa`bH0h3 z*3^j8Xn&M!lr1>Kr^u;E9kT9=Z@r9zOL2f9XIXtQ)DcaT>qQ(D(s{F@yrp~b2;IV5 zJB6J8*bUaGS@J!!z#}L#yLrbu0GX>num0CEmUkdB;{0h|I+zmp=pBtpQ(n`QMeixA z)4i9b#l8bJ1%ds}CK8!)iBa#^&APJ&GYc-*;(wWSH{ogj*&~n~E#*hc5n=B&jjtTe zIx5BaZ|!#t+2w4B1L_CmlhId;5B;a3ozS~MA;(VTiH#8r1TGGwQ5l9)!p!Ua@(HQE zDDWaLl8L^#d_6*Ay_pL0Y_nX(qG4bnPS}ym#KVQhxiaULR-{p{b|k|78^|af?blGo zHE_6mMa{^(gC~J;tW!@6lcCHk!0%Dg8dTNia%2YZB{1$(lp$>yc>Oa>|74NO*3%^y zR&!)-KXRneEPYwY!$xe=6D9E0$yOQyjdN91Kw||mkWbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00KuzL_t(YiPcrji_=gL|D}mGX+9c3 z6v0DSPl`wnJt;__7ZC(ME*^{GUj6tB9xe!ihj?&haSs6%M1K&9cu_A;y}702xUhl` zya_I4?}C%GNz<6T?nYQ}O5VK8Z+haDAuJL*cDc>s zty+fr0G~66J6>uqH#TN&-3wvr;TK|v-4s$!*1|L^T+3|5+WDE>+KAgR6(?DPjOLhg zQIt_3tW&2Jk$@*i| zJ6r5TF@9fqZlPd=?BSQy7dU?xvtN?D4Za)}wPEFlobAGsz$#Q%7957WG%ZZvY@Dr5 zFX}}FKg9>0t$$!&;%DC|q76>V`(PkGp^q{Bu)Uqnd4HN*sEm(onv4Mkv)t2xJPe$* zUs$IKrRC?fU2-tVIK$G2zfuh!JOF;Vc#awD5ZhptFc^3+sD`Db{U?%r0_YEm??2nR zcrL2X_O?jhugf;Z$*v~broni1 zF?19CgnwC&N9-Lo%?PVY9-3rsx^u3}^Fo$Zk4=KySOV_i5?M)kV3EBOPJx~vYW SKp+MH0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00JLLL_t(YiPe-bY|}s#hX2$)$JG(y z5tcR;45&ybqKJ+dF(4t3f>eo0EFPjPFhrtc>R_N1VW<=#F@LdGVn%WnmM)%{11n29 zu?8VnDpcOtwXrYp8Ju?Dw{$+=|GxL`&SwKD`8@7C6s>K$;x-b^Fo}UIU+S2G`eljk z!c;J6Urw^`2k`*wJpGgH!HZ_xA5YhGXXQQttvOE8H<%7sFn7Wyu{&C9@o>uV1i^TA zO|>u5M)B#5D}R_&R%jQI@_l~8@-NKo?dx1Pi=gg zhpxK7lfgW@c1Az3JvTncQTiu5YaeX0OWrobhf1<%=Zo1pIJfo)_b{w_xY2Hc(+{a` zWkQd#qI?ndF>$*MSaMb+ZPM8zuyxM=t+xYAfvtea!?dwTgH??v}o za~6`N&4ElGOMmYc)5}}E*>tgp?qk^|n)Tn6p(l7NYHL_3L$7aI;moUc89KaC=jd<_ d`k&Fi)o(ABp*SZE3&{Wg002ovPDHLkV1gNaGtmG5 diff --git a/docs/html/img142.png b/docs/html/img142.png index 41e972b937ec2b9e770e3b941cdf945ffb63dc99..ff9cded0422c9eb3997fd7d906757a94e0c30af5 100644 GIT binary patch delta 199 zcmV;&0672K0q6mcDSyDgz^A9Djg5_GXJ<`KO(!QO0002Aw6vO3kY}|b_OsoFmf<8u)h0012}6TfnEon!z2002ovPDHLkV1kB0 BMVJ5p delta 186 zcmV;r07d`k0owtPDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljFfcGABqSIZ z7z_*y0000(0l&Kd0004WQchCzXS(119-@7^KYh7&NBO!f=_von|(jxaE=6@Zv*3z!%y oL5#?dDaf8`aUj;+xLpJW0GAIOg6tvN3;+NC07*qoM6N<$f-G@F8vpbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00BKoL_t(IjbmVd0B#0m2A&BFSiu1x z-oe1Yg(-6Zh(Ve-c^KY-1ro5EfD3Q~F$ahNGMgJ@8utSbmw)daAJC)&Tr$XtvDi;G zP=Fe#0CNX~!Oy}lNeReY^k9Ml69dS97r^2?24KpEJL$FtFBP3ZF5rjK>^Q`yL1|}* z^BGtdKxk10+l4@i=>pWhOgs!qK>zZnGO#j${QH4ffZ^V|R}2b*5cNC^d<=#_dIKkf z&vgK-D}nFuT7Ls@VqsZ;;WjTa{WPQiBYtU?1E_p61-#0|P`Ny8$lAGN9@sH7frQTh z!66{Sm*FsyJjVe(2L=Pa13$rvfN4Si&8Z0tF$}X%hy96@kdg zAMhaA&OCvED}n2R55obdBB0?ctB{T7Y{2l21h7m%RT(r2C;|YoZ8(`K_Zz7I0000< KMNUMnLSTZ!!=(`b delta 398 zcmV;90dfAn1FZv)DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00ApWL_t(IjbmVd01gHg29^W{tN{iL98FB%|>H z4k*nArJ2Bf1d8)R1sa4HIDym!h6XT~9YSs6cvSAdPCaLk4fLTj51Ke9l=g>EOw$4& z4DkX8Ezgh!5@G(p01;>q0aF}&O#BSYAU@D@9UTn}A0~js1-OAB1=1h@4SQ1o5Xts{ zr#r)-0j$#j!+&j)$oJN;0d{Eoe*DU}p>o;$9gukJ+zn5`43CZuP~0%EUS#-$B+nGU zpTL;F7k&WB_dzq9H-HtWyn8ngfVdGIy+AXv;nG_f7y=F;D`(IZK=3#O7&tcY6kK5n sD7pX><21$Z8!+GzB|_0CAPxWk97!-L22VCj00000Ne4wvM6N<$f_65VPXGV_ diff --git a/docs/html/img144.png b/docs/html/img144.png index c1e6819a0424a7c62ef152dbee0ed72558f7cfbf..46efae0da47dfbbf2c56c4771ec6759b7bdbfa5a 100644 GIT binary patch delta 477 zcmV<30V4k01N;M!DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00DYQL_t(2k)2Y%OT$1IeRus~lU|eT zN(myR2to%PmHr7WE((Hahtk#2EjV;hA&Wv4N+!XISaER>&3~#?=xmqZEFrTvc$Xhl z0`1WEcz2ig-S^$)_<#uXWdmp#Xaz80+u0AM(8UC#UaukLVr6>-u;*e?LjtvMQi4&B zOhwnla#NT46<~o75|^GFD<$gWu^12-yq~N-jF_GJ2oF;znw&gm*Og$u`iF2)@H`s| zL4(u4T(A@0CV%b&{`-#zj!FgjCEtG1PZzkX9`~Y179~!;->I$1um)92Pef!~s~JY2 z$pnh$i3sU%nqZZ3KBH7_>~T3rp?lJ);H*oxreMxD$k^~_gz1(Gxtg|Og)Vbum1Hi? zfkrIuEccK#<)t0^jZd7JcSzw&<+X+adYEzrG-HV>2UZyJ#?hD~`BEEWAZH{`De`W2)V*OZ~xZ+F^+l#gg4v!m>mgYRCmElYp4Xwgis!KTUo9sW5&4l=zJU TyyK1Y00000NkvXXu0mjfFiYCk delta 446 zcmV;v0YU!!1Kk6VDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00CP`L_t(2k&RHlOT$1E{@PsP#cGnl z-45a=Euxc9PLM7R28X)FLcuYM;NXx&i7vK^Ah?tc{v90z2Y;7L{vB6;%=KN;s}f1= z_wn*_-@Es{#{n8oJHS|CoI+}~`&w5iQ>S-P>h-!{Fq)4cz)v_w9>XlT=~oOUCm{r- z7R)Bux|U^W>*-h{=d*;%lw@+#xwsE`+w4rt7(R*AbIa=W;j}+NIO{kvq2HY1(36visAS;n^9(065QuPN2ZoWGd(40V2KVA_8Q@|W7tjyL|9;%o-4QEkvgXSXelQSeg3 oVXlP-w$L&68~sMn^A|#X0~GbRxLa+n^8f$<07*qoM6N<$f*R4&L;wH) diff --git a/docs/html/img145.png b/docs/html/img145.png index 81ca11d66a7e22ac598c2ee980122e99a13bb531..263f649ea56e46e4f59b236a559349f00885d57c 100644 GIT binary patch delta 413 zcmV;O0b>4|1H1!}DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00BBlL_t(IjbmVdfCGFGnu!4gC@669 zgBhBr;=CY*yxeX-wGQwy5Cd4DG|(EptS;3LKqe0Z14jeH1b+qy6KcHzQKn%9JV@*Z z5H2GRL&1RwGq@QN5Mm6R3=9nnoQxdg+e8-N;)gSt6@Y{th=t^4?hWA3VVc0f81Ui2 zj0FbgA@ZPzDLB9&aNtA21rCHdhFuBF91Sxc{Jz2iF%Kj*fq@Z7a4-l=!0H4>B_*18 zjrw3E0r_qiLw^;UY>yL^aSlxGKCtHR2_C0irzfvvV3@PZfy4UdIsvc@_icnSCY}RK z0SpSa8J05ePvGCc?7+zo1T_X(8N*Uez6BFFKQKfwoZ-}GV3%azdcX*_)C)00000NkvXX Hu0mjftk|PO delta 378 zcmV-=0fqj&1DXSnDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc009_DL_t(IjbmVdfCd%@Y(T()hZ{`@ ztdNs|je&uWqvw;uCr+#y(E%Tn<_9vbGVwkU05e$x7#!FkqJNYFRs@rA0>n%u4u%gK z3RKt_CLqKH3K((0nH&m0q5;I>LCCWQfGJi3CZ+`!J{SfVdUY$2yhHHK{)l4&!UxdW6~HZVM7SjOxx zz^BZ>aD_nuWa$(XOP3mOgbHvQur)9&abPR)a^Vh3cSd$&#*Y>T+<;>@5Nse22*VEm Y0BsRF{>^4ku>b%707*qoM6N<$f^iCpSO5S3 diff --git a/docs/html/img146.png b/docs/html/img146.png index d25a2c0f8955a425a5b96da994f5e27ca1d013db..b9418ca1ce43478f84ecde33e46ef5a1cee3b688 100644 GIT binary patch delta 335 zcmV-V0kHny0`CHlDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008YtL_t&-m1AH40;Ua|3~6a;ASS~B zAcnDlfcXK#Duo3w9zy__RAAt@lb*o9V9OF?3|5_%mcYQk$$x+ZHk|EQ&2Wn0H0Mqr zC-MO&13&wGpgw$H0Wt@nl>5{l7F*6OjJtRYfUXPBW#DGvX8dq~fs0`!KZ63J0t3)$ z9s><-2CiMq3pN>`7@39ucr0dJ!0-XP49@{9f=crk*c!NG9@sHVZCDS)=Qtz4p~g_i zaE5__U4VfzgGk{v5Hn0u0{en@$AS!Q1`}WaJz)B<^8-Uq8v_Se{RB{u2>={KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007=eL_t&-m1AH4feDNZ|NsAoFo77x z1_BlahCl}g7?0rqm~>dkyV|mVfgzk@s)qnb_5c4L7#Nrtkbi(fe_9%2Dnlz{7?3lG z#Xx|S#~x%D9uR=cVTH3;7R+GJ;_zS$_>@tiWu?V`@F>qX9OnF$taGaroLDwLj@i0RJP@L%# z19t%fcK`!#13AM-rY}HqTO7g08zt~FEBG)l@H%icBtB$d2P!GR?VA5s!3O}-G*q5- St&2YZ0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc009z7L_t(2kz-&00WJn^HU>1HfGz+6 zEE5=b873q!Y~Xx=O&SJR85ll*8GPsNHZW{hz`(%aFoS^`pMMs@fQNzM5Ca1zLjnT> zBRd0E#sQ!h(*Y(B9|#y>Zf>H?7Oa2^iOB+E9bn+Nz`(%9Ai%&hLC%0<1IQf@fPA1M z3K$t!13>QMh46P7Fcdg+1A_yIKxR!40QzGBBtR5s;9iQsO6nVKoMZB#;)K0}8i+^dH3rRhTjRHo&DBmU40e z(++n-zrrg{i0s}SKthaxF$2UoY`_at%%fz*@W=vWw#fpp8qOE80u=gr5CZ^FNit7S SuL`pO0000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc0099>L_t(2kz-&00Y(N6eg-rk$iU!$ zF2=yoz`)0##Ke%m*?=L31o#*j3Lp%hT^AS6$h7YU^ zJR5+L3^HJO1|tWC2MazkFmMC)BZUGNjhst4D8w$D7J)8u6o|PJAZ)Gx#tR@iWdd7S z+5!f17lY0pU|gweFv;)0@C8V*a86L{1kyi)1UMEzG&1%Cz@-^xGBbQ+U|<)pXW(@( z0895IfGuHq0OBk)U~d2#;#$bS8H_L+o70970046UEcg(F#peJ3002ovPDHLkV1giy Be$W5_ diff --git a/docs/html/img148.png b/docs/html/img148.png index 6ca934d1dae4981aecc20c4f8e5c7b06aa9a6231..2a1a4eba518aad00944fa1077621173513d4a6a1 100644 GIT binary patch delta 295 zcmV+?0oeYZ0<{8=7k>`~0{{R4ouuhH0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hvq?lj zR0x@Ejxi2`KoCVAiy#C-sEsij3JWXGVWUT&G*;GD#uIP^YJWq4ClI5ZG2sZ*R+g5| zt`rvjWPaw){QWy1$PG18o&yO@i-kwscXkP~Re|+4BSHu@MXuH|Q7M7u7kY2(oM=5( zIHfox#qYCxLZ#iBSWI0agM(xg{KI%rP2}s_@zNQ2-ousX4e?y$;3br@{9Xss(y-b< tmZj1SMZ2(rXdr9j9$6&`@pE>U=O4BrAjVLI?zsQ}002ovPDHLkV1nerc?tjk delta 273 zcmV+s0q*{_0-pkq7k>@}0{{R4R`@!f0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*Hok>JN zR0x@Ejw=qrKoEw%KA@#6ZBPV@}0{{R4)jR{F0000jP)t-sz`($bjg4n#XH88_CnqPTr>6}K z4Yahhnwpw`fPi##bXr|*Z_nJF5+-G7zo|PA+eVzan5LW#s}EcvjuQ(fQw5*f(e9`8AO<{ f85_XBUcdkVTjCXd1c>mH00000NkvXXu0mjfS$I*$ delta 215 zcmV;|04V?T0p=|0{{R4Q>bwY0000jP)t-sv$M0PsHmKroRE-^goK1_Y;0g) zU{q98NJvOLJUlQkFeD@-7#J7~3=9AO0P&8JI{*Lx0d!JMQvg8b*k%9#0B1==K~xx( zV_?7zSPKdmcp6|lJ_N@}0{{R4aaOx`0000jP)t-sz`($bjg4n#XH88_CnqPTr>6}K z4Yahhnwpw`fPi##bXr00000NkvXXu0mjfuk1hv delta 181 zcmX@Zc!Y6+cs(x*GXn$T_d_RdGB7ac2Ka=yZr;3k#flYk=FFKeVM0qwOGQORPEJlj zLPAJLh=+%Vjg5_pii(7U1P>1nP{+32cAY?qu_VYZn8D%MjWi&~)zif>gkxqhP)}My zLIlGRo;3+V95M|NjHmK+8HCuy3>PqLo504_*23+ex0aJ9CgG`tL%?baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc009U|L_t(IjbmUy0~~040W>}nDwkP- z;q3<$ku*3!7Ue@Qd4QM|qKAixhlhdh0HXp-j*)>I-9Z@UCV${iz=Kbak%wKQA>hJ> z24qPA4nB^C4?WUMnEGf2?68RO;TGdMp@6Bb;DDk%BQpy#M2v?)0SFy}75Eqq?2=?e zHl#s;ow1=H0NsBA3=Iu9!xjd=`C|<1f=mw>_AxO0;>h56zzh@D2|vxia2%K#3n2J5gWMvZI$&C;X4tpk zumSE=&%mHtBfxoU%>)LP39JH)bBOfkp$SAP90~wS8o~k+0Op8OM$}N+fB*mh07*qo IM6N<$f)mD;MF0Q* delta 338 zcmV-Y0j>Uu1M&ipDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc008hwL_t(IjbmUy1FYx*Xn+lwlfc0B zfW_|uih}=efGo<7%H;k4Wpc1F$TP4d5U>=*+z&Vu@Z%FyV1MH`XlN)fz>r?Bz%-Z$ z+o=W`NK?)}0gK>=11zl!kv!}W9tSW^8W;-Pfu8xGjINZGA>hIRYzA|X<_>bfe@sA% z_60<$!<8oRt7FVib8jF*9Sg4m+X1bwJq%%P0sV{m8|o%tSI1DrP{Rxq<8ff{VLc$* zpb8Vu_|d|^z)J(P>I8(k%rGSZsE#*)A(o*dVQB&bV*ySlYy5Cvi0lkt-~mDgS8T}v k3jn%c_y8AY{Q#sB~S07*qoM6N<$f_n&yI{*Lx diff --git a/docs/html/img18.png b/docs/html/img18.png index 5881302d5ae5b35992b87a13771322c90bc42065..0ab65bf0327acc41aec264e1a69e6b8975b53ef1 100644 GIT binary patch delta 576 zcmV-G0>Ay61l|OYDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00G=dL_t(Ijop;JOB_KM#-EuJ?rS}V zR4D|d-FEFJZ9 zaaJvl1xdMenSUre9pz7`T1oj{gCpMl5Y_N}VREPRmG{`R?waU>!A*WQ`WGC+8h)0d zH!Sq@3pQS*0^~EUNIZm&hM>S9YdD>fEcS4yWOaeZrc@nD7TMa@HjgVGarm=Z>dr)W zw~Rs@x_+Xaw=(kh#nMabT_s)i6g>!orG1Ap_s=Nh?tfS=T-%ppMk<~9{>k4vWU1vP zcCg!d#g4b%T|K#ZbS~_8cc$)6ryZ<1;%U@X_OU9c^bdgFZ`E1yIn2(%s$)geHQr{| zlK#vCZ>k;Vd0c~`1OMKnt^7ewo_$&M`u-s%w+{PG++0(XFSc8FiAAsvVN75Ml@+|N z8cb}OpgA(L_%`B0Lk=hy6!#3=eC1F+Zfb079nCfIMcvclKV;PD9myY{zNT-IgKIVb O0000{KR7gljJUl!wFfb$} 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 diff --git a/docs/html/img25.png b/docs/html/img25.png index 551925d41567397d3baa2b3407b8e728a1af1c1c..94b7850d4ed649d72002c5ed802add2dad8da5ad 100644 GIT binary patch delta 181 zcmX@ac!Y6+cs(BrGXn$TtVD(q1_lP*0G|-o0|yQ)U%tGzw>LdK-PhMwU0oe0vt`Sc zS+iy}G&Gcylte{EIXF0&n3zaONjbNRy$4D&mIV0)GdMiEkp|?rdb&7{LkwsmZnQg;N4wVQ;oj8Rwy?MzED_IzMD$MsV7@sTM>v0}xXIddjVn9$PFQc+QnlarH> zkPs3Q;^E<8V`F1rV4$L+A|WBc!@~pA^eXc7JRrqb666=m;PC858j$1Q>Eal|F*7-V zftgX@;5&wg1_q2b1Js%`#U?yRNjkug$>`AfM?s8TK&LoeB0;N>`54Q-56lT+W;32> e?l>fJfPvw$Dw_big$EnZFa}RoKbLh*2~7aNUpa^X diff --git a/docs/html/img26.png b/docs/html/img26.png index 976644df9e85cd6b250f64d230ba9da8efe572e9..37cf3822cf0914e7ad6d816b279e7dd2e8a58533 100644 GIT binary patch delta 198 zcmV;%06G8P0pbCWB!4PUOjJd{z`&=cr;Uw`XJ=<8Cno>^01XWdw6wIEnwo%sfOK?p zT3T8(G&C9-8o}LA9{>OV0d!JMQvg8b*k%9#0A@)X6)fdU35pf!wbK-&zkt3L}34aH#s*J_4tkTZ5O zoCH!F7nmG?6#JpI6M&Rx!)}lgc6GdNK(Pe~0KM4~6tg;#3IG5A07*qoM6N<$f{IW@ Ap#T5? delta 195 zcmaFFc%N~CO1*A?Pl)U0&6`)OSTSeLoCy;qw6wHTR8-{T@*r=$e zNJvQV@bEA&Fl^gx*9oK;OM?7@862M7NCR>bJY5_^IA$gT^`tj2u(GjpG_PlL*;maV z+TPLSRLN1O5K++3*f^0<~{K+HQ|Ac&w+LC?(QzP@JaZZbb-NgaaW>d u$M23z=8mlId<>IzvE}|)dwdHk2gAo_VyTS1+}nYcF?hQAxvXEdiJ1_lPL0G|-o0|yQ)U%tGzw>LdKU0q!rD7fw&D{|nz1CvFPOpM*^M+H$KTV%F@$4gasmUhxxhiw ziHuxg1_rVXMmu?gBqa1c7$h*9FVdQ&MBb@02c&4TM>v0}x92@_gcS}H0ka&mG)LP9(| zJPZsBR8&+XBqV?eP3Jwj0;CvAg8YIR9G=}s19Ch)T^vI=W+o>vG;=C6oo!&`;*ppk zyujxg6QjcXUPfjWZH7{VoYaH|X*UiWIFKULwUUK(il$Mdh<`G7@VV b&6pS#++cgY>do2!ps5U=u6{1-oD!MSTKXJ=Uw6wIEnwo%sfOK?pT3T8_KtMD! zG#VNjYr(xX00001bW%=J06^y0W&i*HYDq*vR0x@4U|?WofB*pq)xf~WfBbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00B-(L_t(IjbmVd0Ui_z0l0yflY!v@ zm}7u03k8!VaO03c1Dp`*0s}+**90KrC4&OciUtM-t^*7@aDPAc9^Fq;4( zXK>G82Z}imXL_KEQc^fqw(D1K$RQH%tK_MVFL7Kmn9YgCNS8cn{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00BQqL_t(IjbmVd0ZuR}z{7wBK;oxFyJnLk10SFc^TS0tSYPdk=t&R*;dxAS*U7Ab*T#AkHvMpa3TM85j`W zumf9ofkB0zgMs1p?%f+0ctHXQSiFMacUl8=P7EPFFbNdrh6_Oy2{IrBkUNMt&|oO& z01itAHtq)u3_>gn4Ie%@O<-W(y?ZwU0}D``i<`lr?ZJhQ5LJ8$K$0JeFPSk!SPRJZ z6y1PFM@I)iMSn~VTnX@SV>ydcoh=f38<@mq_A(fQvCaJegGNL`#*YRDP^yN3)RqWH z!U|cyuz{hMfh&N!f#D1L2A~N00+=FZh8a-Di7()2VED@5&E(I(v4O_{lvJG&PXE9J zVel*P3oux?W)!luHZgF9p|~j8ZK)%K#g@7Qr|%HpI2-E(B2<9@0AXc0UI_@dzyJUM M07*qoM6N<$g6yZE-2eap diff --git a/docs/html/img3.png b/docs/html/img3.png index fa40a0b0677a2e87f31865aef3771ec3d6d01f24..6f2823352491605b292deeccf2ff0f77a664c4c0 100644 GIT binary patch delta 3147 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 delta 3152 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 delta 437 zcmV;m0ZRVe1JnbMDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00B}-L_t(IjbmVdg9RW$0K#TuKmn`_ z3;|$90t0q%OMn%^P{5&p0U^!7U;tu%2I7jN4}fGV1OEpG27gJAJsaRI00I{LX5j`L z3=SZQpMik~E@s6IGWY_63I_)R!|mO>H!$#mgxNT-=x-p`VhR91E2bC+H<;pNVBm&} zF+#i~2#ypenB)N>4>SmKJ1{U50GVvu4}heCAVb5454;l?*mv*V4Gqo(4Ga!#4+=g) z)bS;N$PXW|xPPYrQ>cOrZw(0WPZED3Kv-Ec14jdl&2ko}vg0oP2+lSz*@3Bw`~0{{R4e|Yjk0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hl}SWF zR0x@4U|?Y2VgP}e3=qKg{~46^fuDhcV+I4m1_mU+&A`9|q<<1FByb-9(i{w&3|PSg zD1Cu}0i-VA!-s$b1_sWCoec#*J|`0=!-j5U+askHE z#$4y`Gyr+O8B7>nGw>Zy1uOW#P&nxWgL=a&u&caQM=dz4vw-1|1p@%=b0k=Y9{m6S P0000@}0{{R4v?L+s0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*Hl1W5C zR0x@4U|?Y2U;u%G4q%FbrLP{sV3@$oz`(qLfgypB0RaRV7=BoRRKtf4yb~C(fCdHz z0}%azf#CpbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00M4FL_t(YiS1QSi_=gL|MhiClje1s zgNO%_&;?PHB`A2%6?*p653q;gCs6PM1Uw0gguN(IBq%Nli+_amBCN${1;wQ-If`Dg z9z7L5fiv$lX|h?ipnLG(lumx{H*Y30^Zo=lES4e_i8Ss2vSKYuTkDu63Jir$n4Oh- zjLSN!8nErKeg*{h!hk|7?bBPaOnQ64OBaedOzf`*f=gLLY)g1ZY@jF6c8E*Rb@(}U z^i*GKK@+e+`hU1e{z8gjTeIgh!}Wr(mZPZ|OO@jkO>BCNzJeoy%2 z?2)!$(~rz1h>ac)+InmS2B#-g+rKF)u28LFr*)(2+@xaDSzJWkJPiFC@Y*@fPskLN z7N*z2LX>mTHax~Ly_WZIFJE4Z)*1pj*V-e4tt>}TtlVc4kEL($qPyU~ zED~pD_fmBm{+YbQUAit8$PVzTrjE+Qn}Jry_Ij_%pDlYxy_Fvx5$j6O@CkS3&CZ{cO(t(USu^1x7lLcbM534vBY?jNgOz9q7cvuroe`3GH?T z!A0KeY9SOhJjkqWZvtc2@Mnp?44cmFc^bX7e({Irg^fB-5K*4|Yq+h%6`td#@Uf#+0gHnfUJ=Wt& z=YdnYDF)B%r^88!mtNULy5%p-Tt3Vbojt7!W!}e0%5OWul%rNUVPpUR002ovPDHLk FV1oGhR?Pqa delta 751 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00N3hL_t(YiS1R-Yt%p#{*uk+$1Y7H z2nvG49~bptKq&Pf47Mw%#V&LOQ793s6$J?h74#Cs%6id=UVnO9Jc!4Dy)DQdJr)n1 zqxc7G!9T$FCX?)Lx232(c<_UL`QCdo^XAQaGYf1*H6r1;S>yr}W8P7?EWCh-f%z&c zG5vf2Z^tR$)c3m1@&rx)lKO~XJ^^k4H-O{21l<)vO1VBXRDih;p21takC?Pj%HDps zb+Tnxt?;mRMSqS@q;z=l8O!+Fo$LS&2uel9HS)+NbF1)BA?$KkEM<653^?kT3hMp7 z?oYz%cDuYxpB$6Yo%RNt;j2)EBJz+`wUy3ZB=+wjIyPpqU<@nZ^N}AT=L#{JopKnT zn5*S|&sJA218_kK1G60%vOD8qh}#JPzf*2-5cpJhj(_>WE@3lNU=Nw-O zI2VAsD#zQe*iJcqqGBun%OfXj3zmm44#$UjO`xgEzDS3KnpfKOWOT}b(d>pWU9y=G h`%=jsZa3|Z@e51fc(*%3^xyyh002ovPDHLkV1jb$V!8kT diff --git a/docs/html/img33.png b/docs/html/img33.png index c654886a363bc468161470f6bb41a597ddc7f3d0..4c940ca2f775b4b2cd762f0bd85f3f1076b9bb1c 100644 GIT binary patch delta 241 zcmV@}0{{R4TjomG0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Hen~_@ zR0x@4U;u&{AcFe?0~qi!Gch0mZcY%Fiy2Ai)P~s;x)v}nOlknibSN<31kM)@GaP1M zV7kE1!*CGD|G>t;%@3qEa4Yj@;ns#7aLGKdPt2XI?M-;X%cVR#F^oKp dH+g0O9katqP`2hx96Qhj44$rjF6*2Ung9mvO|Jj| diff --git a/docs/html/img34.png b/docs/html/img34.png index 1cde3351d0cd5bf70bc83d8f37a6346895e869be..3171ab9af730b705d86a70e75591a5daf4ca6ca4 100644 GIT binary patch literal 607 zcmV-l0-*hgP)BjLjb~?PO-)TFCno>^01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001 zbW%=J06^y0W&i*I-AP12R7i>KmAz}*Kp4g!OR}v~&XSf6*$#C{Q;JPyLyU(Etq0Ft z;y=UzL574-ib#i=;sh-oV$$NFT?`?rp-_?%OuMxiTyM#cWDOb8yUT}NyLN3W6bkuG zulzjE-K+bMfj*2%3Ydp`^~CxO-RQ{xn6`$S{>(ZEnzB;%kjr-|_9VmgK(W{WECO8e z4%L7H3+F7ym6HbCghBiKx9E2;{dlOuWs1^NoD$;Jcx#&DI516$EQ@l@6*7s4rajyC zIw84;5dy#WO-DiVCkXvF{B^lUkxTvq%OqwT%};b)p5*cN=lT(pxo3Fa)(%DZ+QP$DP0g?$ z{9IX{DB(q!$bNMMyj0H6#sLiR`|B+^v$QxOoJ4$@oZ&gX5K#i}Xu*OMlzVM~gP7w2)?q1=Ffy tgcbICSTJ%p9p=ArBSaQY{V?e}=NGH~YJSvkr2PN@002ovPDHLkV1gu4^P)RHR400001 zbW%=J06^y0W&i*Ixk*GpR7irVH-%`D2M82pz+e&9#1LBM z3XIG`I@lM$ z?fC#KyFjHE5XU5f?KR+RU|`S!>ix>#!_4p)m=2K<9VQa}~>6@T?1E`mE zOIC;g>qGLxiX)78y=(=jdKrk1BgRT%Ex`gJDA3#DK!Ii|0{|q{UGnvn4k!Qs002ov JPDHLkV1j0q>`4Fs diff --git a/docs/html/img35.png b/docs/html/img35.png index 0d34de725feb5d87e99591866410b9015426bc3d..5c768e4e5704156c5889ea664fa0f93be8f9f08c 100644 GIT binary patch literal 1056 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 diff --git a/docs/html/img36.png b/docs/html/img36.png index 29d577f2be2979f9def3c3770e3445e3f9f838e6..9af1be2b0b757006b47bafe20b46cf4c0b9cd8cc 100644 GIT binary patch delta 309 zcmV-50m}Zh0>c837k>@}0{{R4GZo0-0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*H!AV3x zR2Y?GU;qM^1q@)YmjMpAR>yI3H!z?91{DP+(+OAb_qPJ2=IowfO?i0_Ix+4E)Rt8v;IjFklE^VBlw;$*|z$hf0PAKo>4u z%fz7I6=ijqI3o!I&Iqm#3y(JFFW^%EF&PZ_4*UcPPix@az);9=hG9O0$=|0{{R4wSl@$0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*Hvq?lj zR2Y?GU;qM61_)?oP=K-+*nK9ju`^(Rx_bf)3@i*R9VKWICVvy0oje%RnZp(^um~tD zFkoZlG?<`(X#h6R&a!1`0Y@lXDgy&IJIjRy1`SLK9~c<;`3w>+Ec#Hu(7?dJ=H<+g zu*fuZTQhM+5(dl{Ss$?TCvY5O_`q<4;TU5AU-$u_u)YIV0z)MOp91>=-Ueo%NH$ot tK7$_{!zZ8wzaT2FgKV%(!4;+e1_0HPCQZA$*t7ru002ovPDHLkV1kheY2E+; diff --git a/docs/html/img37.png b/docs/html/img37.png index c144aaf67c50d81204b673d6a29f7b6e2300c651..0eb5b386476e9c30cb8f170e1fda634214f243ab 100644 GIT binary patch literal 814 zcmV+}1JV46P)fb&D0000mP)t-sz`($# zr>BjLjb~?PO-)TFCno>^01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001 zbW%=J06^y0W&i*JtVu*cR7i>KRy}AGK@|RWE@yUc-`#B^SOi%wA_PPiD=`KROaC}* zY*GXpv9qvIQfwuNAd6U71X&P;BoYp76hWR*Foq~c8VNS5HrgG6orrJde%!k(W{V&w ze#_3zzWwH#H#2YEERcycIITA#yoPvx6LpxxfQe1-zXOmH42?8Q}{eRRHRQvTJM#C9ZOrQchSI{1VqFJ~uma3ni^9Z>xzmfV zBzRV0lRUZ2z%bEbf}J?Z#BO5$2fp$mT?nC@?;~} zuXBn0$KQ*Gz`Vs@p^0xZ1uy%bZ!uZ~%d)hxGI&4pFEP28uUTkTKw85%K`R`>LH0Pq~@-D1F5ku*2 zr)maLJBW%;i45WloGaRGcBCp?Tz%5%Oxj?-NI8-}_KD%K{S^;@dkzX(O2s|j4;U%? zGCqd(OEv>6C6?x{QOnGTw82r4D$8-`9=eO=@feahUIeHNoLA}{zgmCx-TpNGX7U@( zJ{PH}#r4CQdr_V6=z?j34@1*#)pfa?YuYZ|cwDC)b;s8<6K23;+NC07*qoM6N<$g88*X30000mP)t-sv$M0P zsHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001 zbW%=J06^y0W&i*Jmq|oHR7i>KRXvCkK@|S7*}r7H-3Wq(2qOeRwAez9vysKSlM@6N zE`m0)!f7F*Tj&W^O9+Bkn8UlmE`^Al3u=`nl_-cDVqu{W4=wCgu(0&a>`#)*nrv}} zieK2-$$Q`XX6DVjSs)iRv+wI$(9MC#$!87+*}(A+5HW3G(Wk}$TZ3+Z&s^qR$lwE( zwV(c}9X2vX0mVXa2Hj9Rr=Qg1WVsA4z+^K-Zx2jEm~<$?v7TvgZn8Kvl?ew@Gn+d# zzk(unimlHqPx^@p2xs|fi_|!4vp~y8eoW@D;3bFpahl)8GkgV{w}T3NtzV4(w9=m!Z&dRo6%U-C*f z&oTWi`{BfUou3pW9H)%bgRo1Dkpxq-_8cKcr9^L1m$Io z&#H{~qQG`FbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00CS{L_t(IjbmUy1qvS+80JBkd}vY( ztPdFY6wn3H!2^a#6Bsshf|zR<9}rTFsT&C5@6Him;D&M-W`8`f-~@9T(3DXMSiqzM zhBzP8iW%Ho8SHEf0tY@Y98ywJ0Es7n#5oxm85lr#0!%#z1Iq%cIEl940EplrS$xI< zjtzP|Ynm1)Kz)3`;5-LVJmCUs03#zi4<`eI6DWKb4sd|gKlokXpm2bNjei2noGUy_ zf#MttoD7^C41XL5^93ewk>Z|FfB_!xU}F-ie9kThhMvU>xc4x~FdWfdv(xGVNX7tJ z4Tts3bpjA3{|06UhChl83TGHzGx2WV3SjsNl(1C-1E_LNh9Cw8CIt{vpMhPHyP;o! z^8-_WziVL_NFf!N(fS4?+wyxq)vN&Skc(nO)!)*pt20mpBx7)71 pWWg|(G_QIsAWHcK9&AkF006`*Ua8I2ieLZ$002ovPDHLkV1jp=sagO4 delta 413 zcmV;O0b>5%1H1!}DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00BBlL_t(IjbmUy1qmA%n7JWLZZs(d zjt>m{=wcXP1A__!qXH9%c>u^E2i)7|%fP@1WUzyHoh;iJS$~1FssdSt5dyfJ2=oUV z>q~Af76yj}4BoqUZw3iA;8M>MK%Q6W2{wS8h!Lv<#SH@(4dhs=IRqFO6d>X*G9d8} z3%EZt6!7o>W9jzp-5Y@7oM81Io?TG*@RgODKY)P=qQ0J~7KizaB)Df3U;u8UVA?=9 z#L$&nxKChEbANGQ^JHja%2f3*32y+&Bq1wj4Nr-ND(7xspTO`cMZw`J^9N>r0geXd z2S5oQ0c7O{Y{1ClGyp007vNK74Pg1e>%d*0(7_1-ul zF03wL0&J-n=?oVc+8MZ9G2Fg2t;7H*Ly}jgDv%R0Bo+Yxo5o7k6?sFi00000NkvXX Hu0mjf;P0iT diff --git a/docs/html/img39.png b/docs/html/img39.png index 8ac8e75b82b3596e13466f86bea53ec12a55f86a..99626cf37c33043df51039b5c474afa3c37b25d5 100644 GIT binary patch literal 868 zcmV-q1DpJbP)BjLjb~?PO-)TFCno>^01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001 zbW%=J06^y0W&i*J;z>k7R7i>KRxyhcK@@(wn_PCYlg$250= zxDn3>tS12}16uz-Da4acgFY6i#&XU+DxQ9dj|I4P8j@1k7hSkgngL%9p&*1nrxGl1 z2`zMCn6{WZicSUrl+vSGI0l4Z7=WW@vQg_0!qiLz2uP`%_GM2+(tw9=WrrWclR?U~ zb0;`a7xB0`eCq3RYT;9ysAD28T}PQUQuf78r83L9cRC#07<8n*h?Xda!b&Y|{3SOI+X>{uTnTeVepBR7O9RY%U8k)i7nML$eii zBw4+5d+P{T0#Yg`8;j!DIO&||W(aJRlXeOT5ZWrI?By9Ngh>U~)}#=1RrQJ0+n0UW zGl_EF=Tyd{fc@uz z_GI_P{D8Dpo`+pLH-Pq9xPqVHjpZF+oyj~eWfH-OGGxM2?O6d-`v>_Zd^Ib*as$2- z%?ClkV;;UuxOTXSuXqu4rlhd$7WoTtMhIW=m`o-Sn9PvqPsr0yIt0({Z_dzc_z$4i zVUntIBA<_gH|24B?BeeUUa*$pf!XnV9yt(4Se6-*@RHR400001 zbW%=J06^y0W&i*J-AP12R7i>KR!wNsKotIxY?9qg-2_pJw^2|$=GcR1O561pjBU|k zdkEFFr57uDP*519N-x49f{F)2sd^0*>0v?kAb9Yycn~kbq9AxO2ZeeNoS9_PGsSF0cRAX8} zJb#!}xiSp;@kQWpQ($BCm0@%<-`~TH$MWl+1PZ(HMKlaKlS1b=%=)FNw+JS`Og@1O zgz1UA)cx%Li?UHTRaW3YqsL>FpwC+=QFVS4(ecX_ozHo#*r;SV_Gg`?ljxL4I4c{t zp(-8n;bD?YKC;NEJ;&iYTejA0&&zeUMQ&jWn}m_-u(VY#Wp2#H z@%43b$1u1wxG;JZh6AN?;VhIO(YcEf!H;3N*Uwk?%%I2B>P-AWIv>UGfVavmc4jGf z2!1eeoqdgrj`Iiu4Lrv|esb-W`5!o1UJouCC6&z`)DPyJgFkS+iy}G&Gcylte{E zIXF0&n3%*QGqM7u8B2ovf*Bm1-ADs++&x_!LpWw8ConVxDBL?Bz>s8Q+|bD6GKJYg zmm!It&0+?F(hjo*lL8}y0_ldY?T3~|svVf=wKqXa&_&^c4tuwGgJ^pj8v_HEHrGaB TRkQOzGZ{Qx{an^LB{Ts5%91uz delta 150 zcmX@ixQTIsO1)fwPl)U0&70@UnKNO+gqD_;ii(PyoE#4i4;vdB9v&VB1_pnzy}>|= zu_VYZn8D%MjWi&~$}f+F)%ZCXb4Z4d4hqRFCmmwfj5VT zCx}c87k>@}0{{R4GZo0-0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*H#z{m$ zR2Y?GU;qM^J_az@e}Dl7xEAr^DB*-)d2_TDufdMEA05#b$0I*2ZKL7v# M07*qoM6N<$f;%g7jsO4v delta 293 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 diff --git a/docs/html/img44.png b/docs/html/img44.png index 05b4747820b2a923ede18ef59e473ab2590f11c1..daed562ba8a5f804397083964e8c152dd10fe58d 100644 GIT binary patch delta 547 zcmV+;0^I$(1i=K5DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00F;AL_t(IjonneOT$1E|6OB0(q3W~ z_YieZK{_~yA{5a@6vRJ3ibF@Si*r#B1c%@#g4r!KtBMedAb+A@ar0xSxQL5g1qa{d z45l@H)X^W@@8#XQ_wK!ScL7@9JOg^7c}}CTG2eju+Pd1usT46mLs;J=!7v@U^jFAX zkGSd>fC`k9W3Jnn#IS0LTqv1x+acEq5)q~p4X%Y}@}`uE&t67wl4A*m*C3_CvMgFe znF&KehG2jl3V*>=!KJqI{3{CI*Y_1f*|NR>eQsD=2y1FKFF(?BLgZHy-(8*Tp}gXl za3T9dqrQEXS9k-A!$@*f7^;?Kf(`m@^ZSxD6?7yz?Qu`~k-_mqMmY~giZ!QgNKH2N z-{9;|UflG>_FZhkjb0JEFg{OKrO+J|qrFm(!8;BiBY!tTuho+a_8&hu2cH_PoeY%s zM{0EIeK#d=NnZko!0OS~J)V%HqZ_@h7%*>95fszh^ekQ|PF8qbSps4gUe8cHcKm%u zdiisL8z>q?*g@Rko}F?1zfAu}iZh3TD+p>%*Xi{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00Fs4L_t(Ijnz~=OT$nUJka36-dZvlC|258j6&2Hb z5?;Gj`|EqiJLg};wSYtig$6HvKxe*2phQZL42h+5_Ft!EFjE2K=C z2qq~gY!5ghw~4_`j6kyKm#{qOpsRpB7%$*bMciNkkk|~hePom!MF$MU4xf3Y)!9~SWj^jTnNT+t0Z00000NkvXXu0mjflgac0 diff --git a/docs/html/img45.png b/docs/html/img45.png index d91d32f13c2ed0999b8e3ec8c4b2a14660ee1152..1f510513b0434d550135ffdfd0832b336bfb57b6 100644 GIT binary patch delta 327 zcmV-N0l5CZ0@VVL7k>@}0{{R4(aF=90000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*H(@8`@ zR2Y?GU;u*&V3J7z!s94l;1ytCFnhp&1R59^xZm*WdnFyv23(qk>Sa`HSe*quRsr+Eo z>;gOo7z%-mLO_Ny4D*40hL~Z(pvuhbz`(%lz>&f5b0(*g(gBdL00Tz@BamhUg%2mh Z0sv^iEMb{^1X%z8002ovPDHLkV1iCgfgS(= delta 305 zcmV-10nYx_0>1)~7k>=|0{{R4S6!hu0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*Hy-7qt zR2Y?GU_b^25Q^;q1MdU|2LA;NsDR}NcQZGT&Svi7M-t8k;(sI$R!`0dHwK0c3=9PY z+zi}&TnqsT4A=l;2ZGJR0pzz8c)J#ddN6PSZMcwN%fQ0H$G{4dTyU6`!GV#@0OTqI z2Lpx;2`s$-u^NdLurkOtU=ikN;P?Qf*f}>ad|>A{cpB8j;Hv=gjvmbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00I?BL_t(IjqOywixWW<{&tgaJG+y( zg@uL4u;~tw0W0;2)K>c^92TP86=EF_3qfSDv`V9JAQH8a(|?1xSmiv9`8( zHoiBr8Fw$77N^+wg`Ld%zW3(Gn>PcjU|UkNK(wkf@PP(U}cUah7Wq%#ka0|WMtdY>ovWy+ZRtRXZCNHTc=r|k1vmD16qTz_AFep_w=MMTu{fV3}xfinv} z>(=`JO6q$-(lflIpOHiw(Mgxow}E5^?hYl`lNrQ{cXjS6_keVvcjO3(`Ox&?8Dh=O|;SI=<*B$a)zecP=v>>4yqp zfpC-PcXH9U*dWdebl7pdz5Z87uCh>6C`*QwhIa*O(0_$RV#%K>PJ1$Ih4C z;h5Dec^CMofnyslPNeX>ZD*(C&#LaiNWOefL_KbLjhn+Vh-l(r3aCT=jr@ T000000NkvXXu0mjf^ldb$ delta 616 zcmV-u0+;=l1%?HXDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00IO_L_t(IjqOywPZU8E{$^*_TW^)y z#=`DQw4Xu~6PhJ>1f|&ssEGv|n=33l6GCFQ#nE6xV?hTc-G3xNwav*tAccRx75o8L zNG$QanZ0H12arH4O#G6WoBQ7T-n@NpW`GHNZqU@5h}yC1rggq=IG*+E%;JV9I)P= zAd07@Bs%@#K?!mWto}HNkTr28i3-d8bM8mAzsI+NY=7D$Y7?%x`I{#DmtB|t_)G9J z$h4M>lF_gY595+~hINN_uxRG)biL>Jhe<`Z4qv8Xa{;oO;Q+xaV3z4SO;^9V(b7?Z zu*by8E~KvXPfvgy(MIE&qOsz#hhGu8)FkVRCqV>{n4BDJZc@v-#;Z{9zkxyei(OU z>`t$rt!rYIbwhhU&c}N2dL;8Py{KMwFP+}M8{iLymTPRLRAHI`0000BjLjb~?PO-)TFCno>^01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001 zbW%=J06^y0W&i*Icu7P-R5*?8Q$0(=P!v6BYnzW-o5ekZ&LyaWpn?bvI!IH4M1WV z0Uvk@H=QF?Q1P4`$TUs1sMtFXnW+k;p9<)CHvP^P6j6k^zO^`D#ZnYn3kB&*vO9h$ zJP$FR2`!1BL-#roGQk-VE=r+g8EK^D>eYKRp_2ts&aykr%fp@1|_DEm|7dPw@!a wcY{?5+TjFOtKX4OYW+nkZ;#EiXjn~wUzf{S=bAB^Z~y=R07*qoM6N<$g1d{^egFUf literal 486 zcmV@P)RHR400001 zbW%=J06^y0W&i*IWJyFpR5*=eU_b*2JOb!KD1a-U5wAQHaDWH_2L`4OtRMyhgCa4y zkiY>T-oU^OB>$^JL^gzhcuWo783I5&ZtiS^YKThe0B$&eP09r-#m>bbz|Nqspn-vB z_wL;wsfZ5Tx_|@=R|5W!9c%zgI20gcK4A4LP>>BOqs$P&Q_ms5`hkH9Dx(0EX(-@l z;N)XxXkgIZy?Yx-rsD!c=D{Zp1}0Aa009Ojh#n4x25ts{=`1+hCSZe0W)zSL7zx*Lq%#di?@lFs(S;I7f6sP0aZ^SzXP%!(*?{An7I=e zSZo=%3YZ@-MT4{)Mzx27fv*8s503#?f`Jc^v5WzzD~Vw%sKjAM(ZdMTumQ}X14(R@2+n2!5^Fjg00;aSZ3=F6WaE1Yl716;svz5qj cLuHWz0210qVzXbmNB{r;07*qoM6N<$f@Z$98~^|S diff --git a/docs/html/img48.png b/docs/html/img48.png index dcd7f10853f7fee414a75c65a564070f88a67075..80071d90473bd5b8035c99663bc50cefc4a02598 100644 GIT binary patch delta 659 zcmV;E0&M-B1+WE>DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00J&aL_t(IjqO#vYZO5g|K03;?74Fv zX##@9W-g$Jh`k>yDQyh4ik^0YMOwQ78^II{f=GyPXlJ1dR)4|;#{@;(Y z{STr@tan+HCVyqw#Ztwoh8`AMRY;{2sxU3yUypFYMXQAnNrUXTl~csD>*exbrtVn8 z*!~Y8E~*|k+Y6DE$9tmaQo|y+VBCk?nlQ_839ck6OL-21j_@BAAI;7Nh9Lvz*xCTKktE8JFLRkCD1tUguWep zc2roD-khXsb+?Vf_R9#`7wMi}fuMwNb8Y3z4wAX$bK1s-DZZ0_T3L{E0diC0^N4d( zU820UoPQEmLZ(oi1vLjA=yG7=>zUy1O7upVW{}@dx<Rs002ovPDHLkV1gc$J2e0R delta 640 zcmV-`0)PFm1)c?vDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00JCIL_t(IjqO#V(UT4MHD@_2L=yKJ-`EC~J}?`z(B^X4UQ0*rw#>^5Yd1@H<>IL?hA+E+3j6uMX8 z2c)ROD7BU{gfMMJ(!5?7br`q+<4U**%%~c!N}RNUdnD?+*df+;*%ynLa?;=*h-M@D zk)cg>>k_S6xqrW)8ZqI(PLhO9mD{q_Ji)B_4ifr ae}+B7scGub8NlcO0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00MAHL_t(IjqO!EXcR#d{&w%O*>&gk z)9h<}AHT1hTACMXhDxxzvP z;Y=Z-DXta^-^}cKm-8;?Pr$|xcIWTgZ{EE3<}I)mwopwFn}Rb2SAeH0aTgPXwB@2{ zSKvXU<6Jkf11(st{xH`}MQMjkaDS-%CGx2Oh8*0WCweIDvIJTTae!56#4zTl@ydc> zZVZ06hS(TW`hUSEFLc80Cd3}VCYZo5#?=IqFWD_xU||@-f+)(l#VYi1Ny99M{2 zf$3Bz;+@g(3_sFZfpKkPkMyr0eoD?BaMm5>(4bd9X;?(HJsqqe>41oR5qY|qt-Dfb z57UA}9=8%s9I0_IA+I}HgzaK5Y~*G5uCrK%#R;W`On(Lo2=|Uq_ELZYq4$akbUW_* z4kl za8Fl!ZIc5>ObtA{e*r47s<%)cDRYj-?*Ua00000NkvXX Hu0mjf&2dy4 delta 692 zcmV;l0!#h!1{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00K`*L_t(IjqO!Eh}1w7{*q0y*`MqL zEv^tGg@R(Uh+rXTP;YSyaf?N+k`x{&qNEV9bBbflaR(bX4u8aIt3zyD5JgC{U?JBn zh{u(wt?sa~^v%p}j5*y~#Y+5OX5O3m=FOY;UM4^RvFrmE9JUQ@gyv)+C^F007H))K z8PO~fa~Q*^;H+e&fQAm>!_%OnF=N*Zcm=&iO*baWb!r>uIrS_CofmYZbKOSiqXEON zgupSA94LVQnSU$uBb~h*&?U?v#k7L%bk3As)#|7xNdg;O#_O5LR-Kv-T#F)#s84qk zQO#iB00On=A3_|@!}4Y=mPO_3oQj%ZZ#r2jkQx|KjE5JSlo~}El5W#@+(cFAmeXOY zE)b4MIlW3LGbIVm5d%ELnIw6OG4tie6A2r_bw=_oM}LP^Ye-X(P1?i|;sW_4NP7rA z+3L8_QAXJth zu1!~Vpnq-Cu+ToYnX?q!*+zFj_37{E`()^SW@rS~0$xt_t9UYztbH{$9Y5z&sfqgK zg@MiC_*LO?_Ag?-xI*a*iI3^1vWFXLBOJlIxdhx(4}r2|i(4~~xv-Y|ZazSzmBm(1 zU*9FN1DyKo8T~D_<<$zk1Rl)I_F~SbE6YnwGA%;EyoJ~J1$qaktcTsgOdz@s=3H;u aocIPRR&cE*fDsu00000^0JOBUnwpw`fPi##bXrdsK~xBtV_;z5VSs@G5OIM46L2sv zh+`3EU{GLSV8JTEz`!N|p)D97YCzU7F);9Mz@Z)$m?5#*XDl^002ovPDHLkV1n9KLO1{b delta 172 zcmX@lc!F_)O1*A?Pl)U0&6`)OSTSeLoCy;qw6wHTR8-{Tr-wmV~OM?7@862M7NCR>_JzX3_IA$g%G%&Nau?UnlFbaP#GGIv% zOnbnPbP0l+XkK>nS*= diff --git a/docs/html/img50.png b/docs/html/img50.png index 418f2429a098774221a98ee03ee1aa4dc9a2593a..9d51f9268fd71d4e2071158566d57c7e7f1fa58c 100644 GIT binary patch delta 721 zcmV;?0xtd81?~lqDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00L}DL_t(IjqO#xYZO5g{%-bu?B(Wu zq&W~Q_Vyx*id-LrC0L1IuvIkL2^O)mTd)yKu^vL`vL z0tG`Xso0?&!hh7?@MQ!lSm_K5_`@EQD8_SDsW6{0BZ?k2%aj?{bt#sr%;Os#w+*A= z&Nv8*M8Tb|P(Y(rqT8O#8!eGg{vAlJsRNNcG58(~zFNEuEJsptbkfPN7-Z!zORb6) zO|H6xkhM-paFCHH`Ps-PlEtm6A?Qtbfll*PmYbyOk3m#Dp%^Q}@HIQUm=`o1=$6VDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00LJ@L_t(IjqO#xYt(QQ|0GRvNpp8e zL2xM&<-pO*E{)i#2Z}+8t%DMTqvGNXRXWLc@GxzuJrHzp$baf~qR7cDH`eVO6bFa= z36X*nC*L=}?wYpOQad>KfxP#=@B4Z0``-5l0Sa(q>DgKv)!4MN8MDANQf;>#wTebg zREjA_5J4CEaMF>0CU<#cHrq>p6j)=%Q|7kg#<6Y)0aY z3^jI?V64(oZp26300MJk7W&o{SQFE|UKcgVD|4UES$`#N4WMrLmV_u^2*YH#sS;|G zRYf2C+A0;d6R)Vkjwo=n?MiM{g|se_R1?n+-b`onHxQ-GdbH;+fh8#UnC5U0dtm6sSIYnsQ zF-=rFOn6ahb+#uMpAhXKA{%iC7f^KPl|t?^Sh9?Ej-Ge-)YP^sX4Ko zXj@~WRe8{z^MTw)#hK(2N){?blnVGx=F(#Z$sP7I8IV}GO8*B~!&LN$@4~PuE|kXR z?)Seqd-JXx8%>@HiYs;&Ui4 ePz|IZfdl{vr5I4i901b-4PYJ*7X#1~ z#_5b4Kx23e7`TZuB@F};h_;k_55pWdN8t>^D>#Sq15*Ic0tSXtAP&c){R`kSViV3V r@ETlUxD1xj0Fjf3wh%8!Lx2PTmi-W?%g}M7)(}_0RfQZpbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc006j2L_t(2kz-&00!9V_Aj!l4156AG za5lpmFk)cX07lpV_X!YU;N%1$1~#4pY#b997KO>om#O4Nu1{Z(h0;U5HHp5G11-PU!5Nkr1Ob-}P gqL@>GVekR~DHF9O3A{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007)cL_t(2kz-&0g9IREVSoWP1_3ym z;S~eJ4-oADQH2F?G%~QX0(CJnFmN(3@Uv~;WoTev;AUlDbAQ0D0SzSZgUAbDk{99t zi2Xf4H}Ns_JMa-@41U1fF#+V%6&t{oG=MB&-~h89fXM?OS+Gieh@%*!0ze|H0SqiJ zfc|P>Si!&qmVuD$0aS1l*?@Ba1Lp=Po9QzH(-$aPUx9%KCeAs5ffXh`x1*~OrdNMP z=M`~0{{R4&xh1;0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*IElET{ zR49?1P%%rxKp1^V#9o?9dy60<5-9G6IO$RZmrhw+oa*Li!GF==enN25=>`Wukqm<3 zR5FPTr65j%KfpnQs|enARY|30@NwMt?(z7(_Z?tSKSmaeDY~bsj~_GuhF3^KrNR_Q z0Sr|Z@Ejfxw1drkqq@_qg#P5yi>+8gcU0rp`ch|UTtbu0N&ae8jbidSV^{b!9c>cT zl8lSFW*CC!xqn$`PXQc`uTqECcgIG#K(Qcw7cx3x-#P6qkO;w?|HZ6EFx0rbC$?N| zT-h;^4bDGqd1rm(4^F^0ZU$g?Yh{}sT`AfGZj9&=c*iQ$3pBI&vd;rA=xfl>iC@4i z(4*QD*X+%xPcH`AkVD`>TVG3sDbP9F)?w;AM_Egk+8Zq%2!y770v@D8$mfEYJOBUy M07*qoM6N<$g3K;M1& delta 403 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 literal 3612 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 delta 171 zcmV;c0960Z0mlK5B!4PUOjJd)v$LqEsGOXfkdTmsgoJo_cx-HJU|?WWR8%}XJTNdY zBqSsZ3=9AO0Q(X@;{X5v0d!JMQvg8b*k%9#082?kK~xBtV_<*+mYoc6z`?-41!b}_ z1_UrL@G>9+E)GTps2Deh5CIVlC`#B@0l{J*!-Rpmfgu4b79=YGmD~X{`vQd4=-B~M Z0RZSC3VE_}$&LU3002ovPDHLkV1jRpI==t_ diff --git a/docs/html/img57.png b/docs/html/img57.png index 09e8cb6ccb3e5119c7d4be4cb0c2a180a8840952..b9c59a14f317af9fb686957e82996d34fc421e24 100644 GIT binary patch delta 192 zcmV;x06+ia0pS6VDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc003V}L_t&tnPXr;fDb^-4`H%0F!RIM zAh3Z4EXT@#3YZyo07-TRKCmnckmP1K08-900ZrweH)qZ?fH_&b4h#&zVAeDN28MTF u))fW@#w-wnF_D2`I!G_$(LZN=fEoZ;7ZCj2a-E|90000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc003f1L_t&tnPXr;fCeDuhA_DqxcC`3 z;WEqu{6LbQL4pAla4}2(i*o=;P6k&XX~ggVNG@O(KvUU$qda3LM2s(hf$1}tRm;G@ x_yf#(#=yYw5X4}=z`)Q0QpeJ_qhlG61^~H14*@TeEYSb}002ovPDHLkV1jAhOE>@k diff --git a/docs/html/img58.png b/docs/html/img58.png index 4e8a4e168069c7f4f76ebe528c2f750f87ce51b4..8ba652887e6cddcc89297019c9c0e921c53163db 100644 GIT binary patch delta 435 zcmV;k0Zjg?1Hc227k>`~0{{R4%W?!v0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*IK1oDD zR49>SU;qOiK88aKP%x2=;Q*Ks03s3?82FqOIwpY>F`xrZAb;j!U{GNF#1PMOh8x7) zz{?FJc`=ltfCDfE2S8>PBrx(Y2ppKf4Hn{u$Os5!%up`gjoFk=A&&zUm}Yzzy)))pLK=V3^=09MBX3JE4228UqoWeg8~L(Jm< zkrNsi8i3yAfPWgSK(hP5U?rGjye5DU+VjSM%l81fLRAo9f+WE5fB_Oq+g7>;PK z*}$;-z?#1&80PFML{cWEz`$VucHkL?*G#+{xE?U^9AFAy;NQUPfTYY17P*`sm;wam zGq4LXEal`|FhQSzT@omI?;Q{jMU{C@p<9M|BaxBAb2DwEHhYk3Y8(3CtU4>-Y d)J1zh6aafMNJ#=aK=J?p002ovPDHLkV1oCTrvd-~ delta 413 zcmV;O0b>5Z1F8d%7k>@}0{{R404~?*0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*IC`m*? zR49>SU;qO)K8A({2$MmHmjS|j03tRpF!1kSa8v;@-5JmT3x5-YcHsHQaF?Tlfdj}+ z(BnW?h6w@~I3bJ=tRO2cFmW*{G^nsa3{_wvYyb*iR#?Em3t=`OEI+^iHBW#UNPL*u z$Pmn+U>LyQ(b2)c4VFnTcu>I4&hTLYn8(kM03_KMCVXSoXZY|8EXKdCyU^2S^d;~j_Iz7KyEGx1b-}J9!uG@B7dcQ@3-Qb zw^W}jdA85czCE1-`tjI@#$p^GMkX9KllTpCAGrja=LXi?Qu_9m)o?6&am2P&41~5_y@wF5)X_QJXRDaVlAZUS+Nv3N=6q4Ju%grp2 zZyPi{pWh*{?m0d_0AxVW>XJJ%hyr3Sv&+19N&lS*o?{v4X)=+|1}^X@1ABJ%kT5 zw!1C4n19!Zhs>pCbxM6;^WBvjR6Od7XuSJT#7pjTPHYS}So2`6Xu1`80X#A1fhE(i-sfdV4pdw;`23)vck00A9ba7%_r zH4+P(L1IMmzz>KzA+cD>9|-({2vG?(?#>@g(iC;*fT}*y-Mx43^St+-?_L9aDCAb7 zZ?%n`;r3Ajz}kt|7@E^wW*Mljv7v`O0}*|G7Rs8*4VP~wV5Xi{Cr!bE5w`;Qvn}Qt z5cUUb?_F-Ygnv>ILpTW~Sy)O>m7q})gU4FiyRT^l$4wl~rpHdxMbryxQRucbO6(;g zbvtVXGImCToqZxkjVe{MwsBO&@v&3xX|s4ugOlw-JxL)IGpbM`tJ!|9XC5vnBfy`shpYwz|kVs9x-2M*gVsgC+JnT=i{@cehpo4d=baYx;T0lTRJUl!!G&C?UFd7;f5)u-Iqx>%b0004WQchC=Wl|~Is42xk92$$> ztoA&tF3i(7!lGUIq1Z^yik36+HugjO9{NZg!7F#;FJ>}7XeiJ^>K*e>w+>_XN1zsY zdad={cm4N(lW*5`gnYkL5{riPJ5JJD>JK(85va-_x|X&l6~*OKnl?|3t<80d!JMQvg8b*k%9#0PaadK~y-6?NjZJ zgCGzbaFL~472p45%YYu%NLnxHuj?cr?#{w~0viHgAn0J=wttW{o)fazSemOUQit>k zF0UsSq^_H80<-+>=C={KrQ!*cNdautlylBOanOroH9RV>!tKI#=EII&MDbqxbulZ$ z?}a59QVNeB20QUf)SRrU1!)k4qe}IzDuqGoQKB%JVWs2XhUd$`X;)3*VvPS2<8SUX zCtABByhmeM7F1B?`ZLT1E}hVc`%QJVlV#g@L6*f%V+GsJ`SV1NUT2Hpz@9>WEO zfCdJ1FdIai+<+mD6%;@yOjAe%2@DKQN=gbG1-n2@cDV8E?0>lR&;CbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00AILL_t(IjbmT{11<^^`l z#K^z{W$~9WFeprT_W)f5Ho(RJHmCup+2t(AHXwK6_oLq#-hVM**gz@(x`zXq!@%&t z;D9a<8!taIl9*T2Bi&fx}=2SDKg1AIU{+aclf3YLYO zTM$AU91d{vHE?sYz=fC?Bp4=eA6THk$iVyV-2$+x)eAS=aws^=wF{!^_y#cbfu#!Jb4nj?BSPzt*c&=d!Lkzeg)ngJAvE{SZw5MU}R`yU>6hs<{V%K195Qy gru!Rk%8d*F01%-~UyGW#uK)l507*qoM6N<$g3FGZqW}N^ delta 372 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 Y0Qgujh{b*`=>Px#07*qoM6N<$f<&Q);Q#;t literal 364 zcmV-y0h9iTP)RHR400001 zbW%=J06^y0W&i*H>PbXFR49>SV1NVG1_lQZ#ef7F7_tQzFaaL}Lo|?LFDSqwi2yu6 z4ALIJ-~+K?!zYNu1-#nufDb?yf%P+<-o3klgMr}zC$jW{1ab|g2oy6LAn{lofX-xK zNZ7}~021bBV7SZ=3?~N$&fU9r1G#JhKzBc5XJ7yY9w&nsk3s;FZediTKhxatv;i6& zvlMX2%>kx~RZw!IiOir7!(+y-Ih9{+S$6|hJpZhSh_QIC++GX!cPDm6e}%whI&l^0000< KMNUMnLSTX&TY-20 diff --git a/docs/html/img65.png b/docs/html/img65.png index 5c11fa45d6edb57e0286eda3595e6be280c839f7..05ac543546988dc817fcb6a1126b74f52b15bcb9 100644 GIT binary patch delta 226 zcmV<803HAN0fPdNDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004nWL_t&-m1AH)0S*kjAnGgw1DiUk zi~<7#ADD500UfY1Faya1hDkt@r3XVA4RG$Bz`(GB;Q<3f09%k?QUGdX(C7q;ojTC~ zlzu}{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004JML_t&-m1AH)0S_2BKvV|<1HTWd zOalW%3dBGIJPgJ_@&iL7kYw)=z>r4;ES*4N0#G@_0wBSm08u2E1=)eRDmH?oe-hA+ z3v>%GtOPUa6@ZQhIg<4oknm3c5*$Fw7;b=Nr-_LAz+A}9Pyl6d{213U~HAQT8NMl(z}fK?d=SX{dsY#s|k0*IQ(Gy%y~ z2@K6Zhj2e+2mp&R95%qzPZqFaU^oI}S1~ZeLYd6jyCJRt0zM?WmIE>Ggw1fiHp2r2 dD!Bv|005yL6&1vvJZb;{002ovPDHLkV1h)2Njd-k delta 229 zcmVOk844JX0cQgP13!>v<^U3G1`OB$7efPt0s*EI49pE!m0n?h{7wO|6$~Fhlo7;q zsH;9OumVltxWw=v0n9H6AkIvJpq7DQHjMp@f#Eci$^N5brT~=9hZF>LK+MtL3Fq@O f9CDzNOHcs-$G#JpRt&bm00000NkvXXu0mjfQyNp; diff --git a/docs/html/img67.png b/docs/html/img67.png index 5060d61f08248526902472fe02a0f8600a626462..30dbd771877180fddde8e701a246f2ec13d3cea7 100644 GIT binary patch delta 233 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004+dL_t&-m1AIFVBlsz1C8hc3=Dh) z3=I4zBAa%D$PX;cAd30S0k9xDL@o^iP}J|%22)(@Tp;xf7h+f->H`=-G~1a5uq-oF z@di}eA;u+OItvUq4)AW^fiU;HIRi9lK1_z!fq^H1;WmsrO@Kjtf=$i@DEBUkDU6vY jyrX{va99WT9@JF;m-!)=Er9Gl00000NkvXXu0mjfc5zpY delta 234 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004zaL_t&-m1AH)0;~*J09O?QJA(iN zGm_A5Z6LwSaDfHHVLQ_R7Tf@lO9O)hWD~fxA#xmyAd;WK!CwF@%J857MBAK!sQLg^ zU4Uvm7V{9Ghv7EE0kC1`&YU^HzzH+s3IoG2241L(I1?F|Dw&U+gz$JTAR8by0f{3M ge-OJhFjqhU0Oma+Fp)!=tpET307*qoM6N<$f;nAOO8@`> delta 228 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004tYL_t&-m1AH)0z3@ZKq&(s!vqF) zB$18|Ai>Tsfe*yt?-T$F7C_|wgTV)61DHCRz%&~th~#D1z+D99F>C;9spy2Ldcc56 zGvG820XQ6N8H&M%&F|=3$iT1+D!!6|p`U^I0))f-iGl4gllK$|k81(40rmz+9F4P0 e*sX!N0tx^Jj4#W|(N|yq0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc007ZRL_t(2kz-&00v3h@21b4cG;o38 z0J;!V91l1R#B2->K#~_Cz|T5I0G|d7!2RX~1H-;E4HG~dPJaPS28M}DlQS8>=5iPV zT?zxd#w3|bB51g9fPsPM43Ic;hT#LqI#6(2;9=MRc1ZyPLjpU`0S2f)p zb~poL48w#Aq6c8cG2Ni0W61%#wKwg?BFxpmF2Dt0GJjy;bwDsoU`p6GFt9#AFbZMf zW@pZvKxII{XDkc`7;po_kl`hd0fd1Hm=5qWk>;I24gfkKE^)Ru&E^0A002ovPDHLk FV1it@ay{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007NNL_t(2kz-&00yc&Z3=BLBXrO?h z0bK|TE?^aff|)?f&yWBlc_9Kkd=~iBV*-vB3mF*tx&)XYE`LjAU`Svye#`(immwVF zQkcS2(hMdIFcnN-VBqcm5<5B>9x#CX(*X242g3v~8z^#tkEH#MG=&cMLH%geiE%a&QQW;HZ4l$4Z2MMXI{ zIGC82NJ&ZM+*uO~RKZvhXrGJ~h9pUXO@geCyU1v+B@ delta 169 zcmX@lc#3g?X8q>Pn^&w@F=x)42@@u?w6s)IROIC3BqSt+goJo_c-Yw37#J9+sHjLt zNbvCRFfcH@iab3JNHLZK`2{mLJiCzw4t diff --git a/docs/html/img70.png b/docs/html/img70.png index e344cde87c47a860e555731c665b094de5ad934e..0ed778158fba76b4da652b24077731c164670df9 100644 GIT binary patch delta 757 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00NLnL_t(YiS1QQXw*Oy{*q18%ucei zRS*w7gzcrMg`7P|z>8D_Pg1LgRb(liT0MC(RPYB1=Axi2nt#K3Xe$_`NLyMR=}jxt zo4O)_f=GoL@u&x9X15sZZdXB2un#8l=KJ1z^YJp102$M!?oUvTz@DwIIkvV1Oj;J` z63zomq_+qwW_+hUvE%IGaEJsHg*C(g`BH7O*{@nT_&;O9J-!lWy<=pWz;bwfDC$x}ysn>zI5bnML;!k#+ zij$|z0L$szP0JGa`09<{KiEI02m8&+YGK}~(jFD*RP8;sS2=SpT0^Z^*`!2oF3@cb z|LgX$1KCXGDCUvJdy~1xWZ#U z_FX1k(os9#XVY6Mw9jU}x(#Z8?^XAO=t$3D2a1U)R+FL2I)#eD`Z`#rHR^W3)d&hX znQQfUwO~4$j#g=pS?(Q8o!Ok)4bH6Y<$2}oJf^fqrh2g?E4|Fa4LAIOQoBiat~TwN zUTg|)+kf9OqP|#}1Ddu;FnHUVPW>yoys@_1rR-{fm+oMhbbp}!jo<;~z!1oQ`pcL> zhLq=TS(*!lIKd*0U`e1dNdz9m8csBdj^GqJi^l6A)QA{T-OZBQ5d2x}Aj#9EtPX*! z2$i-zRdca00000NkvXXu0mjf@!@%1 delta 747 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00M?dL_t(YiS1NPXcIvc{&shEvPqLn zJXm{BvS=?Bq`_Jh6pe0ZrP{i=lpb2#gT)jT_Rto+O`(MKAb$pGi+G9`ukJy`V?eww zHbRfJC%tW}m4b!1yG?cb6XQii>35hn@4fGPGxKI=fe^%=Aw@D^C>J(-6+cH0#*jhm zlw1XpO}KTix>;h+%nT~tRN>V2O!vsI6=(`KG*|0ZK3%v*Fip7*oFHw`Vfb0D5*KXY z0W6NLb!LW?v41vyEc*iu$NwA>UTb`-Y)|meoR}rb>)#m6h(`YWBN|w}1^0iNcdI3ef_M6Z3w^3{mkL?U)>fPtt z;#;mnF7pZAZMT}1FbTTW5$zb1v>-!zQDho~8*~=aL4S?%cu6l+oJBKn0I)ma=b3ms zph`k^Mqx-Kp)0|+iNkQJsk}Z@A)cd&a5KX$wf{T^HTj%!olhIHkcIm_({t+w%R@Agg|6KU{GcuY}jad$fmYCbNe! zk8uns3-L#SC;?akl|Eo%%8FTWCO{<5Rf(e8)N;)!oQLy;BXh dwuk>8-vG;!mKryiowfh~002ovPDHLkV1mxiUBUnW diff --git a/docs/html/img71.png b/docs/html/img71.png index 18a82590a741663740bb43d788ca5595fe85e6e6..c095039e1763b6bbc065948f71125ed65c69acde 100644 GIT binary patch delta 18 acmXRdouJ8e;J^Wfeun91RFx(gI{^SlkOwUQ delta 18 acmXRdouJ9JdGlt5euleE=M^RzI{^SnGzY2x diff --git a/docs/html/img72.png b/docs/html/img72.png index b9c750c26417319f9075254c69af329d52379163..125f4db6382eef2c44fdfbfe00f7032d653eb3c7 100644 GIT binary patch literal 5682 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 F{1<7_)CK?m literal 5395 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 fcNvu@bPt5E=#*moUfyT=k41oZCJg;gU=Mba diff --git a/docs/html/img73.png b/docs/html/img73.png index 29f556d6b00b0c7f378e364c114f12d12a0e1df3..9d578b2e7c15ff0c84ea525dbf5afe00a70888d5 100644 GIT binary patch delta 759 zcmVbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00NRpL_t(YiS1QQXw*Oy{*wJMvx!Lr zkFtyv6-01ZPu2?JQF_SPQ>w6Mk9r#wih{_{gOpM*;LVCGEq^U26sImoZ42&MFHun} zD;m5DzR6~HyK7sE^-#eNGMV@0dp~*a%`UJNga_x6<2n_f*;T5o*b;aU-)B;FD11xD zJvSx2L~Vsd26@tZqW;;t4ey(1M%%gAF?wENz|XcH*Yj!wbyz@Q8OoZZxC%4gSJfmf zB(Es@J@H0^I)B7pNn_WD`o#iZ3@`#yugXKvRT*$Rvxo&^3*g1j5J$+wRUS<65Xu1$ z?GU;OaOkTIYNLR`GGj)9FD!b?JbXrP__DND>aiE$cXv6xxHQrOj5yM3;^<+_!0DmR z6$h9+?V{RvlVX(Y$Sdq8=dsjRj(WZ>rVvjehy^bp34ekZE;CUWhNY`0u$FoJ0wRl`5_iMXS)Ni+#uULGwWxmY_pcG9^W?b8k`Ov zM}b!zvwwcvqv!6~VJn2OdK&Y?I?Y>)Q}6Uyr5kwl84k@=h%^pN&qqxZ+PGnb{;{^~MsTvEkeMZI9+~Bq=*lS=Zx{UXEE*>x ztc;*myYgo7i0G?M<3z=&uAn??w76Y;sAZQZ0Wvd^Yqgp-V^lcT$IPZh-T@B&s>(m2 pzbE>R!++)xSlUdP+f2D@`~(UUy@q^TvYG$@002ovPDHLkV1fmbW@`Wd delta 764 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 delta 466 zcmV;@0WJQH1n~oqDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00D1FL_t(IjqQ^^OT$1I#-F>S@oH-m z&{Yi%t_Go_kfDQP9I7H%BU0$tP2CRcAPVB(2Po)nT%3!OV}A;|r{Ca^Dmc|#T4RZ6 zDTssML%2V`Jb7~u+za%j5hf=E=x!q+vXzmO1LT7*N@2!p{nmbm5H$~K^5fCcA>uV# zTCQtOTskL@QbpnH6C3~+SCf|>tuSTwJM}EibUp`MQa=K2pI2KCj2Dew_a;0m;mr`` zrclW7T^E`4gxha=Di^T07VQVARb$^493ChIf<_q-%BIYA zNSvy9r1$PO!i^_6sJsp{aYe=h&fL{E#Xk9Y$iFDHB}XNg(4KeYm~$tvt{IDF1xlNA zb`9MOTh%x(jJ|O66~}nQimkppW6zZ62^eZM*?2>CK}$QTa2AYt%ct!SR5Wi&+7;C5 zJ4E#DR_2rpDlne%Q)$oRE?Y9K$PPbSit?2kbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc007KML_t(2kz-&0g9!}CAbAIZ%?G7F zePAF24jkZqz`)SJ!N4U05#S=I1*8j^{eb6z0K)_YCI$w^4S$Cg95PG0t-(u-A-Dl! z0(QGN7^DrP7ckf^1hRP;HayrMz`)7?w3khYp@;$GZ9^cTV8dX=mbTUaIe5G%a}On8 z9d_X$tfE{G80I&yPMF$o4#+X!JMfdC2_(#_z?s3ozB2=&s12rCkD2oW!)qY!0qVTq z!*F0lAV`=)fG2?i=y?us07w9n3Ck+#d52~I0AZFZqmBKhR delta 293 zcmV+=0owk~0>uK5DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc006^DL_t(2kz-&0g9IREWPpJm0dOV* z7ldN@;lSX)fFCp@umUv-fK)>SI0i(hUBrj1L(va|bY( r06E9?8G_g?u^wA?z=15M(-i;!IU^#`2>4*X00000NkvXXu0mjff*x}n diff --git a/docs/html/img77.png b/docs/html/img77.png index f30e3ea6f99e5ebce12bc102cd26d73786deef1c..6a2a491d941d5c617bd0151374cd9cbdcbcadd72 100644 GIT binary patch delta 355 zcmV-p0i6Eo0`UTn7k>`~0{{R4$i)g|0000mP)t-sz`($#r>BjLjb~?PCnqNW000dQ z4YahhsHmu#nwo%sfOK?pT3T8_KtMD!G#VNjDJB~q00001bW%=J06^y0W&i*H?@2^K zR2Y?GU;qIgFCH+>FrQ&6kmLii`3p8b=PzeK0uO+gonZmXaep8^;eo*cZU!tsfeAz& z0OA17f)oaaNeTgA9w$QqI|y+yOu(iM8E`Qy08t;n92N!#sDTbI3+6FAn9ktvpn!q1 zfR$krgF+Bz0T0ON^L#*S11cGg0#z0;OkiXX09r@L8VHaJ03mFE=Ku&nfeM&pJiUuS zX0t&l0|OAv*<3sU$Y1jp6dVk%83g$@FuXa#z;K3vf5V&!Kt2=L;Y>hp=rb^71PHJP z2&h8%d<(!~a9GQL$LJK}YXu@}0{{R41DV;u0000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*H=t)FD zR2Y?GU;qK0H*8> zfVhE|;VVPK6M+v54cHW-0EZ1A5==0#GAsa5KywN@8D$t04m4c&!oa}Gz`>%y%Fx2( zzzK4pD-WY~LO`HEz5s4R5rFLlLmm!CJYe91vpXREO9^5~^9bN5U}$GxobJZJ*pi;{ z1Eibd0z+Xh169KpSq8=n409RN8Fnz3vV+~s?*J5L;M~wE#1W_fbS%pUV4yk}0A(0k uLLDSr8yQjy*uoh!T$~spToO3L7#IMLH!m}UDOSq>0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc006v6L_t(2kz-&00VW{kVZa4A7<6FF zG$2SolH!}h@P=Ux;{gy`!2n4Dq!7DlY#@S>14uM5crh_Z7JuNhmjuAf^Pz!(X~F@J zp+N8{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc0065=L_t(2kz-&00ahSpV?YLsC_E+@ z<3A95K$74NVEE4v!LR_NJi!4;0;G@uE8qtaY#ddF^IdM zfq`#A=>ax|4`9a{0R2}0R>#OtL88h3p@3YMF_ujB41h3I7BEZ(Qp^ljfB^t@kNN`E z10b4h0~2EbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008buL_t(IjbmT{1Lja325dn78xO+) ztTKE+O$-}$fS9OS(_kP0n>GcoP6nPc5blHt+*nP=0`Qv)1AhllSd5$vl???DF-|2V zu$TZt0}xIi)>L;g%!UaK3}?<9f{8H{urX|7*aK0+1oQ_; z%z>YepO1|JSuYSw7%-oqfiw(|Kt02|F@;pIC_4wCjx65GAhX#3gxCB%flC<^?*<0G z4GeEUm?;2Reo2xN5Wr2F&%mJ1z*GUkd<%eq&HD}rUSU{z8<@zAPJuC>as!5)I^m}Y id2%EI%v6H~Bme*iI9SWvvGTV70000{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007)cL_t(IjbmT{1HMoW25f-qJa%yg z2B0`M>%j?_68~Y~12%06V4Vyc9ZrWz75v3>*g-{JAGE__J=nX&M7C`~0{{R4zW=!I0000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*HZ%IT! zR0x@4U|`^3U|@K_z}UmU!Tn+a delta 215 zcmey!_>6Iacs(BrGXn!->EdiJ1_lO$0G|-o&6_u`Sg~TxoH-LFOlWCosi>&P$;nAb zNC*iD@$m4lv9U2QFi=rZk&uw!;o$*ldKGzk9*|-z3GxeOaCmkj4aiCHba4#fn3)XJ zmY$GsbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00F#7L_t(YiS1N9NW(xBes@)B+O&cK z2BJ79_@(de-TPkNefN4TKonZXn{@n?AOUJ_+sgnTdf>>YfGVwM@D7yTo^f8TCRJUJ z!yKOHcw;Hpr09hRs4wld3OW7+K7m;y{=OLqLO^}ZEYy?^X>|>O5Z4J8s6o{vQfOjK z4|1|#=FPnA=YP~}Qh*lIBaIYL@Cm`|Upd8Z1a)vAwiKC={CR&uTIr{tvm;k1_QM8F zlNHx+4HHI1S>yfE3Ud_3L=HtG3g6&0bjnC+c5Oj?2T~oOr=q|ySPf54hJxeBdj-&d z&QOIj?88VN**>wz-# zp8KoS>MiNc0$T1y#QMbINf*vf_j$YwUP5uzqGj|ufLAEm!lq)x5iM9EyCq&6t|rv3 zxIkT)-a_L&B}&w_UC7Fvl*-VHO_>o_^sKz++2dS{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00ERqL_t(YiDO_u0Rjx4;cQ+89Dti$ zxPjpVE?I^K22La%2ZZ8e;H$e2q?uB2Y5R{3aM2?a-g$01DT?pd{GB9unph@oDy#Yi`1o`I!?+2$1z<>g(DOkY7 z3z9>3H!8S5iZ2EwXaHiS1}LWhh&9k8A%GRm1O|NscB6nH$H4sHK){6u7Z|uf#u_ju zIKU)1cJGFn(|^F^(B$x;0BjBiJHv$rU^q7*8w7OE2S$O3f(A@r_wey6Y&byJCkBL- za5WHAGME8IHoyc_w{rn?bV4&MONRoQDxLrw5@9M>(L0gR;{228DO9P`_d zB-~ou8W_?;Jq(C4#srv&cQUYi*ulW>(1k2vx`6os3vg!w>j%8X0Np+V&58&S=upBjLjb~?PWo2buU0qF0O(!QO0000D4Gpxkw3?clgoK2EfPi##bXrBg8i+ zu}Pu3O{qvgSjYK+((sH=|1~~Y5Q*vGM*a*8o7j$%RTpl%>x9k?-zNj!@6>@()7uFa4R-)XKFt+%q?SMxVPnk?{B=Z!53-%%C4HX z6{?@DwyPcN=m_VrJEk4$Ng6P!NRCmiYYTa`7X$n(SoSLCgskdr!R^6!bKe`K{`BSWzAo;x#v*dl+r>z(v zi1ks!H0duWtE;|b5k(DiF>Owj*BaXMMCj3ocWKf<&mv>7hc_CbxsJyXF0)ScBqV_L zi2k6Oz468ye;uYwkC|SKv@Hr-1JZnS#W5|D@E=Mj=+|}+j{Db*0rO#93tEsu^T%+q zwsvWx=U`KgRQ4tKAa@2PON(gaL{brm=ggtCO0!y39LbarOBb_A<(dIafAW@=m~Qkl z4S$MWLkeqWhGjCfZw}({(`MXYM1j!+=%TZ9*6jl-w8&cBa#|yp^vhu~{k7}YfI7a@ z56J3|Fr!N0?bnBkF_l`+EH6>T`%8mdw!)0qL~D05qN5P>7RMfpjfYxjsCiTk82VM; zv@T)SuNKHwt~;A8*6>;+S=>osGo_4H>TLY-5-&FmyNWuZ`u`z^A3y&pegkGC8DzdC RIeq{D002ovPDHLkV1l=yi?09x literal 826 zcmV-A1I7G_P)PUX6xg#4?v@g~J<~hF2gDxRG=Y$t&J?@#-rG!pK#^26 z8jCmjcj$i;`N6E(8v3i>=qL~c`lj>7{oOWl9GG0ApTM-cs3Q$lfFHqJFn-gnE;{e2 zzknXl|3Bb*+CHdlO~W&M{jdv;^1DPgR?l>Xp2dtM>Vr$QQ|z z(b3j1WFMOBJak-+lcw1Ohj-4KF$Xv!$!XGqqn4aca_#&yez6064E1A7^~BfYpjA_h z5PNbz(N%vH``b*Pz8pZ)X?I%UxVwYKh9UerKq8jig1;R z44xCRT?=#bSrBA3i>gRgX68-`(_-Z!g|9w)cFh?PX% zH4)Ke)f`M@tkD!}QB%^Y6;)noo@<5Bbj8*vgVct*pvAxyyw-0lLRz>hX&1a|oV6rs z*>>>~48E;4(Lu1fTt#Bh1ski~J9b3@hGLPSbgVo*5RVlpS4z5ku1&weE_AVlz=V(> zYD-WIln4_NjL6&rBB`k+0#V}~$r!DqTl^A*PSPbu-=x&Ya;)yt$l8a2Bqk)*;Yz>y z;;9R@s(EJF^VqbzI`wwDKiLc5AJ0e~{L;qdA8KuW0_;x`;(5o{cmMzZ07*qoM6N<$ Eg4REUcK`qY diff --git a/docs/html/img83.png b/docs/html/img83.png index e0dd7dffe601b41ef61ec281630df710364b2b28..412f095e3ca562e12154cb519e0ca62023b9d66f 100644 GIT binary patch delta 354 zcmV-o0iFKk0`LNm7k>^20{{R4B(*QO0000pP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOvR#baZrDT3SFrKr}Qo8X6i(EdH|q0004WQchCIPXb#x`D%od+Fl(2APNlUU?PElK=n!07*qoM6N<$g77e$ A)Bpeg delta 343 zcmV-d0jU1)0_6gb7k>=|0{{R4XVI`00000mP)t-sv$M0PsHmKroRE-^goK26czA4V zY+ztuR8&+*NJu<9JTNdYBqSsl7#Iu;3;+NC>RHR400001bW%=J06^y0W&i*H<4Ht8 zR2Y?GU;qK800jmJ;NXJLJRpKaLe#avfdK`40Afyt%?!LP41Wx)ESU_U-V7LkBSAEv zP2*dqLo2H%kX!JDfuBpkd4oO!H>O(bAV3hxFi~h_j^J!M!5r-E3gmv}X6EGOU^u{L zWDDdmGV?PyvdJ<8IWVw-xbCbj?4g_nfgBD7#99Of6$}hZa7ZzJWMDmjEWjhs&UBge zgRX$Q0>=dgUQh)FUjYtweuJkVIkxi~^c@(Oz5)&8E&vkD-<%m3I>6f44lqrS6JRL% p!2B_RpIPA}2jfEqF@}#o8366$D#^w1d^!LC002ovPDHLkV1iVjgm?e| diff --git a/docs/html/img84.png b/docs/html/img84.png index 3ffa14f5b4a525ba647a004ced352f5480fc36f0..f3e40f228fa6ae18d8981a5db9357574a701b0e8 100644 GIT binary patch delta 481 zcmV<70UrMK1AqjODSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00DkUL_t(IjqOv*O2a@DJ*KU;$>gzd zDTIh1DpJsmBH~ha-MQ62=qGepC`dlQVm_dYfEynbM-&t-RexMn++?j^(48}rL?>y| zg>5k?2b~bK z8?F3zKc#u6cf(zejefp@)6lxy4x~^@ zaktz#-+V#&_S6d%Hn&B`aTb|B-W^dWy06wS#5JZZ99nJgGHR?2&5ro@(LGL3@(6W5 zunuhT09oUPqF}G9&?w6Q5_kjWkK}`&7{d=p2T7QN0;WY|H#4@ X30hFt{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00DDJL_t(IjqOvvOT$1E{(5O`+B8kw zg+{R8*g-@PA&XKwWvgSvLEXB$oP$5My1F_z2SgCEbaZU>AAiW7po6%2FS)jtCJ_qV z^n<+b?!EWjy}Nq>Ch#QpkqZm(W14}-q>(!)(XbfJ76Fs&l2TdS@K+-4eiQpLqA#|1 zHlj+!UWW4v4P+9NUAMiuh(o-VR{k2UM0kuVb*aEz8w=#rp2$tjso zP6iqIW`nFX?|&|avOi>`>|esPAd;DlAZUyJm}rK>eyf59ag{b2QbV`K;rd_py38sF zO%hxgGd1w+6!K2@r%+OF>|K0oxv5NP!NNuGL`?mfde<4Eb}n{FFjibi1v_tbwt5`e z)tMbDoO@x6_?=PlQVPv#=v)i&f<0izrldPz%knHNOix#Jizcea8=rUt-lAm>$nLt+ zsyc&fpvHmMn8vt4bswj_A(Y=Td9*ClT(g}S-aN^Z5RT?s_aDFF2WP}S;pMs^X#fBK M07*qoM6N<$g5ZbU_W%F@ diff --git a/docs/html/img85.png b/docs/html/img85.png index a4793c56f0a26700ea41106e0a6c6eecb2dcb640..fa390ab4c6f8500a1fcb7f4e64a381127c6d540c 100644 GIT binary patch delta 339 zcmV-Z0j&P+0`mfpDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008kxL_t(2k;PFvib63IJw_bgCr`2f zgCv&P9dJa&B^`b z{(v(I+=J=@$+&da?%}`=8X+C`*wsT~An59pqgV@9=2(3yvScW|c@I*lC;oYW=t>og z{iD<;RVuR74QvaX?JKv1t$OOzJa@5)i3Ze28e+&X$p}=e#k;Tu7O3CqWX3XZ{;{=H z6YMu;!W1~LPE1HE^bQ~D$P{RM&nXS|2R*ESSqSvKvbHp6Y(G({KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc008VsL_t(2k*$xhY63wNMbBoPb=}1{ zT}UG-wBOE@Q-}x>SnLIhe1Kiru}P|cpRoSHHui&GBIF0QNq?W2aTP3-px)x~=G}Ss z-3td)oP*NDZQ`@MMa06^7vHxqm%i3WSUAP56fK0mz0;-$kqu9O$q?i}bS|1YDg+o+ zw;Gxtlrg#rc(jvJ>8gt9cv|VQlc)P7nZbkW#MteuZnJX(2Jpo5=`7sa+4}mvnh|^s zb(+yDVB%(tc1JGwCYjq{{gOK04}E@lbFXwNeSR2?GhRm<;yK9>J`OjcqG{FEUQM5# gkCZLTyQaJbfBIV_$oDy=82|tP07*qoM6N<$f=q*((EtDd diff --git a/docs/html/img86.png b/docs/html/img86.png index c1e8d746b80c3f42f9b9bdfe192b8ca72073ce3c..6a7e2affc55559015a7e0e1fa24239bb71d68a35 100644 GIT binary patch delta 232 zcmVTDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004(cL_t&-m1AIFU|=DDq%Xu;IW5kSb0F5&+W!g9SkQ1YvlAx|o=F`GG< delta 222 zcmV<403rX00{;P!DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004bSL_t&-m1AIFVBlzAfB_u_7AT8P z1tR+Y{|C6N1B?*?7ebK-gAD}@U=cF6cW<= z9|VZ8!;9eUMiUc1Ja32@| Y0Ag<@uPXtBSO5S307*qoM6N<$f&h(6Qvd(} diff --git a/docs/html/img87.png b/docs/html/img87.png index 37a6ec01e3a5b8d17b1e4efacd2268ba850e1cf2..59a7b1b81ea01bc664e60c88ef5602da1b31cb37 100644 GIT binary patch delta 250 zcmVc7Aini2Q-Zlq9%a}LNh@PCvz4!OkiMo0CEw~%mY9- zL1`u^%`oA?0WjUfpa9jOfMEt6kOl?`m=cV;1;8}N1~B!JK^08%JOGhQ2@GrsIJt}o z3}OukF2lUWiwwtr-Z)yb0cJWkDQ+YWq#=U@0PC?NfA|u#wg3PC07*qoM6N<$g886T AS^xk5 delta 215 zcmV;|04V>K0`mcoB!4GROjJd)v$LqEsGOXfgoK26czA4VY*bWKNJvOLJUlQkFc=sZ z3=9ka00315G3fvR00DGTPE!Ct=GbNc004SPL_t&-m1AIFU|?oIfCDftTLK%9D1(Wg zIdkR!0}%jK-2nqsnpEImz`zPLj)`Fb)MW?2G>p#>V35E7u}}_XfdVPUp8`05F>I-vOsp00i_>zopr06=*=7XSbN delta 171 zcmX@ZxQlUucs(x*GXn#o1jC}|3=9l%0X`wFn>TM>v0}xXIdfWCS}H0ka&mG)LP8`Y zBzSmufJ)lmZLI)Oj3q&S!3+-1ZlnP@UY;(FAsjQ46A~VzFfbltVl!jYFi1#9U<}ga z;W@)2EFmExrEn;Xhv!X?!dJG0Gv`=Dijy0dw=rB}QBhcW@_+%SN2HN~kK2a>MGU$# W*_kUAd^Q0Z%i!ti=d#Wzp$P!)TQ$%C diff --git a/docs/html/img89.png b/docs/html/img89.png index 7272efa2c532e5eb92cd31f5e240f554d52aec67..f1cc239b55c86134e7b43cc47bce25a03a157191 100644 GIT binary patch delta 409 zcmV;K0cQT71Goc_DSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00A~hL_t(Ijnz`UO2j}A{&r)yB)6_X z6s%-?0m%~_hfm-m+#_gjWpP-^y@9DkB()-}!Xe@n_BIQ4+JD?5IJ^15c%}%5;Fn}} z=9_P3cG&!{fG8MT023x?UT8F@MO&i}_yCxSALV*w#!}_{+!oJM2y{Bt*qGQkW)C22X5lOTpy1cW%uf zpCY!k;?5-xZk{paHRnJoBWd9ZzVx71Tw}pWKjs2KG)a?|B3|NnXObfD3VoT258}I& z^Aoq#NB-6e@xI5TZvFwr)=y`AXhrv{f?$>U*Z2ggSQ0^V>5NUS00000NkvXXu0mjf DaDlkY delta 384 zcmV-`0e}9u1E2$tDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00ACJL_t(IjbmVd0S*Qt02_#41}Y{> zH4@-x_yD!z!v_ZT75qSk0Z5#QL~|Gz_!$KHq0A2oKtfJHfPWt-$k4!$&(Fxf2NZeG z@SPhXBEaNdzztPg05@R*$##+o9AFG~D9r_Q42tayY%o3tLjnT>tHXg0U|s@)GRWyb zu)zVQrJ(>8+5*fFH4i>9!tCHg*t!5hF(X6-$o0TL1CB2Y%mr{CAp|GFIV>9(EP>Pq z6cs>0E(H)HWqCp@1CIm4W|)c-K03-+zdCZ{7 za8vbaYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc004AJL_t&tnPXsJVBi5_1{MaE2SAFA zfdRtfIshc#U;{`EKf?zg*}!m#0Trk+a5FG)@-rL&sW}5u!%oGp0Z1NTQUsC$3>Q$9 zbKNswV2}Yam=EwBU|=i&3$~p(b9@4rb%ue#2h89E$|QkV{1X_Ma=aM;o{|(Gn`FA) P00000NkvXXu0mjfWztNc delta 214 zcmV;{04e|W0rvrrDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc004DKL_t&tnPXsJVBiO020jLE2N;`y zk(Yt<0|Ofa46rb;g5^E{Nd<LuSPFfc>_8C(JU3Jk0Zz=CxQ3~~_Z>kJIrzzp^S49p+EEIR=PmQPa|09Aw#sIP}2 QaR2}S07*qoM6N<$g3tI%tN;K2 diff --git a/docs/html/img90.png b/docs/html/img90.png index d7b63b63c7fdf176e8e6602f86f1cdce6b097253..9507699bb8d3dcc97207bd758b11c988a987511d 100644 GIT binary patch delta 576 zcmV-G0>Ayl1l|OYDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00G=dL_t(IjqOxFPuoBg|M?OiF}5*M z+l3@LWnd{FOIbAzQpaaZLl-2qYdE2FDkE;kGiMXTGhF-) zRFO;o;}4QgGlXFH#y$x%P%0p)O=j|F#Ej=?%X)A{S><8}9nw~Ht0IMBtscWZUFm)> ziRRWW%A{1dFn`&ydyx!+!nWO3;+C{hYTDpm<@_JuPVTEfaR;V=jxOsKDe;C?u||ia zaj%m`RqvmvSc{wZOB^!15LF#R{F*c9O22pJd*fi|r{Z;b-12PYZd&IpDit zWZ%<~&ducjU&%j%vs=orho!8?ukVCqbrfErWJcX;{TA=Z)_*t4f07@^+Xy}#V1cE* z0DhvB;yD1VL;u@(dUx2pAvArAX3dFhPvm6tdei+JYohTUJ$z=4$Kwy9U1C1(FQ-oc O00000@?lE1jGc8DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00F{DL_t(IjqOxDOT$1Iev+nX(yw&$ zV>(c94INwrNkLF?P_RRBX`Jk$2-?XdVnxRyw&)f_#Ib{e;C~|c2Rb?ie?chz0Pmw| z(%OpnvGsx6d-uNg-t*jhxdXZ|f(~53!DrL~X^2}OkqCOe&Reu_HgfiNKscMNA{mT! zw?*VN(3xaY%wMrYU_0QOq|lMqqalUw2iVJ$HN+X?H2r2UuY`GK0YpKbdL$R{I;nIo zUG~9i*DK%sUw>)-2gC+Ss;RV*9p0DWk!Z}I=MuL?pU%*zsf96%`J_UD*q-ENc}VsB zg-n>|IxW+ei2==`8T+oB3HkhIkF>H@3M?pL*4_wt86{zI1Si@NxlE}Z93(xuNNkKg z)Jj9$Q}j0H^xTM~OimINRnAGoExX*@bcd5pf7UwiPJfNs6vO4}idl5icFKaf3ap8o zTfS^%sRFfHJc(pA1jSrE-kES=(U;1)77v#8AQp^mVG&jnWu}nGo=|wjHjyQ1$DlWp z{(ySjWG0{jUT_za+u}hv?W@L7^%&}*3C%`w6WBp0QE_o;>y1*RLQfQr)V>9d3of{h o0W1zW`X3QvRXg~4&KN((2byG6&e6%Kg#Z8m07*qoM6N<$f;A@rr~m)} diff --git a/docs/html/img91.png b/docs/html/img91.png index 1a5e9297ed61d81a301b33d9bf8726d00c688de2..d7c8fbfc4e0d7c9e5627d4a674180e196e596b13 100644 GIT binary patch delta 303 zcmV+~0nq-x0?z`FDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc007NNL_t(2kz-(hfCmg{KnPuc8Hf~6 zh0?$v0acKXfr0g>1DIyu6W{~WH~?1tP{45kVip4<4?8!I;(vwk1UMKP7`Sm8NfBUr z0Auke0Eq((3|uD^^nf1c-T>w?6dYg#$?8CO4#5gQWxF9N85kNkfhN$%Wgw7-1QJNs z&anYqWFw5h^8id8(O$EGdk;euh~49aEXBmTf$M?783rYYAopt|UGo{(1vx)37(irh zHy}yfW{_LN@F;2(h}rA~(aLnR2E!dg45Z-#2>=L(IW4B%?=JuV002ovPDHLkV1i#N Ba~l8v delta 287 zcmV+)0pR}60>1)~DSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc006y7L_t(2kz-(hfCUVM00#pD*8>Iy z0VJXSVDJG|9X|sD_a^}c0U*sFm%s($;{sUq!@xp_Squtn+baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00Cu5L_t(IjpbCkPQx%1JxL0UTc^zc zEP!NrV5&qufT8My#L|tmVq%0DhKiL1@dNY&5DF4gCo}P=gnyV}F&kp)Cvcrd(>ASA zAtpGI?>)Zv`1+XuF_5mN}rYE~nGvQb(Jv`!Mr49seHVM2aunLow6`Bkqu z6>&5-u9F*~>3@=Kbduez)-Byk;tG5ew>bP)Tgo`jpnK+sI0E5R(>io07wIASZaIBB zF0~+=Z#yM?u`T{BR0Y;=3svX9M$Dd2_w9C(p1xyO8^ScUfP?WIZ}kV@d;Q%>J)Wba z%IU>BZj2$#rIb>p`i3DDg*8}*<9as4u}|h?s{T&I+CgBSoAeSMXs)Bkd7{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00BlxL_t(IjbmUy0_+fqhXEBdKqvv2TL}hWg|j$-*dJL6#CguZfn-_%2?pZ@92{r@EPoTg{`XCM;qgH*IhTKojNozyc%#E@0^R z01j)gED-4MGdL(f#UB7kn0h8Ib`}Nh-Mc~Jz|b;qNMK0d07hg36CW?koDJ}l0|K0I zmI6vr>cmtqf`0%@0z+B^K~*vg43ZF*2Lo3C;{`(MK}q=#n6;UK-+|!^vK(7$NCkt* z688i&_1<9C2MqNN%NXn!oG&nbK~v8URnL{c^Z;2s^96=w3S0>s8_?AAfmy8#5dWS4 zmNE?t3_T1$|1d03ux)8ZQtr{;#=uYxW^!Zq;4%ymmLdiS9fVy2252Nw-AD!iHHbS5 T%sfV^00000NkvXXu0mjfTN|B) diff --git a/docs/html/img93.png b/docs/html/img93.png index a16e477b67e8702a1dcf6185f84b2eb85f63352f..22d4ec9109fd7e64432a46822d47e2a56707aa4d 100644 GIT binary patch delta 359 zcmV-t0hs=X1BU~UDSyDgz>STKXJ=U4Gj&nw6vOl*4y6O&5+E7Y zZ3Yaa0ak>;9ANWUajV4+xEU`X@iqXl0GI?B?(ky!0+72JfPW&~AaN!}h6@+CfFeu? zEj$Zg>S+WxkvU+C1DKHAEC9q07?4Fk>1(>*ti)24hVqNT>$xtk%5^- zi3{utMEJ9_1%TBvB8-(|AUSjg2Uy6!P=#HF6%uva4Gau>acHgulf4WWDmF{aUcha& z(wu>N0*JdCLtq6X&jQX10;hnYj9_bKW17*&z!u8!fFX;439N#JfkE1B7tlQk3=G>K z)G3D8i99D47clUG^9n2W9MT6OHbU6k0a%qVprqPi0RRKBHUV@bk@o-q002ovPDHLk FV1hSSht>c9 delta 360 zcmV-u0hj)V1Be5VDSxxGv#6-3oSdAHkdTCgglueVU|?WWR8&YvNIX0|FfcGABqSIZ z7z_*y0002-j*>e70004WQchC<;KoXk3018)RkpM6W70F;=djMrZDL!t71~AhBC<62qI|Ca_ zf}?=}1H`8YYa4)+AVP#!0TgvZ4=^?|Fi7K&D*}^R46qc42{=IE!mtEG1!K6XTLH7D zODY4)0ucWJhG7a89tYM9EH(^s4v>()fN4u6LpC$RRE8>Os!L;FaIY(6VBiL(sO=Ey zFhffK^Ko|r23Bw?V|T#nNKR0cOF`ITI6MM$kO5AqAqfC1r79l$Vg(8S0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc005{-L_t&-m1AIFU|<5`3k(o&0E!`i zC7%PzN=r*ifD5l!^pt^tb2X6F02c!)V88$c2PW|FGeFc$z<-n`7BB{Uc)-OCWC$Gi zZ~ delta 252 zcmV{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc005gwL_t&-m1AIFU|<2_1_lTK(FqJN zz;PbN`v3p`2e@#6!Wp10S0KxQ0Z9P^2Kca{fP)vxcEFS-7IiQ!xbQ)Q4Q%s*3kE=E zF*7J%H~^J|(j6q2_a6*C5LSo)?2|)VT{0LLBvMO(JcBJj`|KDv4lq0d@>n)7JY-nL z%pbr$0m$PvU~6Dl;=tS*CxFo2!7!Z^+eiTakpTdg8#VL5JjIa!0000baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc00AONL_t(IjbmWI3wU6R`EVft2xY*) z1CnGse-pn6*uVogOM!tCYUTqRYVo>`2}KtZ*uVo24r9QF2Y+1L%s|!zpb!s8f|;XX z=7kR+S2H7PI}Gy@Eddv%kO1=oWbOeV{(u?`j9_7?(3++N3J(H!kcHTJI2jIrJ@fzw zfj(qnU}58*uwnx@P{;vp3A3c=G~=Q(%!Z7>by9H*f_o{AAeAz$U<;0~T6?Y0`WK)&)EV zCcI)WVPLQUi?A{<=!BmJx~+hL;W&i4&7jJ_r_3O`JCT9mAy^Tk0}eNHZQuc>Xa%VE ia3x+P0Z=9#?f?KSW{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc00A0FL_t(IjbmWI3ktxb0s{jFx=aHD zKbZFVj^6|Z21XpFGB_ZM9Ux>37Qn(X0htSO;{!OaVZ#SQA%75K0}!(T-J8J8#-RA& z0Sl1JiL5PxL4XXqNd)YuT#$_o93PN{92h_WgCYdc1Qn|05Ma3Qfe%@ThliahU;;l_ z^9PU*IT%>E`Gc4QxEUbch64@;CLk$@B*GoSfD(8^5im|)3gV6cTrJ;1cCgF&8wD^cYm!!ia2 zNc@#EFnIL00VA-1f#C#%y2#MZz~#!29)18U4FntxIGoHAz-z$3(g5Lzo1UKT>+7qouFk-~z{|@!Yu2oil9H&XC|PtGzkCz delta 150 zcmdnWxQTIsO1*l3Pl)U0&70@UnKNO+gqD_;oSdA5goKcg5DyOz8yg!H6%`2y2_7CE z1_lPz2~Pxp6k|z{UoeBivm0qZj-{uIV+hC0tiI#5-h`-;N{NXGV82YN&*AJK5y1baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008qzL_t(2kz-(hf^7^80t}d-0nU10 z045n2SUGs#F)(6LivZj#PzGlekYG8$z`(@7!1s#30wk7zSAQ#ZpvZ$@15IP*0aHMr z%LQVbVYmQQz|E()feiBr0GoUy$Nc05i@|-_^7O%zg|EhS((5L8Mt77!0sU2Z2cghGOmp z2Aw-V<{1!BU`}9Ic(g&Ef$ITOT5K^ewJbo^SO^RsRt2!xz|hWMU{FPIjssJGfgUrG n$SY)NU|Q{9;J}u;hY0`xf2b{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc008GnL_t(2kz-(h0uKfT1qOWJLjs6A zz`(%6z|nzMB?AKoAC$p<5X370F#|YS_?Lnh7YJy^1{&EB?0*eFW4Rd^48R->W)L}p zp@AD}GnexOGR!9cxD~qLY!;CH50E4kfOtXzl#}Mc3Zgg*cp-cVK9Iu-_ymAdM@It# z1Dl!w1Iq&@1{R2X0}GT@}0{{R4MK5}50000mP)t-sz`($#r>BjLjb~?PO-)TFCno>^ z01XWdw6wIEnwo%sfOK?pT3T8_KtMD!G#VNjY}~9}00001bW%=J06^y0W&i*Ha7jc# zR0x@4U|?Y2ngApiE--)r_lpDu7*GHc4RF5q0j3}z^`VfHlUxA{;L+N^-o(JL;Q_-2 z22KV6E(Qi(#sx002ovPDHLkV1m&fQWpRK delta 216 zcmeyw_?&Tqcs(x*GXn$T;oTfZ85kH00(?STH*em&V#SI%bLLE#FrlTTrJ|xDCnqN% zAt59r#KXhG#>U3Lz(7SsMM6S?hldBK=~d+Ec|eM>B*-tA!Qt7BG$1F{)5S4_V`ef? zTf#gB6$vqe2FBN)xOog7FepuV7}Iu*=^T$jX`-NdAUCtv0kKO5^bZ`E@S)*iL*q<|p00i_>zopr0ImT`_5c6? diff --git a/docs/html/img99.png b/docs/html/img99.png index a44fda45b72f8406c2da8fe3780d876f2399d372..d7b4aeca73bf2c2b5b0942628f7e98820aec2cf8 100644 GIT binary patch delta 333 zcmV-T0kZzr0__5jDSyDgz^A9Djg5_GXJ<`KO(!QO0000D4Gpxkw3?clfPjE>baYx; zT0lTRG&D3C8X9cetX%*A00DGTPE!Ct=GbNc008SrL_t(2kz-&00xkwN1_qu33@`v@ z@h~6&BLgP~Ljyx119rd%#2XlxwlVNBFflL)FgP%9fP~NBP=AgAfL65tsSgSa4BUJm zdwCfc5`ZRMkdlTdm~nwvqwoST2qg`(^bn8|2w-6FKF|PU?FKqNfr075f&*|4!-qnk zpHG1T0LakQFeqz70B#LSnVoFxpNaETx=$^9Bcawaga0iDk!6T$R> z>j6{&&j+9gP)0%l$YvMdIl!ubq=N}6VZxxwtjCOO$4ju4zzFAP;1ED|35OD@%NUh_ fU;^bnq#*zRlKLpW3tK|B00000NkvXXu0mjfoxOei delta 311 zcmV-70m%OC0@nhNDSxxGv#6-3oSdAHkdTCggm`#(Y;0^`U|>{KR7gljJUl!wFfb$} zBp4VN3=9ka008P)%boxL00DGTPE!Ct=GbNc007lVL_t(2kz-&00u}~-1_tg83^0%Y z6k*_o@fsKy*cjLg6ciYqF<=L5Kpeop)WN_7;;}MJfC%r#p?@43&;a5G0YInl@G^ky z{@}pCaA6uNM3yyy1fy^RJ_ywYJCLMZphm`;T002ov JPDHLkV1iZebH)Gw diff --git a/docs/html/node117.html b/docs/html/node117.html index c3c86d3a..d546e9e1 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -328,7 +328,7 @@ Returned as: a real number. SRC="img1.png" ALT="$A$">; only available with the $CG$ method.
diff --git a/docs/html/node38.html b/docs/html/node38.html index 06716813..a9d54a6e 100644 --- a/docs/html/node38.html +++ b/docs/html/node38.html @@ -89,13 +89,13 @@ Data types

$x$, $y$, $\alpha$,
alpha
the scalar $\alpha$.
@@ -147,7 +147,7 @@ Specified as: a number of the data type indicated in Table .
@@ -160,7 +160,7 @@ Intent: in. Specified as: a rank one or two array containing numbers of type specified in Table 
1. The rank of $x$ must be the same of 1. The rank of $y$ must be the same of $x$.
diff --git a/docs/html/node39.html b/docs/html/node39.html index cfb9766c..309e2d67 100644 --- a/docs/html/node39.html +++ b/docs/html/node39.html @@ -57,7 +57,7 @@ psb_gedot -- Dot Product

This function computes dot product between two vectors $x$ and $y$.
If $x$ and

Else if $x$ and
$dot$, $x$,
x
the local portion of global dense matrix $x$.
@@ -178,7 +178,7 @@ Intent: in. Specified as: an array of rank one or two containing numbers of type specified in Table 2. The rank of $x$ must be the same of 2. The rank of $y$ must be the same of $x$.
@@ -226,7 +226,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
Function value
is the dot product of subvectors $x$ and $\cal I$, $\cal B$ and
\includegraphics[scale=0.65]{figures/points.eps} \begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}

else if $x$ is a complex vector then it computes infinity-norm as:

@@ -95,7 +95,7 @@ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)} --> \begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath} @@ -117,11 +117,11 @@ Data types
@@ -160,7 +160,7 @@ Data types
x
the local portion of global dense matrix $x$. @@ -193,7 +193,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
Function value
is the infinity norm of subvector $x$.
diff --git a/docs/html/node42.html b/docs/html/node42.html index e8826722..0a520160 100644 --- a/docs/html/node42.html +++ b/docs/html/node42.html @@ -58,7 +58,7 @@ psb_geamaxs -- Generalized Infinity Norm

This subroutine computes a series of infinity norms on the columns of a dense matrix $x$:

@@ -70,7 +70,7 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} @@ -92,11 +92,11 @@ Data types
$amax$ $x$ Function
@@ -135,7 +135,7 @@ Data types
x
the local portion of global dense matrix $x$.
@@ -165,7 +165,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
res
is the infinity norm of the columns of $x$.
diff --git a/docs/html/node43.html b/docs/html/node43.html index 17dc137f..d6d90c4e 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -57,12 +57,12 @@ psb_geasum -- 1-Norm of Vector

This function computes the 1-norm of a vector $x$.
If $x$ is a real vector it computes 1-norm as: @@ -82,7 +82,7 @@ asum \leftarrow \|x_i\|

else if $x$ is a vector then it computes 1-norm as:

@@ -94,7 +94,7 @@ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} @@ -116,11 +116,11 @@ Data types
$res$ $x$ Subroutine
@@ -159,7 +159,7 @@ Data types
x
the local portion of global dense matrix $x$. @@ -192,7 +192,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
Function value
is the 1-norm of vector $x$.
diff --git a/docs/html/node44.html b/docs/html/node44.html index 32646510..6169ca6a 100644 --- a/docs/html/node44.html +++ b/docs/html/node44.html @@ -58,7 +58,7 @@ psb_geasums -- Generalized 1-Norm of Vector

This subroutine computes a series of 1-norms on the columns of a dense matrix $x$:

@@ -70,19 +70,19 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}

This function computes the 1-norm of a vector $x$.
If $x$ is a real vector it computes 1-norm as: @@ -95,14 +95,14 @@ res(i) \leftarrow \|x_i\| --> \begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}

else if $x$ is a complex vector then it computes 1-norm as:

@@ -114,7 +114,7 @@ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} @@ -136,11 +136,11 @@ Data types
$asum$ $x$ Function
@@ -179,7 +179,7 @@ Data types
x
the local portion of global dense matrix $x$. @@ -212,7 +212,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
res
contains the 1-norm of (the columns of) $x$.
diff --git a/docs/html/node45.html b/docs/html/node45.html index 3fa4e1e7..8f2a717d 100644 --- a/docs/html/node45.html +++ b/docs/html/node45.html @@ -57,12 +57,12 @@ psb_genrm2 -- 2-Norm of Vector

This function computes the 2-norm of a vector $x$.
If $x$ is a double precision real vector it computes 2-norm as: @@ -82,7 +82,7 @@ nrm2 \leftarrow \sqrt{x^T x}

else if $x$ is double precision complex vector then it computes 2-norm as:

@@ -111,11 +111,11 @@ Data types
$res$ $x$ Subroutine
@@ -159,7 +159,7 @@ psb_genrm2(x, desc_a, info)
x
the local portion of global dense matrix $x$.
@@ -191,7 +191,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
Function Value
is the 2-norm of subvector $x$.
diff --git a/docs/html/node46.html b/docs/html/node46.html index 8abbd9db..abfc24f5 100644 --- a/docs/html/node46.html +++ b/docs/html/node46.html @@ -58,7 +58,7 @@ psb_genrm2s -- Generalized 2-Norm of Vector

This subroutine computes a series of 2-norms on the columns of a dense matrix $x$:

@@ -92,11 +92,11 @@ Data types
$nrm2$ $x$ Function
@@ -135,7 +135,7 @@ Data types
x
the local portion of global dense matrix $x$. @@ -168,7 +168,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
res
contains the 1-norm of (the columns of) $x$.
diff --git a/docs/html/node47.html b/docs/html/node47.html index 784e2fe1..a88cabce 100644 --- a/docs/html/node47.html +++ b/docs/html/node47.html @@ -71,7 +71,7 @@ nrmi \leftarrow \|A\|_\infty --> \begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} diff --git a/docs/html/node48.html b/docs/html/node48.html index 56281004..9565201e 100644 --- a/docs/html/node48.html +++ b/docs/html/node48.html @@ -121,7 +121,7 @@ y \leftarrow \alpha P_r A^H P_c x + \beta y where:
$x$
is the global dense submatrix WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img1.png" ALT="$A$">, $x$, $y$, $\alpha$,
alpha
the scalar $\alpha$.
@@ -249,7 +249,7 @@ Specified as: a structured data of type spdatapsb_spmat_type.
x
the local portion of global dense matrix $x$. @@ -263,7 +263,7 @@ Intent: in. Specified as: a rank one or two array containing numbers of type specified in Table 11. The rank of $x$ must be the same of 11. The rank of $y$ must be the same of $x$.
@@ -341,7 +341,7 @@ Type: optional Intent: in.
Default: $trans = N$
@@ -359,7 +359,7 @@ Type: optional Intent: inout.
Specified as: a rank one array of the same type of $x$ and \begin{eqnarray*}
 y &\leftarrow& \alpha P_r T^{-1} P_c x + \beta y\\
@@ -88,7 +88,7 @@ y &\leftarrow& \alpha P_r T^{-H} P_c D x + \beta y\\
 where:
 <DL>
 <DT><STRONG><IMG
- WIDTH=
is the global dense submatrix WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img56.png" ALT="$T$">, $x$, WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img57.png" ALT="$D$">, $\alpha$,
alpha
the scalar $\alpha$.
@@ -226,7 +226,7 @@ Specified as: a structured data type specified in
x
the local portion of global dense matrix $x$. @@ -240,7 +240,7 @@ Intent: in. Specified as: a rank one or two array containing numbers of type specified in Table 12. The rank of $x$ must be the same of 12. The rank of $y$ must be the same of $x$.
@@ -316,7 +316,7 @@ Type: optional Intent: in.
Default: $trans = N$
@@ -342,7 +342,7 @@ Type: optional Intent: in.
Default: $unitd = U$
@@ -405,7 +405,7 @@ Type: optional Intent: inout.
Specified as: a rank one array of the same type of $x$ with the TARGET attribute. diff --git a/docs/html/node51.html b/docs/html/node51.html index bd59901e..a9c99ba6 100644 --- a/docs/html/node51.html +++ b/docs/html/node51.html @@ -78,7 +78,7 @@ x \leftarrow \alpha x where:
$x$
is a global dense submatrix. @@ -95,10 +95,10 @@ Data types
$res$ $x$ Subroutine
@@ -141,7 +141,7 @@ call psb_halo(x, desc_a, info, alpha, work, data)
x
global dense matrix $x$.
@@ -168,7 +168,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
alpha
the scalar $\alpha$.
@@ -195,7 +195,7 @@ Type: optional Intent: inout.
Specified as: a rank one array of the same type of $x$ with the POINTER attribute. @@ -218,7 +218,7 @@ index list on which to base the data exchange.
x
global dense result matrix $x$.
@@ -255,7 +255,7 @@ Sample discretization mesh.
$\alpha$, $x$ Subroutine
\includegraphics[scale=0.45]{figures/try8x8.eps} @@ -279,7 +279,7 @@ distribution is such that each process will own 32 entries in the index space, with a halo made of 8 entries placed at local indices 33 through 40. If process 0 assigns an initial value of 1 to its entries in the $x$ vector, and process 1 assigns a value of 2, then after a call to psb_halo the contents of the local vectors will be the diff --git a/docs/html/node52.html b/docs/html/node52.html index febb1e51..60d426e1 100644 --- a/docs/html/node52.html +++ b/docs/html/node52.html @@ -68,7 +68,7 @@ x \leftarrow Q x --> \begin{displaymath}x \leftarrow Q x \end{displaymath}
@@ -77,11 +77,11 @@ x \leftarrow Q x where:
$x$
is the global dense submatrix $x$
@@ -110,7 +110,7 @@ Data types
@@ -150,7 +150,7 @@ call psb_ovrl(x, desc_a, info, update=update_type, work=work)
x
global dense matrix $x$.
@@ -220,7 +220,7 @@ Type: optional Intent: inout.
Specified as: a one dimensional array of the same type of $x$. @@ -231,7 +231,7 @@ Specified as: a one dimensional array of the same type of
x
global dense result matrix $x$.
@@ -295,7 +295,7 @@ Sample discretization mesh.
$x$ Subroutine
\includegraphics[scale=0.65]{figures/try8x8_ov.eps} @@ -320,7 +320,7 @@ distribution is such that each process will own 40 entries in the index space, with an overlap of 16 entries placed at local indices 25 through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries in the $x$ vector, and process 1 assigns a value of 2, then after a call to psb_ovrl with psb_avg_ and a call to diff --git a/docs/html/node53.html b/docs/html/node53.html index 3066418e..3920b8a7 100644 --- a/docs/html/node53.html +++ b/docs/html/node53.html @@ -101,7 +101,7 @@ process $i$.
$collect$
is the collect function. diff --git a/docs/html/node54.html b/docs/html/node54.html index 36f43dcc..92ccced2 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -68,7 +68,7 @@ loc\_x_i \leftarrow scatter(glob\_x) --> \begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}
@@ -99,7 +99,7 @@ process $i$.
$scatter$
is the scatter function. diff --git a/docs/html/node56.html b/docs/html/node56.html index 8917d80f..5148db0b 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -125,7 +125,7 @@ Specified as: an integer value $0,1$, default $0$. diff --git a/docs/html/node57.html b/docs/html/node57.html index 06b28b64..c1b4a872 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -95,7 +95,7 @@ Type: required. Intent: in.
Specified as: an integer array of length $nz$.
@@ -109,7 +109,7 @@ Type: required. Intent: in.
Specified as: an integer array of length $nz$. diff --git a/docs/html/node6.html b/docs/html/node6.html index af78326b..eba51fff 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -62,7 +62,7 @@ space to which there corresponds an index space and a matrix sparsity pattern. As an example, consider a cell-centered finite-volume discretization of the Navier-Stokes equations on a simulation domain; the index space $1\dots n$ is isomorphic to the set of cell centers, whereas the pattern of the associated linear system matrix is @@ -73,7 +73,7 @@ by the discretization stencil. Thus the first order of business is to establish an index space, and this is done with a call to psb_cdall in which we specify the size of the index space $n$ and the allocation of the elements of the index space to the various processes making up the MPI (virtual) @@ -82,7 +82,7 @@ parallel machine.

The index space is partitioned among processes, and this creates a mapping from the ``global'' numbering $1\dots n$ to a numbering ``local'' to each process; each process $1\dots n_{\hbox{row}_i}$, each element of which corresponds to a certain element of $1\dots n$. The user does not set explicitly this mapping; when the application needs to indicate to which element of the index @@ -107,7 +107,7 @@ library will translate into the appropriate ``local'' numbering.

For a given index space $1\dots n$ there are many possible associated topologies, i.e. many different discretization stencils; thus the diff --git a/docs/html/node62.html b/docs/html/node62.html index 5031e56e..8bfaf3c8 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -130,7 +130,7 @@ An integer value; 0 means no error has been detected.

  • The descriptor may be in either the build or assembled state.
  • Providing a good estimate for the number of nonzeroes $nnz$ in the assembled matrix may substantially improve performance in the diff --git a/docs/html/node63.html b/docs/html/node63.html index aaf0460b..9a8a222f 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -90,7 +90,7 @@ Type:required. Intent: in.
    Specified as: an integer array of size $nz$. @@ -104,7 +104,7 @@ Type:required. Intent: in.
    Specified as: an integer array of size $nz$. @@ -118,11 +118,11 @@ Type:required. Intent: in.
    Specified as: an array of size $nz$. Must be of the same type and kind of the aspk component of the sparse matrix $a$. diff --git a/docs/html/node67.html b/docs/html/node67.html index 634d9fb3..5c58ab01 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -92,7 +92,7 @@ Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a rank-1 array. @@ -110,7 +110,7 @@ Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a rank-1 array. diff --git a/docs/html/node68.html b/docs/html/node68.html index 797ae7f1..b3a816ce 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -70,7 +70,7 @@ call psb_geins(m, irw, val, x, desc_a, info,dupl)
    m
    Number of rows in $val$ to be inserted.
    @@ -88,7 +88,7 @@ Specified as: an integer value. SRC="img4.png" ALT="$i$"> of $val$ will be inserted into the local row corresponding to the global row index $y$ is not present, then $x$ is overwritten with the translated integer indices. Scope: global @@ -148,7 +148,7 @@ Specified as: a rank one integer array. WIDTH="12" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img26.png" ALT="$y$"> is overwritten with the translated integer indices, and $x$ is left unchanged. diff --git a/docs/html/node73.html b/docs/html/node73.html index 40f0ad5f..35b0ce6e 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -116,7 +116,7 @@ Specified as: a character variable Ignore, Warning or SRC="img26.png" ALT="$y$"> is not present, then $x$ is overwritten with the translated integer indices. Scope: global @@ -136,7 +136,7 @@ Specified as: a rank one integer array. WIDTH="12" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img26.png" ALT="$y$"> is overwritten with the translated integer indices, and $x$ is left unchanged. diff --git a/docs/html/node74.html b/docs/html/node74.html index d25641fd..eba71b11 100644 --- a/docs/html/node74.html +++ b/docs/html/node74.html @@ -100,7 +100,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    Function value
    A logical mask which is true if $x$ is owned by the current process Scope: local diff --git a/docs/html/node75.html b/docs/html/node75.html index 16e56ca5..b36d152f 100644 --- a/docs/html/node75.html +++ b/docs/html/node75.html @@ -111,7 +111,7 @@ Specified as: a character variable Ignore, Warning or
    y
    A logical mask which is true for all corresponding entries of $x$ that are owned by the current process Scope: local diff --git a/docs/html/node76.html b/docs/html/node76.html index e27dc8cc..1920a1a3 100644 --- a/docs/html/node76.html +++ b/docs/html/node76.html @@ -100,7 +100,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    Function value
    A logical mask which is true if $x$ is local to the current process Scope: local diff --git a/docs/html/node77.html b/docs/html/node77.html index 65d02b3c..71a6ab70 100644 --- a/docs/html/node77.html +++ b/docs/html/node77.html @@ -111,7 +111,7 @@ Specified as: a character variable Ignore, Warning or
    y
    A logical mask which is true for all corresponding entries of $x$ that are local to the current process Scope: local diff --git a/docs/html/node80.html b/docs/html/node80.html index 07979b43..2ed58e69 100644 --- a/docs/html/node80.html +++ b/docs/html/node80.html @@ -133,7 +133,7 @@ Specified as: an integer $>0$, default: $row$. @@ -208,7 +208,7 @@ An integer value; 0 means no error has been detected.
    1. The output $nz$ is always the size of the output generated by the current call; thus, if append=.true., the total output diff --git a/docs/html/node82.html b/docs/html/node82.html index d519b69c..28292c6d 100644 --- a/docs/html/node82.html +++ b/docs/html/node82.html @@ -154,7 +154,7 @@ Type: Optional
      An integer array of rank 1, whose entries are moved to the same position as the corresponding entries in $x$.
    @@ -191,10 +191,10 @@ position as the corresponding entries in $ix(1:n)$ where $n$ is the size of $x$ are initialized to