Profiling results ----------------- Total cpu time observed: 17820ms (out of 17588ms) Number of samples taken: 80 (once every 223ms) ========================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ========================================================================= [1] 17820(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [10] 100.0% ------------------------------------------------------------------------- location-do [2] 41.7% ??? [91] 58.3% [2] 2450(13.7%) 0(0.0%) location-do ...h-testversion/src/programs.rkt:64:0 location-do [2] 41.7% ??? [91] 39.0% loop [14] 19.3% ------------------------------------------------------------------------- ??? [91] 100.0% [3] 2450(13.7%) 0(0.0%) approximate9 ...stversion/src/core/taylor.rkt:12:0 loop [11] 100.0% ------------------------------------------------------------------------- hash-ref! [95] 100.0% [4] 1820(10.2%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:291:26 for-loop [12] 100.0% ------------------------------------------------------------------------- hash-ref! [95] 100.0% [5] 1374(7.7%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:301:23 for-loop [13] 100.0% ------------------------------------------------------------------------- for-loop [97] 48.1% loop [85] 51.9% [6] 462(2.6%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [15] 100.0% ------------------------------------------------------------------------- for-loop [97] 100.0% [7] 398(2.2%) 200(1.1%) expand-implicit (unknown source) resolve+shift28 [92] 49.7% ------------------------------------------------------------------------- hash-ref! [95] 100.0% [8] 240(1.3%) 0(0.0%) ??? ...math-testversion/src/core/taylor.rkt:407:23 for-loop [16] 100.0% ------------------------------------------------------------------------- matcher [73] 100.0% [9] 222(1.2%) 0(0.0%) ??? ...ath-testversion/src/core/matcher.rkt:130:11 for-loop [17] 100.0% ------------------------------------------------------------------------- ??? [1] 100.0% [10] 17820(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [18] 100.0% ------------------------------------------------------------------------- approximate9 [3] 100.0% [11] 2450(13.7%) 0(0.0%) loop ...gmath-testversion/src/core/taylor.rkt:87:4 ??? [91] 100.0% ------------------------------------------------------------------------- ??? [4] 100.0% [12] 1820(10.2%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:291:52 hash-ref! [95] 100.0% ------------------------------------------------------------------------- ??? [5] 100.0% [13] 1374(7.7%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:304:27 hash-ref! [95] 100.0% ------------------------------------------------------------------------- loop [14] 13.3% location-do [2] 86.7% [14] 1014(5.7%) 0(0.0%) loop .../eggmath-testversion/src/programs.rkt:73:4 ??? [91] 86.7% loop [14] 13.3% ------------------------------------------------------------------------- gf [87] 32.8% syntax-e [6] 67.2% [15] 688(3.9%) 0(0.0%) syntax-e/no-taint (unknown source) loop [85] 100.0% ------------------------------------------------------------------------- ??? [8] 100.0% [16] 240(1.3%) 0(0.0%) for-loop ...testversion/src/core/taylor.rkt:411:33 simplify [19] 100.0% ------------------------------------------------------------------------- ??? [9] 100.0% [17] 222(1.2%) 0(0.0%) for-loop ...estversion/src/core/matcher.rkt:132:15 matcher [73] 100.0% ------------------------------------------------------------------------- profile-thunk16 [10] 100.0% [18] 17820(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [20] 100.0% ------------------------------------------------------------------------- for-loop [16] 9.8% hash-ref! [95] 90.2% [19] 2450(13.7%) 0(0.0%) simplify ...h-testversion/src/core/reduce.rkt:16:0 parse-loop80 [21] 55.3% f46 [22] 34.9% f67 [23] 9.8% ------------------------------------------------------------------------- for-loop [68] 4.1% run [18] 95.9% [20] 17820(100.0%) 200(1.1%) .../more-scheme.rkt:261:28 (unknown source) prepare-points-intervals [29] 52.4% run-improve47 [24] 39.1% ??? [42] 2.9% oracle-error [26] 2.3% errors [61] 1.1% eval-errors [28] 1.1% ordinary-value? [27] 0.6% ------------------------------------------------------------------------- map [100] 38.7% simplify [19] 61.3% [21] 2210(12.4%) 0(0.0%) parse-loop80 (unknown source) eval-const-expr [25] 100.0% ------------------------------------------------------------------------- simplify [19] 33.8% map [100] 66.2% [22] 856(4.8%) 0(0.0%) f46 (unknown source) map [100] 100.0% ------------------------------------------------------------------------- simplify [19] 100.0% [23] 240(1.3%) 0(0.0%) f67 (unknown source) eval-const-expr [25] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [24] 7484(42.0%) 0(0.0%) run-improve47 ...estversion/src/mainloop.rkt:346:0 for-loop [30] 79.6% prepare-points-intervals [29] 12.6% simplify! [38] 7.9% ------------------------------------------------------------------------- f67 [23] 9.8% parse-loop80 [21] 90.2% [25] 2450(13.7%) 0(0.0%) eval-const-expr ...tversion/src/programs.rkt:118:0 temp85_0 [74] 81.0% loop [85] 19.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [26] 402(2.3%) 0(0.0%) oracle-error ...h-testversion/src/points.rkt:188:0 for-loop [31] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [27] 206(1.2%) 206(1.2%) ordinary-value? ...-testversion/src/float.rkt:52:0 ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [28] 200(1.1%) 0(0.0%) eval-errors ...th-testversion/src/points.rkt:179:0 for-loop [32] 100.0% ------------------------------------------------------------------------- run-improve47 [24] 9.2% .../more-scheme.rkt:261:28 [20] 90.8% [29] 10270(57.6%) 0(0.0%) prepare-points-intervals ...n/src/points.rkt:110:0 loop [33] 100.0% ------------------------------------------------------------------------- run-improve47 [24] 100.0% [30] 5954(33.4%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:365:4 run-iter! [34] 100.0% ------------------------------------------------------------------------- oracle-error [26] 100.0% [31] 402(2.3%) 200(1.1%) for-loop ...gmath-testversion/src/points.rkt:189:2 loop [85] 50.2% ------------------------------------------------------------------------- eval-errors [28] 100.0% [32] 200(1.1%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:181:2 ??? [42] 100.0% ------------------------------------------------------------------------- prepare-points-intervals [29] 100.0% [33] 10270(57.6%) 200(1.1%) loop ...e/eggmath-testversion/src/points.rkt:123:4 loop [35] 94.1% ??? [39] 3.9% ------------------------------------------------------------------------- for-loop [30] 100.0% [34] 5954(33.4%) 0(0.0%) run-iter! ...th-testversion/src/mainloop.rkt:327:0 gen-series! [36] 41.1% finalize-iter! [37] 37.8% simplify! [38] 14.0% gen-rewrites! [40] 3.7% localize! [41] 3.4% ------------------------------------------------------------------------- loop [33] 100.0% [35] 9668(54.3%) 622(3.5%) loop ...ie/eggmath-testversion/src/points.rkt:81:2 ??? [42] 89.4% ??? [70] 4.1% ------------------------------------------------------------------------- run-iter! [34] 100.0% [36] 2450(13.7%) 0(0.0%) gen-series! ...-testversion/src/mainloop.rkt:160:0 for-loop [43] 100.0% ------------------------------------------------------------------------- run-iter! [34] 100.0% [37] 2250(12.6%) 0(0.0%) finalize-iter! ...stversion/src/mainloop.rkt:278:0 ??? [44] 100.0% ------------------------------------------------------------------------- run-improve47 [24] 41.5% run-iter! [34] 58.5% [38] 1422(8.0%) 0(0.0%) simplify! ...th-testversion/src/mainloop.rkt:224:0 ??? [45] 100.0% ------------------------------------------------------------------------- loop [33] 100.0% [39] 402(2.3%) 202(1.1%) ??? ...ie/eggmath-testversion/src/points.rkt:106:2 ??? [91] 49.8% ------------------------------------------------------------------------- run-iter! [34] 100.0% [40] 222(1.2%) 0(0.0%) gen-rewrites! ...estversion/src/mainloop.rkt:183:0 for-loop [46] 100.0% ------------------------------------------------------------------------- run-iter! [34] 100.0% [41] 200(1.1%) 0(0.0%) localize! ...th-testversion/src/mainloop.rkt:127:0 localize-error [47] 100.0% ------------------------------------------------------------------------- for-loop [32] 2.0% .../more-scheme.rkt:261:28 [20] 10.5% loop [35] 87.4% [42] 9888(55.5%) 0(0.0%) ??? .../eggmath-testversion/src/programs.rkt:115:2 ??? [48] 85.4% ??? [104] 12.6% ??? [91] 2.0% ------------------------------------------------------------------------- gen-series! [36] 100.0% [43] 2450(13.7%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:167:7 taylor-alt [49] 100.0% ------------------------------------------------------------------------- finalize-iter! [37] 100.0% [44] 2250(12.6%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [50] 100.0% ------------------------------------------------------------------------- simplify! [38] 100.0% [45] 1422(8.0%) 0(0.0%) ??? ...math-testversion/src/core/simplify.rkt:51:0 egraph-run [51] 100.0% ------------------------------------------------------------------------- gen-rewrites! [40] 100.0% [46] 222(1.2%) 0(0.0%) for-loop ...th-testversion/src/mainloop.rkt:191:11 rewrite-expression-head20 [52] 100.0% ------------------------------------------------------------------------- localize! [41] 100.0% [47] 200(1.1%) 0(0.0%) localize-error ...rsion/src/core/localize.rkt:66:0 hash-ref! [95] 100.0% ------------------------------------------------------------------------- ??? [42] 100.0% [48] 8444(47.4%) 2018(11.3%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-exp [53] 68.7% ival-add [57] 5.0% ival-sub [59] 2.4% ------------------------------------------------------------------------- for-loop [43] 100.0% [49] 2450(13.7%) 0(0.0%) taylor-alt ...h-testversion/src/mainloop.rkt:146:0 for-loop [54] 100.0% ------------------------------------------------------------------------- ??? [44] 100.0% [50] 2250(12.6%) 0(0.0%) for-loop ...estversion/src/core/alt-table.rkt:55:2 atab-add-altn [55] 72.7% errors [61] 18.4% loop [60] 8.9% ------------------------------------------------------------------------- ??? [45] 100.0% [51] 1422(8.0%) 0(0.0%) egraph-run ...estversion/src/core/eggmath.rkt:52:0 egraph-add-exprs [56] 100.0% ------------------------------------------------------------------------- for-loop [46] 100.0% [52] 222(1.2%) 0(0.0%) rewrite-expression-head20 ...core/matcher.rkt:87:0 rewriter [58] 100.0% ------------------------------------------------------------------------- ??? [48] 100.0% [53] 5802(32.6%) 4584(25.7%) ival-exp ...-testversion/src/biginterval.rkt:191:0 bfexp [63] 21.0% ------------------------------------------------------------------------- taylor-alt [49] 100.0% [54] 2450(13.7%) 0(0.0%) for-loop ...ath-testversion/src/mainloop.rkt:152:6 ??? [91] 100.0% ------------------------------------------------------------------------- for-loop [50] 100.0% [55] 1636(9.2%) 0(0.0%) atab-add-altn ...sion/src/core/alt-table.rkt:203:0 errors [61] 87.4% for-loop [67] 12.6% ------------------------------------------------------------------------- egraph-run [51] 100.0% [56] 1422(8.0%) 0(0.0%) egraph-add-exprs ...ion/src/core/eggmath.rkt:116:0 ??? [62] 100.0% ------------------------------------------------------------------------- ??? [48] 100.0% [57] 424(2.4%) 0(0.0%) ival-add ...-testversion/src/biginterval.rkt:101:0 bfadd [64] 100.0% ------------------------------------------------------------------------- rewrite-expression-head20 [52] 25.0% matcher [73] 75.0% [58] 222(1.2%) 0(0.0%) rewriter ...-testversion/src/core/matcher.rkt:90:2 for-loop [65] 75.0% *rules* [66] 25.0% ------------------------------------------------------------------------- ??? [48] 100.0% [59] 200(1.1%) 200(1.1%) ival-sub ...-testversion/src/biginterval.rkt:107:0 ------------------------------------------------------------------------- for-loop [50] 100.0% [60] 200(1.1%) 200(1.1%) loop ...h-testversion/src/core/alt-table.rkt:177:2 ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 18.0% for-loop [50] 18.4% atab-add-altn [55] 63.6% [61] 2248(12.6%) 0(0.0%) errors ...eggmath-testversion/src/points.rkt:201:0 for-loop [68] 64.4% eval-prog [71] 35.6% ------------------------------------------------------------------------- egraph-add-exprs [56] 100.0% [62] 1422(8.0%) 0(0.0%) ??? ...math-testversion/src/core/simplify.rkt:64:8 egg-run-rules [69] 100.0% ------------------------------------------------------------------------- ival-exp [53] 100.0% [63] 1218(6.8%) 200(1.1%) bfexp ...-lib/math/private/bigfloat/mpfr.rkt:632:4 ??? [70] 49.3% new-mpfr [72] 34.3% ------------------------------------------------------------------------- ival-add [57] 100.0% [64] 424(2.4%) 0(0.0%) bfadd ...-lib/math/private/bigfloat/mpfr.rkt:835:4 ??? [70] 51.4% new-mpfr [72] 48.6% ------------------------------------------------------------------------- rewriter [58] 100.0% [65] 222(1.2%) 0(0.0%) for-loop ...-testversion/src/core/matcher.rkt:92:4 matcher [73] 100.0% ------------------------------------------------------------------------- rewriter [58] 100.0% [66] 222(1.2%) 0(0.0%) *rules* ...-testversion/src/syntax/rules.rkt:669:0 for-loop [97] 100.0% ------------------------------------------------------------------------- atab-add-altn [55] 100.0% [67] 206(1.2%) 206(1.2%) for-loop ...stversion/src/core/alt-table.rkt:119:2 ------------------------------------------------------------------------- errors [61] 100.0% [68] 1448(8.1%) 0(0.0%) for-loop ...gmath-testversion/src/points.rkt:203:2 .../more-scheme.rkt:261:28 [20] 100.0% ------------------------------------------------------------------------- ??? [62] 100.0% [69] 1422(8.0%) 0(0.0%) egg-run-rules ...ersion/src/core/simplify.rkt:72:0 for-loop [75] 100.0% ------------------------------------------------------------------------- bfadd [64] 17.9% loop [35] 32.8% bfexp [63] 49.3% [70] 1218(6.8%) 1218(6.8%) ??? /opt/racket-7.5/collects/ffi/unsafe.rkt:938:4 ------------------------------------------------------------------------- errors [61] 100.0% [71] 800(4.5%) 200(1.1%) eval-prog ...ath-testversion/src/programs.rkt:83:0 temp85_0 [74] 50.0% loop [85] 25.0% ------------------------------------------------------------------------- bfadd [64] 33.0% bfexp [63] 67.0% [72] 624(3.5%) 624(3.5%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ------------------------------------------------------------------------- for-loop [17] 50.0% for-loop [65] 50.0% [73] 222(1.2%) 0(0.0%) matcher ...-testversion/src/core/matcher.rkt:118:2 ??? [9] 50.0% rewriter [58] 50.0% ------------------------------------------------------------------------- eval-prog [71] 16.8% eval-const-expr [25] 83.2% [74] 2384(13.4%) 0(0.0%) temp85_0 (unknown source) compile15 [76] 100.0% ------------------------------------------------------------------------- egg-run-rules [69] 100.0% [75] 1422(8.0%) 1422(8.0%) for-loop ...testversion/src/core/simplify.rkt:77:2 ------------------------------------------------------------------------- temp85_0 [74] 100.0% [76] 2384(13.4%) 0(0.0%) compile15 (unknown source) temp91_0 [77] 100.0% ------------------------------------------------------------------------- compile15 [76] 100.0% [77] 2384(13.4%) 0(0.0%) temp91_0 (unknown source) temp118_0 [78] 91.4% compile-top9 [79] 8.6% ------------------------------------------------------------------------- temp91_0 [77] 100.0% [78] 2178(12.2%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [80] 100.0% ------------------------------------------------------------------------- temp91_0 [77] 100.0% [79] 206(1.2%) 206(1.2%) compile-top9 (unknown source) ------------------------------------------------------------------------- loop [85] 23.4% temp118_0 [78] 76.6% [80] 2844(16.0%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [81] 76.6% dispatch-transformer41 [82] 23.4% ------------------------------------------------------------------------- expand-capturing-lifts [80] 100.0% [81] 2178(12.2%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [83] 90.7% loop [85] 9.3% ------------------------------------------------------------------------- loop [85] 15.8% for-loop [97] 32.0% expand-capturing-lifts [80] 52.2% [82] 1276(7.2%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [84] 100.0% ------------------------------------------------------------------------- lambda-clause-expander [81] 21.9% for-loop [97] 78.1% [83] 1976(11.1%) 0(0.0%) finish-bodys (unknown source) for-loop [97] 100.0% ------------------------------------------------------------------------- dispatch-transformer41 [82] 100.0% [84] 1276(7.2%) 202(1.1%) apply-transformer52 (unknown source) loop [85] 66.5% apply-post-expansion [86] 17.7% ------------------------------------------------------------------------- loop [85] 1.5% eval-prog [71] 5.3% eval-const-expr [25] 5.7% gf [87] 7.4% for-loop [97] 10.5% lambda-clause-expander [81] 10.6% for-loop [31] 10.6% syntax-e/no-taint [15] 17.4% apply-transformer52 [84] 30.9% [85] 1900(10.7%) 226(1.3%) loop (unknown source) core-form-sym [88] 26.7% gf [87] 23.3% expand-capturing-lifts [80] 11.0% ??? [89] 10.6% dispatch-transformer41 [82] 10.6% expand-id-application-form17 [90] 10.5% syntax-e [6] 4.2% loop [85] 1.5% ------------------------------------------------------------------------- apply-transformer52 [84] 100.0% [86] 226(1.3%) 0(0.0%) apply-post-expansion (unknown source) gf [87] 100.0% ------------------------------------------------------------------------- apply-post-expansion [86] 5.5% loop [85] 94.5% [87] 688(3.9%) 0(0.0%) gf (unknown source) cache-or-reuse-hash [93] 34.9% propagation-apply [94] 32.3% loop [85] 27.4% syntax-e/no-taint [15] 5.5% ------------------------------------------------------------------------- loop [85] 100.0% [88] 608(3.4%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [92] 100.0% ------------------------------------------------------------------------- loop [85] 100.0% [89] 202(1.1%) 0(0.0%) ??? ...e/eggmath-testversion/src/points.rkt:190:26 ??? [91] 100.0% ------------------------------------------------------------------------- loop [85] 100.0% [90] 200(1.1%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [92] 100.0% ------------------------------------------------------------------------- ??? [39] 6.5% ??? [42] 6.6% ??? [89] 6.6% loop [14] 11.1% location-do [2] 15.7% loop [11] 26.7% for-loop [54] 26.7% [91] 3054(17.1%) 604(3.4%) ??? ...tract/private/arrow-higher-order.rkt:375:33 location-do [2] 26.7% approximate9 [3] 26.7% hash-ref! [95] 26.7% ------------------------------------------------------------------------- expand-implicit [7] 19.7% expand-id-application-form17 [90] 19.9% core-form-sym [88] 60.4% [92] 1006(5.6%) 202(1.1%) resolve+shift28 (unknown source) fallback-loop [96] 79.9% ------------------------------------------------------------------------- gf [87] 100.0% [93] 240(1.3%) 0(0.0%) cache-or-reuse-hash (unknown source) for-loop [97] 100.0% ------------------------------------------------------------------------- gf [87] 100.0% [94] 222(1.2%) 222(1.2%) propagation-apply (unknown source) ------------------------------------------------------------------------- map [100] 3.8% localize-error [47] 3.8% for-loop [13] 16.8% for-loop [12] 24.6% ??? [98] 25.5% ??? [91] 25.5% [95] 2650(14.9%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [98] 25.5% ??? [4] 24.6% simplify [19] 23.2% ??? [5] 16.8% parse-loop30 [99] 7.5% ??? [8] 2.3% ------------------------------------------------------------------------- resolve+shift28 [92] 100.0% [96] 804(4.5%) 398(2.2%) fallback-loop (unknown source) for-loop [97] 50.5% ------------------------------------------------------------------------- fallback-loop [96] 5.4% *rules* [66] 8.4% cache-or-reuse-hash [93] 9.1% for-loop [97] 12.9% finish-bodys [83] 64.2% [97] 2638(14.8%) 1192(6.7%) for-loop (unknown source) finish-bodys [83] 50.6% for-loop [97] 12.9% do-curry [101] 8.4% syntax-e [6] 4.2% dispatch-transformer41 [82] 3.5% expand-implicit [7] 2.3% expand-identifier [102] 1.0% loop [85] 0.5% ------------------------------------------------------------------------- hash-ref! [95] 100.0% [98] 2450(13.7%) 0(0.0%) ??? ...gmath-testversion/src/core/taylor.rkt:45:15 hash-ref! [95] 100.0% ------------------------------------------------------------------------- hash-ref! [95] 100.0% [99] 200(1.1%) 0(0.0%) parse-loop30 (unknown source) map [100] 100.0% ------------------------------------------------------------------------- parse-loop30 [99] 18.9% f46 [22] 81.1% [100] 1056(5.9%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 f46 [22] 53.6% parse-loop80 [21] 27.4% hash-ref! [95] 9.5% loop [103] 9.5% ------------------------------------------------------------------------- for-loop [97] 100.0% [101] 222(1.2%) 222(1.2%) do-curry ...-7.5/collects/racket/function.rkt:71:2 ------------------------------------------------------------------------- for-loop [97] 100.0% [102] 202(1.1%) 202(1.1%) expand-identifier (unknown source) ------------------------------------------------------------------------- map [100] 6.2% loop [103] 93.8% [103] 200(1.1%) 0(0.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [103] 93.8% ??? [104] 6.2% ------------------------------------------------------------------------- loop [103] 13.9% ??? [42] 86.1% [104] 1442(8.1%) 1028(5.8%) ??? ...th-testversion/src/syntax/syntax.rkt:214:17 return/no-unsupplied [105] 14.8% list-member? [106] 13.9% ------------------------------------------------------------------------- ??? [104] 100.0% [105] 214(1.2%) 214(1.2%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 ------------------------------------------------------------------------- ??? [104] 100.0% [106] 200(1.1%) 200(1.1%) list-member? ...llects/racket/private/set.rkt:24:0 -------------------------------------------------------------------------