1
//------------------------------------
2
// RSA Encoder
3
// 创建于 2004年10月11日
4
// 创建人 luoluo
5
// 说明 一个说明RSA原理的简单程序
6
// 达不到Encoder的要求,且由于Jscript
7
// 的整型精度不够,不适合做RSA加密解密
8
// 的程序
9
//------------------------------------
10![](/Images/OutliningIndicators/None.gif)
11![](/Images/OutliningIndicators/None.gif)
12
/////////////////////////////////////////////////////////////////
13![](/Images/OutliningIndicators/None.gif)
14
//------------------------------------
15
// 函数名: isNumber
16
// 参数: int n
17
// 返回值: boolean
18
// 作用: 判断变量是否是数字
19
//------------------------------------
20
function isNumber(n) {
21
return ! isNaN(n);
22
}
23![](/Images/OutliningIndicators/None.gif)
24![](/Images/OutliningIndicators/None.gif)
25
//------------------------------------
26
// 函数名: isInt
27
// 参数: int n
28
// 返回值: boolean
29
// 作用: 判断变量是否是整数
30
//------------------------------------
31
function isInt(n) {
32
if (! isNumber(n))
33
throw n + " is not a number";
34
35
var re = /\./i;
36
return (n.toString().search(re) == -1);
37
}
38![](/Images/OutliningIndicators/None.gif)
39
//------------------------------------
40
// 函数名: gcd
41
// 参数一: x int
42
// 参数二: y int
43
// 返回值: int
44
// 作用: 求两个数的最大公因数(公约数)
45
//------------------------------------
46
function gcd(x, y) {
47
// 验证参数的类型
48
if (! isInt(x))
49
throw x + " is not a integer";
50
if (! isInt(y))
51
throw y + " is not a integer";
52
53
x = parseInt(x);
54
y = parseInt(y);
55
56
var ret; // 存放返回值
57
58
// 取参数的绝对值
59
if (x < 0)
60
x = -x;
61
if (y < 0)
62
y = -y;
63
64
// 判断是否为0
65
if (! (x + y))
66
throw "x and y can't be zero";
67
68
// 计算最大公因数
69
ret = y;
70
71
while (x > 0) {
72
ret = x;
73
x = y % x;
74
y = ret;
75
}
76
77
// 返回
78
return ret;
79
}
80![](/Images/OutliningIndicators/None.gif)
81
//------------------------------------
82
// 函数名: isEven
83
// 参数: int n
84
// 返回值: boolean
85
// 作用: 判断变量是否是偶数
86
//------------------------------------
87
function isEven(n) {
88
if (! isInt(n))
89
throw n + " is not a integer";
90
91
return (n & 0x01 == 0);
92
}
93![](/Images/OutliningIndicators/None.gif)
94
//------------------------------------
95
// 函数名: isEven
96
// 参数: int n
97
// 返回值: boolean
98
// 作用: 判断变量是否是奇数
99
//------------------------------------
100
function isOdd(n) {
101
if (! isInt(n))
102
throw n + " is not ainteger";
103
104
return (n & 0x01 != 0);
105
}
106![](/Images/OutliningIndicators/None.gif)
107
//------------------------------------
108
// 函数名: inverse
109
// 参数: int u
110
// 参数: int v
111
// v * d = 1 (mod u)
112
// 返回值: int
113
// 作用: 返回v关于u的乘法逆元素
114
// 说明: 修改自课本上的程序
115
//------------------------------------
116
function inverse(u, v) {
117
if (! isInt(u))
118
throw u + " is not a integer";
119
if (! isInt(v))
120
throw v + " is not a integer";
121
122
u = parseInt(u);
123
v = parseInt(v);
124
125
var t1, t2, t3;
126
var u1, u2, u3;
127
128
if (isEven(u) && isEven(v))
129
return 0;
130
131
u1 = 1;
132
u2 = 0;
133
u3 = u;
134
t1 = v;
135
t2 = u - 1;
136
t3 = v;
137
138
do {
139
do {
140
if (isEven(u3)) {
141
if (isOdd(u1) || isOdd(u2)) {
142
u1 += v;
143
u2 += u;
144
}
145
146
u1 >>= 1;
147
u2 >>= 1;
148
u3 >>= 1;
149
}
150
151
if (isEven(t3) || u3 < t3) {
152
u1^=t1, t1^=u1, u1^=t1;
153
u2^=t2, t2^=u2, u2^=t2;
154
u3^=t3, t3^=u3, u3^=t3;
155
}
156
} while (isEven(u3));
157
158
while ((u1 < t1) || (u2 < t2)) {
159
u1 += v;
160
u2 += u;
161
}
162
163
u1 -= t1;
164
u2 -= t2;
165
u3 -= t3;
166
} while (t3 > 0);
167
168
while (u1 > v && u2 >= u) {
169
u1 -= v;
170
u2 -= u;
171
}
172
173
return (u - u2);
174
}
175![](/Images/OutliningIndicators/None.gif)
176
//------------------------------------
177
// 函数名: isPrime
178
// 参数: int n
179
// 返回值: boolean
180
// 作用: 判断变量是否是素数
181
//------------------------------------
182
function isPrime(n) {
183
if (! isInt(n))
184
throw n + " is not a integer";
185
186
var ret = true;
187
188
for (var i = 2; i <= n - 1; i ++) {
189
if (! (n % i))
190
{
191
ret = false;
192
break;
193
}
194
}
195
196
return ret;
197
}
198![](/Images/OutliningIndicators/None.gif)
199
//------------------------------------
200
// 函数名: randomPrime
201
// 参数: int n
202
// 返回值: int
203
// 作用: 产生随机十进制n位素数
204
//------------------------------------
205
function randomPrime(n) {
206
var x;
207
208
do {
209
x = Math.random();
210
x = parseInt(x * Math.pow(10, n));
211
} while (! isPrime(x) || x.toString().length != n);
212
213
return x;
214
}
215![](/Images/OutliningIndicators/None.gif)
216
//------------------------------------
217
// 函数名: randomPrimeOfX
218
// 参数: int n
219
// 返回值: int
220
// 作用: 产生随机十进制n位与X互素的数
221
//------------------------------------
222
function randomPrimeOfX(x, n) {
223
var y;
224
225
do {
226
y = Math.random();
227
y = parseInt(y * Math.pow(10, n));
228
} while (gcd(x, y) != 1 || y.toString().length != n);
229
230
return y;
231
}
232![](/Images/OutliningIndicators/None.gif)
233![](/Images/OutliningIndicators/None.gif)
234
//------------------------------------
235
// 类名: RSAEncoder
236
// 作用: RSA加密解密
237
//------------------------------------
238
function RSAEncoder() {
239
this.p = randomPrime(2);
240
this.q = randomPrime(2);
241
242
this.n = 0;
243
this.e = 0;
244
this.d = 0;
245
246
this.init = init;
247
248
this.encode = encode;
249
250
this.decode = decode;
251
}
252![](/Images/OutliningIndicators/None.gif)
253
//------------------------------------
254
// 函数名: init
255
// 作用: RSAEncoder初始化
256
//------------------------------------
257
function init() {
258
this.n = this.p * this.q;
259
this.e = randomPrimeOfX((this.p - 1) * (this.q - 1), 2);
260
this.d = inverse((this.p - 1) * (this.q - 1), this.e);
261
}
262![](/Images/OutliningIndicators/None.gif)
263
//------------------------------------
264
// 函数名: encode
265
// 参数: int m
266
// 返回值: int
267
// 作用: 加密信息
268
//------------------------------------
269
function encode(m) {
270
return (Math.pow(m, this.e) % this.n);
271
}
272![](/Images/OutliningIndicators/None.gif)
273![](/Images/OutliningIndicators/None.gif)
274
//------------------------------------
275
// 函数名: decode
276
// 参数: int m
277
// 返回值: int
278
// 作用: 解密信息
279
//------------------------------------
280
function decode(c) {
281
return (Math.pow(c, this.d) % this.n);
282
}
283![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/None.gif)
116
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
139
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
141
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/InBlock.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/InBlock.gif)
166
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
168
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/InBlock.gif)
171
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/InBlock.gif)
174
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
183
![](/Images/OutliningIndicators/InBlock.gif)
184
![](/Images/OutliningIndicators/InBlock.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/InBlock.gif)
187
![](/Images/OutliningIndicators/InBlock.gif)
188
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
189
![](/Images/OutliningIndicators/InBlock.gif)
190
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
191
![](/Images/OutliningIndicators/InBlock.gif)
192
![](/Images/OutliningIndicators/InBlock.gif)
193
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
194
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
195
![](/Images/OutliningIndicators/InBlock.gif)
196
![](/Images/OutliningIndicators/InBlock.gif)
197
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
206
![](/Images/OutliningIndicators/InBlock.gif)
207
![](/Images/OutliningIndicators/InBlock.gif)
208
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
209
![](/Images/OutliningIndicators/InBlock.gif)
210
![](/Images/OutliningIndicators/InBlock.gif)
211
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
212
![](/Images/OutliningIndicators/InBlock.gif)
213
![](/Images/OutliningIndicators/InBlock.gif)
214
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
223
![](/Images/OutliningIndicators/InBlock.gif)
224
![](/Images/OutliningIndicators/InBlock.gif)
225
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
226
![](/Images/OutliningIndicators/InBlock.gif)
227
![](/Images/OutliningIndicators/InBlock.gif)
228
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
229
![](/Images/OutliningIndicators/InBlock.gif)
230
![](/Images/OutliningIndicators/InBlock.gif)
231
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
239
![](/Images/OutliningIndicators/InBlock.gif)
240
![](/Images/OutliningIndicators/InBlock.gif)
241
![](/Images/OutliningIndicators/InBlock.gif)
242
![](/Images/OutliningIndicators/InBlock.gif)
243
![](/Images/OutliningIndicators/InBlock.gif)
244
![](/Images/OutliningIndicators/InBlock.gif)
245
![](/Images/OutliningIndicators/InBlock.gif)
246
![](/Images/OutliningIndicators/InBlock.gif)
247
![](/Images/OutliningIndicators/InBlock.gif)
248
![](/Images/OutliningIndicators/InBlock.gif)
249
![](/Images/OutliningIndicators/InBlock.gif)
250
![](/Images/OutliningIndicators/InBlock.gif)
251
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
258
![](/Images/OutliningIndicators/InBlock.gif)
259
![](/Images/OutliningIndicators/InBlock.gif)
260
![](/Images/OutliningIndicators/InBlock.gif)
261
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
270
![](/Images/OutliningIndicators/InBlock.gif)
271
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
281
![](/Images/OutliningIndicators/InBlock.gif)
282
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
283
![](/Images/OutliningIndicators/None.gif)